end
end
+ def cancel_loader
+ if ! @loader.nil?
+ #- avoid unneeded memory allocation
+ @loader.signal_handler_disconnect(@area_prepared_cb)
+ begin
+ @loader.close
+ rescue
+ #- ignore loader errors, at that point they are fairly normal, we're canceling a partial load
+ end
+ @loader = nil
+ end
+ end
+
private
def load_into_pixbuf_full
if @pixbuf_full.nil?
@loader.signal_connect('size-prepared') { |l, w, h|
@loader.set_size(*specify_size.call(w, h))
}
- @loader.signal_connect('area-prepared') { @loaded_pixbuf = @loader.pixbuf }
+ @area_prepared_cb = @loader.signal_connect('area-prepared') { @loaded_pixbuf = @loader.pixbuf }
@loader_offset = 0
end
msg 3, "calling load_not_freezing_ui on #{image_path}, offset #{@loader_offset}"
def cleanup_loaders
$allentries.each { |e|
- if ! e.loader.nil?
- begin
- e.loader.close
- rescue
- #- ignore loader errors, at that point they are fairly normal
- end
- end
+ e.cancel_loader
}
end