Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-cw
Commits
8d547286
Commit
8d547286
authored
May 06, 2003
by
Rok Mandeljc
Committed by
Alexandre Julliard
May 06, 2003
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
- implemented some more port related-functions
- fixed warnings (reported by Gerald Pfeifer)
parent
643e8740
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
96 additions
and
39 deletions
+96
-39
dmusic.c
dlls/dmusic/dmusic.c
+64
-25
dmusic_performance.c
dlls/dmusic/dmusic_performance.c
+16
-10
dmusic_port.c
dlls/dmusic/dmusic_port.c
+6
-2
dmusic_private.h
dlls/dmusic/dmusic_private.h
+10
-2
No files found.
dlls/dmusic/dmusic.c
View file @
8d547286
...
...
@@ -87,7 +87,6 @@ HRESULT WINAPI IDirectMusicImpl_EnumPort (LPDIRECTMUSIC iface, DWORD dwIndex, LP
TRACE
(
"(%p, %ld, %p)
\n
"
,
This
,
dwIndex
,
pPortCaps
);
TRACE
(
"1 software synth. + %i WAVE + %i MIDI available
\n
"
,
numWAVE
,
numMIDI
);
/* i guess the first port shown is always software synthesizer */
if
(
dwIndex
==
0
)
{
...
...
@@ -105,7 +104,6 @@ HRESULT WINAPI IDirectMusicImpl_EnumPort (LPDIRECTMUSIC iface, DWORD dwIndex, LP
MultiByteToWideChar
(
CP_ACP
,
0
,
"Microsotf Synthesizer"
,
-
1
,
pPortCaps
->
wszDescription
,
sizeof
(
pPortCaps
->
wszDescription
)
/
sizeof
(
WCHAR
));
return
S_OK
;
}
/* then return digital sound ports */
for
(
i
=
1
;
i
<=
numWAVE
;
i
++
)
{
...
...
@@ -116,7 +114,6 @@ HRESULT WINAPI IDirectMusicImpl_EnumPort (LPDIRECTMUSIC iface, DWORD dwIndex, LP
return
S_OK
;
}
}
/* finally, list all *real* MIDI ports*/
for
(
i
=
numWAVE
+
1
;
i
<=
numWAVE
+
numMIDI
;
i
++
)
{
...
...
@@ -137,50 +134,91 @@ HRESULT WINAPI IDirectMusicImpl_CreateMusicBuffer (LPDIRECTMUSIC iface, LPDMUS_B
HRESULT
WINAPI
IDirectMusicImpl_CreatePort
(
LPDIRECTMUSIC
iface
,
REFCLSID
rclsidPort
,
LPDMUS_PORTPARAMS
pPortParams
,
LPDIRECTMUSICPORT
*
ppPort
,
LPUNKNOWN
pUnkOuter
)
{
ICOM_THIS
(
IDirectMusicImpl
,
iface
);
FIXME
(
"(%p, %s, %p, %p, %p): stub
\n
"
,
This
,
debugstr_guid
(
rclsidPort
),
pPortParams
,
ppPort
,
pUnkOuter
)
;
return
E_OUTOFMEMORY
;
int
i
;
DMUS_PORTCAPS
PortCaps
;
TRACE
(
"(%p, %s, %p, %p, %p)
\n
"
,
This
,
debugstr_guid
(
rclsidPort
),
pPortParams
,
ppPort
,
pUnkOuter
);
for
(
i
=
0
;
IDirectMusicImpl_EnumPort
(
iface
,
i
,
&
PortCaps
)
!=
S_FALSE
;
i
++
)
{
if
(
IsEqualGUID
(
rclsidPort
,
&
PortCaps
.
guidPort
))
{
This
->
ports
=
HeapReAlloc
(
GetProcessHeap
(),
0
,
This
->
ports
,
sizeof
(
LPDIRECTMUSICPORT
)
*
This
->
nrofports
);
if
(
NULL
==
This
->
ports
[
This
->
nrofports
])
{
*
ppPort
=
(
LPDIRECTMUSICPORT
)
NULL
;
return
E_OUTOFMEMORY
;
}
This
->
ports
[
This
->
nrofports
]
->
lpVtbl
=
&
DirectMusicPort_Vtbl
;
This
->
ports
[
This
->
nrofports
]
->
ref
=
0
;
This
->
ports
[
This
->
nrofports
]
->
active
=
FALSE
;
This
->
ports
[
This
->
nrofports
]
->
caps
=
&
PortCaps
;
This
->
ports
[
This
->
nrofports
]
->
params
=
pPortParams
;
*
ppPort
=
(
LPDIRECTMUSICPORT
)
This
->
ports
[
This
->
nrofports
];
IDirectMusicPortImpl_AddRef
((
LPDIRECTMUSICPORT
)
This
->
ports
[
This
->
nrofports
]);
This
->
nrofports
++
;
return
S_OK
;
}
}
/* FIXME: place correct error here */
return
E_NOINTERFACE
;
}
HRESULT
WINAPI
IDirectMusicImpl_EnumMasterClock
(
LPDIRECTMUSIC
iface
,
DWORD
dwIndex
,
LPDMUS_CLOCKINFO
lpClockInfo
)
{
FIXME
(
"stub
\n
"
);
return
DS_OK
;
ICOM_THIS
(
IDirectMusicImpl
,
iface
);
FIXME
(
"(%p, %ld, %p): stub
\n
"
,
This
,
dwIndex
,
lpClockInfo
);
return
S_OK
;
}
HRESULT
WINAPI
IDirectMusicImpl_GetMasterClock
(
LPDIRECTMUSIC
iface
,
LPGUID
pguidClock
,
IReferenceClock
**
ppReferenceClock
)
{
FIXME
(
"stub
\n
"
);
return
DS_OK
;
ICOM_THIS
(
IDirectMusicImpl
,
iface
);
FIXME
(
"(%p, %s, %p): stub
\n
"
,
This
,
debugstr_guid
(
pguidClock
),
ppReferenceClock
);
return
S_OK
;
}
HRESULT
WINAPI
IDirectMusicImpl_SetMasterClock
(
LPDIRECTMUSIC
iface
,
REFGUID
rguidClock
)
{
FIXME
(
"stub
\n
"
);
return
DS_OK
;
ICOM_THIS
(
IDirectMusicImpl
,
iface
);
FIXME
(
"(%p, %s): stub
\n
"
,
This
,
debugstr_guid
(
rguidClock
));
return
S_OK
;
}
HRESULT
WINAPI
IDirectMusicImpl_Activate
(
LPDIRECTMUSIC
iface
,
BOOL
fEnable
)
{
FIXME
(
"stub
\n
"
);
return
DS_OK
;
ICOM_THIS
(
IDirectMusicImpl
,
iface
);
int
i
;
TRACE
(
"(%p, %i)"
,
This
,
fEnable
);
for
(
i
=
0
;
i
<
This
->
nrofports
;
i
++
)
{
This
->
ports
[
i
]
->
active
=
fEnable
;
}
return
S_OK
;
}
HRESULT
WINAPI
IDirectMusicImpl_GetDefaultPort
(
LPDIRECTMUSIC
iface
,
LPGUID
pguidPort
)
{
ICOM_THIS
(
IDirectMusicImpl
,
iface
);
HKEY
hkGUID
;
DWORD
returnTypeGUID
,
sizeOfReturnBuffer
=
50
;
char
returnBuffer
[
51
];
GUID
defaultPortGUID
;
WCHAR
buff
[
51
];
if
(
RegOpenKeyExA
(
HKEY_LOCAL_MACHINE
,
"Software
\\
Microsoft
\\
DirectMusic
\\
Defaults"
,
0
,
KEY_READ
,
&
hkGUID
)
!=
ERROR_SUCCESS
)
{
ERR
(
": registry entry missing
\n
"
);
}
if
(
RegQueryValueExA
(
hkGUID
,
"DefaultOutputPort"
,
NULL
,
&
returnTypeGUID
,
returnBuffer
,
&
sizeOfReturnBuffer
)
!=
ERROR_SUCCESS
)
TRACE
(
"(%p, %p)
\n
"
,
This
,
pguidPort
);
if
((
RegOpenKeyExA
(
HKEY_LOCAL_MACHINE
,
"Software
\\
Microsoft
\\
DirectMusic
\\
Defaults"
,
0
,
KEY_READ
,
&
hkGUID
)
!=
ERROR_SUCCESS
)
||
(
RegQueryValueExA
(
hkGUID
,
"DefaultOutputPort"
,
NULL
,
&
returnTypeGUID
,
returnBuffer
,
&
sizeOfReturnBuffer
)
!=
ERROR_SUCCESS
))
{
ERR
(
": missing GUID registry data members
\n
"
);
WARN
(
": registry entry missing
\n
"
);
*
pguidPort
=
CLSID_DirectMusicSynth
;
return
S_OK
;
}
/* FIXME: Check return types to ensure we're interpreting data right */
MultiByteToWideChar
(
CP_ACP
,
0
,
returnBuffer
,
-
1
,
buff
,
sizeof
(
buff
)
/
sizeof
(
WCHAR
));
...
...
@@ -192,8 +230,11 @@ HRESULT WINAPI IDirectMusicImpl_GetDefaultPort (LPDIRECTMUSIC iface, LPGUID pgui
HRESULT
WINAPI
IDirectMusicImpl_SetDirectSound
(
LPDIRECTMUSIC
iface
,
LPDIRECTSOUND
pDirectSound
,
HWND
hWnd
)
{
FIXME
(
"stub
\n
"
);
return
DS_OK
;
ICOM_THIS
(
IDirectMusicImpl
,
iface
);
FIXME
(
"(%p, %p, %p): stub
\n
"
,
This
,
pDirectSound
,
hWnd
);
return
S_OK
;
}
ICOM_VTABLE
(
IDirectMusic
)
DirectMusic_Vtbl
=
...
...
@@ -219,7 +260,6 @@ HRESULT WINAPI DMUSIC_CreateDirectMusic (LPCGUID lpcGUID, LPDIRECTMUSIC *ppDM, L
IDirectMusicImpl
*
dmusic
;
TRACE
(
"(%p,%p,%p)
\n
"
,
lpcGUID
,
ppDM
,
pUnkOuter
);
if
(
IsEqualGUID
(
lpcGUID
,
&
IID_IDirectMusic
))
{
dmusic
=
HeapAlloc
(
GetProcessHeap
(),
HEAP_ZERO_MEMORY
,
sizeof
(
IDirectMusicImpl
));
...
...
@@ -228,14 +268,13 @@ HRESULT WINAPI DMUSIC_CreateDirectMusic (LPCGUID lpcGUID, LPDIRECTMUSIC *ppDM, L
*
ppDM
=
(
LPDIRECTMUSIC
)
NULL
;
return
E_OUTOFMEMORY
;
}
dmusic
->
lpVtbl
=
&
DirectMusic_Vtbl
;
dmusic
->
ref
=
1
;
*
ppDM
=
(
LPDIRECTMUSIC
)
dmusic
;
return
S_OK
;
}
WARN
(
"No interface found
\n
"
);
return
E_NOINTERFACE
;
}
...
...
dlls/dmusic/dmusic_performance.c
View file @
8d547286
...
...
@@ -73,8 +73,8 @@ HRESULT WINAPI IDirectMusicPerformanceImpl_Init (LPDIRECTMUSICPERFORMANCE iface,
{
TRACE
(
"App provides DirectMusic
\n
"
);
/* FIXME: is this correct? */
memcpy
(
This
->
dmusic
,
*
ppDirectMusic
,
sizeof
(
*
ppDirectMusic
));
IDirectMusic
_AddRef
(
This
->
dmusic
);
memcpy
(
(
LPDIRECTMUSIC
)
This
->
dmusic
,
*
ppDirectMusic
,
sizeof
(
*
ppDirectMusic
));
IDirectMusic
Impl_AddRef
((
LPDIRECTMUSIC
)
This
->
dmusic
);
/* app is supposed to be in charge of everything else */
return
S_OK
;
}
...
...
@@ -83,10 +83,10 @@ HRESULT WINAPI IDirectMusicPerformanceImpl_Init (LPDIRECTMUSICPERFORMANCE iface,
{
TRACE
(
"DirectMusic to be created; needed
\n
"
);
if
(
!
This
->
dmusic
)
DMUSIC_CreateDirectMusic
(
&
IID_IDirectMusic
,
&
This
->
dmusic
,
NULL
);
*
ppDirectMusic
=
This
->
dmusic
;
DMUSIC_CreateDirectMusic
(
&
IID_IDirectMusic
,
(
LPDIRECTMUSIC
*
)
&
This
->
dmusic
,
NULL
);
*
ppDirectMusic
=
(
LPDIRECTMUSIC
)
This
->
dmusic
;
if
(
*
ppDirectMusic
)
IDirectMusic_AddRef
(
*
ppDirectMusic
);
IDirectMusic
Impl
_AddRef
(
*
ppDirectMusic
);
}
/* app allows the performance to initialise itself and does not need a pointer to object*/
if
(
!
ppDirectMusic
)
...
...
@@ -100,7 +100,7 @@ HRESULT WINAPI IDirectMusicPerformanceImpl_Init (LPDIRECTMUSICPERFORMANCE iface,
HRESULT
WINAPI
IDirectMusicPerformanceImpl_PlaySegment
(
LPDIRECTMUSICPERFORMANCE
iface
,
IDirectMusicSegment
*
pSegment
,
DWORD
dwFlags
,
__int64
i64StartTime
,
IDirectMusicSegmentState
**
ppSegmentState
)
{
FIXME
(
"stub
\n
"
);
return
D
S_OK
;
return
S_OK
;
}
HRESULT
WINAPI
IDirectMusicPerformanceImpl_Stop
(
LPDIRECTMUSICPERFORMANCE
iface
,
IDirectMusicSegment
*
pSegment
,
IDirectMusicSegmentState
*
pSegmentState
,
MUSIC_TIME
mtTime
,
DWORD
dwFlags
)
...
...
@@ -219,8 +219,11 @@ HRESULT WINAPI IDirectMusicPerformanceImpl_RemoveNotificationType (LPDIRECTMUSIC
HRESULT
WINAPI
IDirectMusicPerformanceImpl_AddPort
(
LPDIRECTMUSICPERFORMANCE
iface
,
IDirectMusicPort
*
pPort
)
{
FIXME
(
"stub
\n
"
);
return
DS_OK
;
ICOM_THIS
(
IDirectMusicPerformanceImpl
,
iface
);
FIXME
(
"(%p, %p): stub
\n
"
,
This
,
pPort
);
return
DMUS_E_CANNOT_OPEN_PORT
;
}
HRESULT
WINAPI
IDirectMusicPerformanceImpl_RemovePort
(
LPDIRECTMUSICPERFORMANCE
iface
,
IDirectMusicPort
*
pPort
)
...
...
@@ -231,8 +234,11 @@ HRESULT WINAPI IDirectMusicPerformanceImpl_RemovePort (LPDIRECTMUSICPERFORMANCE
HRESULT
WINAPI
IDirectMusicPerformanceImpl_AssignPChannelBlock
(
LPDIRECTMUSICPERFORMANCE
iface
,
DWORD
dwBlockNum
,
IDirectMusicPort
*
pPort
,
DWORD
dwGroup
)
{
FIXME
(
"stub
\n
"
);
return
DS_OK
;
ICOM_THIS
(
IDirectMusicPerformanceImpl
,
iface
);
FIXME
(
"(%p, %ld, %p, %ld): stub
\n
"
,
This
,
dwBlockNum
,
pPort
,
dwGroup
);
return
E_INVALIDARG
;
}
HRESULT
WINAPI
IDirectMusicPerformanceImpl_AssignPChannel
(
LPDIRECTMUSICPERFORMANCE
iface
,
DWORD
dwPChannel
,
IDirectMusicPort
*
pPort
,
DWORD
dwGroup
,
DWORD
dwMChannel
)
...
...
dlls/dmusic/dmusic_port.c
View file @
8d547286
...
...
@@ -107,8 +107,12 @@ HRESULT WINAPI IDirectMusicPortImpl_GetRunningStats (LPDIRECTMUSICPORT iface, LP
HRESULT
WINAPI
IDirectMusicPortImpl_GetCaps
(
LPDIRECTMUSICPORT
iface
,
LPDMUS_PORTCAPS
pPortCaps
)
{
FIXME
(
"stub
\n
"
);
return
DS_OK
;
ICOM_THIS
(
IDirectMusicPortImpl
,
iface
);
TRACE
(
"(%p, %p)
\n
"
,
This
,
pPortCaps
);
pPortCaps
=
This
->
caps
;
return
S_OK
;
}
HRESULT
WINAPI
IDirectMusicPortImpl_DeviceIoControl
(
LPDIRECTMUSICPORT
iface
,
DWORD
dwIoControlCode
,
LPVOID
lpInBuffer
,
DWORD
nInBufferSize
,
LPVOID
lpOutBuffer
,
DWORD
nOutBufferSize
,
LPDWORD
lpBytesReturned
,
LPOVERLAPPED
lpOverlapped
)
...
...
dlls/dmusic/dmusic_private.h
View file @
8d547286
...
...
@@ -133,6 +133,8 @@ struct IDirectMusicImpl
DWORD
ref
;
/* IDirectMusicImpl fields */
IDirectMusicPortImpl
**
ports
;
int
nrofports
;
};
/* IUnknown: */
...
...
@@ -324,6 +326,9 @@ struct IDirectMusicPortImpl
DWORD
ref
;
/* IDirectMusicPortImpl fields */
BOOL
active
;
LPDMUS_PORTCAPS
caps
;
LPDMUS_PORTPARAMS
params
;
};
/* IUnknown: */
...
...
@@ -704,6 +709,8 @@ extern HRESULT WINAPI IDirectMusicLoader8Impl_EnumObject (LPDIRECTMUSICLOADER8 i
extern
void
WINAPI
IDirectMusicLoader8Impl_CollectGarbage
(
LPDIRECTMUSICLOADER8
iface
);
extern
HRESULT
WINAPI
IDirectMusicLoader8Impl_ReleaseObjectByUnknown
(
LPDIRECTMUSICLOADER8
iface
,
IUnknown
*
pObject
);
extern
HRESULT
WINAPI
IDirectMusicLoader8Impl_LoadObjectFromFile
(
LPDIRECTMUSICLOADER8
iface
,
REFGUID
rguidClassID
,
REFIID
iidInterfaceID
,
WCHAR
*
pwzFilePath
,
void
**
ppObject
);
/* ClassFactory */
extern
HRESULT
WINAPI
DMUSIC_CreateDirectMusicLoader8
(
LPCGUID
lpcGUID
,
LPDIRECTMUSICLOADER8
*
ppDMLoad8
,
LPUNKNOWN
pUnkOuter
);
/*****************************************************************************
* IDirectMusicGetLoaderImpl implementation structure
...
...
@@ -893,7 +900,7 @@ struct IDirectMusicPerformanceImpl
DWORD
ref
;
/* IDirectMusicPerformanceImpl fields */
IDirectMusic
*
dmusic
;
IDirectMusic
Impl
*
dmusic
;
IDirectSound
*
dsound
;
};
...
...
@@ -943,7 +950,6 @@ extern HRESULT WINAPI IDirectMusicPerformanceImpl_MIDIToMusic (LPDIRECTMUSICPERF
extern
HRESULT
WINAPI
IDirectMusicPerformanceImpl_MusicToMIDI
(
LPDIRECTMUSICPERFORMANCE
iface
,
WORD
wMusicValue
,
DMUS_CHORD_KEY
*
pChord
,
BYTE
bPlayMode
,
BYTE
bChordLevel
,
BYTE
*
pbMIDIValue
);
extern
HRESULT
WINAPI
IDirectMusicPerformanceImpl_TimeToRhythm
(
LPDIRECTMUSICPERFORMANCE
iface
,
MUSIC_TIME
mtTime
,
DMUS_TIMESIGNATURE
*
pTimeSig
,
WORD
*
pwMeasure
,
BYTE
*
pbBeat
,
BYTE
*
pbGrid
,
short
*
pnOffset
);
extern
HRESULT
WINAPI
IDirectMusicPerformanceImpl_RhythmToTime
(
LPDIRECTMUSICPERFORMANCE
iface
,
WORD
wMeasure
,
BYTE
bBeat
,
BYTE
bGrid
,
short
nOffset
,
DMUS_TIMESIGNATURE
*
pTimeSig
,
MUSIC_TIME
*
pmtTime
);
/* ClassFactory */
extern
HRESULT
WINAPI
DMUSIC_CreateDirectMusicPerformance
(
LPCGUID
lpcGUID
,
LPDIRECTMUSICPERFORMANCE
*
ppDMPerf
,
LPUNKNOWN
pUnkOuter
);
...
...
@@ -1015,6 +1021,8 @@ extern HRESULT WINAPI IDirectMusicPerformance8ImplCreateStandardAudioPath (LPDIR
extern
HRESULT
WINAPI
IDirectMusicPerformance8ImplSetDefaultAudioPath
(
LPDIRECTMUSICPERFORMANCE8
iface
,
IDirectMusicAudioPath
*
pAudioPath
);
extern
HRESULT
WINAPI
IDirectMusicPerformance8ImplGetDefaultAudioPath
(
LPDIRECTMUSICPERFORMANCE8
iface
,
IDirectMusicAudioPath
**
ppAudioPath
);
extern
HRESULT
WINAPI
IDirectMusicPerformance8ImplGetParamEx
(
LPDIRECTMUSICPERFORMANCE8
iface
,
REFGUID
rguidType
,
DWORD
dwTrackID
,
DWORD
dwGroupBits
,
DWORD
dwIndex
,
MUSIC_TIME
mtTime
,
MUSIC_TIME
*
pmtNext
,
void
*
pParam
);
/* ClassFactory */
extern
HRESULT
WINAPI
DMUSIC_CreateDirectMusicPerformance8
(
LPCGUID
lpcGUID
,
LPDIRECTMUSICPERFORMANCE8
*
ppDMPerf8
,
LPUNKNOWN
pUnkOuter
);
/*****************************************************************************
* IDirectMusicGraphImpl implementation structure
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment