aboutsummaryrefslogtreecommitdiffstats
path: root/main/omxplayer/pull-req-465.patch
diff options
context:
space:
mode:
authorTimo Teräs <timo.teras@iki.fi>2016-05-16 07:40:46 +0000
committerTimo Teräs <timo.teras@iki.fi>2016-05-16 07:40:46 +0000
commit83bb4f23dc439c99df6dc39abb8626631f705e48 (patch)
tree87d5a8f62eb4aad08606ee5b19aad1d72be6c519 /main/omxplayer/pull-req-465.patch
parenta224e7438ba752caa259dc3c0bfcb3aa1e38a379 (diff)
downloadaports-83bb4f23dc439c99df6dc39abb8626631f705e48.tar.bz2
aports-83bb4f23dc439c99df6dc39abb8626631f705e48.tar.xz
main/omxplayer: upgrade to 20160513, add dbus fix
Diffstat (limited to 'main/omxplayer/pull-req-465.patch')
-rw-r--r--main/omxplayer/pull-req-465.patch73
1 files changed, 73 insertions, 0 deletions
diff --git a/main/omxplayer/pull-req-465.patch b/main/omxplayer/pull-req-465.patch
new file mode 100644
index 0000000000..a9cd11836b
--- /dev/null
+++ b/main/omxplayer/pull-req-465.patch
@@ -0,0 +1,73 @@
+From 2cf933915ccd21ccecb791484ad91a9ee6089336 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Timo=20Ter=C3=A4s?= <timo.teras@iki.fi>
+Date: Mon, 16 May 2016 10:11:56 +0300
+Subject: [PATCH] Fix dbus message handling problems
+
+- make sure dbus messages are released after handling
+- return error to unknown method calls to avoid timeouts
+---
+ OMXControl.cpp | 24 ++++++++++++++++++++++++
+ OMXControl.h | 2 ++
+ 2 files changed, 26 insertions(+)
+
+diff --git a/OMXControl.cpp b/OMXControl.cpp
+index 834461f..7188834 100644
+--- a/OMXControl.cpp
++++ b/OMXControl.cpp
+@@ -158,7 +158,14 @@ OMXControlResult OMXControl::getEvent()
+ return KeyConfig::ACTION_BLANK;
+
+ CLog::Log(LOGDEBUG, "Popped message member: %s interface: %s type: %d path: %s", dbus_message_get_member(m), dbus_message_get_interface(m), dbus_message_get_type(m), dbus_message_get_path(m) );
++ OMXControlResult result = handle_event(m);
++ dbus_message_unref(m);
+
++ return result;
++}
++
++OMXControlResult OMXControl::handle_event(DBusMessage *m)
++{
+ if (dbus_message_is_method_call(m, OMXPLAYER_DBUS_INTERFACE_ROOT, "Quit"))
+ {
+ dbus_respond_ok(m);
+@@ -649,11 +656,28 @@ OMXControlResult OMXControl::getEvent()
+ }
+ else {
+ CLog::Log(LOGWARNING, "Unhandled dbus message, member: %s interface: %s type: %d path: %s", dbus_message_get_member(m), dbus_message_get_interface(m), dbus_message_get_type(m), dbus_message_get_path(m) );
++ if (dbus_message_get_type(m) == DBUS_MESSAGE_TYPE_METHOD_CALL)
++ dbus_respond_error(m);
+ }
+
+ return KeyConfig::ACTION_BLANK;
+ }
+
++DBusHandlerResult OMXControl::dbus_respond_error(DBusMessage *m)
++{
++ DBusMessage *reply;
++
++ reply = dbus_message_new_error(m, DBUS_ERROR_UNKNOWN_METHOD, "Unknown method");
++
++ if (!reply)
++ return DBUS_HANDLER_RESULT_NEED_MEMORY;
++
++ dbus_connection_send(bus, reply, NULL);
++ dbus_message_unref(reply);
++
++ return DBUS_HANDLER_RESULT_HANDLED;
++}
++
+ DBusHandlerResult OMXControl::dbus_respond_ok(DBusMessage *m)
+ {
+ DBusMessage *reply;
+diff --git a/OMXControl.h b/OMXControl.h
+index b2786d5..b0c9a06 100644
+--- a/OMXControl.h
++++ b/OMXControl.h
+@@ -38,6 +38,8 @@ class OMXControl
+ private:
+ int dbus_connect(std::string& dbus_name);
+ void dbus_disconnect();
++ OMXControlResult handle_event(DBusMessage *m);
++ DBusHandlerResult dbus_respond_error(DBusMessage *m);
+ DBusHandlerResult dbus_respond_ok(DBusMessage *m);
+ DBusHandlerResult dbus_respond_int64(DBusMessage *m, int64_t i);
+ DBusHandlerResult dbus_respond_double(DBusMessage *m, double d);