GHashTable * hash_scene_func;
GKeyFile *config_file;
gint view;
+ pid_t pid;
};
struct _AWallpaperPlugin
#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"
#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;
#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
}
#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);
}
gchar * strid;
gint id;
AWallpaperPlugin *desktop_plugin = widget;
- pid_t pid;
char* child_argv[] = {"/usr/bin/livewp", "0", (char *) 0 };
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");
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;
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;
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
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
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;
}
destroy_scene(priv->desktop_plugin);
}
- gtk_main_quit();
+ gtk_main_quit();;
}
int
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);
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;
}