diff options
author | progandy <code@progandy> | 2015-12-20 17:37:52 +0100 |
---|---|---|
committer | progandy <code@progandy> | 2015-12-20 17:37:52 +0100 |
commit | 21014e606b9b28d792b98cf363f20c7df2136723 (patch) | |
tree | 946a056785f05744932f21538a90f5687deb299c | |
parent | Update README screenshot (diff) | |
download | sway-21014e606b9b28d792b98cf363f20c7df2136723.tar.gz sway-21014e606b9b28d792b98cf363f20c7df2136723.tar.zst sway-21014e606b9b28d792b98cf363f20c7df2136723.zip |
make gdk-pixbuf dependency really optional
-rw-r--r-- | CMake/FindGdkPixbuf.cmake | 3 | ||||
-rw-r--r-- | CMakeLists.txt | 24 | ||||
-rw-r--r-- | include/client/cairo.h | 2 | ||||
-rw-r--r-- | swaybg/CMakeLists.txt | 11 | ||||
-rw-r--r-- | swaybg/main.c | 4 | ||||
-rw-r--r-- | swaylock/CMakeLists.txt | 11 | ||||
-rw-r--r-- | swaylock/main.c | 4 | ||||
-rw-r--r-- | wayland/CMakeLists.txt | 11 | ||||
-rw-r--r-- | wayland/cairo.c | 5 |
9 files changed, 62 insertions, 13 deletions
diff --git a/CMake/FindGdkPixbuf.cmake b/CMake/FindGdkPixbuf.cmake index 53bb0501..4ea1d5b9 100644 --- a/CMake/FindGdkPixbuf.cmake +++ b/CMake/FindGdkPixbuf.cmake | |||
@@ -29,6 +29,7 @@ IF(NOT GDK_PIXBUF_FOUND AND NOT PKG_CONFIG_FOUND) | |||
29 | # Report results | 29 | # Report results |
30 | IF(GDK_PIXBUF_LIBRARIES AND GDK_PIXBUF_INCLUDE_DIRS) | 30 | IF(GDK_PIXBUF_LIBRARIES AND GDK_PIXBUF_INCLUDE_DIRS) |
31 | SET(GDK_PIXBUF_FOUND 1) | 31 | SET(GDK_PIXBUF_FOUND 1) |
32 | SET(GdkPixbuf_FOUND 1) | ||
32 | IF(NOT GdkPixbuf_FIND_QUIETLY) | 33 | IF(NOT GdkPixbuf_FIND_QUIETLY) |
33 | MESSAGE(STATUS "Found GdkPixbuf: ${GDK_PIXBUF_LIBRARIES}") | 34 | MESSAGE(STATUS "Found GdkPixbuf: ${GDK_PIXBUF_LIBRARIES}") |
34 | ENDIF(NOT GdkPixbuf_FIND_QUIETLY) | 35 | ENDIF(NOT GdkPixbuf_FIND_QUIETLY) |
@@ -41,6 +42,8 @@ IF(NOT GDK_PIXBUF_FOUND AND NOT PKG_CONFIG_FOUND) | |||
41 | ENDIF(NOT GdkPixbuf_FIND_QUIETLY) | 42 | ENDIF(NOT GdkPixbuf_FIND_QUIETLY) |
42 | ENDIF(GdkPixbuf_FIND_REQUIRED) | 43 | ENDIF(GdkPixbuf_FIND_REQUIRED) |
43 | ENDIF(GDK_PIXBUF_LIBRARIES AND GDK_PIXBUF_INCLUDE_DIRS) | 44 | ENDIF(GDK_PIXBUF_LIBRARIES AND GDK_PIXBUF_INCLUDE_DIRS) |
45 | ELSE(NOT GDK_PIXBUF_FOUND AND NOT PKG_CONFIG_FOUND) | ||
46 | SET(GdkPixbuf_FOUND 1) | ||
44 | ENDIF(NOT GDK_PIXBUF_FOUND AND NOT PKG_CONFIG_FOUND) | 47 | ENDIF(NOT GDK_PIXBUF_FOUND AND NOT PKG_CONFIG_FOUND) |
45 | 48 | ||
46 | # Hide advanced variables from CMake GUIs | 49 | # Hide advanced variables from CMake GUIs |
diff --git a/CMakeLists.txt b/CMakeLists.txt index 31e79ca4..5cd9c67b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt | |||
@@ -46,6 +46,7 @@ option(enable-swaybg "Enables the wallpaper utility" YES) | |||
46 | option(enable-swaybar "Enables the swaybar utility" YES) | 46 | option(enable-swaybar "Enables the swaybar utility" YES) |
47 | option(enable-swaygrab "Enables the swaygrab utility" YES) | 47 | option(enable-swaygrab "Enables the swaygrab utility" YES) |
48 | option(enable-swaymsg "Enables the swaymsg utility" YES) | 48 | option(enable-swaymsg "Enables the swaymsg utility" YES) |
49 | option(enable-gdk-pixbuf "Use Pixbuf to support more image formats" YES) | ||
49 | 50 | ||
50 | find_package(JsonC REQUIRED) | 51 | find_package(JsonC REQUIRED) |
51 | find_package(PCRE REQUIRED) | 52 | find_package(PCRE REQUIRED) |
@@ -60,6 +61,17 @@ find_package(PAM) | |||
60 | include(FeatureSummary) | 61 | include(FeatureSummary) |
61 | include(Manpage) | 62 | include(Manpage) |
62 | 63 | ||
64 | if (enable-gdk-pixbuf) | ||
65 | if (GDK_PIXBUF_FOUND) | ||
66 | set(WITH_GDK_PIXBUF YES) | ||
67 | add_definitions(-DWITH_GDK_PIXBUF) | ||
68 | else() | ||
69 | message(WARNING "gdk-pixbuf required but not found, only png images supported.") | ||
70 | endif() | ||
71 | else() | ||
72 | message(STATUS "Building without gdk-pixbuf, only png images supported.") | ||
73 | endif() | ||
74 | |||
63 | include_directories(include) | 75 | include_directories(include) |
64 | 76 | ||
65 | add_subdirectory(protocols) | 77 | add_subdirectory(protocols) |
@@ -68,10 +80,10 @@ add_subdirectory(wayland) | |||
68 | 80 | ||
69 | add_subdirectory(sway) | 81 | add_subdirectory(sway) |
70 | if(enable-swaybg) | 82 | if(enable-swaybg) |
71 | if(CAIRO_FOUND AND PANGO_FOUND AND GDK_PIXBUF_FOUND) | 83 | if(CAIRO_FOUND AND PANGO_FOUND) |
72 | add_subdirectory(swaybg) | 84 | add_subdirectory(swaybg) |
73 | else() | 85 | else() |
74 | message(WARNING "Not building swaybg - cairo, pango, and gdk-pixbuf are required.") | 86 | message(WARNING "Not building swaybg - cairo, and pango are required.") |
75 | endif() | 87 | endif() |
76 | endif() | 88 | endif() |
77 | if(enable-swaymsg) | 89 | if(enable-swaymsg) |
@@ -81,17 +93,17 @@ if(enable-swaygrab) | |||
81 | add_subdirectory(swaygrab) | 93 | add_subdirectory(swaygrab) |
82 | endif() | 94 | endif() |
83 | if(enable-swaybar) | 95 | if(enable-swaybar) |
84 | if(CAIRO_FOUND AND PANGO_FOUND AND GDK_PIXBUF_FOUND) | 96 | if(CAIRO_FOUND AND PANGO_FOUND) |
85 | add_subdirectory(swaybar) | 97 | add_subdirectory(swaybar) |
86 | else() | 98 | else() |
87 | message(WARNING "Not building swaybar - cairo, pango, and gdk-pixbuf are required.") | 99 | message(WARNING "Not building swaybar - cairo, and pango are required.") |
88 | endif() | 100 | endif() |
89 | endif() | 101 | endif() |
90 | if(enable-swaylock) | 102 | if(enable-swaylock) |
91 | if(CAIRO_FOUND AND PANGO_FOUND AND GDK_PIXBUF_FOUND AND PAM_FOUND) | 103 | if(CAIRO_FOUND AND PANGO_FOUND AND PAM_FOUND) |
92 | add_subdirectory(swaylock) | 104 | add_subdirectory(swaylock) |
93 | else() | 105 | else() |
94 | message(WARNING "Not building swaylock - cairo, pango, gdk-pixbuf, and PAM are required.") | 106 | message(WARNING "Not building swaylock - cairo, pango, and PAM are required.") |
95 | endif() | 107 | endif() |
96 | endif() | 108 | endif() |
97 | 109 | ||
diff --git a/include/client/cairo.h b/include/client/cairo.h index 98ced907..ad8390c4 100644 --- a/include/client/cairo.h +++ b/include/client/cairo.h | |||
@@ -1,8 +1,10 @@ | |||
1 | #ifndef _SWAY_CAIRO_H | 1 | #ifndef _SWAY_CAIRO_H |
2 | #define _SWAY_CAIRO_H | 2 | #define _SWAY_CAIRO_H |
3 | 3 | ||
4 | #ifdef WITH_GDK_PIXBUF | ||
4 | #include <gdk-pixbuf/gdk-pixbuf.h> | 5 | #include <gdk-pixbuf/gdk-pixbuf.h> |
5 | 6 | ||
6 | cairo_surface_t* gdk_cairo_image_surface_create_from_pixbuf(const GdkPixbuf *gdkbuf); | 7 | cairo_surface_t* gdk_cairo_image_surface_create_from_pixbuf(const GdkPixbuf *gdkbuf); |
8 | #endif //WITH_GDK_PIXBUF | ||
7 | 9 | ||
8 | #endif | 10 | #endif |
diff --git a/swaybg/CMakeLists.txt b/swaybg/CMakeLists.txt index 4dc961ff..68098370 100644 --- a/swaybg/CMakeLists.txt +++ b/swaybg/CMakeLists.txt | |||
@@ -3,7 +3,6 @@ include_directories( | |||
3 | ${WAYLAND_CLIENT_INCLUDE_DIR} | 3 | ${WAYLAND_CLIENT_INCLUDE_DIR} |
4 | ${CAIRO_INCLUDE_DIRS} | 4 | ${CAIRO_INCLUDE_DIRS} |
5 | ${PANGO_INCLUDE_DIRS} | 5 | ${PANGO_INCLUDE_DIRS} |
6 | ${GDK_PIXBUF_INCLUDE_DIRS} | ||
7 | ) | 6 | ) |
8 | 7 | ||
9 | add_executable(swaybg | 8 | add_executable(swaybg |
@@ -17,10 +16,18 @@ target_link_libraries(swaybg | |||
17 | ${WAYLAND_CURSOR_LIBRARIES} | 16 | ${WAYLAND_CURSOR_LIBRARIES} |
18 | ${CAIRO_LIBRARIES} | 17 | ${CAIRO_LIBRARIES} |
19 | ${PANGO_LIBRARIES} | 18 | ${PANGO_LIBRARIES} |
20 | ${GDK_PIXBUF_LIBRARIES} | ||
21 | m | 19 | m |
22 | ) | 20 | ) |
23 | 21 | ||
22 | if (WITH_GDK_PIXBUF) | ||
23 | include_directories( | ||
24 | ${GDK_PIXBUF_INCLUDE_DIRS} | ||
25 | ) | ||
26 | target_link_libraries(swaybg | ||
27 | ${GDK_PIXBUF_LIBRARIES} | ||
28 | ) | ||
29 | endif() | ||
30 | |||
24 | install( | 31 | install( |
25 | TARGETS swaybg | 32 | TARGETS swaybg |
26 | RUNTIME | 33 | RUNTIME |
diff --git a/swaybg/main.c b/swaybg/main.c index 2ae06c6f..b936be2b 100644 --- a/swaybg/main.c +++ b/swaybg/main.c | |||
@@ -56,6 +56,7 @@ int main(int argc, const char **argv) { | |||
56 | desktop_shell_set_background(registry->desktop_shell, output->output, window->surface); | 56 | desktop_shell_set_background(registry->desktop_shell, output->output, window->surface); |
57 | list_add(surfaces, window); | 57 | list_add(surfaces, window); |
58 | 58 | ||
59 | #ifdef WITH_GDK_PIXBUF | ||
59 | GError *err = NULL; | 60 | GError *err = NULL; |
60 | GdkPixbuf *pixbuf = gdk_pixbuf_new_from_file(argv[2], &err); | 61 | GdkPixbuf *pixbuf = gdk_pixbuf_new_from_file(argv[2], &err); |
61 | if (!pixbuf) { | 62 | if (!pixbuf) { |
@@ -63,6 +64,9 @@ int main(int argc, const char **argv) { | |||
63 | } | 64 | } |
64 | cairo_surface_t *image = gdk_cairo_image_surface_create_from_pixbuf(pixbuf); | 65 | cairo_surface_t *image = gdk_cairo_image_surface_create_from_pixbuf(pixbuf); |
65 | g_object_unref(pixbuf); | 66 | g_object_unref(pixbuf); |
67 | #else | ||
68 | cairo_surface_t *image = cairo_image_surface_create_from_png(argv[2]); | ||
69 | #endif //WITH_GDK_PIXBUF | ||
66 | if (!image) { | 70 | if (!image) { |
67 | sway_abort("Failed to read background image."); | 71 | sway_abort("Failed to read background image."); |
68 | } | 72 | } |
diff --git a/swaylock/CMakeLists.txt b/swaylock/CMakeLists.txt index 306be80e..950a170d 100644 --- a/swaylock/CMakeLists.txt +++ b/swaylock/CMakeLists.txt | |||
@@ -2,7 +2,6 @@ include_directories( | |||
2 | ${PROTOCOLS_INCLUDE_DIRS} | 2 | ${PROTOCOLS_INCLUDE_DIRS} |
3 | ${WAYLAND_CLIENT_INCLUDE_DIR} | 3 | ${WAYLAND_CLIENT_INCLUDE_DIR} |
4 | ${CAIRO_INCLUDE_DIRS} | 4 | ${CAIRO_INCLUDE_DIRS} |
5 | ${GDK_PIXBUF_INCLUDE_DIRS} | ||
6 | ${PANGO_INCLUDE_DIRS} | 5 | ${PANGO_INCLUDE_DIRS} |
7 | ${PAM_INCLUDE_DIRS} | 6 | ${PAM_INCLUDE_DIRS} |
8 | ) | 7 | ) |
@@ -17,12 +16,20 @@ target_link_libraries(swaylock | |||
17 | ${WAYLAND_CLIENT_LIBRARIES} | 16 | ${WAYLAND_CLIENT_LIBRARIES} |
18 | ${WAYLAND_CURSOR_LIBRARIES} | 17 | ${WAYLAND_CURSOR_LIBRARIES} |
19 | ${CAIRO_LIBRARIES} | 18 | ${CAIRO_LIBRARIES} |
20 | ${GDK_PIXBUF_LIBRARIES} | ||
21 | ${PANGO_LIBRARIES} | 19 | ${PANGO_LIBRARIES} |
22 | ${PAM_LIBRARIES} | 20 | ${PAM_LIBRARIES} |
23 | m | 21 | m |
24 | ) | 22 | ) |
25 | 23 | ||
24 | if (WITH_GDK_PIXBUF) | ||
25 | include_directories( | ||
26 | ${GDK_PIXBUF_INCLUDE_DIRS} | ||
27 | ) | ||
28 | target_link_libraries(swaylock | ||
29 | ${GDK_PIXBUF_LIBRARIES} | ||
30 | ) | ||
31 | endif() | ||
32 | |||
26 | install( | 33 | install( |
27 | TARGETS swaylock | 34 | TARGETS swaylock |
28 | RUNTIME | 35 | RUNTIME |
diff --git a/swaylock/main.c b/swaylock/main.c index 82b88731..eccb902e 100644 --- a/swaylock/main.c +++ b/swaylock/main.c | |||
@@ -113,6 +113,7 @@ int main(int argc, char **argv) { | |||
113 | 113 | ||
114 | registry->input->notify = notify_key; | 114 | registry->input->notify = notify_key; |
115 | 115 | ||
116 | #ifdef WITH_GDK_PIXBUF | ||
116 | GError *err = NULL; | 117 | GError *err = NULL; |
117 | GdkPixbuf *pixbuf = gdk_pixbuf_new_from_file(argv[1], &err); // TODO: Parse i3lock arguments | 118 | GdkPixbuf *pixbuf = gdk_pixbuf_new_from_file(argv[1], &err); // TODO: Parse i3lock arguments |
118 | if (!pixbuf) { | 119 | if (!pixbuf) { |
@@ -120,6 +121,9 @@ int main(int argc, char **argv) { | |||
120 | } | 121 | } |
121 | cairo_surface_t *image = gdk_cairo_image_surface_create_from_pixbuf(pixbuf); | 122 | cairo_surface_t *image = gdk_cairo_image_surface_create_from_pixbuf(pixbuf); |
122 | g_object_unref(pixbuf); | 123 | g_object_unref(pixbuf); |
124 | #else | ||
125 | cairo_surface_t *image = cairo_image_surface_create_from_png(argv[1]); | ||
126 | #endif //WITH_GDK_PIXBUF | ||
123 | if (!image) { | 127 | if (!image) { |
124 | sway_abort("Failed to read background image."); | 128 | sway_abort("Failed to read background image."); |
125 | } | 129 | } |
diff --git a/wayland/CMakeLists.txt b/wayland/CMakeLists.txt index 6519cd7d..282ea1aa 100644 --- a/wayland/CMakeLists.txt +++ b/wayland/CMakeLists.txt | |||
@@ -1,7 +1,6 @@ | |||
1 | include_directories( | 1 | include_directories( |
2 | ${PROTOCOLS_INCLUDE_DIRS} | 2 | ${PROTOCOLS_INCLUDE_DIRS} |
3 | ${PANGO_INCLUDE_DIRS} | 3 | ${PANGO_INCLUDE_DIRS} |
4 | ${GDK_PIXBUF_INCLUDE_DIRS} | ||
5 | ${XKBCOMMON_INCLUDE_DIRS} | 4 | ${XKBCOMMON_INCLUDE_DIRS} |
6 | ) | 5 | ) |
7 | 6 | ||
@@ -17,6 +16,14 @@ target_link_libraries(sway-wayland | |||
17 | sway-common | 16 | sway-common |
18 | sway-protocols | 17 | sway-protocols |
19 | ${PANGO_LIBRARIES} | 18 | ${PANGO_LIBRARIES} |
20 | ${GDK_PIXBUF_LIBRARIES} | ||
21 | ${XKBCOMMON_LIBRARIES} | 19 | ${XKBCOMMON_LIBRARIES} |
22 | ) | 20 | ) |
21 | |||
22 | if (WITH_GDK_PIXBUF) | ||
23 | include_directories( | ||
24 | ${GDK_PIXBUF_INCLUDE_DIRS} | ||
25 | ) | ||
26 | target_link_libraries(sway-wayland | ||
27 | ${GDK_PIXBUF_LIBRARIES} | ||
28 | ) | ||
29 | endif() | ||
diff --git a/wayland/cairo.c b/wayland/cairo.c index 10a15f40..7462b10a 100644 --- a/wayland/cairo.c +++ b/wayland/cairo.c | |||
@@ -1,7 +1,9 @@ | |||
1 | #include <gdk-pixbuf/gdk-pixbuf.h> | ||
2 | #include <cairo/cairo.h> | 1 | #include <cairo/cairo.h> |
3 | #include "client/cairo.h" | 2 | #include "client/cairo.h" |
4 | 3 | ||
4 | #ifdef WITH_GDK_PIXBUF | ||
5 | #include <gdk-pixbuf/gdk-pixbuf.h> | ||
6 | |||
5 | #ifndef GDK_PIXBUF_CHECK_VERSION | 7 | #ifndef GDK_PIXBUF_CHECK_VERSION |
6 | #define GDK_PIXBUF_CHECK_VERSION(major,minor,micro) \ | 8 | #define GDK_PIXBUF_CHECK_VERSION(major,minor,micro) \ |
7 | (GDK_PIXBUF_MAJOR > (major) || \ | 9 | (GDK_PIXBUF_MAJOR > (major) || \ |
@@ -103,3 +105,4 @@ cairo_surface_t* gdk_cairo_image_surface_create_from_pixbuf(const GdkPixbuf *gdk | |||
103 | cairo_surface_mark_dirty(cs); | 105 | cairo_surface_mark_dirty(cs); |
104 | return cs; | 106 | return cs; |
105 | } | 107 | } |
108 | #endif //WITH_GDK_PIXBUF | ||