diff options
author | Memphiz <memphis@machzwo.de> | 2011-06-13 01:21:59 +0200 |
---|---|---|
committer | Memphiz <memphis@machzwo.de> | 2011-06-13 01:24:35 +0200 |
commit | 891a07c14324b2872c489e707cc0c1a2a81092e9 (patch) | |
tree | 3a24ba2a80abce9caa6e505f45d7d2c3095dfda9 | |
parent | f156a642f2f8eba65e0f0668edd9a1f0f2427d30 (diff) |
[fix] - handle screensaver on jsonrpc input operations - fixes #11620
-rw-r--r-- | xbmc/interfaces/json-rpc/InputOperations.cpp | 54 | ||||
-rw-r--r-- | xbmc/interfaces/json-rpc/InputOperations.h | 5 |
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 ¶meterObject, 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 ¶meterObject, 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 ¶meterObject, CVariant &result) +{ + return sendAction(ACTION_MOVE_LEFT); +} + +JSON_STATUS CInputOperations::Right(const CStdString &method, ITransportLayer *transport, IClient *client, const CVariant ¶meterObject, CVariant &result) +{ + return sendAction(ACTION_MOVE_RIGHT); +} + JSON_STATUS CInputOperations::Down(const CStdString &method, ITransportLayer *transport, IClient *client, const CVariant ¶meterObject, 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 ¶meterObject, 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 ¶meterObject, 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 ¶meterObject, 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 ¶meterObject, 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 ¶meterObject, CVariant &result); static JSON_STATUS Home(const CStdString &method, ITransportLayer *transport, IClient *client, const CVariant ¶meterObject, CVariant &result); + + private: + static JSON_STATUS sendAction(int actionID); + static JSON_STATUS activateWindow(int windowID); + static bool handleScreenSaver(); }; } |