mirror of
https://gitlab.gnome.org/GNOME/libmks.git
synced 2024-11-05 08:21:10 +00:00
07158dfa07
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.
107 lines
2.8 KiB
Meson
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,
|
|
) |