Mercurial > emacs
changeset 14352:a05133ebf2bf
backout 1,.4
author | Geoff Voelker <voelker@cs.washington.edu> |
---|---|
date | Thu, 25 Jan 1996 03:06:44 +0000 |
parents | fb2ce4ebc871 |
children | d0d8d9d73f7f |
files | src/w32xfns.c |
diffstat | 1 files changed, 34 insertions(+), 75 deletions(-) [+] |
line wrap: on
line diff
--- a/src/w32xfns.c Thu Jan 25 03:05:03 1996 +0000 +++ b/src/w32xfns.c Thu Jan 25 03:06:44 1996 +0000 @@ -22,7 +22,6 @@ #include <config.h> #include <stdio.h> #include "lisp.h" -#include "frame.h" #include "blockinput.h" #include "w32term.h" #include "windowsx.h" @@ -30,80 +29,40 @@ #define myalloc(cb) GlobalAllocPtr (GPTR, cb) #define myfree(lp) GlobalFreePtr (lp) -CRITICAL_SECTION critsect[ CRIT_TOTAL ]; +CRITICAL_SECTION critsect; extern HANDLE keyboard_handle; -HANDLE h_input_available = NULL; +HANDLE hEvent = NULL; void init_crit () { - int i; + InitializeCriticalSection (&critsect); + keyboard_handle = hEvent = CreateEvent (NULL, FALSE, FALSE, NULL); +} - for (i = 0; i < CRIT_TOTAL; i++) - InitializeCriticalSection (&critsect[i]); - /* For safety, h_input_available should only be reset by get_next_msg - when the input queue is empty, so make it a manual reset event. */ - keyboard_handle = h_input_available = CreateEvent (NULL, TRUE, FALSE, NULL); +void +enter_crit () +{ + EnterCriticalSection (&critsect); +} + +void +leave_crit () +{ + LeaveCriticalSection (&critsect); } void delete_crit () { - int i; - - for (i = 0; i < CRIT_TOTAL; i++) - DeleteCriticalSection (&critsect[i]); - if (h_input_available) + DeleteCriticalSection (&critsect); + if (hEvent) { - CloseHandle (h_input_available); - h_input_available = NULL; + CloseHandle (hEvent); + hEvent = NULL; } } -/* Get a DC for frame and select palette for drawing; force an update of - all frames if palette's mapping changes. */ -HDC -GetFrameDC (FRAME_PTR f) -{ - HDC hDC; - - enter_crit (CRIT_GDI); - - hDC = GetDC (f->output_data.win32->window_desc); - - if (!NILP (Vwin32_enable_palette)) - f->output_data.win32->h_old_palette = - SelectPalette (hDC, one_win32_display_info.h_palette, FALSE); - else - f->output_data.win32->h_old_palette = NULL; - - if (RealizePalette (hDC)) - { - Lisp_Object frame, framelist; - FOR_EACH_FRAME (framelist, frame) - { - SET_FRAME_GARBAGED (XFRAME (frame)); - } - } - - return hDC; -} - -int -ReleaseFrameDC (FRAME_PTR f, HDC hDC) -{ - int ret; - - if (f->output_data.win32->h_old_palette) - SelectPalette (hDC, f->output_data.win32->h_old_palette, FALSE); - - ret = ReleaseDC (f->output_data.win32->window_desc, hDC); - - leave_crit (CRIT_GDI); - - return ret; -} - typedef struct int_msg { Win32Msg w32msg; @@ -121,15 +80,15 @@ { BOOL bRet = FALSE; - enter_crit (CRIT_MSG); + enter_crit (); /* The while loop takes care of multiple sets */ while (!nQueue && bWait) { - leave_crit (CRIT_MSG); - WaitForSingleObject (h_input_available, INFINITE); - enter_crit (CRIT_MSG); + leave_crit (); + WaitForSingleObject (hEvent, INFINITE); + enter_crit (); } if (nQueue) @@ -148,11 +107,8 @@ bRet = TRUE; } - - if (nQueue == 0) - ResetEvent (h_input_available); - leave_crit (CRIT_MSG); + leave_crit (); return (bRet); } @@ -163,23 +119,26 @@ { int_msg * lpNew = (int_msg *) myalloc (sizeof (int_msg)); - if (!lpNew) - return (FALSE); + if (!lpNew) return (FALSE); bcopy (lpmsg, &(lpNew->w32msg), sizeof (Win32Msg)); lpNew->lpNext = NULL; - enter_crit (CRIT_MSG); + enter_crit (); if (nQueue++) - lpTail->lpNext = lpNew; + { + lpTail->lpNext = lpNew; + } else - lpHead = lpNew; + { + lpHead = lpNew; + SetEvent (hEvent); + } lpTail = lpNew; - SetEvent (h_input_available); - leave_crit (CRIT_MSG); + leave_crit (); return (TRUE); }