mirror of
https://github.com/swaywm/sway.git
synced 2024-12-30 17:06:40 +01:00
Merge pull request #377 from progandy/optional-pixbuf
make gdk-pixbuf dependency really optional
This commit is contained in:
commit
dfc23086fd
9 changed files with 62 additions and 13 deletions
|
@ -29,6 +29,7 @@ IF(NOT GDK_PIXBUF_FOUND AND NOT PKG_CONFIG_FOUND)
|
||||||
# Report results
|
# Report results
|
||||||
IF(GDK_PIXBUF_LIBRARIES AND GDK_PIXBUF_INCLUDE_DIRS)
|
IF(GDK_PIXBUF_LIBRARIES AND GDK_PIXBUF_INCLUDE_DIRS)
|
||||||
SET(GDK_PIXBUF_FOUND 1)
|
SET(GDK_PIXBUF_FOUND 1)
|
||||||
|
SET(GdkPixbuf_FOUND 1)
|
||||||
IF(NOT GdkPixbuf_FIND_QUIETLY)
|
IF(NOT GdkPixbuf_FIND_QUIETLY)
|
||||||
MESSAGE(STATUS "Found GdkPixbuf: ${GDK_PIXBUF_LIBRARIES}")
|
MESSAGE(STATUS "Found GdkPixbuf: ${GDK_PIXBUF_LIBRARIES}")
|
||||||
ENDIF(NOT GdkPixbuf_FIND_QUIETLY)
|
ENDIF(NOT GdkPixbuf_FIND_QUIETLY)
|
||||||
|
@ -41,6 +42,8 @@ IF(NOT GDK_PIXBUF_FOUND AND NOT PKG_CONFIG_FOUND)
|
||||||
ENDIF(NOT GdkPixbuf_FIND_QUIETLY)
|
ENDIF(NOT GdkPixbuf_FIND_QUIETLY)
|
||||||
ENDIF(GdkPixbuf_FIND_REQUIRED)
|
ENDIF(GdkPixbuf_FIND_REQUIRED)
|
||||||
ENDIF(GDK_PIXBUF_LIBRARIES AND GDK_PIXBUF_INCLUDE_DIRS)
|
ENDIF(GDK_PIXBUF_LIBRARIES AND GDK_PIXBUF_INCLUDE_DIRS)
|
||||||
|
ELSE(NOT GDK_PIXBUF_FOUND AND NOT PKG_CONFIG_FOUND)
|
||||||
|
SET(GdkPixbuf_FOUND 1)
|
||||||
ENDIF(NOT GDK_PIXBUF_FOUND AND NOT PKG_CONFIG_FOUND)
|
ENDIF(NOT GDK_PIXBUF_FOUND AND NOT PKG_CONFIG_FOUND)
|
||||||
|
|
||||||
# Hide advanced variables from CMake GUIs
|
# Hide advanced variables from CMake GUIs
|
||||||
|
|
|
@ -46,6 +46,7 @@ option(enable-swaybg "Enables the wallpaper utility" YES)
|
||||||
option(enable-swaybar "Enables the swaybar utility" YES)
|
option(enable-swaybar "Enables the swaybar utility" YES)
|
||||||
option(enable-swaygrab "Enables the swaygrab utility" YES)
|
option(enable-swaygrab "Enables the swaygrab utility" YES)
|
||||||
option(enable-swaymsg "Enables the swaymsg utility" YES)
|
option(enable-swaymsg "Enables the swaymsg utility" YES)
|
||||||
|
option(enable-gdk-pixbuf "Use Pixbuf to support more image formats" YES)
|
||||||
|
|
||||||
find_package(JsonC REQUIRED)
|
find_package(JsonC REQUIRED)
|
||||||
find_package(PCRE REQUIRED)
|
find_package(PCRE REQUIRED)
|
||||||
|
@ -60,6 +61,17 @@ find_package(PAM)
|
||||||
include(FeatureSummary)
|
include(FeatureSummary)
|
||||||
include(Manpage)
|
include(Manpage)
|
||||||
|
|
||||||
|
if (enable-gdk-pixbuf)
|
||||||
|
if (GDK_PIXBUF_FOUND)
|
||||||
|
set(WITH_GDK_PIXBUF YES)
|
||||||
|
add_definitions(-DWITH_GDK_PIXBUF)
|
||||||
|
else()
|
||||||
|
message(WARNING "gdk-pixbuf required but not found, only png images supported.")
|
||||||
|
endif()
|
||||||
|
else()
|
||||||
|
message(STATUS "Building without gdk-pixbuf, only png images supported.")
|
||||||
|
endif()
|
||||||
|
|
||||||
include_directories(include)
|
include_directories(include)
|
||||||
|
|
||||||
add_subdirectory(protocols)
|
add_subdirectory(protocols)
|
||||||
|
@ -68,10 +80,10 @@ add_subdirectory(wayland)
|
||||||
|
|
||||||
add_subdirectory(sway)
|
add_subdirectory(sway)
|
||||||
if(enable-swaybg)
|
if(enable-swaybg)
|
||||||
if(CAIRO_FOUND AND PANGO_FOUND AND GDK_PIXBUF_FOUND)
|
if(CAIRO_FOUND AND PANGO_FOUND)
|
||||||
add_subdirectory(swaybg)
|
add_subdirectory(swaybg)
|
||||||
else()
|
else()
|
||||||
message(WARNING "Not building swaybg - cairo, pango, and gdk-pixbuf are required.")
|
message(WARNING "Not building swaybg - cairo, and pango are required.")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
if(enable-swaymsg)
|
if(enable-swaymsg)
|
||||||
|
@ -81,17 +93,17 @@ if(enable-swaygrab)
|
||||||
add_subdirectory(swaygrab)
|
add_subdirectory(swaygrab)
|
||||||
endif()
|
endif()
|
||||||
if(enable-swaybar)
|
if(enable-swaybar)
|
||||||
if(CAIRO_FOUND AND PANGO_FOUND AND GDK_PIXBUF_FOUND)
|
if(CAIRO_FOUND AND PANGO_FOUND)
|
||||||
add_subdirectory(swaybar)
|
add_subdirectory(swaybar)
|
||||||
else()
|
else()
|
||||||
message(WARNING "Not building swaybar - cairo, pango, and gdk-pixbuf are required.")
|
message(WARNING "Not building swaybar - cairo, and pango are required.")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
if(enable-swaylock)
|
if(enable-swaylock)
|
||||||
if(CAIRO_FOUND AND PANGO_FOUND AND GDK_PIXBUF_FOUND AND PAM_FOUND)
|
if(CAIRO_FOUND AND PANGO_FOUND AND PAM_FOUND)
|
||||||
add_subdirectory(swaylock)
|
add_subdirectory(swaylock)
|
||||||
else()
|
else()
|
||||||
message(WARNING "Not building swaylock - cairo, pango, gdk-pixbuf, and PAM are required.")
|
message(WARNING "Not building swaylock - cairo, pango, and PAM are required.")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,10 @@
|
||||||
#ifndef _SWAY_CAIRO_H
|
#ifndef _SWAY_CAIRO_H
|
||||||
#define _SWAY_CAIRO_H
|
#define _SWAY_CAIRO_H
|
||||||
|
|
||||||
|
#ifdef WITH_GDK_PIXBUF
|
||||||
#include <gdk-pixbuf/gdk-pixbuf.h>
|
#include <gdk-pixbuf/gdk-pixbuf.h>
|
||||||
|
|
||||||
cairo_surface_t* gdk_cairo_image_surface_create_from_pixbuf(const GdkPixbuf *gdkbuf);
|
cairo_surface_t* gdk_cairo_image_surface_create_from_pixbuf(const GdkPixbuf *gdkbuf);
|
||||||
|
#endif //WITH_GDK_PIXBUF
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -3,7 +3,6 @@ include_directories(
|
||||||
${WAYLAND_CLIENT_INCLUDE_DIR}
|
${WAYLAND_CLIENT_INCLUDE_DIR}
|
||||||
${CAIRO_INCLUDE_DIRS}
|
${CAIRO_INCLUDE_DIRS}
|
||||||
${PANGO_INCLUDE_DIRS}
|
${PANGO_INCLUDE_DIRS}
|
||||||
${GDK_PIXBUF_INCLUDE_DIRS}
|
|
||||||
)
|
)
|
||||||
|
|
||||||
add_executable(swaybg
|
add_executable(swaybg
|
||||||
|
@ -17,10 +16,18 @@ target_link_libraries(swaybg
|
||||||
${WAYLAND_CURSOR_LIBRARIES}
|
${WAYLAND_CURSOR_LIBRARIES}
|
||||||
${CAIRO_LIBRARIES}
|
${CAIRO_LIBRARIES}
|
||||||
${PANGO_LIBRARIES}
|
${PANGO_LIBRARIES}
|
||||||
${GDK_PIXBUF_LIBRARIES}
|
|
||||||
m
|
m
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if (WITH_GDK_PIXBUF)
|
||||||
|
include_directories(
|
||||||
|
${GDK_PIXBUF_INCLUDE_DIRS}
|
||||||
|
)
|
||||||
|
target_link_libraries(swaybg
|
||||||
|
${GDK_PIXBUF_LIBRARIES}
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
install(
|
install(
|
||||||
TARGETS swaybg
|
TARGETS swaybg
|
||||||
RUNTIME
|
RUNTIME
|
||||||
|
|
|
@ -56,6 +56,7 @@ int main(int argc, const char **argv) {
|
||||||
desktop_shell_set_background(registry->desktop_shell, output->output, window->surface);
|
desktop_shell_set_background(registry->desktop_shell, output->output, window->surface);
|
||||||
list_add(surfaces, window);
|
list_add(surfaces, window);
|
||||||
|
|
||||||
|
#ifdef WITH_GDK_PIXBUF
|
||||||
GError *err = NULL;
|
GError *err = NULL;
|
||||||
GdkPixbuf *pixbuf = gdk_pixbuf_new_from_file(argv[2], &err);
|
GdkPixbuf *pixbuf = gdk_pixbuf_new_from_file(argv[2], &err);
|
||||||
if (!pixbuf) {
|
if (!pixbuf) {
|
||||||
|
@ -63,6 +64,9 @@ int main(int argc, const char **argv) {
|
||||||
}
|
}
|
||||||
cairo_surface_t *image = gdk_cairo_image_surface_create_from_pixbuf(pixbuf);
|
cairo_surface_t *image = gdk_cairo_image_surface_create_from_pixbuf(pixbuf);
|
||||||
g_object_unref(pixbuf);
|
g_object_unref(pixbuf);
|
||||||
|
#else
|
||||||
|
cairo_surface_t *image = cairo_image_surface_create_from_png(argv[2]);
|
||||||
|
#endif //WITH_GDK_PIXBUF
|
||||||
if (!image) {
|
if (!image) {
|
||||||
sway_abort("Failed to read background image.");
|
sway_abort("Failed to read background image.");
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,6 @@ include_directories(
|
||||||
${PROTOCOLS_INCLUDE_DIRS}
|
${PROTOCOLS_INCLUDE_DIRS}
|
||||||
${WAYLAND_CLIENT_INCLUDE_DIR}
|
${WAYLAND_CLIENT_INCLUDE_DIR}
|
||||||
${CAIRO_INCLUDE_DIRS}
|
${CAIRO_INCLUDE_DIRS}
|
||||||
${GDK_PIXBUF_INCLUDE_DIRS}
|
|
||||||
${PANGO_INCLUDE_DIRS}
|
${PANGO_INCLUDE_DIRS}
|
||||||
${PAM_INCLUDE_DIRS}
|
${PAM_INCLUDE_DIRS}
|
||||||
)
|
)
|
||||||
|
@ -17,12 +16,20 @@ target_link_libraries(swaylock
|
||||||
${WAYLAND_CLIENT_LIBRARIES}
|
${WAYLAND_CLIENT_LIBRARIES}
|
||||||
${WAYLAND_CURSOR_LIBRARIES}
|
${WAYLAND_CURSOR_LIBRARIES}
|
||||||
${CAIRO_LIBRARIES}
|
${CAIRO_LIBRARIES}
|
||||||
${GDK_PIXBUF_LIBRARIES}
|
|
||||||
${PANGO_LIBRARIES}
|
${PANGO_LIBRARIES}
|
||||||
${PAM_LIBRARIES}
|
${PAM_LIBRARIES}
|
||||||
m
|
m
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if (WITH_GDK_PIXBUF)
|
||||||
|
include_directories(
|
||||||
|
${GDK_PIXBUF_INCLUDE_DIRS}
|
||||||
|
)
|
||||||
|
target_link_libraries(swaylock
|
||||||
|
${GDK_PIXBUF_LIBRARIES}
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
install(
|
install(
|
||||||
TARGETS swaylock
|
TARGETS swaylock
|
||||||
RUNTIME
|
RUNTIME
|
||||||
|
|
|
@ -113,6 +113,7 @@ int main(int argc, char **argv) {
|
||||||
|
|
||||||
registry->input->notify = notify_key;
|
registry->input->notify = notify_key;
|
||||||
|
|
||||||
|
#ifdef WITH_GDK_PIXBUF
|
||||||
GError *err = NULL;
|
GError *err = NULL;
|
||||||
GdkPixbuf *pixbuf = gdk_pixbuf_new_from_file(argv[1], &err); // TODO: Parse i3lock arguments
|
GdkPixbuf *pixbuf = gdk_pixbuf_new_from_file(argv[1], &err); // TODO: Parse i3lock arguments
|
||||||
if (!pixbuf) {
|
if (!pixbuf) {
|
||||||
|
@ -120,6 +121,9 @@ int main(int argc, char **argv) {
|
||||||
}
|
}
|
||||||
cairo_surface_t *image = gdk_cairo_image_surface_create_from_pixbuf(pixbuf);
|
cairo_surface_t *image = gdk_cairo_image_surface_create_from_pixbuf(pixbuf);
|
||||||
g_object_unref(pixbuf);
|
g_object_unref(pixbuf);
|
||||||
|
#else
|
||||||
|
cairo_surface_t *image = cairo_image_surface_create_from_png(argv[1]);
|
||||||
|
#endif //WITH_GDK_PIXBUF
|
||||||
if (!image) {
|
if (!image) {
|
||||||
sway_abort("Failed to read background image.");
|
sway_abort("Failed to read background image.");
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
include_directories(
|
include_directories(
|
||||||
${PROTOCOLS_INCLUDE_DIRS}
|
${PROTOCOLS_INCLUDE_DIRS}
|
||||||
${PANGO_INCLUDE_DIRS}
|
${PANGO_INCLUDE_DIRS}
|
||||||
${GDK_PIXBUF_INCLUDE_DIRS}
|
|
||||||
${XKBCOMMON_INCLUDE_DIRS}
|
${XKBCOMMON_INCLUDE_DIRS}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -17,6 +16,14 @@ target_link_libraries(sway-wayland
|
||||||
sway-common
|
sway-common
|
||||||
sway-protocols
|
sway-protocols
|
||||||
${PANGO_LIBRARIES}
|
${PANGO_LIBRARIES}
|
||||||
${GDK_PIXBUF_LIBRARIES}
|
|
||||||
${XKBCOMMON_LIBRARIES}
|
${XKBCOMMON_LIBRARIES}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if (WITH_GDK_PIXBUF)
|
||||||
|
include_directories(
|
||||||
|
${GDK_PIXBUF_INCLUDE_DIRS}
|
||||||
|
)
|
||||||
|
target_link_libraries(sway-wayland
|
||||||
|
${GDK_PIXBUF_LIBRARIES}
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
#include <gdk-pixbuf/gdk-pixbuf.h>
|
|
||||||
#include <cairo/cairo.h>
|
#include <cairo/cairo.h>
|
||||||
#include "client/cairo.h"
|
#include "client/cairo.h"
|
||||||
|
|
||||||
|
#ifdef WITH_GDK_PIXBUF
|
||||||
|
#include <gdk-pixbuf/gdk-pixbuf.h>
|
||||||
|
|
||||||
#ifndef GDK_PIXBUF_CHECK_VERSION
|
#ifndef GDK_PIXBUF_CHECK_VERSION
|
||||||
#define GDK_PIXBUF_CHECK_VERSION(major,minor,micro) \
|
#define GDK_PIXBUF_CHECK_VERSION(major,minor,micro) \
|
||||||
(GDK_PIXBUF_MAJOR > (major) || \
|
(GDK_PIXBUF_MAJOR > (major) || \
|
||||||
|
@ -103,3 +105,4 @@ cairo_surface_t* gdk_cairo_image_surface_create_from_pixbuf(const GdkPixbuf *gdk
|
||||||
cairo_surface_mark_dirty(cs);
|
cairo_surface_mark_dirty(cs);
|
||||||
return cs;
|
return cs;
|
||||||
}
|
}
|
||||||
|
#endif //WITH_GDK_PIXBUF
|
||||||
|
|
Loading…
Reference in a new issue