diff options
author | Kevin Walzer <kw@codebykevin.com> | 2012-09-25 14:51:04 (GMT) |
---|---|---|
committer | Kevin Walzer <kw@codebykevin.com> | 2012-09-25 14:51:04 (GMT) |
commit | 59e0055e5372987ed7f16557ff3eeb6f75512b98 (patch) | |
tree | dea6f020e98cf06efcef68e084c7a1787f87e140 /xlib/xgc.c | |
parent | dbec27a4c7733b44e33ba898fef7e8636e86caa0 (diff) | |
parent | 1ccc0a498dc186888117726c326b68dde101af48 (diff) | |
download | tk-59e0055e5372987ed7f16557ff3eeb6f75512b98.zip tk-59e0055e5372987ed7f16557ff3eeb6f75512b98.tar.gz tk-59e0055e5372987ed7f16557ff3eeb6f75512b98.tar.bz2 |
Merge Tk-Cocoa backport into core-8-5-branch
Diffstat (limited to 'xlib/xgc.c')
-rw-r--r-- | xlib/xgc.c | 38 |
1 files changed, 34 insertions, 4 deletions
@@ -5,7 +5,8 @@ * contexts. * * Copyright (c) 1995-1996 Sun Microsystems, Inc. - * Copyright (c) 2002-2007 Daniel A. Steffen <das@users.sourceforge.net> + * Copyright (c) 2002-2009 Daniel A. Steffen <das@users.sourceforge.net> + * Copyright 2008-2009, Apple Inc. * * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. @@ -15,13 +16,17 @@ #if !defined(MAC_OSX_TK) # include <X11/Xlib.h> -#endif -#ifdef MAC_OSX_TK +# define gcCacheSize 0 +# define TkpInitGCCache(gc) +# define TkpFreeGCCache(gc) +# define TkpGetGCCache(gc) +#else # include <tkMacOSXInt.h> # include <X11/Xlib.h> # include <X11/X.h> # define Cursor XCursor # define Region XRegion +# define gcCacheSize sizeof(TkpGCCache) #endif #undef TkSetRegion @@ -118,7 +123,8 @@ XCreateGC( #define MAX_DASH_LIST_SIZE 10 - gp = (XGCValues *) ckalloc(sizeof(XGCValues) + MAX_DASH_LIST_SIZE); + gp = (XGCValues *) ckalloc(sizeof(XGCValues) + MAX_DASH_LIST_SIZE + + gcCacheSize); if (!gp) { return None; } @@ -159,10 +165,33 @@ XCreateGC( clip_mask->type = TKP_CLIP_PIXMAP; clip_mask->value.pixmap = values->clip_mask; } + TkpInitGCCache(gp); return gp; } +#ifdef MAC_OSX_TK +/* + *---------------------------------------------------------------------- + * + * TkpGetGCCache -- + * + * Results: + * Pointer to the TkpGCCache at the end of the GC. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +TkpGCCache* +TkpGetGCCache(GC gc) { + return (gc ? (TkpGCCache*)(((char*) gc) + sizeof(XGCValues) + + MAX_DASH_LIST_SIZE) : NULL); +} +#endif + /* *---------------------------------------------------------------------- * @@ -242,6 +271,7 @@ int XFreeGC( { if (gc != None) { FreeClipMask(gc); + TkpFreeGCCache(gc); ckfree((char *) gc); } return Success; |