From 453cb0d077ccb33f68ee0d3c38e15ca69cc67643 Mon Sep 17 00:00:00 2001 From: Austin English Date: Tue, 4 Nov 2008 16:51:56 -0600 Subject: [PATCH] winecfg: don't crash if no audio driver available, issue warning instead --- programs/winecfg/En.rc | 2 ++ programs/winecfg/audio.c | 14 +++++++++++--- programs/winecfg/resource.h | 2 ++ 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/programs/winecfg/En.rc b/programs/winecfg/En.rc index ebdde0c..9448a23 100644 --- a/programs/winecfg/En.rc +++ b/programs/winecfg/En.rc @@ -287,6 +287,8 @@ BEGIN IDS_DEVICES_MIXER "Mixer Devices" IDS_UNAVAILABLE_DRIVER "Found driver in registry that is not available!\n\nRemove “%s” from registry?" IDS_WARNING "Warning" + IDS_NO_DRIVER "No audio driver available! Check your system configuration." + IDS_NO_DRIVER_TITLE "No Audio Driver!" END STRINGTABLE DISCARDABLE diff --git a/programs/winecfg/audio.c b/programs/winecfg/audio.c index 3ce0e25..cfeaaca 100644 --- a/programs/winecfg/audio.c +++ b/programs/winecfg/audio.c @@ -632,8 +632,9 @@ static void initAudioDlg (HWND hDlg) */ if (buf == NULL) { - /* select first available driver */ - if (*loadedAudioDrv->szDriver) + + /* If a driver is available, select the first one. */ + if (loadedAudioDrv->szDriver) selectDriver(hDlg, loadedAudioDrv->szDriver); } else /* make a local copy of the current registry setting */ @@ -644,7 +645,14 @@ static void initAudioDlg (HWND hDlg) /* check for drivers that can't be loaded */ checkRegistrySetting(hDlg); - initAudioDeviceTree(hDlg); + /* load device tree only if a driver is available */ + if (loadedAudioDrv->szDriver) { + initAudioDeviceTree(hDlg); + } + else + /* No driver available? Prepare for trouble! */ + MessageBox(NULL, MAKEINTRESOURCE(IDS_NO_DRIVER), + MAKEINTRESOURCE(IDS_NO_DRIVER_TITLE), MB_OK | MB_ICONERROR); SendDlgItemMessage(hDlg, IDC_DSOUND_HW_ACCEL, CB_RESETCONTENT, 0, 0); for (i = 0; 0 != DSound_HW_Accels[i].displayID; ++i) { diff --git a/programs/winecfg/resource.h b/programs/winecfg/resource.h index a18fe76..3f76ddd 100644 --- a/programs/winecfg/resource.h +++ b/programs/winecfg/resource.h @@ -199,6 +199,8 @@ #define IDS_DEVICES_MIXER 8319 #define IDS_UNAVAILABLE_DRIVER 8320 #define IDS_WARNING 8321 +#define IDS_NO_DRIVER 8322 +#define IDS_NO_DRIVER_TITLE 8323 /* desktop integration tab */ #define IDC_THEME_COLORCOMBO 1401 -- 1.6.0.2