2015-02-09, 16:44
As for adding debug prints for AnnounceOnResetDevice, it already does that:
Unless you meant something else?
FWIW, the DisplayReconfigured callback with flags set to 4104 indicates the OS thinks the switch has occurred (kCGSetModeFlags), but it hasn't yet, so when the reference clock asks what the refresh rate is, it gets 0.0 (which is then forced to 60.0 by default). That's the crux of this whole problem.
Code:
19:21:32 T:140735221764864 DEBUG: GetMode looking for suitable mode with 1920 x 1080 @ 24.000000 Hz on display 0
19:21:32 T:140735221764864 DEBUG: GetMode found a match!
19:21:32 T:140735221764864 DEBUG: CWinSystemOSX::DisplayReconfigured with flags 1
19:21:32 T:140735221764864 DEBUG: CWinSystemOSX::AnnounceOnLostDevice
19:21:32 T:4573761536 DEBUG: CDVDPlayer::HandleMessages - player started 2
19:21:32 T:4502081536 DEBUG: CCoreAudioStream::Close: Restoring original physical format for stream 0x003d. ([lpcm] Mixable Interleaved 2 Channel 16-bit Signed Integer LE (44100Hz))
19:21:32 T:4502081536 DEBUG: CCoreAudioStream::SetPhysicalFormat: Physical format for stream 0x003d. now active ([lpcm] Mixable Interleaved 2 Channel 16-bit Signed Integer LE (44100Hz))
19:21:32 T:4502081536 DEBUG: CCoreAudioStream::Close: Closed stream 0x003d.
19:21:32 T:4546486272 NOTICE: Thread Timer start, auto delete: false
19:21:32 T:140735221764864 DEBUG: CWinSystemOSX::DisplayReconfigured with flags 4104
19:21:32 T:140735221764864 DEBUG: CWinSystemOSX::AnnounceOnResetDevice
Unless you meant something else?
FWIW, the DisplayReconfigured callback with flags set to 4104 indicates the OS thinks the switch has occurred (kCGSetModeFlags), but it hasn't yet, so when the reference clock asks what the refresh rate is, it gets 0.0 (which is then forced to 60.0 by default). That's the crux of this whole problem.