weston/clients/Makefile.am
Pekka Paalanen 7ff7a80007 clients: add subsurfaces demo
Add a demo program with:
- a main surface (green)
- a Cairo-image sub-surface (red)
- a raw GLESv2 widget (triangle)

Sub-surface input region is set empty to avoid problems in toytoolkit.

If Cairo links to libGL, then we will end up with also libGLESv2 linked
to subsurfaces program, and both libs getting really used, which leads
to disaster.

Do not build subsurfaces demo, if Cairo links to libGL and cairo-egl is
usable.

The GL rendering loop is not tied to the toytoolkit or the widget, but
runs directly from its own frame callback. Therefore it runs
independent of the rest of the application. This also relies on one of
two things:
- eglSwapInterval(0) is implemented, and therefore eglSwapBuffers never
  blocks indefinitely, or
- toytoolkit has a workaround, that guarantees that eglSwapBuffers will
  return soon, when we force a repaint on resize.
Otherwise the demo will deadlock.

The code is separated into three sections:

1. The library component, using only EGL, GLESv2, and libwayland-client
   APIs, and not aware of any toolkit details of the parent application.
   This runs independently until the parent application tells otherwise.

2. The glue code: a toytoolkit application widget, who has its own
   rendering machinery.

3. The application written in toytoolkit.

This patch also adds new toytoolkit interfaces:
- widget_get_wl_surface()
- widget_get_last_time()
- widget_input_region_add()

Toytoolkit applications have not had a possibility to change the input
region. The frame widget (decorations) set the input region on its own
when used, otherwise the default input region of everything has been
used. If a window does not have a frame widget, it can now use
widget_input_region_add() to set a custom input region.

These are not window methods, because a widget may lie on a different
wl_surface (sub-surface) than the window.

Changes in v3:
- replace set_commit_mode with set_sync and set_desync

Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
2013-05-10 14:35:53 -04:00

237 lines
5.4 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 \
eventdemo \
clickdot \
transformed \
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
eventdemo_SOURCES = eventdemo.c
eventdemo_LDADD = libtoytoolkit.la
clickdot_SOURCES = clickdot.c
clickdot_LDADD = libtoytoolkit.la
transformed_SOURCES = transformed.c
transformed_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