summaryrefslogtreecommitdiffstats
path: root/libjava/gnu/gcj/xlib/natGC.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libjava/gnu/gcj/xlib/natGC.cc')
-rw-r--r--libjava/gnu/gcj/xlib/natGC.cc18
1 files changed, 10 insertions, 8 deletions
diff --git a/libjava/gnu/gcj/xlib/natGC.cc b/libjava/gnu/gcj/xlib/natGC.cc
index 11f4b28f22b..16b0bc50199 100644
--- a/libjava/gnu/gcj/xlib/natGC.cc
+++ b/libjava/gnu/gcj/xlib/natGC.cc
@@ -34,12 +34,16 @@ void gnu::gcj::xlib::GC::initStructure(GC* copyFrom)
{
Display* display = target->getDisplay();
::Display* dpy = (::Display*) (display->display);
- ::Drawable drawableXID = target->getXID();
-
- ::GC gc = XCreateGC(dpy, drawableXID, 0, 0);
-
- if (gc == 0)
- throw new XException(JvNewStringLatin1("GC creation failed"));
+ ::GC gc = (::GC) structure;
+ if (gc == 0)
+ {
+ // If we haven't already created a GC, create one now
+ ::Drawable drawableXID = target->getXID();
+ gc = XCreateGC(dpy, drawableXID, 0, 0);
+ structure = reinterpret_cast<gnu::gcj::RawData*>(gc);
+ if (gc == 0)
+ throw new XException(JvNewStringLatin1("GC creation failed"));
+ }
if (copyFrom != 0)
{
@@ -47,8 +51,6 @@ void gnu::gcj::xlib::GC::initStructure(GC* copyFrom)
XCopyGC(dpy, fromGC, ~0, gc);
// no fast fail
}
-
- structure = reinterpret_cast<gnu::gcj::RawData*>(gc);
}
void gnu::gcj::xlib::GC::disposeImpl()
OpenPOWER on IntegriCloud