Skip to content

Powerpoint 2007 freezes when opening or closing a Slide Show window in Vista and above if NVDA is not installed. #2900

@nvaccessAuto

Description

@nvaccessAuto

Reported by mdcurran on 2012-12-26 10:29
When opening and closing a Slide show window in Powerpoint 2007 (and perhaps 2003), Powerpoint's main thread (the one that created the slide show window) does a SendMessageTimeout call with HWND_BROADCAST while responding to WM_GETOBJECT from NVDA's call to AccessibleObjectFromEvent -> SendMessageTimeout. However, as NVDA is busy waiting on SendMessageTimeout (and our SendMessageTimeout hook forces SMTO_BLOCK) there is a deadlock between Powerpoint and NVDA. Watchdog does eventually kick in, but of course then you just get nothing as it killed off any possible gainFocus anyway.
The simplist fix is to not forceably add SMTO_BLOCK to our SendMessageTimeout calls, thus again allowing AccessibleObjectFromEvent to pump.
We added blocking as we no longer wanted AccessibleObjectFromEvent and friends to be reentrent, though I'm not sure if this was necessary or just a nice to have?
Certainly Powerpoint is the one with the bug as doing a broadcast SendMessage while responding to a SendMessage is pretty silly. But, at the end of the day Powerpoint 2007 Slide Show is unusable in this case.

Blocking #501

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions