Author: janderwald
Date: Sat Apr 9 10:36:25 2011
New Revision: 51292
URL:
http://svn.reactos.org/svn/reactos?rev=51292&view=rev
Log:
[SNDVOL32]
- Fix more subtle bugs:
- Check with long line name if the current connection is activated when adding lines to
dialog or when adding lines to the preferences dialog
- Use the temporary preferences context when writing the line settings
- Don't destroy the mixer when the preferences dialog is closed. the new mixer will be
used for the application when the preferences are changed
- Pass the current selected line to the preferences dialog
Modified:
trunk/reactos/base/applications/sndvol32/dialog.c
trunk/reactos/base/applications/sndvol32/sndvol32.c
trunk/reactos/base/applications/sndvol32/sndvol32.h
Modified: trunk/reactos/base/applications/sndvol32/dialog.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/sndvol32…
==============================================================================
--- trunk/reactos/base/applications/sndvol32/dialog.c [iso-8859-1] (original)
+++ trunk/reactos/base/applications/sndvol32/dialog.c [iso-8859-1] Sat Apr 9 10:36:25
2011
@@ -340,7 +340,7 @@
if (Line->cControls != 0)
{
/* get line name */
- if (SndMixerGetLineName(PrefContext->MixerWindow->Mixer,
PrefContext->SelectedLine, LineName, MIXER_LONG_NAME_CHARS, FALSE) == -1)
+ if (SndMixerGetLineName(PrefContext->MixerWindow->Mixer,
PrefContext->SelectedLine, LineName, MIXER_LONG_NAME_CHARS, TRUE) == -1)
{
/* failed to get line name */
LineName[0] = L'\0';
Modified: trunk/reactos/base/applications/sndvol32/sndvol32.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/sndvol32…
==============================================================================
--- trunk/reactos/base/applications/sndvol32/sndvol32.c [iso-8859-1] (original)
+++ trunk/reactos/base/applications/sndvol32/sndvol32.c [iso-8859-1] Sat Apr 9 10:36:25
2011
@@ -199,7 +199,7 @@
PrefContext->SelectedLine,
LineName,
MIXER_LONG_NAME_CHARS,
- FALSE) == -1)
+ TRUE) == -1)
{
LineName[0] = TEXT('\0');
}
@@ -340,7 +340,7 @@
static
VOID
-WriteLineSettings(PREFERENCES_CONTEXT Context, HWND hwndDlg)
+WriteLineSettings(PPREFERENCES_CONTEXT Context, HWND hwndDlg)
{
HWND hwndControls;
INT Count, Index;
@@ -358,7 +358,7 @@
/* sanity check */
assert(Count);
- if (SndMixerGetLineName(Preferences.MixerWindow->Mixer, Preferences.SelectedLine,
DestinationName, MIXER_LONG_NAME_CHARS, TRUE) == -1)
+ if (SndMixerGetLineName(Context->Mixer, Context->SelectedLine, DestinationName,
MIXER_LONG_NAME_CHARS, TRUE) == -1)
{
/* failed to get destination line name */
return;
@@ -395,7 +395,7 @@
}
/* now write the line config */
- WriteLineConfig(Preferences.DeviceName, DestinationName, LineStates,
sizeof(SNDVOL_REG_LINESTATE) * Count);
+ WriteLineConfig(Context->DeviceName, DestinationName, LineStates,
sizeof(SNDVOL_REG_LINESTATE) * Count);
/* free line states */
HeapFree(GetProcessHeap(), 0, LineStates);
@@ -509,7 +509,7 @@
case IDOK:
{
/* write line settings */
- WriteLineSettings(Preferences, hwndDlg);
+ WriteLineSettings(Context, hwndDlg);
/* fall through */
}
@@ -564,19 +564,8 @@
/* update all controls */
UpdatePrefDlgControls(Context,
- (DWORD)-1);
+ (DWORD)Context->SelectedLine);
return TRUE;
- }
-
- case WM_DESTROY:
- {
- Context = GetDialogData(hwndDlg,
- PREFERENCES_CONTEXT);
- if (Context->Mixer != NULL)
- {
- SndMixerDestroy(Context->Mixer);
- }
- break;
}
case WM_CLOSE:
@@ -789,16 +778,17 @@
{
case IDC_PROPERTIES:
{
- PREFERENCES_CONTEXT Preferences;
-
- Preferences.MixerWindow = MixerWindow;
- Preferences.Mixer = NULL;
+ PREFERENCES_CONTEXT Pref;
+
+ Pref.MixerWindow = MixerWindow;
+ Pref.Mixer = NULL;
+ Pref.SelectedLine = Preferences.SelectedLine;
if (DialogBoxParam(hAppInstance,
MAKEINTRESOURCE(IDD_PREFERENCES),
hwnd,
DlgPreferencesProc,
- (LPARAM)&Preferences) == IDOK)
+ (LPARAM)&Pref) == IDOK)
{
/* update window */
TCHAR szProduct[MAXPNAMELEN];
@@ -820,11 +810,17 @@
/* destroy old status bar */
DestroyWindow(MixerWindow->hStatusBar);
+ /* update details */
+ Preferences.SelectedLine = Pref.SelectedLine;
+
+ /* destroy old mixer */
+ SndMixerDestroy(Preferences.MixerWindow->Mixer);
+
+ /* use new selected mixer */
+ Preferences.MixerWindow->Mixer = Pref.Mixer;
+
/* rebuild dialog controls */
- if (RebuildMixerWindowControls(&Preferences))
- {
- DPRINT("Rebuilding mixer window controls
failed!\n");
- }
+ RebuildMixerWindowControls(&Preferences);
/* create status window */
MixerWindow->hStatusBar = CreateStatusWindow(WS_VISIBLE |
WS_CHILD | WS_CLIPSIBLINGS,
Modified: trunk/reactos/base/applications/sndvol32/sndvol32.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/sndvol32…
==============================================================================
--- trunk/reactos/base/applications/sndvol32/sndvol32.h [iso-8859-1] (original)
+++ trunk/reactos/base/applications/sndvol32/sndvol32.h [iso-8859-1] Sat Apr 9 10:36:25
2011
@@ -31,8 +31,7 @@
#define SZ_APP_CLASS TEXT("Volume Control")
ULONG DbgPrint(PCH , ...);
-#define DPRINT
-//DbgPrint("SNDVOL32: %s:%i: ", __FILE__, __LINE__); DbgPrint
+#define DPRINT DbgPrint("SNDVOL32: %s:%i: ", __FILE__, __LINE__); DbgPrint
/*