about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2023-05-28 18:31:05 +0200
committerptitSeb <sebastien.chev@gmail.com>2023-05-28 18:31:05 +0200
commitec9447ad5fbd6a818633e7b347f589a1da973b8b (patch)
tree3194ef2ec6dc38dba2ab74ff0338e7aa3ae24407 /src
parent26b01d56f59bc17f48044ce79fbea41a7e2439cb (diff)
downloadbox64-ec9447ad5fbd6a818633e7b347f589a1da973b8b.tar.gz
box64-ec9447ad5fbd6a818633e7b347f589a1da973b8b.zip
Added GstTaskPoll to gtkclass wrapping
Diffstat (limited to 'src')
-rwxr-xr-xsrc/include/gtkclass.h10
-rwxr-xr-xsrc/tools/gtkclass.c43
-rw-r--r--src/wrapped/wrappedgstreamer.c2
3 files changed, 55 insertions, 0 deletions
diff --git a/src/include/gtkclass.h b/src/include/gtkclass.h
index 23822088..ad262fda 100755
--- a/src/include/gtkclass.h
+++ b/src/include/gtkclass.h
@@ -778,6 +778,15 @@ typedef struct my_GstAllocatorClass_s {
   void*    _gst_reserved[4];
 } my_GstAllocatorClass_t;
 
+typedef struct my__GstTaskPoolClass {
+  my_GstObjectClass_t parent_class;
+  void      (*prepare)  (void* pool, void* error);
+  void      (*cleanup)  (void* pool);
+  void*     (*push)     (void* pool, void* func, void* user_data, void* error);
+  void      (*join)     (void* pool, void* id);
+  void      (*dispose_handle) (void* pool, void* id);
+  void*     _gst_reserved[4-1];
+} my_GstTaskPoolClass_t;
 
 // GTypeValueTable
 typedef struct my_GTypeValueTable_s {
@@ -884,6 +893,7 @@ GTKCLASS(AtkObject)                 \
 GTKCLASS(AtkUtil)                   \
 GTKCLASS(GstObject)                 \
 GTKCLASS(GstAllocator)              \
+GTKCLASS(GstTaskPool)               \
 
 #define GTKCLASS(A) void Set##A##ID(size_t id);
 GTKCLASSES()
diff --git a/src/tools/gtkclass.c b/src/tools/gtkclass.c
index e647f7b1..c41674e6 100755
--- a/src/tools/gtkclass.c
+++ b/src/tools/gtkclass.c
@@ -2398,6 +2398,49 @@ static void bridgeGstAllocatorClass(my_GstAllocatorClass_t* class)
 
 #undef SUPERGO
 
+// ----- GstTaskPoolClass ------
+// wrapper x86 -> natives of callbacks
+WRAPPER(GstTaskPool, prepare, void,  (void* pool, void* error), "pp", pool, error);
+WRAPPER(GstTaskPool, cleanup, void,  (void* pool), "p", pool);
+WRAPPER(GstTaskPool, push, void*,    (void* pool, void* func, void* user_data, void* error), "pppp", pool, AddCheckBridge(my_bridge, vFp, func, 0, NULL), user_data, error);
+WRAPPER(GstTaskPool, join, void,     (void* pool, void* id), "pp", pool, id);
+WRAPPER(GstTaskPool, dispose_handle, void, (void* pool, void* id), "pp", pool, id);
+
+#define SUPERGO()               \
+    GO(prepare, vFpp);          \
+    GO(cleanup, vFp);           \
+    GO(push, pFpppp);           \
+    GO(join, vFpp);             \
+    GO(dispose_handle, vFpp);   \
+
+// wrap (so bridge all calls, just in case)
+static void wrapGstTaskPoolClass(my_GstTaskPoolClass_t* class)
+{
+    wrapGstObjectClass(&class->parent_class);
+    #define GO(A, W) class->A = reverse_##A##_GstTaskPool (W, class->A)
+    SUPERGO()
+    #undef GO
+}
+// unwrap (and use callback if not a native call anymore)
+static void unwrapGstTaskPoolClass(my_GstTaskPoolClass_t* class)
+{
+    unwrapGstObjectClass(&class->parent_class);
+    #define GO(A, W)   class->A = find_##A##_GstTaskPool (class->A)
+    SUPERGO()
+    #undef GO
+}
+// autobridge
+static void bridgeGstTaskPoolClass(my_GstTaskPoolClass_t* class)
+{
+    bridgeGstObjectClass(&class->parent_class);
+    #define GO(A, W) autobridge_##A##_GstTaskPool (W, class->A)
+    SUPERGO()
+    #undef GO
+}
+
+#undef SUPERGO
+
+
 // No more wrap/unwrap
 #undef WRAPPER
 #undef FIND
diff --git a/src/wrapped/wrappedgstreamer.c b/src/wrapped/wrappedgstreamer.c
index cbf51165..1e23a20e 100644
--- a/src/wrapped/wrappedgstreamer.c
+++ b/src/wrapped/wrappedgstreamer.c
@@ -32,6 +32,7 @@ typedef int     (*iFpp_t)(void*, void*);
 #define ADDED_FUNCTIONS()                   \
     GO(gst_object_get_type, LFv_t)          \
     GO(gst_allocator_get_type, LFv_t)       \
+    GO(gst_task_pool_get_type, LFv_t)       \
     GO(gst_structure_new_valist, pFppA_t)   \
     GO(gst_structure_new_empty, pFp_t)      \
     GO(gst_caps_new_empty, pFv_t)           \
@@ -397,6 +398,7 @@ EXPORT int my_gst_caps_foreach(x64emu_t* emu, void* caps, void* f, void* data)
     getMy(lib);     \
     SetGstObjectID(my->gst_object_get_type());                 \
     SetGstAllocatorID(my->gst_allocator_get_type());           \
+    SetGstTaskPoolID(my->gst_task_pool_get_type());            \
     setNeededLibs(lib, 1, "libgtk-3.so.0");
 
 #define CUSTOM_FINI \