Slightly optimize SVG loading
This commit is contained in:
parent
840e7f172c
commit
5ec5f5bdbd
|
@ -407,6 +407,11 @@ prescale_page(FivView *self)
|
||||||
// TODO(p): Restart the animation. No vector formats currently animate.
|
// TODO(p): Restart the animation. No vector formats currently animate.
|
||||||
g_return_if_fail(!self->frame_update_connection);
|
g_return_if_fail(!self->frame_update_connection);
|
||||||
|
|
||||||
|
// Optimization, taking into account the workaround in set_scale().
|
||||||
|
if (!self->page_scaled &&
|
||||||
|
(self->scale == 1 || self->scale == 0.999999999999999))
|
||||||
|
return;
|
||||||
|
|
||||||
// If it fails, the previous frame pointer may become invalid.
|
// If it fails, the previous frame pointer may become invalid.
|
||||||
g_clear_pointer(&self->page_scaled, fiv_io_image_unref);
|
g_clear_pointer(&self->page_scaled, fiv_io_image_unref);
|
||||||
self->frame = self->page_scaled = closure->render(closure,
|
self->frame = self->page_scaled = closure->render(closure,
|
||||||
|
@ -886,6 +891,10 @@ switch_page(FivView *self, FivIoImage *page)
|
||||||
{
|
{
|
||||||
g_clear_pointer(&self->page_scaled, fiv_io_image_unref);
|
g_clear_pointer(&self->page_scaled, fiv_io_image_unref);
|
||||||
self->frame = self->page = page;
|
self->frame = self->page = page;
|
||||||
|
|
||||||
|
// XXX: When self->scale_to_fit is in effect,
|
||||||
|
// this uses an old value that may no longer be appropriate,
|
||||||
|
// resulting in wasted effort.
|
||||||
prescale_page(self);
|
prescale_page(self);
|
||||||
|
|
||||||
if (!self->page ||
|
if (!self->page ||
|
||||||
|
|
Loading…
Reference in New Issue