From 68cc401372d071f014bc4860ae73a4a811e4487e Mon Sep 17 00:00:00 2001 From: Robin Dunn Date: Fri, 7 May 2004 22:17:59 +0000 Subject: [PATCH] Switch to using a Python buffer object for the sound from data methods git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@27153 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- wxPython/src/_sound.i | 33 ++++++++++++++++++++++++++------- 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/wxPython/src/_sound.i b/wxPython/src/_sound.i index 8f9f560a5f..b82736c121 100644 --- a/wxPython/src/_sound.i +++ b/wxPython/src/_sound.i @@ -81,8 +81,17 @@ public: else return new wxSound(fileName); } - %name(SoundFromData) wxSound(const wxMemoryBuffer& data) { - return new wxSound((int)data.GetDataLen(), (wxByte*)data.GetData()); + %name(SoundFromData) wxSound(PyObject* data) { + unsigned char* buffer; int size; + wxSound *sound = NULL; + + bool blocked = wxPyBeginBlockThreads(); + if (!PyArg_Parse(data, "t#", &buffer, &size)) + goto done; + sound = new wxSound(size, buffer); + done: + wxPyEndBlockThreads(blocked); + return sound; } } @@ -95,16 +104,26 @@ public: bool Create(const wxString& fileName/*, bool isResource = false*/); %extend { - bool CreateFromData(const wxMemoryBuffer& data) { - %#ifndef __WXMAC__ - return self->Create((int)data.GetDataLen(), (wxByte*)data.GetData()); - %#else + bool CreateFromData(PyObject* data) { + %#ifndef __WXMAC__ + unsigned char* buffer; + int size; + bool rv = False; + + bool blocked = wxPyBeginBlockThreads(); + if (!PyArg_Parse(data, "t#", &buffer, &size)) + goto done; + rv = self->Create(size, buffer); + done: + wxPyEndBlockThreads(blocked); + return rv; + %#else bool blocked = wxPyBeginBlockThreads(); PyErr_SetString(PyExc_NotImplementedError, "Create from data is not available on this platform."); wxPyEndBlockThreads(blocked); return False; - %#endif + %#endif } } -- 2.45.2