summaryrefslogtreecommitdiff
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.cc24
1 files changed, 16 insertions, 8 deletions
diff --git a/libjava/gnu/gcj/xlib/natGC.cc b/libjava/gnu/gcj/xlib/natGC.cc
index 17bcbe67b5a..3819da45005 100644
--- a/libjava/gnu/gcj/xlib/natGC.cc
+++ b/libjava/gnu/gcj/xlib/natGC.cc
@@ -217,25 +217,33 @@ void gnu::gcj::xlib::GC::putImage(XImage* image,
// no fast fail
}
-void gnu::gcj::xlib::GC::updateClip()
+void gnu::gcj::xlib::GC::updateClip(AWTRectArray* rectangles)
{
- if (clip == 0)
- return;
+ int numRect = JvGetArrayLength(rectangles);
+ XRectVector* xrectvector = new XRectVector(numRect);
+ for (int i=0; i<numRect; i++)
+ {
+ AWTRect* awtrect = elements(rectangles)[i];
+ XRectangle& xrect = (*xrectvector)[i];
+
+ xrect.x = awtrect->x;
+ xrect.y = awtrect->y;
+ xrect.width = awtrect->width;
+ xrect.height = awtrect->height;
+ }
+
Display* display = target->getDisplay();
::Display* dpy = (::Display*) (display->display);
::GC gc = (::GC) structure;
-
- XRectVector* xrectvector = (XRectVector*) (clip->xrects);
- int numRect = xrectvector->size();
-
+
int originX = 0;
int originY = 0;
int ordering = Unsorted;
XSetClipRectangles(dpy, gc, originX, originY,
&(xrectvector->front()), numRect,
ordering);
- // no fast fail
+ delete xrectvector;
}
void gnu::gcj::xlib::GC::copyArea (gnu::gcj::xlib::Drawable * source,