Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9472ba1d authored by Matt Mower's avatar Matt Mower Committed by Dees Troy
Browse files

gui: Actions: Toggle backlight on power key

Create GUIAction to handle KEY_POWER with a screen backlight toggle.

Change-Id: Iad0a7923b4a776e0336722db74d6fc46cd0107a2
parent 87413643
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -198,6 +198,7 @@ GUIAction::GUIAction(xml_node<>* node)
		ADD_ACTION(mountsystemtoggle);
		ADD_ACTION(setlanguage);
		ADD_ACTION(checkforapp);
		ADD_ACTION(togglebacklight);

		// remember actions that run in the caller thread
		for (mapFunc::const_iterator it = mf.begin(); it != mf.end(); ++it)
@@ -1865,6 +1866,12 @@ int GUIAction::setlanguage(std::string arg __unused)
	return 0;
}

int GUIAction::togglebacklight(std::string arg __unused)
{
	blankTimer.toggleBlank();
	return 0;
}

int GUIAction::setbootslot(std::string arg)
{
	operation_start("Set Boot Slot");
+34 −0
Original line number Diff line number Diff line
@@ -116,3 +116,37 @@ void blanktimer::resetTimerAndUnblank(void) {
	pthread_mutex_unlock(&mutex);
#endif
}

void blanktimer::blank(void) {
/*  1) No need for timer handling since checkForTimeout() verifies
 *     state of screen before performing screen-off
 *  2) Assume screen-off causes issues for devices that set
 *     TW_NO_SCREEN_TIMEOUT and do not blank screen here either
 */

#ifndef TW_NO_SCREEN_TIMEOUT
	pthread_mutex_lock(&mutex);
	if (state == kOn) {
		orig_brightness = getBrightness();
		state = kOff;
		TWFunc::Set_Brightness("0");
		TWFunc::check_and_run_script("/sbin/postscreenblank.sh", "blank");
	}
#ifndef TW_NO_SCREEN_BLANK
	if (state == kOff) {
		gr_fb_blank(true);
		state = kBlanked;
	}
#endif
	pthread_mutex_unlock(&mutex);
#endif
}

void blanktimer::toggleBlank(void) {
	if (state == kOn) {
		blank();
		PageManager::ChangeOverlay("lock");
	} else {
		resetTimerAndUnblank();
	}
}
+4 −0
Original line number Diff line number Diff line
@@ -37,11 +37,15 @@ public:
	// call this when an input event is received or when an operation is finished
	void resetTimerAndUnblank();

	// call this when power button is pressed
	void toggleBlank(void);

	bool isScreenOff();

private:
	void setTimer(void);
	string getBrightness(void);
	void blank(void);

	pthread_mutex_t mutex;
	enum State { kOn = 0, kDim = 1, kOff = 2, kBlanked = 3 };
+3 −1
Original line number Diff line number Diff line
@@ -205,7 +205,9 @@ bool InputHandler::processInput(int timeout_ms)
		break;
	}

	if (ev.code != KEY_POWER && ev.code > KEY_RESERVED)
		blankTimer.resetTimerAndUnblank();

	return true;  // we got an event, so there might be more in the queue
}

+1 −0
Original line number Diff line number Diff line
@@ -363,6 +363,7 @@ protected:
	int checkpartitionlifetimewrites(std::string arg);
	int mountsystemtoggle(std::string arg);
	int setlanguage(std::string arg);
	int togglebacklight(std::string arg);
	int twcmd(std::string arg);
	int setbootslot(std::string arg);
	int installapp(std::string arg);
Loading