1cc5ac34b5
A wayland compositor doesn't provide a mechanism for buffer sharing between clients. Under X, one client can render to a Pixmap and another can use it as a source in a subsequent drawing operations. Wayland doesn't have a mechanims to share Pixmaps or textures between clients like that, but it's possible for one client to act as a nested compositor to another client. This less work than it sounds, since the nested compositor won't have to provide input devices or even any kind of shell extension. The nested compositor and its client can be very tightly coupled and have very specific expectations of what the other process should provide. In this example, nested.c is a toytoolkit application that uses cairo-gl for rendering and forks and execs nested-client.c. As it execs the client, it passes it one end of a socketpair that will be the clients connection to the nested compositor. The nested compositor doesn't even create a listening socket. The client is a minimal GLES2 application, which just renders a spinning triangle in its frame callback.
249 lines
5.7 KiB
Makefile
249 lines
5.7 KiB
Makefile
bin_PROGRAMS = \
|
|
weston-info \
|
|
$(terminal)
|
|
|
|
noinst_PROGRAMS = \
|
|
$(clients_programs) \
|
|
$(pango_programs) \
|
|
$(poppler_programs) \
|
|
$(simple_clients_programs) \
|
|
$(simple_egl_clients_programs)
|
|
|
|
libexec_PROGRAMS = \
|
|
$(desktop_shell) \
|
|
$(tablet_shell) \
|
|
$(screenshooter) \
|
|
$(screensaver) \
|
|
$(keyboard) \
|
|
weston-simple-im
|
|
|
|
AM_CFLAGS = $(GCC_CFLAGS)
|
|
AM_CPPFLAGS = \
|
|
-DDATADIR='"$(datadir)"' \
|
|
-DBINDIR='"$(bindir)"' \
|
|
$(CLIENT_CFLAGS) $(CAIRO_EGL_CFLAGS)
|
|
|
|
if BUILD_SIMPLE_CLIENTS
|
|
simple_clients_programs = \
|
|
simple-shm \
|
|
simple-touch
|
|
|
|
simple_shm_SOURCES = simple-shm.c \
|
|
../shared/os-compatibility.c \
|
|
../shared/os-compatibility.h
|
|
simple_shm_CPPFLAGS = $(SIMPLE_CLIENT_CFLAGS)
|
|
simple_shm_LDADD = $(SIMPLE_CLIENT_LIBS)
|
|
|
|
simple_touch_SOURCES = simple-touch.c \
|
|
../shared/os-compatibility.c \
|
|
../shared/os-compatibility.h
|
|
simple_touch_CPPFLAGS = $(SIMPLE_CLIENT_CFLAGS)
|
|
simple_touch_LDADD = $(SIMPLE_CLIENT_LIBS)
|
|
endif
|
|
|
|
if BUILD_SIMPLE_EGL_CLIENTS
|
|
simple_egl_clients_programs = \
|
|
simple-egl
|
|
|
|
simple_egl_SOURCES = simple-egl.c
|
|
simple_egl_CPPFLAGS = $(SIMPLE_EGL_CLIENT_CFLAGS)
|
|
simple_egl_LDADD = $(SIMPLE_EGL_CLIENT_LIBS) -lm
|
|
endif
|
|
|
|
if BUILD_CLIENTS
|
|
terminal = weston-terminal
|
|
|
|
clients_programs = \
|
|
flower \
|
|
image \
|
|
cliptest \
|
|
dnd \
|
|
smoke \
|
|
resizor \
|
|
nested \
|
|
nested-client \
|
|
eventdemo \
|
|
clickdot \
|
|
transformed \
|
|
fullscreen \
|
|
calibrator \
|
|
$(subsurfaces) \
|
|
$(full_gl_client_programs)
|
|
|
|
desktop_shell = weston-desktop-shell
|
|
|
|
if ENABLE_TABLET_SHELL
|
|
tablet_shell = weston-tablet-shell
|
|
endif
|
|
|
|
screenshooter = weston-screenshooter
|
|
|
|
noinst_LTLIBRARIES = libtoytoolkit.la
|
|
|
|
libtoytoolkit_la_SOURCES = \
|
|
window.c \
|
|
window.h \
|
|
text-cursor-position-protocol.c \
|
|
text-cursor-position-client-protocol.h \
|
|
subsurface-protocol.c \
|
|
subsurface-client-protocol.h \
|
|
workspaces-protocol.c \
|
|
workspaces-client-protocol.h
|
|
|
|
libtoytoolkit_la_LIBADD = \
|
|
$(CLIENT_LIBS) \
|
|
$(CAIRO_EGL_LIBS) \
|
|
../shared/libshared-cairo.la -lrt -lm
|
|
|
|
flower_SOURCES = flower.c
|
|
flower_LDADD = libtoytoolkit.la
|
|
|
|
weston_screenshooter_SOURCES = \
|
|
screenshot.c \
|
|
screenshooter-protocol.c \
|
|
screenshooter-client-protocol.h
|
|
weston_screenshooter_LDADD = libtoytoolkit.la
|
|
|
|
weston_terminal_SOURCES = terminal.c
|
|
weston_terminal_LDADD = libtoytoolkit.la -lutil
|
|
|
|
image_SOURCES = image.c
|
|
image_LDADD = libtoytoolkit.la
|
|
|
|
cliptest_SOURCES = cliptest.c
|
|
cliptest_CPPFLAGS = $(AM_CPPFLAGS) $(PIXMAN_CFLAGS)
|
|
cliptest_LDADD = libtoytoolkit.la $(PIXMAN_LIBS)
|
|
|
|
dnd_SOURCES = dnd.c
|
|
dnd_LDADD = libtoytoolkit.la
|
|
|
|
smoke_SOURCES = smoke.c
|
|
smoke_LDADD = libtoytoolkit.la
|
|
|
|
resizor_SOURCES = resizor.c
|
|
resizor_LDADD = libtoytoolkit.la
|
|
|
|
nested_SOURCES = nested.c
|
|
nested_LDADD = libtoytoolkit.la
|
|
|
|
nested_client_SOURCES = nested-client.c
|
|
nested_client_LDADD = $(SIMPLE_EGL_CLIENT_LIBS) -lm
|
|
|
|
eventdemo_SOURCES = eventdemo.c
|
|
eventdemo_LDADD = libtoytoolkit.la
|
|
|
|
clickdot_SOURCES = clickdot.c
|
|
clickdot_LDADD = libtoytoolkit.la
|
|
|
|
transformed_SOURCES = transformed.c
|
|
transformed_LDADD = libtoytoolkit.la
|
|
|
|
fullscreen_SOURCES = fullscreen.c
|
|
fullscreen_LDADD = libtoytoolkit.la
|
|
|
|
calibrator_SOURCES = calibrator.c ../shared/matrix.c ../shared/matrix.h
|
|
calibrator_LDADD = libtoytoolkit.la
|
|
|
|
if BUILD_SUBSURFACES_CLIENT
|
|
subsurfaces = subsurfaces
|
|
subsurfaces_SOURCES = subsurfaces.c
|
|
subsurfaces_CPPFLAGS = $(AM_CPPFLAGS) $(SIMPLE_EGL_CLIENT_CFLAGS)
|
|
subsurfaces_LDADD = libtoytoolkit.la $(SIMPLE_EGL_CLIENT_LIBS) -lm
|
|
endif
|
|
|
|
if HAVE_PANGO
|
|
pango_programs = editor
|
|
editor_SOURCES = \
|
|
editor.c \
|
|
text-protocol.c \
|
|
text-client-protocol.h
|
|
editor_LDADD = libtoytoolkit.la $(PANGO_LIBS)
|
|
editor_CPPFLAGS = $(AM_CPPFLAGS) $(PANGO_CFLAGS)
|
|
endif
|
|
|
|
keyboard = weston-keyboard
|
|
weston_keyboard_SOURCES = \
|
|
keyboard.c \
|
|
desktop-shell-client-protocol.h \
|
|
desktop-shell-protocol.c \
|
|
input-method-protocol.c \
|
|
input-method-client-protocol.h
|
|
weston_keyboard_LDADD = libtoytoolkit.la
|
|
|
|
weston_simple_im_SOURCES = \
|
|
weston-simple-im.c \
|
|
input-method-protocol.c \
|
|
input-method-client-protocol.h
|
|
weston_simple_im_LDADD = $(CLIENT_LIBS)
|
|
|
|
weston_info_SOURCES = \
|
|
weston-info.c \
|
|
../shared/os-compatibility.c \
|
|
../shared/os-compatibility.h
|
|
weston_info_LDADD = $(WESTON_INFO_LIBS)
|
|
|
|
weston_desktop_shell_SOURCES = \
|
|
desktop-shell.c \
|
|
desktop-shell-client-protocol.h \
|
|
desktop-shell-protocol.c
|
|
weston_desktop_shell_LDADD = libtoytoolkit.la
|
|
|
|
weston_tablet_shell_SOURCES = \
|
|
tablet-shell.c \
|
|
tablet-shell-client-protocol.h \
|
|
tablet-shell-protocol.c
|
|
weston_tablet_shell_LDADD = libtoytoolkit.la
|
|
|
|
BUILT_SOURCES = \
|
|
screenshooter-client-protocol.h \
|
|
screenshooter-protocol.c \
|
|
text-cursor-position-client-protocol.h \
|
|
text-cursor-position-protocol.c \
|
|
text-protocol.c \
|
|
text-client-protocol.h \
|
|
input-method-protocol.c \
|
|
input-method-client-protocol.h \
|
|
desktop-shell-client-protocol.h \
|
|
desktop-shell-protocol.c \
|
|
tablet-shell-client-protocol.h \
|
|
tablet-shell-protocol.c \
|
|
subsurface-client-protocol.h \
|
|
subsurface-protocol.c \
|
|
workspaces-client-protocol.h \
|
|
workspaces-protocol.c
|
|
|
|
CLEANFILES = $(BUILT_SOURCES)
|
|
endif
|
|
|
|
if BUILD_FULL_GL_CLIENTS
|
|
full_gl_client_programs = gears
|
|
|
|
gears_SOURCES = gears.c
|
|
gears_LDADD = libtoytoolkit.la
|
|
|
|
if HAVE_GLU
|
|
screensaver = weston-screensaver
|
|
weston_screensaver_SOURCES = \
|
|
wscreensaver.c \
|
|
wscreensaver.h \
|
|
desktop-shell-client-protocol.h \
|
|
desktop-shell-protocol.c \
|
|
wscreensaver-glue.c \
|
|
wscreensaver-glue.h \
|
|
glmatrix.c \
|
|
matrix3.xpm
|
|
weston_screensaver_LDADD = libtoytoolkit.la $(GLU_LIBS)
|
|
weston_screensaver_CFLAGS = $(GLU_CFLAGS)
|
|
endif
|
|
|
|
endif
|
|
|
|
@wayland_scanner_rules@
|
|
|
|
if HAVE_POPPLER
|
|
poppler_programs = view
|
|
view_SOURCES = view.c
|
|
view_LDADD = libtoytoolkit.la $(POPPLER_LIBS)
|
|
view_CPPFLAGS = $(AM_CPPFLAGS) $(POPPLER_CFLAGS)
|
|
endif
|