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
ca7ee477
Commit
ca7ee477
authored
May 20, 2004
by
Raphael Junqueira
Committed by
Alexandre Julliard
May 20, 2004
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Better handling of User IDirectMusicTools.
parent
40dd9692
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
104 additions
and
90 deletions
+104
-90
dmime_private.h
dlls/dmime/dmime_private.h
+8
-5
graph.c
dlls/dmime/graph.c
+96
-85
No files found.
dlls/dmime/dmime_private.h
View file @
ca7ee477
...
...
@@ -165,6 +165,12 @@ typedef struct _DMUS_PRIVATE_SEGMENT_ITEM {
WCHAR
wszName
[
DMUS_MAX_NAME
];
}
DMUS_PRIVATE_SEGMENT_ITEM
,
*
LPDMUS_PRIVATE_SEGMENT_ITEM
;
typedef
struct
_DMUS_PRIVATE_GRAPH_TOOL
{
struct
list
entry
;
/* for listing elements */
DWORD
dwIndex
;
IDirectMusicTool
*
pTool
;
}
DMUS_PRIVATE_GRAPH_TOOL
,
*
LPDMUS_PRIVATE_GRAPH_TOOL
;
typedef
struct
_DMUS_PRIVATE_TEMPO_PLAY_STATE
{
DWORD
dummy
;
}
DMUS_PRIVATE_TEMPO_PLAY_STATE
,
*
LPDMUS_PRIVATE_TEMPO_PLAY_STATE
;
...
...
@@ -385,9 +391,8 @@ struct IDirectMusicGraphImpl {
/* IDirectMusicGraphImpl fields */
LPDMUS_OBJECTDESC
pDesc
;
IDirectMusicTool8Impl
*
pFirst
;
IDirectMusicTool8Impl
*
pLast
;
WORD
num_tools
;
WORD
num_tools
;
struct
list
Tools
;
};
/* IUnknown: */
...
...
@@ -478,8 +483,6 @@ struct IDirectMusicTool8Impl {
DWORD
ref
;
/* IDirectMusicTool8Impl fields */
IDirectMusicTool8Impl
*
pPrev
;
IDirectMusicTool8Impl
*
pNext
;
};
/* IUnknown: */
...
...
dlls/dmime/graph.c
View file @
ca7ee477
...
...
@@ -98,82 +98,92 @@ HRESULT WINAPI IDirectMusicGraphImpl_IDirectMusicGraph_StampPMsg (LPDIRECTMUSICG
}
HRESULT
WINAPI
IDirectMusicGraphImpl_IDirectMusicGraph_InsertTool
(
LPDIRECTMUSICGRAPH
iface
,
IDirectMusicTool
*
pTool
,
DWORD
*
pdwPChannels
,
DWORD
cPChannels
,
LONG
lIndex
)
{
int
i
;
IDirectMusicTool8Impl
*
p
;
IDirectMusicTool8Impl
*
toAdd
=
(
IDirectMusicTool8Impl
*
)
pTool
;
ICOM_THIS_MULTI
(
IDirectMusicGraphImpl
,
GraphVtbl
,
iface
);
FIXME
(
"(%p, %p, %p, %ld, %li): use of pdwPChannels
\n
"
,
This
,
pTool
,
pdwPChannels
,
cPChannels
,
lIndex
);
if
(
0
==
This
->
num_tools
)
{
This
->
pFirst
=
This
->
pLast
=
toAdd
;
toAdd
->
pPrev
=
toAdd
->
pNext
=
NULL
;
}
else
if
(
lIndex
==
0
||
lIndex
<=
-
This
->
num_tools
)
{
This
->
pFirst
->
pPrev
=
toAdd
;
toAdd
->
pNext
=
This
->
pFirst
;
toAdd
->
pPrev
=
NULL
;
This
->
pFirst
=
toAdd
;
}
else
if
(
lIndex
<
0
)
{
p
=
This
->
pLast
;
for
(
i
=
0
;
i
<
-
lIndex
;
++
i
)
{
p
=
p
->
pPrev
;
}
toAdd
->
pNext
=
p
->
pNext
;
if
(
p
->
pNext
)
p
->
pNext
->
pPrev
=
toAdd
;
p
->
pNext
=
toAdd
;
toAdd
->
pPrev
=
p
;
}
else
if
(
lIndex
>=
This
->
num_tools
)
{
This
->
pLast
->
pNext
=
toAdd
;
toAdd
->
pPrev
=
This
->
pLast
;
toAdd
->
pNext
=
NULL
;
This
->
pLast
=
toAdd
;
}
else
if
(
lIndex
>
0
)
{
p
=
This
->
pFirst
;
for
(
i
=
0
;
i
<
lIndex
;
++
i
)
{
p
=
p
->
pNext
;
}
toAdd
->
pPrev
=
p
->
pPrev
;
if
(
p
->
pPrev
)
p
->
pPrev
->
pNext
=
toAdd
;
p
->
pPrev
=
toAdd
;
toAdd
->
pNext
=
p
;
}
++
This
->
num_tools
;
return
DS_OK
;
ICOM_THIS_MULTI
(
IDirectMusicGraphImpl
,
GraphVtbl
,
iface
);
HRESULT
hr
;
struct
list
*
pEntry
=
NULL
;
struct
list
*
pPrevEntry
=
NULL
;
LPDMUS_PRIVATE_GRAPH_TOOL
pIt
=
NULL
;
LPDMUS_PRIVATE_GRAPH_TOOL
pNewTool
=
NULL
;
FIXME
(
"(%p, %p, %p, %ld, %li): use of pdwPChannels
\n
"
,
This
,
pTool
,
pdwPChannels
,
cPChannels
,
lIndex
);
if
(
NULL
==
pTool
)
{
return
E_POINTER
;
}
if
(
0
>
lIndex
)
{
lIndex
=
This
->
num_tools
+
lIndex
;
}
pPrevEntry
=
&
This
->
Tools
;
LIST_FOR_EACH
(
pEntry
,
&
This
->
Tools
)
{
pIt
=
LIST_ENTRY
(
pEntry
,
DMUS_PRIVATE_GRAPH_TOOL
,
entry
);
if
(
pIt
->
dwIndex
==
lIndex
)
{
return
DMUS_E_ALREADY_EXISTS
;
}
if
(
pIt
->
dwIndex
>
lIndex
)
{
break
;
}
pPrevEntry
=
pEntry
;
}
++
This
->
num_tools
;
pNewTool
=
HeapAlloc
(
GetProcessHeap
(),
HEAP_ZERO_MEMORY
,
sizeof
(
DMUS_PRIVATE_GRAPH_TOOL
));
pNewTool
->
pTool
=
pTool
;
pNewTool
->
dwIndex
=
lIndex
;
IDirectMusicTool8_AddRef
(
pTool
);
hr
=
IDirectMusicTool8_Init
(
pTool
,
iface
);
list_add_tail
(
pPrevEntry
->
next
,
&
pNewTool
->
entry
);
#if 0
DWORD dwNum = 0;
hr = IDirectMusicTool8_GetMediaTypes(pTool, &dwNum);
#endif
return
DS_OK
;
}
HRESULT
WINAPI
IDirectMusicGraphImpl_IDirectMusicGraph_GetTool
(
LPDIRECTMUSICGRAPH
iface
,
DWORD
dwIndex
,
IDirectMusicTool
**
ppTool
)
{
int
i
;
IDirectMusicTool8Impl
*
p
=
NULL
;
ICOM_THIS_MULTI
(
IDirectMusicGraphImpl
,
GraphVtbl
,
iface
);
FIXME
(
"(%p, %ld, %p): stub
\n
"
,
This
,
dwIndex
,
ppTool
);
p
=
This
->
pFirst
;
for
(
i
=
0
;
i
<
dwIndex
&&
i
<
This
->
num_tools
;
++
i
)
{
p
=
p
->
pNext
;
}
*
ppTool
=
(
IDirectMusicTool
*
)
p
;
if
(
NULL
!=
*
ppTool
)
{
IDirectMusicTool8Impl_AddRef
((
LPDIRECTMUSICTOOL8
)
*
ppTool
);
}
return
S_OK
;
ICOM_THIS_MULTI
(
IDirectMusicGraphImpl
,
GraphVtbl
,
iface
);
struct
list
*
pEntry
=
NULL
;
LPDMUS_PRIVATE_GRAPH_TOOL
pIt
=
NULL
;
FIXME
(
"(%p, %ld, %p): stub
\n
"
,
This
,
dwIndex
,
ppTool
);
LIST_FOR_EACH
(
pEntry
,
&
This
->
Tools
)
{
pIt
=
LIST_ENTRY
(
pEntry
,
DMUS_PRIVATE_GRAPH_TOOL
,
entry
);
if
(
pIt
->
dwIndex
==
dwIndex
)
{
*
ppTool
=
pIt
->
pTool
;
if
(
NULL
!=
*
ppTool
)
{
IDirectMusicTool8Impl_AddRef
((
LPDIRECTMUSICTOOL8
)
*
ppTool
);
}
return
S_OK
;
}
if
(
pIt
->
dwIndex
>
dwIndex
)
{
break
;
}
}
return
DMUS_E_NOT_FOUND
;
}
HRESULT
WINAPI
IDirectMusicGraphImpl_IDirectMusicGraph_RemoveTool
(
LPDIRECTMUSICGRAPH
iface
,
IDirectMusicTool
*
pTool
)
{
ICOM_THIS_MULTI
(
IDirectMusicGraphImpl
,
GraphVtbl
,
iface
);
FIXME
(
"(%p, %p): stub
\n
"
,
This
,
pTool
);
return
S_OK
;
ICOM_THIS_MULTI
(
IDirectMusicGraphImpl
,
GraphVtbl
,
iface
);
FIXME
(
"(%p, %p): stub
\n
"
,
This
,
pTool
);
return
S_OK
;
}
ICOM_VTABLE
(
IDirectMusicGraph
)
DirectMusicGraph_Graph_Vtbl
=
{
ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
IDirectMusicGraphImpl_IDirectMusicGraph_QueryInterface
,
IDirectMusicGraphImpl_IDirectMusicGraph_AddRef
,
IDirectMusicGraphImpl_IDirectMusicGraph_Release
,
IDirectMusicGraphImpl_IDirectMusicGraph_StampPMsg
,
IDirectMusicGraphImpl_IDirectMusicGraph_InsertTool
,
IDirectMusicGraphImpl_IDirectMusicGraph_GetTool
,
IDirectMusicGraphImpl_IDirectMusicGraph_RemoveTool
ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
IDirectMusicGraphImpl_IDirectMusicGraph_QueryInterface
,
IDirectMusicGraphImpl_IDirectMusicGraph_AddRef
,
IDirectMusicGraphImpl_IDirectMusicGraph_Release
,
IDirectMusicGraphImpl_IDirectMusicGraph_StampPMsg
,
IDirectMusicGraphImpl_IDirectMusicGraph_InsertTool
,
IDirectMusicGraphImpl_IDirectMusicGraph_GetTool
,
IDirectMusicGraphImpl_IDirectMusicGraph_RemoveTool
};
...
...
@@ -586,22 +596,23 @@ ICOM_VTABLE(IPersistStream) DirectMusicGraph_PersistStream_Vtbl = {
/* for ClassFactory */
HRESULT
WINAPI
DMUSIC_CreateDirectMusicGraphImpl
(
LPCGUID
lpcGUID
,
LPVOID
*
ppobj
,
LPUNKNOWN
pUnkOuter
)
{
IDirectMusicGraphImpl
*
obj
;
obj
=
HeapAlloc
(
GetProcessHeap
(),
HEAP_ZERO_MEMORY
,
sizeof
(
IDirectMusicGraphImpl
));
if
(
NULL
==
obj
)
{
*
ppobj
=
(
LPVOID
)
NULL
;
return
E_OUTOFMEMORY
;
}
obj
->
UnknownVtbl
=
&
DirectMusicGraph_Unknown_Vtbl
;
obj
->
GraphVtbl
=
&
DirectMusicGraph_Graph_Vtbl
;
obj
->
ObjectVtbl
=
&
DirectMusicGraph_Object_Vtbl
;
obj
->
PersistStreamVtbl
=
&
DirectMusicGraph_PersistStream_Vtbl
;
obj
->
pDesc
=
HeapAlloc
(
GetProcessHeap
(),
HEAP_ZERO_MEMORY
,
sizeof
(
DMUS_OBJECTDESC
));
DM_STRUCT_INIT
(
obj
->
pDesc
);
obj
->
pDesc
->
dwValidData
|=
DMUS_OBJ_CLASS
;
memcpy
(
&
obj
->
pDesc
->
guidClass
,
&
CLSID_DirectMusicGraph
,
sizeof
(
CLSID
));
obj
->
ref
=
0
;
/* will be inited by QueryInterface */
return
IDirectMusicGraphImpl_IUnknown_QueryInterface
((
LPUNKNOWN
)
&
obj
->
UnknownVtbl
,
lpcGUID
,
ppobj
);
IDirectMusicGraphImpl
*
obj
;
obj
=
HeapAlloc
(
GetProcessHeap
(),
HEAP_ZERO_MEMORY
,
sizeof
(
IDirectMusicGraphImpl
));
if
(
NULL
==
obj
)
{
*
ppobj
=
(
LPVOID
)
NULL
;
return
E_OUTOFMEMORY
;
}
obj
->
UnknownVtbl
=
&
DirectMusicGraph_Unknown_Vtbl
;
obj
->
GraphVtbl
=
&
DirectMusicGraph_Graph_Vtbl
;
obj
->
ObjectVtbl
=
&
DirectMusicGraph_Object_Vtbl
;
obj
->
PersistStreamVtbl
=
&
DirectMusicGraph_PersistStream_Vtbl
;
obj
->
pDesc
=
HeapAlloc
(
GetProcessHeap
(),
HEAP_ZERO_MEMORY
,
sizeof
(
DMUS_OBJECTDESC
));
DM_STRUCT_INIT
(
obj
->
pDesc
);
obj
->
pDesc
->
dwValidData
|=
DMUS_OBJ_CLASS
;
memcpy
(
&
obj
->
pDesc
->
guidClass
,
&
CLSID_DirectMusicGraph
,
sizeof
(
CLSID
));
obj
->
ref
=
0
;
/* will be inited by QueryInterface */
list_init
(
&
obj
->
Tools
);
return
IDirectMusicGraphImpl_IUnknown_QueryInterface
((
LPUNKNOWN
)
&
obj
->
UnknownVtbl
,
lpcGUID
,
ppobj
);
}
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