Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package wayvnc for openSUSE:Factory checked 
in at 2026-07-10 17:40:12
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/wayvnc (Old)
 and      /work/SRC/openSUSE:Factory/.wayvnc.new.1991 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "wayvnc"

Fri Jul 10 17:40:12 2026 rev:13 rq:1364806 version:0.10.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/wayvnc/wayvnc.changes    2026-04-28 
16:40:05.914796652 +0200
+++ /work/SRC/openSUSE:Factory/.wayvnc.new.1991/wayvnc.changes  2026-07-10 
17:42:56.496550457 +0200
@@ -1,0 +2,8 @@
+Fri Jul 10 04:45:33 UTC 2026 - Michael Vetter <[email protected]>
+
+- Update to 0.10.1:
+  * Fix typos in the man page.
+  * Fix string truncation issues in the control ipc code.
+  * Fix various issues with detached mode.
+
+-------------------------------------------------------------------

Old:
----
  v0.10.0.tar.gz

New:
----
  v0.10.1.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ wayvnc.spec ++++++
--- /var/tmp/diff_new_pack.CfGcng/_old  2026-07-10 17:42:58.592622324 +0200
+++ /var/tmp/diff_new_pack.CfGcng/_new  2026-07-10 17:42:58.592622324 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           wayvnc
-Version:        0.10.0
+Version:        0.10.1
 Release:        0
 Summary:        A VNC server for wlroots based Wayland compositors
 License:        ISC

++++++ v0.10.0.tar.gz -> v0.10.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wayvnc-0.10.0/include/output.h 
new/wayvnc-0.10.1/include/output.h
--- old/wayvnc-0.10.0/include/output.h  2026-04-27 23:20:01.000000000 +0200
+++ new/wayvnc-0.10.1/include/output.h  2026-07-09 20:45:45.000000000 +0200
@@ -58,6 +58,7 @@
        struct output_state pending;
 
        enum image_source_power_state power;
+       bool power_management_failed;
 
        void* userdata;
 };
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wayvnc-0.10.0/meson.build 
new/wayvnc-0.10.1/meson.build
--- old/wayvnc-0.10.0/meson.build       2026-04-27 23:20:01.000000000 +0200
+++ new/wayvnc-0.10.1/meson.build       2026-07-09 20:45:45.000000000 +0200
@@ -1,7 +1,7 @@
 project(
        'wayvnc',
        'c',
-       version: '0.10.0',
+       version: '0.10.1',
        license: 'ISC',
        default_options: [
                'c_std=gnu11',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wayvnc-0.10.0/src/json-ipc.c 
new/wayvnc-0.10.1/src/json-ipc.c
--- old/wayvnc-0.10.0/src/json-ipc.c    2026-04-27 23:20:01.000000000 +0200
+++ new/wayvnc-0.10.1/src/json-ipc.c    2026-07-09 20:45:45.000000000 +0200
@@ -17,6 +17,7 @@
 #include <string.h>
 #include <stdbool.h>
 #include <errno.h>
+#include <sys/param.h>
 #include "json-ipc.h"
 
 static const char* jsonipc_id_key = "id";
@@ -207,7 +208,7 @@
 
 json_t* jvprintf(const char* fmt, va_list ap)
 {
-       char buffer[128];
+       char buffer[256];
        int len = vsnprintf(buffer, sizeof(buffer), fmt, ap);
-       return json_stringn(buffer, len);
+       return json_stringn(buffer, MIN(sizeof(buffer) - 1, len));
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wayvnc-0.10.0/src/main.c new/wayvnc-0.10.1/src/main.c
--- old/wayvnc-0.10.0/src/main.c        2026-04-27 23:20:01.000000000 +0200
+++ new/wayvnc-0.10.1/src/main.c        2026-07-09 20:45:45.000000000 +0200
@@ -158,6 +158,8 @@
        // image source observers
        struct observer power_change_observer;
        struct observer destruction_observer;
+
+       struct aml_idle* deferred_detach;
 };
 
 struct wayvnc_client {
@@ -201,6 +203,32 @@
 
 extern struct screencopy_impl wlr_screencopy_impl, ext_image_copy_capture_impl;
 
+static void cancel_deferred_detach(struct wayvnc* self)
+{
+       if (!self->deferred_detach)
+               return;
+       aml_stop(aml_get_default(), self->deferred_detach);
+       aml_unref(self->deferred_detach);
+       self->deferred_detach = NULL;
+}
+
+static void handle_wayland_detach(struct aml_idle* idle)
+{
+       struct wayvnc* self = aml_get_userdata(idle);
+       assert(self->deferred_detach == idle);
+       cancel_deferred_detach(self);
+       wayland_detach(self);
+}
+
+static void schedule_wayland_detach(struct wayvnc* self)
+{
+       if (self->deferred_detach)
+               return;
+       struct aml_idle* idle = aml_idle_new(handle_wayland_detach, self, NULL);
+       aml_start(aml_get_default(), idle);
+       self->deferred_detach = idle;
+}
+
 static void on_output_added(struct observer* observer, void* data)
 {
        struct wayvnc* self = wl_container_of(observer, self,
@@ -208,7 +236,13 @@
        struct output* output = data;
        ctl_server_event_output_added(self->ctl, output_get_name(output));
 
-       if (image_source_is_desktop(self->image_source)) {
+       cancel_deferred_detach(self);
+
+       if (self->image_source_type == IMAGE_SOURCE_TYPE_OUTPUT ||
+                       self->image_source_type == IMAGE_SOURCE_TYPE_UNSPEC) {
+               if (!self->image_source)
+                       switch_to_output(self, output);
+       } else if (self->image_source_type == IMAGE_SOURCE_TYPE_DESKTOP) {
                wayvnc_desktop_display_add(self, &output->image_source);
        }
 }
@@ -219,7 +253,7 @@
                        output_removed_observer);
        struct output* out = data;
 
-       if (image_source_is_output(self->image_source) &&
+       if (self->image_source && image_source_is_output(self->image_source) &&
                        out == output_from_image_source(self->image_source)) {
                nvnc_log(NVNC_LOG_WARNING, "Selected output %s went away",
                                output_get_name(out));
@@ -230,11 +264,12 @@
 
        ctl_server_event_output_removed(self->ctl, output_get_name(out));
 
-       if (image_source_is_output(self->image_source) &&
+       if (self->image_source && image_source_is_output(self->image_source) &&
                        out == output_from_image_source(self->image_source)) {
                if (self->start_detached) {
                        nvnc_log(NVNC_LOG_WARNING, "No fallback outputs left. 
Detaching...");
-                       wayland_detach(self);
+                       self->image_source = NULL;
+                       schedule_wayland_detach(self);
                } else {
                        nvnc_log(NVNC_LOG_ERROR, "No fallback outputs left. 
Exiting...");
                        wayvnc_exit(self);
@@ -282,6 +317,7 @@
 static void wayland_detach(struct wayvnc* self)
 {
        wayland_destroy(wayland);
+       wayland = NULL;
 }
 
 static void on_wayland_destroyed(struct observer* observer, void* data)
@@ -1138,7 +1174,6 @@
        struct wayvnc_display* self = wl_container_of(observer, self,
                        destruction_observer);
        struct wayvnc* wayvnc = self->wayvnc;
-       nvnc_remove_display(wayvnc->nvnc, self->nvnc_display);
        wayvnc_display_destroy(self);
 
        if (!wayland || !wl_list_empty(&wayland->outputs))
@@ -1146,7 +1181,7 @@
 
        if (wayvnc->start_detached) {
                nvnc_log(NVNC_LOG_WARNING, "No desktop outputs left. 
Detaching...");
-               wayland_detach(wayvnc);
+               schedule_wayland_detach(wayvnc);
        } else {
                nvnc_log(NVNC_LOG_ERROR, "No desktop outputs left. Exiting...");
                wayvnc_exit(wayvnc);
@@ -2152,14 +2187,18 @@
 
 void switch_to_output(struct wayvnc* self, struct output* output)
 {
-       assert(image_source_is_output(self->image_source));
-       if (output_from_image_source(self->image_source) == output) {
-               nvnc_log(NVNC_LOG_INFO, "Already selected output %s",
-                               output_get_name(output));
-               return;
+       if (self->image_source) {
+               assert(image_source_is_output(self->image_source));
+               struct output* current_output =
+                       output_from_image_source(self->image_source);
+               if (current_output == output) {
+                       nvnc_log(NVNC_LOG_DEBUG, "Already selected output %s",
+                                       output_get_name(output));
+                       return;
+               }
+               screencopy_stop(self->screencopy);
+               output_release_power_on(current_output);
        }
-       screencopy_stop(self->screencopy);
-       output_release_power_on(output);
        set_image_source(self, &output->image_source);
        configure_screencopy(self);
        reinitialise_pointers(self);
@@ -2227,6 +2266,9 @@
        wayvnc_display_list_init(self);
        blank_screen(self);
 
+       if (!ok)
+               goto out;
+
        struct nvnc_client* nvnc_client;
        for (nvnc_client = nvnc_client_first(self->nvnc); nvnc_client;
                        nvnc_client = nvnc_client_next(nvnc_client)) {
@@ -2244,6 +2286,7 @@
 
        nvnc_set_log_fn_thread_local(NULL);
 
+out:
        return ok ? cmd_ok() : cmd_failed("%s", intercepted_error);
 }
 
@@ -2723,6 +2766,8 @@
 
        nvnc_log(NVNC_LOG_INFO, "Exiting...");
 
+       cancel_deferred_detach(&self);
+
        ctl_server_destroy(self.ctl);
        self.ctl = NULL;
 
@@ -2730,6 +2775,7 @@
        nvnc_del(self.nvnc);
        self.nvnc = NULL;
        wayland_destroy(wayland);
+       wayland = NULL;
 
        aml_stop(aml, self.rate_limiter);
        aml_unref(self.rate_limiter);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wayvnc-0.10.0/src/output.c 
new/wayvnc-0.10.1/src/output.c
--- old/wayvnc-0.10.0/src/output.c      2026-04-27 23:20:01.000000000 +0200
+++ new/wayvnc-0.10.1/src/output.c      2026-07-09 20:45:45.000000000 +0200
@@ -212,9 +212,11 @@
        struct output* self = data;
        nvnc_log(NVNC_LOG_WARNING, "Output %s power state failure",
                        self->state.name);
-       self->power = IMAGE_SOURCE_POWER_UNKNOWN;
+       self->power_management_failed = true;
+       self->power = IMAGE_SOURCE_POWER_ON;
        zwlr_output_power_v1_destroy(self->wlr_output_power);
        self->wlr_output_power = NULL;
+       observable_notify(&self->image_source.observable.power_change, NULL);
 }
 
 static const struct zwlr_output_power_v1_listener wlr_output_power_listener = {
@@ -224,6 +226,9 @@
 
 int output_acquire_power_on(struct output* output)
 {
+       if (output->power_management_failed)
+               return -1;
+
        if (output->wlr_output_power)
                return 1;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wayvnc-0.10.0/wayvnc.scd new/wayvnc-0.10.1/wayvnc.scd
--- old/wayvnc-0.10.0/wayvnc.scd        2026-04-27 23:20:01.000000000 +0200
+++ new/wayvnc-0.10.1/wayvnc.scd        2026-07-09 20:45:45.000000000 +0200
@@ -2,7 +2,7 @@
 
 # NAME
 
-wayvnc - A VNC server for wlroots based Wayland compositors.
+wayvnc - A VNC server for wlroots-based Wayland compositors.
 
 # SYNOPSIS
 
@@ -89,7 +89,7 @@
 *[::]:5901*.
 
 Different socket types may be specified by prefixing the address with the
-the given type name with a *:* in between; e.g. *unix:/tmp/wayvnc.sock*. The
+given type name with a *:* in between; e.g. *unix:/tmp/wayvnc.sock*. The
 socket types are: tcp, unix, fd, ws, ws-unix and ws-fd.
 
 With the *fd* type, you can pass an already bound socket for the VNC server to
@@ -101,7 +101,7 @@
 
 # DESCRIPTION
 
-This is a VNC server for wlroots based Wayland compositors. It attaches to a
+This is a VNC server for wlroots-based Wayland compositors. It attaches to a
 running Wayland session, creates virtual input devices and exposes a single
 display via the RFB protocol. The Wayland session may be a headless one, so it
 is also possible to run wayvnc without a physical display attached.
@@ -158,7 +158,7 @@
 *port*
        The port to which the server shall bind. Default is 5900.
 
-*private_key_file_file*
+*private_key_file*
        The path to the private key file for TLS encryption. Only applicable
        when *enable_auth*=true.
 
@@ -194,8 +194,8 @@
        Default: "pc105"
 
 *xkb_options*
-       A comma separated list of options, through which the user specifies
-       non-layout related preferences such as which key is the Compose key. 
+       A comma-separated list of options, through which the user specifies
+       non-layout related preferences such as which key is the Compose key.
 
        Default: _XKB_DEFAULT_OPTIONS_ or system default.
 
@@ -227,7 +227,7 @@
 
 To facilitate runtime interaction and control, wayvnc opens a unix domain 
socket
 at *$XDG_RUNTIME_DIR*/wayvncctl (or a fallback of /tmp/wayvncctl-*$UID*). A
-client can connect and exchange json-formatted IPC messages to query and 
control
+client can connect and exchange JSON-formatted IPC messages to query and 
control
 the running wayvnc instance.
 
 ## IPC COMMANDS
@@ -282,14 +282,14 @@
 
 _OUTPUT-CYCLE_
 
-For multi-output wayland displays, the *output-cycle* command switches which
+For multi-output Wayland displays, the *output-cycle* command switches which
 output is actively captured by wayvnc. Running this once will switch to the 
next
 available output. If no more outputs are available, it cycles back to the first
 again.
 
 _OUTPUT-SET_
 
-For multi-output wayland displays, the *output-set* command switches which
+For multi-output Wayland displays, the *output-set* command switches which
 output is actively captured by wayvnc by name.
 
 *output-name=name*
@@ -338,7 +338,7 @@
 
 _CLIENT-DISCONNECTED_
 
-The *client-disconnected* event is sent when a VNC cliwnt disconnects from
+The *client-disconnected* event is sent when a VNC client disconnects from
 wayvnc.
 
 Parameters:
@@ -362,7 +362,7 @@
 sends one or more request objects, each of which will receive a corresponding
 response object.
 
-*Note* This message format is unstable and may change substantially over the
+*Note*: This message format is unstable and may change substantially over the
 next few releases.
 
 _REQUEST_
@@ -384,7 +384,7 @@
 The *method* is the name of the command to be executed. Use the *help* method 
to
 query a list of all valid method names.
 
-The *id* field is optional and may be any valid json number or string. If
+The *id* field is optional and may be any valid JSON number or string. If
 provided, the response to this request will contain the identical id value,
 which the client may use to coordinate multiple requests and responses.
 
@@ -415,7 +415,7 @@
 
 _EVENTS_
 
-Events are aaynchronous messages sent from a server to all registered clients.
+Events are asynchronous messages sent from a server to all registered clients.
 The message format is identical to a _REQUEST_, but without an "id" field, and 
a
 client must not send a response.
 
@@ -432,7 +432,7 @@
 ```
 
 In order to receive any events, a client must first register to receive them by
-sending a _event-receive_ request IPC. Once the success response has been sent
+sending an _event-receive_ request IPC. Once the success response has been sent
 by the server, the client must expect that asynchronous event messages may be
 sent by the server at any time, even between a request and the associated
 response.
@@ -462,9 +462,9 @@
        ERROR: ../src/main.c: 1024: Failed to initialise wayland
        ```
 
-       This means that your wayland compositor does not implement the
+       This means that your Wayland compositor does not implement the
        screencopy protocol and wayvnc won't work with it. Screencopy is
-       implemented by wlroots based compositors such as Sway and Wayfire.
+       implemented by wlroots-based compositors such as Sway and Wayfire.
 
 *How can I run wayvnc in headless mode/over an SSH session?*
 
@@ -500,7 +500,7 @@
 # AUTHORS
 
 Maintained by Andri Yngvason <[email protected]>. Up-to-date sources can be
-found at https://github.com/any1/wayvnc and bugs reports or patches can be
+found at https://github.com/any1/wayvnc and bug reports or patches can be
 submitted to GitHub's issue tracker.
 
 # SEE ALSO
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wayvnc-0.10.0/wayvncctl.scd 
new/wayvnc-0.10.1/wayvncctl.scd
--- old/wayvnc-0.10.0/wayvncctl.scd     2026-04-27 23:20:01.000000000 +0200
+++ new/wayvnc-0.10.1/wayvncctl.scd     2026-07-09 20:45:45.000000000 +0200
@@ -18,17 +18,17 @@
        Wait for wayvnc to start up if it's not already running. Default: Exit
        immediately with an error if wayvnc is not running.
 
-*-r,--reconnect*
+*-r, --reconnect*
        If disconnected while waiting for events, wait for wayvnc to restart and
        re-register for events. Default: Exit when wayvnc exits.
 
 *-j, --json*
-       Produce json output to stdout.
+       Produce JSON output to stdout.
 
 *-V, --version*
        Show version info.
 
-*-v,--verbose*
+*-v, --verbose*
        Be more verbose.
 
 *-h, --help*
@@ -67,7 +67,7 @@
 
{"method":"client-disconnected","params":{"id":"0x10ef670","address":null,"username":null,"connection_count":0}}
 ```
 
-The default human-readible output is a multi-line yaml-like format, with two
+The default human-readable output is a multi-line YAML-like format, with two
 newline characters between each event:
 
 ```
@@ -95,13 +95,13 @@
        event registration has succeeded, both upon initial startup and on
        subsequent registrations with _--reconnect_.
 
-       No paramerers.
+       No parameters.
 
 *wayvnc-shutdown*
        Sent when the wayvnc control connection is dropped, usually due to
        wayvnc exiting.
 
-       No paramerers.
+       No parameters.
 
 # EXAMPLES
 
@@ -119,7 +119,7 @@
 $ wayvncctl output-cycle
 ```
 
-Get json-formatted version information:
+Get JSON-formatted version information:
 
 ```
 $ wayvncctl --json version
@@ -143,7 +143,7 @@
             ;;
         wayvnc-shutdown)
             connection_count_now 0
-           ;;
+            ;;
     esac
 done < <(wayvncctl --wait --reconnect --json event-receive)
 ```

Reply via email to