Delay when opening folder in icon-view or compact-view
When opening a folder with 100.000 files in icon/view or compact view, thunar takes few seconds more to load the folder than in list-view.
Followup of #1337 (closed) and exo!74 (comment 87584)
The trace seems to point to thunar_standard_view_cell_layout_data_func
which actually only should be used if highlight is enabled.
backtrace 1
^C
Thread 1 "thunar" received signal SIGINT, Interrupt.
0x00007ffff718f1e6 in ?? () from /lib/x86_64-linux-gnu/libgobject-2.0.so.0
(gdb) bt
#0 0x00007ffff718f1e6 in () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#1 0x00007ffff706ccba in g_hash_table_lookup () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#2 0x00007ffff718f3bf in () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#3 0x00007ffff7190dd7 in g_param_spec_pool_lookup () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#4 0x00007ffff718c048 in g_object_set_valist () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#5 0x00007ffff718cb57 in g_object_set () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#6 0x00005555555f1b6a in thunar_standard_view_cell_layout_data_func
(layout=<optimized out>, cell=0x555555ffd030, model=<optimized out>, iter=<optimized out>, data=<optimized out>)
at thunar-standard-view.c:4558
#7 0x00007ffff7f75249 in exo_icon_view_set_cell_data (icon_view=icon_view@entry=0x555555ff5340, item=item@entry=0x55555f0f6170)
at exo-icon-view.c:4961
#8 0x00007ffff7f776ec in exo_icon_view_calculate_item_size (icon_view=icon_view@entry=0x555555ff5340, item=item@entry=0x55555f0f6170)
at exo-icon-view.c:3542
#9 0x00007ffff7f779b6 in exo_icon_view_calculate_item_size (item=0x55555f0f6170, icon_view=<optimized out>) at exo-icon-view.c:3522
#10 exo_icon_view_layout_single_row
(icon_view=icon_view@entry=0x555555ff5340, first_item=first_item@entry=0x55555f0f5e20, item_width=item_width@entry=128, row=row@entry=9796, y=y@entry=0x7fffffffb294, maximum_width=maximum_width@entry=0x7fffffffb28c, max_cols=0) at exo-icon-view.c:3133
#11 0x00007ffff7f77c67 in exo_icon_view_layout_rows
(icon_view=icon_view@entry=0x555555ff5340, item_width=item_width@entry=128, y=y@entry=0x7fffffffb294, maximum_width=maximum_width@entry=0x7fffffffb28c, max_cols=max_cols@entry=0) at exo-icon-view.c:3361
#12 0x00007ffff7f79810 in exo_icon_view_layout (icon_view=icon_view@entry=0x555555ff5340) at exo-icon-view.c:3423
#13 0x00007ffff7f79b48 in exo_icon_view_size_allocate (allocation=0x7fffffffb3a0, widget=0x555555ff5340) at exo-icon-view.c:1743
#14 exo_icon_view_size_allocate (widget=0x555555ff5340, allocation=0x7fffffffb3a0) at exo-icon-view.c:1723
#15 0x00007ffff7955099 in gtk_widget_size_allocate_with_baseline () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#16 0x00007ffff78851a5 in () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#17 0x00007ffff77271a9 in () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#18 0x00007ffff7881030 in () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#19 0x00007ffff71834a5 in g_closure_invoke () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#20 0x00007ffff7196c40 in () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#21 0x00007ffff7198501 in () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#22 0x00007ffff719e186 in g_signal_emit_valist () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#23 0x00007ffff719e243 in g_signal_emit () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#24 0x00007ffff79552a7 in gtk_widget_size_allocate_with_baseline () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#25 0x00007ffff78236f5 in () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#26 0x00007ffff77271a9 in () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#27 0x00007ffff76ceab3 in () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#28 0x00007ffff76cf75a in () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#29 0x00007ffff77271a9 in () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#30 0x00007ffff7825ef9 in () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#31 0x00007ffff7955099 in gtk_widget_size_allocate_with_baseline () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#32 0x00007ffff7833db3 in () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#33 0x00007ffff77271a9 in () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#34 0x00007ffff7831fb9 in () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#35 0x00007ffff7955099 in gtk_widget_size_allocate_with_baseline () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#36 0x00007ffff77bb948 in () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#37 0x00007ffff77271a9 in () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#38 0x00007ffff77b9557 in () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#39 0x00007ffff7955099 in gtk_widget_size_allocate_with_baseline () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#40 0x00007ffff7833db3 in () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#41 0x00007ffff77271a9 in () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#42 0x00007ffff7831fb9 in () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#43 0x00007ffff7955099 in gtk_widget_size_allocate_with_baseline () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#44 0x00007ffff7833fce in () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#45 0x00007ffff77271a9 in () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#46 0x00007ffff7831fb9 in () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#47 0x00007ffff7955099 in gtk_widget_size_allocate_with_baseline () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#48 0x00007ffff77bb948 in () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#49 0x00007ffff77271a9 in () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#50 0x00007ffff77b9557 in () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#51 0x00007ffff7955099 in gtk_widget_size_allocate_with_baseline () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#52 0x00007ffff796cadb in () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#53 0x00007ffff7183540 in g_closure_invoke () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#54 0x00007ffff7196c40 in () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#55 0x00007ffff7198501 in () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#56 0x00007ffff719e186 in g_signal_emit_valist () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#57 0x00007ffff719e243 in g_signal_emit () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#58 0x00007ffff79552a7 in gtk_widget_size_allocate_with_baseline () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#59 0x00007ffff796d355 in () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#60 0x00007ffff7183749 in () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#61 0x00007ffff71985bf in () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#62 0x00007ffff719e186 in g_signal_emit_valist () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#63 0x00007ffff719e243 in g_signal_emit () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#64 0x00007ffff7719388 in () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#65 0x00007ffff7183749 in () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#66 0x00007ffff71985bf in () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#67 0x00007ffff719e186 in g_signal_emit_valist () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#68 0x00007ffff719e243 in g_signal_emit () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#69 0x00007ffff7544730 in () at /lib/x86_64-linux-gnu/libgdk-3.so.0
#70 0x00007ffff753088b in () at /lib/x86_64-linux-gnu/libgdk-3.so.0
#71 0x00007ffff708202e in () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#72 0x00007ffff707e0d9 in () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#73 0x00007ffff7081317 in () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#74 0x00007ffff7081930 in g_main_context_iteration () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#75 0x00007ffff72b3b7d in g_application_run () at /lib/x86_64-linux-gnu/libgio-2.0.so.0
#76 0x000055555557ff24 in main (argc=2, argv=0x7fffffffe068) at main.c:86
Though even when directly returning on thunar_standard_view_cell_layout_data_func
, there is still a noticeable delay.
backtrace2
#0 _int_malloc (av=av@entry=0x7ffff7018c80 <main_arena>, bytes=bytes@entry=24) at ./malloc/malloc.c:3926
#1 0x00007ffff6eddb24 in __libc_calloc (n=<optimized out>, elem_size=<optimized out>) at ./malloc/malloc.c:3671
#2 0x00007ffff708827a in g_malloc0 () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#3 0x00007ffff7e25825 in () at /lib/x86_64-linux-gnu/libpango-1.0.so.0
#4 0x00007ffff7e26626 in () at /lib/x86_64-linux-gnu/libpango-1.0.so.0
#5 0x00007ffff76f9d33 in () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#6 0x00007ffff76f9f2c in () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#7 0x00007ffff76f1b68 in gtk_cell_renderer_get_preferred_height_for_width () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#8 0x00007ffff76f1e94 in gtk_cell_renderer_get_preferred_size () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#9 0x00007ffff7f7775b in exo_icon_view_calculate_item_size (icon_view=icon_view@entry=0x555555ce4d80, item=item@entry=0x555559f98440)
at exo-icon-view.c:3555
#10 0x00007ffff7f779b6 in exo_icon_view_calculate_item_size (item=0x555559f98440, icon_view=<optimized out>) at exo-icon-view.c:3522
#11 exo_icon_view_layout_single_row
(icon_view=icon_view@entry=0x555555ce4d80, first_item=first_item@entry=0x55555a353e50, item_width=item_width@entry=128, row=row@entry=2542, y=y@entry=0x7fffffffdd44, maximum_width=maximum_width@entry=0x7fffffffdd3c, max_cols=0) at exo-icon-view.c:3133
#12 0x00007ffff7f77c67 in exo_icon_view_layout_rows
(icon_view=icon_view@entry=0x555555ce4d80, item_width=item_width@entry=128, y=y@entry=0x7fffffffdd44, maximum_width=maximum_width@entry=0x7fffffffdd3c, max_cols=max_cols@entry=0) at exo-icon-view.c:3361
#13 0x00007ffff7f79810 in exo_icon_view_layout (icon_view=0x555555ce4d80) at exo-icon-view.c:3423
#14 0x00007ffff7f79ae9 in layout_callback (user_data=<optimized out>) at exo-icon-view.c:3841
#15 0x00007ffff753088b in () at /lib/x86_64-linux-gnu/libgdk-3.so.0
#16 0x00007ffff707e0d9 in () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#17 0x00007ffff7081317 in () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#18 0x00007ffff7081930 in g_main_context_iteration () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#19 0x00007ffff72b3b7d in g_application_run () at /lib/x86_64-linux-gnu/libgio-2.0.so.0
#20 0x000055555557ff24 in main (argc=2, argv=0x7fffffffe068) at main.c:86
exo_icon_view_calculate_item_size
is still in the trace .. so maybe that is to blame. To be further investigated