done right work fifteen
[livewp] / applet / src / livewp-scene.c
index aaddd85..1a67406 100644 (file)
@@ -38,7 +38,7 @@ Window Window_With_Name( Display *dpy, Window top, char *name)
     if (class_hint->res_name && name && !strcmp(class_hint->res_name, name)){
       XFree(class_hint->res_class);
       XFree(class_hint->res_name);
-           return(top);
+      return(top);
     }
     XFree(class_hint->res_class);
     XFree(class_hint->res_name);
@@ -98,9 +98,13 @@ destroy_scene(AWallpaperPlugin *desktop_plugin)
 void
 reload_scene(AWallpaperPlugin *desktop_plugin)
 {
-     fprintf(stderr,"Reload scene %s\n", desktop_plugin->priv->theme); 
+    fprintf(stderr,"Reload scene %s\n", desktop_plugin->priv->theme); 
     destroy_scene(desktop_plugin);
     fill_priv(desktop_plugin->priv);
+    gtk_widget_destroy(desktop_plugin->priv->window); 
+    if (desktop_plugin->priv->one_in_all_view && desktop_plugin->priv->view >1)
+        exit(-1);   
+    create_xwindow(desktop_plugin->priv);
     init_scene_theme(desktop_plugin);
 }
 /*******************************************************************************/
@@ -225,10 +229,13 @@ init_scene_External(AWallpaperPlugin *desktop_plugin){
         *view = NULL,
         *strwin = NULL,
         *strview =NULL;
+    gint i;
     Window  id_xwindow;
+    fprintf(stderr,"init_scene_External1\n");
     if (!desktop_plugin->priv->visible)
         return;
     
+    fprintf(stderr,"init_scene_External2\n");
     exec_path = g_strdup(g_hash_table_lookup(desktop_plugin->priv->hash_theme, "exec_path"));
     window_id = g_strdup(g_hash_table_lookup(desktop_plugin->priv->hash_theme, "window_id"));
     view = g_strdup(g_hash_table_lookup(desktop_plugin->priv->hash_theme, "view"));
@@ -256,13 +263,27 @@ init_scene_External(AWallpaperPlugin *desktop_plugin){
        fprintf(stderr,"Problem with new podprocess");
     }
     g_free(run_string);
+
+    fprintf(stderr, "window name = %s\n", window_name);
     if (window_name){
-        sleep(2);
-        id_xwindow = Window_With_Name(GDK_WINDOW_XDISPLAY (desktop_plugin->priv->window->window), 
-            RootWindow( GDK_WINDOW_XDISPLAY (desktop_plugin->priv->window->window), XDefaultScreen( GDK_WINDOW_XDISPLAY (desktop_plugin->priv->window->window))),
-            window_name);
-        set_live_bg (GDK_WINDOW_XDISPLAY (desktop_plugin->priv->window->window),  id_xwindow, desktop_plugin->priv->view);
-        gtk_widget_destroy(desktop_plugin->priv->window);
+        /* Do 10 trying to search of window */
+        for (i=0; i<10; i++){
+            sleep(1);
+            id_xwindow = Window_With_Name(GDK_WINDOW_XDISPLAY (desktop_plugin->priv->window->window), 
+                RootWindow( GDK_WINDOW_XDISPLAY (desktop_plugin->priv->window->window), XDefaultScreen( GDK_WINDOW_XDISPLAY (desktop_plugin->priv->window->window))),
+                window_name);
+            fprintf(stderr,"name %s %i %i\n", window_name, id_xwindow, i);
+            if (id_xwindow>0){
+                if (desktop_plugin->priv->one_in_all_view)
+                    set_live_bg (GDK_WINDOW_XDISPLAY (desktop_plugin->priv->window->window), 
+                                                      id_xwindow, -1);
+                else
+                    set_live_bg (GDK_WINDOW_XDISPLAY (desktop_plugin->priv->window->window),  
+                                                      id_xwindow, desktop_plugin->priv->view);
+                /* gtk_widget_destroy(desktop_plugin->priv->window); */
+                break;
+            }
+        }
     }
 }
 /*******************************************************************************/