soo close to working!
[ozzloy@gmail.com/oble] / hello-world.cpp
index f72a54794ea3459eabd8484a439bef71d1f8507d..2fd2156d209812545257a9ae4d506899f9deb185 100644 (file)
 #include <cv.h>
 #include <highgui.h>
 #include <stdio.h>
+#include <dbus/dbus.h>
+#include <dbus/dbus-glib.h>
+
+DBusGConnection *connection;
+GError *error;
+DBusGProxy *proxy;
+char **name_list;
+char **name_list_ptr;
+
 
 // argument for cvFlip(src, dest, FLIP_TYPE)
 #define VERTICAL_FLIP 1
@@ -52,6 +61,30 @@ void detect_and_draw_objects(IplImage* image,
        faces = cvHaarDetectObjects(small_image, cascade, storage, 1.2, 2,
                        CV_HAAR_DO_CANNY_PRUNING);
 
+#if 0
+       if ( 0 < faces->total &&
+                       !dbus_g_proxy_call (proxy, "SimulateUserActivity", &error, G_TYPE_INVALID,
+                               G_TYPE_STRV, &name_list, G_TYPE_INVALID))
+       {
+               fprintf(stderr, "bananas");
+
+               /* Just do demonstrate remote exceptions versus regular GError */
+               if (error->domain == DBUS_GERROR &&
+                               error->code == DBUS_GERROR_REMOTE_EXCEPTION)
+                       g_printerr ("Caught remote method exception %s: %s",
+                                       dbus_g_error_get_name (error),
+                                       error->message);
+               else
+                       g_printerr ("Error: %s\n", error->message);
+               g_error_free (error);
+               exit (1);
+       }
+       else
+       {
+               fprintf(stderr, "peaches");
+       }
+#endif
+
        /* draw all the rectangles */
        for(i = 0; i < faces->total; i++)
        {
@@ -71,6 +104,26 @@ void detect_and_draw_objects(IplImage* image,
 // A Simple Camera Capture Framework.
 int main(int argc, char** argv)
 {
+       g_type_init ();
+
+       error = NULL;
+       connection = dbus_g_bus_get (DBUS_BUS_SESSION,
+                       &error);
+       if (connection == NULL)
+       {
+               g_printerr ("Failed to open connection to bus: %s\n",
+                               error->message);
+               g_error_free (error);
+               exit (1);
+       }
+
+       /* Create a proxy object for the "bus driver" (name "org.freedesktop.DBus") */
+
+       proxy = dbus_g_proxy_new_for_name (connection,
+                       "org.gnome.ScreenSaver",
+                       "/org/gnome/ScreenSaver",
+                       "org.gnome.ScreenSaver");
+
        CvHaarClassifierCascade* cascade = load_object_detector(argv[1]);
 
        CvCapture* capture = cvCaptureFromCAM(CV_CAP_ANY);
@@ -89,7 +142,7 @@ int main(int argc, char** argv)
                getchar();
                return -1;
        }
-       IplImage* flipped =
+       IplImage* mirrored =
                cvCreateImage(cvGetSize(frame), frame->depth, frame->nChannels);
        // Show the image captured from the camera in the window and repeat
        while(1) {
@@ -102,10 +155,10 @@ int main(int argc, char** argv)
                }
 
                //flip the image so displayed right/left corresponds to physical right/left
-               cvFlip(frame, flipped, VERTICAL_FLIP);
+               cvFlip(frame, mirrored, VERTICAL_FLIP);
 
-               detect_and_draw_objects(flipped, cascade, 1);
-               cvShowImage("mywindow", flipped);
+               detect_and_draw_objects(mirrored, cascade, 1);
+               cvShowImage("mywindow", mirrored);
                // Do not release the frame!
 
                //If ESC key pressed, Key=0x10001B under OpenCV 0.9.7(linux version),
@@ -116,6 +169,6 @@ int main(int argc, char** argv)
        // Release the capture device housekeeping
        cvReleaseCapture(&capture);
        cvDestroyWindow("mywindow");
-       cvReleaseImage(&flipped);
+       cvReleaseImage(&mirrored);
        return 0;
 }