done matrix slowly, finished init_scene_theme
[livewp] / applet / src / livewp-scene.c
index c7056fd..3cf4667 100644 (file)
@@ -33,7 +33,11 @@ destroy_scene(AWallpaperPlugin *desktop_plugin)
         tmp = g_slist_next(tmp);
     }
     g_slist_free(tmp);
-
+    desktop_plugin->priv->scene->actors = NULL;
+    if (desktop_plugin->priv->scene){
+       g_free(desktop_plugin->priv->scene);
+       desktop_plugin->priv->scene = NULL;
+    }
 }
 
 void
@@ -41,16 +45,19 @@ reload_scene(AWallpaperPlugin *desktop_plugin)
 {
     fprintf(stderr,"Reload scene %s\n", desktop_plugin->priv->theme);  
     destroy_scene(desktop_plugin);
+#if 0
     if (!strcmp(desktop_plugin->priv->theme,"Modern"))
-        init_scene(desktop_plugin);
+        init_scene_Modern(desktop_plugin);
     else if (!strcmp(desktop_plugin->priv->theme,"Berlin")) 
-        init_scene1(desktop_plugin);
+        init_scene_Berlin(desktop_plugin);
     else if (!strcmp(desktop_plugin->priv->theme,"Matrix")) 
-        init_scene2(desktop_plugin);
+        init_scene_Matrix(desktop_plugin);
+#endif
+    init_scene_theme(desktop_plugin);
 }
 
 void
-init_scene2(AWallpaperPlugin *desktop_plugin)
+init_scene_Matrix(AWallpaperPlugin *desktop_plugin)
 {
   Actor *actor;
   Scene *scene;
@@ -135,7 +142,7 @@ init_scene2(AWallpaperPlugin *desktop_plugin)
 
 /* Init Modern Scene */
 void
-init_scene(AWallpaperPlugin *desktop_plugin)
+init_scene_Modern(AWallpaperPlugin *desktop_plugin)
 {
   Actor *actor;
   Scene *scene;
@@ -452,7 +459,7 @@ init_scene(AWallpaperPlugin *desktop_plugin)
 
 /* Init Berlin Scene */
 void
-init_scene1(AWallpaperPlugin *desktop_plugin)
+init_scene_Berlin(AWallpaperPlugin *desktop_plugin)
 {
   Actor *actor, *actor1, *actor2;
   Scene *scene;
@@ -620,3 +627,12 @@ init_scene1(AWallpaperPlugin *desktop_plugin)
 
 }
 
+void 
+init_scene_theme(AWallpaperPlugin *desktop_plugin)
+{
+    void (*func)(gpointer);
+    func = g_hash_table_lookup(desktop_plugin->priv->hash_scene_func, desktop_plugin->priv->theme);
+    if (func){
+        (*func)(desktop_plugin);
+    }
+}