Start fleshing out wayland client implementation

This introduces a basic shared framework for making wayland clients
within sway itself.
This commit is contained in:
Drew DeVault 2015-11-12 19:04:01 -05:00
parent 5c4e98aa4e
commit bfcabe48ef
8 changed files with 370 additions and 92 deletions

View file

@ -9,14 +9,20 @@ WAYLAND_ADD_PROTOCOL_CLIENT(proto-xdg-shell "xdg-shell.xml" xdg-shell)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "../bin/")
include_directories(
${CMAKE_CURRENT_SOURCE_DIR}/include
${CMAKE_CURRENT_SOURCE_DIR}/../include
${WAYLAND_CLIENT_INCLUDE_DIR}
${CAIRO_INCLUDE_DIRS}
${PANGO_INCLUDE_DIRS}
)
FILE(GLOB sources ${PROJECT_SOURCE_DIR}/*.c)
FILE(GLOB wl_sources ${PROJECT_SOURCE_DIR}/../wayland/*.c)
FILE(GLOB common ${PROJECT_SOURCE_DIR}/../common/*.c)
add_executable(swaybg
main.c
${sources}
${wl_sources}
${common}
)
TARGET_LINK_LIBRARIES(swaybg ${WAYLAND_CLIENT_LIBRARIES} ${CAIRO_LIBRARIES} ${PANGO_LIBRARIES})

View file

@ -1,6 +1,27 @@
#include <stdio.h>
#include <stdlib.h>
#include <wayland-client.h>
#include "client.h"
#include "log.h"
struct client_state *state;
void sway_terminate(void) {
client_teardown(state);
exit(1);
}
int main(int argc, char **argv) {
printf("Hello world");
init_log(L_INFO);
state = client_setup();
do {
if (!client_prerender(state)) continue;
cairo_set_source_rgb(state->cairo, 255, 0, 0);
cairo_rectangle(state->cairo, 0, 0, 100, 100);
cairo_fill(state->cairo);
} while (client_render(state));
client_teardown(state);
return 0;
}