summaryrefslogtreecommitdiffstats
path: root/generic/tkIntXlibDecls.h
diff options
context:
space:
mode:
authornijtmans@users.sourceforge.net <jan.nijtmans>2012-07-08 04:29:12 (GMT)
committernijtmans@users.sourceforge.net <jan.nijtmans>2012-07-08 04:29:12 (GMT)
commit722e1422522ab6a1c79109868ca2857a0a17686c (patch)
tree0822cebe8928ffdeb5741c454c80262cf0ce1474 /generic/tkIntXlibDecls.h
parent15d3dc2a473ddea8c63fe73cc40657c524ea248a (diff)
downloadtk-722e1422522ab6a1c79109868ca2857a0a17686c.zip
tk-722e1422522ab6a1c79109868ca2857a0a17686c.tar.gz
tk-722e1422522ab6a1c79109868ca2857a0a17686c.tar.bz2
[Bug 3541305]: Xfree/Xsync... should not be macros
Diffstat (limited to 'generic/tkIntXlibDecls.h')
-rw-r--r--generic/tkIntXlibDecls.h31
1 files changed, 30 insertions, 1 deletions
diff --git a/generic/tkIntXlibDecls.h b/generic/tkIntXlibDecls.h
index f5753c5..fb2738f 100644
--- a/generic/tkIntXlibDecls.h
+++ b/generic/tkIntXlibDecls.h
@@ -2506,6 +2506,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.
@@ -2525,6 +2552,8 @@ extern TkIntXlibStubs *tkIntXlibStubsPtr;
#define XSync(display, bool) {display->request++;}
#define XVisualIDFromVisual(visual) (visual->visualid)
-#endif
+#endif /* !USE_TK_STUBS */
+
+#endif /* __WIN32__ */
#endif /* _TKINTXLIBDECLS */