Move usage of 16 bit specific functions (MapSL) in 16 bit code only.

diff --git a/dlls/winmm/mmsystem.c b/dlls/winmm/mmsystem.c
index 2b29519..8dcbdfb 100644
--- a/dlls/winmm/mmsystem.c
+++ b/dlls/winmm/mmsystem.c
@@ -53,6 +53,12 @@
 static LRESULT          DRIVER_SendMessage16(HDRVR16, UINT, LPARAM, LPARAM);
 static LRESULT          MMIO_Callback16(SEGPTR, LPMMIOINFO, UINT, LPARAM, LPARAM);
 
+static void MMSYSTEM_Yield(void)
+{
+    DWORD count;
+    ReleaseThunkLock(&count);
+    RestoreThunkLock(count);
+}
 
 /* ###################################################
  * #                  LIBRARY                        #
@@ -87,6 +93,7 @@
         pFnCloseDriver16  = DRIVER_CloseDriver16;
         pFnSendMessage16  = DRIVER_SendMessage16;
         pFnMmioCallback16 = MMIO_Callback16;
+        pFnYield16        = MMSYSTEM_Yield;
         MMDRV_Init16();
 	break;
     case DLL_PROCESS_DETACH:
diff --git a/dlls/winmm/time.c b/dlls/winmm/time.c
index d472c2a..e599bf8 100644
--- a/dlls/winmm/time.c
+++ b/dlls/winmm/time.c
@@ -348,6 +348,8 @@
     return 0;
 }
 
+void (*pFnYield16)(void) /* = NULL */;
+
 /**************************************************************************
  * 				timeGetTime    [MMSYSTEM.607]
  * 				timeGetTime    [WINMM.@]
@@ -357,9 +359,7 @@
     /* FIXME: releasing the win16 lock here is a temporary hack (I hope)
      * that lets mciavi.drv run correctly
      */
-    DWORD count;
-    ReleaseThunkLock(&count);
-    RestoreThunkLock(count);
+    if (pFnYield16) pFnYield16();
     TIME_MMTimeStart();
     return WINMM_IData->mmSysTimeMS;
 }
diff --git a/dlls/winmm/winemm.h b/dlls/winmm/winemm.h
index 5045c6a..7a427a6 100644
--- a/dlls/winmm/winemm.h
+++ b/dlls/winmm/winemm.h
@@ -305,7 +305,7 @@
 extern  LRESULT         (*pFnCallMMDrvFunc16)(DWORD /* in fact FARPROC16 */,WORD,WORD,LONG,LONG,LONG);
 extern  unsigned        (*pFnLoadMMDrvFunc16)(LPCSTR,LPWINE_DRIVER, LPWINE_MM_DRIVER);
 extern  LRESULT         (*pFnMmioCallback16)(DWORD,LPMMIOINFO,UINT,LPARAM,LPARAM);
-
+extern  void            (*pFnYield16)(void);
 /* GetDriverFlags() returned bits is not documented (nor the call itself)
  * Here are Wine only definitions of the bits
  */