summaryrefslogtreecommitdiffstats
path: root/cython/screenshotr.pxi
diff options
context:
space:
mode:
Diffstat (limited to 'cython/screenshotr.pxi')
-rw-r--r--cython/screenshotr.pxi20
1 files changed, 11 insertions, 9 deletions
diff --git a/cython/screenshotr.pxi b/cython/screenshotr.pxi
index d7dfc57..9213b64 100644
--- a/cython/screenshotr.pxi
+++ b/cython/screenshotr.pxi
@@ -32,11 +32,7 @@ cdef class ScreenshotrClient(DeviceLinkService):
cdef screenshotr_client_t _c_client
def __cinit__(self, iDevice device not None, int port, *args, **kwargs):
- cdef:
- iDevice dev = device
- screenshotr_error_t err
- err = screenshotr_client_new(dev._c_dev, port, &self._c_client)
- self.handle_error(err)
+ self.handle_error(screenshotr_client_new(device._c_dev, port, &self._c_client))
def __dealloc__(self):
cdef screenshotr_error_t err
@@ -46,15 +42,21 @@ cdef class ScreenshotrClient(DeviceLinkService):
cpdef bytes take_screenshot(self):
cdef:
- char* c_data
+ char* c_data = NULL
uint64_t data_size
bytes result
screenshotr_error_t err
err = screenshotr_take_screenshot(self._c_client, &c_data, &data_size)
- self.handle_error(err)
- result = c_data[:data_size]
- return result
+ try:
+ self.handle_error(err)
+
+ result = c_data[:data_size]
+ return result
+ except Exception, e:
+ if c_data != NULL:
+ stdlib.free(c_data)
+ raise
cdef inline BaseError _error(self, int16_t ret):
return ScreenshotrError(ret)