Opened 5 years ago

Last modified 4 years ago

#15778 new bug

GetMouse with checkMessageQueue is not working properly

Reported by: X512 Owned by: nobody
Priority: normal Milestone: Unscheduled
Component: Kits/Interface Kit Version: R1/Development
Keywords: Cc:
Blocked By: Blocking:
Platform: All

Description

This hrev53937.

When running NetPositive with https://review.haiku-os.org/c/haiku/+/2284 applied (it have better comatibility with BeOS applications), and opening context menu, it is not possible to close context menu anymore. After adding debug output I found that BView::GetMouse is returning wrong values when checkMessageQueue is used. In some cases values are not updated at all. When setting checkMessageQueue to false in beginning of BView::GetMouse, context menu of NetPositive start to work properly.

Change History (4)

comment:1 by pulkomandy, 5 years ago

We have changed the way pointer history works in Haiku, views need to specify B_FULL_POINTER_HISTORY if they want that. In BeOS this was the default and views needed to specify B_NO_POINTER_HISTORY if they did want the OS to merge mouse events together. This is possibly related.

comment:2 by X512, 4 years ago

This problem also seems to cause Pe freeze sometimes.

		Frame		IP			Function Name
		-----------------------------------------------
		00000000	0xf1e9a98fe2	_kern_snooze_etc + 0xa 
		0x7f27ed7a5cb0	0x20771918c43	PText::MouseDown(BPoint) + 0x4b3 
		0x7f27ed7a5e40	0x1549dc03c04	BView::MessageReceived(BMessage*) + 0x314 
		0x7f27ed7a6060	0x2077191ba22	PText::MessageReceived(BMessage*) + 0xfa2 
		0x7f27ed7a6290	0x1549dc0cc4e	BWindow::DispatchMessage(BMessage*, BHandler*) + 0xb3e 
		0x7f27ed7a62f0	0x207718f7ce6	PDoc::DispatchMessage(BMessage*, BHandler*) + 0x46 
		0x7f27ed7a6380	0x1549dc0829b	BWindow::task_looper() + 0x1bb 
		0x7f27ed7a63a0	0x1549db4b24b	BLooper::_task0_(void*) + 0x1b 
		0x7f27ed7a63c0	0xf1e9a97fe7	thread_entry + 0x17 
		00000000	0x7fbbd6694260	commpage_thread_exit + 0 

comment:3 by X512, 4 years ago

This bug is also causing Pe freeze sometimes. Pe use polling loops with GetMouse, for example PText.cpp:2113 and that loops are never exit sometimes because GetMouse stop updating values and never return all mouse buttons released.

Last edited 4 years ago by X512 (previous) (diff)

comment:4 by X512, 4 years ago

This bug start to getting annoying when working on RISC-V port. It require to terminate Pe when it freeze in GetMouse() loop, causing closing all windows and possible loss of changes.

Note: See TracTickets for help on using tickets.