diff options
Diffstat (limited to 'libjava/gnu/gcj/xlib/natGC.cc')
-rw-r--r-- | libjava/gnu/gcj/xlib/natGC.cc | 24 |
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, |