summaryrefslogtreecommitdiffstats
path: root/cython/sbservices.pxi
diff options
context:
space:
mode:
Diffstat (limited to 'cython/sbservices.pxi')
-rw-r--r--cython/sbservices.pxi30
1 files changed, 23 insertions, 7 deletions
diff --git a/cython/sbservices.pxi b/cython/sbservices.pxi
index f458bec..6eece0a 100644
--- a/cython/sbservices.pxi
+++ b/cython/sbservices.pxi
@@ -29,14 +29,16 @@ cdef class SpringboardServicesClient(Base):
29 cdef sbservices_client_t _c_client 29 cdef sbservices_client_t _c_client
30 30
31 def __cinit__(self, iDevice device not None, LockdownClient lockdown=None, *args, **kwargs): 31 def __cinit__(self, iDevice device not None, LockdownClient lockdown=None, *args, **kwargs):
32 cdef iDevice dev = device 32 cdef:
33 cdef LockdownClient lckd 33 iDevice dev = device
34 LockdownClient lckd
34 if lockdown is None: 35 if lockdown is None:
35 lckd = LockdownClient(dev) 36 lckd = LockdownClient(dev)
36 else: 37 else:
37 lckd = lockdown 38 lckd = lockdown
38 port = lockdown.start_service("com.apple.springboardservices") 39 port = lckd.start_service("com.apple.springboardservices")
39 self.handle_error(sbservices_client_new(dev._c_dev, port, &(self._c_client))) 40 err = SpringboardServicesError(sbservices_client_new(dev._c_dev, port, &(self._c_client)))
41 if err: raise err
40 42
41 def __dealloc__(self): 43 def __dealloc__(self):
42 if self._c_client is not NULL: 44 if self._c_client is not NULL:
@@ -51,7 +53,14 @@ cdef class SpringboardServicesClient(Base):
51 cdef: 53 cdef:
52 plist.plist_t c_node = NULL 54 plist.plist_t c_node = NULL
53 plist.Node node 55 plist.Node node
54 self.handle_error(sbservices_get_icon_state(self._c_client, &c_node)) 56 sbservices_error_t err
57 err = sbservices_get_icon_state(self._c_client, &c_node)
58 try:
59 self.handle_error(err)
60 except BaseError, e:
61 if c_node != NULL:
62 plist_free(c_node)
63 raise
55 node = plist.plist_t_to_node(c_node) 64 node = plist.plist_t_to_node(c_node)
56 return node 65 return node
57 def __set__(self, plist.Node newstate not None): 66 def __set__(self, plist.Node newstate not None):
@@ -63,6 +72,13 @@ cdef class SpringboardServicesClient(Base):
63 bytes result 72 bytes result
64 char* pngdata = NULL 73 char* pngdata = NULL
65 uint64_t pngsize 74 uint64_t pngsize
66 self.handle_error(sbservices_get_icon_pngdata(self._c_client, bundleId, &pngdata, &pngsize)) 75 sbservices_error_t err
67 result = pngdata[:pngsize] 76 err = sbservices_get_icon_pngdata(self._c_client, bundleId, &pngdata, &pngsize)
77 try:
78 self.handle_error(err)
79 except BaseError, e:
80 raise
81 finally:
82 result = pngdata[:pngsize]
83 free(pngdata)
68 return result 84 return result