From ec01df4fd405342a7f8fd3c06f1e0ba82094c0d0 Mon Sep 17 00:00:00 2001 From: baldurk Date: Fri, 15 Aug 2025 13:42:46 +0100 Subject: [PATCH] Fix errors with pre-declaring swig wrappers --- qrenderdoc/Code/pyrenderdoc/qrenderdoc.i | 146 +++++++++++------------ 1 file changed, 72 insertions(+), 74 deletions(-) diff --git a/qrenderdoc/Code/pyrenderdoc/qrenderdoc.i b/qrenderdoc/Code/pyrenderdoc/qrenderdoc.i index 54fed1af6..5170ca738 100644 --- a/qrenderdoc/Code/pyrenderdoc/qrenderdoc.i +++ b/qrenderdoc/Code/pyrenderdoc/qrenderdoc.i @@ -72,82 +72,10 @@ TEMPLATE_FIXEDARRAY_DECLARE(rdcfixedarray); // create a wrapper for passing python ICaptureViewer interface implementations to C++ -%{ - extern "C" SWIGINTERN PyObject *_wrap_CaptureViewer_OnCaptureLoaded(PyObject *self, PyObject *args); - extern "C" SWIGINTERN PyObject *_wrap_CaptureViewer_OnCaptureClosed(PyObject *self, PyObject *args); - extern "C" SWIGINTERN PyObject *_wrap_CaptureViewer_OnSelectedEventChanged(PyObject *self, PyObject *args); - extern "C" SWIGINTERN PyObject *_wrap_CaptureViewer_OnEventChanged(PyObject *self, PyObject *args); - +%wrapper %{ struct PythonCaptureViewer : public ICaptureViewer { - PythonCaptureViewer(PyObject *s) : self(s) - { - Py_INCREF(self); - - StackExceptionHandler ex; - - PyObject *meth = NULL; - - { - meth = PyObject_GetAttrString(self, "OnCaptureLoaded"); - if(PyCFunction_Check(meth) && PyCFunction_GetFunction(meth) == &_wrap_CaptureViewer_OnCaptureLoaded) - { - Py_XDECREF(meth); - meth = NULL; - } - - if(meth) - { - m_OnCaptureLoaded = ConvertFunc>("ICaptureViewer::OnCaptureLoaded", meth, ex); - Py_XDECREF(meth); - } - } - - { - meth = PyObject_GetAttrString(self, "OnCaptureClosed"); - if(PyCFunction_Check(meth) && PyCFunction_GetFunction(meth) == &_wrap_CaptureViewer_OnCaptureClosed) - { - Py_XDECREF(meth); - meth = NULL; - } - - if(meth) - { - m_OnCaptureClosed = ConvertFunc>("ICaptureViewer::OnCaptureClosed", meth, ex); - Py_XDECREF(meth); - } - } - - { - meth = PyObject_GetAttrString(self, "OnSelectedEventChanged"); - if(PyCFunction_Check(meth) && PyCFunction_GetFunction(meth) == &_wrap_CaptureViewer_OnSelectedEventChanged) - { - Py_XDECREF(meth); - meth = NULL; - } - - if(meth) - { - m_OnSelectedEventChanged = ConvertFunc>("ICaptureViewer::OnSelectedEventChanged", meth, ex); - Py_XDECREF(meth); - } - } - - { - meth = PyObject_GetAttrString(self, "OnEventChanged"); - if(PyCFunction_Check(meth) && PyCFunction_GetFunction(meth) == &_wrap_CaptureViewer_OnEventChanged) - { - Py_XDECREF(meth); - meth = NULL; - } - - if(meth) - { - m_OnEventChanged = ConvertFunc>("ICaptureViewer::OnEventChanged", meth, ex); - Py_XDECREF(meth); - } - } - } + PythonCaptureViewer(PyObject *s); virtual ~PythonCaptureViewer() { @@ -306,4 +234,74 @@ QWidget *UnwrapBareQWidget(PyObject *obj) return ret; } +PythonCaptureViewer::PythonCaptureViewer(PyObject *s) +{ + self = s; + Py_INCREF(self); + + StackExceptionHandler ex; + + PyObject *meth = NULL; + + { + meth = PyObject_GetAttrString(self, "OnCaptureLoaded"); + if(PyCFunction_Check(meth) && PyCFunction_GetFunction(meth) == &_wrap_CaptureViewer_OnCaptureLoaded) + { + Py_XDECREF(meth); + meth = NULL; + } + + if(meth) + { + m_OnCaptureLoaded = ConvertFunc>("ICaptureViewer::OnCaptureLoaded", meth, ex); + Py_XDECREF(meth); + } + } + + { + meth = PyObject_GetAttrString(self, "OnCaptureClosed"); + if(PyCFunction_Check(meth) && PyCFunction_GetFunction(meth) == &_wrap_CaptureViewer_OnCaptureClosed) + { + Py_XDECREF(meth); + meth = NULL; + } + + if(meth) + { + m_OnCaptureClosed = ConvertFunc>("ICaptureViewer::OnCaptureClosed", meth, ex); + Py_XDECREF(meth); + } + } + + { + meth = PyObject_GetAttrString(self, "OnSelectedEventChanged"); + if(PyCFunction_Check(meth) && PyCFunction_GetFunction(meth) == &_wrap_CaptureViewer_OnSelectedEventChanged) + { + Py_XDECREF(meth); + meth = NULL; + } + + if(meth) + { + m_OnSelectedEventChanged = ConvertFunc>("ICaptureViewer::OnSelectedEventChanged", meth, ex); + Py_XDECREF(meth); + } + } + + { + meth = PyObject_GetAttrString(self, "OnEventChanged"); + if(PyCFunction_Check(meth) && PyCFunction_GetFunction(meth) == &_wrap_CaptureViewer_OnEventChanged) + { + Py_XDECREF(meth); + meth = NULL; + } + + if(meth) + { + m_OnEventChanged = ConvertFunc>("ICaptureViewer::OnEventChanged", meth, ex); + Py_XDECREF(meth); + } + } +} + %}