[Mplayerplug-in-cvs] mplayerplug-in/Source plugin-threads.cpp,1.203,1.204 plugin-ui.cpp,1.186,1.187
Brought to you by:
kdekorte
From: Kevin D. <kde...@us...> - 2006-01-20 16:42:42
|
Update of /cvsroot/mplayerplug-in/mplayerplug-in/Source In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10318/Source Modified Files: plugin-threads.cpp plugin-ui.cpp plugin.cpp plugin.h Log Message: Disconnect window_visible callback prior to shutdown Apply locking patch from Yasuhiro Index: plugin.h =================================================================== RCS file: /cvsroot/mplayerplug-in/mplayerplug-in/Source/plugin.h,v retrieving revision 1.95 retrieving revision 1.96 diff -C2 -d -r1.95 -r1.96 *** plugin.h 18 Jan 2006 02:05:55 -0000 1.95 --- plugin.h 20 Jan 2006 16:42:32 -0000 1.96 *************** *** 205,208 **** --- 205,209 ---- #ifdef GTK_ENABLED gulong delete_signal_id; + gulong visible_signal_id; GtkWidget *gtkwidget; GtkWidget *button_window; Index: plugin-threads.cpp =================================================================== RCS file: /cvsroot/mplayerplug-in/mplayerplug-in/Source/plugin-threads.cpp,v retrieving revision 1.203 retrieving revision 1.204 diff -C2 -d -r1.203 -r1.204 *** plugin-threads.cpp 18 Jan 2006 02:05:55 -0000 1.203 --- plugin-threads.cpp 20 Jan 2006 16:42:32 -0000 1.204 *************** *** 409,413 **** instance->td->argv[i++] = strdup(buffer); #ifdef GTK2_ENABLED ! g_signal_connect_after(G_OBJECT(instance->gtkwidget), "visibility-notify-event", G_CALLBACK(window_visible), instance); --- 409,413 ---- instance->td->argv[i++] = strdup(buffer); #ifdef GTK2_ENABLED ! instance->visible_signal_id = g_signal_connect_after(G_OBJECT(instance->gtkwidget), "visibility-notify-event", G_CALLBACK(window_visible), instance); *************** *** 1968,1972 **** } pthread_mutex_unlock(&(local_td->instance->control_mutex)); ! // since thread is dead, reset thread state variables. local_td->instance->threadsetup = 0; --- 1968,1972 ---- } pthread_mutex_unlock(&(local_td->instance->control_mutex)); ! pthread_mutex_unlock(&(local_td->instance->playlist_cond_mutex)); // since thread is dead, reset thread state variables. local_td->instance->threadsetup = 0; Index: plugin.cpp =================================================================== RCS file: /cvsroot/mplayerplug-in/mplayerplug-in/Source/plugin.cpp,v retrieving revision 1.272 retrieving revision 1.273 diff -C2 -d -r1.272 -r1.273 *** plugin.cpp 19 Jan 2006 05:11:06 -0000 1.272 --- plugin.cpp 20 Jan 2006 16:42:32 -0000 1.273 *************** *** 455,458 **** --- 455,460 ---- g_signal_handler_disconnect(GTK_OBJECT(gtkwidget), delete_signal_id); + g_signal_handler_disconnect(GTK_OBJECT(gtkwidget), + visible_signal_id); if (GTK_IS_WIDGET(button_window)) gtk_widget_destroy(button_window); Index: plugin-ui.cpp =================================================================== RCS file: /cvsroot/mplayerplug-in/mplayerplug-in/Source/plugin-ui.cpp,v retrieving revision 1.186 retrieving revision 1.187 diff -C2 -d -r1.186 -r1.187 *** plugin-ui.cpp 18 Jan 2006 23:59:18 -0000 1.186 --- plugin-ui.cpp 20 Jan 2006 16:42:32 -0000 1.187 *************** *** 2578,2619 **** // only pause if video is present, if we have streaming audio we want to keep playing ! if (event->type == GDK_VISIBILITY_NOTIFY) { ! ! if (((GdkEventVisibility *) event)->state == ! GDK_VISIBILITY_FULLY_OBSCURED) { ! if (instance->paused == 0 && instance->threadsignaled ! && instance->nopauseonhide == 0) { ! if (instance->movie_width != 0 ! && instance->movie_height != 0) { ! instance->Pause(); ! instance->paused_wheninvisible = 1; } ! } ! ! if (instance->onHiddenCallback != NULL) ! NPN_GetURL(instance->mInstance, ! instance->onHiddenCallback, "_self"); ! ! } else { ! if (instance->paused_wheninvisible == 1 ! && instance->threadsignaled ! && instance->nopauseonhide == 0) { ! ! if (instance->movie_width != 0 ! && instance->movie_height != 0) { ! instance->Play(); ! instance->paused_wheninvisible = 0; } } ! ! if (instance->onVisibleCallback != NULL) ! NPN_GetURL(instance->mInstance, ! instance->onVisibleCallback, "_self"); ! } - } - return (FALSE); --- 2578,2621 ---- // only pause if video is present, if we have streaming audio we want to keep playing ! if (instance->cancelled == 0) { ! if (event->type == GDK_VISIBILITY_NOTIFY) { ! ! if (((GdkEventVisibility *) event)->state == ! GDK_VISIBILITY_FULLY_OBSCURED) { ! if (instance->paused == 0 && instance->threadsignaled ! && instance->nopauseonhide == 0) { ! ! if (instance->movie_width != 0 ! && instance->movie_height != 0) { ! instance->Pause(); ! instance->paused_wheninvisible = 1; ! } } ! ! if (instance->onHiddenCallback != NULL) ! NPN_GetURL(instance->mInstance, ! instance->onHiddenCallback, "_self"); ! ! } else { ! if (instance->paused_wheninvisible == 1 ! && instance->threadsignaled ! && instance->nopauseonhide == 0) { ! ! if (instance->movie_width != 0 ! && instance->movie_height != 0) { ! instance->Play(); ! instance->paused_wheninvisible = 0; ! } } + + if (instance->onVisibleCallback != NULL) + NPN_GetURL(instance->mInstance, + instance->onVisibleCallback, "_self"); + } ! } } return (FALSE); |