// End a double buffer drawing operation. internal void End(Graphics graphics) { try { IntPtr display = dpy.Lock(); if (handle != XDrawable.Zero) { if (usesXdbe) { Xlib.XdbeSwapInfo info = new Xlib.XdbeSwapInfo(); info.swap_window = widget.GetWidgetHandle(); info.swap_action = Xlib.XdbeSwapAction.Background; Xlib.XdbeSwapBuffers(display, ref info, 1); } else { using (Graphics g = new Graphics(widget)) { Xlib.XCopyArea (display, handle, widget.GetGCHandle(), g.gc, 0, 0, (uint)width, (uint)height, 0, 0); } } } } finally { dpy.Unlock(); } }