Author: janderwald Date: Sat Dec 4 18:53:51 2010 New Revision: 49951
URL: http://svn.reactos.org/svn/reactos?rev=49951&view=rev Log: [AUDIO-BRINGUP] - Fix line ids of source lines - Fix calculating line id of source lines - MS sndvol32 is still crashing in user32
Modified: branches/audio-bringup/lib/drivers/sound/mmixer/controls.c branches/audio-bringup/lib/drivers/sound/mmixer/mixer.c branches/audio-bringup/lib/drivers/sound/mmixer/priv.h
Modified: branches/audio-bringup/lib/drivers/sound/mmixer/controls.c URL: http://svn.reactos.org/svn/reactos/branches/audio-bringup/lib/drivers/sound/... ============================================================================== --- branches/audio-bringup/lib/drivers/sound/mmixer/controls.c [iso-8859-1] (original) +++ branches/audio-bringup/lib/drivers/sound/mmixer/controls.c [iso-8859-1] Sat Dec 4 18:53:51 2010 @@ -564,7 +564,7 @@ SrcLine->Line.cbStruct = sizeof(MIXERLINEW); SrcLine->Line.dwDestination = 0; SrcLine->Line.dwSource = DstLine->Line.cConnections; - SrcLine->Line.dwLineID = (DstLine->Line.cConnections * 0x10000)+ (MixerInfo->MixCaps.cDestinations-1); + SrcLine->Line.dwLineID = (DstLine->Line.cConnections * SOURCE_LINE)+ (MixerInfo->MixCaps.cDestinations-1); SrcLine->Line.fdwLine = MIXERLINE_LINEF_ACTIVE | MIXERLINE_LINEF_SOURCE; SrcLine->Line.dwUser = 0; SrcLine->Line.cChannels = DstLine->Line.cChannels;
Modified: branches/audio-bringup/lib/drivers/sound/mmixer/mixer.c URL: http://svn.reactos.org/svn/reactos/branches/audio-bringup/lib/drivers/sound/... ============================================================================== --- branches/audio-bringup/lib/drivers/sound/mmixer/mixer.c [iso-8859-1] (original) +++ branches/audio-bringup/lib/drivers/sound/mmixer/mixer.c [iso-8859-1] Sat Dec 4 18:53:51 2010 @@ -209,8 +209,12 @@ }
/* calculate destination line id */ - DestinationLineID = (MixerLine->dwSource * DESTINATION_LINE) + MixerLine->dwDestination; - + DestinationLineID = (MixerLine->dwSource * SOURCE_LINE) + MixerLine->dwDestination; + + DPRINT("MixerName %S cDestinations %lu MixerLineName %S cConnections %lu dwSource %lu dwDestination %lu ID %lx\n", MixerInfo->MixCaps.szPname, MixerInfo->MixCaps.cDestinations, + MixerLineSrc->Line.szName, MixerLineSrc->Line.cConnections, + MixerLine->dwSource, MixerLine->dwDestination, + DestinationLineID); /* get target destination line id */ MixerLineSrc = MMixerGetSourceMixerLineByLineId(MixerInfo, DestinationLineID);
@@ -240,7 +244,7 @@ if (!MixerLineSrc) { /* invalid parameter */ - DPRINT1("MixerName %S Line not found %lu\n", MixerInfo->MixCaps.szPname, MixerLine->dwLineID); + DPRINT1("MMixerGetLineInfo: MixerName %S Line not found %lu\n", MixerInfo->MixCaps.szPname, MixerLine->dwLineID); return MM_STATUS_INVALID_PARAMETER; }
@@ -329,6 +333,9 @@
Flags &= ~MIXER_OBJECTF_HMIXER;
+ DPRINT("MMixerGetLineControls MixerId %lu Flags %lu\n", MixerId, Flags); + + if (Flags == MIXER_GETLINECONTROLSF_ALL) { /* cast to mixer info */ @@ -339,6 +346,7 @@ if (!MixerLineSrc) { /* invalid line id */ + DPRINT("MMixerGetLineControls Line not found %lx\n", MixerLineControls->dwLineID); return MM_STATUS_INVALID_PARAMETER; } /* copy line control(s) */ @@ -351,20 +359,25 @@ /* cast to mixer info */ MixerInfo = (LPMIXER_INFO)MixerHandle;
+ /* get mixer line */ MixerLineSrc = MMixerGetSourceMixerLineByLineId(MixerInfo, MixerLineControls->dwLineID);
if (!MixerLineSrc) { /* invalid line id */ + DPRINT1("MMixerGetLineControls Line not found %lx\n", MixerLineControls->dwLineID); return MM_STATUS_INVALID_PARAMETER; }
- ASSERT(MixerLineSrc); + /* sanity checks */ + ASSERT(MixerLineControls->cControls == 1); + ASSERT(MixerLineControls->cbmxctrl == sizeof(MIXERCONTROLW)); + ASSERT(MixerLineControls->pamxctrl != NULL);
Index = 0; for(Index = 0; Index < MixerLineSrc->Line.cControls; Index++) { - DPRINT("dwControlType %x\n", MixerLineSrc->LineControls[Index].dwControlType); + DPRINT1("dwControlType %x\n", MixerLineSrc->LineControls[Index].dwControlType); if (MixerLineControls->dwControlType == MixerLineSrc->LineControls[Index].dwControlType) { /* found a control with that type */ @@ -385,15 +398,24 @@ if (Status != MM_STATUS_SUCCESS) { /* invalid parameter */ + DPRINT("MMixerGetLineControls ControlID not found %lx\n", MixerLineControls->dwLineID); return MM_STATUS_INVALID_PARAMETER; } + + ASSERT(MixerLineControls->cControls == 1); + ASSERT(MixerLineControls->cbmxctrl == sizeof(MIXERCONTROLW)); + ASSERT(MixerLineControls->pamxctrl != NULL); + + DPRINT("MMixerGetLineControls ControlID %lx ControlType %lx Name %S\n", MixerControl->dwControlID, MixerControl->dwControlType, MixerControl->szName);
/* copy the controls */ MixerContext->Copy(MixerLineControls->pamxctrl, MixerControl, sizeof(MIXERCONTROLW)); + MixerLineControls->pamxctrl->szName[MIXER_LONG_NAME_CHARS-1] = L'\0'; + MixerLineControls->pamxctrl->szShortName[MIXER_SHORT_NAME_CHARS-1] = L'\0'; + return MM_STATUS_SUCCESS; } - - + UNIMPLEMENTED return MM_STATUS_NOT_IMPLEMENTED; }
Modified: branches/audio-bringup/lib/drivers/sound/mmixer/priv.h URL: http://svn.reactos.org/svn/reactos/branches/audio-bringup/lib/drivers/sound/... ============================================================================== --- branches/audio-bringup/lib/drivers/sound/mmixer/priv.h [iso-8859-1] (original) +++ branches/audio-bringup/lib/drivers/sound/mmixer/priv.h [iso-8859-1] Sat Dec 4 18:53:51 2010 @@ -170,8 +170,8 @@
}EVENT_NOTIFICATION_ENTRY, *PEVENT_NOTIFICATION_ENTRY;
-#define DESTINATION_LINE 0xFFFF0000 - +#define DESTINATION_LINE (0xFFFF0000) +#define SOURCE_LINE (0x10000) ULONG MMixerGetFilterPinCount( IN PMIXER_CONTEXT MixerContext,