about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--configure.ac11
-rw-r--r--src/command/cmd_funcs.c4
-rw-r--r--src/main.c6
-rw-r--r--src/xmpp/avatar.c6
-rw-r--r--src/xmpp/avatar.h2
-rw-r--r--tests/unittests/xmpp/stub_avatar.c5
6 files changed, 31 insertions, 3 deletions
diff --git a/configure.ac b/configure.ac
index 158878b0..5124f2ed 100644
--- a/configure.ac
+++ b/configure.ac
@@ -65,6 +65,8 @@ AC_ARG_WITH([themes],
     [AS_HELP_STRING([--with-themes[[=PATH]]], [install themes (default yes)])])
 AC_ARG_ENABLE([icons-and-clipboard],
     [AS_HELP_STRING([--enable-icons-and-clipboard], [enable GTK tray icons and clipboard paste support])])
+AC_ARG_ENABLE([gdk-pixbuf],
+    [AS_HELP_STRING([--enable-gdk-pixbuf], [enable GDK Pixbuf support])])
 
 # Required dependencies
 
@@ -306,6 +308,15 @@ if test "x$enable_otr" != xno; then
    AM_COND_IF([BUILD_OTR], [AC_DEFINE([HAVE_LIBOTR], [1], [Have libotr])])
 fi
 
+dnl feature: pixbuf
+AS_IF([test "x$enable_pixbuf" != xno],
+    [PKG_CHECK_MODULES([gdk_pixbuf], [gdk-pixbuf-2.0 >= 2.4],
+        [AC_DEFINE([HAVE_PIXBUF], [1], [gdk-pixbuf module])],
+        [AS_IF([test "x$enable_pixbuf" = xyes],
+               [AC_MSG_ERROR([gdk-pixbuf-2.0 >= 2.4 is required for GDK Pixbuf support])],
+               [AC_MSG_NOTICE([gdk-pixbuf-2.0 >= 2.4 not found, GDK Pixbuf support not enabled])])])])
+
+
 dnl feature: omemo
 AM_CONDITIONAL([BUILD_OMEMO], [false])
 if test "x$enable_omemo" != xno; then
diff --git a/src/command/cmd_funcs.c b/src/command/cmd_funcs.c
index 26eb9c3e..dfe96971 100644
--- a/src/command/cmd_funcs.c
+++ b/src/command/cmd_funcs.c
@@ -9196,9 +9196,13 @@ cmd_avatar(ProfWin* window, const char* const command, gchar** args)
     }
 
     if (g_strcmp0(args[0], "set") == 0) {
+#ifdef HAVE_PIXBUF
         if (avatar_set(args[1])) {
             cons_show("Avatar updated successfully");
         }
+#else
+        cons_show("This version of Profanity has not been built with GDK Pixbuf support enabled");
+#endif
     } else if (g_strcmp0(args[0], "get") == 0) {
         avatar_get_by_nick(args[1], false);
     } else if (g_strcmp0(args[0], "open") == 0) {
diff --git a/src/main.c b/src/main.c
index 15e4948a..42629370 100644
--- a/src/main.c
+++ b/src/main.c
@@ -173,6 +173,12 @@ main(int argc, char** argv)
         g_print("GTK icons/clipboard: Disabled\n");
 #endif
 
+#ifdef HAVE_PIXBUF
+        g_print("GDK Pixbuf: Enabled\n");
+#else
+        g_print("GDK Pixbuf: Disabled\n");
+#endif
+
         return 0;
     }
 
diff --git a/src/xmpp/avatar.c b/src/xmpp/avatar.c
index d826dd90..15ec7f1a 100644
--- a/src/xmpp/avatar.c
+++ b/src/xmpp/avatar.c
@@ -95,6 +95,7 @@ avatar_pep_subscribe(void)
     shall_open = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL);
 }
 
+#ifdef HAVE_PIXBUF
 gboolean
 avatar_set(const char* path)
 {
@@ -104,7 +105,7 @@ avatar_set(const char* path)
     GdkPixbuf* pixbuf = gdk_pixbuf_new_from_file(expanded_path, &err);
 
     if (pixbuf == NULL) {
-        cons_show("An error occurred while opening %s: %s.", expanded_path, err ? err->message : "No error message given");
+        cons_show_error("An error occurred while opening %s: %s.", expanded_path, err ? err->message : "No error message given");
         return FALSE;
     }
     free(expanded_path);
@@ -129,7 +130,7 @@ avatar_set(const char* path)
     gsize len = -1;
 
     if (!gdk_pixbuf_save_to_buffer(pixbuf, &img_data, &len, "png", &err, NULL)) {
-        cons_show("Unable to scale and convert avatar.");
+        cons_show_error("Unable to scale and convert avatar.");
         return FALSE;
     }
 
@@ -146,6 +147,7 @@ avatar_set(const char* path)
 
     return TRUE;
 }
+#endif
 
 gboolean
 avatar_get_by_nick(const char* nick, gboolean open)
diff --git a/src/xmpp/avatar.h b/src/xmpp/avatar.h
index 1767a2b2..c65328ad 100644
--- a/src/xmpp/avatar.h
+++ b/src/xmpp/avatar.h
@@ -40,6 +40,8 @@
 
 void avatar_pep_subscribe(void);
 gboolean avatar_get_by_nick(const char* nick, gboolean open);
+#ifdef HAVE_PIXBUF
 gboolean avatar_set(const char* path);
+#endif
 
 #endif
diff --git a/tests/unittests/xmpp/stub_avatar.c b/tests/unittests/xmpp/stub_avatar.c
index 453d1863..9f07c334 100644
--- a/tests/unittests/xmpp/stub_avatar.c
+++ b/tests/unittests/xmpp/stub_avatar.c
@@ -8,8 +8,11 @@ avatar_get_by_nick(const char* nick)
 {
     return TRUE;
 }
+
+#ifdef HAVE_PIXBUF
 gboolean
 avatar_set(const char* path)
 {
-    return FALSE;
+    return TRUE;
 }
+#endif