aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMemphiz <memphis@machzwo.de>2011-06-13 01:21:59 +0200
committerMemphiz <memphis@machzwo.de>2011-06-13 01:24:35 +0200
commit891a07c14324b2872c489e707cc0c1a2a81092e9 (patch)
tree3a24ba2a80abce9caa6e505f45d7d2c3095dfda9
parentf156a642f2f8eba65e0f0668edd9a1f0f2427d30 (diff)
[fix] - handle screensaver on jsonrpc input operations - fixes #11620
-rw-r--r--xbmc/interfaces/json-rpc/InputOperations.cpp54
-rw-r--r--xbmc/interfaces/json-rpc/InputOperations.h5
2 files changed, 45 insertions, 14 deletions
diff --git a/xbmc/interfaces/json-rpc/InputOperations.cpp b/xbmc/interfaces/json-rpc/InputOperations.cpp
index 2f873867b4..aa47f0f52e 100644
--- a/xbmc/interfaces/json-rpc/InputOperations.cpp
+++ b/xbmc/interfaces/json-rpc/InputOperations.cpp
@@ -24,44 +24,70 @@
using namespace JSONRPC;
-JSON_STATUS CInputOperations::Left(const CStdString &method, ITransportLayer *transport, IClient *client, const CVariant &parameterObject, CVariant &result)
+//TODO the breakage of the screensaver should be refactored
+//to one central super duper place for getting rid of
+//1 million dupes
+bool CInputOperations::handleScreenSaver()
+{
+ bool screenSaverBroken = false; //true if screensaver was active and we did reset him
+
+ if(g_application.IsInScreenSaver())
+ {
+ g_application.ResetScreenSaver();
+ screenSaverBroken = true;
+ }
+ return screenSaverBroken;
+}
+
+JSON_STATUS CInputOperations::sendAction(int actionID)
{
- g_application.getApplicationMessenger().SendAction(CAction(ACTION_MOVE_LEFT), WINDOW_INVALID, false);
+ if(!handleScreenSaver())
+ {
+ g_application.getApplicationMessenger().SendAction(CAction(actionID), WINDOW_INVALID, false);
+ }
return ACK;
}
-JSON_STATUS CInputOperations::Right(const CStdString &method, ITransportLayer *transport, IClient *client, const CVariant &parameterObject, CVariant &result)
+JSON_STATUS CInputOperations::activateWindow(int windowID)
{
- g_application.getApplicationMessenger().SendAction(CAction(ACTION_MOVE_RIGHT), WINDOW_INVALID, false);
+ if(!handleScreenSaver())
+ {
+ g_application.getApplicationMessenger().ActivateWindow(windowID, std::vector<CStdString>(), false);
+ }
return ACK;
}
+JSON_STATUS CInputOperations::Left(const CStdString &method, ITransportLayer *transport, IClient *client, const CVariant &parameterObject, CVariant &result)
+{
+ return sendAction(ACTION_MOVE_LEFT);
+}
+
+JSON_STATUS CInputOperations::Right(const CStdString &method, ITransportLayer *transport, IClient *client, const CVariant &parameterObject, CVariant &result)
+{
+ return sendAction(ACTION_MOVE_RIGHT);
+}
+
JSON_STATUS CInputOperations::Down(const CStdString &method, ITransportLayer *transport, IClient *client, const CVariant &parameterObject, CVariant &result)
{
- g_application.getApplicationMessenger().SendAction(CAction(ACTION_MOVE_DOWN), WINDOW_INVALID, false);
- return ACK;
+ return sendAction(ACTION_MOVE_DOWN);
}
JSON_STATUS CInputOperations::Up(const CStdString &method, ITransportLayer *transport, IClient *client, const CVariant &parameterObject, CVariant &result)
{
- g_application.getApplicationMessenger().SendAction(CAction(ACTION_MOVE_UP), WINDOW_INVALID, false);
- return ACK;
+ return sendAction(ACTION_MOVE_UP);
}
JSON_STATUS CInputOperations::Select(const CStdString &method, ITransportLayer *transport, IClient *client, const CVariant &parameterObject, CVariant &result)
{
- g_application.getApplicationMessenger().SendAction(CAction(ACTION_SELECT_ITEM), WINDOW_INVALID, false);
- return ACK;
+ return sendAction(ACTION_SELECT_ITEM);
}
JSON_STATUS CInputOperations::Back(const CStdString &method, ITransportLayer *transport, IClient *client, const CVariant &parameterObject, CVariant &result)
{
- g_application.getApplicationMessenger().SendAction(CAction(ACTION_PARENT_DIR), WINDOW_INVALID, false);
- return ACK;
+ return sendAction(ACTION_PARENT_DIR);
}
JSON_STATUS CInputOperations::Home(const CStdString &method, ITransportLayer *transport, IClient *client, const CVariant &parameterObject, CVariant &result)
{
- g_application.getApplicationMessenger().ActivateWindow(WINDOW_HOME, std::vector<CStdString>(), false);
- return ACK;
+ return activateWindow(WINDOW_HOME);
}
diff --git a/xbmc/interfaces/json-rpc/InputOperations.h b/xbmc/interfaces/json-rpc/InputOperations.h
index f96d8c6a89..4352a79792 100644
--- a/xbmc/interfaces/json-rpc/InputOperations.h
+++ b/xbmc/interfaces/json-rpc/InputOperations.h
@@ -39,5 +39,10 @@ namespace JSONRPC
static JSON_STATUS Back(const CStdString &method, ITransportLayer *transport, IClient *client, const CVariant &parameterObject, CVariant &result);
static JSON_STATUS Home(const CStdString &method, ITransportLayer *transport, IClient *client, const CVariant &parameterObject, CVariant &result);
+
+ private:
+ static JSON_STATUS sendAction(int actionID);
+ static JSON_STATUS activateWindow(int windowID);
+ static bool handleScreenSaver();
};
}