Trigger browse / find callback with org.gnome.UPnP MediaObject2 properties as JSON
authorLuc Yriarte <luc.yriarte@intel.com>
Tue, 23 Jul 2013 13:42:31 +0000 (15:42 +0200)
committerLuc Yriarte <luc.yriarte@intel.com>
Tue, 23 Jul 2013 13:42:31 +0000 (15:42 +0200)
src/MediaServer/JSMediaServer.cpp
src/MediaServer/MediaServer.cpp
src/MediaServer/MediaServer.h

index 9cc7e62..991f496 100644 (file)
@@ -179,7 +179,9 @@ JSValueRef JSMediaServer::browse(JSContextRef context,
                unsigned long offset = validator.toULong(3);
 
                BrowseFindCB *cbP = new BrowseFindCB();
-               cbP->context = privateObject->getContext();
+               cbP->context = context;
+               cbP->object = object;
+               cbP->thisObject = thisObject;
                cbP->successCB = validator.toFunction(4, true);
                if (argumentCount > 5)
                        cbP->errorCB = validator.toFunction(5, true);
@@ -217,7 +219,9 @@ JSValueRef JSMediaServer::find(JSContextRef context,
                unsigned long offset = validator.toULong(4);
 
                BrowseFindCB *cbP = new BrowseFindCB();
-               cbP->context = privateObject->getContext();
+               cbP->context = context;
+               cbP->object = object;
+               cbP->thisObject = thisObject;
                cbP->successCB = validator.toFunction(5, true);
                if (argumentCount > 6)
                        cbP->errorCB = validator.toFunction(6, true);
index 2e8a8cd..5f96055 100644 (file)
@@ -72,9 +72,17 @@ static void browseFindCallback(GObject *source_object, GAsyncResult *res,  gpoin
        gsize size;
        gchar * gStr = json_gvariant_serialize_data(out_Children,&size);
        JSStringRef jsStr = JSStringCreateWithUTF8CString(gStr);
-// FIXME // JSValueRef jsArray =  JSValueMakeFromJSONString( FIXME CALLBACK CONTEXT, jsStr);
-
-       // FIXME: JS callbacks
+       JSValueRef jsArray = JSValueMakeFromJSONString(callback->context, jsStr);
+       /* Trigger callback */
+       JSValueRef arguments[1];
+       arguments[0] = jsArray;
+       JSObjectCallAsFunction(callback->context,
+                       callback->successCB,
+                       callback->thisObject,
+                       1,
+                       arguments,
+                       NULL);
+       /* free upn_pcontainer2 proxy */
        g_object_unref(callback->cntProxy);
 }
 
index 5dbafe6..1f9d8e7 100644 (file)
@@ -22,6 +22,8 @@ class BrowseFindCB {
 public:
        UPnPContainer2 *cntProxy;
        JSContextRef context;
+       JSObjectRef object;
+       JSObjectRef thisObject;
        JSObjectRef successCB;
        JSObjectRef errorCB;
 };