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
812b4f46
Commit
812b4f46
authored
Apr 30, 2003
by
Alexandre Julliard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Avoid calling Win32 resource functions on 16-bit modules.
parent
ffc198b5
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
38 additions
and
30 deletions
+38
-30
mci.c
dlls/winmm/mci.c
+15
-21
mmsystem.c
dlls/winmm/mmsystem.c
+22
-9
winemm.h
dlls/winmm/winemm.h
+1
-0
No files found.
dlls/winmm/mci.c
View file @
812b4f46
...
...
@@ -198,13 +198,13 @@ static DWORD MCI_GetDevTypeFromFileName(LPCSTR fileName, LPSTR buf, UINT len)
#define MCI_COMMAND_TABLE_NOT_LOADED 0xFFFE
typedef
struct
tagWINE_MCICMDTABLE
{
HANDLE
hMem
;
UINT
uDevType
;
LPCSTR
lpTable
;
UINT
nVerbs
;
/* number of verbs in command table */
LPCSTR
*
aVerbs
;
/* array of verbs to speed up the verb look up process */
}
WINE_MCICMDTABLE
,
*
LPWINE_MCICMDTABLE
;
WINE_MCICMDTABLE
S_MciCmdTable
[
MAX_MCICMDTABLE
];
static
WINE_MCICMDTABLE
S_MciCmdTable
[
MAX_MCICMDTABLE
];
/**************************************************************************
* MCI_IsCommandTableValid [internal]
...
...
@@ -217,10 +217,10 @@ static BOOL MCI_IsCommandTableValid(UINT uTbl)
int
idx
=
0
;
BOOL
inCst
=
FALSE
;
TRACE
(
"Dumping cmdTbl=%d [
hMem
=%p devType=%d]
\n
"
,
uTbl
,
S_MciCmdTable
[
uTbl
].
hMem
,
S_MciCmdTable
[
uTbl
].
uDevType
);
TRACE
(
"Dumping cmdTbl=%d [
lpTable
=%p devType=%d]
\n
"
,
uTbl
,
S_MciCmdTable
[
uTbl
].
lpTable
,
S_MciCmdTable
[
uTbl
].
uDevType
);
if
(
uTbl
>=
MAX_MCICMDTABLE
||
!
S_MciCmdTable
[
uTbl
].
hMem
||
!
S_MciCmdTable
[
uTbl
].
lpTable
)
if
(
uTbl
>=
MAX_MCICMDTABLE
||
!
S_MciCmdTable
[
uTbl
].
lpTable
)
return
FALSE
;
lmem
=
S_MciCmdTable
[
uTbl
].
lpTable
;
...
...
@@ -281,7 +281,6 @@ static BOOL MCI_DumpCommandTable(UINT uTbl)
return
TRUE
;
}
static
UINT
MCI_SetCommandTable
(
HANDLE
hMem
,
UINT
uDevType
);
/**************************************************************************
* MCI_GetCommandTable [internal]
...
...
@@ -294,7 +293,7 @@ static UINT MCI_GetCommandTable(UINT uDevType)
/* first look up existing for existing devType */
for
(
uTbl
=
0
;
uTbl
<
MAX_MCICMDTABLE
;
uTbl
++
)
{
if
(
S_MciCmdTable
[
uTbl
].
hMem
&&
S_MciCmdTable
[
uTbl
].
uDevType
==
uDevType
)
if
(
S_MciCmdTable
[
uTbl
].
lpTable
&&
S_MciCmdTable
[
uTbl
].
uDevType
==
uDevType
)
return
uTbl
;
}
...
...
@@ -313,7 +312,7 @@ static UINT MCI_GetCommandTable(UINT uDevType)
if
(
hRsrc
)
hMem
=
LoadResource
(
WINMM_IData
->
hWinMM32Instance
,
hRsrc
);
if
(
hMem
)
{
uTbl
=
MCI_SetCommandTable
(
hMem
,
uDevType
);
uTbl
=
MCI_SetCommandTable
(
LockResource
(
hMem
)
,
uDevType
);
}
else
{
WARN
(
"No command table found in resource %p[%s]
\n
"
,
WINMM_IData
->
hWinMM32Instance
,
str
);
...
...
@@ -326,7 +325,7 @@ static UINT MCI_GetCommandTable(UINT uDevType)
/**************************************************************************
* MCI_SetCommandTable [internal]
*/
static
UINT
MCI_SetCommandTable
(
HANDLE
hMem
,
UINT
uDevType
)
UINT
MCI_SetCommandTable
(
void
*
table
,
UINT
uDevType
)
{
int
uTbl
;
static
BOOL
bInitDone
=
FALSE
;
...
...
@@ -338,21 +337,17 @@ static UINT MCI_SetCommandTable(HANDLE hMem, UINT uDevType)
*/
if
(
!
bInitDone
)
{
bInitDone
=
TRUE
;
for
(
uTbl
=
0
;
uTbl
<
MAX_MCICMDTABLE
;
uTbl
++
)
{
S_MciCmdTable
[
uTbl
].
hMem
=
0
;
}
MCI_GetCommandTable
(
0
);
}
for
(
uTbl
=
0
;
uTbl
<
MAX_MCICMDTABLE
;
uTbl
++
)
{
if
(
S_MciCmdTable
[
uTbl
].
hMem
==
0
)
{
if
(
!
S_MciCmdTable
[
uTbl
].
lpTable
)
{
LPCSTR
lmem
,
str
;
WORD
eid
;
WORD
count
;
S_MciCmdTable
[
uTbl
].
hMem
=
hMem
;
S_MciCmdTable
[
uTbl
].
uDevType
=
uDevType
;
S_MciCmdTable
[
uTbl
].
lpTable
=
LockResource
(
hMem
)
;
S_MciCmdTable
[
uTbl
].
lpTable
=
table
;
if
(
TRACE_ON
(
mci
))
{
MCI_DumpCommandTable
(
uTbl
);
...
...
@@ -396,11 +391,10 @@ static UINT MCI_SetCommandTable(HANDLE hMem, UINT uDevType)
*/
static
BOOL
MCI_DeleteCommandTable
(
UINT
uTbl
)
{
if
(
uTbl
>=
MAX_MCICMDTABLE
||
!
S_MciCmdTable
[
uTbl
].
hMem
)
if
(
uTbl
>=
MAX_MCICMDTABLE
||
!
S_MciCmdTable
[
uTbl
].
lpTable
)
return
FALSE
;
FreeResource
(
S_MciCmdTable
[
uTbl
].
hMem
);
S_MciCmdTable
[
uTbl
].
hMem
=
0
;
S_MciCmdTable
[
uTbl
].
lpTable
=
NULL
;
if
(
S_MciCmdTable
[
uTbl
].
aVerbs
)
{
HeapFree
(
GetProcessHeap
(),
0
,
S_MciCmdTable
[
uTbl
].
aVerbs
);
S_MciCmdTable
[
uTbl
].
aVerbs
=
0
;
...
...
@@ -584,7 +578,7 @@ static LPCSTR MCI_FindCommand(UINT uTbl, LPCSTR verb)
{
UINT
idx
;
if
(
uTbl
>=
MAX_MCICMDTABLE
||
S_MciCmdTable
[
uTbl
].
hMem
==
0
)
if
(
uTbl
>=
MAX_MCICMDTABLE
||
!
S_MciCmdTable
[
uTbl
].
lpTable
)
return
NULL
;
/* another improvement would be to have the aVerbs array sorted,
...
...
@@ -1123,10 +1117,10 @@ UINT WINAPI mciLoadCommandResource(HINSTANCE hInst, LPCWSTR resNameW, UINT type)
}
#endif
}
if
(
!
(
hRsrc
=
FindResourceW
(
hInst
,
resNameW
,
(
LPCWSTR
)
RT_RCDATAA
)))
{
if
(
!
(
hRsrc
=
FindResourceW
(
hInst
,
resNameW
,
RT_RCDATAW
)))
{
WARN
(
"No command table found in resource
\n
"
);
}
else
if
((
hMem
=
LoadResource
(
hInst
,
hRsrc
)))
{
ret
=
MCI_SetCommandTable
(
hMem
,
type
);
ret
=
MCI_SetCommandTable
(
LockResource
(
hMem
)
,
type
);
}
else
{
WARN
(
"Couldn't load resource.
\n
"
);
}
...
...
dlls/winmm/mmsystem.c
View file @
812b4f46
...
...
@@ -53,8 +53,6 @@ static LRESULT DRIVER_CloseDriver16(HDRVR16, LPARAM, LPARAM);
static
LRESULT
DRIVER_SendMessage16
(
HDRVR16
,
UINT
,
LPARAM
,
LPARAM
);
static
LRESULT
MMIO_Callback16
(
SEGPTR
,
LPMMIOINFO
,
UINT
,
LPARAM
,
LPARAM
);
#define HMODULE_32(h16) ((HMODULE)(ULONG_PTR)(h16))
#define HINSTANCE_32(h16) ((HMODULE)(ULONG_PTR)(h16))
/* ###################################################
* # LIBRARY #
...
...
@@ -130,8 +128,20 @@ BOOL16 WINAPI PlaySound16(LPCSTR pszSound, HMODULE16 hmod, DWORD fdwSound)
BOOL16
retv
;
DWORD
lc
;
if
((
fdwSound
&
SND_RESOURCE
)
==
SND_RESOURCE
)
{
HGLOBAL16
handle
;
HRSRC16
res
;
if
(
!
(
res
=
FindResource16
(
hmod
,
pszSound
,
"WAVE"
)))
return
FALSE
;
if
(
!
(
handle
=
LoadResource16
(
hmod
,
res
)))
return
FALSE
;
pszSound
=
LockResource16
(
handle
);
fdwSound
=
(
fdwSound
&
~
SND_RESOURCE
)
|
SND_MEMORY
;
/* FIXME: FreeResource16 */
}
ReleaseThunkLock
(
&
lc
);
retv
=
PlaySoundA
(
pszSound
,
HMODULE_32
(
hmod
)
,
fdwSound
);
retv
=
PlaySoundA
(
pszSound
,
0
,
fdwSound
);
RestoreThunkLock
(
lc
);
return
retv
;
...
...
@@ -2550,12 +2560,15 @@ DWORD WINAPI mciSendString16(LPCSTR lpstrCommand, LPSTR lpstrRet,
*/
UINT16
WINAPI
mciLoadCommandResource16
(
HINSTANCE16
hInst
,
LPCSTR
resname
,
UINT16
type
)
{
UNICODE_STRING
ptr
;
UINT
ret
;
RtlCreateUnicodeStringFromAsciiz
(
&
ptr
,
resname
);
ret
=
mciLoadCommandResource
(
HINSTANCE_32
(
hInst
),
ptr
.
Buffer
,
type
);
RtlFreeUnicodeString
(
&
ptr
);
return
ret
;
HRSRC16
res
;
HGLOBAL16
handle
;
void
*
ptr
;
if
(
!
(
res
=
FindResource16
(
hInst
,
resname
,
RT_RCDATAA
)))
return
MCI_NO_COMMAND_TABLE
;
if
(
!
(
handle
=
LoadResource16
(
hInst
,
res
)))
return
MCI_NO_COMMAND_TABLE
;
ptr
=
LockResource16
(
handle
);
return
MCI_SetCommandTable
(
ptr
,
type
);
/* FIXME: FreeResource */
}
/**************************************************************************
...
...
dlls/winmm/winemm.h
View file @
812b4f46
...
...
@@ -258,6 +258,7 @@ LRESULT MCI_CleanUp(LRESULT dwRet, UINT wMsg, DWORD dwParam2);
DWORD
MCI_SendCommand
(
UINT
wDevID
,
UINT16
wMsg
,
DWORD
dwParam1
,
DWORD
dwParam2
,
BOOL
bFrom32
);
DWORD
MCI_SendCommandFrom32
(
UINT
wDevID
,
UINT16
wMsg
,
DWORD
dwParam1
,
DWORD
dwParam2
);
DWORD
MCI_SendCommandFrom16
(
UINT
wDevID
,
UINT16
wMsg
,
DWORD
dwParam1
,
DWORD
dwParam2
);
UINT
MCI_SetCommandTable
(
void
*
table
,
UINT
uDevType
);
BOOL
WINMM_CheckForMMSystem
(
void
);
...
...
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