Opened 9 years ago

Closed 9 years ago

#39 closed defect (fixed)

Flash 10 focus problem

Reported by: Silvan Scherrer Owned by:
Priority: major Milestone: Beta1
Component: odin Version:
Severity: Keywords:
Cc:

Description

if i install the win dll with flash version > 10.0.45, see ticket:37 for download reference, flash doesn't run when mozilla has the focus. if mozilla doesn't have the focus it runs ok.

Change History (6)

comment:1 Changed 9 years ago by Silvan Scherrer

Milestone: Beta2Beta1

comment:2 Changed 9 years ago by Silvan Scherrer

Component: documentationodin

comment:3 Changed 9 years ago by dmik

Tried a lot of things.

According to my current findings, the redraws in the new Flash are driven by custom messages (0x401 = WM_USER+1) posted from auxiliary timer threads to the main thread. However, when the Firefox window is in focus, these messages for some reason are not delivered to the application window procedure (located inside the Flash plugin). Instead, I see many WM_TIMER messages which are getting processed.

Digging further.

comment:4 Changed 9 years ago by dmik

Ok, found it. Our GetQueueStatus() implementation always returns the QS_KEY bit in the high word when the top-level window is in focus. The application procedure seems to check this bit and instead of handling pending WM_USER+1 messages it posts a timer message in this case (probably some sort of the idle timer).

Always returning QS_KEY is totally wrong because it means there are key press/release messages currently in the queue, but this is not true (no keys are pressed at all).

The source of this information is the PM API WinQueryQueueStatus?(). I have to test this API in non-Odin code to see how it usually behaves. According to PMREF, its return value also has two parts (called "summary" and "added"), but it's absolutely unclear from the docs which is where. Maybe Odin misinterprets them.

comment:5 Changed 9 years ago by dmik

My tests show that WinQueryQueueStatus? is completely broken in OS/2. If we assume that "summary" is in the high word (as Odin currently does), then we are in a situation when the presence of key press/release messages is always indicated when the window is in focus, even if there are actually NO such messages in the queue. If we assume that the high word contains the "added" bits, then we will see a lot of situations when OS/2 reports that some message types have been added to the queue (since the last query) while they are actually not there at all according to the "summary" field...

comment:6 Changed 9 years ago by dmik

Resolution: fixed
Status: newclosed

I found a rather simple workaround; should be no side effects. See r21955 for details. The problem has gone now.

Note: See TracTickets for help on using tickets.