summaryrefslogtreecommitdiffstats
path: root/xlib/xgc.c
diff options
context:
space:
mode:
authorKevin Walzer <kw@codebykevin.com>2012-09-25 14:51:04 (GMT)
committerKevin Walzer <kw@codebykevin.com>2012-09-25 14:51:04 (GMT)
commit59e0055e5372987ed7f16557ff3eeb6f75512b98 (patch)
treedea6f020e98cf06efcef68e084c7a1787f87e140 /xlib/xgc.c
parentdbec27a4c7733b44e33ba898fef7e8636e86caa0 (diff)
parent1ccc0a498dc186888117726c326b68dde101af48 (diff)
downloadtk-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.c38
1 files changed, 34 insertions, 4 deletions
diff --git a/xlib/xgc.c b/xlib/xgc.c
index fcc2798..8c04726 100644
--- a/xlib/xgc.c
+++ b/xlib/xgc.c
@@ -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;