[byzanz] Get rid of all the nested main loops
- From: Benjamin Otte <otte src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [byzanz] Get rid of all the nested main loops
- Date: Sat, 15 Aug 2009 17:27:06 +0000 (UTC)
commit fb7a297129aca1f5614a544784d8f6582b4ff9ab
Author: Benjamin Otte <otte gnome org>
Date: Sat Aug 15 18:58:23 2009 +0200
Get rid of all the nested main loops
src/byzanzapplet.c | 39 +++++++++++++++++++++++----------------
1 files changed, 23 insertions(+), 16 deletions(-)
---
diff --git a/src/byzanzapplet.c b/src/byzanzapplet.c
index 0512811..d32880d 100644
--- a/src/byzanzapplet.c
+++ b/src/byzanzapplet.c
@@ -56,6 +56,7 @@ typedef struct {
/*** PENDING RECORDING ***/
typedef struct {
+ AppletPrivate * priv;
ByzanzRecorder * rec;
GnomeVFSAsyncHandle * handle;
char * tmp_file;
@@ -164,13 +165,31 @@ check_done_saving_cb (gpointer data)
}
static void
+pending_recording_response (GtkWidget *dialog, int response, PendingRecording *pending)
+{
+ if (response == GTK_RESPONSE_ACCEPT) {
+ char *dir = gtk_file_chooser_get_uri (GTK_FILE_CHOOSER (dialog));
+ pending->target = gnome_vfs_uri_new (dir);
+ g_free (dir);
+ dir = gtk_file_chooser_get_current_folder_uri (GTK_FILE_CHOOSER (dialog));
+ if (dir) {
+ panel_applet_gconf_set_string (pending->priv->applet, "save_directory", dir, NULL);
+ g_free (dir);
+ }
+ }
+ gtk_widget_destroy (dialog);
+ gdk_threads_add_timeout_seconds (1, check_done_saving_cb, pending);
+}
+
+static void
pending_recording_launch (AppletPrivate *priv, ByzanzRecorder *rec, char *tmp_file)
{
PendingRecording *pending;
GtkWidget *dialog;
- char *start_dir, *end_dir;
+ char *start_dir;
pending = g_new0 (PendingRecording, 1);
+ pending->priv = priv;
pending->rec = rec;
pending->tmp_file = tmp_file;
@@ -185,23 +204,11 @@ pending_recording_launch (AppletPrivate *priv, ByzanzRecorder *rec, char *tmp_fi
!gtk_file_chooser_set_current_folder_uri (GTK_FILE_CHOOSER (dialog), start_dir)) {
gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (dialog), g_get_home_dir ());
}
+ g_free (start_dir);
gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (dialog), TRUE);
gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_ACCEPT);
- if (GTK_RESPONSE_ACCEPT == gtk_dialog_run (GTK_DIALOG (dialog))) {
- char *target_uri = gtk_file_chooser_get_uri (GTK_FILE_CHOOSER (dialog));
- pending->target = gnome_vfs_uri_new (target_uri);
- end_dir = gtk_file_chooser_get_current_folder_uri (GTK_FILE_CHOOSER (dialog));
- if (end_dir &&
- (!start_dir || !g_str_equal (end_dir, start_dir))) {
- panel_applet_gconf_set_string (priv->applet, "save_directory", end_dir, NULL);
- }
- g_free (end_dir);
- }
- g_free (start_dir);
- gtk_widget_destroy (dialog);
- g_timeout_add (1000, check_done_saving_cb, pending);
- gtk_main ();
- return;
+ g_signal_connect (dialog, "response", G_CALLBACK (pending_recording_response), pending);
+ gtk_widget_show_all (dialog);
}
/*** APPLET ***/
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]