fixed conflict
authortanya <tanyshk@gmail.com>
Wed, 18 Aug 2010 06:05:45 +0000 (09:05 +0300)
committertanya <tanyshk@gmail.com>
Wed, 18 Aug 2010 06:05:45 +0000 (09:05 +0300)
sherman-aquarium/shermans/Makefile
sherman-aquarium/shermans/Makefile.in
sherman-aquarium/shermans/screensaver.c

index 6ef424e..08ca4a8 100644 (file)
@@ -11,7 +11,7 @@ GNOMEDIR = /usr
 INSTALL_PATH=$(DESTDIR)/usr
 
 # Setting up the CFLAGS and LDFLAGS variables 
-CFLAGS += -Wall -Wno-strict-aliasing -O3 -DIMAGE_PATH=\"/usr/share/pixmaps/shermans\"    -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT -DMAEMO_CHANGES -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12  
+CFLAGS += -Wall -Wno-strict-aliasing -O3 -DIMAGE_PATH=\"/usr/share/pixmaps/shermans\"    -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT -DMAEMO_CHANGES -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12   -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -I/usr/include/dbus-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/lib/dbus-1.0/include  
 LDFLAGS_GAI = $(LDFLAGS)   
 LDFLAGS_SDL = $(LDFLAGS) -L/usr/lib -lSDL  -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lgdk_pixbuf-2.0 -lpangocairo-1.0 -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lglib-2.0  
 
@@ -28,7 +28,7 @@ shermans_applet: $(OBJS_GAI) $(OBJS)
 
 
 shermans: $(OBJS) $(OBJS_SDL)
-       $(CC) -o shermans $(OBJS) $(OBJS_SDL) $(LDFLAGS_SDL)
+       $(CC) -o shermans $(OBJS) $(OBJS_SDL) $(LDFLAGS_SDL) -ldbus-1 -lpthread -losso -ldbus-glib-1 -ldbus-1 -lpthread -lgobject-2.0 -lglib-2.0
 
 install:   shermans install-images  install_screensaver
 
index cb1c0c7..59de872 100644 (file)
@@ -11,7 +11,7 @@ GNOMEDIR = @GNOMEDIR@
 INSTALL_PATH=$(DESTDIR)@INSTALL_PATH@
 
 # Setting up the CFLAGS and LDFLAGS variables 
-CFLAGS += -Wall -Wno-strict-aliasing -O3 -DIMAGE_PATH=\"@APPLET_IMAGE_PATH@\" @DGAI@ @GAI_CFLAGS@ @XMMS_CFLAGS@ @SDL_CFLAGS@ @GTK_CFLAGS@
+CFLAGS += -Wall -Wno-strict-aliasing -O3 -DIMAGE_PATH=\"@APPLET_IMAGE_PATH@\" @DGAI@ @GAI_CFLAGS@ @XMMS_CFLAGS@ @SDL_CFLAGS@ @GTK_CFLAGS@ -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -I/usr/include/dbus-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/lib/dbus-1.0/include  
 LDFLAGS_GAI = $(LDFLAGS) @GAI_LIBS@ @XMMS_LIBS@ @SYSTEM_SPECIFIC_LIBS@
 LDFLAGS_SDL = $(LDFLAGS) @SDL_LIBS@ @SYSTEM_SPECIFIC_LIBS@ @GTK_LIBS@
 
@@ -28,7 +28,7 @@ shermans_applet: $(OBJS_GAI) $(OBJS)
 
 
 shermans: $(OBJS) $(OBJS_SDL)
-       $(CC) -o shermans $(OBJS) $(OBJS_SDL) $(LDFLAGS_SDL)
+       $(CC) -o shermans $(OBJS) $(OBJS_SDL) $(LDFLAGS_SDL) -ldbus-1 -lpthread -losso -ldbus-glib-1 -ldbus-1 -lpthread -lgobject-2.0 -lglib-2.0
 
 install:  @APPLET@ @SCREENSAVER@ @INSTALL_IMAGES@ @INSTALL_APPLET@ @INSTALL_SCREENSAVER@
 
index 5f5f9a3..3a5aff9 100644 (file)
@@ -57,6 +57,13 @@ typedef struct {
 #include "soundeffects.h"
 #include "vroot.h"
 
+
+/* For Maemo */
+
+#include <libosso.h>                                                                                                                                                             
+#include <dbus/dbus.h>                                                                                                                                                             
+#include <dbus/dbus-glib.h>
+
 #ifdef DARWIN
 #include "getopt.h"
 #else
@@ -138,7 +145,10 @@ int view = 1;
 static unsigned char *original_bg;
 static AquariumData ad;
 
-
+/* For Maemo */
+static osso_context_t      *osso;
+DBusConnection      *dbus_conn_session;
+static int pause_in_view = 0;
 
 void screensaver_draw_image(int x, int y, int idx, int rev, SA_Image *image)
 {
@@ -422,6 +432,7 @@ void screensaver_main_gdk(void)
 {
     GdkEvent *event;
     int counter = 0;
+    DBusMessage* msg;
 
     while(1){
        while(gdk_events_pending()){
@@ -444,8 +455,31 @@ void screensaver_main_gdk(void)
        gdk_draw_rgb_image(window, gc, ad.xmin, ad.ymin, ad.xmax, ad.ymax,
                           GDK_RGB_DITHER_NONE, ad.rgb, ad.xmax * 3);
        gdk_flush();
+
        /* 25 fps */
        usleep(1000000/25);
+
+       if (pause_in_view == 0)
+       /* non blocking read of the next available message */
+       dbus_connection_read_write(dbus_conn_session, 0);
+       else
+             /* blocking read of the next available message */
+       dbus_connection_read_write(dbus_conn_session, 20000);
+
+       msg = dbus_connection_pop_message(dbus_conn_session);
+
+       if (NULL == msg){  
+          continue; 
+       }
+       if ( dbus_message_get_member (msg) &&
+          !strncmp( "play_livebg_on_view", dbus_message_get_member (msg),19)){
+              pause_in_view = 0; 
+       }
+       if ( dbus_message_get_member (msg) &&
+            !strncmp( "pause_livebg_on_view", dbus_message_get_member (msg),19)){
+               pause_in_view = 1;
+       }
+
     }
 
 }
@@ -497,6 +531,33 @@ void init_sdl(int sdl_flags)
     SDL_UpdateRect(screen,0,0,0,0);
 
 }
+void
+initialize_dbus(void){
+    gchar       *filter_string;
+    DBusError   error;
+
+    dbus_error_init (&error);
+    /* Add D-BUS signal handler for 'status_changed' */
+    dbus_conn_session = (DBusConnection *) osso_get_dbus_connection(osso);
+    if (dbus_conn_session){
+        filter_string =
+            g_strdup_printf("interface='org.maemo.livewp', member='pause_livebg_on_view%i'", view);
+        dbus_bus_add_match(dbus_conn_session, filter_string, &error);
+        if (dbus_error_is_set(&error)){
+             fprintf(stderr,"dbus_bus_add_match failed: %s", error.message);
+             dbus_error_free(&error);
+        }
+        g_free(filter_string);
+        filter_string =
+            g_strdup_printf("interface='org.maemo.livewp', member='play_livebg_on_view%i'", view);
+        dbus_bus_add_match(dbus_conn_session, filter_string, &error);
+        if (dbus_error_is_set(&error)){
+             fprintf(stderr,"dbus_bus_add_match failed: %s", error.message);
+             dbus_error_free(&error);
+        }
+        g_free(filter_string);
+    }
+}
 
 
 void screensaver_init()
@@ -511,6 +572,9 @@ void screensaver_init()
     screen_height = 480;
     screen_width = 800;
     
+    osso = osso_initialize("org.maemo.sherman", "3.0", TRUE, NULL);
+    initialize_dbus();
+
     if(window_id != -1){
        display = XOpenDisplay(NULL);
        XGetWindowAttributes(display, (Window)window_id, &win_attr);
@@ -908,6 +972,7 @@ fprintf(stderr, "1BG %i\n",bg->desktop);
 
 }
 
+
 int main(int argc, char **argv)
 {
     gdk_init(&argc, &argv);