libmks/lib/meson.build
Christian Hergert 07158dfa07 lib: add a framebuffer paintable
This is intended to be the software fallback path where we have to take
Update() and Scanout() method invocations from the Qemu instance. It
implements paintable and tries to reuse a backing texture until a threshold
has been met at which point it does a full redraw.

The backing texture is reused between snapshots to increase the chance that
we may skip a followup VRAM upload to the GPU. The damage rectangles will
be re-uploaded each frame. There is some opportunity to optimize that
last part by keeping them around and adding a secondary damage region.

Of course, we would still want things to go the MksDmabufTexture path
when possible.
2023-02-10 12:47:35 -08:00

107 lines
2.8 KiB
Meson

libmks_sources = [
'mks-init.c',
'mks-device.c',
'mks-keyboard.c',
'mks-mouse.c',
'mks-paintable.c',
'mks-screen.c',
'mks-screen-attributes.c',
'mks-session.c',
]
libmks_headers = [
'libmks.h',
'mks-device.h',
'mks-init.h',
'mks-keyboard.h',
'mks-mouse.h',
'mks-paintable.h',
'mks-screen.h',
'mks-screen-attributes.h',
'mks-session.h',
'mks-types.h',
]
libmks_private_sources = [
'mks-framebuffer.c',
'mks-paintable-listener.c',
'mks-read-only-list-model.c',
gnome.gdbus_codegen('mks-qemu',
autocleanup: 'all',
interface_prefix: 'org.qemu.Display1.',
namespace: 'MksQemu',
sources: 'dbus-display1.xml',
object_manager: true,
)
]
libmks_enums = gnome.mkenums_simple('mks-enums',
sources: libmks_headers,
install_header: true,
install_dir: join_paths(get_option('libdir'), 'libmks-@0@'.format(api_version)),
identifier_prefix: 'Mks',
symbol_prefix: 'mks',
)
# Setup mks-version.h for version checking
version_split = meson.project_version().split('.')
version_conf = configuration_data()
version_conf.set('VERSION', meson.project_version())
version_conf.set('MAJOR_VERSION', version_split[0])
version_conf.set('MINOR_VERSION', version_split[1])
version_conf.set('MICRO_VERSION', version_split[2])
mks_version_h = configure_file(
input: 'mks-version.h.in',
output: 'mks-version.h',
configuration: version_conf,
install: true,
install_dir: join_paths(get_option('includedir'), 'libmks-@0@'.format(api_version))
)
libmks_generated_sources = [
libmks_enums,
mks_version_h,
]
libmks_deps = [
libgio_dep,
libgiounix_dep,
libgtk_dep,
]
libmks = shared_library('mks-' + api_version,
libmks_sources + libmks_generated_sources + libmks_private_sources,
dependencies: libmks_deps,
install: true,
)
libmks_dep = declare_dependency(
sources: libmks_generated_sources,
link_with: libmks,
dependencies: libmks_deps,
include_directories: include_directories('.'),
)
install_headers(libmks_headers, subdir: 'libmks-@0@'.format(api_version))
pkg.generate(
description: 'A shared library for Mouse, Keyboard, and Screen to Qemu',
libraries: libmks,
name: 'libmks',
filebase: 'libmks-' + api_version,
version: meson.project_version(),
subdirs: 'libmks-@0@'.format(api_version),
requires: ['gio-2.0', 'gio-unix-2.0', 'gtk4'],
install_dir: join_paths(get_option('libdir'), 'pkgconfig')
)
libmks_gir = gnome.generate_gir(libmks,
sources: libmks_sources + libmks_headers,
nsversion: api_version,
namespace: 'Mks',
symbol_prefix: 'mks',
identifier_prefix: 'Mks',
includes: ['Gio-2.0', 'Gtk-4.0'],
install: true,
)