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
30dee3a8
Commit
30dee3a8
authored
Sep 11, 2007
by
Maarten Lankhorst
Committed by
Alexandre Julliard
Sep 12, 2007
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
winealsa: Add stubs for IDsCaptureDriverNotify.
parent
8f6c9979
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
107 additions
and
9 deletions
+107
-9
dscapture.c
dlls/winealsa.drv/dscapture.c
+107
-9
No files found.
dlls/winealsa.drv/dscapture.c
View file @
30dee3a8
...
...
@@ -58,25 +58,29 @@
WINE_DEFAULT_DEBUG_CHANNEL
(
dsalsa
);
typedef
struct
IDsCaptureDriverImpl
IDsCaptureDriverImpl
;
typedef
struct
IDsCaptureDriverBufferImpl
IDsCaptureDriverBufferImpl
;
struct
IDsCaptureDriverImpl
typedef
struct
IDsCaptureDriverImpl
{
/* IUnknown fields */
const
IDsCaptureDriverVtbl
*
lpVtbl
;
LONG
ref
;
/* IDsCaptureDriverImpl fields */
IDsCaptureDriverBufferImpl
*
capture_buffer
;
UINT
wDevID
;
};
}
IDsCaptureDriverImpl
;
typedef
struct
IDsCaptureDriverNotifyImpl
{
const
IDsDriverNotifyVtbl
*
lpVtbl
;
LONG
ref
;
IDsCaptureDriverBufferImpl
*
buffer
;
}
IDsCaptureDriverNotifyImpl
;
struct
IDsCaptureDriverBufferImpl
{
const
IDsCaptureDriverBufferVtbl
*
lpVtbl
;
LONG
ref
;
IDsCaptureDriverImpl
*
drv
;
IDsCaptureDriverImpl
*
drv
;
IDsCaptureDriverNotifyImpl
*
notify
;
CRITICAL_SECTION
pcm_crst
;
LPBYTE
mmap_buffer
,
presented_buffer
;
...
...
@@ -91,6 +95,66 @@ struct IDsCaptureDriverBufferImpl
snd_pcm_uframes_t
mmap_buflen_frames
,
mmap_pos
;
};
static
HRESULT
WINAPI
IDsCaptureDriverNotifyImpl_QueryInterface
(
PIDSDRIVERNOTIFY
iface
,
REFIID
riid
,
LPVOID
*
ppobj
)
{
IDsCaptureDriverNotifyImpl
*
This
=
(
IDsCaptureDriverNotifyImpl
*
)
iface
;
TRACE
(
"(%p,%s,%p)
\n
"
,
This
,
debugstr_guid
(
riid
),
ppobj
);
if
(
IsEqualGUID
(
riid
,
&
IID_IUnknown
)
||
IsEqualGUID
(
riid
,
&
IID_IDsDriverNotify
)
)
{
IDsDriverNotify_AddRef
(
iface
);
*
ppobj
=
This
;
return
DS_OK
;
}
FIXME
(
"Unknown IID %s
\n
"
,
debugstr_guid
(
riid
));
*
ppobj
=
0
;
return
E_NOINTERFACE
;
}
static
ULONG
WINAPI
IDsCaptureDriverNotifyImpl_AddRef
(
PIDSDRIVERNOTIFY
iface
)
{
IDsCaptureDriverNotifyImpl
*
This
=
(
IDsCaptureDriverNotifyImpl
*
)
iface
;
ULONG
refCount
=
InterlockedIncrement
(
&
This
->
ref
);
TRACE
(
"(%p) ref was %d
\n
"
,
This
,
refCount
-
1
);
return
refCount
;
}
static
ULONG
WINAPI
IDsCaptureDriverNotifyImpl_Release
(
PIDSDRIVERNOTIFY
iface
)
{
IDsCaptureDriverNotifyImpl
*
This
=
(
IDsCaptureDriverNotifyImpl
*
)
iface
;
ULONG
refCount
=
InterlockedDecrement
(
&
This
->
ref
);
TRACE
(
"(%p) ref was %d
\n
"
,
This
,
refCount
+
1
);
if
(
!
refCount
)
{
This
->
buffer
->
notify
=
NULL
;
HeapFree
(
GetProcessHeap
(),
0
,
This
);
TRACE
(
"(%p) released
\n
"
,
This
);
}
return
refCount
;
}
static
HRESULT
WINAPI
IDsCaptureDriverNotifyImpl_SetNotificationPositions
(
PIDSDRIVERNOTIFY
iface
,
DWORD
howmuch
,
LPCDSBPOSITIONNOTIFY
notify
)
{
IDsCaptureDriverNotifyImpl
*
This
=
(
IDsCaptureDriverNotifyImpl
*
)
iface
;
TRACE
(
"(%p,0x%08x,%p)
\n
"
,
This
,
howmuch
,
notify
);
FIXME
(
"stub
\n
"
);
return
DSERR_UNSUPPORTED
;
}
static
const
IDsDriverNotifyVtbl
dscdnvt
=
{
IDsCaptureDriverNotifyImpl_QueryInterface
,
IDsCaptureDriverNotifyImpl_AddRef
,
IDsCaptureDriverNotifyImpl_Release
,
IDsCaptureDriverNotifyImpl_SetNotificationPositions
,
};
#if 0
/** Convert the position an application sees into a position ALSA sees */
static snd_pcm_uframes_t fakepos_to_realpos(const IDsCaptureDriverBufferImpl* This, DWORD fakepos)
...
...
@@ -302,8 +366,37 @@ static int CreateMMAP(IDsCaptureDriverBufferImpl* pdbi)
static
HRESULT
WINAPI
IDsCaptureDriverBufferImpl_QueryInterface
(
PIDSCDRIVERBUFFER
iface
,
REFIID
riid
,
LPVOID
*
ppobj
)
{
/* IDsCaptureDriverBufferImpl *This = (IDsCaptureDriverBufferImpl *)iface; */
FIXME
(
"(): stub!
\n
"
);
IDsCaptureDriverBufferImpl
*
This
=
(
IDsCaptureDriverBufferImpl
*
)
iface
;
if
(
IsEqualGUID
(
riid
,
&
IID_IUnknown
)
||
IsEqualGUID
(
riid
,
&
IID_IDsCaptureDriverBuffer
)
)
{
IDsCaptureDriverBuffer_AddRef
(
iface
);
*
ppobj
=
(
LPVOID
)
iface
;
return
DS_OK
;
}
if
(
IsEqualGUID
(
&
IID_IDsDriverNotify
,
riid
)
)
{
if
(
!
This
->
notify
)
{
This
->
notify
=
HeapAlloc
(
GetProcessHeap
(),
HEAP_ZERO_MEMORY
,
sizeof
(
IDsCaptureDriverNotifyImpl
));
if
(
!
This
->
notify
)
return
DSERR_OUTOFMEMORY
;
This
->
notify
->
lpVtbl
=
&
dscdnvt
;
This
->
notify
->
buffer
=
This
;
/* Keep a lock on IDsDriverNotify for ourself, so it is destroyed when the buffer is */
IDsDriverNotify_AddRef
((
PIDSDRIVERNOTIFY
)
This
->
notify
);
}
IDsDriverNotify_AddRef
((
PIDSDRIVERNOTIFY
)
This
->
notify
);
*
ppobj
=
(
LPVOID
)
This
->
notify
;
return
DS_OK
;
}
if
(
IsEqualGUID
(
&
IID_IDsDriverPropertySet
,
riid
)
)
{
FIXME
(
"Unsupported interface IID_IDsDriverPropertySet
\n
"
);
return
E_FAIL
;
}
FIXME
(
"(): Unknown interface %s
\n
"
,
debugstr_guid
(
riid
));
return
DSERR_UNSUPPORTED
;
}
...
...
@@ -327,6 +420,9 @@ static ULONG WINAPI IDsCaptureDriverBufferImpl_Release(PIDSCDRIVERBUFFER iface)
if
(
refCount
)
return
refCount
;
EnterCriticalSection
(
&
This
->
pcm_crst
);
if
(
This
->
notify
)
IDsDriverNotify_Release
((
PIDSDRIVERNOTIFY
)
This
->
notify
);
TRACE
(
"mmap buffer %p destroyed
\n
"
,
This
->
mmap_buffer
);
This
->
drv
->
capture_buffer
=
NULL
;
...
...
@@ -563,6 +659,7 @@ static HRESULT WINAPI IDsCaptureDriverBufferImpl_Start(PIDSCDRIVERBUFFER iface,
* what it does right now is fill the buffer once.. ALSA size */
FIXME
(
"Non-looping buffers are not properly supported!
\n
"
);
CommitAll
(
This
,
TRUE
);
/* **** */
LeaveCriticalSection
(
&
This
->
pcm_crst
);
return
DS_OK
;
...
...
@@ -578,6 +675,7 @@ static HRESULT WINAPI IDsCaptureDriverBufferImpl_Stop(PIDSCDRIVERBUFFER iface)
This
->
play_looping
=
FALSE
;
snd_pcm_drop
(
This
->
pcm
);
snd_pcm_prepare
(
This
->
pcm
);
/* **** */
LeaveCriticalSection
(
&
This
->
pcm_crst
);
return
DS_OK
;
...
...
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