X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c368d904fc27d35ae1e533155e2154dc496432e4..4649b5eded522cdc6d76aae074f98a2c162fd648:/wxPython/src/streams.i diff --git a/wxPython/src/streams.i b/wxPython/src/streams.i index 2e87f237a9..4426a09a2d 100644 --- a/wxPython/src/streams.i +++ b/wxPython/src/streams.i @@ -53,26 +53,7 @@ if ($source) { _ptr = new wxPyInputStream($source); } - if (_ptr) { - char swigptr[64]; - SWIG_MakePtr(swigptr, _ptr, "_wxPyInputStream_p"); - - PyObject* classobj = PyDict_GetItemString(wxPython_dict, "wxInputStreamPtr"); - if (! classobj) { - Py_INCREF(Py_None); - $target = Py_None; - } else { - PyObject* arg = Py_BuildValue("(s)", swigptr); - $target = PyInstance_New(classobj, arg, NULL); - Py_DECREF(arg); - - // set ThisOwn - PyObject_SetAttrString($target, "thisown", PyInt_FromLong(1)); - } - } else { - Py_INCREF(Py_None); - $target = Py_None; - } + $target = wxPyConstructObject(_ptr, "wxInputStream", TRUE); } //---------------------------------------------------------------------- @@ -265,7 +246,7 @@ protected: if (bufsize == 0) return 0; - bool doSave = wxPyRestoreThread(); + wxPyTState* state = wxPyBeginBlockThreads(); PyObject* arglist = Py_BuildValue("(i)", bufsize); PyObject* result = PyEval_CallObject(read, arglist); Py_DECREF(arglist); @@ -283,7 +264,7 @@ protected: } else m_lasterror = wxSTREAM_READ_ERROR; - wxPySaveThread(doSave); + wxPyEndBlockThreads(state); m_lastcount = o; return o; } @@ -294,17 +275,17 @@ protected: } virtual off_t OnSysSeek(off_t off, wxSeekMode mode){ - bool doSave = wxPyRestoreThread(); + wxPyTState* state = wxPyBeginBlockThreads(); PyObject*arglist = Py_BuildValue("(ii)", off, mode); PyObject*result = PyEval_CallObject(seek, arglist); Py_DECREF(arglist); Py_XDECREF(result); - wxPySaveThread(doSave); + wxPyEndBlockThreads(state); return OnSysTell(); } virtual off_t OnSysTell() const{ - bool doSave = wxPyRestoreThread(); + wxPyTState* state = wxPyBeginBlockThreads(); PyObject* arglist = Py_BuildValue("()"); PyObject* result = PyEval_CallObject(tell, arglist); Py_DECREF(arglist); @@ -313,7 +294,7 @@ protected: o = PyInt_AsLong(result); Py_DECREF(result); }; - wxPySaveThread(doSave); + wxPyEndBlockThreads(state); return o; } @@ -323,12 +304,12 @@ protected: public: ~wxPyCBInputStream() { - bool doSave = wxPyRestoreThread(); + wxPyTState* state = wxPyBeginBlockThreads(); Py_XDECREF(py); Py_XDECREF(read); Py_XDECREF(seek); Py_XDECREF(tell); - wxPySaveThread(doSave); + wxPyEndBlockThreads(state); } virtual size_t GetSize() { @@ -371,8 +352,10 @@ public: if (!PyObject_HasAttrString(py, name)) return NULL; PyObject* o = PyObject_GetAttrString(py, name); - if (!PyMethod_Check(o) && !PyCFunction_Check(o)) + if (!PyMethod_Check(o) && !PyCFunction_Check(o)) { + Py_DECREF(o); return NULL; + } return o; } @@ -501,3 +484,10 @@ public: } +//---------------------------------------------------------------------- + +%init %{ + wxPyPtrTypeMap_Add("wxInputStream", "wxPyInputStream"); +%} + +//----------------------------------------------------------------------