From: Pekka Paalanen <p...@iki.fi> This is a new debugging extension for non-production environments. The aim is to replace all build-time choosable debug prints in the compositor with runtime subscribable debug streams.
Signed-off-by: Pekka Paalanen <pq at iki.fi> Added new libweston-$MAJOR-protocols.pc file and install that for external projects to find the XML files installed by libweston. Signed-off-by: Maniraj Devadoss <maniraj.devad...@in.bosch.com> --- Makefile.am | 8 +++ configure.ac | 1 + libweston/libweston-protocols.pc.in | 7 ++ protocol/weston-debug.xml | 128 ++++++++++++++++++++++++++++++++++++ 4 files changed, 144 insertions(+) create mode 100644 libweston/libweston-protocols.pc.in create mode 100644 protocol/weston-debug.xml diff --git a/Makefile.am b/Makefile.am index 1d3eedb..026cc58 100644 --- a/Makefile.am +++ b/Makefile.am @@ -116,6 +116,10 @@ libweston_@LIBWESTON_MAJOR@_la_SOURCES = \ shared/platform.h \ shared/weston-egl-ext.h +libweston_@LIBWESTON_MAJOR@_datadir = $(datadir)/weston/protocols +dist_libweston_@LIBWESTON_MAJOR@_data_DATA = \ + protocol/weston-debug.xml + lib_LTLIBRARIES += libweston-desktop-@LIBWESTON_MAJOR@.la libweston_desktop_@LIBWESTON_MAJOR@_la_CPPFLAGS = $(AM_CPPFLAGS) -DIN_WESTON libweston_desktop_@LIBWESTON_MAJOR@_la_CFLAGS = $(AM_CFLAGS) $(COMPOSITOR_CFLAGS) @@ -166,6 +170,8 @@ endif nodist_libweston_@LIBWESTON_MAJOR@_la_SOURCES = \ protocol/weston-screenshooter-protocol.c \ protocol/weston-screenshooter-server-protocol.h \ + protocol/weston-debug-protocol.c \ + protocol/weston-debug-server-protocol.h \ protocol/text-cursor-position-protocol.c \ protocol/text-cursor-position-server-protocol.h \ protocol/text-input-unstable-v1-protocol.c \ @@ -283,6 +289,7 @@ endif # BUILD_WESTON_LAUNCH pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = \ libweston/libweston-${LIBWESTON_MAJOR}.pc \ + libweston/libweston-${LIBWESTON_MAJOR}-protocols.pc \ libweston-desktop/libweston-desktop-${LIBWESTON_MAJOR}.pc \ compositor/weston.pc @@ -1528,6 +1535,7 @@ BUILT_SOURCES += \ protocol/text-input-unstable-v1-client-protocol.h EXTRA_DIST += \ + protocol/weston-debug.xml \ protocol/weston-desktop-shell.xml \ protocol/weston-screenshooter.xml \ protocol/text-cursor-position.xml \ diff --git a/configure.ac b/configure.ac index 21e3a41..e514944 100644 --- a/configure.ac +++ b/configure.ac @@ -687,6 +687,7 @@ AC_CONFIG_FILES([Makefile libweston/version.h compositor/weston.pc]) # AC_CONFIG_FILES needs the full name when running autoconf, so we need to use # libweston_abi_version here, and outside [] because of m4 quoting rules AC_CONFIG_FILES([libweston/libweston-]libweston_major_version[.pc:libweston/libweston.pc.in]) +AC_CONFIG_FILES([libweston/libweston-]libweston_major_version[-protocols.pc:libweston/libweston-protocols.pc.in]) AC_CONFIG_FILES([libweston-desktop/libweston-desktop-]libweston_major_version[.pc:libweston-desktop/libweston-desktop.pc.in]) AM_CONDITIONAL([HAVE_GIT_REPO], [test -f $srcdir/.git/logs/HEAD]) diff --git a/libweston/libweston-protocols.pc.in b/libweston/libweston-protocols.pc.in new file mode 100644 index 0000000..46fd586 --- /dev/null +++ b/libweston/libweston-protocols.pc.in @@ -0,0 +1,7 @@ +prefix=@prefix@ +datarootdir=@datarootdir@ +pkgdatadir=@datadir@/@PACKAGE@/protocols + +Name: libWeston Protocols +Description: libWeston protocol files +Version: @WESTON_VERSION@ diff --git a/protocol/weston-debug.xml b/protocol/weston-debug.xml new file mode 100644 index 0000000..fa8d21d --- /dev/null +++ b/protocol/weston-debug.xml @@ -0,0 +1,128 @@ +<?xml version="1.0" encoding="UTF-8"?> +<protocol name="weston_debug"> + + <copyright> + Copyright © 2017 Pekka Paalanen pq at iki.fi + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice (including the next + paragraph) shall be included in all copies or substantial portions of the + Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + </copyright> + + <interface name="weston_debug_v1" version="1"> + <description summary="weston internal debugging"> + This is a generic debugging interface for Weston internals, the global + object advertized through wl_registry. + + WARNING: This interface by design allows a denial-of-service attack. It + should not be offered in production, or proper authorization mechnisms + must be enforced. + + The idea is for a client to provide a file descriptor that the server + uses for printing debug information. The server uses the file + descriptor in blocking writes mode, which exposes the denial-of-service + risk. The blocking mode is necessary to ensure all debug messages can + be easily printed in place. It also ensures message ordering if a + client subcribes to more than one debug stream. + + The available debugging features depend on the server. There is no + explicit API for discovering the supported debug stream names. A server + should implement a debug stream named "list" where the server prints + the names and descriptions of all debug streams it supports to the + stream file descriptor. + + A debug stream can be one-shot where the server prints the requested + information and then closes it, or continuous where server keeps on + printing until the client stops it. Or anything in between. + </description> + + <request name="destroy" type="destructor"> + <description summary="destroy factory object"> + Destroys the factory object, but does not affect any other objects. + </description> + </request> + + <request name="subscribe"> + <description summary="subscribe to a debug stream"> + Subscribe to a named debug stream. The server will start printing + to the given file descriptor. + + If the named debug stream is a one-shot dump, the server will send + weston_debug_stream_v1.complete event once all requested data has + been printed. Otherwise, the server will continue streaming debug + prints until the subscription object is destroyed. + + If the debug stream name is unknown to the server, the server will + immediately respond with weston_debug_stream_v1.failure event. + </description> + + <arg name="name" type="string" allow-null="false" + summary="debug stream name"/> + <arg name="streamfd" type="fd" summary="write stream file descriptor"/> + <arg name="stream" type="new_id" interface="weston_debug_stream_v1" + summary="created debug stream object"/> + </request> + </interface> + + <interface name="weston_debug_stream_v1" version="1"> + <description summary="A subscribed debug stream"> + Represents one subscribed debug stream, created with + weston_debug_v1.subscribe. When the object is created, it is associated + with a given file descriptor. The server will continue writing to the + file descriptor until the object is destroyed or the server sends an + event through the object. + </description> + + <request name="destroy" type="destructor"> + <description summary="close a debug stream"> + Destroys the object, which causes the server to stop writing into + and closes the associated file descriptor if it was not closed + already. + + Use a wl_display.sync if the clients needs to guarantee the file + descriptor is closed before continuing. + </description> + </request> + + <event name="complete"> + <description summary="server completed the debug stream"> + The server has successfully finished writing to and has closed the + associated file descriptor. + + This event is delivered only for one-shot debug streams where the + server dumps some data and stop. This is never delivered for + continuous debbug streams because they by definition never complete. + </description> + </event> + + <event name="failure"> + <description summary="server cannot continue the debug stream"> + The server has stopped writing to and has closed the + associated file descriptor. The data already written to the file + descriptor is correct, but it may be truncated. + + This event may be delivered at any time and for any kind of debug + stream. It may be due to a failure in or shutdown of the server. + The message argument may provide a hint of the reason. + </description> + + <arg name="message" type="string" allow-null="true" + summary="human readable reason"/> + </event> + </interface> +</protocol> -- 2.7.4 _______________________________________________ wayland-devel mailing list wayland-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/wayland-devel