Turn on the screen on successful authentication
Patch status: needinfo
Patch by Philippe Virouleau
Long description:
This fixes the behaviour described in ticket #1114, where the screen could be left turned off on successful authentication.. Fixes #1114
To apply this patch, use:
curl http://cr.i3wm.org/patch/306/raw.patch | git am
b/i3lock.c
| 19 |
@@ -212,6 +212,8 @@ static void input_done(void) {
|
| 20 |
if (pam_authenticate(pam_handle, 0) == PAM_SUCCESS) {
|
| 21 |
DEBUG("successfully authenticated\n");
|
| 22 |
clear_password_memory(); |
| 23 |
+ if (dpms) |
| 24 |
+ dpms_set_mode(conn, XCB_DPMS_DPMS_MODE_ON); |
| 25 |
exit(0); |
| 26 |
} |
| 27 |
|
| 28 |
@@ -497,7 +499,7 @@ static void xcb_check_cb(EV_P_ ev_check *w, int revents) {
|
| 29 |
/* If this was the backspace or escape key we are back at an |
| 30 |
* empty input, so turn off the screen if DPMS is enabled */ |
| 31 |
if (dpms && input_position == 0) |
| 32 |
- dpms_turn_off_screen(conn); |
| 33 |
+ dpms_set_mode(conn, XCB_DPMS_DPMS_MODE_OFF); |
| 34 |
|
| 35 |
break; |
| 36 |
|
| 37 |
@@ -771,7 +773,7 @@ int main(int argc, char *argv[]) {
|
| 38 |
(void)load_keymap(); |
| 39 |
|
| 40 |
if (dpms) |
| 41 |
- dpms_turn_off_screen(conn); |
| 42 |
+ dpms_set_mode(conn, XCB_DPMS_DPMS_MODE_OFF); |
| 43 |
|
| 44 |
/* Initialize the libev event loop. */ |
| 45 |
main_loop = EV_DEFAULT; |
b/xcb.c
| 50 |
@@ -155,9 +155,13 @@ xcb_window_t open_fullscreen_window(xcb_connection_t *conn, xcb_screen_t *scr, c |
| 51 |
return win; |
| 52 |
} |
| 53 |
|
| 54 |
-void dpms_turn_off_screen(xcb_connection_t *conn) {
|
| 55 |
+/* |
| 56 |
+ * Set the dpms level to 'mode'. |
| 57 |
+ * |
| 58 |
+ */ |
| 59 |
+void dpms_set_mode(xcb_connection_t *conn, xcb_dpms_dpms_mode_t mode) {
|
| 60 |
xcb_dpms_enable(conn); |
| 61 |
- xcb_dpms_force_level(conn, XCB_DPMS_DPMS_MODE_OFF); |
| 62 |
+ xcb_dpms_force_level(conn, mode); |
| 63 |
xcb_flush(conn); |
| 64 |
} |
| 65 |
|
b/xcb.h
| 70 |
@@ -2,6 +2,7 @@ |
| 71 |
#define _XCB_H |
| 72 |
|
| 73 |
#include <xcb/xcb.h> |
| 74 |
+#include <xcb/dpms.h> |
| 75 |
|
| 76 |
extern xcb_connection_t *conn; |
| 77 |
extern xcb_screen_t *screen; |
| 78 |
@@ -10,7 +11,7 @@ xcb_visualtype_t *get_root_visual_type(xcb_screen_t *s); |
| 79 |
xcb_pixmap_t create_bg_pixmap(xcb_connection_t *conn, xcb_screen_t *scr, u_int32_t *resolution, char *color); |
| 80 |
xcb_window_t open_fullscreen_window(xcb_connection_t *conn, xcb_screen_t *scr, char *color, xcb_pixmap_t pixmap); |
| 81 |
void grab_pointer_and_keyboard(xcb_connection_t *conn, xcb_screen_t *screen, xcb_cursor_t cursor); |
| 82 |
-void dpms_turn_off_screen(xcb_connection_t *conn); |
| 83 |
+void dpms_set_mode(xcb_connection_t *conn, xcb_dpms_dpms_mode_t mode); |
| 84 |
xcb_cursor_t create_cursor(xcb_connection_t *conn, xcb_screen_t *screen, xcb_window_t win, int choice); |
| 85 |
|
| 86 |
#endif |