GnoCamCamera * gnocam_camera_new (Camera *camera, CORBA_Environment *ev) { GnoCamCamera *gc; BonoboStorageCamera *storage; bonobo_return_val_if_fail (camera, NULL, ev); g_message ("Creating storage..."); storage = bonobo_storage_camera_new (camera, "/", Bonobo_Storage_READ | Bonobo_Storage_WRITE, ev); if (BONOBO_EX (ev)) return (NULL); gc = g_object_new (GNOCAM_TYPE_CAMERA, NULL); gc->camera = camera; gp_camera_ref (camera); g_message ("Adding interfaces..."); bonobo_object_add_interface (BONOBO_OBJECT (gc), BONOBO_OBJECT (storage)); gc->priv->event_source = bonobo_event_source_new (); bonobo_object_add_interface (BONOBO_OBJECT (gc), BONOBO_OBJECT (gc->priv->event_source)); return (gc); }
static void run_tests (void) { BonoboEventSource *es; CORBA_Environment ev; CORBA_any *value; char *mask; CORBA_exception_init (&ev); g_source_remove (idle_id); value = bonobo_arg_new (BONOBO_ARG_LONG); es = bonobo_event_source_new (); g_assert (es != NULL); mask = "a/test"; bonobo_event_source_client_add_listener (BONOBO_OBJREF (es), event_cb, mask, &ev, mask); mask = "=a/test"; bonobo_event_source_client_add_listener (BONOBO_OBJREF (es), event_cb, mask, &ev, mask); bonobo_event_source_notify_listeners (es, "a/test", value, &ev); CHECK_RESULT (&ev, 2, 1); bonobo_event_source_notify_listeners (es, "a/test/xyz", value, &ev); CHECK_RESULT (&ev, 3, 1); bonobo_event_source_notify_listeners (es, "a/tes", value, &ev); CHECK_RESULT (&ev, 3, 1); bonobo_event_source_notify_listeners (es, "test", value, &ev); CHECK_RESULT (&ev, 3, 1); bonobo_event_source_notify_listeners (es, "a/test", value, &ev); CHECK_RESULT (&ev, 5, 2); bonobo_event_source_notify_listeners (es, "a/test:", value, &ev); CHECK_RESULT (&ev, 6, 2); bonobo_event_source_notify_listeners (es, "a/test:xyz", value, &ev); CHECK_RESULT (&ev, 7, 2); bonobo_event_source_notify_listeners (es, "a/", value, &ev); CHECK_RESULT (&ev, 7, 2); bonobo_event_source_notify_listeners (es, "a/test1:xyz", value, &ev); CHECK_RESULT (&ev, 8, 2); bonobo_object_unref (BONOBO_OBJECT (es)); bonobo_main_quit (); }