mirror of
https://gitlab.freedesktop.org/dbus/dbus.git
synced 2026-06-20 05:28:31 +02:00
* python/dbus_bindings.pyx (_pending_call_notification): Obtain the
GIL global lock when calling back into Python
This commit is contained in:
parent
b701a78aca
commit
46a1e648fe
2 changed files with 20 additions and 10 deletions
|
|
@ -1,3 +1,8 @@
|
|||
2005-08-30 John (J5) Palmieri <johnp@redhat.com>
|
||||
|
||||
* python/dbus_bindings.pyx (_pending_call_notification): Obtain the
|
||||
GIL global lock when calling back into Python
|
||||
|
||||
2005-08-29 John (J5) Palmieri <johnp@redhat.com>
|
||||
|
||||
* Release 0.36.2
|
||||
|
|
|
|||
|
|
@ -490,6 +490,7 @@ cdef class Connection:
|
|||
cdef void _pending_call_notification(DBusPendingCall *pending_call, void *user_data):
|
||||
cdef DBusMessage *dbus_message
|
||||
cdef Message message
|
||||
cdef PyGILState_STATE gil
|
||||
|
||||
(reply_handler, error_handler) = <object>user_data
|
||||
|
||||
|
|
@ -499,17 +500,21 @@ cdef void _pending_call_notification(DBusPendingCall *pending_call, void *user_d
|
|||
|
||||
type = message.get_type()
|
||||
|
||||
if type == MESSAGE_TYPE_METHOD_RETURN:
|
||||
args = message.get_args_list()
|
||||
reply_handler(*args)
|
||||
elif type == MESSAGE_TYPE_ERROR:
|
||||
args = message.get_args_list()
|
||||
if len(args) > 0:
|
||||
error_handler(DBusException(args[0]))
|
||||
gil = PyGILState_Ensure()
|
||||
try:
|
||||
if type == MESSAGE_TYPE_METHOD_RETURN:
|
||||
args = message.get_args_list()
|
||||
reply_handler(*args)
|
||||
elif type == MESSAGE_TYPE_ERROR:
|
||||
args = message.get_args_list()
|
||||
if len(args) > 0:
|
||||
error_handler(DBusException(args[0]))
|
||||
else:
|
||||
error_handler(DBusException(""))
|
||||
else:
|
||||
error_handler(DBusException(""))
|
||||
else:
|
||||
error_handler(DBusException('Unexpected Message Type: ' + message.type_to_name(type)))
|
||||
error_handler(DBusException('Unexpected Message Type: ' + message.type_to_name(type)))
|
||||
finally:
|
||||
PyGILState_Release(gil)
|
||||
|
||||
dbus_message_unref(dbus_message)
|
||||
dbus_pending_call_unref(pending_call)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue