X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/6ccb9cab43613632ece4f62d9ee28d694bc1d666..0a2aedfe6d650e825a50f25f972bac20d669f5cb:/src/w32xfns.c diff --git a/src/w32xfns.c b/src/w32xfns.c index 03611e1976..b5b22c9aa5 100644 --- a/src/w32xfns.c +++ b/src/w32xfns.c @@ -1,13 +1,13 @@ /* Functions taken directly from X sources for use with the Microsoft Windows API. - Copyright (C) 1989, 1992-1995, 1999, 2001-2013 Free Software + Copyright (C) 1989, 1992-1995, 1999, 2001-2016 Free Software Foundation, Inc. This file is part of GNU Emacs. GNU Emacs is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. +the Free Software Foundation, either version 3 of the License, or (at +your option) any later version. GNU Emacs is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -20,15 +20,12 @@ along with GNU Emacs. If not, see . */ #include #include #include +#include +#include #include "lisp.h" -#include "keyboard.h" #include "frame.h" -#include "charset.h" -#include "fontset.h" -#include "blockinput.h" #include "w32term.h" -#include "windowsx.h" #define myalloc(cb) GlobalAllocPtr (GPTR, cb) #define myfree(lp) GlobalFreePtr (lp) @@ -51,6 +48,21 @@ init_crit (void) when the input queue is empty, so make it a manual reset event. */ input_available = CreateEvent (NULL, TRUE, FALSE, NULL); +#if HAVE_W32NOTIFY + /* Initialize the linked list of notifications sets that will be + used to communicate between the watching worker threads and the + main thread. */ + notifications_set_head = malloc (sizeof(struct notifications_set)); + if (notifications_set_head) + { + memset (notifications_set_head, 0, sizeof(struct notifications_set)); + notifications_set_head->next + = notifications_set_head->prev = notifications_set_head; + } + else + DebPrint(("Out of memory: can't initialize notifications sets.")); +#endif + #ifdef WINDOWSNT keyboard_handle = input_available; #endif /* WINDOWSNT */ @@ -79,6 +91,23 @@ delete_crit (void) CloseHandle (interrupt_handle); interrupt_handle = NULL; } + +#if HAVE_W32NOTIFY + if (notifications_set_head) + { + /* Free any remaining notifications set that could be left over. */ + while (notifications_set_head->next != notifications_set_head) + { + struct notifications_set *ns = notifications_set_head->next; + notifications_set_head->next = ns->next; + ns->next->prev = notifications_set_head; + if (ns->notifications) + free (ns->notifications); + free (ns); + } + } + free (notifications_set_head); +#endif } void @@ -90,9 +119,9 @@ signal_quit (void) } void -select_palette (FRAME_PTR f, HDC hdc) +select_palette (struct frame *f, HDC hdc) { - struct w32_display_info *display_info = FRAME_W32_DISPLAY_INFO (f); + struct w32_display_info *display_info = FRAME_DISPLAY_INFO (f); if (!display_info->has_palette) return; @@ -117,7 +146,7 @@ select_palette (FRAME_PTR f, HDC hdc) } void -deselect_palette (FRAME_PTR f, HDC hdc) +deselect_palette (struct frame *f, HDC hdc) { if (f->output_data.w32->old_palette) SelectPalette (hdc, f->output_data.w32->old_palette, FALSE); @@ -126,7 +155,7 @@ deselect_palette (FRAME_PTR f, HDC hdc) /* Get a DC for frame and select palette for drawing; force an update of all frames if palette's mapping changes. */ HDC -get_frame_dc (FRAME_PTR f) +get_frame_dc (struct frame *f) { HDC hdc; @@ -146,7 +175,7 @@ get_frame_dc (FRAME_PTR f) } int -release_frame_dc (FRAME_PTR f, HDC hdc) +release_frame_dc (struct frame *f, HDC hdc) { int ret; @@ -333,9 +362,3 @@ drain_message_queue (void) } return retval; } - -/* x_sync is a no-op on W32. */ -void -x_sync (struct frame *f) -{ -}