Will also set overlay to lockscreen so we don't have inadvetent screen selections. Touching the screen will bring the display back up. add back check script for poweroff move diff time function to twrp-functions.cpp make sure we chmod after copy_file add read_file and write_file functions to twrp-functions.cpp make single thread try to force update screen add forceRender drop caches after tar processing Change-Id: I3c5c509dd39dbb05451bbfe5d8b56d53c90d8d1b
129 lines
3.1 KiB
C++
129 lines
3.1 KiB
C++
/*
|
|
Copyright 2012 bigbiff/Dees_Troy TeamWin
|
|
This file is part of TWRP/TeamWin Recovery Project.
|
|
|
|
TWRP is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation, either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
TWRP is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with TWRP. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
using namespace std;
|
|
#include "rapidxml.hpp"
|
|
using namespace rapidxml;
|
|
extern "C" {
|
|
#include "../minzip/Zip.h"
|
|
#include "../minuitwrp/minui.h"
|
|
}
|
|
#include <string>
|
|
#include <vector>
|
|
#include <map>
|
|
#include "resources.hpp"
|
|
#include <pthread.h>
|
|
#include <sys/time.h>
|
|
#include <time.h>
|
|
#include <unistd.h>
|
|
#include <pixelflinger/pixelflinger.h>
|
|
#include <linux/kd.h>
|
|
#include <linux/fb.h>
|
|
#include <sstream>
|
|
#include "pages.hpp"
|
|
#include "blanktimer.hpp"
|
|
extern "C" {
|
|
#include "../common.h"
|
|
#include "../recovery_ui.h"
|
|
}
|
|
#include "../twrp-functions.hpp"
|
|
#include "../variables.h"
|
|
|
|
blanktimer::blanktimer(void) {
|
|
blanked = 0;
|
|
sleepTimer = 60;
|
|
orig_brightness = getBrightness();
|
|
}
|
|
|
|
int blanktimer::setTimerThread(void) {
|
|
pthread_t thread;
|
|
ThreadPtr blankptr = &blanktimer::setClockTimer;
|
|
PThreadPtr p = *(PThreadPtr*)&blankptr;
|
|
pthread_create(&thread, NULL, p, this);
|
|
return 0;
|
|
}
|
|
|
|
void blanktimer::setBlank(int blank) {
|
|
pthread_mutex_lock(&blankmutex);
|
|
conblank = blank;
|
|
pthread_mutex_unlock(&blankmutex);
|
|
}
|
|
|
|
int blanktimer::getBlank(void) {
|
|
return conblank;
|
|
}
|
|
|
|
void blanktimer::setTimer(void) {
|
|
pthread_mutex_lock(&timermutex);
|
|
clock_gettime(CLOCK_MONOTONIC, &btimer);
|
|
pthread_mutex_unlock(&timermutex);
|
|
}
|
|
|
|
timespec blanktimer::getTimer(void) {
|
|
return btimer;
|
|
}
|
|
|
|
int blanktimer::setClockTimer(void) {
|
|
timespec curTime, diff;
|
|
while(1) {
|
|
usleep(1000);
|
|
clock_gettime(CLOCK_MONOTONIC, &curTime);
|
|
diff = TWFunc::timespec_diff(btimer, curTime);
|
|
if (diff.tv_sec > sleepTimer && conblank != 1)
|
|
setBlank(1);
|
|
if (conblank == 1 && blanked != 1) {
|
|
blanked = 1;
|
|
gr_fb_blank(conblank);
|
|
setBrightness(0);
|
|
PageManager::ChangeOverlay("lock");
|
|
}
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
int blanktimer::getBrightness(void) {
|
|
string results;
|
|
string brightness_path = EXPAND(TW_BRIGHTNESS_PATH);
|
|
if ((TWFunc::read_file(brightness_path, results)) != 0)
|
|
return -1;
|
|
return atoi(results.c_str());
|
|
|
|
}
|
|
|
|
int blanktimer::setBrightness(int brightness) {
|
|
string brightness_path = EXPAND(TW_BRIGHTNESS_PATH);
|
|
string bstring;
|
|
char buff[100];
|
|
sprintf(buff, "%d", brightness);
|
|
bstring = buff;
|
|
if ((TWFunc::write_file(brightness_path, bstring)) != 0)
|
|
return -1;
|
|
return 0;
|
|
}
|
|
|
|
void blanktimer::resetTimerAndUnblank(void) {
|
|
setTimer();
|
|
if (blanked) {
|
|
setBrightness(orig_brightness);
|
|
blanked = 0;
|
|
setBlank(0);
|
|
gr_fb_blank(conblank);
|
|
gui_forceRender();
|
|
}
|
|
}
|