From 16a69c7b08caefe0782c1a1366b11b62e1308fc4 Mon Sep 17 00:00:00 2001 From: iabdalkader Date: Mon, 30 Jun 2014 03:48:40 +0200 Subject: [PATCH] Use gobject.timeout_add to schedule redraw --- usr/openmv-ide.py | 31 +++++++++++++------------------ 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/usr/openmv-ide.py b/usr/openmv-ide.py index f4885d7cb..d776c6c68 100755 --- a/usr/openmv-ide.py +++ b/usr/openmv-ide.py @@ -148,25 +148,20 @@ class OMVGtk: # read drawingarea fb = openmv.fb_dump() - # reschedule callback - gobject.idle_add(omvgtk.update_drawing); + if fb: + # convert to RGB888 and blit + self.pixbuf = gtk.gdk.pixbuf_new_from_array(fb[2].reshape((fb[1], fb[0], 3)), gtk.gdk.COLORSPACE_RGB, 8) + self.pixbuf = self.pixbuf.scale_simple(fb[0]*SCALE, fb[1]*SCALE, gtk.gdk.INTERP_BILINEAR) - if fb == None: - return - - # convert to RGB888 and blit - self.pixbuf = gtk.gdk.pixbuf_new_from_array(fb[2].reshape((fb[1], fb[0], 3)), gtk.gdk.COLORSPACE_RGB, 8) - self.pixbuf = self.pixbuf.scale_simple(fb[0]*SCALE, fb[1]*SCALE, gtk.gdk.INTERP_BILINEAR) - - self.drawingarea.realize(); - cm = self.drawingarea.window.get_colormap() - gc = self.drawingarea.window.new_gc(foreground=cm.alloc_color('#FFFFFF',True,False)) - - self.drawingarea.set_size_request(fb[0]*SCALE, fb[1]*SCALE) - self.drawingarea.window.draw_pixbuf(gc, self.pixbuf, 0, 0, 0, 0) - if self.selection_started or self.da_menu.flags() & gtk.MAPPED: - self.drawingarea.window.draw_rectangle(gc, False, self.x1, self.y1, self.x2-self.x1, self.y2-self.y1) + self.drawingarea.realize(); + cm = self.drawingarea.window.get_colormap() + gc = self.drawingarea.window.new_gc(foreground=cm.alloc_color('#FFFFFF',True,False)) + self.drawingarea.set_size_request(fb[0]*SCALE, fb[1]*SCALE) + self.drawingarea.window.draw_pixbuf(gc, self.pixbuf, 0, 0, 0, 0) + if self.selection_started or self.da_menu.flags() & gtk.MAPPED: + self.drawingarea.window.draw_rectangle(gc, False, self.x1, self.y1, self.x2-self.x1, self.y2-self.y1) + return True def on_ctrl_scale_value_changed(self, adjust): @@ -249,5 +244,5 @@ class OMVGtk: if __name__ == "__main__": omvgtk = OMVGtk() omvgtk.window.show_all() - gobject.idle_add(omvgtk.update_drawing); + gobject.gobject.timeout_add(10, omvgtk.update_drawing); gtk.main()