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
3a9f2262
Commit
3a9f2262
authored
Jun 22, 2005
by
Mike McCormack
Committed by
Alexandre Julliard
Jun 22, 2005
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix up declarations.
parent
05f53afd
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
76 additions
and
92 deletions
+76
-92
band.c
dlls/dmband/band.c
+36
-36
bandtrack.c
dlls/dmband/bandtrack.c
+39
-39
dmband_private.h
dlls/dmband/dmband_private.h
+0
-16
dmutils.c
dlls/dmband/dmutils.c
+1
-1
No files found.
dlls/dmband/band.c
View file @
3a9f2262
...
...
@@ -28,25 +28,25 @@ static const GUID IID_IDirectMusicBandPRIVATE = {0xda54db81,0x837d,0x11d1,{0x86,
* IDirectMusicBandImpl implementation
*/
/* IDirectMusicBandImpl IUnknown part: */
HRESULT
WINAPI
IDirectMusicBandImpl_IUnknown_QueryInterface
(
LPUNKNOWN
iface
,
REFIID
riid
,
LPVOID
*
ppobj
)
{
static
HRESULT
WINAPI
IDirectMusicBandImpl_IUnknown_QueryInterface
(
LPUNKNOWN
iface
,
REFIID
riid
,
LPVOID
*
ppobj
)
{
ICOM_THIS_MULTI
(
IDirectMusicBandImpl
,
UnknownVtbl
,
iface
);
TRACE
(
"(%p, %s, %p)
\n
"
,
This
,
debugstr_dmguid
(
riid
),
ppobj
);
if
(
IsEqualIID
(
riid
,
&
IID_IUnknown
))
{
*
ppobj
=
(
LPVOID
)
&
This
->
UnknownVtbl
;
I
DirectMusicBandImpl_IUnknown_AddRef
((
LPUNKNOWN
)
&
This
->
UnknownVtbl
);
I
Unknown_AddRef
(
iface
);
return
S_OK
;
}
else
if
(
IsEqualIID
(
riid
,
&
IID_IDirectMusicBand
))
{
*
ppobj
=
(
LPVOID
)
&
This
->
BandVtbl
;
I
DirectMusicBandImpl_IDirectMusicBand_AddRef
((
LPDIRECTMUSICBAND
)
&
This
->
BandVtbl
);
I
Unknown_AddRef
(
iface
);
return
S_OK
;
}
else
if
(
IsEqualIID
(
riid
,
&
IID_IDirectMusicObject
))
{
*
ppobj
=
(
LPVOID
)
&
This
->
ObjectVtbl
;
I
DirectMusicBandImpl_IDirectMusicObject_AddRef
((
LPDIRECTMUSICOBJECT
)
&
This
->
ObjectVtbl
);
I
Unknown_AddRef
(
iface
);
return
S_OK
;
}
else
if
(
IsEqualIID
(
riid
,
&
IID_IPersistStream
))
{
*
ppobj
=
(
LPVOID
)
&
This
->
PersistStreamVtbl
;
I
DirectMusicBandImpl_IPersistStream_AddRef
((
LPPERSISTSTREAM
)
&
This
->
PersistStreamVtbl
);
I
Unknown_AddRef
(
iface
);
return
S_OK
;
}
...
...
@@ -54,7 +54,7 @@ HRESULT WINAPI IDirectMusicBandImpl_IUnknown_QueryInterface (LPUNKNOWN iface, RE
return
E_NOINTERFACE
;
}
ULONG
WINAPI
IDirectMusicBandImpl_IUnknown_AddRef
(
LPUNKNOWN
iface
)
{
static
ULONG
WINAPI
IDirectMusicBandImpl_IUnknown_AddRef
(
LPUNKNOWN
iface
)
{
ICOM_THIS_MULTI
(
IDirectMusicBandImpl
,
UnknownVtbl
,
iface
);
ULONG
ref
=
InterlockedIncrement
(
&
This
->
ref
);
...
...
@@ -65,7 +65,7 @@ ULONG WINAPI IDirectMusicBandImpl_IUnknown_AddRef (LPUNKNOWN iface) {
return
ref
;
}
ULONG
WINAPI
IDirectMusicBandImpl_IUnknown_Release
(
LPUNKNOWN
iface
)
{
static
ULONG
WINAPI
IDirectMusicBandImpl_IUnknown_Release
(
LPUNKNOWN
iface
)
{
ICOM_THIS_MULTI
(
IDirectMusicBandImpl
,
UnknownVtbl
,
iface
);
ULONG
ref
=
InterlockedDecrement
(
&
This
->
ref
);
...
...
@@ -87,34 +87,34 @@ static const IUnknownVtbl DirectMusicBand_Unknown_Vtbl = {
};
/* IDirectMusicBandImpl IDirectMusicBand part: */
HRESULT
WINAPI
IDirectMusicBandImpl_IDirectMusicBand_QueryInterface
(
LPDIRECTMUSICBAND
iface
,
REFIID
riid
,
LPVOID
*
ppobj
)
{
static
HRESULT
WINAPI
IDirectMusicBandImpl_IDirectMusicBand_QueryInterface
(
LPDIRECTMUSICBAND
iface
,
REFIID
riid
,
LPVOID
*
ppobj
)
{
ICOM_THIS_MULTI
(
IDirectMusicBandImpl
,
BandVtbl
,
iface
);
return
I
DirectMusicBandImpl_I
Unknown_QueryInterface
((
LPUNKNOWN
)
&
This
->
UnknownVtbl
,
riid
,
ppobj
);
return
IUnknown_QueryInterface
((
LPUNKNOWN
)
&
This
->
UnknownVtbl
,
riid
,
ppobj
);
}
ULONG
WINAPI
IDirectMusicBandImpl_IDirectMusicBand_AddRef
(
LPDIRECTMUSICBAND
iface
)
{
static
ULONG
WINAPI
IDirectMusicBandImpl_IDirectMusicBand_AddRef
(
LPDIRECTMUSICBAND
iface
)
{
ICOM_THIS_MULTI
(
IDirectMusicBandImpl
,
BandVtbl
,
iface
);
return
I
DirectMusicBandImpl_I
Unknown_AddRef
((
LPUNKNOWN
)
&
This
->
UnknownVtbl
);
return
IUnknown_AddRef
((
LPUNKNOWN
)
&
This
->
UnknownVtbl
);
}
ULONG
WINAPI
IDirectMusicBandImpl_IDirectMusicBand_Release
(
LPDIRECTMUSICBAND
iface
)
{
static
ULONG
WINAPI
IDirectMusicBandImpl_IDirectMusicBand_Release
(
LPDIRECTMUSICBAND
iface
)
{
ICOM_THIS_MULTI
(
IDirectMusicBandImpl
,
BandVtbl
,
iface
);
return
I
DirectMusicBandImpl_I
Unknown_Release
((
LPUNKNOWN
)
&
This
->
UnknownVtbl
);
return
IUnknown_Release
((
LPUNKNOWN
)
&
This
->
UnknownVtbl
);
}
HRESULT
WINAPI
IDirectMusicBandImpl_IDirectMusicBand_CreateSegment
(
LPDIRECTMUSICBAND
iface
,
IDirectMusicSegment
**
ppSegment
)
{
static
HRESULT
WINAPI
IDirectMusicBandImpl_IDirectMusicBand_CreateSegment
(
LPDIRECTMUSICBAND
iface
,
IDirectMusicSegment
**
ppSegment
)
{
ICOM_THIS_MULTI
(
IDirectMusicBandImpl
,
BandVtbl
,
iface
);
FIXME
(
"(%p, %p): stub
\n
"
,
This
,
ppSegment
);
return
S_OK
;
}
HRESULT
WINAPI
IDirectMusicBandImpl_IDirectMusicBand_Download
(
LPDIRECTMUSICBAND
iface
,
IDirectMusicPerformance
*
pPerformance
)
{
static
HRESULT
WINAPI
IDirectMusicBandImpl_IDirectMusicBand_Download
(
LPDIRECTMUSICBAND
iface
,
IDirectMusicPerformance
*
pPerformance
)
{
ICOM_THIS_MULTI
(
IDirectMusicBandImpl
,
BandVtbl
,
iface
);
FIXME
(
"(%p, %p): stub
\n
"
,
This
,
pPerformance
);
return
S_OK
;
}
HRESULT
WINAPI
IDirectMusicBandImpl_IDirectMusicBand_Unload
(
LPDIRECTMUSICBAND
iface
,
IDirectMusicPerformance
*
pPerformance
)
{
static
HRESULT
WINAPI
IDirectMusicBandImpl_IDirectMusicBand_Unload
(
LPDIRECTMUSICBAND
iface
,
IDirectMusicPerformance
*
pPerformance
)
{
ICOM_THIS_MULTI
(
IDirectMusicBandImpl
,
BandVtbl
,
iface
);
FIXME
(
"(%p, %p): stub
\n
"
,
This
,
pPerformance
);
return
S_OK
;
...
...
@@ -130,22 +130,22 @@ static const IDirectMusicBandVtbl DirectMusicBand_Band_Vtbl = {
};
/* IDirectMusicBandImpl IDirectMusicObject part: */
HRESULT
WINAPI
IDirectMusicBandImpl_IDirectMusicObject_QueryInterface
(
LPDIRECTMUSICOBJECT
iface
,
REFIID
riid
,
LPVOID
*
ppobj
)
{
static
HRESULT
WINAPI
IDirectMusicBandImpl_IDirectMusicObject_QueryInterface
(
LPDIRECTMUSICOBJECT
iface
,
REFIID
riid
,
LPVOID
*
ppobj
)
{
ICOM_THIS_MULTI
(
IDirectMusicBandImpl
,
ObjectVtbl
,
iface
);
return
I
DirectMusicBandImpl_I
Unknown_QueryInterface
((
LPUNKNOWN
)
&
This
->
UnknownVtbl
,
riid
,
ppobj
);
return
IUnknown_QueryInterface
((
LPUNKNOWN
)
&
This
->
UnknownVtbl
,
riid
,
ppobj
);
}
ULONG
WINAPI
IDirectMusicBandImpl_IDirectMusicObject_AddRef
(
LPDIRECTMUSICOBJECT
iface
)
{
static
ULONG
WINAPI
IDirectMusicBandImpl_IDirectMusicObject_AddRef
(
LPDIRECTMUSICOBJECT
iface
)
{
ICOM_THIS_MULTI
(
IDirectMusicBandImpl
,
ObjectVtbl
,
iface
);
return
I
DirectMusicBandImpl_I
Unknown_AddRef
((
LPUNKNOWN
)
&
This
->
UnknownVtbl
);
return
IUnknown_AddRef
((
LPUNKNOWN
)
&
This
->
UnknownVtbl
);
}
ULONG
WINAPI
IDirectMusicBandImpl_IDirectMusicObject_Release
(
LPDIRECTMUSICOBJECT
iface
)
{
static
ULONG
WINAPI
IDirectMusicBandImpl_IDirectMusicObject_Release
(
LPDIRECTMUSICOBJECT
iface
)
{
ICOM_THIS_MULTI
(
IDirectMusicBandImpl
,
ObjectVtbl
,
iface
);
return
I
DirectMusicBandImpl_I
Unknown_Release
((
LPUNKNOWN
)
&
This
->
UnknownVtbl
);
return
IUnknown_Release
((
LPUNKNOWN
)
&
This
->
UnknownVtbl
);
}
HRESULT
WINAPI
IDirectMusicBandImpl_IDirectMusicObject_GetDescriptor
(
LPDIRECTMUSICOBJECT
iface
,
LPDMUS_OBJECTDESC
pDesc
)
{
static
HRESULT
WINAPI
IDirectMusicBandImpl_IDirectMusicObject_GetDescriptor
(
LPDIRECTMUSICOBJECT
iface
,
LPDMUS_OBJECTDESC
pDesc
)
{
ICOM_THIS_MULTI
(
IDirectMusicBandImpl
,
ObjectVtbl
,
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 */
...
...
@@ -153,7 +153,7 @@ HRESULT WINAPI IDirectMusicBandImpl_IDirectMusicObject_GetDescriptor (LPDIRECTMU
return
S_OK
;
}
HRESULT
WINAPI
IDirectMusicBandImpl_IDirectMusicObject_SetDescriptor
(
LPDIRECTMUSICOBJECT
iface
,
LPDMUS_OBJECTDESC
pDesc
)
{
static
HRESULT
WINAPI
IDirectMusicBandImpl_IDirectMusicObject_SetDescriptor
(
LPDIRECTMUSICOBJECT
iface
,
LPDMUS_OBJECTDESC
pDesc
)
{
ICOM_THIS_MULTI
(
IDirectMusicBandImpl
,
ObjectVtbl
,
iface
);
TRACE
(
"(%p, %p): setting descriptor:
\n
"
,
This
,
pDesc
);
debug_DMUS_OBJECTDESC
(
pDesc
);
...
...
@@ -187,7 +187,7 @@ HRESULT WINAPI IDirectMusicBandImpl_IDirectMusicObject_SetDescriptor (LPDIRECTMU
return
S_OK
;
}
HRESULT
WINAPI
IDirectMusicBandImpl_IDirectMusicObject_ParseDescriptor
(
LPDIRECTMUSICOBJECT
iface
,
LPSTREAM
pStream
,
LPDMUS_OBJECTDESC
pDesc
)
{
static
HRESULT
WINAPI
IDirectMusicBandImpl_IDirectMusicObject_ParseDescriptor
(
LPDIRECTMUSICOBJECT
iface
,
LPSTREAM
pStream
,
LPDMUS_OBJECTDESC
pDesc
)
{
DMUS_PRIVATE_CHUNK
Chunk
;
DWORD
StreamSize
,
StreamCount
,
ListSize
[
1
],
ListCount
[
1
];
LARGE_INTEGER
liMove
;
/* used when skipping chunks */
...
...
@@ -344,29 +344,29 @@ static const IDirectMusicObjectVtbl DirectMusicBand_Object_Vtbl = {
};
/* IDirectMusicBandImpl IPersistStream part: */
HRESULT
WINAPI
IDirectMusicBandImpl_IPersistStream_QueryInterface
(
LPPERSISTSTREAM
iface
,
REFIID
riid
,
LPVOID
*
ppobj
)
{
static
HRESULT
WINAPI
IDirectMusicBandImpl_IPersistStream_QueryInterface
(
LPPERSISTSTREAM
iface
,
REFIID
riid
,
LPVOID
*
ppobj
)
{
ICOM_THIS_MULTI
(
IDirectMusicBandImpl
,
PersistStreamVtbl
,
iface
);
return
I
DirectMusicBandImpl_I
Unknown_QueryInterface
((
LPUNKNOWN
)
&
This
->
UnknownVtbl
,
riid
,
ppobj
);
return
IUnknown_QueryInterface
((
LPUNKNOWN
)
&
This
->
UnknownVtbl
,
riid
,
ppobj
);
}
ULONG
WINAPI
IDirectMusicBandImpl_IPersistStream_AddRef
(
LPPERSISTSTREAM
iface
)
{
static
ULONG
WINAPI
IDirectMusicBandImpl_IPersistStream_AddRef
(
LPPERSISTSTREAM
iface
)
{
ICOM_THIS_MULTI
(
IDirectMusicBandImpl
,
PersistStreamVtbl
,
iface
);
return
I
DirectMusicBandImpl_I
Unknown_AddRef
((
LPUNKNOWN
)
&
This
->
UnknownVtbl
);
return
IUnknown_AddRef
((
LPUNKNOWN
)
&
This
->
UnknownVtbl
);
}
ULONG
WINAPI
IDirectMusicBandImpl_IPersistStream_Release
(
LPPERSISTSTREAM
iface
)
{
static
ULONG
WINAPI
IDirectMusicBandImpl_IPersistStream_Release
(
LPPERSISTSTREAM
iface
)
{
ICOM_THIS_MULTI
(
IDirectMusicBandImpl
,
PersistStreamVtbl
,
iface
);
return
I
DirectMusicBandImpl_I
Unknown_Release
((
LPUNKNOWN
)
&
This
->
UnknownVtbl
);
return
IUnknown_Release
((
LPUNKNOWN
)
&
This
->
UnknownVtbl
);
}
HRESULT
WINAPI
IDirectMusicBandImpl_IPersistStream_GetClassID
(
LPPERSISTSTREAM
iface
,
CLSID
*
pClassID
)
{
static
HRESULT
WINAPI
IDirectMusicBandImpl_IPersistStream_GetClassID
(
LPPERSISTSTREAM
iface
,
CLSID
*
pClassID
)
{
ICOM_THIS_MULTI
(
IDirectMusicBandImpl
,
PersistStreamVtbl
,
iface
);
TRACE
(
"(%p, %p)
\n
"
,
This
,
pClassID
);
memcpy
(
pClassID
,
&
CLSID_DirectMusicBand
,
sizeof
(
CLSID
));
return
S_OK
;
}
HRESULT
WINAPI
IDirectMusicBandImpl_IPersistStream_IsDirty
(
LPPERSISTSTREAM
iface
)
{
static
HRESULT
WINAPI
IDirectMusicBandImpl_IPersistStream_IsDirty
(
LPPERSISTSTREAM
iface
)
{
ICOM_THIS_MULTI
(
IDirectMusicBandImpl
,
PersistStreamVtbl
,
iface
);
FIXME
(
"(%p): stub, always S_FALSE
\n
"
,
This
);
return
S_FALSE
;
...
...
@@ -621,7 +621,7 @@ static HRESULT IDirectMusicBandImpl_IPersistStream_ParseBandForm (LPPERSISTSTREA
return
S_OK
;
}
HRESULT
WINAPI
IDirectMusicBandImpl_IPersistStream_Load
(
LPPERSISTSTREAM
iface
,
IStream
*
pStm
)
{
static
HRESULT
WINAPI
IDirectMusicBandImpl_IPersistStream_Load
(
LPPERSISTSTREAM
iface
,
IStream
*
pStm
)
{
ICOM_THIS_MULTI
(
IDirectMusicBandImpl
,
PersistStreamVtbl
,
iface
);
DMUS_PRIVATE_CHUNK
Chunk
;
...
...
@@ -664,13 +664,13 @@ HRESULT WINAPI IDirectMusicBandImpl_IPersistStream_Load (LPPERSISTSTREAM iface,
return
S_OK
;
}
HRESULT
WINAPI
IDirectMusicBandImpl_IPersistStream_Save
(
LPPERSISTSTREAM
iface
,
IStream
*
pStm
,
BOOL
fClearDirty
)
{
static
HRESULT
WINAPI
IDirectMusicBandImpl_IPersistStream_Save
(
LPPERSISTSTREAM
iface
,
IStream
*
pStm
,
BOOL
fClearDirty
)
{
ICOM_THIS_MULTI
(
IDirectMusicBandImpl
,
PersistStreamVtbl
,
iface
);
FIXME
(
"(%p): Saving not implemented yet
\n
"
,
This
);
return
E_NOTIMPL
;
}
HRESULT
WINAPI
IDirectMusicBandImpl_IPersistStream_GetSizeMax
(
LPPERSISTSTREAM
iface
,
ULARGE_INTEGER
*
pcbSize
)
{
static
HRESULT
WINAPI
IDirectMusicBandImpl_IPersistStream_GetSizeMax
(
LPPERSISTSTREAM
iface
,
ULARGE_INTEGER
*
pcbSize
)
{
return
E_NOTIMPL
;
}
...
...
dlls/dmband/bandtrack.c
View file @
3a9f2262
...
...
@@ -26,22 +26,22 @@ WINE_DECLARE_DEBUG_CHANNEL(dmfile);
* IDirectMusicBandTrack implementation
*/
/* IDirectMusicBandTrack IUnknown part: */
HRESULT
WINAPI
IDirectMusicBandTrack_IUnknown_QueryInterface
(
LPUNKNOWN
iface
,
REFIID
riid
,
LPVOID
*
ppobj
)
{
static
HRESULT
WINAPI
IDirectMusicBandTrack_IUnknown_QueryInterface
(
LPUNKNOWN
iface
,
REFIID
riid
,
LPVOID
*
ppobj
)
{
ICOM_THIS_MULTI
(
IDirectMusicBandTrack
,
UnknownVtbl
,
iface
);
TRACE
(
"(%p, %s, %p)
\n
"
,
This
,
debugstr_dmguid
(
riid
),
ppobj
);
if
(
IsEqualIID
(
riid
,
&
IID_IUnknown
))
{
*
ppobj
=
(
LPUNKNOWN
)
&
This
->
UnknownVtbl
;
I
DirectMusicBandTrack_IUnknown_AddRef
((
LPUNKNOWN
)
&
This
->
UnknownVtbl
);
I
Unknown_AddRef
(
iface
);
return
S_OK
;
}
else
if
(
IsEqualIID
(
riid
,
&
IID_IDirectMusicTrack
)
||
IsEqualIID
(
riid
,
&
IID_IDirectMusicTrack8
))
{
*
ppobj
=
(
LPDIRECTMUSICTRACK8
)
&
This
->
TrackVtbl
;
I
DirectMusicBandTrack_IDirectMusicTrack_AddRef
((
LPDIRECTMUSICTRACK8
)
&
This
->
TrackVtbl
);
I
Unknown_AddRef
(
iface
);
return
S_OK
;
}
else
if
(
IsEqualIID
(
riid
,
&
IID_IPersistStream
))
{
*
ppobj
=
(
LPPERSISTSTREAM
)
&
This
->
PersistStreamVtbl
;
I
DirectMusicBandTrack_IPersistStream_AddRef
((
LPPERSISTSTREAM
)
&
This
->
PersistStreamVtbl
);
I
Unknown_AddRef
(
iface
);
return
S_OK
;
}
...
...
@@ -49,7 +49,7 @@ HRESULT WINAPI IDirectMusicBandTrack_IUnknown_QueryInterface (LPUNKNOWN iface, R
return
E_NOINTERFACE
;
}
ULONG
WINAPI
IDirectMusicBandTrack_IUnknown_AddRef
(
LPUNKNOWN
iface
)
{
static
ULONG
WINAPI
IDirectMusicBandTrack_IUnknown_AddRef
(
LPUNKNOWN
iface
)
{
ICOM_THIS_MULTI
(
IDirectMusicBandTrack
,
UnknownVtbl
,
iface
);
ULONG
ref
=
InterlockedIncrement
(
&
This
->
ref
);
...
...
@@ -60,7 +60,7 @@ ULONG WINAPI IDirectMusicBandTrack_IUnknown_AddRef (LPUNKNOWN iface) {
return
ref
;
}
ULONG
WINAPI
IDirectMusicBandTrack_IUnknown_Release
(
LPUNKNOWN
iface
)
{
static
ULONG
WINAPI
IDirectMusicBandTrack_IUnknown_Release
(
LPUNKNOWN
iface
)
{
ICOM_THIS_MULTI
(
IDirectMusicBandTrack
,
UnknownVtbl
,
iface
);
ULONG
ref
=
InterlockedDecrement
(
&
This
->
ref
);
...
...
@@ -82,40 +82,40 @@ static const IUnknownVtbl DirectMusicBandTrack_Unknown_Vtbl = {
};
/* IDirectMusicBandTrack IDirectMusicTrack8 part: */
HRESULT
WINAPI
IDirectMusicBandTrack_IDirectMusicTrack_QueryInterface
(
LPDIRECTMUSICTRACK8
iface
,
REFIID
riid
,
LPVOID
*
ppobj
)
{
static
HRESULT
WINAPI
IDirectMusicBandTrack_IDirectMusicTrack_QueryInterface
(
LPDIRECTMUSICTRACK8
iface
,
REFIID
riid
,
LPVOID
*
ppobj
)
{
ICOM_THIS_MULTI
(
IDirectMusicBandTrack
,
TrackVtbl
,
iface
);
return
I
DirectMusicBandTrack_I
Unknown_QueryInterface
((
LPUNKNOWN
)
&
This
->
UnknownVtbl
,
riid
,
ppobj
);
return
IUnknown_QueryInterface
((
LPUNKNOWN
)
&
This
->
UnknownVtbl
,
riid
,
ppobj
);
}
ULONG
WINAPI
IDirectMusicBandTrack_IDirectMusicTrack_AddRef
(
LPDIRECTMUSICTRACK8
iface
)
{
static
ULONG
WINAPI
IDirectMusicBandTrack_IDirectMusicTrack_AddRef
(
LPDIRECTMUSICTRACK8
iface
)
{
ICOM_THIS_MULTI
(
IDirectMusicBandTrack
,
TrackVtbl
,
iface
);
return
I
DirectMusicBandTrack_I
Unknown_AddRef
((
LPUNKNOWN
)
&
This
->
UnknownVtbl
);
return
IUnknown_AddRef
((
LPUNKNOWN
)
&
This
->
UnknownVtbl
);
}
ULONG
WINAPI
IDirectMusicBandTrack_IDirectMusicTrack_Release
(
LPDIRECTMUSICTRACK8
iface
)
{
static
ULONG
WINAPI
IDirectMusicBandTrack_IDirectMusicTrack_Release
(
LPDIRECTMUSICTRACK8
iface
)
{
ICOM_THIS_MULTI
(
IDirectMusicBandTrack
,
TrackVtbl
,
iface
);
return
I
DirectMusicBandTrack_I
Unknown_Release
((
LPUNKNOWN
)
&
This
->
UnknownVtbl
);
return
IUnknown_Release
((
LPUNKNOWN
)
&
This
->
UnknownVtbl
);
}
HRESULT
WINAPI
IDirectMusicBandTrack_IDirectMusicTrack_Init
(
LPDIRECTMUSICTRACK8
iface
,
IDirectMusicSegment
*
pSegment
)
{
static
HRESULT
WINAPI
IDirectMusicBandTrack_IDirectMusicTrack_Init
(
LPDIRECTMUSICTRACK8
iface
,
IDirectMusicSegment
*
pSegment
)
{
ICOM_THIS_MULTI
(
IDirectMusicBandTrack
,
TrackVtbl
,
iface
);
FIXME
(
"(%p, %p): stub
\n
"
,
This
,
pSegment
);
return
S_OK
;
}
HRESULT
WINAPI
IDirectMusicBandTrack_IDirectMusicTrack_InitPlay
(
LPDIRECTMUSICTRACK8
iface
,
IDirectMusicSegmentState
*
pSegmentState
,
IDirectMusicPerformance
*
pPerformance
,
void
**
ppStateData
,
DWORD
dwVirtualTrack8ID
,
DWORD
dwFlags
)
{
static
HRESULT
WINAPI
IDirectMusicBandTrack_IDirectMusicTrack_InitPlay
(
LPDIRECTMUSICTRACK8
iface
,
IDirectMusicSegmentState
*
pSegmentState
,
IDirectMusicPerformance
*
pPerformance
,
void
**
ppStateData
,
DWORD
dwVirtualTrack8ID
,
DWORD
dwFlags
)
{
ICOM_THIS_MULTI
(
IDirectMusicBandTrack
,
TrackVtbl
,
iface
);
FIXME
(
"(%p, %p, %p, %p, %ld, %ld): stub
\n
"
,
This
,
pSegmentState
,
pPerformance
,
ppStateData
,
dwVirtualTrack8ID
,
dwFlags
);
return
S_OK
;
}
HRESULT
WINAPI
IDirectMusicBandTrack_IDirectMusicTrack_EndPlay
(
LPDIRECTMUSICTRACK8
iface
,
void
*
pStateData
)
{
static
HRESULT
WINAPI
IDirectMusicBandTrack_IDirectMusicTrack_EndPlay
(
LPDIRECTMUSICTRACK8
iface
,
void
*
pStateData
)
{
ICOM_THIS_MULTI
(
IDirectMusicBandTrack
,
TrackVtbl
,
iface
);
FIXME
(
"(%p, %p): stub
\n
"
,
This
,
pStateData
);
return
S_OK
;
}
HRESULT
WINAPI
IDirectMusicBandTrack_IDirectMusicTrack_Play
(
LPDIRECTMUSICTRACK8
iface
,
void
*
pStateData
,
MUSIC_TIME
mtStart
,
MUSIC_TIME
mtEnd
,
MUSIC_TIME
mtOffset
,
DWORD
dwFlags
,
IDirectMusicPerformance
*
pPerf
,
IDirectMusicSegmentState
*
pSegSt
,
DWORD
dwVirtualID
)
{
static
HRESULT
WINAPI
IDirectMusicBandTrack_IDirectMusicTrack_Play
(
LPDIRECTMUSICTRACK8
iface
,
void
*
pStateData
,
MUSIC_TIME
mtStart
,
MUSIC_TIME
mtEnd
,
MUSIC_TIME
mtOffset
,
DWORD
dwFlags
,
IDirectMusicPerformance
*
pPerf
,
IDirectMusicSegmentState
*
pSegSt
,
DWORD
dwVirtualID
)
{
ICOM_THIS_MULTI
(
IDirectMusicBandTrack
,
TrackVtbl
,
iface
);
FIXME
(
"(%p, %p, %ld, %ld, %ld, %ld, %p, %p, %ld): semi-stub
\n
"
,
This
,
pStateData
,
mtStart
,
mtEnd
,
mtOffset
,
dwFlags
,
pPerf
,
pSegSt
,
dwVirtualID
);
...
...
@@ -129,19 +129,19 @@ HRESULT WINAPI IDirectMusicBandTrack_IDirectMusicTrack_Play (LPDIRECTMUSICTRACK8
return
S_OK
;
}
HRESULT
WINAPI
IDirectMusicBandTrack_IDirectMusicTrack_GetParam
(
LPDIRECTMUSICTRACK8
iface
,
REFGUID
rguidType
,
MUSIC_TIME
mtTime
,
MUSIC_TIME
*
pmtNext
,
void
*
pParam
)
{
static
HRESULT
WINAPI
IDirectMusicBandTrack_IDirectMusicTrack_GetParam
(
LPDIRECTMUSICTRACK8
iface
,
REFGUID
rguidType
,
MUSIC_TIME
mtTime
,
MUSIC_TIME
*
pmtNext
,
void
*
pParam
)
{
ICOM_THIS_MULTI
(
IDirectMusicBandTrack
,
TrackVtbl
,
iface
);
FIXME
(
"(%p, %s, %ld, %p, %p): stub
\n
"
,
This
,
debugstr_dmguid
(
rguidType
),
mtTime
,
pmtNext
,
pParam
);
return
S_OK
;
}
HRESULT
WINAPI
IDirectMusicBandTrack_IDirectMusicTrack_SetParam
(
LPDIRECTMUSICTRACK8
iface
,
REFGUID
rguidType
,
MUSIC_TIME
mtTime
,
void
*
pParam
)
{
static
HRESULT
WINAPI
IDirectMusicBandTrack_IDirectMusicTrack_SetParam
(
LPDIRECTMUSICTRACK8
iface
,
REFGUID
rguidType
,
MUSIC_TIME
mtTime
,
void
*
pParam
)
{
ICOM_THIS_MULTI
(
IDirectMusicBandTrack
,
TrackVtbl
,
iface
);
FIXME
(
"(%p, %s, %ld, %p): stub
\n
"
,
This
,
debugstr_dmguid
(
rguidType
),
mtTime
,
pParam
);
return
S_OK
;
}
HRESULT
WINAPI
IDirectMusicBandTrack_IDirectMusicTrack_IsParamSupported
(
LPDIRECTMUSICTRACK8
iface
,
REFGUID
rguidType
)
{
static
HRESULT
WINAPI
IDirectMusicBandTrack_IDirectMusicTrack_IsParamSupported
(
LPDIRECTMUSICTRACK8
iface
,
REFGUID
rguidType
)
{
ICOM_THIS_MULTI
(
IDirectMusicBandTrack
,
TrackVtbl
,
iface
);
TRACE
(
"(%p, %s): "
,
This
,
debugstr_dmguid
(
rguidType
));
...
...
@@ -164,49 +164,49 @@ HRESULT WINAPI IDirectMusicBandTrack_IDirectMusicTrack_IsParamSupported (LPDIREC
return
DMUS_E_TYPE_UNSUPPORTED
;
}
HRESULT
WINAPI
IDirectMusicBandTrack_IDirectMusicTrack_AddNotificationType
(
LPDIRECTMUSICTRACK8
iface
,
REFGUID
rguidNotificationType
)
{
static
HRESULT
WINAPI
IDirectMusicBandTrack_IDirectMusicTrack_AddNotificationType
(
LPDIRECTMUSICTRACK8
iface
,
REFGUID
rguidNotificationType
)
{
ICOM_THIS_MULTI
(
IDirectMusicBandTrack
,
TrackVtbl
,
iface
);
FIXME
(
"(%p, %s): stub
\n
"
,
This
,
debugstr_dmguid
(
rguidNotificationType
));
return
S_OK
;
}
HRESULT
WINAPI
IDirectMusicBandTrack_IDirectMusicTrack_RemoveNotificationType
(
LPDIRECTMUSICTRACK8
iface
,
REFGUID
rguidNotificationType
)
{
static
HRESULT
WINAPI
IDirectMusicBandTrack_IDirectMusicTrack_RemoveNotificationType
(
LPDIRECTMUSICTRACK8
iface
,
REFGUID
rguidNotificationType
)
{
ICOM_THIS_MULTI
(
IDirectMusicBandTrack
,
TrackVtbl
,
iface
);
FIXME
(
"(%p, %s): stub
\n
"
,
This
,
debugstr_dmguid
(
rguidNotificationType
));
return
S_OK
;
}
HRESULT
WINAPI
IDirectMusicBandTrack_IDirectMusicTrack_Clone
(
LPDIRECTMUSICTRACK8
iface
,
MUSIC_TIME
mtStart
,
MUSIC_TIME
mtEnd
,
IDirectMusicTrack
**
ppTrack
)
{
static
HRESULT
WINAPI
IDirectMusicBandTrack_IDirectMusicTrack_Clone
(
LPDIRECTMUSICTRACK8
iface
,
MUSIC_TIME
mtStart
,
MUSIC_TIME
mtEnd
,
IDirectMusicTrack
**
ppTrack
)
{
ICOM_THIS_MULTI
(
IDirectMusicBandTrack
,
TrackVtbl
,
iface
);
FIXME
(
"(%p, %ld, %ld, %p): stub
\n
"
,
This
,
mtStart
,
mtEnd
,
ppTrack
);
return
S_OK
;
}
HRESULT
WINAPI
IDirectMusicBandTrack_IDirectMusicTrack_PlayEx
(
LPDIRECTMUSICTRACK8
iface
,
void
*
pStateData
,
REFERENCE_TIME
rtStart
,
REFERENCE_TIME
rtEnd
,
REFERENCE_TIME
rtOffset
,
DWORD
dwFlags
,
IDirectMusicPerformance
*
pPerf
,
IDirectMusicSegmentState
*
pSegSt
,
DWORD
dwVirtualID
)
{
static
HRESULT
WINAPI
IDirectMusicBandTrack_IDirectMusicTrack_PlayEx
(
LPDIRECTMUSICTRACK8
iface
,
void
*
pStateData
,
REFERENCE_TIME
rtStart
,
REFERENCE_TIME
rtEnd
,
REFERENCE_TIME
rtOffset
,
DWORD
dwFlags
,
IDirectMusicPerformance
*
pPerf
,
IDirectMusicSegmentState
*
pSegSt
,
DWORD
dwVirtualID
)
{
ICOM_THIS_MULTI
(
IDirectMusicBandTrack
,
TrackVtbl
,
iface
);
FIXME
(
"(%p, %p, %lli, %lli, %lli, %ld, %p, %p, %ld): stub
\n
"
,
This
,
pStateData
,
rtStart
,
rtEnd
,
rtOffset
,
dwFlags
,
pPerf
,
pSegSt
,
dwVirtualID
);
return
S_OK
;
}
HRESULT
WINAPI
IDirectMusicBandTrack_IDirectMusicTrack_GetParamEx
(
LPDIRECTMUSICTRACK8
iface
,
REFGUID
rguidType
,
REFERENCE_TIME
rtTime
,
REFERENCE_TIME
*
prtNext
,
void
*
pParam
,
void
*
pStateData
,
DWORD
dwFlags
)
{
static
HRESULT
WINAPI
IDirectMusicBandTrack_IDirectMusicTrack_GetParamEx
(
LPDIRECTMUSICTRACK8
iface
,
REFGUID
rguidType
,
REFERENCE_TIME
rtTime
,
REFERENCE_TIME
*
prtNext
,
void
*
pParam
,
void
*
pStateData
,
DWORD
dwFlags
)
{
ICOM_THIS_MULTI
(
IDirectMusicBandTrack
,
TrackVtbl
,
iface
);
FIXME
(
"(%p, %s, %lli, %p, %p, %p, %ld): stub
\n
"
,
This
,
debugstr_dmguid
(
rguidType
),
rtTime
,
prtNext
,
pParam
,
pStateData
,
dwFlags
);
return
S_OK
;
}
HRESULT
WINAPI
IDirectMusicBandTrack_IDirectMusicTrack_SetParamEx
(
LPDIRECTMUSICTRACK8
iface
,
REFGUID
rguidType
,
REFERENCE_TIME
rtTime
,
void
*
pParam
,
void
*
pStateData
,
DWORD
dwFlags
)
{
static
HRESULT
WINAPI
IDirectMusicBandTrack_IDirectMusicTrack_SetParamEx
(
LPDIRECTMUSICTRACK8
iface
,
REFGUID
rguidType
,
REFERENCE_TIME
rtTime
,
void
*
pParam
,
void
*
pStateData
,
DWORD
dwFlags
)
{
ICOM_THIS_MULTI
(
IDirectMusicBandTrack
,
TrackVtbl
,
iface
);
FIXME
(
"(%p, %s, %lli, %p, %p, %ld): stub
\n
"
,
This
,
debugstr_dmguid
(
rguidType
),
rtTime
,
pParam
,
pStateData
,
dwFlags
);
return
S_OK
;
}
HRESULT
WINAPI
IDirectMusicBandTrack_IDirectMusicTrack_Compose
(
LPDIRECTMUSICTRACK8
iface
,
IUnknown
*
pContext
,
DWORD
dwTrackGroup
,
IDirectMusicTrack
**
ppResultTrack
)
{
static
HRESULT
WINAPI
IDirectMusicBandTrack_IDirectMusicTrack_Compose
(
LPDIRECTMUSICTRACK8
iface
,
IUnknown
*
pContext
,
DWORD
dwTrackGroup
,
IDirectMusicTrack
**
ppResultTrack
)
{
ICOM_THIS_MULTI
(
IDirectMusicBandTrack
,
TrackVtbl
,
iface
);
FIXME
(
"(%p, %p, %ld, %p): stub
\n
"
,
This
,
pContext
,
dwTrackGroup
,
ppResultTrack
);
return
S_OK
;
}
HRESULT
WINAPI
IDirectMusicBandTrack_IDirectMusicTrack_Join
(
LPDIRECTMUSICTRACK8
iface
,
IDirectMusicTrack
*
pNewTrack
,
MUSIC_TIME
mtJoin
,
IUnknown
*
pContext
,
DWORD
dwTrackGroup
,
IDirectMusicTrack
**
ppResultTrack
)
{
static
HRESULT
WINAPI
IDirectMusicBandTrack_IDirectMusicTrack_Join
(
LPDIRECTMUSICTRACK8
iface
,
IDirectMusicTrack
*
pNewTrack
,
MUSIC_TIME
mtJoin
,
IUnknown
*
pContext
,
DWORD
dwTrackGroup
,
IDirectMusicTrack
**
ppResultTrack
)
{
ICOM_THIS_MULTI
(
IDirectMusicBandTrack
,
TrackVtbl
,
iface
);
FIXME
(
"(%p, %p, %ld, %p, %ld, %p): stub
\n
"
,
This
,
pNewTrack
,
mtJoin
,
pContext
,
dwTrackGroup
,
ppResultTrack
);
return
S_OK
;
...
...
@@ -234,29 +234,29 @@ static const IDirectMusicTrack8Vtbl DirectMusicBandTrack_DirectMusicTrack_Vtbl =
};
/* IDirectMusicBandTrack IPersistStream part: */
HRESULT
WINAPI
IDirectMusicBandTrack_IPersistStream_QueryInterface
(
LPPERSISTSTREAM
iface
,
REFIID
riid
,
LPVOID
*
ppobj
)
{
static
HRESULT
WINAPI
IDirectMusicBandTrack_IPersistStream_QueryInterface
(
LPPERSISTSTREAM
iface
,
REFIID
riid
,
LPVOID
*
ppobj
)
{
ICOM_THIS_MULTI
(
IDirectMusicBandTrack
,
PersistStreamVtbl
,
iface
);
return
I
DirectMusicBandTrack_I
Unknown_QueryInterface
((
LPUNKNOWN
)
&
This
->
UnknownVtbl
,
riid
,
ppobj
);
return
IUnknown_QueryInterface
((
LPUNKNOWN
)
&
This
->
UnknownVtbl
,
riid
,
ppobj
);
}
ULONG
WINAPI
IDirectMusicBandTrack_IPersistStream_AddRef
(
LPPERSISTSTREAM
iface
)
{
static
ULONG
WINAPI
IDirectMusicBandTrack_IPersistStream_AddRef
(
LPPERSISTSTREAM
iface
)
{
ICOM_THIS_MULTI
(
IDirectMusicBandTrack
,
PersistStreamVtbl
,
iface
);
return
I
DirectMusicBandTrack_I
Unknown_AddRef
((
LPUNKNOWN
)
&
This
->
UnknownVtbl
);
return
IUnknown_AddRef
((
LPUNKNOWN
)
&
This
->
UnknownVtbl
);
}
ULONG
WINAPI
IDirectMusicBandTrack_IPersistStream_Release
(
LPPERSISTSTREAM
iface
)
{
static
ULONG
WINAPI
IDirectMusicBandTrack_IPersistStream_Release
(
LPPERSISTSTREAM
iface
)
{
ICOM_THIS_MULTI
(
IDirectMusicBandTrack
,
PersistStreamVtbl
,
iface
);
return
I
DirectMusicBandTrack_I
Unknown_Release
((
LPUNKNOWN
)
&
This
->
UnknownVtbl
);
return
IUnknown_Release
((
LPUNKNOWN
)
&
This
->
UnknownVtbl
);
}
HRESULT
WINAPI
IDirectMusicBandTrack_IPersistStream_GetClassID
(
LPPERSISTSTREAM
iface
,
CLSID
*
pClassID
)
{
static
HRESULT
WINAPI
IDirectMusicBandTrack_IPersistStream_GetClassID
(
LPPERSISTSTREAM
iface
,
CLSID
*
pClassID
)
{
ICOM_THIS_MULTI
(
IDirectMusicBandTrack
,
PersistStreamVtbl
,
iface
);
TRACE
(
"(%p, %p)
\n
"
,
This
,
pClassID
);
memcpy
(
pClassID
,
&
CLSID_DirectMusicBandTrack
,
sizeof
(
CLSID
));
return
S_OK
;
}
HRESULT
WINAPI
IDirectMusicBandTrack_IPersistStream_IsDirty
(
LPPERSISTSTREAM
iface
)
{
static
HRESULT
WINAPI
IDirectMusicBandTrack_IPersistStream_IsDirty
(
LPPERSISTSTREAM
iface
)
{
ICOM_THIS_MULTI
(
IDirectMusicBandTrack
,
PersistStreamVtbl
,
iface
);
FIXME
(
"(%p): stub, always S_FALSE
\n
"
,
This
);
return
S_FALSE
;
...
...
@@ -301,7 +301,7 @@ static HRESULT IDirectMusicBandTrack_IPersistStream_LoadBand (LPPERSISTSTREAM if
}
memcpy
(
&
pNewBand
->
pBandHeader
,
pHeader
,
sizeof
(
DMUS_PRIVATE_BAND_ITEM_HEADER
));
pNewBand
->
ppBand
=
(
IDirectMusicBandImpl
*
)((
char
*
)(
*
ppBand
)
-
offsetof
(
IDirectMusicBandImpl
,
BandVtbl
));
IDirectMusicBand
Impl_IDirectMusicBand
_AddRef
(
*
ppBand
);
IDirectMusicBand_AddRef
(
*
ppBand
);
list_add_tail
(
&
This
->
Bands
,
&
pNewBand
->
entry
);
}
...
...
@@ -520,7 +520,7 @@ static HRESULT IDirectMusicBandTrack_IPersistStream_ParseBandTrackForm (LPPERSIS
}
HRESULT
WINAPI
IDirectMusicBandTrack_IPersistStream_Load
(
LPPERSISTSTREAM
iface
,
IStream
*
pStm
)
{
static
HRESULT
WINAPI
IDirectMusicBandTrack_IPersistStream_Load
(
LPPERSISTSTREAM
iface
,
IStream
*
pStm
)
{
ICOM_THIS_MULTI
(
IDirectMusicBandTrack
,
PersistStreamVtbl
,
iface
);
DMUS_PRIVATE_CHUNK
Chunk
;
...
...
@@ -563,13 +563,13 @@ HRESULT WINAPI IDirectMusicBandTrack_IPersistStream_Load (LPPERSISTSTREAM iface,
return
S_OK
;
}
HRESULT
WINAPI
IDirectMusicBandTrack_IPersistStream_Save
(
LPPERSISTSTREAM
iface
,
IStream
*
pStm
,
BOOL
fClearDirty
)
{
static
HRESULT
WINAPI
IDirectMusicBandTrack_IPersistStream_Save
(
LPPERSISTSTREAM
iface
,
IStream
*
pStm
,
BOOL
fClearDirty
)
{
ICOM_THIS_MULTI
(
IDirectMusicBandTrack
,
PersistStreamVtbl
,
iface
);
FIXME
(
"(%p): Saving not implemented yet
\n
"
,
This
);
return
E_NOTIMPL
;
}
HRESULT
WINAPI
IDirectMusicBandTrack_IPersistStream_GetSizeMax
(
LPPERSISTSTREAM
iface
,
ULARGE_INTEGER
*
pcbSize
)
{
static
HRESULT
WINAPI
IDirectMusicBandTrack_IPersistStream_GetSizeMax
(
LPPERSISTSTREAM
iface
,
ULARGE_INTEGER
*
pcbSize
)
{
ICOM_THIS_MULTI
(
IDirectMusicBandTrack
,
PersistStreamVtbl
,
iface
);
FIXME
(
"(%p, %p): stub
\n
"
,
This
,
pcbSize
);
return
E_NOTIMPL
;
...
...
dlls/dmband/dmband_private.h
View file @
3a9f2262
...
...
@@ -100,15 +100,6 @@ struct IDirectMusicBandImpl {
struct
list
Instruments
;
};
/* IUnknown: */
extern
ULONG
WINAPI
IDirectMusicBandImpl_IUnknown_AddRef
(
LPUNKNOWN
iface
);
/* IDirectMusicBand: */
extern
ULONG
WINAPI
IDirectMusicBandImpl_IDirectMusicBand_AddRef
(
LPDIRECTMUSICBAND
iface
);
/* IDirectMusicObject: */
extern
ULONG
WINAPI
IDirectMusicBandImpl_IDirectMusicObject_AddRef
(
LPDIRECTMUSICOBJECT
iface
);
/* IPersistStream: */
extern
ULONG
WINAPI
IDirectMusicBandImpl_IPersistStream_AddRef
(
LPPERSISTSTREAM
iface
);
/*****************************************************************************
* IDirectMusicBandTrack implementation structure
*/
...
...
@@ -127,13 +118,6 @@ struct IDirectMusicBandTrack {
struct
list
Bands
;
};
/* IUnknown: */
extern
ULONG
WINAPI
IDirectMusicBandTrack_IUnknown_AddRef
(
LPUNKNOWN
iface
);
/* IDirectMusicTrack(8): */
extern
ULONG
WINAPI
IDirectMusicBandTrack_IDirectMusicTrack_AddRef
(
LPDIRECTMUSICTRACK8
iface
);
/* IPersistStream: */
extern
ULONG
WINAPI
IDirectMusicBandTrack_IPersistStream_AddRef
(
LPPERSISTSTREAM
iface
);
/**********************************************************************
* Dll lifetime tracking declaration for dmband.dll
*/
...
...
dlls/dmband/dmutils.c
View file @
3a9f2262
...
...
@@ -264,7 +264,7 @@ const char *debugstr_dmversion (LPDMUS_VERSION version) {
}
/* month number into month name (for debugstr_filetime) */
const
char
*
debugstr_month
(
DWORD
dwMonth
)
{
static
const
char
*
debugstr_month
(
DWORD
dwMonth
)
{
switch
(
dwMonth
)
{
case
1
:
return
"January"
;
case
2
:
return
"February"
;
...
...
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