diff options
author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2012-07-08 04:32:16 (GMT) |
---|---|---|
committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2012-07-08 04:32:16 (GMT) |
commit | 319fea781804534c94a5d3a52f05d04dcb6042e5 (patch) | |
tree | fbf7a757e9dd0ff1af1d7a795670c2e74d971576 | |
parent | 88f3406d974ae0600d1b2b6fabb0140dd5391f4f (diff) | |
parent | ae8760d2c2d951d18039a14e617220ad642b4764 (diff) | |
download | tk-319fea781804534c94a5d3a52f05d04dcb6042e5.zip tk-319fea781804534c94a5d3a52f05d04dcb6042e5.tar.gz tk-319fea781804534c94a5d3a52f05d04dcb6042e5.tar.bz2 |
[Bug 3541305]: Xfree/Xsync... should not be macros
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | generic/tkIntXlibDecls.h | 31 |
2 files changed, 35 insertions, 1 deletions
@@ -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 */ |