marlin r1280 - in trunk: marlin src src/dialogs
- From: iain svn gnome org
- To: svn-commits-list gnome org
- Subject: marlin r1280 - in trunk: marlin src src/dialogs
- Date: Tue, 30 Sep 2008 19:14:07 +0000 (UTC)
Author: iain
Date: Tue Sep 30 19:14:07 2008
New Revision: 1280
URL: http://svn.gnome.org/viewvc/marlin?rev=1280&view=rev
Log:
Fix a lot of crashes in the dialogs
Play the sample at the correct speed
Modified:
trunk/marlin/marlin-jack-play.c
trunk/marlin/marlin-jack.c
trunk/marlin/marlin-sample.c
trunk/src/dialogs/marlin-add-marker-dialog.c
trunk/src/dialogs/marlin-adjust-channel-dialogs.c
trunk/src/dialogs/marlin-crossfade-dialog.c
trunk/src/dialogs/marlin-edit-marker-dialog.c
trunk/src/dialogs/marlin-select-region-dialog.c
trunk/src/dialogs/marlin-undo-history-dialog.c
trunk/src/marlin-window-menu.c
Modified: trunk/marlin/marlin-jack-play.c
==============================================================================
--- trunk/marlin/marlin-jack-play.c (original)
+++ trunk/marlin/marlin-jack-play.c Tue Sep 30 19:14:07 2008
@@ -86,7 +86,7 @@
guint channels;
- guint rate, jrate;
+ guint sample_rate, jack_rate;
double src_ratio;
struct _port_data **port_data;
@@ -111,9 +111,9 @@
{
MarlinJackPlayPrivate *priv;
int i;
-
+
priv = jack->priv;
-
+
for (i = 0; i < priv->channels; i++) {
struct _port_data *pd = priv->port_data[i];
@@ -156,7 +156,7 @@
JACK_DEFAULT_AUDIO_TYPE,
JackPortIsOutput, 0);
g_free (name);
-
+
priv->port_data[i] = pd;
}
}
@@ -223,14 +223,14 @@
MarlinJackPlay *jack)
{
MarlinJackPlayPrivate *priv = jack->priv;
-
- if (strcmp (pspec->name, "sample_rate") == 0) {
+
+ if (strcmp (pspec->name, "sample-rate") == 0) {
g_object_get (object,
- "sample_rate", &priv->rate,
+ "sample-rate", &priv->sample_rate,
NULL);
-
- priv->src_ratio = calculate_rate_ratio (priv->rate,
- priv->jrate);
+
+ priv->src_ratio = calculate_rate_ratio (priv->sample_rate,
+ priv->jack_rate);
return;
}
@@ -254,35 +254,38 @@
if (priv->sample) {
free_ports ((MarlinJackPlay *) jack);
-
- g_signal_handler_disconnect (priv->sample,
+
+ g_signal_handler_disconnect (priv->sample,
priv->sample_notify_id);
g_object_unref (priv->sample);
}
-
+
priv->sample = sample;
g_object_ref (priv->sample);
g_object_get (G_OBJECT (priv->sample),
"channels", &priv->channels,
- "sample_rate", &priv->rate,
+ "sample_rate", &priv->sample_rate,
NULL);
-
+
priv->sample_notify_id = g_signal_connect (priv->sample,
"notify",
G_CALLBACK (sample_changed),
jack);
-
+
+ priv->src_ratio = calculate_rate_ratio (priv->sample_rate,
+ priv->jack_rate);
+
setup_ports ((MarlinJackPlay *) jack);
}
/**
* How the process functions work.
- * There are two threads: Thread A is the main GUI thread, thread B is the
+ * There are two threads: Thread A is the main GUI thread, thread B is the
* JACK process thread. Thread B is not able to do anything that is not
* realtime safe. This includes the necessary things to access the frame
* data, which is mmapped from disk and may require mmap calls and locking.
*
- * When start_playing is called, an idle function is started that calls
+ * When start_playing is called, an idle function is started that calls
* process_writer. This is run in thread A and is able to do all the mmapping
* safely. Because it is run in the main thread, the frame data can be accessed
* without locking. process_writer copies enough frame data to fill the ring
@@ -300,16 +303,16 @@
guint frames_needed = 0;
guint64 tmp_pos;
int i;
-
+
priv = jack->priv;
-
+
/* Always output in stereo, even when we've got a mono sample */
for (i = 0; i < 2; i++) {
struct _port_data *pd = priv->port_data[i];
jack_default_audio_sample_t *o_buf;
size_t bytes_avail;
guint frames_avail, blank;
-
+
bytes_avail = jack_ringbuffer_read_space (pd->rb);
frames_avail = bytes_avail / frame_size;
frames_needed = MIN (frames_avail, nframes);
@@ -339,7 +342,7 @@
tmp_pos = (tmp_pos - priv->finish) + priv->start;
}
priv->position = tmp_pos;
-
+
priv->eos = eos;
}
@@ -354,10 +357,10 @@
for (i = 0; i < 2; i++) {
struct _port_data *pd = priv->port_data[i];
jack_default_audio_sample_t *o_buf;
-
+
o_buf = jack_port_get_buffer (pd->playback, nframes);
/* Zero this so that there is silence */
- memset (o_buf, 0,
+ memset (o_buf, 0,
nframes * frame_size);
}
}
@@ -373,9 +376,9 @@
case MARLIN_JACK_PLAY_MODE_PLAYING:
process_playing (jack, nframes);
break;
-
+
case MARLIN_JACK_PLAY_MODE_PREROLLING:
- case MARLIN_JACK_PLAY_MODE_STOPPED:
+ case MARLIN_JACK_PLAY_MODE_STOPPED:
process_silence (jack, nframes);
break;
@@ -411,12 +414,12 @@
}
copied = marlin_block_get_buffer (pd->current_block, pd->tmp_buffer,
- pd->offset, frames_needed,
+ pd->offset, frames_needed,
&pd->current_block);
pd->offset += copied;
pd->offset_in_block = pd->offset - pd->current_block->start;
-
+
*data = pd->tmp_buffer;
return copied;
@@ -480,15 +483,16 @@
}
static int
-srate_changed (jack_nframes_t nframes,
+srate_changed (jack_nframes_t nframes,
gpointer data)
{
MarlinJackPlay *jack = data;
MarlinJackPlayPrivate *priv = jack->priv;
- priv->jrate = nframes;
- priv->src_ratio = calculate_rate_ratio (priv->rate, priv->jrate);
-
+ priv->jack_rate = nframes;
+ priv->src_ratio = calculate_rate_ratio (priv->sample_rate,
+ priv->jack_rate);
+
return 0;
}
@@ -506,7 +510,7 @@
return 0;
}
-
+
static gboolean
play_start (MarlinJack *jack,
GError **error)
@@ -545,9 +549,9 @@
marlin_sample_read_unlock (priv->sample);
return FALSE;
}
-
+
if (i < priv->channels) {
- pd->channel = marlin_sample_get_channel (priv->sample,
+ pd->channel = marlin_sample_get_channel (priv->sample,
i);
} else {
pd->channel = marlin_sample_get_channel (priv->sample, 0);
@@ -564,8 +568,8 @@
pd->rb_buffer = g_new (float, DEFAULT_RB_SIZE);
pd->tmp_buffer = g_new (float, DEFAULT_RB_SIZE);
- pd->state = src_callback_new (process_more_frames,
- SRC_SINC_BEST_QUALITY,
+ pd->state = src_callback_new (process_more_frames,
+ SRC_SINC_BEST_QUALITY,
1, &err, pd);
}
free (ports);
@@ -674,7 +678,7 @@
G_TYPE_FROM_CLASS (klass),
G_SIGNAL_RUN_FIRST |
G_SIGNAL_NO_RECURSE,
- G_STRUCT_OFFSET (MarlinJackPlayClass,
+ G_STRUCT_OFFSET (MarlinJackPlayClass,
status_changed),
NULL, NULL,
g_cclosure_marshal_VOID__INT,
@@ -729,7 +733,7 @@
jack = g_object_new (MARLIN_JACK_PLAY_TYPE, NULL);
priv = jack->priv;
-
+
if (server_name) {
options |= JackServerName;
}
@@ -749,7 +753,7 @@
priv->jack_buf = g_new0 (jack_default_audio_sample_t, priv->bufsize * 16);
jack_set_sample_rate_callback (priv->client, srate_changed, jack);
- priv->jrate = jack_get_sample_rate (priv->client);
+ priv->jack_rate = jack_get_sample_rate (priv->client);
return jack;
}
@@ -777,7 +781,7 @@
* @jack: A #MarlinJackPlay
* @start: Start of the playback range
* @finish: End of the playback range
- *
+ *
* Sets @jack to playback between @start and @finish
*/
void
Modified: trunk/marlin/marlin-jack.c
==============================================================================
--- trunk/marlin/marlin-jack.c (original)
+++ trunk/marlin/marlin-jack.c Tue Sep 30 19:14:07 2008
@@ -82,7 +82,7 @@
dispose (GObject *object)
{
MarlinJackPrivate *priv = GET_PRIVATE (object);
-
+
if (priv->sample) {
g_object_unref (priv->sample);
priv->sample = NULL;
@@ -115,7 +115,7 @@
NULL);
if (j_class->set_sample) {
- j_class->set_sample (MARLIN_JACK (object),
+ j_class->set_sample (MARLIN_JACK (object),
priv->sample);
}
break;
Modified: trunk/marlin/marlin-sample.c
==============================================================================
--- trunk/marlin/marlin-sample.c (original)
+++ trunk/marlin/marlin-sample.c Tue Sep 30 19:14:07 2008
@@ -76,7 +76,7 @@
gboolean dirty; /* Has the sample been edited since the last save? */
gboolean writable; /* Is the filename writable? */
gboolean revertable; /* Has the sample got revert info? */
-
+
/* Sample information */
guint64 number_of_frames; /* Total number of frames */
int channels; /* Number of channels */
@@ -192,7 +192,7 @@
sample = MARLIN_SAMPLE (object);
priv = sample->priv;
-
+
switch (prop_id) {
case PROP_NUMBER_OF_FRAMES:
WRITE_LOCK (priv->lock);
@@ -213,7 +213,7 @@
case PROP_SAMPLE_RATE:
WRITE_LOCK (priv->lock);
-
+
sample_rate = g_value_get_uint (value);
if (priv->sample_rate == sample_rate) {
WRITE_UNLOCK (priv->lock);
@@ -230,7 +230,7 @@
case PROP_FILENAME:
WRITE_LOCK (priv->lock);
-
+
if (priv->filename != NULL) {
g_free (priv->filename);
}
@@ -245,7 +245,7 @@
} else {
priv->writable = TRUE;
}
-
+
WRITE_UNLOCK (priv->lock);
break;
Modified: trunk/src/dialogs/marlin-add-marker-dialog.c
==============================================================================
--- trunk/src/dialogs/marlin-add-marker-dialog.c (original)
+++ trunk/src/dialogs/marlin-add-marker-dialog.c Tue Sep 30 19:14:07 2008
@@ -43,7 +43,7 @@
struct _AddDialog {
MarlinSample *sample;
- MarlinUndoManager *undo;
+ MarlinUndoManager *undo_manager;
GtkWidget *dialog;
GtkWidget *entry;
@@ -64,7 +64,7 @@
switch (response_id) {
case GTK_RESPONSE_OK:
- ctxt = marlin_undo_manager_context_begin (ad->undo,
+ ctxt = marlin_undo_manager_context_begin (ad->undo_manager,
_("Add Marker"));
name = gtk_entry_get_text (GTK_ENTRY (ad->entry));
@@ -75,7 +75,7 @@
pos = (guint64) adj->value;
marlin_marker_model_add_marker (ad->model, pos, name, ctxt);
- marlin_undo_manager_context_end (ad->undo, ctxt);
+ marlin_undo_manager_context_end (ad->undo_manager, ctxt);
break;
case GTK_RESPONSE_HELP:
@@ -89,7 +89,7 @@
gtk_widget_destroy (GTK_WIDGET (dialog));
- /* FIXME: Do model and undo need to be unreffed now? */
+ /* FIXME: Does model need to be unreffed now? */
g_free (ad);
}
@@ -98,7 +98,6 @@
{
MarlinSample *sample;
GtkWindow *parent;
- MarlinUndoManager *undo;
MarlinMarkerModel *model;
char *name, *title;
GtkWidget *vbox, *table, *label;
@@ -113,12 +112,11 @@
g_object_get (G_OBJECT (sample),
"name", &name,
"marker-model", &model,
- "undo_manager", &undo,
NULL);
ad = g_new (struct _AddDialog, 1);
ad->sample = sample;
- ad->undo = undo;
+ ad->undo_manager = marlin_base_window_get_undo_manager (base);
ad->model = model;
title = g_strdup_printf ("Add Marker: %s", name);
Modified: trunk/src/dialogs/marlin-adjust-channel-dialogs.c
==============================================================================
--- trunk/src/dialogs/marlin-adjust-channel-dialogs.c (original)
+++ trunk/src/dialogs/marlin-adjust-channel-dialogs.c Tue Sep 30 19:14:07 2008
@@ -44,6 +44,7 @@
struct _remove_channel_data {
MarlinSample *sample;
+ MarlinUndoManager *undo_manager;
GtkWidget *dialog;
GtkWidget *left, *right;
@@ -56,7 +57,6 @@
struct _remove_channel_data *rcd)
{
MarlinChannelPosition channel;
- MarlinUndoManager *undo;
MarlinUndoContext *ctxt;
switch (response_id) {
@@ -73,17 +73,13 @@
g_assert_not_reached ();
}
- g_object_get (G_OBJECT (rcd->sample),
- "undo-manager", &undo,
- NULL);
-
- ctxt = marlin_undo_manager_context_begin (undo, _("Remove Channel"));
+ ctxt = marlin_undo_manager_context_begin (rcd->undo_manager,
+ _("Remove Channel"));
marlin_sample_remove_channel (rcd->sample,
channel,
gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (rcd->mix)),
NULL, ctxt, NULL);
- marlin_undo_manager_context_end (undo, ctxt);
- g_object_unref (G_OBJECT (undo));
+ marlin_undo_manager_context_end (rcd->undo_manager, ctxt);
break;
@@ -114,6 +110,7 @@
rcd = g_new (struct _remove_channel_data, 1);
rcd->sample = sample;
+ rcd->undo_manager = marlin_base_window_get_undo_manager (base);
g_object_get (G_OBJECT (sample),
"name", &name,
@@ -191,6 +188,7 @@
struct _add_channel_data {
MarlinSample *sample;
+ MarlinUndoManager *undo_manager;
GtkWidget *dialog;
GtkWidget *left, *right;
@@ -203,7 +201,6 @@
struct _add_channel_data *acd)
{
MarlinChannelPosition channel;
- MarlinUndoManager *undo;
MarlinUndoContext *ctxt;
switch (response_id) {
@@ -220,15 +217,12 @@
g_assert_not_reached ();
}
- g_object_get (G_OBJECT (acd->sample),
- "undo-manager", &undo,
- NULL);
- ctxt = marlin_undo_manager_context_begin (undo, _("Add Channel"));
+ ctxt = marlin_undo_manager_context_begin (acd->undo_manager,
+ _("Add Channel"));
marlin_sample_add_channel (acd->sample, channel,
gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (acd->clone)),
NULL, ctxt, NULL);
- marlin_undo_manager_context_end (undo, ctxt);
- g_object_unref (G_OBJECT (undo));
+ marlin_undo_manager_context_end (acd->undo_manager, ctxt);
break;
case GTK_RESPONSE_CANCEL:
@@ -258,6 +252,7 @@
acd = g_new (struct _add_channel_data, 1);
acd->sample = sample;
+ acd->undo_manager = marlin_base_window_get_undo_manager (base);
g_object_get (G_OBJECT (sample),
"name", &name,
Modified: trunk/src/dialogs/marlin-crossfade-dialog.c
==============================================================================
--- trunk/src/dialogs/marlin-crossfade-dialog.c (original)
+++ trunk/src/dialogs/marlin-crossfade-dialog.c Tue Sep 30 19:14:07 2008
@@ -50,6 +50,7 @@
GtkWidget *start, *end, *both;
#endif
MarlinSample *sample;
+ MarlinUndoManager *undo_manager;
};
static void
@@ -155,7 +156,6 @@
MarlinSampleFade sf, df;
MarlinSample *src, *dest;
guint64 length, position;
- MarlinUndoManager *undo;
MarlinUndoContext *ctxt;
MarlinRange range;
@@ -164,10 +164,6 @@
src = MARLIN_SAMPLE (marlin_program_get_clipboard (program));
dest = xfd->sample;
- g_object_get (G_OBJECT (dest),
- "undo-manager", &undo,
- NULL);
-
g_object_get (G_OBJECT (src),
"total_frames", &length,
NULL);
@@ -177,7 +173,8 @@
range.start = 0;
range.finish = length - 1;
- ctxt = marlin_undo_manager_context_begin (undo, _("Crossfade"));
+ ctxt = marlin_undo_manager_context_begin (xfd->undo_manager,
+ _("Crossfade"));
marlin_cross_fader_get_levels (MARLIN_CROSS_FADER (xfd->xfade),
&sf.in_level, &sf.out_level,
@@ -190,7 +187,7 @@
df.fade_end = position + (length - 1);
marlin_sample_crossfade (src, dest, &sf, &df, NULL, ctxt, NULL);
- marlin_undo_manager_context_end (undo, ctxt);
+ marlin_undo_manager_context_end (xfd->undo_manager, ctxt);
save_settings (xfd);
break;
@@ -240,6 +237,7 @@
xfd = g_new (struct _xfade_dialog_data, 1);
xfd->window = window;
xfd->sample = sample;
+ xfd->undo_manager = marlin_base_window_get_undo_manager (base);
g_object_get (G_OBJECT (sample),
"name", &name,
Modified: trunk/src/dialogs/marlin-edit-marker-dialog.c
==============================================================================
--- trunk/src/dialogs/marlin-edit-marker-dialog.c (original)
+++ trunk/src/dialogs/marlin-edit-marker-dialog.c Tue Sep 30 19:14:07 2008
@@ -43,7 +43,7 @@
struct _EditDialog {
MarlinSample *sample;
- MarlinUndoManager *undo;
+ MarlinUndoManager *undo_manager;
GtkWidget *dialog;
GtkWidget *entry;
@@ -65,7 +65,7 @@
switch (response_id) {
case GTK_RESPONSE_OK:
- ctxt = marlin_undo_manager_context_begin (ed->undo,
+ ctxt = marlin_undo_manager_context_begin (ed->undo_manager,
_("Edit Marker"));
name = gtk_entry_get_text (GTK_ENTRY (ed->entry));
@@ -85,7 +85,7 @@
marlin_marker_model_move_marker (ed->model,
ed->marker,
pos, ctxt);
- marlin_undo_manager_context_end (ed->undo, ctxt);
+ marlin_undo_manager_context_end (ed->undo_manager, ctxt);
break;
case GTK_RESPONSE_HELP:
@@ -98,7 +98,7 @@
}
gtk_widget_destroy (GTK_WIDGET (dialog));
- /* FIXME: We need to unref undo and model here */
+ /* FIXME: We need to unref model here */
g_free (ed);
}
@@ -122,11 +122,11 @@
ed = g_new (struct _EditDialog, 1);
ed->sample = sample;
ed->marker = marlin_marker_view_get_selected_marker (view);
+ ed->undo_manager = marlin_base_window_get_undo_manager (base);
g_object_get (G_OBJECT (sample),
"name", &name,
"markers", &ed->model,
- "undo_manager", &ed->undo,
NULL);
title = g_strdup_printf ("Edit Marker: %s", name);
Modified: trunk/src/dialogs/marlin-select-region-dialog.c
==============================================================================
--- trunk/src/dialogs/marlin-select-region-dialog.c (original)
+++ trunk/src/dialogs/marlin-select-region-dialog.c Tue Sep 30 19:14:07 2008
@@ -47,6 +47,7 @@
GtkWidget *window;
MarlinSample *sample;
MarlinSampleSelection *selection;
+ MarlinUndoManager *undo_manager;
GtkWidget *start, *finish;
GtkWidget *start_combo, *finish_combo;
GtkWidget *sp_hbox, *sm_hbox, *fp_hbox, *fm_hbox;
@@ -83,7 +84,6 @@
int start_active, end_active;
guint64 start, finish;
MarlinDisplay display;
- MarlinUndoManager *undo;
MarlinUndoContext *ctxt;
MarlinMarker *marker;
MarlinCoverage coverage;
@@ -157,10 +157,7 @@
marlin_sample_selection_clear (srd->selection, NULL);
- g_object_get (G_OBJECT (srd->sample),
- "undo-manager", &undo,
- NULL);
- ctxt = marlin_undo_manager_context_begin (undo,
+ ctxt = marlin_undo_manager_context_begin (srd->undo_manager,
_("Select Region"));
coverage = gtk_combo_box_get_active (GTK_COMBO_BOX (srd->coverage));
@@ -174,8 +171,7 @@
marlin_sample_selection_set (srd->selection,
coverage,
start, finish, ctxt);
- marlin_undo_manager_context_end (undo, ctxt);
- g_object_unref (G_OBJECT (undo));
+ marlin_undo_manager_context_end (srd->undo_manager, ctxt);
break;
@@ -328,7 +324,7 @@
srd->window = GTK_WIDGET (window);
srd->sample = sample;
srd->position = position;
-
+ srd->undo_manager = marlin_base_window_get_undo_manager (base);
g_object_get (G_OBJECT (view),
"frames_per_pixel", &srd->fpp,
NULL);
Modified: trunk/src/dialogs/marlin-undo-history-dialog.c
==============================================================================
--- trunk/src/dialogs/marlin-undo-history-dialog.c (original)
+++ trunk/src/dialogs/marlin-undo-history-dialog.c Tue Sep 30 19:14:07 2008
@@ -47,7 +47,7 @@
struct _undo_history_data {
MarlinSample *sample;
- MarlinUndoManager *undo;
+ MarlinUndoManager *undo_manager;
GtkWidget *dialog, *treeview;
GtkWidget *undo_button, *redo_button;
@@ -62,9 +62,9 @@
struct _undo_history_data *uhd)
{
if (uhd->changed_id > 0) {
- g_signal_handler_disconnect (uhd->undo, uhd->changed_id);
+ g_signal_handler_disconnect (uhd->undo_manager,
+ uhd->changed_id);
}
- g_object_unref (G_OBJECT (uhd->undo));
g_free (uhd);
}
@@ -89,7 +89,7 @@
int i;
GtkTreePath *current = NULL;
- history = marlin_undo_manager_get_history (uhd->undo);
+ history = marlin_undo_manager_get_history (uhd->undo_manager);
for (h = history, i = 0; h; h = h->next, i++) {
MarlinUndoHistory *hist = h->data;
@@ -148,9 +148,9 @@
struct _undo_history_data *uhd)
{
gtk_widget_set_sensitive (uhd->undo_button,
- marlin_undo_manager_can_undo (uhd->undo));
+ marlin_undo_manager_can_undo (uhd->undo_manager));
gtk_widget_set_sensitive (uhd->redo_button,
- marlin_undo_manager_can_redo (uhd->undo));
+ marlin_undo_manager_can_redo (uhd->undo_manager));
g_signal_handlers_block_matched (uhd->selection,
G_SIGNAL_MATCH_FUNC,
@@ -168,14 +168,14 @@
undo_clicked (GtkButton *undo,
struct _undo_history_data *uhd)
{
- marlin_undo_manager_undo (uhd->undo);
+ marlin_undo_manager_undo (uhd->undo_manager);
}
static void
redo_clicked (GtkButton *undo,
struct _undo_history_data *uhd)
{
- marlin_undo_manager_redo (uhd->undo);
+ marlin_undo_manager_redo (uhd->undo_manager);
}
GtkWidget *
@@ -194,13 +194,13 @@
uhd = g_new (struct _undo_history_data, 1);
uhd->sample = sample;
+ uhd->undo_manager = marlin_base_window_get_undo_manager (base);
g_object_get (G_OBJECT (sample),
"name", &name,
- "undo-manager", &uhd->undo,
NULL);
- uhd->changed_id = g_signal_connect (uhd->undo, "changed",
+ uhd->changed_id = g_signal_connect (uhd->undo_manager, "changed",
G_CALLBACK (undo_changed), uhd);
title = g_strdup_printf (_("Undo History: %s"), name);
@@ -270,9 +270,9 @@
G_CALLBACK (redo_clicked), uhd);
gtk_widget_set_sensitive (uhd->undo_button,
- marlin_undo_manager_can_undo (uhd->undo));
+ marlin_undo_manager_can_undo (uhd->undo_manager));
gtk_widget_set_sensitive (uhd->redo_button,
- marlin_undo_manager_can_redo (uhd->undo));
+ marlin_undo_manager_can_redo (uhd->undo_manager));
g_signal_connect (uhd->dialog, "destroy",
G_CALLBACK (undo_history_response), uhd);
Modified: trunk/src/marlin-window-menu.c
==============================================================================
--- trunk/src/marlin-window-menu.c (original)
+++ trunk/src/marlin-window-menu.c Tue Sep 30 19:14:07 2008
@@ -405,6 +405,7 @@
edit_select_all (GtkAction *action,
gpointer data)
{
+ MarlinBaseWindow *base = MARLIN_BASE_WINDOW (data);
MarlinSample *sample;
MarlinUndoManager *undo;
MarlinUndoContext *ctxt;
@@ -412,16 +413,13 @@
g_object_get (G_OBJECT (data),
"sample", &sample,
NULL);
- g_object_get (G_OBJECT (sample),
- "undo-manager", &undo,
- NULL);
-
+
+ undo = marlin_base_window_get_undo_manager (base);
ctxt = marlin_undo_manager_context_begin (undo, _("Select All"));
marlin_window_select_all (MARLIN_WINDOW (data), ctxt);
marlin_undo_manager_context_end (undo, ctxt);
- g_object_unref (G_OBJECT (undo));
g_object_unref (G_OBJECT (sample));
}
@@ -429,6 +427,7 @@
edit_select_none (GtkAction *action,
gpointer data)
{
+ MarlinBaseWindow *base = MARLIN_BASE_WINDOW (data);
MarlinSample *sample;
MarlinUndoManager *undo;
MarlinUndoContext *ctxt;
@@ -436,16 +435,13 @@
g_object_get (G_OBJECT (data),
"sample", &sample,
NULL);
- g_object_get (G_OBJECT (sample),
- "undo-manager", &undo,
- NULL);
-
+
+ undo = marlin_base_window_get_undo_manager (base);
ctxt = marlin_undo_manager_context_begin (undo, _("Select Nothing"));
marlin_window_select_none (MARLIN_WINDOW (data), ctxt);
marlin_undo_manager_context_end (undo, ctxt);
- g_object_unref (G_OBJECT (undo));
g_object_unref (G_OBJECT (sample));
}
@@ -467,6 +463,7 @@
selection_halve (GtkAction *action,
gpointer data)
{
+ MarlinBaseWindow *base = MARLIN_BASE_WINDOW (data);
MarlinSample *sample;
MarlinUndoManager *undo;
MarlinUndoContext *ctxt;
@@ -474,15 +471,12 @@
g_object_get (G_OBJECT (data),
"sample", &sample,
NULL);
- g_object_get (G_OBJECT (sample),
- "undo-manager", &undo,
- NULL);
-
+
+ undo = marlin_base_window_get_undo_manager (base);
ctxt = marlin_undo_manager_context_begin (undo, _("Halve Selection"));
marlin_window_selection_scale (MARLIN_WINDOW (data), 0.5, ctxt);
marlin_undo_manager_context_end (undo, ctxt);
- g_object_unref (G_OBJECT (undo));
g_object_unref (G_OBJECT (sample));
}
@@ -490,6 +484,7 @@
selection_double (GtkAction *action,
gpointer data)
{
+ MarlinBaseWindow *base = MARLIN_BASE_WINDOW (data);
MarlinSample *sample;
MarlinUndoManager *undo;
MarlinUndoContext *ctxt;
@@ -497,15 +492,12 @@
g_object_get (G_OBJECT (data),
"sample", &sample,
NULL);
- g_object_get (G_OBJECT (sample),
- "undo-manager", &undo,
- NULL);
-
+
+ undo = marlin_base_window_get_undo_manager (base);
ctxt = marlin_undo_manager_context_begin (undo, _("Double Selection"));
marlin_window_selection_scale (MARLIN_WINDOW (data), 2.0, ctxt);
marlin_undo_manager_context_end (undo, ctxt);
- g_object_unref (G_OBJECT (undo));
g_object_unref (G_OBJECT (sample));
}
@@ -513,6 +505,7 @@
selection_left (GtkAction *action,
gpointer data)
{
+ MarlinBaseWindow *base = MARLIN_BASE_WINDOW (data);
MarlinSample *sample;
MarlinUndoManager *undo;
MarlinUndoContext *ctxt;
@@ -520,16 +513,13 @@
g_object_get (G_OBJECT (data),
"sample", &sample,
NULL);
- g_object_get (G_OBJECT (sample),
- "undo-manager", &undo,
- NULL);
-
+
+ undo = marlin_base_window_get_undo_manager (base);
ctxt = marlin_undo_manager_context_begin (undo, _("Shift Selection Left"));
marlin_window_selection_shift_left (MARLIN_WINDOW (data), ctxt);
marlin_undo_manager_context_end (undo, ctxt);
- g_object_unref (G_OBJECT (undo));
g_object_unref (G_OBJECT (sample));
}
@@ -537,6 +527,7 @@
selection_right (GtkAction *action,
gpointer data)
{
+ MarlinBaseWindow *base = MARLIN_BASE_WINDOW (data);
MarlinSample *sample;
MarlinUndoManager *undo;
MarlinUndoContext *ctxt;
@@ -544,16 +535,13 @@
g_object_get (G_OBJECT (data),
"sample", &sample,
NULL);
- g_object_get (G_OBJECT (sample),
- "undo-manager", &undo,
- NULL);
-
+
+ undo = marlin_base_window_get_undo_manager (base);
ctxt = marlin_undo_manager_context_begin (undo, _("Shift Selection Right"));
marlin_window_selection_shift_right (MARLIN_WINDOW (data), ctxt);
marlin_undo_manager_context_end (undo, ctxt);
- g_object_unref (G_OBJECT (undo));
g_object_unref (G_OBJECT (sample));
}
@@ -561,6 +549,7 @@
selection_snap_to_zero (GtkAction *action,
gpointer data)
{
+ MarlinBaseWindow *base = MARLIN_BASE_WINDOW (data);
MarlinSample *sample;
MarlinUndoManager *undo;
MarlinUndoContext *ctxt;
@@ -568,15 +557,12 @@
g_object_get (G_OBJECT (data),
"sample", &sample,
NULL);
- g_object_get (G_OBJECT (sample),
- "undo-manager", &undo,
- NULL);
+ undo = marlin_base_window_get_undo_manager (base);
ctxt = marlin_undo_manager_context_begin (undo, _("Snap To Zero Crossing"));
marlin_window_selection_snap_to_zero (MARLIN_WINDOW (data), ctxt);
marlin_undo_manager_context_end (undo, ctxt);
- g_object_unref (G_OBJECT (undo));
g_object_unref (G_OBJECT (sample));
}
@@ -708,6 +694,7 @@
process_swap_channels (GtkAction *action,
gpointer data)
{
+ MarlinBaseWindow *base = MARLIN_BASE_WINDOW (data);
MarlinSample *sample;
MarlinUndoManager *undo;
MarlinUndoContext *ctxt;
@@ -715,15 +702,12 @@
g_object_get (G_OBJECT (data),
"sample", &sample,
NULL);
- g_object_get (G_OBJECT (sample),
- "undo-manager", &undo,
- NULL);
-
+
+ undo = marlin_base_window_get_undo_manager (base);
ctxt = marlin_undo_manager_context_begin (undo, _("Swap Channels"));
marlin_sample_swap_channels (sample, NULL, ctxt, NULL);
marlin_undo_manager_context_end (undo, ctxt);
- g_object_unref (G_OBJECT (undo));
g_object_unref (G_OBJECT (sample));
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]