marlin r1352 - trunk/src
- From: iain svn gnome org
- To: svn-commits-list gnome org
- Subject: marlin r1352 - trunk/src
- Date: Thu, 12 Feb 2009 23:51:42 +0000 (UTC)
Author: iain
Date: Thu Feb 12 23:51:42 2009
New Revision: 1352
URL: http://svn.gnome.org/viewvc/marlin?rev=1352&view=rev
Log:
Disconnect jack signals when the window is destroyed
Turn the Processing menu on when the sample stops playing
Modified:
trunk/src/marlin-window.c
Modified: trunk/src/marlin-window.c
==============================================================================
--- trunk/src/marlin-window.c (original)
+++ trunk/src/marlin-window.c Thu Feb 12 23:51:42 2009
@@ -162,6 +162,9 @@
MarlinJackPlay *jack;
guint jack_owner_id;
guint32 owner_changed_id;
+ guint32 eos_id;
+ guint32 level_id;
+ guint32 position_id;
MarlinState state;
guint64 initial; /* The initial position of the cursor when play
@@ -309,6 +312,11 @@
program = marlin_program_get_default ();
g_signal_handler_disconnect (program, priv->owner_changed_id);
+ /* Turn off the jack signals */
+ g_signal_handler_disconnect (priv->jack, priv->eos_id);
+ g_signal_handler_disconnect (priv->jack, priv->level_id);
+ g_signal_handler_disconnect (priv->jack, priv->position_id);
+
/* Give up our jack ownership */
marlin_program_release_jack (program, priv->jack_owner_id);
@@ -1095,17 +1103,19 @@
play_eos (MarlinJack *jack,
MarlinWindow *window)
{
- g_print ("play eos\n");
- window->priv->state = MARLIN_STATE_STOPPED;
+ MarlinWindowPrivate *priv = window->priv;
- g_object_set (G_OBJECT (window->priv->view),
+ priv->state = MARLIN_STATE_STOPPED;
+
+ g_object_set (G_OBJECT (priv->view),
"show_play_cursor", FALSE,
NULL);
- marlin_window_move_cursor_to (window, window->priv->initial);
+ marlin_window_move_cursor_to (window, priv->initial);
- gtk_vumeter_set_levels (GTK_VUMETER (window->priv->left_vu), 0.0, 0.0);
- gtk_vumeter_set_levels (GTK_VUMETER (window->priv->right_vu), 0.0, 0.0);
+ gtk_vumeter_set_levels (GTK_VUMETER (priv->left_vu), 0.0, 0.0);
+ gtk_vumeter_set_levels (GTK_VUMETER (priv->right_vu), 0.0, 0.0);
+ set_path_sensitive (priv->ui_action, "Process", TRUE);
}
static void
@@ -1458,11 +1468,27 @@
MarlinWindow *window)
{
MarlinWindowPrivate *priv = window->priv;
+ gboolean own_jack = (jack_owner == priv->jack_owner_id);
/* If we are the jack owner then turn on the
play/pause/record actions */
- marlin_window_set_jack_sensitive (window,
- priv->jack_owner_id == jack_owner);
+ marlin_window_set_jack_sensitive (window, own_jack);
+
+#if 0
+ /* If we don't own jack, we don't want to know about any of
+ its events. We'll just get confused */
+ if (own_jack) {
+ g_print ("Unblocking signals\n");
+ g_signal_handler_unblock (priv->jack, priv->eos_id);
+ g_signal_handler_unblock (priv->jack, priv->level_id);
+ g_signal_handler_unblock (priv->jack, priv->position_id);
+ } else {
+ g_print ("Blocking signals\n");
+ g_signal_handler_block (priv->jack, priv->eos_id);
+ g_signal_handler_block (priv->jack, priv->level_id);
+ g_signal_handler_block (priv->jack, priv->position_id);
+ }
+#endif
}
MarlinWindow *
@@ -1717,18 +1743,21 @@
G_CALLBACK (jack_owner_changed_cb),
window);
- g_signal_connect (priv->jack, "eos",
- G_CALLBACK (play_eos), window);
+ priv->eos_id = g_signal_connect (priv->jack, "eos",
+ G_CALLBACK (play_eos), window);
/* Turn on the level emissions */
g_object_set (priv->jack,
"emit-level", TRUE,
NULL);
- g_signal_connect (priv->jack, "level-changed",
- G_CALLBACK (level_cb), window);
-
- g_signal_connect (priv->jack, "position-changed",
- G_CALLBACK (position_changed), window);
+ priv->level_id = g_signal_connect (priv->jack, "level-changed",
+ G_CALLBACK (level_cb),
+ window);
+
+ priv->position_id = g_signal_connect (priv->jack,
+ "position-changed",
+ G_CALLBACK (position_changed),
+ window);
} else {
display_no_jack_window (GTK_WIDGET (window));
set_path_sensitive (priv->ui_action, "MediaRecord", FALSE);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]