better ImageCellRenderer (it takes less CPU)
This commit is contained in:
parent
79927434aa
commit
3c7326e482
|
@ -53,15 +53,23 @@ class ImageCellRenderer(gtk.GenericCellRenderer):
|
||||||
def do_get_property(self, pspec):
|
def do_get_property(self, pspec):
|
||||||
return getattr(self, pspec.name)
|
return getattr(self, pspec.name)
|
||||||
|
|
||||||
|
def func(self, model, path, iter, (image, tree)):
|
||||||
|
if model.get_value(iter, 0) == image:
|
||||||
|
self.redraw = 1
|
||||||
|
cell_area = tree.get_cell_area(path, tree.get_column(0))
|
||||||
|
tree.queue_draw_area(cell_area.x, cell_area.y, cell_area.width, cell_area.height)
|
||||||
|
|
||||||
def animation_timeout(self, tree, image):
|
def animation_timeout(self, tree, image):
|
||||||
if image.get_storage_type() == gtk.IMAGE_ANIMATION:
|
if image.get_storage_type() == gtk.IMAGE_ANIMATION:
|
||||||
|
self.redraw = 0
|
||||||
image.get_data('iter').advance()
|
image.get_data('iter').advance()
|
||||||
gobject.timeout_add(image.get_data('iter').get_delay_time(), self.animation_timeout, tree, image)
|
model = tree.get_model()
|
||||||
tree.queue_draw()
|
model.foreach(self.func, (image, tree))
|
||||||
# tree.queue_draw_area(16,32,16,340)
|
if self.redraw:
|
||||||
# tree.queue_draw_area(draw_rect.x, \
|
gobject.timeout_add(image.get_data('iter').get_delay_time(), self.animation_timeout, tree, image)
|
||||||
# draw_rect.y, pix.get_width(), pix.get_height())
|
else:
|
||||||
|
image.set_data('iter', None)
|
||||||
|
|
||||||
def on_render(self, window, widget, background_area,cell_area, \
|
def on_render(self, window, widget, background_area,cell_area, \
|
||||||
expose_area, flags):
|
expose_area, flags):
|
||||||
pix_rect = gtk.gdk.Rectangle()
|
pix_rect = gtk.gdk.Rectangle()
|
||||||
|
|
Loading…
Reference in New Issue