diff --git a/gui/blanktimer.hpp b/gui/blanktimer.hpp
index 74712bd..4135635 100644
--- a/gui/blanktimer.hpp
+++ b/gui/blanktimer.hpp
@@ -1,55 +1,56 @@
-/*
-        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/>.
-*/
-
-#ifndef __BLANKTIMER_HEADER_HPP
-#define __BLANKTIMER_HEADER_HPP
-
-#include <pthread.h>
-#include <sys/time.h>
-
-using namespace std;
-
-class blanktimer {
-	public:
-		blanktimer(void);
-		int setTimerThread(void);
-		void resetTimerAndUnblank(void);
-
-	private:
-		void setBlank(int blank);
-		int getBlank(void);
-		void setTimer(void);
-		timespec getTimer(void);
-		int getBrightness(void);
-		int setBrightness(int brightness);
-		int setBlankTimer(void);
-		int setClockTimer(void);
-		typedef int (blanktimer::*ThreadPtr)(void);
-		typedef void* (*PThreadPtr)(void*);
-		pthread_mutex_t blankmutex;
-		pthread_mutex_t timermutex;
-		int conblank;
-		timespec btimer;
-		unsigned long long sleepTimer;
-		int orig_brightness;
-		int blanked;
-};
-
-extern blanktimer blankTimer;
-
-#endif // __BLANKTIMER_HEADER_HPP
+/*
+        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/>.
+*/
+
+#ifndef __BLANKTIMER_HEADER_HPP
+#define __BLANKTIMER_HEADER_HPP
+
+#include <pthread.h>
+#include <sys/time.h>
+
+using namespace std;
+
+class blanktimer {
+	public:
+		blanktimer(void);
+		int setTimerThread(void);
+		void resetTimerAndUnblank(void);
+		void setTime(int newtime);
+
+	private:
+		void setBlank(int blank);
+		int getBlank(void);
+		void setTimer(void);
+		timespec getTimer(void);
+		int getBrightness(void);
+		int setBrightness(int brightness);
+		int setBlankTimer(void);
+		int setClockTimer(void);
+		typedef int (blanktimer::*ThreadPtr)(void);
+		typedef void* (*PThreadPtr)(void*);
+		pthread_mutex_t blankmutex;
+		pthread_mutex_t timermutex;
+		int conblank;
+		timespec btimer;
+		unsigned long long sleepTimer;
+		int orig_brightness;
+		int blanked;
+};
+
+extern blanktimer blankTimer;
+
+#endif // __BLANKTIMER_HEADER_HPP
