Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
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-winehq
Commits
93e61eb4
Commit
93e61eb4
authored
Jun 15, 2015
by
Michael Stefaniuc
Committed by
Alexandre Julliard
Jun 15, 2015
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
dmime: Use the generic DMObject implementation for DMAudioPathConfig.
parent
5ba420b6
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
28 additions
and
130 deletions
+28
-130
audiopath.c
dlls/dmime/audiopath.c
+25
-127
dmime.c
dlls/dmime/tests/dmime.c
+3
-3
No files found.
dlls/dmime/audiopath.c
View file @
93e61eb4
...
...
@@ -18,14 +18,14 @@
*/
#include "dmime_private.h"
#include "dmobject.h"
WINE_DEFAULT_DEBUG_CHANNEL
(
dmime
);
WINE_DECLARE_DEBUG_CHANNEL
(
dmfile
);
struct
IDirectMusicAudioPathImpl
{
IDirectMusicAudioPath
IDirectMusicAudioPath_iface
;
IDirectMusicObject
IDirectMusicObject_iface
;
IPersistStream
IPersistStream_iface
;
struct
dmobject
dmobj
;
LONG
ref
;
/* IDirectMusicAudioPathImpl fields */
...
...
@@ -46,12 +46,12 @@ static inline struct IDirectMusicAudioPathImpl *impl_from_IDirectMusicAudioPath(
static
inline
struct
IDirectMusicAudioPathImpl
*
impl_from_IDirectMusicObject
(
IDirectMusicObject
*
iface
)
{
return
CONTAINING_RECORD
(
iface
,
struct
IDirectMusicAudioPathImpl
,
IDirectMusicObject_iface
);
return
CONTAINING_RECORD
(
iface
,
struct
IDirectMusicAudioPathImpl
,
dmobj
.
IDirectMusicObject_iface
);
}
static
inline
struct
IDirectMusicAudioPathImpl
*
impl_from_IPersistStream
(
IPersistStream
*
iface
)
{
return
CONTAINING_RECORD
(
iface
,
struct
IDirectMusicAudioPathImpl
,
IPersistStream_iface
);
return
CONTAINING_RECORD
(
iface
,
struct
IDirectMusicAudioPathImpl
,
dmobj
.
IPersistStream_iface
);
}
void
set_audiopath_perf_pointer
(
IDirectMusicAudioPath
*
iface
,
IDirectMusicPerformance8
*
performance
)
...
...
@@ -86,9 +86,9 @@ static HRESULT WINAPI IDirectMusicAudioPathImpl_QueryInterface (IDirectMusicAudi
if
(
IsEqualIID
(
riid
,
&
IID_IDirectMusicAudioPath
)
||
IsEqualIID
(
riid
,
&
IID_IUnknown
))
*
ppobj
=
&
This
->
IDirectMusicAudioPath_iface
;
else
if
(
IsEqualIID
(
riid
,
&
IID_IDirectMusicObject
))
*
ppobj
=
&
This
->
IDirectMusicObject_iface
;
*
ppobj
=
&
This
->
dmobj
.
IDirectMusicObject_iface
;
else
if
(
IsEqualIID
(
riid
,
&
IID_IPersistStream
))
*
ppobj
=
&
This
->
IPersistStream_iface
;
*
ppobj
=
&
This
->
dmobj
.
IPersistStream_iface
;
if
(
*
ppobj
)
{
IUnknown_AddRef
((
IUnknown
*
)
*
ppobj
);
...
...
@@ -267,69 +267,6 @@ static const IDirectMusicAudioPathVtbl DirectMusicAudioPathVtbl = {
};
/* IDirectMusicObject */
static
HRESULT
WINAPI
DirectMusicObject_QueryInterface
(
IDirectMusicObject
*
iface
,
REFIID
riid
,
void
**
ppobj
)
{
struct
IDirectMusicAudioPathImpl
*
This
=
impl_from_IDirectMusicObject
(
iface
);
return
IDirectMusicAudioPath_QueryInterface
(
&
This
->
IDirectMusicAudioPath_iface
,
riid
,
ppobj
);
}
static
ULONG
WINAPI
DirectMusicObject_AddRef
(
IDirectMusicObject
*
iface
)
{
struct
IDirectMusicAudioPathImpl
*
This
=
impl_from_IDirectMusicObject
(
iface
);
return
IDirectMusicAudioPath_AddRef
(
&
This
->
IDirectMusicAudioPath_iface
);
}
static
ULONG
WINAPI
DirectMusicObject_Release
(
IDirectMusicObject
*
iface
)
{
struct
IDirectMusicAudioPathImpl
*
This
=
impl_from_IDirectMusicObject
(
iface
);
return
IDirectMusicAudioPath_Release
(
&
This
->
IDirectMusicAudioPath_iface
);
}
static
HRESULT
WINAPI
DirectMusicObject_GetDescriptor
(
IDirectMusicObject
*
iface
,
LPDMUS_OBJECTDESC
pDesc
)
{
struct
IDirectMusicAudioPathImpl
*
This
=
impl_from_IDirectMusicObject
(
iface
);
TRACE
(
"(%p, %p)
\n
"
,
This
,
pDesc
);
/* I think we shouldn't return pointer here since then values can be changed; it'd be a mess */
memcpy
(
pDesc
,
This
->
pDesc
,
This
->
pDesc
->
dwSize
);
return
S_OK
;
}
static
HRESULT
WINAPI
DirectMusicObject_SetDescriptor
(
IDirectMusicObject
*
iface
,
LPDMUS_OBJECTDESC
pDesc
)
{
struct
IDirectMusicAudioPathImpl
*
This
=
impl_from_IDirectMusicObject
(
iface
);
TRACE
(
"(%p, %p): setting descriptor:
\n
%s
\n
"
,
This
,
pDesc
,
debugstr_DMUS_OBJECTDESC
(
pDesc
));
/* According to MSDN, we should copy only given values, not whole struct */
if
(
pDesc
->
dwValidData
&
DMUS_OBJ_OBJECT
)
This
->
pDesc
->
guidObject
=
pDesc
->
guidObject
;
if
(
pDesc
->
dwValidData
&
DMUS_OBJ_CLASS
)
This
->
pDesc
->
guidClass
=
pDesc
->
guidClass
;
if
(
pDesc
->
dwValidData
&
DMUS_OBJ_NAME
)
lstrcpynW
(
This
->
pDesc
->
wszName
,
pDesc
->
wszName
,
DMUS_MAX_NAME
);
if
(
pDesc
->
dwValidData
&
DMUS_OBJ_CATEGORY
)
lstrcpynW
(
This
->
pDesc
->
wszCategory
,
pDesc
->
wszCategory
,
DMUS_MAX_CATEGORY
);
if
(
pDesc
->
dwValidData
&
DMUS_OBJ_FILENAME
)
lstrcpynW
(
This
->
pDesc
->
wszFileName
,
pDesc
->
wszFileName
,
DMUS_MAX_FILENAME
);
if
(
pDesc
->
dwValidData
&
DMUS_OBJ_VERSION
)
This
->
pDesc
->
vVersion
=
pDesc
->
vVersion
;
if
(
pDesc
->
dwValidData
&
DMUS_OBJ_DATE
)
This
->
pDesc
->
ftDate
=
pDesc
->
ftDate
;
if
(
pDesc
->
dwValidData
&
DMUS_OBJ_MEMORY
)
{
This
->
pDesc
->
llMemLength
=
pDesc
->
llMemLength
;
memcpy
(
This
->
pDesc
->
pbMemData
,
pDesc
->
pbMemData
,
pDesc
->
llMemLength
);
}
if
(
pDesc
->
dwValidData
&
DMUS_OBJ_STREAM
)
{
/* according to MSDN, we copy the stream */
IStream_Clone
(
pDesc
->
pStream
,
&
This
->
pDesc
->
pStream
);
}
/* add new flags */
This
->
pDesc
->
dwValidData
|=
pDesc
->
dwValidData
;
return
S_OK
;
}
static
HRESULT
WINAPI
DirectMusicObject_ParseDescriptor
(
IDirectMusicObject
*
iface
,
IStream
*
pStream
,
DMUS_OBJECTDESC
*
pDesc
)
{
struct
IDirectMusicAudioPathImpl
*
This
=
impl_from_IDirectMusicObject
(
iface
);
...
...
@@ -479,44 +416,16 @@ static HRESULT WINAPI DirectMusicObject_ParseDescriptor(IDirectMusicObject *ifac
return
S_OK
;
}
static
const
IDirectMusicObjectVtbl
DirectMusicObjectV
tbl
=
{
DirectMusicObject_QueryInterface
,
DirectMusicObject_AddRef
,
DirectMusicObject_Release
,
DirectMusicObject_GetDescriptor
,
DirectMusicObject_SetDescriptor
,
static
const
IDirectMusicObjectVtbl
dmobject_v
tbl
=
{
dmobj_I
DirectMusicObject_QueryInterface
,
dmobj_I
DirectMusicObject_AddRef
,
dmobj_I
DirectMusicObject_Release
,
dmobj_I
DirectMusicObject_GetDescriptor
,
dmobj_I
DirectMusicObject_SetDescriptor
,
DirectMusicObject_ParseDescriptor
};
/* IPersistStream */
static
HRESULT
WINAPI
PersistStream_QueryInterface
(
IPersistStream
*
iface
,
REFIID
riid
,
void
**
ppobj
)
{
struct
IDirectMusicAudioPathImpl
*
This
=
impl_from_IPersistStream
(
iface
);
return
IDirectMusicAudioPath_QueryInterface
(
&
This
->
IDirectMusicAudioPath_iface
,
riid
,
ppobj
);
}
static
ULONG
WINAPI
PersistStream_AddRef
(
IPersistStream
*
iface
)
{
struct
IDirectMusicAudioPathImpl
*
This
=
impl_from_IPersistStream
(
iface
);
return
IDirectMusicAudioPath_AddRef
(
&
This
->
IDirectMusicAudioPath_iface
);
}
static
ULONG
WINAPI
PersistStream_Release
(
IPersistStream
*
iface
)
{
struct
IDirectMusicAudioPathImpl
*
This
=
impl_from_IPersistStream
(
iface
);
return
IDirectMusicAudioPath_Release
(
&
This
->
IDirectMusicAudioPath_iface
);
}
static
HRESULT
WINAPI
PersistStream_GetClassID
(
IPersistStream
*
iface
,
CLSID
*
pClassID
)
{
return
E_NOTIMPL
;
}
static
HRESULT
WINAPI
PersistStream_IsDirty
(
IPersistStream
*
iface
)
{
return
E_NOTIMPL
;
}
static
HRESULT
WINAPI
PersistStream_Load
(
IPersistStream
*
iface
,
IStream
*
pStm
)
{
struct
IDirectMusicAudioPathImpl
*
This
=
impl_from_IPersistStream
(
iface
);
...
...
@@ -665,25 +574,15 @@ static HRESULT WINAPI PersistStream_Load(IPersistStream *iface, IStream *pStm)
return
S_OK
;
}
static
HRESULT
WINAPI
PersistStream_Save
(
IPersistStream
*
iface
,
IStream
*
pStm
,
BOOL
fClearDirty
)
{
return
E_NOTIMPL
;
}
static
HRESULT
WINAPI
PersistStream_GetSizeMax
(
IPersistStream
*
iface
,
ULARGE_INTEGER
*
pcbSize
)
{
return
E_NOTIMPL
;
}
static
const
IPersistStreamVtbl
PersistStreamVtbl
=
{
PersistStream_QueryInterface
,
PersistStream_AddRef
,
PersistStream_Release
,
PersistStream_GetClassID
,
PersistStream_IsDirty
,
static
const
IPersistStreamVtbl
persiststream_vtbl
=
{
dmobj_IPersistStream_QueryInterface
,
dmobj_IPersistStream_AddRef
,
dmobj_IPersistStream_Release
,
dmobj_IPersistStream_GetClassID
,
unimpl_IPersistStream_IsDirty
,
PersistStream_Load
,
PersistStream_Save
,
PersistStream_GetSizeMax
unimpl_I
PersistStream_Save
,
unimpl_I
PersistStream_GetSizeMax
};
/* for ClassFactory */
...
...
@@ -698,13 +597,12 @@ HRESULT WINAPI create_dmaudiopath(REFIID riid, void **ppobj)
return
E_OUTOFMEMORY
;
}
obj
->
IDirectMusicAudioPath_iface
.
lpVtbl
=
&
DirectMusicAudioPathVtbl
;
obj
->
IDirectMusicObject_iface
.
lpVtbl
=
&
DirectMusicObjectVtbl
;
obj
->
IPersistStream_iface
.
lpVtbl
=
&
PersistStreamVtbl
;
obj
->
pDesc
=
HeapAlloc
(
GetProcessHeap
(),
HEAP_ZERO_MEMORY
,
sizeof
(
DMUS_OBJECTDESC
));
DM_STRUCT_INIT
(
obj
->
pDesc
);
obj
->
pDesc
->
dwValidData
|=
DMUS_OBJ_CLASS
;
obj
->
pDesc
->
guidClass
=
CLSID_DirectMusicAudioPathConfig
;
obj
->
ref
=
1
;
dmobject_init
(
&
obj
->
dmobj
,
&
CLSID_DirectMusicAudioPathConfig
,
(
IUnknown
*
)
&
obj
->
IDirectMusicAudioPath_iface
);
obj
->
dmobj
.
IDirectMusicObject_iface
.
lpVtbl
=
&
dmobject_vtbl
;
obj
->
dmobj
.
IPersistStream_iface
.
lpVtbl
=
&
persiststream_vtbl
;
obj
->
pDesc
=
&
obj
->
dmobj
.
desc
;
hr
=
IDirectMusicAudioPath_QueryInterface
(
&
obj
->
IDirectMusicAudioPath_iface
,
riid
,
ppobj
);
IDirectMusicAudioPath_Release
(
&
obj
->
IDirectMusicAudioPath_iface
);
...
...
dlls/dmime/tests/dmime.c
View file @
93e61eb4
...
...
@@ -391,13 +391,13 @@ static void test_audiopathconfig(void)
hr
=
IDirectMusicObject_QueryInterface
(
dmo
,
&
IID_IPersistStream
,
(
void
**
)
&
ps
);
ok
(
hr
==
S_OK
,
"QueryInterface for IID_IPersistStream failed: %08x
\n
"
,
hr
);
hr
=
IPersistStream_GetClassID
(
ps
,
&
class
);
todo_wine
ok
(
hr
==
S_OK
,
"IPersistStream_GetClassID failed: %08x
\n
"
,
hr
);
todo_wine
ok
(
IsEqualGUID
(
&
class
,
&
CLSID_DirectMusicAudioPathConfig
),
ok
(
hr
==
S_OK
,
"IPersistStream_GetClassID failed: %08x
\n
"
,
hr
);
ok
(
IsEqualGUID
(
&
class
,
&
CLSID_DirectMusicAudioPathConfig
),
"Expected class CLSID_DirectMusicAudioPathConfig got %s
\n
"
,
wine_dbgstr_guid
(
&
class
));
/* Unimplemented IPersistStream methods */
hr
=
IPersistStream_IsDirty
(
ps
);
todo_wine
ok
(
hr
==
S_FALSE
,
"IPersistStream_IsDirty failed: %08x
\n
"
,
hr
);
ok
(
hr
==
S_FALSE
,
"IPersistStream_IsDirty failed: %08x
\n
"
,
hr
);
hr
=
IPersistStream_GetSizeMax
(
ps
,
&
size
);
ok
(
hr
==
E_NOTIMPL
,
"IPersistStream_GetSizeMax failed: %08x
\n
"
,
hr
);
hr
=
IPersistStream_Save
(
ps
,
NULL
,
TRUE
);
...
...
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