qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
To: qemu-devel@nongnu.org, Edmund Raile <edmund.raile@proton.me>
Cc: marcandre.lureau@redhat.com, kraxel@redhat.com,
	Edmund Raile <edmund.raile@proton.me>
Subject: Re: [PATCH] qemu-ui-gtk clipboard: fix for freeze-crashes v2
Date: Mon, 16 Oct 2023 08:44:55 +0300	[thread overview]
Message-ID: <2ly4u.m34k3bok1e6@linaro.org> (raw)
In-Reply-To: <20231014084641.42317-2-edmund.raile@proton.me>

Hello Edmund,

The reproduction in the bug description sounds convoluted so I will 
focus on the code and patch instead:

First of all, the patch title should not include a `v2`. The versioning 
(reroll count) must go in the `[PATCH]` prefix, e.g. `[PATCH v2]`
Secondly, the commit message should describe what the problem is and how 
the fixes in the patch are a solution for it.

See the "meaningfull commit message" in the QEMU docs.

https://www.qemu.org/docs/master/devel/submitting-a-patch.html

  If your patch fixes a bug in the gitlab bug tracker, please add a line 
  with “Resolves: <URL-of-the-bug>” to the commit message, too. Gitlab 
  can close bugs automatically once commits with the “Resolved:” keyword 
  get merged into the master branch of the project. And if your patch 
  addresses a bug in another public bug tracker, you can also use a line 
  with “Buglink: <URL-of-the-bug>” for reference here, too.

  Example:

  Fixes: 14055ce53c2d ("s390x/tcg: avoid overflows in 
  time2tod/tod2time")
  Resolves: https://gitlab.com/qemu-project/qemu/-/issues/42
  Buglink: https://bugs.launchpad.net/qemu/+bug/1804323``

This information should go before your Signed-off-by: trailer line.

You can still include all that information that should not go into the 
commit message by putting them below the -- line and above the patch, 
see 
https://www.qemu.org/docs/master/devel/submitting-a-patch.html#include-version-history-in-patchset-revisions


On Sat, 14 Oct 2023 11:48, Edmund Raile <edmund.raile@proton.me> wrote:
>To not risk breaking anything in the mailing list, I'm starting this 
>new mail thread instead of replying to my first one.

That's the right thing to do, replying to old versions will make it less 
visible to people.

Some code comments follow:

>
>---
> include/ui/clipboard.h |  2 ++
> ui/gtk-clipboard.c     | 34 ++++++++++++++++++++--------------
> 2 files changed, 22 insertions(+), 14 deletions(-)
>
>diff --git a/include/ui/clipboard.h b/include/ui/clipboard.h
>index ab6acdbd8a..123c04fc07 100644
>--- a/include/ui/clipboard.h
>+++ b/include/ui/clipboard.h
>@@ -106,6 +106,7 @@ struct QemuClipboardNotify {
>  * @types: clipboard data array (one entry per type).
>  * @has_serial: whether @serial is available.
>  * @serial: the grab serial counter.
>+ * @serial_last: used by GTK UI to discard outdated transaction results.
>  *
>  * Clipboard content data and metadata.
>  */
>@@ -115,6 +116,7 @@ struct QemuClipboardInfo {
>     QemuClipboardSelection selection;
>     bool has_serial;
>     uint32_t serial;
>+    uint32_t serial_last;
>     struct {
>         bool available;
>         bool requested;
>diff --git a/ui/gtk-clipboard.c b/ui/gtk-clipboard.c
>index 8d8a636fd1..9e96cc2fb5 100644
>--- a/ui/gtk-clipboard.c
>+++ b/ui/gtk-clipboard.c
>@@ -133,26 +133,38 @@ static void gd_clipboard_notify(Notifier *notifier, void *data)
>     }
> }
> 
>+/* asynchronous clipboard text transfer (host -> guest): callback */
>+static void gd_clipboard_transfer_text_to_guest_callback(GtkClipboard *clipboard, const gchar *text, gpointer data)
>+{
>+    QemuClipboardInfo *info = (QemuClipboardInfo *)data;



>+
>+    // serial_last is intentionally not stored as a static in this function as callbacks implementing other data types (e.g. images) need access as well

This line and several others are too long. If you run 
scripts/checkpatch.pl on your patch you will see them reported:

  ERROR: line over 90 characters
  #81: FILE: ui/gtk-clipboard.c:141:
  +    // serial_last is intentionally not stored as a static in this 
  function as callbacks implementing other data types (e.g. images) need 
  access as well

Also, no C99 // comments:

  ERROR: do not use C99 // comments
  #81: FILE: ui/gtk-clipboard.c:141:
  +    // serial_last is intentionally not stored as a static in this 
  function as callbacks implementing other data types (e.g. images) need 
  access as well

In any case I think this comment is not needed.

>+
>+    if (text && (info->serial > info->serial_last)) {
>+        info->types[QEMU_CLIPBOARD_TYPE_TEXT].available = true;
>+        qemu_clipboard_update(info);
>+        info->serial_last = info->serial;
>+    }
>+
>+    qemu_clipboard_info_unref(info);

Does this free `info`? If yes why update its fields in the previous 
line?

--
Manos


      reply	other threads:[~2023-10-16  6:03 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-10-14  8:48 [PATCH] qemu-ui-gtk clipboard: fix for freeze-crashes v2 Edmund Raile
2023-10-16  5:44 ` Manos Pitsidianakis [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=2ly4u.m34k3bok1e6@linaro.org \
    --to=manos.pitsidianakis@linaro.org \
    --cc=edmund.raile@proton.me \
    --cc=kraxel@redhat.com \
    --cc=marcandre.lureau@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).