i3lock-color

The world's most popular non-default computer lockscreen.
Index Commits Files Refs README LICENSE
commit c27e4c092c34414a11eb570bbf78a4021a6b67dc
parent b2c32475a01b80d365834641de0fd187a4673bb6
Author: Chris Guillott <chris@techfo.xyz>
Date:   Thu, 28 Apr 2016 14:10:21 -0400

Merge pull request #2 from joeythesaint/optional-xkbcompose

compose: make usage of xkbcompose optional
Diffstat:
MMakefile | 1+
Mi3lock.c | 14++++++++++++++
2 files changed, 15 insertions(+), 0 deletions(-)
diff --git a/Makefile b/Makefile
@@ -13,6 +13,7 @@ CFLAGS += -std=c99
 CFLAGS += -pipe
 CFLAGS += -Wall
 CPPFLAGS += -D_GNU_SOURCE
+CPPFLAGS += -DXKBCOMPOSE=$(shell if test -e /usr/include/xkbcommon/xkbcommon-compose.h ; then echo 1 ; else echo 0 ; fi )
 CFLAGS += $(shell $(PKG_CONFIG) --cflags cairo xcb-dpms xcb-xinerama xcb-atom xcb-image xcb-xkb xkbcommon xkbcommon-x11)
 LIBS += $(shell $(PKG_CONFIG) --libs cairo xcb-dpms xcb-xinerama xcb-atom xcb-image xcb-xkb xkbcommon xkbcommon-x11)
 LIBS += -lpam
diff --git a/i3lock.c b/i3lock.c
@@ -24,7 +24,9 @@
 #include <ev.h>
 #include <sys/mman.h>
 #include <xkbcommon/xkbcommon.h>
+#if XKBCOMPOSE == 1
 #include <xkbcommon/xkbcommon-compose.h>
+#endif
 #include <xkbcommon/xkbcommon-x11.h>
 #include <cairo.h>
 #include <cairo/cairo-xcb.h>
@@ -88,8 +90,10 @@ bool show_failed_attempts = false;
 static struct xkb_state *xkb_state;
 static struct xkb_context *xkb_context;
 static struct xkb_keymap *xkb_keymap;
+#if XKBCOMPOSE == 1
 static struct xkb_compose_table *xkb_compose_table;
 static struct xkb_compose_state *xkb_compose_state;
+#endif
 static uint8_t xkb_base_event;
 static uint8_t xkb_base_error;
 
@@ -145,6 +149,7 @@ static bool load_keymap(void) {
     return true;
 }
 
+#if XKBCOMPOSE == 1
 /*
  * Loads the XKB compose table from the given locale.
  *
@@ -168,6 +173,7 @@ static bool load_compose_table(const char *locale) {
 
     return true;
 }
+#endif /* XKBCOMPOSE */
 
 /*
  * Clears the memory which stored the password to be a bit safer against
@@ -353,7 +359,9 @@ static void handle_key_press(xcb_key_press_event_t *event) {
     char buffer[128];
     int n;
     bool ctrl;
+#if XKBCOMPOSE == 1
     bool composed = false;
+#endif
 
     ksym = xkb_state_key_get_one_sym(xkb_state, event->detail);
     ctrl = xkb_state_mod_name_is_active(xkb_state, XKB_MOD_NAME_CTRL, XKB_STATE_MODS_DEPRESSED);
@@ -361,6 +369,7 @@ static void handle_key_press(xcb_key_press_event_t *event) {
     /* The buffer will be null-terminated, so n >= 2 for 1 actual character. */
     memset(buffer, '\0', sizeof(buffer));
 
+#if XKBCOMPOSE == 1
     if (xkb_compose_state && xkb_compose_state_feed(xkb_compose_state, ksym) == XKB_COMPOSE_FEED_ACCEPTED) {
         switch (xkb_compose_state_get_status(xkb_compose_state)) {
             case XKB_COMPOSE_NOTHING:
@@ -383,6 +392,9 @@ static void handle_key_press(xcb_key_press_event_t *event) {
     if (!composed) {
         n = xkb_keysym_to_utf8(ksym, buffer, sizeof(buffer));
     }
+#else
+    n = xkb_keysym_to_utf8(ksym, buffer, sizeof(buffer));
+#endif
 
     switch (ksym) {
         case XKB_KEY_Return:
@@ -1060,6 +1072,7 @@ int main(int argc, char *argv[]) {
     if (!load_keymap())
         errx(EXIT_FAILURE, "Could not load keymap");
 
+#if XKBCOMPOSE == 1
     const char *locale = getenv("LC_ALL");
     if (!locale)
         locale = getenv("LC_CTYPE");
@@ -1072,6 +1085,7 @@ int main(int argc, char *argv[]) {
     }
 
     load_compose_table(locale);
+#endif
 
     xinerama_init();
     xinerama_query_screens();