Skip to content

Commit

Permalink
[fix] - handle screensaver on jsonrpc input operations - fixes #11620
Browse files Browse the repository at this point in the history
  • Loading branch information
Memphiz committed Jun 12, 2011
1 parent f156a64 commit 891a07c
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 14 deletions.
54 changes: 40 additions & 14 deletions xbmc/interfaces/json-rpc/InputOperations.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
5 changes: 5 additions & 0 deletions xbmc/interfaces/json-rpc/InputOperations.h
Original file line number Diff line number Diff line change
Expand Up @@ -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();
};
}

0 comments on commit 891a07c

Please sign in to comment.