added into billboard info about missed calls, sms, chat, mail from notifications...
[livewp] / applet / src / livewp-scene.c
1 /*vim: set sw=4 ts=4 et: */
2 /*
3  * This file is part of Live Wallpaper (livewp)
4  * 
5  * Copyright (C) 2010 Vlad Vasiliev
6  * Copyright (C) 2010 Tanya Makova
7  *       for the code
8  * 
9  * This software is free software; you can redistribute it and/or
10  * modify it under the terms of the GNU Lesser General Public License
11  * as published by the Free Software Foundation; either version 2.1 of
12  * the License, or (at your option) any later version.
13  * 
14  * This software is distributed in the hope that it will be useful, but
15  * WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17  * Lesser General Public License for more details.
18  * 
19  * You should have received a copy of the GNU Lesser General Public
20  * License along with this software; if not, write to the Free Software
21  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
22  * 02110-1301 USA
23 */
24 /*******************************************************************************/
25 #include "livewp-scene.h" 
26
27 void 
28 destroy_scene(AWallpaperPlugin *desktop_plugin)
29 {
30     GSList * tmp = desktop_plugin->priv->scene->actors;
31     while (tmp != NULL){
32         destroy_actor(tmp->data);
33         tmp = g_slist_next(tmp);
34     }
35     g_slist_free(tmp);
36     desktop_plugin->priv->scene->actors = NULL;
37     if (desktop_plugin->priv->scene){
38         g_free(desktop_plugin->priv->scene);
39         desktop_plugin->priv->scene = NULL;
40     }
41 }
42
43 void
44 reload_scene(AWallpaperPlugin *desktop_plugin)
45 {
46     fprintf(stderr,"Reload scene %s\n", desktop_plugin->priv->theme);  
47     destroy_scene(desktop_plugin);
48 #if 0
49     if (!strcmp(desktop_plugin->priv->theme,"Modern"))
50         init_scene_Modern(desktop_plugin);
51     else if (!strcmp(desktop_plugin->priv->theme,"Berlin")) 
52         init_scene_Berlin(desktop_plugin);
53     else if (!strcmp(desktop_plugin->priv->theme,"Matrix")) 
54         init_scene_Matrix(desktop_plugin);
55 #endif
56     init_scene_theme(desktop_plugin);
57 }
58
59 void
60 init_scene_Matrix(AWallpaperPlugin *desktop_plugin)
61 {
62   Actor *actor;
63   Scene *scene;
64   GPtrArray *child;
65   gint now = time(NULL);
66   gint y1, y2;
67
68   if (desktop_plugin->priv->rich_animation){
69       y1 = -480;
70       y2 = -480-480;
71   }else {
72       y1 = 0;
73       y2 = -480;
74   }
75
76   fprintf(stderr, "init scene2 \n");
77   scene = g_new0(Scene, 1);
78   //scene.daytime = get_daytime();
79   scene->actors = NULL;
80   desktop_plugin->priv->scene = scene;
81   
82   actor = init_object(desktop_plugin, "background", "bg.png", 
83                       0, 0, 5, 800, 480, 
84                       TRUE, TRUE, 100, 255, 
85                       NULL, NULL, NULL);
86   scene->actors = g_slist_append(scene->actors, actor);
87
88   actor = init_object(desktop_plugin, "symbols", "symbols.png", 
89                       0, 0, 10, 800, 480, 
90                       TRUE, TRUE, 100, 255, 
91                       NULL, NULL, NULL);
92   scene->actors = g_slist_append(scene->actors, actor);
93
94   child = g_ptr_array_sized_new(4);
95   actor = init_object(desktop_plugin, "layer1", "layer1_2.png", 
96                       0, y1, 6, 800, 960, 
97                       TRUE, TRUE, 100, 255, 
98                       NULL, NULL, NULL);
99   //actor->time_start_animation = now;
100   //actor->duration_animation = G_MAXINT;
101   scene->actors = g_slist_append(scene->actors, actor);
102   g_ptr_array_add(child, actor);
103
104   actor = init_object(desktop_plugin, "layer1", "layer1_1.png", 
105                       0, y2, 7, 800, 960, 
106                       TRUE, TRUE, 100, 255, 
107                       NULL, NULL, NULL);
108   //actor->time_start_animation = now;
109   //actor->duration_animation = G_MAXINT;
110   scene->actors = g_slist_append(scene->actors, actor);
111   g_ptr_array_add(child, actor);
112
113   actor = init_object(desktop_plugin, "layer2", "layer2_2.png", 
114                       0, y1, 8, 800, 960, 
115                       TRUE, TRUE, 100, 255, 
116                       NULL, NULL, NULL);
117   //actor->time_start_animation = now;
118   //actor->duration_animation = G_MAXINT;
119   scene->actors = g_slist_append(scene->actors, actor);
120   g_ptr_array_add(child, actor);
121
122   actor = init_object(desktop_plugin, "layer2", "layer2_1.png", 
123                       0, y2, 9, 800, 960, 
124                       TRUE, TRUE, 100, 255, 
125                       NULL, NULL, NULL);
126   //actor->time_start_animation = now;
127   //actor->duration_animation = G_MAXINT;
128   scene->actors = g_slist_append(scene->actors, actor);
129   g_ptr_array_add(child, actor);
130
131   actor = init_object(desktop_plugin, "layers", "", 
132                       0, y2, 9, 800, 960, 
133                       FALSE, FALSE, 100, 255, 
134                       (gpointer)&change_layer, NULL, child);
135   actor->time_start_animation = now;
136   actor->duration_animation = G_MAXINT;
137   scene->actors = g_slist_append(scene->actors, actor);
138
139   run_long_timeout(desktop_plugin);
140
141 }
142
143 /* Init Modern Scene */
144 void
145 init_scene_Modern(AWallpaperPlugin *desktop_plugin)
146 {
147   Actor *actor;
148   Scene *scene;
149   gint now = time(NULL);
150   gint i;
151   gint winds[13][2];
152
153   //fprintf(stderr, "init scene \n");
154   scene = g_new0(Scene, 1);
155   scene->daytime = get_daytime();
156   scene->actors = NULL;
157   scene->wind_orientation = -1;
158   scene->wind_angle = 0.3;
159   /* init value for random */
160   scene->seed = time(NULL);
161   desktop_plugin->priv->scene = scene;
162
163   actor = init_object(desktop_plugin, "sky", "sky0.png", 
164                       0, 0, 5, 800, 480, 
165                       TRUE , TRUE, 100, 255, 
166                       (gpointer)&change_static_actor, NULL, NULL);
167   change_static_actor(actor, desktop_plugin);
168   scene->actors = g_slist_append(scene->actors, actor);
169   
170   actor = init_object(desktop_plugin, "sun", "sun.png", 
171                       0, 0, 6, 88, 88, 
172                       FALSE, FALSE, 100, 255, 
173                       (gpointer)&change_sun, NULL, NULL);
174   actor->time_start_animation = now;
175   actor->duration_animation = G_MAXINT;
176   change_sun(actor, desktop_plugin);
177   scene->actors = g_slist_append(scene->actors, actor);
178
179   //actor = init_object(desktop_plugin, "dot", "dot1.png", 0, 0, 11, 50, 50, 
180     //                  TRUE, 100, 255, NULL, NULL);
181   //scene.actors = g_slist_append(scene.actors, actor);
182   
183   actor = init_object(desktop_plugin, "cloud1", "cloud1.png", 
184                       0, fast_rnd(300)-97, 7, 150, 97, 
185                       FALSE, FALSE, 100, 255, 
186                       (gpointer)&change_cloud, NULL, NULL);
187   actor->time_start_animation = now + fast_rnd(20);
188   actor->duration_animation = 3*60;
189   scene->actors = g_slist_append(scene->actors, actor);
190   
191   actor = init_object(desktop_plugin, "cloud2", "cloud2.png", 
192                       0, fast_rnd(300)-75, 7, 188, 75, 
193                       FALSE, FALSE, 100, 255, 
194                       (gpointer)&change_cloud, NULL, NULL);
195   actor->time_start_animation = now + fast_rnd(40)+10;
196   actor->duration_animation = 3*60;
197   scene->actors = g_slist_append(scene->actors, actor);
198
199   actor = init_object(desktop_plugin, "cloud4", "cloud4.png", 
200                       0, fast_rnd(300)-75, 7, 150, 75, 
201                       FALSE, FALSE, 100, 255, 
202                       (gpointer)&change_cloud, NULL, NULL);
203   actor->time_start_animation = now + fast_rnd(60) + 20;
204   actor->duration_animation = 5*60;
205   scene->actors = g_slist_append(scene->actors, actor);
206
207
208   actor = init_object(desktop_plugin, "town", "town0.png", 
209                       0, 0, 8, 800, 480, 
210                       TRUE, TRUE, 100, 255, 
211                       (gpointer)&change_static_actor, NULL, NULL);
212   change_static_actor(actor, desktop_plugin);
213   scene->actors = g_slist_append(scene->actors, actor);
214
215   actor = init_object(desktop_plugin, "stend", "stend0.png", 
216                       452, 166, 9, 300, 305, 
217                       TRUE, TRUE, 100, 255, 
218                       (gpointer)&change_static_actor, NULL, NULL);
219   change_static_actor(actor, desktop_plugin);
220   scene->actors = g_slist_append(scene->actors, actor);
221
222   actor = init_object(desktop_plugin, "billboard_text", "",
223                       470, 174, 9, 300, 108,
224                       TRUE, FALSE, 100, 255,
225                       (gpointer)&change_billboard, NULL, NULL);
226   create_hildon_actor_text(actor, desktop_plugin);
227   //actor->time_start_animation = time(NULL) + 20;
228   change_billboard(actor, desktop_plugin);
229   scene->actors = g_slist_append(scene->actors, actor);
230
231   actor = init_object(desktop_plugin, "tram", "tram.png", 
232                       -300, 225, 10, 350, 210, 
233                       FALSE, FALSE, 100, 255, 
234                       (gpointer)&change_tram, NULL, NULL);
235   actor->time_start_animation = time(NULL) + fast_rnd(10); 
236   actor->duration_animation = 60;
237   scene->actors = g_slist_append(scene->actors, actor);
238
239   actor = init_object(desktop_plugin, "border", "border0.png", 
240                       0, 480-79, 11, 800, 79,
241                       TRUE, TRUE, 100, 255, 
242                       (gpointer)&change_static_actor_with_corner, NULL, NULL);
243   change_static_actor_with_corner(actor, desktop_plugin);
244   scene->actors = g_slist_append(scene->actors, actor);
245   
246   actor = init_object(desktop_plugin, "moon", "moon1.png", 
247                       400, 20, 6, 60, 60, 
248                       FALSE, FALSE, 100, 255, 
249                       (gpointer)&change_moon, NULL, NULL);
250   change_moon(actor, desktop_plugin);
251   scene->actors = g_slist_append(scene->actors, actor);
252
253   actor = init_object(desktop_plugin, "wind", "", 
254                       0, 0, 5, 0, 0, 
255                       FALSE, FALSE, 100, 255, 
256                       (gpointer)&change_wind, NULL, NULL);
257   change_wind(actor, desktop_plugin);
258   scene->actors = g_slist_append(scene->actors, actor);
259
260     /* windows in 4-th house  */
261
262     winds[0][0] = 482;
263     winds[0][1] = 180;
264
265     winds[1][0] = 495;
266     winds[1][1] = 179;
267
268     winds[2][0] = 482;
269     winds[2][1] = 191;
270
271     winds[3][0] = 495;
272     winds[3][1] = 190;
273     
274     winds[4][0] = 482;
275     winds[4][1] = 201;
276     
277     winds[5][0] = 495;
278     winds[5][1] = 210;
279     
280     winds[6][0] = 482;
281     winds[6][1] = 222;
282     
283     winds[7][0] = 495;
284     winds[7][1] = 221;
285     
286     winds[8][0] = 459;
287     winds[8][1] = 203;
288     
289     winds[9][0] = 495;
290     winds[9][1] = 241;
291     
292     winds[10][0] = 495;
293     winds[10][1] = 252;
294     
295     winds[11][0] = 482;
296     winds[11][1] = 273;
297     
298     winds[12][0] = 495;
299     winds[12][1] = 303;
300     for (i=0; i<13; i++){
301         actor = init_object(desktop_plugin, "window1", "window1.png", 
302                             winds[i][0], winds[i][1], 8, 8, 10, 
303                             FALSE, FALSE, 100, 255, 
304                             (gpointer)&change_window1, NULL, NULL);
305         //change_window1(actor, desktop_plugin);
306         actor->time_start_animation = now + fast_rnd(30);
307         scene->actors = g_slist_append(scene->actors, actor);
308
309     }
310     
311     /* windows in 1-th house  */
312     
313     winds[0][0] = 86;
314     winds[0][1] = 321;
315
316     winds[1][0] = 86;
317     winds[1][1] = 363;
318
319     winds[2][0] = 86;
320     winds[2][1] = 385;
321
322     winds[3][0] = 86;
323     winds[3][1] = 286;
324     
325     winds[4][0] = 94;
326     winds[4][1] = 232;
327     
328     winds[5][0] = 94;
329     winds[5][1] = 243;
330     
331     winds[6][0] = 94;
332     winds[6][1] = 265;
333     
334     winds[7][0] = 94;
335     winds[7][1] = 331;
336     for (i=0; i<8; i++){
337         actor = init_object(desktop_plugin, "window2", "window2.png", 
338                             winds[i][0], winds[i][1], 8, 8, 10, 
339                             FALSE, FALSE, 100, 255, 
340                             (gpointer)&change_window1, NULL, NULL);
341         //change_window1(actor, desktop_plugin);
342         actor->time_start_animation = now + fast_rnd(30);
343         scene->actors = g_slist_append(scene->actors, actor);
344
345     }
346     
347     /* windows in 3-th house  */
348     
349     winds[0][0] = 251;
350     winds[0][1] = 162;
351
352     winds[1][0] = 251;
353     winds[1][1] = 196;
354
355     winds[2][0] = 251;
356     winds[2][1] = 278;
357
358     winds[3][0] = 251;
359     winds[3][1] = 289;
360     
361     winds[4][0] = 313;
362     winds[4][1] = 173;
363     
364     winds[5][0] = 322;
365     winds[5][1] = 160;
366     
367     winds[6][0] = 303;
368     winds[6][1] = 217;
369     
370     winds[7][0] = 322;
371     winds[7][1] = 224;
372     
373     winds[8][0] = 323;
374     winds[8][1] = 217;
375     
376     winds[9][0] = 322;
377     winds[9][1] = 288;
378     
379     for (i=0; i<10; i++){
380         actor = init_object(desktop_plugin, "window3", "window3.png", 
381                             winds[i][0], winds[i][1], 8, 8, 10, 
382                             FALSE, FALSE, 100, 255, 
383                             (gpointer)&change_window1, NULL, NULL);
384         //change_window1(actor, desktop_plugin);
385         actor->time_start_animation = now + fast_rnd(30);
386         scene->actors = g_slist_append(scene->actors, actor);
387
388     }
389
390     /* windows in 5-th house  */
391     
392     winds[0][0] = 610;
393     winds[0][1] = 224;
394
395     winds[1][0] = 602;
396     winds[1][1] = 245;
397
398     winds[2][0] = 602;
399     winds[2][1] = 264;
400
401     winds[3][0] = 610;
402     winds[3][1] = 301;
403     
404     winds[4][0] = 610;
405     winds[4][1] = 320;
406     
407     winds[5][0] = 593;
408     winds[5][1] = 352;
409     
410     winds[6][0] = 610;
411     winds[6][1] = 368;
412     
413     for (i=0; i<7; i++){
414         actor = init_object(desktop_plugin, "window4", "window4.png", 
415                             winds[i][0], winds[i][1], 8, 8, 10, 
416                             FALSE, FALSE, 100, 255, 
417                             (gpointer)&change_window1, NULL, NULL);
418         //change_window1(actor, desktop_plugin);
419         actor->time_start_animation = now + fast_rnd(30);
420         scene->actors = g_slist_append(scene->actors, actor);
421
422     }
423
424     /* windows in 6-th house  */
425     
426     winds[0][0] = 717;
427     winds[0][1] = 283;
428
429     winds[1][0] = 698;
430     winds[1][1] = 293;
431
432     winds[2][0] = 717;
433     winds[2][1] = 315;
434
435     winds[3][0] = 717;
436     winds[3][1] = 323;
437     
438     winds[4][0] = 698;
439     winds[4][1] = 362;
440     
441     winds[5][0] = 698;
442     winds[5][1] = 400;
443     
444     for (i=0; i<6; i++){
445         actor = init_object(desktop_plugin, "window5", "window5.png", 
446                             winds[i][0], winds[i][1], 8, 8, 10, 
447                             FALSE, FALSE, 100, 255, 
448                             (gpointer)&change_window1, NULL, NULL);
449         //change_window1(actor, desktop_plugin);
450         actor->time_start_animation = now + fast_rnd(30);
451         scene->actors = g_slist_append(scene->actors, actor);
452
453     }
454     run_long_timeout(desktop_plugin);
455
456 #if 0    
457   anim = g_new0(Animation, 1);
458   anim->count = 1;
459   anim->actor = actor;
460   anim->func_change = &change_tram;
461   anim->func_time = NULL;
462   anim->timestart = time(NULL); 
463   anim->timeall = 10;
464   
465   scene.dynamic_actors = g_slist_append(scene.dynamic_actors, anim);
466 #endif  
467 }
468
469 /* Init Berlin Scene */
470 void
471 init_scene_Berlin(AWallpaperPlugin *desktop_plugin)
472 {
473   Actor *actor, *actor1, *actor2;
474   Scene *scene;
475   gint now = time(NULL);
476   gint i; 
477   gint winds[13][2];
478   GPtrArray *child = NULL;
479
480   scene = g_new0(Scene, 1);
481   scene->daytime = get_daytime();
482   scene->actors = NULL;
483   scene->wind_orientation = -1;
484   scene->wind_angle = 0.3;
485   /* init value for random */
486   scene->seed = time(NULL);
487   desktop_plugin->priv->scene = scene;
488   
489   actor = init_object(desktop_plugin, "sky", "sky.png", 0, 0, 5, 800, 480, 
490                       TRUE, TRUE, 100, 255, 
491                       (gpointer)&change_static_actor, NULL, NULL);
492   change_static_actor(actor, desktop_plugin);
493   scene->actors = g_slist_append(scene->actors, actor);
494
495   
496   actor = init_object(desktop_plugin, "sun", "sun.png", 0, 0, 6, 88, 88, 
497                       FALSE, FALSE, 100, 255, 
498                       (gpointer)&change_sun, NULL, NULL);
499   actor->time_start_animation = time(NULL);
500   actor->duration_animation = G_MAXINT;
501   change_sun(actor, desktop_plugin);
502   scene->actors = g_slist_append(scene->actors, actor);
503
504 #if 0
505   actor = init_object(desktop_plugin, "dot", "dot1.png", 0, 0, 11, 50, 50, 
506                       TRUE, 100, 255, NULL, NULL);
507   scene.actors = g_slist_append(scene.actors, actor);
508 #endif
509
510   actor = init_object(desktop_plugin, "moon", "moon1.png", 400, 15, 6, 60, 60, 
511                       FALSE, FALSE, 100, 255, 
512                       (gpointer)&change_moon, NULL, NULL);
513   change_moon(actor, desktop_plugin);
514   scene->actors = g_slist_append(scene->actors, actor);
515   
516   actor = init_object(desktop_plugin, "cloud1", "cloud1.png", 0, fast_rnd(300)-97, 7, 150, 97, 
517                       FALSE, FALSE, 100, 255, 
518                       (gpointer)&change_cloud, NULL, NULL);
519   actor->time_start_animation = now + fast_rnd(30) + 10;
520   actor->duration_animation = 3*60;
521   scene->actors = g_slist_append(scene->actors, actor);
522   
523   actor = init_object(desktop_plugin, "cloud2", "cloud2.png", 0, fast_rnd(300)-75, 7, 188, 75, 
524                       FALSE, FALSE, 100, 255, 
525                       (gpointer)&change_cloud, NULL, NULL);
526   actor->time_start_animation = now + fast_rnd(10);
527   actor->duration_animation = 3*60;
528   scene->actors = g_slist_append(scene->actors, actor);
529
530   actor = init_object(desktop_plugin, "cloud4", "cloud4.png", 0, fast_rnd(300)-75, 7, 150, 75, 
531                       FALSE, FALSE, 100, 255, 
532                       (gpointer)&change_cloud, NULL, NULL);
533   actor->time_start_animation = now + fast_rnd(60) + 20;
534   actor->duration_animation = 5*60;
535   scene->actors = g_slist_append(scene->actors, actor);
536
537  
538   actor = init_object(desktop_plugin, "plane2", "plane3.png", 0, 45, 8, 160, 50, 
539                       FALSE, FALSE, 100, 255, 
540                       (gpointer)&change_plane2, NULL, NULL);
541   actor->time_start_animation = now + fast_rnd(40) + 20;
542   actor->duration_animation = 60;
543   scene->actors = g_slist_append(scene->actors, actor);
544   
545   actor = init_object(desktop_plugin, "plane1", "tu154.png", 620, 233, 9, 300, 116, 
546                       FALSE, FALSE, 100, 255, 
547                       (gpointer)&change_plane1, NULL, NULL);
548   actor->time_start_animation = now + fast_rnd(20);
549   actor->duration_animation = 30;
550   scene->actors = g_slist_append(scene->actors, actor);
551
552   actor = init_object(desktop_plugin, "town", "town.png", 0, 0, 10, 800, 480, 
553                       TRUE, TRUE, 100, 255, 
554                       (gpointer)&change_static_actor_with_corner, NULL, NULL);
555   change_static_actor_with_corner(actor, desktop_plugin);
556   scene->actors = g_slist_append(scene->actors, actor);
557
558   actor = init_object(desktop_plugin, "wind", "", 0, 0, 5, 0, 0, 
559                       FALSE, FALSE, 100, 255, 
560                       (gpointer)&change_wind, NULL, NULL);
561   change_wind(actor, desktop_plugin);
562   scene->actors = g_slist_append(scene->actors, actor);
563
564   actor1 = init_object(desktop_plugin, "signal_red", "red.png", 
565                       486, 425, 10, 18, 38, 
566                       FALSE, TRUE, 100, 255, NULL, NULL, NULL);
567   //actor->time_start_animation = now + fast_rnd(30) + 10;  
568   scene->actors = g_slist_append(scene->actors, actor1);
569    
570   actor2 = init_object(desktop_plugin, "signal_green", "green.png", 
571                       486, 425, 10, 18, 38, 
572                       TRUE, TRUE, 100, 255, NULL, NULL, NULL);
573   //actor->time_start_animation = now + fast_rnd(30) + 10;  
574   scene->actors = g_slist_append(scene->actors, actor2);
575   child = g_ptr_array_sized_new(2);
576   g_ptr_array_add(child, actor1);
577   g_ptr_array_add(child, actor2);
578   actor = init_object(desktop_plugin, "signal", "",
579                       486, 425, 10, 18, 38,
580                       FALSE, FALSE, 100, 255, 
581                       (gpointer)&change_signal, NULL, child);
582   actor->time_start_animation = now + fast_rnd(30) + 10;
583   scene->actors = g_slist_append(scene->actors, actor);
584     
585     winds[0][0] = 389;
586     winds[0][1] = 305;
587
588     winds[1][0] = 373;
589     winds[1][1] = 306;
590
591     winds[2][0] = 355;
592     winds[2][1] = 306;
593
594     winds[3][0] = 356;
595     winds[3][1] = 288;
596     
597     winds[4][0] = 337;
598     winds[4][1] = 269;
599     
600     winds[5][0] = 372;
601     winds[5][1] = 268;
602   
603     winds[6][0] = 372;
604     winds[6][1] = 249;
605     
606     winds[7][0] = 388;
607     winds[7][1] = 249;
608     
609     winds[8][0] = 387;
610     winds[8][1] = 230;
611     
612     winds[9][0] = 372;
613     winds[9][1] = 211;
614     
615     winds[10][0] = 355;
616     winds[10][1] = 159;
617     
618     winds[11][0] = 335;
619     winds[11][1] = 158;
620     
621     winds[12][0] = 386;
622     winds[12][1] = 119;
623   
624     for (i=0; i<13; i++){
625         actor = init_object(desktop_plugin, "window", "window.png", 
626                             winds[i][0], winds[i][1], 10, 8, 9, 
627                             FALSE, TRUE, 100, 255, 
628                             (gpointer)&change_window1, NULL, NULL);
629         //change_window1(actor, desktop_plugin);
630         actor->time_start_animation = now + fast_rnd(30);
631         scene->actors = g_slist_append(scene->actors, actor);
632
633     }
634     
635     run_long_timeout(desktop_plugin);
636
637 }
638
639 void 
640 init_scene_theme(AWallpaperPlugin *desktop_plugin)
641 {
642     void (*func)(gpointer);
643     func = g_hash_table_lookup(desktop_plugin->priv->hash_scene_func, desktop_plugin->priv->theme);
644     if (func){
645         (*func)(desktop_plugin);
646     }
647 }