Ticket #2168 (new bug)

Opened 7 months ago

Last modified 3 months ago

[Deskbar] freezes

Reported by: kaoutsis Owned by: axeld
Priority: normal Milestone: R1
Component: Applications/Deskbar Version: R1 development
Cc: jackburton Blocked By:
Platform: All Blocking:

Description

r25184, Move Deskbar to the bottom of the screen (a la windows) * Press alt+F2 * Press any team button of the Deskbar or press leaf menu (one click is enough) * Press alt+F1 Deskbar freezes

Attachments

lockedDeskbar-BMenuBar-Tracking-bt.txt (2.4 kB) - added by aldeck 6 months ago.
lockedDeskbar-TBarWindow-bt.txt (3.1 kB) - added by aldeck 6 months ago.

Change History

Changed 6 months ago by aldeck

Changed 6 months ago by aldeck

follow-up: ↓ 2   Changed 6 months ago by aldeck

  • cc jackburton added

I could reproduce 100%. In deskbar/TBarWindow.cpp, the workspace change triggers a BMenuBar deletion. But the BMenuBar will block in its destructor waiting for its tracking thread to end.

See the two attached backtraces. One from the TBarWindow thread and one from the BMenuBar tracking thread.

It's not reproducible on R5. As a side note, i noticed that R5 closes any open menu on workspace change, whereas haiku keeps tracking menus on the previous workspace and the menu is still open when you come back.

I couldn't go further :) cc'ing to Stefano as he surely has an idea ;)

in reply to: ↑ 1 ; follow-up: ↓ 3   Changed 6 months ago by jackburton

Replying to aldeck:

I couldn't go further :) cc'ing to Stefano as he surely has an idea ;)

Yes, I have :) BMenu and BMenuBar tracking loops should store the current workspace on the first loop, and then check if the workspace changed, on every iteration. I'm afraid this will uglify the code even more.

in reply to: ↑ 2   Changed 3 months ago by aldeck

Replying to jackburton:

Yes, I have :) BMenu and BMenuBar tracking loops should store the current workspace on the first loop, and then check if the workspace changed, on every iteration. I'm afraid this will uglify the code even more.

Well the code does the job and is not that ugly :) If you find the time, i think it is worth giving a try.

Regards, Alex

Note: See TracTickets for help on using tickets.