aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/ChangeLog7
-rw-r--r--src/w32fns.c7
-rw-r--r--src/w32term.c2
-rw-r--r--src/w32term.h3
4 files changed, 16 insertions, 3 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index d1ae137379..e222b8bb8c 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,10 @@
+2009-03-15 Jason Rumney <[email protected]>
+
+ * w32term.h (WM_EMACS_PAINT): New message.
+ * w32term.c (w32_read_socket): Use it instead of WM_PAINT.
+ * w32fns.c (w32_wnd_proc): Change WM_PAINT to WM_EMACS_PAINT
+ before passing to lisp thread. (Bug#950)
+
2009-03-14 David Reitter <[email protected]>
* nsterm.m (ns_shutdown_properly, -terminate): Remove global state
diff --git a/src/w32fns.c b/src/w32fns.c
index 97b9adea2c..bf261a754d 100644
--- a/src/w32fns.c
+++ b/src/w32fns.c
@@ -2841,7 +2841,12 @@ w32_wnd_proc (hwnd, msg, wParam, lParam)
EndPaint (hwnd, &paintStruct);
leave_crit ();
- my_post_msg (&wmsg, hwnd, msg, wParam, lParam);
+ /* Change the message type to prevent Windows from
+ combining WM_PAINT messages in the Lisp thread's queue,
+ since Windows assumes that each message queue is
+ dedicated to one frame and does not bother checking
+ that hwnd matches before combining them. */
+ my_post_msg (&wmsg, hwnd, WM_EMACS_PAINT, wParam, lParam);
return 0;
}
diff --git a/src/w32term.c b/src/w32term.c
index 34fc450217..e16f07f088 100644
--- a/src/w32term.c
+++ b/src/w32term.c
@@ -4105,7 +4105,7 @@ w32_read_socket (sd, expected, hold_quit)
switch (msg.msg.message)
{
- case WM_PAINT:
+ case WM_EMACS_PAINT:
f = x_window_to_frame (dpyinfo, msg.msg.hwnd);
if (f)
diff --git a/src/w32term.h b/src/w32term.h
index a40cf46066..8181d610cd 100644
--- a/src/w32term.h
+++ b/src/w32term.h
@@ -609,7 +609,8 @@ do { \
#define WM_EMACS_SHOW_CARET (WM_EMACS_START + 17)
#define WM_EMACS_HIDE_CARET (WM_EMACS_START + 18)
#define WM_EMACS_SETCURSOR (WM_EMACS_START + 19)
-#define WM_EMACS_END (WM_EMACS_START + 20)
+#define WM_EMACS_PAINT (WM_EMACS_START + 20)
+#define WM_EMACS_END (WM_EMACS_START + 21)
#define WND_FONTWIDTH_INDEX (0)
#define WND_LINEHEIGHT_INDEX (4)