gboolean update_seek_bar(gpointer data) { GmpvApplication *app = data; GmpvMpv *mpv = gmpv_application_get_mpv(app); mpv_handle *mpv_ctx = gmpv_mpv_get_mpv_handle(mpv); gdouble time_pos = -1; gint rc = -1; if(gmpv_mpv_get_state(mpv)->loaded) { rc = gmpv_mpv_get_property( mpv, "time-pos", MPV_FORMAT_DOUBLE, &time_pos ); } if(rc >= 0) { GmpvMainWindow *wnd; GmpvControlBox *control_box; wnd = gmpv_application_get_main_window(app); control_box = gmpv_main_window_get_control_box(wnd); gmpv_control_box_set_seek_bar_pos(control_box, time_pos); } return !!mpv_ctx; }
void gmpv_playbackctl_connect_signals(GmpvApplication *app) { GmpvMainWindow *wnd = gmpv_application_get_main_window(app); GmpvControlBox *control_box = gmpv_main_window_get_control_box(wnd); const struct { const gchar *name; GCallback handler; } signals_map[] = { {"play-button-clicked", G_CALLBACK(play_handler)}, {"stop-button-clicked", G_CALLBACK(stop_handler)}, {"forward-button-clicked", G_CALLBACK(forward_handler)}, {"rewind-button-clicked", G_CALLBACK(rewind_handler)}, {"previous-button-clicked", G_CALLBACK(chapter_previous_handler)}, {"next-button-clicked", G_CALLBACK(chapter_next_handler)}, {"fullscreen-button-clicked", G_CALLBACK(fullscreen_handler)}, {"seek", G_CALLBACK(seek_handler)}, {"volume-changed", G_CALLBACK(volume_handler)}, {NULL, NULL} }; for(gint i = 0; signals_map[i].name; i++) { g_signal_connect( control_box, signals_map[i].name, signals_map[i].handler, app ); } }