patches/gnome-session-07-wait-for-postrun.diff
author dcarbery
Fri, 24 Nov 2006 16:37:59 +0000
branch217update
changeset 19096 d542fc2c823e
parent 8396 3047112e1ba8
permissions -rw-r--r--
Merged trunk changes r9797:9829 into 217update branch.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
8396
3047112e1ba8 2006-10-23 Glynn Foster <[email protected]>
gman
parents: 7950
diff changeset
     1
diff -urN gnome-session-2.16.1/gnome-session/main.c gnome-session-2.16.1-hacked/gnome-session/main.c
3047112e1ba8 2006-10-23 Glynn Foster <[email protected]>
gman
parents: 7950
diff changeset
     2
--- gnome-session-2.16.1/gnome-session/main.c	2006-10-23 09:51:16.839150000 +1300
3047112e1ba8 2006-10-23 Glynn Foster <[email protected]>
gman
parents: 7950
diff changeset
     3
+++ gnome-session-2.16.1-hacked/gnome-session/main.c	2006-10-23 09:53:52.502604000 +1300
3047112e1ba8 2006-10-23 Glynn Foster <[email protected]>
gman
parents: 7950
diff changeset
     4
@@ -248,7 +248,68 @@
7950
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
     5
   RESPONSE_LOG_IN,
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
     6
   RESPONSE_TRY_AGAIN
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
     7
 };
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
     8
-    
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
     9
+
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    10
+static gboolean
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    11
+postrun_progress_update (gpointer data)
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    12
+{
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    13
+  int status = 0;
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    14
+  static int count = 0;
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    15
+  GError *error = NULL;
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    16
+  gtk_progress_bar_pulse (GTK_PROGRESS_BAR (data));
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    17
+
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    18
+  if (count == 30) {
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    19
+    g_spawn_command_line_sync ("/usr/lib/postrun-query -c JDS_wait -e", 
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    20
+			       NULL, NULL, &status, &error);
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    21
+    count = 0;
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    22
+  }
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    23
+
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    24
+  if (status == 0) {
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    25
+    count++;
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    26
+    return TRUE;
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    27
+  }
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    28
+
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    29
+  gtk_main_quit ();
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    30
+  return FALSE;
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    31
+}
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    32
+
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    33
+static void
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    34
+gsm_wait_for_unfinished_postrun () 
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    35
+{
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    36
+  int status = 0;
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    37
+  GError *error = NULL; 
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    38
+
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    39
+  if (!g_spawn_command_line_sync ("/usr/lib/postrun-query -c JDS_wait -e",
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    40
+				  NULL, NULL, &status, &error)) {
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    41
+    /* no postrun-query? WTF? bail out and hope for the best :) */
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    42
+    return;
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    43
+  }
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    44
+
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    45
+  if (status == 0) {
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    46
+    GtkWidget *window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    47
+    GtkWidget *vbox = gtk_vbox_new (TRUE, 10);
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    48
+    GtkWidget *progress = gtk_progress_bar_new ();
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    49
+    GtkWidget *label;
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    50
+    gint func_ref;
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    51
+
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    52
+    label = gtk_label_new (_("Completing post install setup..."));
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    53
+
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    54
+    gtk_container_add (GTK_CONTAINER (window), vbox);
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    55
+    gtk_container_set_border_width (GTK_CONTAINER (window), 10);
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    56
+    gtk_box_pack_start_defaults (GTK_BOX (vbox), label);
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    57
+    gtk_progress_bar_pulse (GTK_PROGRESS_BAR (progress));
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    58
+    func_ref = g_timeout_add (100, postrun_progress_update, progress);
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    59
+    gtk_box_pack_start_defaults (GTK_BOX (vbox), progress);
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    60
+
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    61
+    gtk_window_set_position (GTK_WINDOW (window), GTK_WIN_POS_CENTER);
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    62
+
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    63
+    gtk_widget_show_all (window);
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    64
+    gtk_main ();
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    65
+  
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    66
+    gtk_widget_destroy (window);
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    67
+    g_source_remove (func_ref);
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    68
+  }
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    69
+}
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    70
+
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    71
 static void
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    72
 gnome_login_check (void)
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    73
 {
8396
3047112e1ba8 2006-10-23 Glynn Foster <[email protected]>
gman
parents: 7950
diff changeset
    74
@@ -393,7 +454,9 @@
7950
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    75
 
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    76
   /* We need to do this as early as possible */
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    77
   gsm_set_display_properties ();
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    78
-  
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    79
+
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    80
+  gsm_wait_for_unfinished_postrun ();
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    81
+
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    82
   if (ORBit_proto_use ("IPv4") || ORBit_proto_use ("IPv6"))
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    83
     gnome_login_check ();
eb1dcec5e949 2006-08-22 Damien Carbery <[email protected]>
dc144907
parents:
diff changeset
    84