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
9ec5f957
Commit
9ec5f957
authored
Nov 14, 2009
by
Maarten Lankhorst
Committed by
Alexandre Julliard
Nov 16, 2009
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
dsound: Implement DirectSoundEnumerateA on top of DirectSoundEnumerateW.
parent
90d07895
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
22 additions
and
35 deletions
+22
-35
dsound_main.c
dlls/dsound/dsound_main.c
+22
-35
No files found.
dlls/dsound/dsound_main.c
View file @
9ec5f957
...
...
@@ -272,6 +272,22 @@ HRESULT WINAPI GetDeviceID(LPCGUID pGuidSrc, LPGUID pGuidDest)
return
DS_OK
;
}
struct
morecontext
{
LPDSENUMCALLBACKA
callA
;
LPVOID
data
;
};
static
BOOL
CALLBACK
a_to_w_callback
(
LPGUID
guid
,
LPCWSTR
descW
,
LPCWSTR
modW
,
LPVOID
data
)
{
struct
morecontext
*
context
=
data
;
char
descA
[
MAXPNAMELEN
],
modA
[
MAXPNAMELEN
];
WideCharToMultiByte
(
CP_ACP
,
0
,
descW
,
-
1
,
descA
,
sizeof
(
descA
),
NULL
,
NULL
);
WideCharToMultiByte
(
CP_ACP
,
0
,
modW
,
-
1
,
modA
,
sizeof
(
modA
),
NULL
,
NULL
);
return
context
->
callA
(
guid
,
descA
,
modA
,
context
->
data
);
}
/***************************************************************************
* DirectSoundEnumerateA [DSOUND.2]
...
...
@@ -290,46 +306,17 @@ HRESULT WINAPI DirectSoundEnumerateA(
LPDSENUMCALLBACKA
lpDSEnumCallback
,
LPVOID
lpContext
)
{
unsigned
devs
,
wod
;
DSDRIVERDESC
desc
;
GUID
guid
;
int
err
;
TRACE
(
"lpDSEnumCallback = %p, lpContext = %p
\n
"
,
lpDSEnumCallback
,
lpContext
);
struct
morecontext
context
;
if
(
lpDSEnumCallback
==
NULL
)
{
WARN
(
"invalid parameter: lpDSEnumCallback == NULL
\n
"
);
return
DSERR_INVALIDPARAM
;
WARN
(
"invalid parameter: lpDSEnumCallback == NULL
\n
"
);
return
DSERR_INVALIDPARAM
;
}
devs
=
waveOutGetNumDevs
();
if
(
devs
>
0
)
{
if
(
GetDeviceID
(
&
DSDEVID_DefaultPlayback
,
&
guid
)
==
DS_OK
)
{
for
(
wod
=
0
;
wod
<
devs
;
++
wod
)
{
if
(
IsEqualGUID
(
&
guid
,
&
DSOUND_renderer_guids
[
wod
])
)
{
err
=
mmErr
(
waveOutMessage
(
UlongToHandle
(
wod
),
DRV_QUERYDSOUNDDESC
,(
DWORD_PTR
)
&
desc
,
0
));
if
(
err
==
DS_OK
)
{
TRACE
(
"calling lpDSEnumCallback(NULL,
\"
%s
\"
,
\"
%s
\"
,%p)
\n
"
,
"Primary Sound Driver"
,
""
,
lpContext
);
if
(
lpDSEnumCallback
(
NULL
,
"Primary Sound Driver"
,
""
,
lpContext
)
==
FALSE
)
return
DS_OK
;
}
}
}
}
}
context
.
callA
=
lpDSEnumCallback
;
context
.
data
=
lpContext
;
for
(
wod
=
0
;
wod
<
devs
;
++
wod
)
{
err
=
mmErr
(
waveOutMessage
(
UlongToHandle
(
wod
),
DRV_QUERYDSOUNDDESC
,(
DWORD_PTR
)
&
desc
,
0
));
if
(
err
==
DS_OK
)
{
TRACE
(
"calling lpDSEnumCallback(%s,
\"
%s
\"
,
\"
%s
\"
,%p)
\n
"
,
debugstr_guid
(
&
DSOUND_renderer_guids
[
wod
]),
desc
.
szDesc
,
desc
.
szDrvname
,
lpContext
);
if
(
lpDSEnumCallback
(
&
DSOUND_renderer_guids
[
wod
],
desc
.
szDesc
,
desc
.
szDrvname
,
lpContext
)
==
FALSE
)
return
DS_OK
;
}
}
return
DS_OK
;
return
DirectSoundEnumerateW
(
a_to_w_callback
,
&
context
);
}
/***************************************************************************
...
...
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