Francois Gouget : system.drv16: Remove the 32-bit timer callback support.

Alexandre Julliard julliard at winehq.org
Thu Oct 8 08:57:14 CDT 2009


Module: wine
Branch: master
Commit: 4f8b800f69dc5b768f468feb9cfeecd7d1162fa7
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=4f8b800f69dc5b768f468feb9cfeecd7d1162fa7

Author: Francois Gouget <fgouget at free.fr>
Date:   Thu Oct  8 11:19:04 2009 +0200

system.drv16: Remove the 32-bit timer callback support.

Also merge CreateSystemTimer() with WIN16_CreateSystemTimer() and
rename it to CreateSystemTimer16() for consistency.

---

 dlls/system.drv16/system.c          |   56 ++++++++++++----------------------
 dlls/system.drv16/system.drv16.spec |    2 +-
 include/wine/winuser16.h            |    5 ---
 3 files changed, 21 insertions(+), 42 deletions(-)

diff --git a/dlls/system.drv16/system.c b/dlls/system.drv16/system.c
index 46ab04e..7d8433a 100644
--- a/dlls/system.drv16/system.c
+++ b/dlls/system.drv16/system.c
@@ -34,7 +34,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(system);
 
 typedef struct
 {
-    SYSTEMTIMERPROC callback;  /* NULL if not in use */
     FARPROC16       callback16;
     INT             rate;
     INT             ticks;
@@ -49,6 +48,7 @@ static HANDLE SYS_timer;
 static HANDLE SYS_thread;
 static int SYS_timers_disabled;
 
+
 /***********************************************************************
  *           SYSTEM_TimerTick
  */
@@ -59,11 +59,23 @@ static void CALLBACK SYSTEM_TimerTick( LPVOID arg, DWORD low, DWORD high )
     if (SYS_timers_disabled) return;
     for (i = 0; i < NB_SYS_TIMERS; i++)
     {
-        if (!SYS_Timers[i].callback) continue;
+        if (!SYS_Timers[i].callback16) continue;
         if ((SYS_Timers[i].ticks -= SYS_TIMER_RATE) <= 0)
         {
+            FARPROC16 proc = SYS_Timers[i].callback16;
+            CONTEXT86 context;
+
             SYS_Timers[i].ticks += SYS_Timers[i].rate;
-            SYS_Timers[i].callback( i+1 );
+
+            memset( &context, 0, sizeof(context) );
+            context.SegFs = wine_get_fs();
+            context.SegGs = wine_get_gs();
+            context.SegCs = SELECTOROF( proc );
+            context.Eip   = OFFSETOF( proc );
+            context.Ebp   = OFFSETOF(NtCurrentTeb()->WOW32Reserved) + FIELD_OFFSET(STACK16FRAME, bp);
+            context.Eax   = i + 1;
+
+            WOWCallback16Ex( 0, WCB16_REGS, 0, NULL, (DWORD *)&context );
         }
     }
 }
@@ -150,51 +162,23 @@ DWORD WINAPI InquireSystem16( WORD code, WORD arg )
 /***********************************************************************
  *           CreateSystemTimer   (SYSTEM.2)
  */
-WORD WINAPI CreateSystemTimer( WORD rate, SYSTEMTIMERPROC callback )
+WORD WINAPI CreateSystemTimer16( WORD rate, FARPROC16 proc )
 {
     int i;
     for (i = 0; i < NB_SYS_TIMERS; i++)
-        if (!SYS_Timers[i].callback)  /* Found one */
+        if (!SYS_Timers[i].callback16)  /* Found one */
         {
             SYS_Timers[i].rate = (UINT)rate * 1000;
             if (SYS_Timers[i].rate < SYS_TIMER_RATE)
                 SYS_Timers[i].rate = SYS_TIMER_RATE;
             SYS_Timers[i].ticks = SYS_Timers[i].rate;
-            SYS_Timers[i].callback = callback;
+            SYS_Timers[i].callback16 = proc;
             if (++SYS_NbTimers == 1) SYSTEM_StartTicks();
             return i + 1;  /* 0 means error */
         }
     return 0;
 }
 
-/**********************************************************************/
-
-static void call_timer_proc16( WORD timer )
-{
-    CONTEXT86 context;
-    FARPROC16 proc = SYS_Timers[timer-1].callback16;
-
-    memset( &context, 0, sizeof(context) );
-
-    context.SegFs = wine_get_fs();
-    context.SegGs = wine_get_gs();
-    context.SegCs = SELECTOROF( proc );
-    context.Eip   = OFFSETOF( proc );
-    context.Ebp   = OFFSETOF(NtCurrentTeb()->WOW32Reserved) + FIELD_OFFSET(STACK16FRAME,bp);
-    context.Eax   = timer;
-
-    WOWCallback16Ex( 0, WCB16_REGS, 0, NULL, (DWORD *)&context );
-}
-
-/**********************************************************************/
-
-WORD WINAPI WIN16_CreateSystemTimer( WORD rate, FARPROC16 proc )
-{
-    WORD ret = CreateSystemTimer( rate, call_timer_proc16 );
-    if (ret) SYS_Timers[ret - 1].callback16 = proc;
-    return ret;
-}
-
 
 /***********************************************************************
  *           KillSystemTimer   (SYSTEM.3)
@@ -203,9 +187,9 @@ WORD WINAPI WIN16_CreateSystemTimer( WORD rate, FARPROC16 proc )
  */
 WORD WINAPI SYSTEM_KillSystemTimer( WORD timer )
 {
-    if ( !timer || timer > NB_SYS_TIMERS || !SYS_Timers[timer-1].callback )
+    if ( !timer || timer > NB_SYS_TIMERS || !SYS_Timers[timer-1].callback16 )
         return timer;  /* Error */
-    SYS_Timers[timer-1].callback = NULL;
+    SYS_Timers[timer-1].callback16 = 0;
     if (!--SYS_NbTimers) SYSTEM_StopTicks();
     return 0;
 }
diff --git a/dlls/system.drv16/system.drv16.spec b/dlls/system.drv16/system.drv16.spec
index 85b975d..daa1e81 100644
--- a/dlls/system.drv16/system.drv16.spec
+++ b/dlls/system.drv16/system.drv16.spec
@@ -1,5 +1,5 @@
 1 pascal InquireSystem(word word) InquireSystem16
-2 pascal -ret16 CreateSystemTimer(word segptr) WIN16_CreateSystemTimer
+2 pascal -ret16 CreateSystemTimer(word segptr) CreateSystemTimer16
 3 pascal -ret16 KillSystemTimer(word) SYSTEM_KillSystemTimer
 4 pascal -ret16 EnableSystemTimers() EnableSystemTimers16
 5 pascal -ret16 DisableSystemTimers() DisableSystemTimers16
diff --git a/include/wine/winuser16.h b/include/wine/winuser16.h
index 0a05bdd..a1898d5 100644
--- a/include/wine/winuser16.h
+++ b/include/wine/winuser16.h
@@ -961,12 +961,7 @@ INT16       WINAPI lstrcmpi16(LPCSTR,LPCSTR);
 
 /* undocumented functions */
 
-typedef VOID (*SYSTEMTIMERPROC)(WORD);
-
 void        WINAPI ConvertDialog32To16(LPCVOID,DWORD,LPVOID);
-WORD        WINAPI CreateSystemTimer(WORD,SYSTEMTIMERPROC);
-VOID        WINAPI DisableSystemTimers16(void);
-VOID        WINAPI EnableSystemTimers16(void);
 BOOL16      WINAPI EnumTaskWindows16(HTASK16,WNDENUMPROC16,LPARAM);
 BOOL16      WINAPI GrayString16(HDC16,HBRUSH16,GRAYSTRINGPROC16,LPARAM,
                                 INT16,INT16,INT16,INT16,INT16);




More information about the wine-cvs mailing list