From 4be82324bec450c3e424ff0ef89751e32ec58ec2 Mon Sep 17 00:00:00 2001 From: tomch Date: Mon, 26 Mar 2007 21:27:29 +0000 Subject: [PATCH] Exit if fail to get instance of DirectX's SystemClock --- AppleWin/source/Applewin.cpp | 11 +++++++++-- AppleWin/source/SoundCore.cpp | 7 ++++++- AppleWin/source/SoundCore.h | 2 +- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/AppleWin/source/Applewin.cpp b/AppleWin/source/Applewin.cpp index 0d77a82b..f7c494d4 100644 --- a/AppleWin/source/Applewin.cpp +++ b/AppleWin/source/Applewin.cpp @@ -620,7 +620,7 @@ int APIENTRY WinMain (HINSTANCE passinstance, HINSTANCE, LPSTR lpCmdLine, int) // Initialize COM CoInitialize( NULL ); - SysClk_InitTimer(); + bool bSysClkOK = SysClk_InitTimer(); // DSInit(); // Done when g_hFrameWindow is created (WM_CREATE) // DO ONE-TIME INITIALIZATION @@ -659,7 +659,14 @@ int APIENTRY WinMain (HINSTANCE passinstance, HINSTANCE, LPSTR lpCmdLine, int) MemInitialize(); VideoInitialize(); FrameCreateWindow(); - tfe_init(); + + if (!bSysClkOK) + { + MessageBox(g_hFrameWindow, "DirectX failed to create SystemClock instance", TEXT("AppleWin Error"), MB_OK); + break; + } + + tfe_init(); Snapshot_Startup(); // Do this after everything has been init'ed if(bSetFullScreen) diff --git a/AppleWin/source/SoundCore.cpp b/AppleWin/source/SoundCore.cpp index eea3c3ad..af767057 100644 --- a/AppleWin/source/SoundCore.cpp +++ b/AppleWin/source/SoundCore.cpp @@ -566,7 +566,7 @@ static bool g_bRefClockTimerActive = false; static DWORD g_dwLastUsecPeriod = 0; -void SysClk_InitTimer() +bool SysClk_InitTimer() { g_hSemaphore = CreateSemaphore(NULL, 0, 1, NULL); // Max count = 1 if (g_hSemaphore == NULL) @@ -574,7 +574,12 @@ void SysClk_InitTimer() if (CoCreateInstance(CLSID_SystemClock, NULL, CLSCTX_INPROC, IID_IReferenceClock, (LPVOID*)&g_pRefClock) != S_OK) + { fprintf(stderr, "Error initialising COM\n"); + return false; // Fails for Win95! + } + + return true; } void SysClk_UninitTimer() diff --git a/AppleWin/source/SoundCore.h b/AppleWin/source/SoundCore.h index c9cd0f0f..8707423f 100644 --- a/AppleWin/source/SoundCore.h +++ b/AppleWin/source/SoundCore.h @@ -40,7 +40,7 @@ void DSUninit(); LONG NewVolume(DWORD dwVolume, DWORD dwVolumeMax); void SysClk_WaitTimer(); -void SysClk_InitTimer(); +bool SysClk_InitTimer(); void SysClk_UninitTimer(); void SysClk_StartTimerUsec(DWORD dwUsecPeriod); void SysClk_StopTimer();