From aa11dfe12708fb6a797b345573fd1b8cc71c3233 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Mon, 29 Sep 2014 12:23:27 +0000 Subject: remove flicker --- Display.c | 17 ++++++++++++++--- Sgraph.c | 22 ++-------------------- 2 files changed, 16 insertions(+), 23 deletions(-) diff --git a/Display.c b/Display.c index c8d866b..1e73179 100644 --- a/Display.c +++ b/Display.c @@ -57,7 +57,6 @@ DisplayClassRec displayClassRec = { .visible_interest = False, .destroy = NULL, .resize = Resize, - //.expose = XtInheritExpose, .expose = Redisplay, .set_values = SetValues, .set_values_hook = NULL, @@ -72,7 +71,7 @@ DisplayClassRec displayClassRec = { .extension = NULL, }, .composite_class = { - .geometry_manager = GeometryManager, + .geometry_manager = XtInheritGeometryManager, .change_managed = ChangeManaged, .insert_child = XtInheritInsertChild, .delete_child = XtInheritDeleteChild, @@ -180,5 +179,17 @@ Redisplay(Widget w, XEvent *event, Region region) static Boolean SetValues(Widget old, Widget req, Widget new, ArgList args, Cardinal *n) { - return True; + XExposeEvent xeev; + + xeev.type = Expose; + xeev.display = XtDisplay(new); + xeev.window = XtWindow(new); + xeev.x = 0; + xeev.y = 0; + xeev.width = new->core.width; + xeev.height = new->core.height; + + XtClass(new)->core_class.expose(new, (XEvent *)&xeev, NULL); + + return False; } diff --git a/Sgraph.c b/Sgraph.c index d61ce8f..0db2a78 100644 --- a/Sgraph.c +++ b/Sgraph.c @@ -93,7 +93,7 @@ SgraphClassRec sgraphClassRec = { NULL, /* destroy */ Resize, /* resize */ Redisplay, /* expose */ - SetValues, /* set_values */ + NULL, /* set_values */ NULL, /* set_values_hook */ XtInheritSetValuesAlmost, /* set_values_almost */ NULL, /* get_values_hook */ @@ -171,10 +171,9 @@ Realize(Widget w, XtValueMask *mask, XSetWindowAttributes *attr) if (XtIsRealized(w)) return; - XtCreateWindow(w, InputOutput, CopyFromParent, *mask, attr); + XtSuperclass(w)->core_class.realize(w, mask, attr); sw->sgraph.backBuf = XdbeAllocateBackBufferName(XtDisplay(w), XtWindow(w), XdbeBackground); - Resize(w); } static void @@ -228,20 +227,3 @@ Redisplay(Widget w, XEvent *event, Region r) XdbeSwapBuffers(XtDisplay(sw), &swap, 1); } - -static Boolean -SetValues(Widget old, Widget reference, Widget new, ArgList args, Cardinal *num_args) -{ - XExposeEvent xeev; - - xeev.type = Expose; - xeev.display = XtDisplay(new); - xeev.window = XtWindow(new); - xeev.x = 0; - xeev.y = 0; - xeev.width = new->core.width; - xeev.height = new->core.height; - Redisplay(new, (XEvent *)&xeev, NULL); - - return False; -} -- cgit v1.2.3