seek by button press on bottom control seek slider does not work when gtk scall by page setting is set
This breakage affects the mouse and the digital pen presses on the slider.
What causes the breakage is this setting: $HOME/.config/gtk-3.0/settings.ini
[Settings]
gtk-primary-button-warps-slider=0
This change the behavior of gtk_range_multipress_gesture_pressed in gtkrange.c ie primary_wraps is thus 0 instead of 1:
2716 g_object_get (gtk_widget_get_settings (widget),
2717 "gtk-primary-button-warps-slider", &primary_warps,
2718 NULL);
which later on this function instead of calling update_slider_position which triggers totem seek_slider_changed_cb, sets a timeout gdk_thread which calls it later. But as in seek_slider_pressed_cb totem->seek_lock is set to TRUE and seek_slider_released_cb set it to FALSE, with the added timeout the seek_slider_changed_cb is called after seek_slider_released_cb and thus become is a noop (as totem->seek_lock is FALSE). This instead of being called in between seek_slider_pressed_cb and seek_slider_released_cb as when gtk-primary-button-warps-slider is at its default value ie 1, scroll to location of the click instead of 0, scroll by page steps.
shift_pressed is at value 0, so when primary_warps is 1 (gtk-primary-button-warps-slider is at 1, the default scroll to the location of the click), gtk_range_multipress_gesture_pressed branch on:
2760 else if (priv->mouse_location == priv->trough_gadget &&
2761 (source == GDK_SOURCE_TOUCHSCREEN ||
2762 (primary_warps && !shift_pressed && button == GDK_BUTTON_PRIMARY) ||
2763 (!primary_warps && shift_pressed && button == GDK_BUTTON_PRIMARY) ||
2764 (!primary_warps && button == GDK_BUTTON_MIDDLE)))
that is it calls update_slider_position (range, x, y)
which at it ends calls g_signal_emit (range, signals[CHANGE_VALUE], 0, GTK_SCROLL_JUMP, new_value, &handled)
.
when primary_warps is 0 (scroll by page) it branches on:
2792 else if (priv->mouse_location == priv->trough_gadget &&
2793 ((primary_warps && shift_pressed && button == GDK_BUTTON_PRIMARY) ||
2794 (!primary_warps && !shift_pressed && button == GDK_BUTTON_PRIMARY) ||
2795 (primary_warps && button == GDK_BUTTON_MIDDLE)))
that is it calls gtk_range_add_step_timer (range, scroll)
which is in current GTK 3:
3847 priv->timer = g_new (GtkRangeStepTimer, 1);
3848
3849 priv->timer->timeout_id = gdk_threads_add_timeout (TIMEOUT_INITIAL,
3850 initial_timeout,
3851 range);
(gdb) l
3852 g_source_set_name_by_id (priv->timer->timeout_id, "[gtk+] initial_timeout");
3853 priv->timer->step = step;
3854
3855 gtk_range_scroll (range, priv->timer->step);
seek_slider_pressed_cb already has a hack to force the other button click to behave like the left click. That is right mouse click does the same as the above setting that is scroll by page, thus wtih forcing the event button to be seen as the left button it forces the scroll to move the slider to the location of the click.
2762 /* HACK: we want the behaviour you get with the left button, so we
2763 * mangle the event. clicking with other buttons moves the slider in
2764 * step increments, clicking with the left button moves the slider to
2765 * the location of the click.
2766 */
2767 event->button = GDK_BUTTON_PRIMARY;
NB: Maybe there is a way to call g_object_set to set this "gtk-primary-button-warps-slider" setting to 1 for this GtkRange "seek_slider" only. I have not investigated this option yet. I preferred to report the cause of this bug so if people suffer the same problem they at least know what to do, ie remove the setting until a fix is found.
PS: in my case, this GTK setting was set years ago, by the KDE GTK config application for GTK2 ($HOME/.gtkrc-2.0) and the config was migrated automatically. So unlikely to affect users not setting this explicitly but not impossible. Took me years to nail down as I first thought it was an intel instance of the color-picking mesa issue.
log of gdb session with gtk-primary-button-warps-slider at 0 (I am not even confident seek_slider_changed_cb is ever called by the glib timeout after seek_slider_released_cb):
Thread 1 "totem" hit Breakpoint 1, seek_slider_pressed_cb (widget=widget@entry=0x563e23b4c550, event=0x7f97ac0043e0, totem=0x563e2349e1f0) at ../src/totem-object.c:2767
2767 event->button = GDK_BUTTON_PRIMARY;
(gdb) bt
#0 seek_slider_pressed_cb (widget=widget@entry=0x563e23b4c550, event=0x7f97ac0043e0, totem=0x563e2349e1f0) at ../src/totem-object.c:2767
#1 0x00007f9842f20057 in _gtk_marshal_BOOLEAN__BOXED
(closure=0x563e242b1b20, return_value=0x7fffd8deaa50, n_param_values=<optimized out>, param_values=0x7fffd8deaab0, invocation_hint=<optimized out>, marshal_data=<optimized out>) at ./debian/build/deb/gtk/gtkmarshalers.c:83
#2 0x00007f98434c3500 in g_closure_invoke () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#3 0x00007f98434d6b36 in () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#4 0x00007f98434dceed in g_signal_emit_valist () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#5 0x00007f98434dd87f in g_signal_emit () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#6 0x00007f9842eca554 in gtk_widget_event_internal (widget=widget@entry=0x563e23b4c550, event=event@entry=0x7f97ac0043e0) at ../../../../gtk/gtkwidget.c:7812
#7 0x00007f9842ecce91 in gtk_widget_event_internal (event=0x7f97ac0043e0, widget=0x563e23b4c550) at ../../../../gtk/gtkwidget.c:7383
#8 0x00007f9842d8064e in propagate_event_up (topmost=<optimized out>, event=<optimized out>, widget=0x563e23b4c550) at ../../../../gtk/gtkmain.c:2598
#9 propagate_event (widget=<optimized out>, event=0x7f97ac0043e0, captured=<optimized out>, topmost=0x0) at ../../../../gtk/gtkmain.c:2701
#10 0x00007f9842d82066 in gtk_main_do_event (event=0x7f97ac0043e0) at ../../../../gtk/gtkmain.c:1921
#11 gtk_main_do_event (event=<optimized out>) at ../../../../gtk/gtkmain.c:1691
#12 0x00007f98422655a5 in _gdk_event_emit (event=event@entry=0x7f97ac0043e0) at ../../../../gdk/gdkevents.c:73
#13 0x00007f98422995b2 in gdk_event_source_dispatch (source=<optimized out>, callback=<optimized out>, user_data=<optimized out>)
at ../../../../../gdk/x11/gdkeventsource.c:367
#14 0x00007f98433cb729 in g_main_context_dispatch () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#15 0x00007f98433cb9b8 in () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#16 0x00007f98433cba4c in g_main_context_iteration () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#17 0x00007f9842a2fd5d in g_application_run () at /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0
#18 0x0000563e226d424e in main (argc=2, argv=0x7fffd8deb0d8) at ../src/totem.c:66
(gdb) frame
#0 gtk_range_multipress_gesture_pressed (gesture=0x563e23b45c30, n_press=<optimized out>, x=296, y=20, range=0x563e23b4c550) at ../../../../gtk/gtkrange.c:2701
2701 sequence = gtk_gesture_single_get_current_sequence (GTK_GESTURE_SINGLE (gesture));
(gdb)
2708 source = gdk_device_get_source (source_device);
(gdb) p shift_pressed
$44 = 0
(gdb) p primary_warps
$45 = 1128180092
(gdb) n
2711 priv->mouse_y = y;
(gdb) p source
$46 = GDK_SOURCE_MOUSE
(gdb) n
2714 gtk_css_gadget_get_margin_box (priv->slider_gadget, &slider_alloc);
(gdb)
2716 g_object_get (gtk_widget_get_settings (widget),
(gdb)
2720 if (priv->mouse_location == priv->slider_gadget &&
(gdb) p primary_warps
$49 = 0
(gdb) p shift_pressed
$50 = 0
(gdb) n
2741 else if (priv->mouse_location == priv->stepper_a_gadget ||
#0 gtk_range_multipress_gesture_pressed (gesture=<optimized out>, n_press=<optimized out>, x=296, y=20, range=0x563e23b4c550) at ../../../../gtk/gtkrange.c:2741
#1 0x00007f9842f263a9 in _gtk_marshal_VOID__INT_DOUBLE_DOUBLEv
(closure=<optimized out>, return_value=<optimized out>, instance=<optimized out>, args=<optimized out>, marshal_data=<optimized out>, n_params=<optimized out>, param_types=0x563e2399b850) at ./debian/build/deb/gtk/gtkmarshalers.c:4803
#2 0x00007f98434c36f9 in () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#3 0x00007f98434dd67f in g_signal_emit_valist () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#4 0x00007f98434dd87f in g_signal_emit () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#5 0x00007f9842d38b19 in gtk_gesture_multi_press_begin (gesture=0x563e23b45c30, sequence=<optimized out>) at ../../../../gtk/gtkgesturemultipress.c:242
#6 0x00007f98434c64b2 in g_cclosure_marshal_VOID__BOXEDv () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#7 0x00007f98434c36f9 in () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#8 0x00007f98434dd67f in g_signal_emit_valist () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#9 0x00007f98434dd87f in g_signal_emit () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#10 0x00007f9842d3575e in _gtk_gesture_set_recognized (recognized=1, sequence=0x0, gesture=0x563e23b45c30) at ../../../../gtk/gtkgesture.c:344
#11 _gtk_gesture_set_recognized (sequence=0x0, recognized=1, gesture=0x563e23b45c30) at ../../../../gtk/gtkgesture.c:330
#12 _gtk_gesture_check_recognized (gesture=gesture@entry=0x563e23b45c30, sequence=sequence@entry=0x0) at ../../../../gtk/gtkgesture.c:390
#13 0x00007f9842d36c9a in gtk_gesture_handle_event (controller=0x563e23b45c30, event=<optimized out>) at ../../../../gtk/gtkgesture.c:754
#14 0x00007f9842d39d95 in gtk_gesture_single_handle_event (controller=0x563e23b45c30, event=0x7f97ac0043e0) at ../../../../gtk/gtkgesturesingle.c:222
#15 0x00007f9842d00311 in gtk_event_controller_handle_event (controller=0x563e23b45c30, event=event@entry=0x7f97ac0043e0) at ../../../../gtk/gtkeventcontroller.c:230
#16 0x00007f9842ec8ccd in _gtk_widget_run_controllers (widget=0x563e23b4c550, event=0x7f97ac0043e0, phase=GTK_PHASE_BUBBLE) at ../../../../gtk/gtkwidget.c:7447
#17 0x00007f9842f20057 in _gtk_marshal_BOOLEAN__BOXED
(closure=0x563e23835180, return_value=0x7fffd8deaa50, n_param_values=<optimized out>, param_values=0x7fffd8deaab0, invocation_hint=<optimized out>, marshal_data=<optimized out>) at ./debian/build/deb/gtk/gtkmarshalers.c:83
#18 0x00007f98434c3500 in g_closure_invoke () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#19 0x00007f98434d6c65 in () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#20 0x00007f98434dceed in g_signal_emit_valist () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#21 0x00007f98434dd87f in g_signal_emit () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#22 0x00007f9842eca554 in gtk_widget_event_internal (widget=widget@entry=0x563e23b4c550, event=event@entry=0x7f97ac0043e0) at ../../../../gtk/gtkwidget.c:7812
#23 0x00007f9842ecce91 in gtk_widget_event_internal (event=0x7f97ac0043e0, widget=0x563e23b4c550) at ../../../../gtk/gtkwidget.c:7383
#24 0x00007f9842d8064e in propagate_event_up (topmost=<optimized out>, event=<optimized out>, widget=0x563e23b4c550) at ../../../../gtk/gtkmain.c:2598
#25 propagate_event (widget=<optimized out>, event=0x7f97ac0043e0, captured=<optimized out>, topmost=0x0) at ../../../../gtk/gtkmain.c:2701
#26 0x00007f9842d82066 in gtk_main_do_event (event=0x7f97ac0043e0) at ../../../../gtk/gtkmain.c:1921
#27 gtk_main_do_event (event=<optimized out>) at ../../../../gtk/gtkmain.c:1691
#28 0x00007f98422655a5 in _gdk_event_emit (event=event@entry=0x7f97ac0043e0) at ../../../../gdk/gdkevents.c:73
#29 0x00007f98422995b2 in gdk_event_source_dispatch (source=<optimized out>, callback=<optimized out>, user_data=<optimized out>)
at ../../../../../gdk/x11/gdkeventsource.c:367
#30 0x00007f98433cb729 in g_main_context_dispatch () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#31 0x00007f98433cb9b8 in () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#32 0x00007f98433cba4c in g_main_context_iteration () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#33 0x00007f9842a2fd5d in g_application_run () at /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0
#34 0x0000563e226d424e in main (argc=2, argv=0x7fffd8deb0d8) at ../src/totem.c:66
(gdb) n
2760 else if (priv->mouse_location == priv->trough_gadget &&
(gdb) n
2792 else if (priv->mouse_location == priv->trough_gadget &&
(gdb) n
2801 click_value = coord_to_value (range,
(gdb) l -
2786 range_grab_add (range, priv->slider_gadget);
2787
2788 gtk_widget_queue_draw (widget);
2789
2790 update_slider_position (range, x, y);
2791 }
2792 else if (priv->mouse_location == priv->trough_gadget &&
2793 ((primary_warps && shift_pressed && button == GDK_BUTTON_PRIMARY) ||
2794 (!primary_warps && !shift_pressed && button == GDK_BUTTON_PRIMARY) ||
2795 (primary_warps && button == GDK_BUTTON_MIDDLE)))
(gdb) l
2796 {
2797 /* jump by pages */
2798 GtkScrollType scroll;
2799 gdouble click_value;
2800
2801 click_value = coord_to_value (range,
2802 priv->orientation == GTK_ORIENTATION_VERTICAL ?
2803 y : x);
2804
2805 priv->trough_click_forward = click_value > gtk_adjustment_get_value (priv->adjustment);
(gdb)
2806 range_grab_add (range, priv->trough_gadget);
2807
2808 scroll = range_get_scroll_for_grab (range);
2809 gtk_range_add_step_timer (range, scroll);
2810 }
2811 else if (priv->mouse_location == priv->trough_gadget &&
2812 button == GDK_BUTTON_SECONDARY)
2813 {
2814 /* autoscroll */
2815 gdouble click_value;
(gdb) n
2805 priv->trough_click_forward = click_value > gtk_adjustment_get_value (priv->adjustment);
(gdb) p click_value
$52 = 28843.553654743391
(gdb) p gtk_adjustment_get_value (priv->adjustment)
$53 = 9691.4968220293576
(gdb) n
2806 range_grab_add (range, priv->trough_gadget);
(gdb) p priv->trough_click_forward
$54 = 1
(gdb) n
2808 scroll = range_get_scroll_for_grab (range);
(gdb)
2809 gtk_range_add_step_timer (range, scroll);
(gdb) p scroll
$55 = <optimized out>
(gdb) p range
$56 = 0x563e23b4c550
(gdb) p range_get_scroll_for_grab (range)
$57 = GTK_SCROLL_PAGE_FORWARD
(gdb) s
2809 gtk_range_add_step_timer (range, scroll);
(gdb) s
gtk_range_add_step_timer (step=GTK_SCROLL_PAGE_FORWARD, range=0x563e23b4c550) at ../../../../gtk/gtkrange.c:3844
3844 g_return_if_fail (priv->timer == NULL);
(gdb) n
3845 g_return_if_fail (step != GTK_SCROLL_NONE);
(gdb)
gtk_range_multipress_gesture_pressed (gesture=<optimized out>, n_press=<optimized out>, x=<optimized out>, y=20, range=0x563e23b4c550) at ../../../../gtk/gtkrange.c:2809
2809 gtk_range_add_step_timer (range, scroll);
(gdb) s
gtk_range_add_step_timer (step=GTK_SCROLL_PAGE_FORWARD, range=0x563e23b4c550) at ../../../../gtk/gtkrange.c:3847
3847 priv->timer = g_new (GtkRangeStepTimer, 1);
(gdb) l
3842 GtkRangePrivate *priv = range->priv;
3843
3844 g_return_if_fail (priv->timer == NULL);
3845 g_return_if_fail (step != GTK_SCROLL_NONE);
3846
3847 priv->timer = g_new (GtkRangeStepTimer, 1);
3848
3849 priv->timer->timeout_id = gdk_threads_add_timeout (TIMEOUT_INITIAL,
3850 initial_timeout,
3851 range);
(gdb) n
3849 priv->timer->timeout_id = gdk_threads_add_timeout (TIMEOUT_INITIAL,
(gdb)
3852 g_source_set_name_by_id (priv->timer->timeout_id, "[gtk+] initial_timeout");
(gdb)
3853 priv->timer->step = step;
(gdb) p initial_timeout
$58 = {gboolean (gpointer)} 0x7f9842ddf430 <initial_timeout>
(gdb) l
3848
3849 priv->timer->timeout_id = gdk_threads_add_timeout (TIMEOUT_INITIAL,
3850 initial_timeout,
3851 range);
3852 g_source_set_name_by_id (priv->timer->timeout_id, "[gtk+] initial_timeout");
3853 priv->timer->step = step;
3854
3855 gtk_range_scroll (range, priv->timer->step);
3856 }
3857
(gdb) n
3855 gtk_range_scroll (range, priv->timer->step);
(gdb) s
gtk_range_scroll (range=range@entry=0x563e23b4c550, scroll=scroll@entry=GTK_SCROLL_PAGE_FORWARD) at ../../../../gtk/gtkrange.c:3369
3369 {
(gdb) l
3364 }
3365
3366 static gboolean
3367 gtk_range_scroll (GtkRange *range,
3368 GtkScrollType scroll)
3369 {
3370 GtkRangePrivate *priv = range->priv;
3371 gdouble old_value = gtk_adjustment_get_value (priv->adjustment);
3372
3373 switch (scroll)
(gdb)
3374 {
3375 case GTK_SCROLL_STEP_LEFT:
3376 if (should_invert (range))
3377 step_forward (range);
3378 else
3379 step_back (range);
3380 break;
3381
3382 case GTK_SCROLL_STEP_UP:
3383 if (should_invert (range))
(gdb)
3384 step_forward (range);
3385 else
3386 step_back (range);
3387 break;
3388
3389 case GTK_SCROLL_STEP_RIGHT:
3390 if (should_invert (range))
3391 step_back (range);
3392 else
3393 step_forward (range);
(gdb)
3394 break;
3395
3396 case GTK_SCROLL_STEP_DOWN:
3397 if (should_invert (range))
3398 step_back (range);
3399 else
3400 step_forward (range);
3401 break;
3402
3403 case GTK_SCROLL_STEP_BACKWARD:
(gdb) n
3371 gdouble old_value = gtk_adjustment_get_value (priv->adjustment);
(gdb)
3373 switch (scroll)
(gdb)
3444 page_forward (range);
(gdb)
3445 break;
(gdb)
3463 return gtk_adjustment_get_value (priv->adjustment) != old_value;
(gdb)
gtk_range_multipress_gesture_pressed (gesture=<optimized out>, n_press=<optimized out>, x=<optimized out>, y=<optimized out>, range=0x563e23b4c550)
at ../../../../gtk/gtkrange.c:2829
2829 if (priv->grab_location == priv->slider_gadget);
(gdb) l
2824 remove_autoscroll (range);
2825 range->priv->autoscroll_mode = priv->trough_click_forward ? GTK_SCROLL_END : GTK_SCROLL_START;
2826 add_autoscroll (range);
2827 }
2828
2829 if (priv->grab_location == priv->slider_gadget);
2830 /* leave it to ::drag-begin to claim the sequence */
2831 else if (priv->grab_location != NULL)
2832 gtk_gesture_set_state (priv->multipress_gesture, GTK_EVENT_SEQUENCE_CLAIMED);
2833 }
Thread 1 "totem" hit Breakpoint 14, seek_slider_released_cb (widget=widget@entry=0x563e23b4c550, event=0x7f97700051e0, totem=0x563e2349e1f0) at ../src/totem-object.c:2803
2803 event->button = GDK_BUTTON_PRIMARY;
Thread 1 "totem" hit Breakpoint 14, seek_slider_released_cb (widget=widget@entry=0x563e23b4c550, event=0x7f97700051e0, totem=0x563e2349e1f0) at ../src/totem-object.c:2803
2803 event->button = GDK_BUTTON_PRIMARY;
(gdb) bt
#0 seek_slider_released_cb (widget=widget@entry=0x563e23b4c550, event=0x7f97700051e0, totem=0x563e2349e1f0) at ../src/totem-object.c:2803
#1 0x00007f9842f20057 in _gtk_marshal_BOOLEAN__BOXED
(closure=0x563e242b1bc0, return_value=0x7fffd8deaa50, n_param_values=<optimized out>, param_values=0x7fffd8deaab0, invocation_hint=<optimized out>, marshal_data=<optimized out>) at ./debian/build/deb/gtk/gtkmarshalers.c:83
#2 0x00007f98434c3500 in g_closure_invoke () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#3 0x00007f98434d6b36 in () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#4 0x00007f98434dceed in g_signal_emit_valist () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#5 0x00007f98434dd87f in g_signal_emit () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#6 0x00007f9842eca554 in gtk_widget_event_internal (widget=widget@entry=0x563e23b4c550, event=event@entry=0x7f97700051e0) at ../../../../gtk/gtkwidget.c:7812
#7 0x00007f9842ecce91 in gtk_widget_event_internal (event=0x7f97700051e0, widget=0x563e23b4c550) at ../../../../gtk/gtkwidget.c:7383
#8 0x00007f9842d8064e in propagate_event_up (topmost=<optimized out>, event=<optimized out>, widget=0x563e23b4c550) at ../../../../gtk/gtkmain.c:2598
#9 propagate_event (widget=<optimized out>, event=0x7f97700051e0, captured=<optimized out>, topmost=0x0) at ../../../../gtk/gtkmain.c:2701
#10 0x00007f9842d82066 in gtk_main_do_event (event=0x7f97700051e0) at ../../../../gtk/gtkmain.c:1921
#11 gtk_main_do_event (event=<optimized out>) at ../../../../gtk/gtkmain.c:1691
#12 0x00007f98422655a5 in _gdk_event_emit (event=event@entry=0x7f97700051e0) at ../../../../gdk/gdkevents.c:73
#13 0x00007f98422995b2 in gdk_event_source_dispatch (source=<optimized out>, callback=<optimized out>, user_data=<optimized out>)
at ../../../../../gdk/x11/gdkeventsource.c:367
#14 0x00007f98433cb729 in g_main_context_dispatch () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#15 0x00007f98433cb9b8 in () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#16 0x00007f98433cba4c in g_main_context_iteration () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#17 0x00007f9842a2fd5d in g_application_run () at /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0
#18 0x0000563e226d424e in main (argc=2, argv=0x7fffd8deb0d8) at ../src/totem.c:66
Thread 1 "totem" hit Breakpoint 19, seek_slider_changed_cb (adj=0x563e23b09e30, totem=0x563e2349e1f0) at ../src/totem-object.c:2781
2781 if (totem->seek_lock == FALSE)
(gdb) bt
#0 seek_slider_changed_cb (adj=0x563e23b09e30, totem=0x563e2349e1f0) at ../src/totem-object.c:2781
#1 0x00007f98434c3500 in g_closure_invoke () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#2 0x00007f98434d6b36 in () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#3 0x00007f98434dd6b5 in g_signal_emit_valist () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#4 0x00007f98434dd87f in g_signal_emit () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#5 0x00007f9842c488f7 in emit_value_changed (adjustment=0x563e23b09e30) at ../../../../gtk/gtkadjustment.c:349
#6 adjustment_set_value (value=<optimized out>, adjustment=0x563e23b09e30) at ../../../../gtk/gtkadjustment.c:450
#7 gtk_adjustment_set_value_internal (animate=0, value=<optimized out>, adjustment=0x563e23b09e30) at ../../../../gtk/gtkadjustment.c:545
#8 gtk_adjustment_set_value (adjustment=0x563e23b09e30, value=10809.590285786802) at ../../../../gtk/gtkadjustment.c:567
#9 0x00007f984353c153 in update_current_time
(bvw=<optimized out>, current_time=1269866, stream_length=7698781, current_position=0.16494377486513775, seekable=<optimized out>, totem=0x563e2349e1f0)
at ../src/totem-object.c:2676
#10 0x00007f9841e867ea in () at /usr/lib/x86_64-linux-gnu/libffi.so.8
#11 0x00007f9841e85923 in () at /usr/lib/x86_64-linux-gnu/libffi.so.8
#12 0x00007f98434c3cac in g_cclosure_marshal_generic () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#13 0x00007f98434c3500 in g_closure_invoke () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#14 0x00007f98434d6b36 in () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#15 0x00007f98434dd6b5 in g_signal_emit_valist () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#16 0x00007f98434dd87f in g_signal_emit () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#17 0x00007f9843553c6a in got_time_tick (time_nanos=<optimized out>, bvw=<optimized out>, play=<optimized out>) at ../src/backend/bacon-video-widget.c:2074
#18 0x00007f98435550f7 in bvw_query_timeout (bvw=0x563e23b281d0) at ../src/backend/bacon-video-widget.c:2275
#19 0x00007f98433cc11a in () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#20 0x00007f98433cb5ff in g_main_context_dispatch () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#21 0x00007f98433cb9b8 in () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#22 0x00007f98433cba4c in g_main_context_iteration () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#23 0x00007f9842a2fd5d in g_application_run () at /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0
#24 0x0000563e226d424e in main (argc=2, argv=0x7fffd8deb0d8) at ../src/totem.c:66
The normal case, ie with gtk-primary-button-warps-slider set to 1:
Thread 1 "totem" hit Breakpoint 1, seek_slider_pressed_cb (widget=widget@entry=0x555555bd0470, event=0x7fff60002a90, totem=0x5555555b01f0) at ../src/totem-object.c:2767
2767 event->button = GDK_BUTTON_PRIMARY;
(gdb) c
(gdb) bt
#0 seek_slider_changed_cb (adj=0x555555b72680, totem=0x5555555b01f0) at ../src/totem-object.c:2781
#1 0x00007ffff7ed3500 in g_closure_invoke () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#2 0x00007ffff7ee6b36 in () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#3 0x00007ffff7eed6b5 in g_signal_emit_valist () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#4 0x00007ffff7eed87f in g_signal_emit () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#5 0x00007ffff7658b54 in emit_value_changed (adjustment=0x555555b72680) at ../../../../gtk/gtkadjustment.c:349
#6 adjustment_set_value (value=<optimized out>, adjustment=0x555555b72680) at ../../../../gtk/gtkadjustment.c:450
#7 gtk_adjustment_set_value_internal (animate=1, value=<optimized out>, adjustment=0x555555b72680) at ../../../../gtk/gtkadjustment.c:545
#8 gtk_adjustment_animate_to_value (adjustment=0x555555b72680, value=43225.212765957447) at ../../../../gtk/gtkadjustment.c:576
#9 0x00007ffff77f07d5 in gtk_range_real_change_value (range=range@entry=0x555555b9e4b0, scroll=<optimized out>, value=<optimized out>) at ../../../../gtk/gtkrange.c:3803
#10 0x00007ffff79309bc in _gtk_marshal_BOOLEAN__ENUM_DOUBLE
(closure=0x555555ba5660, return_value=0x7fffffffce10, n_param_values=<optimized out>, param_values=0x7fffffffce70, invocation_hint=<optimized out>, marshal_data=<optimized out>)
at ./debian/build/deb/gtk/gtkmarshalers.c:458
#11 0x00007ffff7ed3500 in g_closure_invoke () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#12 0x00007ffff7ee6c65 in () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#13 0x00007ffff7eeceed in g_signal_emit_valist () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#14 0x00007ffff7eed87f in g_signal_emit () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#15 0x00007ffff77eeadc in update_slider_position (range=range@entry=0x555555b9e4b0, mouse_x=<optimized out>, mouse_y=<optimized out>) at ../../../../gtk/gtkrange.c:2923
#16 0x00007ffff77f22a6 in gtk_range_multipress_gesture_pressed (gesture=<optimized out>, n_press=<optimized out>, x=169, y=10, range=0x555555b9e4b0) at ../../../../gtk/gtkrange.c:2790
#17 0x00007ffff79363a9 in _gtk_marshal_VOID__INT_DOUBLE_DOUBLEv
(closure=<optimized out>, return_value=<optimized out>, instance=<optimized out>, args=<optimized out>, marshal_data=<optimized out>, n_params=<optimized out>, param_types=0x5555559e30b0)
at ./debian/build/deb/gtk/gtkmarshalers.c:4803
#18 0x00007ffff7ed36f9 in () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#19 0x00007ffff7eed67f in g_signal_emit_valist () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#20 0x00007ffff7eed87f in g_signal_emit () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#21 0x00007ffff7748b19 in gtk_gesture_multi_press_begin (gesture=0x555555b9b370, sequence=<optimized out>) at ../../../../gtk/gtkgesturemultipress.c:242
#22 0x00007ffff7ed64b2 in g_cclosure_marshal_VOID__BOXEDv () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
u#23 0x00007ffff7ed36f9 in () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#24 0x00007ffff7eed67f in g_signal_emit_valist () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#25 0x00007ffff7eed87f in g_signal_emit () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
p
#26 0x00007ffff774575e in _gtk_gesture_set_recognized (recognized=1, sequence=0x0, gesture=0x555555b9b370) at ../../../../gtk/gtkgesture.c:344
#27 _gtk_gesture_set_recognized (sequence=0x0, recognized=1, gesture=0x555555b9b370) at ../../../../gtk/gtkgesture.c:330
#28 _gtk_gesture_check_recognized (gesture=gesture@entry=0x555555b9b370, sequence=sequence@entry=0x0) at ../../../../gtk/gtkgesture.c:390
#29 0x00007ffff7746c9a in gtk_gesture_handle_event (controller=0x555555b9b370, event=<optimized out>) at ../../../../gtk/gtkgesture.c:754
#30 0x00007ffff7749d95 in gtk_gesture_single_handle_event (controller=0x555555b9b370, event=0x555556b47040) at ../../../../gtk/gtkgesturesingle.c:222
#31 0x00007ffff7710311 in gtk_event_controller_handle_event (controller=0x555555b9b370, event=event@entry=0x555556b47040) at ../../../../gtk/gtkeventcontroller.c:230
#32 0x00007ffff78d8ccd in _gtk_widget_run_controllers (widget=0x555555b9e4b0, event=0x555556b47040, phase=GTK_PHASE_BUBBLE) at ../../../../gtk/gtkwidget.c:7447
#33 0x00007ffff7930057 in _gtk_marshal_BOOLEAN__BOXED
(closure=0x5555558bc3e0, return_value=0x7fffffffdb30, n_param_values=<optimized out>, param_values=0x7fffffffdb90, invocation_hint=<optimized out>, marshal_data=<optimized out>)
at ./debian/build/deb/gtk/gtkmarshalers.c:83
#34 0x00007ffff7ed3500 in g_closure_invoke () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#35 0x00007ffff7ee6c65 in () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#36 0x00007ffff7eeceed in g_signal_emit_valist () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#37 0x00007ffff7eed87f in g_signal_emit () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#38 0x00007ffff78da554 in gtk_widget_event_internal (widget=widget@entry=0x555555b9e4b0, event=event@entry=0x555556b47040) at ../../../../gtk/gtkwidget.c:7812
#39 0x00007ffff78dce91 in gtk_widget_event_internal (event=0x555556b47040, widget=0x555555b9e4b0) at ../../../../gtk/gtkwidget.c:7383
#40 0x00007ffff779064e in propagate_event_up (topmost=<optimized out>, event=<optimized out>, widget=0x555555b9e4b0) at ../../../../gtk/gtkmain.c:2598
#41 propagate_event (widget=<optimized out>, event=0x555556b47040, captured=<optimized out>, topmost=0x0) at ../../../../gtk/gtkmain.c:2701
#42 0x00007ffff7792066 in gtk_main_do_event (event=0x555556b47040) at ../../../../gtk/gtkmain.c:1921
#43 gtk_main_do_event (event=<optimized out>) at ../../../../gtk/gtkmain.c:1691
#44 0x00007ffff6c755a5 in _gdk_event_emit (event=event@entry=0x555556b47040) at ../../../../gdk/gdkevents.c:73
#45 0x00007ffff6ca95b2 in gdk_event_source_dispatch (source=<optimized out>, callback=<optimized out>, user_data=<optimized out>) at ../../../../../gdk/x11/gdkeventsource.c:367
--Type <RET> for more, q to quit, c to continue without paging--up
#46 0x00007ffff7ddb729 in g_main_context_dispatch () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#47 0x00007ffff7ddb9b8 in () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#48 0x00007ffff7ddba4c in g_main_context_iteration () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#49 0x00007ffff743fd5d in g_application_run () at /lib/x86_64-linux-gnu/libgio-2.0.so.0
#50 0x000055555555624e in main (argc=1, argv=0x7fffffffe1b8) at ../src/totem.c:66
2679 static void
2680 gtk_range_multipress_gesture_pressed (GtkGestureMultiPress *gesture,
2681 guint n_press,
2682 gdouble x,
2683 gdouble y,
2684 GtkRange *range)
(gdb) l
2685 {
2701 sequence = gtk_gesture_single_get_current_sequence (GTK_GESTURE_SINGLE (gesture));
2702 button = gtk_gesture_single_get_current_button (GTK_GESTURE_SINGLE (gesture));
2703 event = gtk_gesture_get_last_event (GTK_GESTURE (gesture), sequence);
2704 gdk_event_get_state (event, &state_mask);
(gdb)
2705 shift_pressed = (state_mask & GDK_SHIFT_MASK) != 0;
2706
2707 source_device = gdk_event_get_source_device ((GdkEvent *) event);
2708 source = gdk_device_get_source (source_device);
2709
2710 priv->mouse_x = x;
2711 priv->mouse_y = y;
2712
2713 gtk_range_update_mouse_location (range);
2714 gtk_css_gadget_get_margin_box (priv->slider_gadget, &slider_alloc);
(gdb)
2715
2716 g_object_get (gtk_widget_get_settings (widget),
2717 "gtk-primary-button-warps-slider", &primary_warps,
2718 NULL);
2719
2760 else if (priv->mouse_location == priv->trough_gadget &&
2761 (source == GDK_SOURCE_TOUCHSCREEN ||
2762 (primary_warps && !shift_pressed && button == GDK_BUTTON_PRIMARY) ||
2763 (!primary_warps && shift_pressed && button == GDK_BUTTON_PRIMARY) ||
2764 (!primary_warps && button == GDK_BUTTON_MIDDLE)))
(gdb)
2765 {
2766 /* warp to location */
2767 GdkRectangle slider;
2768 gdouble slider_low_value, slider_high_value, new_value;
2769
2770 slider_high_value =
2771 coord_to_value (range,
2772 priv->orientation == GTK_ORIENTATION_VERTICAL ?
2773 y : x);
2774 slider_low_value =
(gdb)
2775 coord_to_value (range,
2776 priv->orientation == GTK_ORIENTATION_VERTICAL ?
2777 y - slider_alloc.height :
2778 x - slider_alloc.width);
2779
2780 /* compute new value for warped slider */
2781 new_value = (slider_low_value + slider_high_value) / 2;
2782
2783 gtk_range_compute_slider_position (range, new_value, &slider);
2784 update_initial_slider_position (range, x, y, &slider);
(gdb)
2785
2786 range_grab_add (range, priv->slider_gadget);
2787
2788 gtk_widget_queue_draw (widget);
2789
2790 update_slider_position (range, x, y);
2791 }
2792 else if (priv->mouse_location == priv->trough_gadget &&
2793 ((primary_warps && shift_pressed && button == GDK_BUTTON_PRIMARY) ||
2794 (!primary_warps && !shift_pressed && button == GDK_BUTTON_PRIMARY) ||
(gdb) frame
#16 0x00007ffff77f22a6 in gtk_range_multipress_gesture_pressed (gesture=<optimized out>, n_press=<optimized out>, x=169, y=10, range=0x555555b9e4b0) at ../../../../gtk/gtkrange.c:2790
2790 update_slider_position (range, x, y);
(gdb) p shift
No symbol "shift" in current context.
(gdb) p shift_pressed
$17 = 0
(gdb) p primary_warps
$18 = 1
(gdb) n
[Thread 0x7fff84ff9640 (LWP 2202087) exited]
Thread 1 "totem" hit Hardware read watchpoint 4: *(gboolean *) 0x5555555b02b8
Value = 1
0x00007ffff7f4e186 in seek_slider_changed_cb (adj=0x555555b72680, totem=0x5555555b01f0) at ../src/totem-object.c:2781
2781 if (totem->seek_lock == FALSE)
(gdb)
2784 pos = gtk_adjustment_get_value (adj) / 65535;
(gdb)
Thread 1 "totem" hit Breakpoint 2, 0x00007ffff7f4e19b in seek_slider_changed_cb (totem=0x5555555b01f0, adj=0x555555b72680) at ../src/totem-object.c:2784
2784 pos = gtk_adjustment_get_value (adj) / 65535;
(gdb)
2785 _time = bacon_video_widget_get_stream_length (totem->bvw);
(gdb)
2787 bacon_time_label_set_time (totem->time_label,
(gdb)
2789 bacon_time_label_set_time (totem->time_rem_label,
(gdb)
2792 if (bacon_video_widget_can_direct_seek (totem->bvw) != FALSE)
(gdb)
seek_slider_changed_cb (adj=<optimized out>, totem=0x5555555b01f0) at ../src/totem-object.c:2776
2776 seek_slider_changed_cb (GtkAdjustment *adj, TotemObject *totem)
(gdb)
totem_object_seek (totem=0x5555555b01f0, pos=0.65957446808510634) at ../src/totem-object.c:1526
1526 {
(gdb) bt
#0 totem_object_seek (totem=0x5555555b01f0, pos=0.65957446808510634) at ../src/totem-object.c:1526
#1 0x00007ffff7ed3500 in g_closure_invoke () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#2 0x00007ffff7ee6b36 in () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#3 0x00007ffff7eed6b5 in g_signal_emit_valist () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#4 0x00007ffff7eed87f in g_signal_emit () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#5 0x00007ffff7658b54 in emit_value_changed (adjustment=0x555555b72680) at ../../../../gtk/gtkadjustment.c:349
#6 adjustment_set_value (value=<optimized out>, adjustment=0x555555b72680) at ../../../../gtk/gtkadjustment.c:450
#7 gtk_adjustment_set_value_internal (animate=1, value=<optimized out>, adjustment=0x555555b72680) at ../../../../gtk/gtkadjustment.c:545
#8 gtk_adjustment_animate_to_value (adjustment=0x555555b72680, value=43225.212765957447) at ../../../../gtk/gtkadjustment.c:576
#9 0x00007ffff77f07d5 in gtk_range_real_change_value (range=range@entry=0x555555b9e4b0, scroll=<optimized out>, value=<optimized out>) at ../../../../gtk/gtkrange.c:3803
#10 0x00007ffff79309bc in _gtk_marshal_BOOLEAN__ENUM_DOUBLE
(closure=0x555555ba5660, return_value=0x7fffffffce10, n_param_values=<optimized out>, param_values=0x7fffffffce70, invocation_hint=<optimized out>, marshal_data=<optimized out>)
at ./debian/build/deb/gtk/gtkmarshalers.c:458
#11 0x00007ffff7ed3500 in g_closure_invoke () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#12 0x00007ffff7ee6c65 in () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#13 0x00007ffff7eeceed in g_signal_emit_valist () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#14 0x00007ffff7eed87f in g_signal_emit () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#15 0x00007ffff77eeadc in update_slider_position (range=range@entry=0x555555b9e4b0, mouse_x=<optimized out>, mouse_y=<optimized out>) at ../../../../gtk/gtkrange.c:2923
#16 0x00007ffff77f22a6 in gtk_range_multipress_gesture_pressed (gesture=<optimized out>, n_press=<optimized out>, x=169, y=10, range=0x555555b9e4b0) at ../../../../gtk/gtkrange.c:2790
#17 0x00007ffff79363a9 in _gtk_marshal_VOID__INT_DOUBLE_DOUBLEv
(closure=<optimized out>, return_value=<optimized out>, instance=<optimized out>, args=<optimized out>, marshal_data=<optimized out>, n_params=<optimized out>, param_types=0x5555559e30b0)
at ./debian/build/deb/gtk/gtkmarshalers.c:4803
#18 0x00007ffff7ed36f9 in () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#19 0x00007ffff7eed67f in g_signal_emit_valist () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#20 0x00007ffff7eed87f in g_signal_emit () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#21 0x00007ffff7748b19 in gtk_gesture_multi_press_begin (gesture=0x555555b9b370, sequence=<optimized out>) at ../../../../gtk/gtkgesturemultipress.c:242
#22 0x00007ffff7ed64b2 in g_cclosure_marshal_VOID__BOXEDv () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#23 0x00007ffff7ed36f9 in () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#24 0x00007ffff7eed67f in g_signal_emit_valist () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#25 0x00007ffff7eed87f in g_signal_emit () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#26 0x00007ffff774575e in _gtk_gesture_set_recognized (recognized=1, sequence=0x0, gesture=0x555555b9b370) at ../../../../gtk/gtkgesture.c:344
#27 _gtk_gesture_set_recognized (sequence=0x0, recognized=1, gesture=0x555555b9b370) at ../../../../gtk/gtkgesture.c:330
#28 _gtk_gesture_check_recognized (gesture=gesture@entry=0x555555b9b370, sequence=sequence@entry=0x0) at ../../../../gtk/gtkgesture.c:390
#29 0x00007ffff7746c9a in gtk_gesture_handle_event (controller=0x555555b9b370, event=<optimized out>) at ../../../../gtk/gtkgesture.c:754
#30 0x00007ffff7749d95 in gtk_gesture_single_handle_event (controller=0x555555b9b370, event=0x555556b47040) at ../../../../gtk/gtkgesturesingle.c:222
#31 0x00007ffff7710311 in gtk_event_controller_handle_event (controller=0x555555b9b370, event=event@entry=0x555556b47040) at ../../../../gtk/gtkeventcontroller.c:230
#32 0x00007ffff78d8ccd in _gtk_widget_run_controllers (widget=0x555555b9e4b0, event=0x555556b47040, phase=GTK_PHASE_BUBBLE) at ../../../../gtk/gtkwidget.c:7447
#33 0x00007ffff7930057 in _gtk_marshal_BOOLEAN__BOXED
(closure=0x5555558bc3e0, return_value=0x7fffffffdb30, n_param_values=<optimized out>, param_values=0x7fffffffdb90, invocation_hint=<optimized out>, marshal_data=<optimized out>)
at ./debian/build/deb/gtk/gtkmarshalers.c:83
#34 0x00007ffff7ed3500 in g_closure_invoke () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#35 0x00007ffff7ee6c65 in () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#36 0x00007ffff7eeceed in g_signal_emit_valist () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#37 0x00007ffff7eed87f in g_signal_emit () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#38 0x00007ffff78da554 in gtk_widget_event_internal (widget=widget@entry=0x555555b9e4b0, event=event@entry=0x555556b47040) at ../../../../gtk/gtkwidget.c:7812
#39 0x00007ffff78dce91 in gtk_widget_event_internal (event=0x555556b47040, widget=0x555555b9e4b0) at ../../../../gtk/gtkwidget.c:7383
#40 0x00007ffff779064e in propagate_event_up (topmost=<optimized out>, event=<optimized out>, widget=0x555555b9e4b0) at ../../../../gtk/gtkmain.c:2598
#41 propagate_event (widget=<optimized out>, event=0x555556b47040, captured=<optimized out>, topmost=0x0) at ../../../../gtk/gtkmain.c:2701
#42 0x00007ffff7792066 in gtk_main_do_event (event=0x555556b47040) at ../../../../gtk/gtkmain.c:1921
#43 gtk_main_do_event (event=<optimized out>) at ../../../../gtk/gtkmain.c:1691
#44 0x00007ffff6c755a5 in _gdk_event_emit (event=event@entry=0x555556b47040) at ../../../../gdk/gdkevents.c:73
#45 0x00007ffff6ca95b2 in gdk_event_source_dispatch (source=<optimized out>, callback=<optimized out>, user_data=<optimized out>) at ../../../../../gdk/x11/gdkeventsource.c:367
#46 0x00007ffff7ddb729 in g_main_context_dispatch () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#47 0x00007ffff7ddb9b8 in () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
--Type <RET> for more, q to quit, c to continue without paging--c
#48 0x00007ffff7ddba4c in g_main_context_iteration () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#49 0x00007ffff743fd5d in g_application_run () at /lib/x86_64-linux-gnu/libgio-2.0.so.0
#50 0x000055555555624e in main (argc=1, argv=0x7fffffffe1b8) at ../src/totem.c:66
(gdb) n
1527 GError *err = NULL;
(gdb)
1530 if (totem->mrl == NULL)
(gdb)
1532 if (bacon_video_widget_is_seekable (totem->bvw) == FALSE)
(gdb)
1535 retval = bacon_video_widget_seek (totem->bvw, pos, &err);
(gdb)
Thread 1 "totem" hit Hardware read watchpoint 4: *(gboolean *) 0x5555555b02b8
Value = 1
0x00007ffff7f4c137 in update_current_time (bvw=0x555555b28250, current_time=129355, stream_length=196120, current_position=0.65957067101774425, seekable=1, totem=0x5555555b01f0) at ../src/totem-object.c:2675
2675 if (totem->seek_lock == FALSE) {
(gdb)
0x00007ffff68997ea in ?? () from /lib/x86_64-linux-gnu/libffi.so.8
(gdb)
Cannot find bounds of current function
(gdb) c
Continuing.
[Thread 0x7fff85ffb640 (LWP 2202090) exited]
[Thread 0x7fff6ffff640 (LWP 2202091) exited]
[Thread 0x7fff857fa640 (LWP 2202089) exited]
Thread 1 "totem" hit Breakpoint 3, seek_slider_released_cb (widget=widget@entry=0x555555b9e4b0, event=0x7fff700021f0, totem=0x5555555b01f0) at ../src/totem-object.c:2803
2803 event->button = GDK_BUTTON_PRIMARY;
(gdb) bt
#0 seek_slider_released_cb (widget=widget@entry=0x555555b9e4b0, event=0x7fff700021f0, totem=0x5555555b01f0) at ../src/totem-object.c:2803
#1 0x00007ffff7930057 in _gtk_marshal_BOOLEAN__BOXED
(closure=0x5555564a1250, return_value=0x7fffffffdb30, n_param_values=<optimized out>, param_values=0x7fffffffdb90, invocation_hint=<optimized out>, marshal_data=<optimized out>)
at ./debian/build/deb/gtk/gtkmarshalers.c:83
#2 0x00007ffff7ed3500 in g_closure_invoke () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#3 0x00007ffff7ee6b36 in () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#4 0x00007ffff7eeceed in g_signal_emit_valist () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#5 0x00007ffff7eed87f in g_signal_emit () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#6 0x00007ffff78da554 in gtk_widget_event_internal (widget=widget@entry=0x555555b9e4b0, event=event@entry=0x7fff700021f0) at ../../../../gtk/gtkwidget.c:7812
#7 0x00007ffff78dce91 in gtk_widget_event_internal (event=0x7fff700021f0, widget=0x555555b9e4b0) at ../../../../gtk/gtkwidget.c:7383
#8 0x00007ffff779064e in propagate_event_up (topmost=<optimized out>, event=<optimized out>, widget=0x555555b9e4b0) at ../../../../gtk/gtkmain.c:2598
#9 propagate_event (widget=<optimized out>, event=0x7fff700021f0, captured=<optimized out>, topmost=0x0) at ../../../../gtk/gtkmain.c:2701
#10 0x00007ffff7792066 in gtk_main_do_event (event=0x7fff700021f0) at ../../../../gtk/gtkmain.c:1921
#11 gtk_main_do_event (event=<optimized out>) at ../../../../gtk/gtkmain.c:1691
#12 0x00007ffff6c755a5 in _gdk_event_emit (event=event@entry=0x7fff700021f0) at ../../../../gdk/gdkevents.c:73
#13 0x00007ffff6ca95b2 in gdk_event_source_dispatch (source=<optimized out>, callback=<optimized out>, user_data=<optimized out>) at ../../../../../gdk/x11/gdkeventsource.c:367
#14 0x00007ffff7ddb729 in g_main_context_dispatch () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#15 0x00007ffff7ddb9b8 in () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#16 0x00007ffff7ddba4c in g_main_context_iteration () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#17 0x00007ffff743fd5d in g_application_run () at /lib/x86_64-linux-gnu/libgio-2.0.so.0
#18 0x000055555555624e in main (argc=1, argv=0x7fffffffe1b8) at ../src/totem.c:66
(gdb) c
Continuing.
[New Thread 0x7fff6ffff640 (LWP 2221269)]
[New Thread 0x7fff85ffb640 (LWP 2221270)]
[New Thread 0x7fff857fa640 (LWP 2221271)]
[New Thread 0x7fff84ff9640 (LWP 2221272)]
[New Thread 0x7fff6f7fe640 (LWP 2221273)]
Thread 1 "totem" hit Breakpoint 2, seek_slider_changed_cb (adj=0x555555b72680, totem=0x5555555b01f0) at ../src/totem-object.c:2781
2781 if (totem->seek_lock == FALSE)