1 /* vim: set sw=4 ts=4 et: */
3 * This file is part of Live Wallpaper (livewp)
5 * Copyright (C) 2010 Vlad Vasiliev
6 * Copyright (C) 2010 Tanya Makova
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.
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.
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
24 /*******************************************************************************/
25 #include "livewp-scene.h"
28 destroy_scene(AWallpaperPlugin *desktop_plugin)
30 if (desktop_plugin->priv->scene){
31 GSList * tmp = desktop_plugin->priv->scene->actors;
33 destroy_actor(tmp->data);
34 tmp = g_slist_next(tmp);
38 desktop_plugin->priv->scene->actors = NULL;
39 if (desktop_plugin->priv->scene){
40 g_free(desktop_plugin->priv->scene);
41 desktop_plugin->priv->scene = NULL;
44 if (desktop_plugin->priv->pipeline){
45 gst_element_set_state (desktop_plugin->priv->pipeline, GST_STATE_NULL);
46 gst_object_unref (GST_OBJECT (desktop_plugin->priv->pipeline));
47 desktop_plugin->priv->pipeline = NULL;
49 if (desktop_plugin->priv->podpid > 1){
50 kill (desktop_plugin->priv->podpid, SIGTERM);
51 desktop_plugin->priv->podpid = -1;
54 /*******************************************************************************/
56 reload_scene(AWallpaperPlugin *desktop_plugin)
58 /* fprintf(stderr,"Reload scene %s\n", desktop_plugin->priv->theme); */
59 destroy_scene(desktop_plugin);
60 init_scene_theme(desktop_plugin);
62 /*******************************************************************************/
64 init_scene_Accel(AWallpaperPlugin *desktop_plugin)
69 gint now = time(NULL);
71 gint sizes1[4] = {57, 76, 43, 50},
74 /* fprintf(stderr, "init scene accel\n"); */
75 scene = g_new0(Scene, 1);
77 desktop_plugin->priv->scene = scene;
79 actor = init_object(desktop_plugin, "background", "bg.png",
83 scene->actors = g_slist_append(scene->actors, actor);
85 child = g_ptr_array_sized_new(16);
89 str = g_strdup_printf("tape%i.png", n+1);
90 actor = init_object(desktop_plugin, "tape", str,
91 fast_rnd(800), fast_rnd(480), 2+fast_rnd(6), 800, sizes1[n],
94 scene->actors = g_slist_append(scene->actors, actor);
95 g_ptr_array_add(child, actor);
99 actor = init_object(desktop_plugin, "tape", "",
101 FALSE, FALSE, 100, 255,
102 (gpointer)&change_tape, NULL, child);
103 actor->time_start_animation = now;
104 actor->duration_animation = G_MAXINT;
105 scene->actors = g_slist_append(scene->actors, actor);
107 run_long_timeout(desktop_plugin);
109 /*******************************************************************************/
111 parsestring(char *line, char **argv)
113 while (*line != '\0') {
114 while (*line == ' ' || *line == '\n')
115 *line++ = '\0'; /* replace white spaces with 0 */
116 *argv++ = line; /* save the argument position */
117 while (*line != '\0' && *line != ' ' &&
119 line++; /* skip the argument until ... */
121 *argv = '\0'; /* mark the end of argument list */
126 sync_handler(GstBus *bus, GstMessage *message, AWallpaperPlugin *desktop_plugin){
128 if (!desktop_plugin->priv->visible)
129 gst_element_set_state (desktop_plugin->priv->pipeline, GST_STATE_PAUSED);
130 if (GST_MESSAGE_TYPE(message) != GST_MESSAGE_ELEMENT){
131 return (GST_BUS_PASS);
133 if (!gst_structure_has_name(message->structure, "prepare-xwindow-id")){
134 return (GST_BUS_PASS);
136 return (GST_BUS_DROP);
140 /*******************************************************************************/
142 bus_call (GstBus *bus, GstMessage *msg, AWallpaperPlugin *desktop_plugin)
144 switch (GST_MESSAGE_TYPE (msg))
146 case GST_MESSAGE_EOS:
147 if (desktop_plugin->priv->rich_animation){
149 GstClockTime nach = (GstClockTime)(0 * GST_MSECOND);
150 if (!gst_element_seek(desktop_plugin->priv->pipeline, 1.0, GST_FORMAT_TIME,
151 (GstSeekFlags) (GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_KEY_UNIT), GST_SEEK_TYPE_SET,
152 nach, GST_SEEK_TYPE_NONE, GST_CLOCK_TIME_NONE))
153 fprintf(stderr,"ERROR in seek\n");
155 gst_element_set_state (desktop_plugin->priv->pipeline, GST_STATE_PLAYING);
158 if (desktop_plugin->priv->pipeline){
159 gst_element_set_state (desktop_plugin->priv->pipeline, GST_STATE_NULL);
160 gst_object_unref (GST_OBJECT (desktop_plugin->priv->pipeline));
164 case GST_MESSAGE_ERROR: break;
170 /*******************************************************************************/
172 init_scene_Xsnow(AWallpaperPlugin *desktop_plugin){
173 fprintf(stderr,"init_scene_Xsnow\n");
174 char* child_argv[128];
175 char *run_string = NULL;
177 fprintf(stderr, "PARAMETR %s\n", desktop_plugin->priv->theme_string_parametr1);
178 run_string = g_strdup_printf("/usr/bin/mplayer -vo x11 -wid %d %s\n", \
179 GDK_WINDOW_XID(desktop_plugin->priv->window->window), desktop_plugin->priv->theme_string_parametr1);
181 if (!desktop_plugin->priv->visible)
183 run_string= g_strdup_printf("/usr/bin/xsnow");
184 parsestring(run_string, child_argv);
186 desktop_plugin->priv->running = TRUE;
187 desktop_plugin->priv->podpid = fork();
188 if (desktop_plugin->priv->podpid == 0){
189 execvp("/usr/bin/xsnow", child_argv);
190 fprintf(stderr,"Problem with new podprocess");
194 /*******************************************************************************/
196 cb_timeout0(AWallpaperPlugin *desktop_plugin) {
198 if (!desktop_plugin || !desktop_plugin->priv->pipeline)
200 if (desktop_plugin->priv->theme_int_parametr1 == 0){
201 if (!gst_element_seek((GstElement *)GST_PIPELINE (desktop_plugin->priv->pipeline), 1.0, GST_FORMAT_TIME,
202 GST_SEEK_FLAG_FLUSH, GST_SEEK_TYPE_SET,
203 desktop_plugin->priv->theme_int_parametr1 * GST_SECOND,
204 GST_SEEK_TYPE_NONE, GST_CLOCK_TIME_NONE))
205 fprintf(stderr,"Error in seek:\n");
209 if (gst_element_get_state (desktop_plugin->priv->pipeline, NULL, NULL, -1) == GST_STATE_CHANGE_FAILURE)
212 if (!gst_element_seek((GstElement *)GST_PIPELINE (desktop_plugin->priv->pipeline), 1.0, GST_FORMAT_TIME,
213 GST_SEEK_FLAG_FLUSH, GST_SEEK_TYPE_SET,
214 desktop_plugin->priv->theme_int_parametr1 * GST_SECOND,
215 GST_SEEK_TYPE_NONE, GST_CLOCK_TIME_NONE))
216 fprintf(stderr,"Error in seek:\n");
220 /*******************************************************************************/
222 init_scene_Video(AWallpaperPlugin *desktop_plugin)
225 GstElement *videosink;
226 gchar *file_plus_uri;
229 /* fprintf(stderr, "init scene Video \n"); */
230 desktop_plugin->priv->pipeline = gst_pipeline_new("gst-player");
231 bin = gst_element_factory_make ("playbin2", "bin");
232 videosink = gst_element_factory_make ("ximagesink", "videosink");
233 g_object_set (G_OBJECT (bin), "video-sink", videosink, NULL);
234 gst_bin_add (GST_BIN (desktop_plugin->priv->pipeline), bin);
238 bus = gst_pipeline_get_bus (GST_PIPELINE (desktop_plugin->priv->pipeline));
239 gst_bus_add_watch(bus, (GstBusFunc)bus_call, desktop_plugin);
240 gst_object_unref (bus);
242 file_plus_uri = g_strdup_printf("file://%s",desktop_plugin->priv->theme_string_parametr1);
243 g_object_set (G_OBJECT (bin), "uri", file_plus_uri, NULL );
244 g_object_set (G_OBJECT (videosink), "force-aspect-ratio", TRUE, NULL );
246 if (GST_IS_X_OVERLAY (videosink))
247 gst_x_overlay_set_xwindow_id (GST_X_OVERLAY (videosink), GDK_DRAWABLE_XID(desktop_plugin->priv->window->window));
249 if (desktop_plugin->priv->visible){
250 g_timeout_add(50, (GSourceFunc)cb_timeout0, desktop_plugin);
251 gst_element_set_state (desktop_plugin->priv->pipeline, GST_STATE_PLAYING);
254 //gst_element_get_state(deskddtop_plugin->priv->pipeline, NULL, NULL, 100 * GST_MSECOND);
257 /*******************************************************************************/
259 init_scene_Matrix(AWallpaperPlugin *desktop_plugin)
264 gint now = time(NULL);
267 if (desktop_plugin->priv->rich_animation){
275 /* fprintf(stderr, "init scene2 \n"); */
276 scene = g_new0(Scene, 1);
277 //scene.daytime = get_daytime();
278 scene->actors = NULL;
279 desktop_plugin->priv->scene = scene;
281 actor = init_object(desktop_plugin, "background", "bg.png",
283 TRUE, TRUE, 100, 255,
285 scene->actors = g_slist_append(scene->actors, actor);
287 actor = init_object(desktop_plugin, "symbols", "symbols.png",
289 TRUE, TRUE, 100, 255,
291 scene->actors = g_slist_append(scene->actors, actor);
293 child = g_ptr_array_sized_new(4);
294 actor = init_object(desktop_plugin, "layer1", "layer1_2.png",
296 TRUE, TRUE, 100, 255,
298 //actor->time_start_animation = now;
299 //actor->duration_animation = G_MAXINT;
300 scene->actors = g_slist_append(scene->actors, actor);
301 g_ptr_array_add(child, actor);
303 actor = init_object(desktop_plugin, "layer1", "layer1_1.png",
305 TRUE, TRUE, 100, 255,
307 //actor->time_start_animation = now;
308 //actor->duration_animation = G_MAXINT;
309 scene->actors = g_slist_append(scene->actors, actor);
310 g_ptr_array_add(child, actor);
312 actor = init_object(desktop_plugin, "layer2", "layer2_2.png",
314 TRUE, TRUE, 100, 255,
316 //actor->time_start_animation = now;
317 //actor->duration_animation = G_MAXINT;
318 scene->actors = g_slist_append(scene->actors, actor);
319 g_ptr_array_add(child, actor);
321 actor = init_object(desktop_plugin, "layer2", "layer2_1.png",
323 TRUE, TRUE, 100, 255,
325 //actor->time_start_animation = now;
326 //actor->duration_animation = G_MAXINT;
327 scene->actors = g_slist_append(scene->actors, actor);
328 g_ptr_array_add(child, actor);
330 actor = init_object(desktop_plugin, "layers", "",
332 FALSE, FALSE, 100, 255,
333 (gpointer)&change_layer, NULL, child);
334 actor->time_start_animation = now;
335 actor->duration_animation = G_MAXINT;
336 scene->actors = g_slist_append(scene->actors, actor);
338 run_long_timeout(desktop_plugin);
341 /*******************************************************************************/
342 /* Init Modern Scene */
344 init_scene_Modern(AWallpaperPlugin *desktop_plugin)
348 gint now = time(NULL);
353 /* fprintf(stderr, "init scene \n"); */
354 scene = g_new0(Scene, 1);
355 scene->daytime = get_daytime();
356 scene->actors = NULL;
357 scene->wind_orientation = -1;
358 scene->wind_angle = 0.3;
359 /* init value for random */
360 scene->seed = time(NULL);
361 scene->notification = TRUE;
362 desktop_plugin->priv->scene = scene;
363 actor = init_object(desktop_plugin, "sky", "sky0.png",
365 TRUE , TRUE, 100, 255,
366 (gpointer)&change_static_actor, NULL, NULL);
367 scene->actors = g_slist_append(scene->actors, actor);
368 change_static_actor(actor, desktop_plugin);
370 actor = init_object(desktop_plugin, "sun", "sun.png",
372 FALSE, FALSE, 100, 255,
373 (gpointer)&change_sun, NULL, NULL);
374 actor->time_start_animation = now;
375 actor->duration_animation = G_MAXINT;
376 change_sun(actor, desktop_plugin);
377 scene->actors = g_slist_append(scene->actors, actor);
379 //actor = init_object(desktop_plugin, "dot", "dot1.png", 0, 0, 11, 50, 50,
380 // TRUE, 100, 255, NULL, NULL);
381 //scene.actors = g_slist_append(scene.actors, actor);
383 actor = init_object(desktop_plugin, "cloud1", "cloud1.png",
384 0, fast_rnd(300)-97, 7, 150, 97,
385 FALSE, FALSE, 100, 255,
386 (gpointer)&change_cloud, NULL, NULL);
387 actor->time_start_animation = now + fast_rnd(20);
388 actor->duration_animation = 3*60;
389 scene->actors = g_slist_append(scene->actors, actor);
391 actor = init_object(desktop_plugin, "cloud2", "cloud2.png",
392 0, fast_rnd(300)-75, 7, 188, 75,
393 FALSE, FALSE, 100, 255,
394 (gpointer)&change_cloud, NULL, NULL);
395 actor->time_start_animation = now + fast_rnd(40)+10;
396 actor->duration_animation = 3*60;
397 scene->actors = g_slist_append(scene->actors, actor);
399 actor = init_object(desktop_plugin, "cloud4", "cloud4.png",
400 0, fast_rnd(300)-75, 7, 150, 75,
401 FALSE, FALSE, 100, 255,
402 (gpointer)&change_cloud, NULL, NULL);
403 actor->time_start_animation = now + fast_rnd(60) + 20;
404 actor->duration_animation = 5*60;
405 scene->actors = g_slist_append(scene->actors, actor);
408 actor = init_object(desktop_plugin, "town", "town0.png",
410 TRUE, TRUE, 100, 255,
411 (gpointer)&change_static_actor, NULL, NULL);
412 change_static_actor(actor, desktop_plugin);
413 scene->actors = g_slist_append(scene->actors, actor);
415 actor = init_object(desktop_plugin, "stend", "stend0.png",
416 452, 166, 9, 300, 305,
417 TRUE, TRUE, 100, 255,
418 (gpointer)&change_static_actor, NULL, NULL);
419 change_static_actor(actor, desktop_plugin);
420 scene->actors = g_slist_append(scene->actors, actor);
423 child = g_ptr_array_sized_new(4);
424 actor = init_object(desktop_plugin, "call", "call.png",
426 FALSE, TRUE, 100, 255,
428 scene->actors = g_slist_append(scene->actors, actor);
429 g_ptr_array_add(child, actor);
431 actor = init_object(desktop_plugin, "chat", "chat.png",
433 FALSE, TRUE, 100, 255,
435 scene->actors = g_slist_append(scene->actors, actor);
436 g_ptr_array_add(child, actor);
438 actor = init_object(desktop_plugin, "mail", "mail.png",
440 FALSE, TRUE, 100, 255,
442 scene->actors = g_slist_append(scene->actors, actor);
443 g_ptr_array_add(child, actor);
445 actor = init_object(desktop_plugin, "sms", "sms.png",
447 FALSE, TRUE, 100, 255,
449 scene->actors = g_slist_append(scene->actors, actor);
450 g_ptr_array_add(child, actor);
452 actor = init_object(desktop_plugin, "billboard_text", "",
453 470, 174, 9, 300, 108,
454 FALSE, FALSE, 100, 255,
455 (gpointer)&change_billboard, NULL, child);
456 create_hildon_actor_text(actor, desktop_plugin);
457 //actor->time_start_animation = time(NULL) + 20;
458 change_billboard(actor, desktop_plugin);
459 scene->actors = g_slist_append(scene->actors, actor);
461 actor = init_object(desktop_plugin, "tram", "tram.png",
462 -300, 225, 10, 350, 210,
463 FALSE, FALSE, 100, 255,
464 (gpointer)&change_tram, NULL, NULL);
465 actor->time_start_animation = time(NULL) + fast_rnd(10);
466 actor->duration_animation = 60;
467 scene->actors = g_slist_append(scene->actors, actor);
469 actor = init_object(desktop_plugin, "border", "border0.png",
470 0, 480-79, 11, 800, 79,
471 TRUE, TRUE, 100, 255,
472 (gpointer)&change_static_actor_with_corner, NULL, NULL);
473 change_static_actor_with_corner(actor, desktop_plugin);
474 scene->actors = g_slist_append(scene->actors, actor);
476 actor = init_object(desktop_plugin, "moon", "moon1.png",
478 FALSE, FALSE, 100, 255,
479 (gpointer)&change_moon, NULL, NULL);
480 change_moon(actor, desktop_plugin);
481 scene->actors = g_slist_append(scene->actors, actor);
483 actor = init_object(desktop_plugin, "wind", "",
485 FALSE, FALSE, 100, 255,
486 (gpointer)&change_wind, NULL, NULL);
487 change_wind(actor, desktop_plugin);
488 scene->actors = g_slist_append(scene->actors, actor);
490 /* windows in 4-th house */
530 for (i=0; i<13; i++){
531 actor = init_object(desktop_plugin, "window1", "window1.png",
532 winds[i][0], winds[i][1], 8, 8, 10,
533 FALSE, FALSE, 100, 255,
534 (gpointer)&change_window1, NULL, NULL);
535 //change_window1(actor, desktop_plugin);
536 actor->time_start_animation = now + fast_rnd(30);
537 scene->actors = g_slist_append(scene->actors, actor);
541 /* windows in 1-th house */
567 actor = init_object(desktop_plugin, "window2", "window2.png",
568 winds[i][0], winds[i][1], 8, 8, 10,
569 FALSE, FALSE, 100, 255,
570 (gpointer)&change_window1, NULL, NULL);
571 //change_window1(actor, desktop_plugin);
572 actor->time_start_animation = now + fast_rnd(30);
573 scene->actors = g_slist_append(scene->actors, actor);
577 /* windows in 3-th house */
609 for (i=0; i<10; i++){
610 actor = init_object(desktop_plugin, "window3", "window3.png",
611 winds[i][0], winds[i][1], 8, 8, 10,
612 FALSE, FALSE, 100, 255,
613 (gpointer)&change_window1, NULL, NULL);
614 //change_window1(actor, desktop_plugin);
615 actor->time_start_animation = now + fast_rnd(30);
616 scene->actors = g_slist_append(scene->actors, actor);
620 /* windows in 5-th house */
644 actor = init_object(desktop_plugin, "window4", "window4.png",
645 winds[i][0], winds[i][1], 8, 8, 10,
646 FALSE, FALSE, 100, 255,
647 (gpointer)&change_window1, NULL, NULL);
648 //change_window1(actor, desktop_plugin);
649 actor->time_start_animation = now + fast_rnd(30);
650 scene->actors = g_slist_append(scene->actors, actor);
654 /* windows in 6-th house */
675 actor = init_object(desktop_plugin, "window5", "window5.png",
676 winds[i][0], winds[i][1], 8, 8, 10,
677 FALSE, FALSE, 100, 255,
678 (gpointer)&change_window1, NULL, NULL);
679 //change_window1(actor, desktop_plugin);
680 actor->time_start_animation = now + fast_rnd(30);
681 scene->actors = g_slist_append(scene->actors, actor);
684 run_long_timeout(desktop_plugin);
687 anim = g_new0(Animation, 1);
690 anim->func_change = &change_tram;
691 anim->func_time = NULL;
692 anim->timestart = time(NULL);
695 scene.dynamic_actors = g_slist_append(scene.dynamic_actors, anim);
698 /*******************************************************************************/
699 /* Init Berlin Scene */
701 init_scene_Berlin(AWallpaperPlugin *desktop_plugin)
703 Actor *actor, *actor1, *actor2;
705 gint now = time(NULL);
708 GPtrArray *child = NULL;
710 scene = g_new0(Scene, 1);
711 scene->daytime = get_daytime();
712 scene->actors = NULL;
713 scene->wind_orientation = -1;
714 scene->wind_angle = 0.3;
715 /* init value for random */
716 scene->seed = time(NULL);
717 desktop_plugin->priv->scene = scene;
719 actor = init_object(desktop_plugin, "sky", "sky.png", 0, 0, 5, 800, 480,
720 TRUE, TRUE, 100, 255,
721 (gpointer)&change_static_actor, NULL, NULL);
722 change_static_actor(actor, desktop_plugin);
723 scene->actors = g_slist_append(scene->actors, actor);
726 actor = init_object(desktop_plugin, "sun", "sun.png", 0, 0, 6, 88, 88,
727 FALSE, FALSE, 100, 255,
728 (gpointer)&change_sun, NULL, NULL);
729 actor->time_start_animation = time(NULL);
730 actor->duration_animation = G_MAXINT;
731 change_sun(actor, desktop_plugin);
732 scene->actors = g_slist_append(scene->actors, actor);
735 actor = init_object(desktop_plugin, "dot", "dot1.png", 0, 0, 11, 50, 50,
736 TRUE, 100, 255, NULL, NULL);
737 scene.actors = g_slist_append(scene.actors, actor);
740 actor = init_object(desktop_plugin, "moon", "moon1.png", 400, 15, 6, 60, 60,
741 FALSE, FALSE, 100, 255,
742 (gpointer)&change_moon, NULL, NULL);
743 change_moon(actor, desktop_plugin);
744 scene->actors = g_slist_append(scene->actors, actor);
746 actor = init_object(desktop_plugin, "cloud1", "cloud1.png", 0, fast_rnd(300)-97, 7, 150, 97,
747 FALSE, FALSE, 100, 255,
748 (gpointer)&change_cloud, NULL, NULL);
749 actor->time_start_animation = now + fast_rnd(30) + 10;
750 actor->duration_animation = 3*60;
751 scene->actors = g_slist_append(scene->actors, actor);
753 actor = init_object(desktop_plugin, "cloud2", "cloud2.png", 0, fast_rnd(300)-75, 7, 188, 75,
754 FALSE, FALSE, 100, 255,
755 (gpointer)&change_cloud, NULL, NULL);
756 actor->time_start_animation = now + fast_rnd(10);
757 actor->duration_animation = 3*60;
758 scene->actors = g_slist_append(scene->actors, actor);
760 actor = init_object(desktop_plugin, "cloud4", "cloud4.png", 0, fast_rnd(300)-75, 7, 150, 75,
761 FALSE, FALSE, 100, 255,
762 (gpointer)&change_cloud, NULL, NULL);
763 actor->time_start_animation = now + fast_rnd(60) + 20;
764 actor->duration_animation = 5*60;
765 scene->actors = g_slist_append(scene->actors, actor);
768 actor = init_object(desktop_plugin, "plane2", "plane3.png", 0, 45, 8, 160, 50,
769 FALSE, FALSE, 100, 255,
770 (gpointer)&change_plane2, NULL, NULL);
771 actor->time_start_animation = now + fast_rnd(40) + 20;
772 actor->duration_animation = 60;
773 scene->actors = g_slist_append(scene->actors, actor);
775 actor = init_object(desktop_plugin, "plane1", "tu154.png", 620, 233, 9, 300, 116,
776 FALSE, FALSE, 100, 255,
777 (gpointer)&change_plane1, NULL, NULL);
778 actor->time_start_animation = now + fast_rnd(20);
779 actor->duration_animation = 30;
780 scene->actors = g_slist_append(scene->actors, actor);
782 actor = init_object(desktop_plugin, "town", "town.png", 0, 0, 10, 800, 480,
783 TRUE, TRUE, 100, 255,
784 (gpointer)&change_static_actor_with_corner, NULL, NULL);
785 change_static_actor_with_corner(actor, desktop_plugin);
786 scene->actors = g_slist_append(scene->actors, actor);
788 actor = init_object(desktop_plugin, "wind", "", 0, 0, 5, 0, 0,
789 FALSE, FALSE, 100, 255,
790 (gpointer)&change_wind, NULL, NULL);
791 change_wind(actor, desktop_plugin);
792 scene->actors = g_slist_append(scene->actors, actor);
794 actor1 = init_object(desktop_plugin, "signal_red", "red.png",
795 486, 425, 10, 18, 38,
796 FALSE, TRUE, 100, 255, NULL, NULL, NULL);
797 //actor->time_start_animation = now + fast_rnd(30) + 10;
798 scene->actors = g_slist_append(scene->actors, actor1);
800 actor2 = init_object(desktop_plugin, "signal_green", "green.png",
801 486, 425, 10, 18, 38,
802 TRUE, TRUE, 100, 255, NULL, NULL, NULL);
803 //actor->time_start_animation = now + fast_rnd(30) + 10;
804 scene->actors = g_slist_append(scene->actors, actor2);
805 child = g_ptr_array_sized_new(2);
806 g_ptr_array_add(child, actor1);
807 g_ptr_array_add(child, actor2);
808 actor = init_object(desktop_plugin, "signal", "",
809 486, 425, 10, 18, 38,
810 FALSE, FALSE, 100, 255,
811 (gpointer)&change_signal, NULL, child);
812 actor->time_start_animation = now + fast_rnd(30) + 10;
813 scene->actors = g_slist_append(scene->actors, actor);
854 for (i=0; i<13; i++){
855 actor = init_object(desktop_plugin, "window", "window.png",
856 winds[i][0], winds[i][1], 10, 8, 9,
857 FALSE, TRUE, 100, 255,
858 (gpointer)&change_window1, NULL, NULL);
859 //change_window1(actor, desktop_plugin);
860 actor->time_start_animation = now + fast_rnd(30);
861 scene->actors = g_slist_append(scene->actors, actor);
865 run_long_timeout(desktop_plugin);
868 /*******************************************************************************/
870 init_scene_theme(AWallpaperPlugin *desktop_plugin)
872 void (*func)(gpointer);
873 func = g_hash_table_lookup(desktop_plugin->priv->hash_scene_func, desktop_plugin->priv->theme);
875 (*func)(desktop_plugin);