fork is done
authorvlad <vlad@vlanout.(none)>
Sun, 25 Jul 2010 09:43:49 +0000 (12:43 +0300)
committervlad <vlad@vlanout.(none)>
Sun, 25 Jul 2010 09:43:49 +0000 (12:43 +0300)
applet/src/livewp-common.h
applet/src/livewp-config.c
applet/src/livewp-config.h
applet/src/livewp-dbus.c
applet/src/livewp-home-widget.c
applet/src/livewp-home-widget.h
applet/src/livewp-main.c

index afd161c..5c00b29 100644 (file)
@@ -89,6 +89,7 @@ struct _Animation_WallpaperPrivate
     GHashTable * hash_scene_func;
     GKeyFile *config_file;
     gint view;
+    pid_t  pid;
 };
 
 struct _AWallpaperPlugin
@@ -109,10 +110,10 @@ struct _AWallpaperPluginClass
 #define LIVEWP_SIGNAL_RELOAD_CONFIG_PATH "/org/maemo/livewp/reload_config"
 #define LIVEWP_RELOAD_CONFIG "reload_config"
 #define LIVEWP_RELOAD_PLUGIN "reload_plugin"
-#define LIVEWP_STOP_LIVEBG_ON_VIEW0 "stop_livebg_on_view0"
 #define LIVEWP_STOP_LIVEBG_ON_VIEW1 "stop_livebg_on_view1"
 #define LIVEWP_STOP_LIVEBG_ON_VIEW2 "stop_livebg_on_view2"
 #define LIVEWP_STOP_LIVEBG_ON_VIEW3 "stop_livebg_on_view3"
+#define LIVEWP_STOP_LIVEBG_ON_VIEW4 "stop_livebg_on_view4"
 
 /* For DBUS notification */
 #define NOTIFY_SIGNAL_INTERFACE "org.freedesktop.Notifications"
index bd49225..4a93f8c 100644 (file)
 #include "livewp-config.h"
 /*******************************************************************************/
 gint 
+current_active_view(void){
+    GConfClient *gconf_client = NULL;
+    GConfValue *value = NULL;
+    gint result = -1;
+
+    gconf_client = gconf_client_get_default();
+    if (!gconf_client) {
+        fprintf(stderr, _("Failed to initialize GConf. Quitting.\n"));
+        return result;
+    }
+
+    result = gconf_client_get_int(gconf_client, "/apps/osso/hildon-desktop/views/current", NULL);
+
+    fprintf(stderr,"uuuu@@@@@@@@@@@@!!!!!!!!!!!1 %i\n", result);
+    return result;
+
+}
+/*******************************************************************************/
+gint 
 read_config(Animation_WallpaperPrivate *priv) {
 
     GConfClient *gconf_client = NULL;
index 54082cb..9b9151f 100644 (file)
@@ -33,4 +33,5 @@
 #define GCONF_KEY_RANIMATION                        GCONF_KEY_PREFIX"/rich_animation"
 gint read_config(Animation_WallpaperPrivate *priv); 
 void save_config(Animation_WallpaperPrivate *priv); 
+gint current_active_view(void);
 #endif
index 233f12a..5482a38 100644 (file)
@@ -154,10 +154,10 @@ get_livewp_signal_cb(DBusConnection *conn, DBusMessage *msg, Animation_Wallpaper
     }
 #if  defined APPLICATION
     fprintf(stderr, "VIEW %i\n", priv->view);
-    if ((priv->view == 0 && dbus_message_is_signal(msg, LIVEWP_SIGNAL_INTERFACE, LIVEWP_STOP_LIVEBG_ON_VIEW0))||
-        (priv->view == 1 && dbus_message_is_signal(msg, LIVEWP_SIGNAL_INTERFACE, LIVEWP_STOP_LIVEBG_ON_VIEW1))||   
+    if ((priv->view == 1 && dbus_message_is_signal(msg, LIVEWP_SIGNAL_INTERFACE, LIVEWP_STOP_LIVEBG_ON_VIEW1))||
         (priv->view == 2 && dbus_message_is_signal(msg, LIVEWP_SIGNAL_INTERFACE, LIVEWP_STOP_LIVEBG_ON_VIEW2))||   
-        (priv->view == 3 && dbus_message_is_signal(msg, LIVEWP_SIGNAL_INTERFACE, LIVEWP_STOP_LIVEBG_ON_VIEW3))){
+        (priv->view == 3 && dbus_message_is_signal(msg, LIVEWP_SIGNAL_INTERFACE, LIVEWP_STOP_LIVEBG_ON_VIEW3))||   
+        (priv->view == 4 && dbus_message_is_signal(msg, LIVEWP_SIGNAL_INTERFACE, LIVEWP_STOP_LIVEBG_ON_VIEW4))){
 
         quit_from_program(priv);
     }
index 9557f7e..384327b 100644 (file)
@@ -45,7 +45,6 @@ lw_applet_realize (GtkWidget *widget)
     gchar * strid; 
     gint id; 
     AWallpaperPlugin *desktop_plugin = widget;
-    pid_t  pid;
     char* child_argv[] =  {"/usr/bin/livewp", "0", (char *) 0 };
 
 
@@ -57,19 +56,17 @@ lw_applet_realize (GtkWidget *widget)
     fprintf(stderr,"ID !!!!!!!!!! %i\n",id);
 
     switch (id){
-           case 0: child_argv[1] = "0";
+           case 0: child_argv[1] = "1";
                break;
-           case 1: child_argv[1] = "1";
+           case 1: child_argv[1] = "2";
                break;
-           case 2: child_argv[1] = "2";
+           case 2: child_argv[1] = "3";
                break;
-           case 3: child_argv[1] = "3";
+           case 3: child_argv[1] = "4";
                break;
     }
-    fprintf(stderr,"New proceess !!!!!!!!!! %s\n",child_argv[0]);
-    fprintf(stderr,"New proceess !!!!!!!!!! %s\n",child_argv[1]);
-    pid = fork();
-    if (pid == 0){
+    desktop_plugin->priv->pid = fork();
+    if (desktop_plugin->priv->pid == 0){
        fprintf(stderr,"New proceess !!!!!!!!!! %s\n",child_argv[1]);
        execvp("/usr/bin/livewp", child_argv);
        fprintf(stderr,"Problem with new process");
@@ -528,6 +525,7 @@ animation_wallpaper_plugin_init (AWallpaperPlugin *desktop_plugin)
 static void
 lw_applet_finalize (GObject *object)
 {
+     int status = 0; int wpid; 
 fprintf(stderr,"lw_applet_finalize\n");
      AWallpaperPlugin *desktop_plugin = Animation_Wallpaper_HOME_PLUGIN (object);
      Animation_WallpaperPrivate *priv = desktop_plugin->priv;
@@ -552,9 +550,6 @@ fprintf(stderr,"lw_applet_finalize\n");
      if (priv){
             livewp_deinitialize_dbus(priv);
             switch (priv->view){
-               case 0: send_dbus_signal (priv, LIVEWP_SIGNAL_INTERFACE, 
-                                         LIVEWP_SIGNAL_PATH, LIVEWP_STOP_LIVEBG_ON_VIEW0);
-                       break;
                case 1: send_dbus_signal (priv, LIVEWP_SIGNAL_INTERFACE, 
                                          LIVEWP_SIGNAL_PATH, LIVEWP_STOP_LIVEBG_ON_VIEW1);
                        break;
@@ -564,9 +559,18 @@ fprintf(stderr,"lw_applet_finalize\n");
                case 3: send_dbus_signal (priv, LIVEWP_SIGNAL_INTERFACE, 
                                          LIVEWP_SIGNAL_PATH, LIVEWP_STOP_LIVEBG_ON_VIEW3);
                        break;
+               case 4: send_dbus_signal (priv, LIVEWP_SIGNAL_INTERFACE, 
+                                         LIVEWP_SIGNAL_PATH, LIVEWP_STOP_LIVEBG_ON_VIEW4);
+                       break;
             }
      }
-
+     while (TRUE){
+        fprintf(stderr,"checking true\n");
+         wpid = wait(&status);
+        if (wpid == priv->pid)
+            break;
+     }
+     fprintf(stderr,"out from applet\n");
 }
 
 static void
index 3c0ac88..dfcad0f 100644 (file)
@@ -76,5 +76,6 @@ void get_sun_screen_pos(double alt, double azm, gint * x, gint * y);
 void show_settings(GtkWidget *widget, Animation_WallpaperPrivate *priv);
 void livewp_initialize_dbus(Animation_WallpaperPrivate *priv);
 void livewp_deinitialize_dbus(Animation_WallpaperPrivate *priv);
+gint current_active_view(void);
 gboolean long_timeout (AWallpaperPlugin *desktop_plugin);
 #endif
index 8b57753..56a4f2d 100644 (file)
@@ -68,10 +68,8 @@ static void set_live_bg (Display *display, Window xwindow, int mode)
 void
 quit_from_program (Animation_WallpaperPrivate *priv)
 {
-     
      if (priv){
             livewp_deinitialize_dbus(priv);
-            fprintf(stderr,"Quit from LiveWallpaper \n");
             if (priv->long_timer){
                    g_source_remove(priv->long_timer);
                priv->long_timer = 0;
@@ -82,7 +80,7 @@ quit_from_program (Animation_WallpaperPrivate *priv)
             }
             destroy_scene(priv->desktop_plugin);
      }
-     gtk_main_quit();
+     gtk_main_quit();;
 }
 
 int
@@ -93,14 +91,13 @@ main(int argc, char *argv[])
     GtkWidget *btn_setting, *vbox, *btn_power;
     gint result;
     HildonProgram       *app;
-    int view = 0;
+    int view = 1;
 
      
     if (argc == 2) 
         view = atoi(argv[1]);
-    fprintf(stderr,"VIEW %i\n", view);
-    if (view < 0 || view > 3)
-        view = 0;
+    if (view < 1 || view > 4)
+        view = 1;
 
     AWallpaperPlugin *desktop_plugin = g_new0 (AWallpaperPlugin, 1);
     Animation_WallpaperPrivate *priv = g_new0 (Animation_WallpaperPrivate, 1);
@@ -139,16 +136,20 @@ main(int argc, char *argv[])
     priv->window = main_widget;
 
     priv->view = view;
-    priv->visible = TRUE;
     /* Load config */
     read_config(priv);
     /* Initialize DBUS */
     livewp_initialize_dbus(priv);
-    set_live_bg(GDK_WINDOW_XDISPLAY (main_widget->window), GDK_WINDOW_XID (main_widget->window), view + 1);
+    set_live_bg(GDK_WINDOW_XDISPLAY (main_widget->window), GDK_WINDOW_XID (main_widget->window), view);
+    if (current_active_view() == view) 
+        priv->visible = TRUE;
+    else 
+        priv->visible = FALSE;
+
+    fprintf(stderr,"VISIBLE %i %i\n",priv->visible, current_active_view());
     init_scene_theme(desktop_plugin);
         
     priv->long_timer = g_timeout_add(LONG_TIMER, (GtkFunction)long_timeout, desktop_plugin);
 
     gtk_main();
-    return 0;
 }