summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjan.nijtmans <jan.nijtmans@noemail.net>2012-07-08 04:32:16 (GMT)
committerjan.nijtmans <jan.nijtmans@noemail.net>2012-07-08 04:32:16 (GMT)
commit00ad4c61287d208d680cfe35beb1a32a12a1a1fc (patch)
treefbf7a757e9dd0ff1af1d7a795670c2e74d971576
parentc3b2fe4851a5774b400e498d6976efbebca834aa (diff)
parent455ec957c419a83f0b1aff974bbec145f988029b (diff)
downloadtk-00ad4c61287d208d680cfe35beb1a32a12a1a1fc.zip
tk-00ad4c61287d208d680cfe35beb1a32a12a1a1fc.tar.gz
tk-00ad4c61287d208d680cfe35beb1a32a12a1a1fc.tar.bz2
[Bug 3541305]: Xfree/Xsync... should not be macros
FossilOrigin-Name: a48e1765e88de034974879f41bdb2ac4a005876b
-rw-r--r--ChangeLog5
-rw-r--r--generic/tkIntXlibDecls.h31
2 files changed, 35 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 78cdf6e..ef8f53e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2012-07-08 Jan Nijtmans <nijtmans@users.sf.net>
+
+ * generic/tkIntXlibDecls.h: [Bug 3541305]: Xfree/Xsync...
+ should not be macros
+
2012-07-05 Donal K. Fellows <dkf@users.sf.net>
* doc/wm.n (geometry): [Bug 3538401]: Better description of the key
diff --git a/generic/tkIntXlibDecls.h b/generic/tkIntXlibDecls.h
index 9844ac5..1357ceb 100644
--- a/generic/tkIntXlibDecls.h
+++ b/generic/tkIntXlibDecls.h
@@ -2315,6 +2315,33 @@ extern TkIntXlibStubs *tkIntXlibStubsPtr;
#undef XSync
#undef XVisualIDFromVisual
+#if defined(USE_TK_STUBS) && !defined(USE_TK_STUB_PROCS)
+/*
+ * The following stubs implement various calls that don't do anything
+ * under Windows. In win32 tclsh 8.4 and 8.5 holds:
+ * tkIntStubsPtr->tkBindDeadWindow != NULL
+ * Then the following macros don't do anything. But when running Tcl win32
+ * version 8.6 or Cygwin (8.4, 8.5 or 8.6) then the functions are available in
+ * the stub table. The real function from the stub table will be called,
+ * even though it might be doing nothing.
+ */
+
+#define XFlush(display) (tkIntStubsPtr->tkBindDeadWindow? 0: tkIntXlibStubsPtr->xFlush(display))
+#define XGrabServer(display) (tkIntStubsPtr->tkBindDeadWindow? 0: tkIntXlibStubsPtr->xGrabServer(display))
+#define XUngrabServer(display) (tkIntStubsPtr->tkBindDeadWindow? 0: tkIntXlibStubsPtr->xUngrabServer(display))
+
+/*
+ * The following functions are implemented as macros under Windows.
+ */
+
+
+#define XFree(data) (tkIntStubsPtr->tkBindDeadWindow? ((data)? (ckfree((char *) (data)), 0): 0): tkIntXlibStubsPtr->xFree(data))
+#define XNoOp(display) (tkIntStubsPtr->tkBindDeadWindow? 0: tkIntXlibStubsPtr->xNoOp(display))
+#define XSynchronize(display, bool) (tkIntStubsPtr->tkBindDeadWindow? 0: tkIntXlibStubsPtr->xSynchronize(display, bool))
+#define XSync(display, bool) (tkIntStubsPtr->tkBindDeadWindow? 0: tkIntXlibStubsPtr->xSync(display, bool))
+#define XVisualIDFromVisual(visual) (tkIntStubsPtr->tkBindDeadWindow? ((visual)->visualid): tkIntXlibStubsPtr->xVisualIDFromVisual(visual))
+
+#else /* !USE_TK_STUBS */
/*
* The following stubs implement various calls that don't do anything
* under Windows.
@@ -2334,6 +2361,8 @@ extern TkIntXlibStubs *tkIntXlibStubsPtr;
#define XSync(display, bool) {display->request++;}
#define XVisualIDFromVisual(visual) (visual->visualid)
-#endif
+#endif /* !USE_TK_STUBS */
+
+#endif /* __WIN32__ */
#endif /* _TKINTXLIBDECLS */