#include <X11/keysym.h>
/* #include <libosso.h> */
#include <dbus/dbus.h>
-#include <dbus/dbus-glib.h>
+/* #include <dbus/dbus-glib.h> */
#ifdef __sgi
# include <X11/SGIScheme.h> /* for SgiUseSchemes() */
{ "-window-id", ".windowID", XrmoptionSepArg, 0 },
{ "-fps", ".doFPS", XrmoptionNoArg, "True" },
{ "-no-fps", ".doFPS", XrmoptionNoArg, "False" },
+ { "-view", ".view", XrmoptionSepArg, 1 },
# ifdef DEBUG_PAIR
{ "-pair", ".pair", XrmoptionNoArg, "True" },
# ifdef DEBUG_PAIR
Window window2,
# endif
- const struct xscreensaver_function_table *ft)
+ const struct xscreensaver_function_table *ft,
+ int view)
{
+#define LIVEWP_SIGNAL_INTERFACE "org.maemo.livewp"
+#define LIVEWP_PAUSE_LIVEBG_ON_VIEW1 "pause_livebg_on_view1"
+#define LIVEWP_PAUSE_LIVEBG_ON_VIEW2 "pause_livebg_on_view2"
+#define LIVEWP_PAUSE_LIVEBG_ON_VIEW3 "pause_livebg_on_view3"
+#define LIVEWP_PAUSE_LIVEBG_ON_VIEW4 "pause_livebg_on_view4"
+#define LIVEWP_PLAY_LIVEBG_ON_VIEW1 "play_livebg_on_view1"
+#define LIVEWP_PLAY_LIVEBG_ON_VIEW2 "play_livebg_on_view2"
+#define LIVEWP_PLAY_LIVEBG_ON_VIEW3 "play_livebg_on_view3"
+#define LIVEWP_PLAY_LIVEBG_ON_VIEW4 "play_livebg_on_view4"
+ DBusMessage* msg;
+ DBusConnection* conn;
+ DBusError err;
+ int ret;
+ char pause = 0;
/* Kludge: even though the init_cb functions are declared to take 2 args,
actually call them with 3, for the benefit of xlockmore_init() and
abort();
if (! fps_cb) fps_cb = screenhack_do_fps;
+ /* DBUS */
+ /* initialise the error */
+ dbus_error_init(&err);
+ conn = dbus_bus_get(DBUS_BUS_SESSION, &err);
+ if (dbus_error_is_set(&err)) {
+ fprintf(stderr, "Connection Error (%s)\n", err.message);
+ dbus_error_free(&err);
+ }
+ if (NULL == conn) {
+ fprintf(stderr, "Connection Null\n");
+ exit(1);
+ }
+ dbus_bus_add_match (conn, "type='signal', interface='org.maemo.livewp'", &err);
+ if (dbus_error_is_set(&err)){
+ fprintf(stderr,"dbus_bus_add_match failed: %s", err.message);
+ dbus_error_free(&err);
+ exit (1);
+ }
while (1)
{
- unsigned long delay = ft->draw_cb (dpy, window, closure);
+ if (pause == 0){
+ unsigned long delay = ft->draw_cb (dpy, window, closure);
#ifdef DEBUG_PAIR
- unsigned long delay2 = 0;
- if (window2) delay2 = ft->draw_cb (dpy, window2, closure2);
+ unsigned long delay2 = 0;
+ if (window2) delay2 = ft->draw_cb (dpy, window2, closure2);
#endif
- if (fpst) fps_cb (dpy, window, fpst, closure);
+
+ if (fpst) fps_cb (dpy, window, fpst, closure);
#ifdef DEBUG_PAIR
- if (fpst2) fps_cb (dpy, window, fpst2, closure);
+ if (fpst2) fps_cb (dpy, window, fpst2, closure);
#endif
-
if (! usleep_and_process_events (dpy, ft,
window, fpst, closure, delay
#ifdef DEBUG_PAIR
#endif
))
break;
+
+ }
+ /* non blocking read of the next available message */
+ dbus_connection_read_write(conn, 0);
+ msg = dbus_connection_pop_message(conn);
+ if (NULL == msg)
+ continue;
+ /* check this is a method call for the right interface & method */
+ if ((view == 1 && dbus_message_is_signal(msg, LIVEWP_SIGNAL_INTERFACE, LIVEWP_PAUSE_LIVEBG_ON_VIEW1))||
+ (view == 2 && dbus_message_is_signal(msg, LIVEWP_SIGNAL_INTERFACE, LIVEWP_PAUSE_LIVEBG_ON_VIEW2))||
+ (view == 3 && dbus_message_is_signal(msg, LIVEWP_SIGNAL_INTERFACE, LIVEWP_PAUSE_LIVEBG_ON_VIEW3))||
+ (view == 4 && dbus_message_is_signal(msg, LIVEWP_SIGNAL_INTERFACE, LIVEWP_PAUSE_LIVEBG_ON_VIEW4))){
+ fprintf(stderr, "Pause scene visible %i\n", view);
+ pause = 1;
+ continue;
+ }
+ if ((view == 1 && dbus_message_is_signal(msg, LIVEWP_SIGNAL_INTERFACE, LIVEWP_PLAY_LIVEBG_ON_VIEW1))||
+ (view == 2 && dbus_message_is_signal(msg, LIVEWP_SIGNAL_INTERFACE, LIVEWP_PLAY_LIVEBG_ON_VIEW2))||
+ (view == 3 && dbus_message_is_signal(msg, LIVEWP_SIGNAL_INTERFACE, LIVEWP_PLAY_LIVEBG_ON_VIEW3))||
+ (view == 4 && dbus_message_is_signal(msg, LIVEWP_SIGNAL_INTERFACE, LIVEWP_PLAY_LIVEBG_ON_VIEW4))){
+ fprintf(stderr, "Play scene visible %i\n", view);
+ pause = 0;
+ }
+
}
ft->free_cb (dpy, window, closure);
if (window2) ft->free_cb (dpy, window2, closure2);
if (window2) fps_free (fpst2);
#endif
+ /* close the connection */
+ dbus_connection_close(conn);
}
XEvent event;
Boolean dont_clear;
char version[255];
+ int view;
fix_fds();
on_window = get_integer_resource (dpy, "windowID", "WindowID");
if (s) free (s);
}
- /* OSSO initialize */
-/* osso = osso_initialize("org.maemo.xscreensaver", "0.5.11", TRUE, NULL); */
-
- DBusGConnection *connection;
- GError *error;
- DBusGProxy *proxy;
-
- g_type_init ();
- error = NULL;
- connection = dbus_g_bus_get (DBUS_BUS_SESSION, &error);
-
-
+ view = get_integer_resource (dpy, "view", "view");
+ fprintf(stderr, "View %i\n", view);
if (on_window)
{
window = (Window) on_window;
# ifdef DEBUG_PAIR
window2,
# endif
- ft);
+ ft, view);
XtDestroyWidget (toplevel);
XtDestroyApplicationContext (app);