Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
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-cw
Commits
6ef7b129
Commit
6ef7b129
authored
Apr 26, 2007
by
Emmanuel Maillard
Committed by
Alexandre Julliard
Apr 27, 2007
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
winecoreaudio: Implement MIDIIn_Prepare and MIDIIn_Unprepare.
parent
8ca565b1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
48 additions
and
3 deletions
+48
-3
midi.c
dlls/winecoreaudio.drv/midi.c
+48
-3
No files found.
dlls/winecoreaudio.drv/midi.c
View file @
6ef7b129
...
...
@@ -696,6 +696,52 @@ static DWORD MIDIIn_AddBuffer(WORD wDevID, LPMIDIHDR lpMidiHdr, DWORD dwSize)
return
MMSYSERR_NOERROR
;
}
static
DWORD
MIDIIn_Prepare
(
WORD
wDevID
,
LPMIDIHDR
lpMidiHdr
,
DWORD
dwSize
)
{
TRACE
(
"wDevID=%d lpMidiHdr=%p dwSize=%d
\n
"
,
wDevID
,
lpMidiHdr
,
dwSize
);
if
(
wDevID
>=
MIDIIn_NumDevs
)
{
WARN
(
"bad device ID : %d
\n
"
,
wDevID
);
return
MMSYSERR_BADDEVICEID
;
}
/* MS doc says that dwFlags must be set to zero, but (kinda funny) MS mciseq drivers
* asks to prepare MIDIHDR which dwFlags != 0.
* So at least check for the inqueue flag
*/
if
(
dwSize
<
sizeof
(
MIDIHDR
)
||
lpMidiHdr
==
0
||
lpMidiHdr
->
lpData
==
0
||
(
lpMidiHdr
->
dwFlags
&
MHDR_INQUEUE
)
!=
0
||
lpMidiHdr
->
dwBufferLength
>=
0x10000ul
)
{
WARN
(
"Invalid parameter %p %p %08x %d/%d
\n
"
,
lpMidiHdr
,
lpMidiHdr
->
lpData
,
lpMidiHdr
->
dwFlags
,
sizeof
(
MIDIHDR
),
dwSize
);
return
MMSYSERR_INVALPARAM
;
}
lpMidiHdr
->
lpNext
=
0
;
lpMidiHdr
->
dwFlags
|=
MHDR_PREPARED
;
lpMidiHdr
->
dwFlags
&=
~
MHDR_DONE
;
return
MMSYSERR_NOERROR
;
}
static
DWORD
MIDIIn_Unprepare
(
WORD
wDevID
,
LPMIDIHDR
lpMidiHdr
,
DWORD
dwSize
)
{
TRACE
(
"wDevID=%d lpMidiHdr=%p dwSize=%d
\n
"
,
wDevID
,
lpMidiHdr
,
dwSize
);
if
(
wDevID
>=
MIDIIn_NumDevs
)
{
WARN
(
"bad device ID : %d
\n
"
,
wDevID
);
return
MMSYSERR_BADDEVICEID
;
}
if
(
dwSize
<
sizeof
(
MIDIHDR
)
||
lpMidiHdr
==
0
)
{
WARN
(
"Invalid Parameter
\n
"
);
return
MMSYSERR_INVALPARAM
;
}
if
(
lpMidiHdr
->
dwFlags
&
MHDR_INQUEUE
)
{
WARN
(
"Still playing
\n
"
);
return
MIDIERR_STILLPLAYING
;
}
lpMidiHdr
->
dwFlags
&=
~
MHDR_PREPARED
;
return
MMSYSERR_NOERROR
;
}
static
DWORD
MIDIIn_GetDevCaps
(
WORD
wDevID
,
LPMIDIINCAPSW
lpCaps
,
DWORD
dwSize
)
{
TRACE
(
"wDevID=%d lpCaps=%p dwSize=%d
\n
"
,
wDevID
,
lpCaps
,
dwSize
);
...
...
@@ -897,10 +943,9 @@ DWORD WINAPI CoreAudio_midMessage(UINT wDevID, UINT wMsg, DWORD dwUser, DWORD dw
case
MIDM_ADDBUFFER
:
return
MIDIIn_AddBuffer
(
wDevID
,
(
LPMIDIHDR
)
dwParam1
,
dwParam2
);
case
MIDM_PREPARE
:
return
MIDIIn_Prepare
(
wDevID
,
(
LPMIDIHDR
)
dwParam1
,
dwParam2
);
case
MIDM_UNPREPARE
:
TRACE
(
"Unsupported message
\n
"
);
return
MMSYSERR_NOTSUPPORTED
;
return
MIDIIn_Unprepare
(
wDevID
,
(
LPMIDIHDR
)
dwParam1
,
dwParam2
);
case
MIDM_GETDEVCAPS
:
return
MIDIIn_GetDevCaps
(
wDevID
,
(
LPMIDIINCAPSW
)
dwParam1
,
dwParam2
);
case
MIDM_GETNUMDEVS
:
...
...
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