After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 725063 - Port library view to GtkFlowBox
Port library view to GtkFlowBox
Status: RESOLVED OBSOLETE
Product: totem
Classification: Core
Component: Movie player
unspecified
Other Linux
: Normal normal
: ---
Assigned To: General Totem maintainer(s)
General Totem maintainer(s)
: 728562 756944 (view as bug list)
Depends on:
Blocks: 733218 734864
 
 
Reported: 2014-02-24 14:04 UTC by Elad Alfassa
Modified: 2018-05-24 10:49 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Elad Alfassa 2014-02-24 14:04:42 UTC
Scrolling the local library view is extremely slow, one of the CPU cores gets to 95%, all others sit and do nothing.

according to "perf top" and sysprof, most of the time is spent on gdk_cairo_surface_paint_pixbuf.
Comment 1 Michael Knepher 2014-03-28 22:16:00 UTC
I have >300 videos on an external drive. When they're added to the library, it's pretty much unusable - takes a very long time to load and interact with, and they can't be removed from the library (which may be its own bug?).
Comment 2 Torsten Scholak 2014-04-13 02:26:16 UTC
I have the same problem as Elad: scrolling is through "Recent" is painfully slow. Many thumbnails are missing. sysprof tells me that totem spends most of its time in gdk_cairo_surface_paint_pixbuf, by a large margin.
Comment 3 Torsten Scholak 2014-04-13 02:35:49 UTC


  • #0 gdk_cairo_surface_paint_pixbuf
    at gdkcairo.c line 241
  • #1 gdk_cairo_surface_create_from_pixbuf
    at gdkcairo.c line 303
  • #2 ensure_surface_from_pixbuf
    at gtkiconhelper.c line 591
  • #3 _gtk_icon_helper_ensure_surface
    at gtkiconhelper.c line 736
  • #4 _gtk_icon_helper_get_size
    at gtkiconhelper.c line 783
  • #5 gtk_cell_renderer_pixbuf_get_size
    at gtkcellrendererpixbuf.c line 444
  • #6 gd_toggle_pixbuf_renderer_get_size
    from /usr/lib64/libtotem.so.0
  • #7 gtk_cell_renderer_real_get_preferred_size
    at gtkcellrenderer.c line 1256
  • #8 gtk_cell_renderer_real_get_preferred_width
    at gtkcellrenderer.c line 1295
  • #9 gtk_cell_renderer_get_preferred_width
    at gtkcellrenderer.c line 1479
  • #10 gtk_cell_area_request_renderer
    at gtkcellarea.c line 3584
  • #11 compute_size
    at gtkcellareabox.c line 1524
  • #12 gtk_cell_area_box_get_preferred_width
    at gtkcellareabox.c line 1813
  • #13 cell_area_get_preferred_size
    at gtkiconview.c line 1477
  • #14 gtk_icon_view_get_preferred_item_size
    at gtkiconview.c line 1540
  • #15 gtk_icon_view_compute_n_items_for_size
    at gtkiconview.c line 1596
  • #16 gtk_icon_view_get_preferred_height_for_width
    at gtkiconview.c line 1781
  • #17 gtk_widget_query_size_for_orientation
    at gtksizerequest.c line 245
  • #18 gtk_widget_compute_size_for_orientation
    at gtksizerequest.c line 390
  • #19 gtk_widget_get_preferred_height_for_width
    at gtksizerequest.c line 598
  • #20 gtk_scrolled_window_size_allocate
    at gtkscrolledwindow.c line 1883
  • #21 g_closure_invoke
    at /var/tmp/portage/dev-libs/glib-2.40.0/work/glib-2.40.0/gobject/gclosure.c line 768
  • #22 signal_emit_unlocked_R
    at /var/tmp/portage/dev-libs/glib-2.40.0/work/glib-2.40.0/gobject/gsignal.c line 3481
  • #23 g_signal_emit_valist
    at /var/tmp/portage/dev-libs/glib-2.40.0/work/glib-2.40.0/gobject/gsignal.c line 3307
  • #24 g_signal_emit
    at /var/tmp/portage/dev-libs/glib-2.40.0/work/glib-2.40.0/gobject/gsignal.c line 3363
  • #25 gtk_widget_size_allocate_with_baseline
    at gtkwidget.c line 5620
  • #26 gtk_box_size_allocate_no_center
    at gtkbox.c line 789
  • #27 g_closure_invoke
    at /var/tmp/portage/dev-libs/glib-2.40.0/work/glib-2.40.0/gobject/gclosure.c line 768
  • #28 signal_emit_unlocked_R
    at /var/tmp/portage/dev-libs/glib-2.40.0/work/glib-2.40.0/gobject/gsignal.c line 3481
  • #29 g_signal_emit_valist
    at /var/tmp/portage/dev-libs/glib-2.40.0/work/glib-2.40.0/gobject/gsignal.c line 3307
  • #30 g_signal_emit
    at /var/tmp/portage/dev-libs/glib-2.40.0/work/glib-2.40.0/gobject/gsignal.c line 3363
  • #31 gtk_widget_size_allocate_with_baseline
    at gtkwidget.c line 5620
  • #32 gtk_widget_size_allocate
    at gtkwidget.c line 5687
  • #33 gtk_stack_size_allocate
    at gtkstack.c line 1795
  • #34 g_closure_invoke
    at /var/tmp/portage/dev-libs/glib-2.40.0/work/glib-2.40.0/gobject/gclosure.c line 768
  • #35 signal_emit_unlocked_R
    at /var/tmp/portage/dev-libs/glib-2.40.0/work/glib-2.40.0/gobject/gsignal.c line 3481
  • #36 g_signal_emit_valist
    at /var/tmp/portage/dev-libs/glib-2.40.0/work/glib-2.40.0/gobject/gsignal.c line 3307
  • #37 g_signal_emit
    at /var/tmp/portage/dev-libs/glib-2.40.0/work/glib-2.40.0/gobject/gsignal.c line 3363
  • #38 gtk_widget_size_allocate_with_baseline
    at gtkwidget.c line 5620
  • #39 gtk_box_size_allocate_no_center
    at gtkbox.c line 789
  • #40 g_closure_invoke
    at /var/tmp/portage/dev-libs/glib-2.40.0/work/glib-2.40.0/gobject/gclosure.c line 768
  • #41 signal_emit_unlocked_R
    at /var/tmp/portage/dev-libs/glib-2.40.0/work/glib-2.40.0/gobject/gsignal.c line 3481
  • #42 g_signal_emit_valist
    at /var/tmp/portage/dev-libs/glib-2.40.0/work/glib-2.40.0/gobject/gsignal.c line 3307
  • #43 g_signal_emit
    at /var/tmp/portage/dev-libs/glib-2.40.0/work/glib-2.40.0/gobject/gsignal.c line 3363
  • #44 gtk_widget_size_allocate_with_baseline
    at gtkwidget.c line 5620
  • #45 gtk_widget_size_allocate
    at gtkwidget.c line 5687
  • #46 gtk_window_size_allocate
    at gtkwindow.c line 7115
  • #47 gtk_application_window_real_size_allocate
    at gtkapplicationwindow.c line 640
  • #48 g_closure_invoke
    at /var/tmp/portage/dev-libs/glib-2.40.0/work/glib-2.40.0/gobject/gclosure.c line 768
  • #49 signal_emit_unlocked_R
    at /var/tmp/portage/dev-libs/glib-2.40.0/work/glib-2.40.0/gobject/gsignal.c line 3481
  • #50 g_signal_emit_valist
    at /var/tmp/portage/dev-libs/glib-2.40.0/work/glib-2.40.0/gobject/gsignal.c line 3307
  • #51 g_signal_emit
    at /var/tmp/portage/dev-libs/glib-2.40.0/work/glib-2.40.0/gobject/gsignal.c line 3363
  • #52 gtk_widget_size_allocate_with_baseline
    at gtkwidget.c line 5620
  • #53 gtk_widget_size_allocate
    at gtkwidget.c line 5687
  • #54 gtk_window_move_resize
    at gtkwindow.c line 9642
  • #55 gtk_window_check_resize
    at gtkwindow.c line 8103
  • #56 _g_closure_invoke_va
    at /var/tmp/portage/dev-libs/glib-2.40.0/work/glib-2.40.0/gobject/gclosure.c line 831
  • #57 g_signal_emit_valist
    at /var/tmp/portage/dev-libs/glib-2.40.0/work/glib-2.40.0/gobject/gsignal.c line 3215
  • #58 g_signal_emit
    at /var/tmp/portage/dev-libs/glib-2.40.0/work/glib-2.40.0/gobject/gsignal.c line 3363
  • #59 gtk_container_idle_sizer
    at gtkcontainer.c line 1757
  • #60 g_closure_invoke
    at /var/tmp/portage/dev-libs/glib-2.40.0/work/glib-2.40.0/gobject/gclosure.c line 768
  • #61 signal_emit_unlocked_R
    at /var/tmp/portage/dev-libs/glib-2.40.0/work/glib-2.40.0/gobject/gsignal.c line 3551
  • #62 g_signal_emit_valist
    at /var/tmp/portage/dev-libs/glib-2.40.0/work/glib-2.40.0/gobject/gsignal.c line 3307
  • #63 g_signal_emit_by_name
    at /var/tmp/portage/dev-libs/glib-2.40.0/work/glib-2.40.0/gobject/gsignal.c line 3403
  • #64 gdk_frame_clock_paint_idle
    at gdkframeclockidle.c line 408
  • #65 gdk_threads_dispatch
    at gdk.c line 635
  • #66 g_timeout_dispatch
    at /var/tmp/portage/dev-libs/glib-2.40.0/work/glib-2.40.0/glib/gmain.c line 4472
  • #67 g_main_dispatch
    at /var/tmp/portage/dev-libs/glib-2.40.0/work/glib-2.40.0/glib/gmain.c line 3064
  • #68 g_main_context_dispatch
    at /var/tmp/portage/dev-libs/glib-2.40.0/work/glib-2.40.0/glib/gmain.c line 3663
  • #69 g_main_context_iterate
    at /var/tmp/portage/dev-libs/glib-2.40.0/work/glib-2.40.0/glib/gmain.c line 3734
  • #70 g_main_context_iteration
    at /var/tmp/portage/dev-libs/glib-2.40.0/work/glib-2.40.0/glib/gmain.c line 3795
  • #71 g_application_run
    at /var/tmp/portage/dev-libs/glib-2.40.0/work/glib-2.40.0/gio/gapplication.c line 2114
  • #72 main

Comment 4 Bastien Nocera 2014-04-22 06:36:09 UTC
*** Bug 728562 has been marked as a duplicate of this bug. ***
Comment 5 Bastien Nocera 2014-05-15 15:34:34 UTC
Does running:
NO_AT_BRIDGE=1 totem
fix the problem? If so, could be bug 730118.
Comment 6 Elad Alfassa 2014-05-15 17:35:40 UTC
Unfortunately, I see no noticeable performance improvements when running totem with this environment variable set.
Comment 7 Elad Alfassa 2014-08-02 13:13:26 UTC
Clearing the NEEEDINFO status. It's still slow and my previous comment answers the need for info.
Comment 8 Romain Failliot 2014-08-02 15:11:54 UTC
Just so that this bug doesn't seem like it happens only for few people, I also have it, since the new Totem arrived (3.10?) and it's slow as hell since the beginning.
It's not slow like I've got to wait 3 seconds and then it's ok. No it's more like taking 10 strong minutes and, if you close Totem and reopen it, it does the parsing all over again.

I was hoping it would have been fixed with 3.12. Maybe 3.14?
In the meantime I'm forced to use VLC which I don't really like.

I have a library of 2209 files for a total of 400GB.
And I'm running Archlinux on an Intel Core 2 Quad @ 2.5GHz, 4GB of RAM, and a Radeon HD 6870 with the radeon drivers.

If I can do anything, I'll be pleased to help.
Comment 9 Bastien Nocera 2014-08-25 17:00:44 UTC
This is due to the icon view, which will re-calculate its size for every single item that we add. If you have hundreds of items, it will be slow.

We'll need to port the view to GtkFlowBox in the future, which should speed this up.
Comment 10 Bastien Nocera 2015-10-22 10:16:29 UTC
*** Bug 756944 has been marked as a duplicate of this bug. ***
Comment 11 John O'Dwyer 2017-10-25 22:17:19 UTC
Any current plans to port Totem to GtkFlowBox?
Comment 12 GNOME Infrastructure Team 2018-05-24 10:49:15 UTC
-- GitLab Migration Automatic Message --

This bug has been migrated to GNOME's GitLab instance and has been closed from further activity.

You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.gnome.org/GNOME/totem/issues/89.