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
795b17e0
Commit
795b17e0
authored
Apr 27, 2005
by
Mike McCormack
Committed by
Alexandre Julliard
Apr 27, 2005
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Make WINMM_IData statically allocated.
parent
4ed37e03
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
81 additions
and
87 deletions
+81
-87
mci.c
dlls/winmm/mci.c
+30
-30
mmio.c
dlls/winmm/mmio.c
+10
-10
mmsystem.c
dlls/winmm/mmsystem.c
+2
-2
playsound.c
dlls/winmm/playsound.c
+17
-17
time.c
dlls/winmm/time.c
+5
-5
winemm.h
dlls/winmm/winemm.h
+1
-1
winmm.c
dlls/winmm/winmm.c
+16
-22
No files found.
dlls/winmm/mci.c
View file @
795b17e0
...
...
@@ -104,12 +104,12 @@ LPWINE_MCIDRIVER MCI_GetDriver(UINT16 wDevID)
{
LPWINE_MCIDRIVER
wmd
=
0
;
EnterCriticalSection
(
&
WINMM_IData
->
cs
);
for
(
wmd
=
WINMM_IData
->
lpMciDrvs
;
wmd
;
wmd
=
wmd
->
lpNext
)
{
EnterCriticalSection
(
&
WINMM_IData
.
cs
);
for
(
wmd
=
WINMM_IData
.
lpMciDrvs
;
wmd
;
wmd
=
wmd
->
lpNext
)
{
if
(
wmd
->
wDeviceID
==
wDevID
)
break
;
}
LeaveCriticalSection
(
&
WINMM_IData
->
cs
);
LeaveCriticalSection
(
&
WINMM_IData
.
cs
);
return
wmd
;
}
...
...
@@ -127,8 +127,8 @@ UINT MCI_GetDriverFromString(LPCWSTR lpstrName)
if
(
!
strcmpiW
(
lpstrName
,
wszAll
))
return
MCI_ALL_DEVICE_ID
;
EnterCriticalSection
(
&
WINMM_IData
->
cs
);
for
(
wmd
=
WINMM_IData
->
lpMciDrvs
;
wmd
;
wmd
=
wmd
->
lpNext
)
{
EnterCriticalSection
(
&
WINMM_IData
.
cs
);
for
(
wmd
=
WINMM_IData
.
lpMciDrvs
;
wmd
;
wmd
=
wmd
->
lpNext
)
{
if
(
wmd
->
lpstrElementName
&&
strcmpW
(
wmd
->
lpstrElementName
,
lpstrName
)
==
0
)
{
ret
=
wmd
->
wDeviceID
;
break
;
...
...
@@ -142,7 +142,7 @@ UINT MCI_GetDriverFromString(LPCWSTR lpstrName)
break
;
}
}
LeaveCriticalSection
(
&
WINMM_IData
->
cs
);
LeaveCriticalSection
(
&
WINMM_IData
.
cs
);
return
ret
;
}
...
...
@@ -679,7 +679,7 @@ static UINT MCI_GetCommandTable(UINT uDevType)
/* well try to load id */
if
(
uDevType
>=
MCI_DEVTYPE_FIRST
&&
uDevType
<=
MCI_DEVTYPE_LAST
)
{
if
(
LoadStringW
(
WINMM_IData
->
hWinMM32Instance
,
uDevType
,
buf
,
sizeof
(
buf
)
/
sizeof
(
WCHAR
)))
{
if
(
LoadStringW
(
WINMM_IData
.
hWinMM32Instance
,
uDevType
,
buf
,
sizeof
(
buf
)
/
sizeof
(
WCHAR
)))
{
str
=
buf
;
}
}
else
if
(
uDevType
==
0
)
{
...
...
@@ -688,15 +688,15 @@ static UINT MCI_GetCommandTable(UINT uDevType)
}
uTbl
=
MCI_NO_COMMAND_TABLE
;
if
(
str
)
{
HRSRC
hRsrc
=
FindResourceW
(
WINMM_IData
->
hWinMM32Instance
,
str
,
(
LPCWSTR
)
RT_RCDATA
);
HRSRC
hRsrc
=
FindResourceW
(
WINMM_IData
.
hWinMM32Instance
,
str
,
(
LPCWSTR
)
RT_RCDATA
);
HANDLE
hMem
=
0
;
if
(
hRsrc
)
hMem
=
LoadResource
(
WINMM_IData
->
hWinMM32Instance
,
hRsrc
);
if
(
hRsrc
)
hMem
=
LoadResource
(
WINMM_IData
.
hWinMM32Instance
,
hRsrc
);
if
(
hMem
)
{
uTbl
=
MCI_SetCommandTable
(
LockResource
(
hMem
),
uDevType
);
}
else
{
WARN
(
"No command table found in resource %p[%s]
\n
"
,
WINMM_IData
->
hWinMM32Instance
,
debugstr_w
(
str
));
WINMM_IData
.
hWinMM32Instance
,
debugstr_w
(
str
));
}
}
TRACE
(
"=> %d
\n
"
,
uTbl
);
...
...
@@ -799,14 +799,14 @@ static BOOL MCI_UnLoadMciDriver(LPWINE_MCIDRIVER wmd)
if
(
wmd
->
dwPrivate
!=
0
)
WARN
(
"Unloading mci driver with non nul dwPrivate field
\n
"
);
EnterCriticalSection
(
&
WINMM_IData
->
cs
);
for
(
tmp
=
&
WINMM_IData
->
lpMciDrvs
;
*
tmp
;
tmp
=
&
(
*
tmp
)
->
lpNext
)
{
EnterCriticalSection
(
&
WINMM_IData
.
cs
);
for
(
tmp
=
&
WINMM_IData
.
lpMciDrvs
;
*
tmp
;
tmp
=
&
(
*
tmp
)
->
lpNext
)
{
if
(
*
tmp
==
wmd
)
{
*
tmp
=
wmd
->
lpNext
;
break
;
}
}
LeaveCriticalSection
(
&
WINMM_IData
->
cs
);
LeaveCriticalSection
(
&
WINMM_IData
.
cs
);
HeapFree
(
GetProcessHeap
(),
0
,
wmd
->
lpstrDeviceType
);
HeapFree
(
GetProcessHeap
(),
0
,
wmd
->
lpstrAlias
);
...
...
@@ -871,12 +871,12 @@ static DWORD MCI_LoadMciDriver(LPCWSTR _strDevTyp, LPWINE_MCIDRIVER* lpwmd)
wmd
->
dwYieldData
=
VK_CANCEL
;
wmd
->
CreatorThread
=
GetCurrentThreadId
();
EnterCriticalSection
(
&
WINMM_IData
->
cs
);
EnterCriticalSection
(
&
WINMM_IData
.
cs
);
/* wmd must be inserted in list before sending opening the driver, coz' it
* may want to lookup at wDevID
*/
wmd
->
lpNext
=
WINMM_IData
->
lpMciDrvs
;
WINMM_IData
->
lpMciDrvs
=
wmd
;
wmd
->
lpNext
=
WINMM_IData
.
lpMciDrvs
;
WINMM_IData
.
lpMciDrvs
=
wmd
;
for
(
modp
.
wDeviceID
=
MCI_MAGIC
;
MCI_GetDriver
(
modp
.
wDeviceID
)
!=
0
;
...
...
@@ -884,7 +884,7 @@ static DWORD MCI_LoadMciDriver(LPCWSTR _strDevTyp, LPWINE_MCIDRIVER* lpwmd)
wmd
->
wDeviceID
=
modp
.
wDeviceID
;
LeaveCriticalSection
(
&
WINMM_IData
->
cs
);
LeaveCriticalSection
(
&
WINMM_IData
.
cs
);
TRACE
(
"wDevID=%04X
\n
"
,
modp
.
wDeviceID
);
...
...
@@ -1195,7 +1195,7 @@ static DWORD MCI_HandleReturnValues(DWORD dwRet, LPWINE_MCIDRIVER wmd, DWORD ret
case
MCI_RESOURCE_RETURNED
:
/* return string which ID is HIWORD(data[1]),
* string is loaded from mmsystem.dll */
LoadStringW
(
WINMM_IData
->
hWinMM32Instance
,
HIWORD
(
data
[
1
]),
LoadStringW
(
WINMM_IData
.
hWinMM32Instance
,
HIWORD
(
data
[
1
]),
lpstrRet
,
uRetLen
);
break
;
case
MCI_RESOURCE_RETURNED
|
MCI_RESOURCE_DRIVER
:
...
...
@@ -1647,7 +1647,7 @@ static DWORD MCI_Open(DWORD dwParam, LPMCI_OPEN_PARMSW lpParms)
if
(
uDevType
<
MCI_DEVTYPE_FIRST
||
uDevType
>
MCI_DEVTYPE_LAST
||
!
LoadStringW
(
WINMM_IData
->
hWinMM32Instance
,
uDevType
,
!
LoadStringW
(
WINMM_IData
.
hWinMM32Instance
,
uDevType
,
strDevTyp
,
sizeof
(
strDevTyp
)
/
sizeof
(
WCHAR
)))
{
dwRet
=
MCIERR_BAD_INTEGER
;
goto
errCleanUp
;
...
...
@@ -1762,17 +1762,17 @@ static DWORD MCI_Close(UINT16 wDevID, DWORD dwParam, LPMCI_GENERIC_PARMS lpParms
if
(
wDevID
==
MCI_ALL_DEVICE_ID
)
{
LPWINE_MCIDRIVER
next
;
EnterCriticalSection
(
&
WINMM_IData
->
cs
);
EnterCriticalSection
(
&
WINMM_IData
.
cs
);
/* FIXME: shall I notify once after all is done, or for
* each of the open drivers ? if the latest, which notif
* to return when only one fails ?
*/
for
(
wmd
=
WINMM_IData
->
lpMciDrvs
;
wmd
;
)
{
for
(
wmd
=
WINMM_IData
.
lpMciDrvs
;
wmd
;
)
{
next
=
wmd
->
lpNext
;
MCI_Close
(
wmd
->
wDeviceID
,
dwParam
,
lpParms
);
wmd
=
next
;
}
LeaveCriticalSection
(
&
WINMM_IData
->
cs
);
LeaveCriticalSection
(
&
WINMM_IData
.
cs
);
return
0
;
}
...
...
@@ -1832,11 +1832,11 @@ static DWORD MCI_SysInfo(UINT uDevID, DWORD dwFlags, LPMCI_SYSINFO_PARMSW lpParm
if
(
lpParms
->
wDeviceType
<
MCI_DEVTYPE_FIRST
||
lpParms
->
wDeviceType
>
MCI_DEVTYPE_LAST
)
{
if
(
dwFlags
&
MCI_SYSINFO_OPEN
)
{
TRACE
(
"MCI_SYSINFO_QUANTITY: # of open MCI drivers
\n
"
);
EnterCriticalSection
(
&
WINMM_IData
->
cs
);
for
(
wmd
=
WINMM_IData
->
lpMciDrvs
;
wmd
;
wmd
=
wmd
->
lpNext
)
{
EnterCriticalSection
(
&
WINMM_IData
.
cs
);
for
(
wmd
=
WINMM_IData
.
lpMciDrvs
;
wmd
;
wmd
=
wmd
->
lpNext
)
{
cnt
++
;
}
LeaveCriticalSection
(
&
WINMM_IData
->
cs
);
LeaveCriticalSection
(
&
WINMM_IData
.
cs
);
}
else
{
TRACE
(
"MCI_SYSINFO_QUANTITY: # of installed MCI drivers
\n
"
);
if
(
RegOpenKeyExW
(
HKEY_LOCAL_MACHINE
,
wszHklmMci
,
...
...
@@ -1850,11 +1850,11 @@ static DWORD MCI_SysInfo(UINT uDevID, DWORD dwFlags, LPMCI_SYSINFO_PARMSW lpParm
}
else
{
if
(
dwFlags
&
MCI_SYSINFO_OPEN
)
{
TRACE
(
"MCI_SYSINFO_QUANTITY: # of open MCI drivers of type %u
\n
"
,
lpParms
->
wDeviceType
);
EnterCriticalSection
(
&
WINMM_IData
->
cs
);
for
(
wmd
=
WINMM_IData
->
lpMciDrvs
;
wmd
;
wmd
=
wmd
->
lpNext
)
{
EnterCriticalSection
(
&
WINMM_IData
.
cs
);
for
(
wmd
=
WINMM_IData
.
lpMciDrvs
;
wmd
;
wmd
=
wmd
->
lpNext
)
{
if
(
wmd
->
wType
==
lpParms
->
wDeviceType
)
cnt
++
;
}
LeaveCriticalSection
(
&
WINMM_IData
->
cs
);
LeaveCriticalSection
(
&
WINMM_IData
.
cs
);
}
else
{
TRACE
(
"MCI_SYSINFO_QUANTITY: # of installed MCI drivers of type %u
\n
"
,
lpParms
->
wDeviceType
);
FIXME
(
"Don't know how to get # of MCI devices of a given type
\n
"
);
...
...
@@ -2135,7 +2135,7 @@ BOOL WINAPI mciGetErrorStringW(MCIERROR wError, LPWSTR lpstrBuffer, UINT uLength
if
(
lpstrBuffer
!=
NULL
&&
uLength
>
0
&&
wError
>=
MCIERR_BASE
&&
wError
<=
MCIERR_CUSTOM_DRIVER_BASE
)
{
if
(
LoadStringW
(
WINMM_IData
->
hWinMM32Instance
,
if
(
LoadStringW
(
WINMM_IData
.
hWinMM32Instance
,
wError
,
lpstrBuffer
,
uLength
)
>
0
)
{
ret
=
TRUE
;
}
...
...
@@ -2153,7 +2153,7 @@ BOOL WINAPI mciGetErrorStringA(MCIERROR dwError, LPSTR lpstrBuffer, UINT uLength
if
(
lpstrBuffer
!=
NULL
&&
uLength
>
0
&&
dwError
>=
MCIERR_BASE
&&
dwError
<=
MCIERR_CUSTOM_DRIVER_BASE
)
{
if
(
LoadStringA
(
WINMM_IData
->
hWinMM32Instance
,
if
(
LoadStringA
(
WINMM_IData
.
hWinMM32Instance
,
dwError
,
lpstrBuffer
,
uLength
)
>
0
)
{
ret
=
TRUE
;
}
...
...
dlls/winmm/mmio.c
View file @
795b17e0
...
...
@@ -440,12 +440,12 @@ LPWINE_MMIO MMIO_Get(HMMIO h)
{
LPWINE_MMIO
wm
=
NULL
;
EnterCriticalSection
(
&
WINMM_IData
->
cs
);
for
(
wm
=
WINMM_IData
->
lpMMIO
;
wm
;
wm
=
wm
->
lpNext
)
{
EnterCriticalSection
(
&
WINMM_IData
.
cs
);
for
(
wm
=
WINMM_IData
.
lpMMIO
;
wm
;
wm
=
wm
->
lpNext
)
{
if
(
wm
->
info
.
hmmio
==
h
)
break
;
}
LeaveCriticalSection
(
&
WINMM_IData
->
cs
);
LeaveCriticalSection
(
&
WINMM_IData
.
cs
);
return
wm
;
}
...
...
@@ -461,13 +461,13 @@ static LPWINE_MMIO MMIO_Create(void)
wm
=
HeapAlloc
(
GetProcessHeap
(),
HEAP_ZERO_MEMORY
,
sizeof
(
WINE_MMIO
));
if
(
wm
)
{
EnterCriticalSection
(
&
WINMM_IData
->
cs
);
EnterCriticalSection
(
&
WINMM_IData
.
cs
);
/* lookup next unallocated WORD handle, with a non NULL value */
while
(
++
MMIO_counter
==
0
||
MMIO_Get
((
HMMIO
)(
ULONG_PTR
)
MMIO_counter
));
wm
->
info
.
hmmio
=
(
HMMIO
)(
ULONG_PTR
)
MMIO_counter
;
wm
->
lpNext
=
WINMM_IData
->
lpMMIO
;
WINMM_IData
->
lpMMIO
=
wm
;
LeaveCriticalSection
(
&
WINMM_IData
->
cs
);
wm
->
lpNext
=
WINMM_IData
.
lpMMIO
;
WINMM_IData
.
lpMMIO
=
wm
;
LeaveCriticalSection
(
&
WINMM_IData
.
cs
);
}
return
wm
;
}
...
...
@@ -481,9 +481,9 @@ static BOOL MMIO_Destroy(LPWINE_MMIO wm)
{
LPWINE_MMIO
*
m
;
EnterCriticalSection
(
&
WINMM_IData
->
cs
);
EnterCriticalSection
(
&
WINMM_IData
.
cs
);
/* search for the matching one... */
m
=
&
(
WINMM_IData
->
lpMMIO
);
m
=
&
(
WINMM_IData
.
lpMMIO
);
while
(
*
m
&&
*
m
!=
wm
)
m
=
&
(
*
m
)
->
lpNext
;
/* ...and destroy */
if
(
*
m
)
{
...
...
@@ -491,7 +491,7 @@ static BOOL MMIO_Destroy(LPWINE_MMIO wm)
HeapFree
(
GetProcessHeap
(),
0
,
wm
);
wm
=
NULL
;
}
LeaveCriticalSection
(
&
WINMM_IData
->
cs
);
LeaveCriticalSection
(
&
WINMM_IData
.
cs
);
return
wm
?
FALSE
:
TRUE
;
}
...
...
dlls/winmm/mmsystem.c
View file @
795b17e0
...
...
@@ -79,7 +79,7 @@ BOOL WINAPI MMSYSTEM_LibMain(DWORD fdwReason, HINSTANCE hinstDLL, WORD ds,
ERR
(
"Could not load sibling WinMM.dll
\n
"
);
return
FALSE
;
}
WINMM_IData
->
hWinMM16Instance
=
hinstDLL
;
WINMM_IData
.
hWinMM16Instance
=
hinstDLL
;
/* hook in our 16 bit function pointers */
pFnGetMMThread16
=
WINMM_GetmmThread
;
pFnOpenDriver16
=
DRIVER_OpenDriver16
;
...
...
@@ -91,7 +91,7 @@ BOOL WINAPI MMSYSTEM_LibMain(DWORD fdwReason, HINSTANCE hinstDLL, WORD ds,
MMDRV_Init16
();
break
;
case
DLL_PROCESS_DETACH
:
WINMM_IData
->
hWinMM16Instance
=
0
;
WINMM_IData
.
hWinMM16Instance
=
0
;
pFnGetMMThread16
=
NULL
;
pFnOpenDriver16
=
NULL
;
pFnCloseDriver16
=
NULL
;
...
...
dlls/winmm/playsound.c
View file @
795b17e0
...
...
@@ -194,11 +194,11 @@ static void PlaySound_Free(WINE_PLAYSOUND* wps)
{
WINE_PLAYSOUND
**
p
;
EnterCriticalSection
(
&
WINMM_IData
->
cs
);
for
(
p
=
&
WINMM_IData
->
lpPlaySound
;
*
p
&&
*
p
!=
wps
;
p
=
&
((
*
p
)
->
lpNext
));
EnterCriticalSection
(
&
WINMM_IData
.
cs
);
for
(
p
=
&
WINMM_IData
.
lpPlaySound
;
*
p
&&
*
p
!=
wps
;
p
=
&
((
*
p
)
->
lpNext
));
if
(
*
p
)
*
p
=
(
*
p
)
->
lpNext
;
if
(
WINMM_IData
->
lpPlaySound
==
NULL
)
SetEvent
(
WINMM_IData
->
psLastEvent
);
LeaveCriticalSection
(
&
WINMM_IData
->
cs
);
if
(
WINMM_IData
.
lpPlaySound
==
NULL
)
SetEvent
(
WINMM_IData
.
psLastEvent
);
LeaveCriticalSection
(
&
WINMM_IData
.
cs
);
if
(
wps
->
bAlloc
)
HeapFree
(
GetProcessHeap
(),
0
,
(
void
*
)
wps
->
pszSound
);
if
(
wps
->
hThread
)
CloseHandle
(
wps
->
hThread
);
HeapFree
(
GetProcessHeap
(),
0
,
wps
);
...
...
@@ -382,7 +382,7 @@ static DWORD WINAPI proc_PlaySound(LPVOID arg)
mmioSeek
(
hmmio
,
mmckInfo
.
dwDataOffset
,
SEEK_SET
);
while
(
left
)
{
if
(
WaitForSingleObject
(
WINMM_IData
->
psStopEvent
,
0
)
==
WAIT_OBJECT_0
)
if
(
WaitForSingleObject
(
WINMM_IData
.
psStopEvent
,
0
)
==
WAIT_OBJECT_0
)
{
wps
->
bLoop
=
FALSE
;
break
;
...
...
@@ -430,7 +430,7 @@ static BOOL MULTIMEDIA_PlaySound(const void* pszSound, HMODULE hmod, DWORD fdwSo
/* FIXME? I see no difference between SND_NOWAIT and SND_NOSTOP !
* there could be one if several sounds can be played at once...
*/
if
((
fdwSound
&
(
SND_NOWAIT
|
SND_NOSTOP
))
&&
WINMM_IData
->
lpPlaySound
!=
NULL
)
if
((
fdwSound
&
(
SND_NOWAIT
|
SND_NOSTOP
))
&&
WINMM_IData
.
lpPlaySound
!=
NULL
)
return
FALSE
;
/* alloc internal structure, if we need to play something */
...
...
@@ -440,27 +440,27 @@ static BOOL MULTIMEDIA_PlaySound(const void* pszSound, HMODULE hmod, DWORD fdwSo
return
FALSE
;
}
EnterCriticalSection
(
&
WINMM_IData
->
cs
);
EnterCriticalSection
(
&
WINMM_IData
.
cs
);
/* since several threads can enter PlaySound in parallel, we're not
* sure, at this point, that another thread didn't start a new playsound
*/
while
(
WINMM_IData
->
lpPlaySound
!=
NULL
)
while
(
WINMM_IData
.
lpPlaySound
!=
NULL
)
{
ResetEvent
(
WINMM_IData
->
psLastEvent
);
ResetEvent
(
WINMM_IData
.
psLastEvent
);
/* FIXME: doc says we have to stop all instances of pszSound if it's non
* NULL... as of today, we stop all playing instances */
SetEvent
(
WINMM_IData
->
psStopEvent
);
SetEvent
(
WINMM_IData
.
psStopEvent
);
LeaveCriticalSection
(
&
WINMM_IData
->
cs
);
WaitForSingleObject
(
WINMM_IData
->
psLastEvent
,
INFINITE
);
EnterCriticalSection
(
&
WINMM_IData
->
cs
);
LeaveCriticalSection
(
&
WINMM_IData
.
cs
);
WaitForSingleObject
(
WINMM_IData
.
psLastEvent
,
INFINITE
);
EnterCriticalSection
(
&
WINMM_IData
.
cs
);
ResetEvent
(
WINMM_IData
->
psStopEvent
);
ResetEvent
(
WINMM_IData
.
psStopEvent
);
}
if
(
wps
)
wps
->
lpNext
=
WINMM_IData
->
lpPlaySound
;
WINMM_IData
->
lpPlaySound
=
wps
;
LeaveCriticalSection
(
&
WINMM_IData
->
cs
);
if
(
wps
)
wps
->
lpNext
=
WINMM_IData
.
lpPlaySound
;
WINMM_IData
.
lpPlaySound
=
wps
;
LeaveCriticalSection
(
&
WINMM_IData
.
cs
);
if
(
!
pszSound
||
(
fdwSound
&
SND_PURGE
))
return
TRUE
;
...
...
dlls/winmm/time.c
View file @
795b17e0
...
...
@@ -264,7 +264,7 @@ void TIME_MMTimeStart(void)
TIME_TimersList
=
NULL
;
TIME_hWakeEvent
=
CreateEventW
(
NULL
,
FALSE
,
FALSE
,
NULL
);
TIME_TimeToDie
=
FALSE
;
TIME_hMMTimer
=
CreateThread
(
NULL
,
0
,
TIME_MMSysTimeThread
,
WINMM_IData
,
0
,
NULL
);
TIME_hMMTimer
=
CreateThread
(
NULL
,
0
,
TIME_MMSysTimeThread
,
&
WINMM_IData
,
0
,
NULL
);
SetThreadPriority
(
TIME_hMMTimer
,
THREAD_PRIORITY_TIME_CRITICAL
);
}
}
...
...
@@ -335,7 +335,7 @@ WORD TIME_SetEventInternal(UINT wDelay, UINT wResol,
lpNewTimer
->
dwUser
=
dwUser
;
lpNewTimer
->
wFlags
=
wFlags
;
EnterCriticalSection
(
&
WINMM_IData
->
cs
);
EnterCriticalSection
(
&
WINMM_IData
.
cs
);
if
((
wFlags
&
TIME_KILL_SYNCHRONOUS
)
&&
!
TIME_hKillEvent
)
TIME_hKillEvent
=
CreateEventW
(
NULL
,
TRUE
,
TRUE
,
NULL
);
...
...
@@ -348,7 +348,7 @@ WORD TIME_SetEventInternal(UINT wDelay, UINT wResol,
TIME_TimersList
=
lpNewTimer
;
lpNewTimer
->
wTimerID
=
wNewID
+
1
;
LeaveCriticalSection
(
&
WINMM_IData
->
cs
);
LeaveCriticalSection
(
&
WINMM_IData
.
cs
);
/* Wake the service thread in case there is work to be done */
SetEvent
(
TIME_hWakeEvent
);
...
...
@@ -379,7 +379,7 @@ MMRESULT WINAPI timeKillEvent(UINT wID)
LPWINE_TIMERENTRY
lpSelf
=
NULL
,
*
lpTimer
;
TRACE
(
"(%u)
\n
"
,
wID
);
EnterCriticalSection
(
&
WINMM_IData
->
cs
);
EnterCriticalSection
(
&
WINMM_IData
.
cs
);
/* remove WINE_TIMERENTRY from list */
for
(
lpTimer
=
&
TIME_TimersList
;
*
lpTimer
;
lpTimer
=
&
(
*
lpTimer
)
->
lpNext
)
{
if
(
wID
==
(
*
lpTimer
)
->
wTimerID
)
{
...
...
@@ -389,7 +389,7 @@ MMRESULT WINAPI timeKillEvent(UINT wID)
break
;
}
}
LeaveCriticalSection
(
&
WINMM_IData
->
cs
);
LeaveCriticalSection
(
&
WINMM_IData
.
cs
);
if
(
!
lpSelf
)
{
...
...
dlls/winmm/winemm.h
View file @
795b17e0
...
...
@@ -291,7 +291,7 @@ void TIME_MMTimeStart(void);
void
TIME_MMTimeStop
(
void
);
/* Global variables */
extern
LP
WINE_MM_IDATA
WINMM_IData
;
extern
WINE_MM_IDATA
WINMM_IData
;
/* pointers to 16 bit functions (if sibling MMSYSTEM.DLL is loaded
* NULL otherwise
...
...
dlls/winmm/winmm.c
View file @
795b17e0
...
...
@@ -65,23 +65,21 @@ void (WINAPI *pFnRestoreThunkLock)(DWORD);
* G L O B A L S E T T I N G S
* ========================================================================*/
LPWINE_MM_IDATA
WINMM_IData
/* = NULL */
;
WINE_MM_IDATA
WINMM_IData
;
/**************************************************************************
* WINMM_CreateIData [internal]
*/
static
BOOL
WINMM_CreateIData
(
HINSTANCE
hInstDLL
)
{
WINMM_IData
=
HeapAlloc
(
GetProcessHeap
(),
HEAP_ZERO_MEMORY
,
sizeof
(
WINE_MM_IDATA
)
);
memset
(
&
WINMM_IData
,
0
,
sizeof
WINMM_IData
);
if
(
!
WINMM_IData
)
return
FALSE
;
WINMM_IData
->
hWinMM32Instance
=
hInstDLL
;
InitializeCriticalSection
(
&
WINMM_IData
->
cs
);
WINMM_IData
->
cs
.
DebugInfo
->
Spare
[
1
]
=
(
DWORD
)
"WINMM_IData"
;
WINMM_IData
->
psStopEvent
=
CreateEventW
(
NULL
,
TRUE
,
FALSE
,
NULL
);
WINMM_IData
->
psLastEvent
=
CreateEventW
(
NULL
,
TRUE
,
FALSE
,
NULL
);
TRACE
(
"Created IData (%p)
\n
"
,
WINMM_IData
);
WINMM_IData
.
hWinMM32Instance
=
hInstDLL
;
InitializeCriticalSection
(
&
WINMM_IData
.
cs
);
WINMM_IData
.
cs
.
DebugInfo
->
Spare
[
1
]
=
(
DWORD
)
"WINMM_IData"
;
WINMM_IData
.
psStopEvent
=
CreateEventW
(
NULL
,
TRUE
,
FALSE
,
NULL
);
WINMM_IData
.
psLastEvent
=
CreateEventW
(
NULL
,
TRUE
,
FALSE
,
NULL
);
TRACE
(
"Initialized IData (%p)
\n
"
,
&
WINMM_IData
);
return
TRUE
;
}
...
...
@@ -90,17 +88,13 @@ static BOOL WINMM_CreateIData(HINSTANCE hInstDLL)
*/
static
void
WINMM_DeleteIData
(
void
)
{
if
(
WINMM_IData
)
{
TIME_MMTimeStop
();
TIME_MMTimeStop
();
/* FIXME: should also free content and resources allocated
* inside WINMM_IData */
CloseHandle
(
WINMM_IData
->
psStopEvent
);
CloseHandle
(
WINMM_IData
->
psLastEvent
);
DeleteCriticalSection
(
&
WINMM_IData
->
cs
);
HeapFree
(
GetProcessHeap
(),
0
,
WINMM_IData
);
WINMM_IData
=
NULL
;
}
/* FIXME: should also free content and resources allocated
* inside WINMM_IData */
CloseHandle
(
WINMM_IData
.
psStopEvent
);
CloseHandle
(
WINMM_IData
.
psLastEvent
);
DeleteCriticalSection
(
&
WINMM_IData
.
cs
);
}
/******************************************************************
...
...
@@ -863,7 +857,7 @@ UINT WINAPI midiOutGetErrorTextW(UINT uError, LPWSTR lpText, UINT uSize)
* a warning for the test was always true */
(
/*uError >= MMSYSERR_BASE && */
uError
<=
MMSYSERR_LASTERROR
)
||
(
uError
>=
MIDIERR_BASE
&&
uError
<=
MIDIERR_LASTERROR
))
{
if
(
LoadStringW
(
WINMM_IData
->
hWinMM32Instance
,
if
(
LoadStringW
(
WINMM_IData
.
hWinMM32Instance
,
uError
,
lpText
,
uSize
)
>
0
)
{
ret
=
MMSYSERR_NOERROR
;
}
...
...
@@ -2173,7 +2167,7 @@ UINT WINAPI waveOutGetErrorTextW(UINT uError, LPWSTR lpText, UINT uSize)
* a warning for the test was always true */
(
/*uError >= MMSYSERR_BASE && */
uError
<=
MMSYSERR_LASTERROR
)
||
(
uError
>=
WAVERR_BASE
&&
uError
<=
WAVERR_LASTERROR
))
{
if
(
LoadStringW
(
WINMM_IData
->
hWinMM32Instance
,
if
(
LoadStringW
(
WINMM_IData
.
hWinMM32Instance
,
uError
,
lpText
,
uSize
)
>
0
)
{
ret
=
MMSYSERR_NOERROR
;
}
...
...
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