[Spice-devel] [spice-gtk 1/2] mingw: Use G_GUINT64_FORMAT with glib printing functions
Frediano Ziglio
fziglio at redhat.com
Mon Oct 1 15:18:31 UTC 2018
> >
> > mingw builds currently trigger a few warnings:
> > ../../src/channel-cursor.c: In function 'set_cursor':
> > ../../src/channel-cursor.c:392:210: warning: 'I' flag used with '%x'
> > gnu_printf format [-Wformat=]
> > CHANNEL_DEBUG(channel, "type %s(%d), %" PRIx64 ", %dx%d",
> > ../../src/channel-cursor.c:392:210: warning: format '%x' expects argument
> > of
> > type 'unsigned int', but argument 7 has type 'uint64_t' {aka 'long long
> > unsigned int'} [-Wformat=]
> >
> > See this glib commit for a related issue
> > https://gitlab.gnome.org/GNOME/glib/commit/3d7cde654c4c6f3bdad32f5521f28f5802a7c377
> >
> > This commit switches to using the format specifiers provided by glib
> > instead which won't have the same issue as PRIx64
> >
> > Signed-off-by: Christophe Fergeau <cfergeau at redhat.com>
>
> I think another way should be define that all printf functions are
> using GNU style, that is __USE_MINGW_ANSI_STDIO (I think we define
> this in Windows vdagent), however as the functions we calls are
> GLib function which use GNU convention always, is IMHO more coherent
> to use GLib constants, as this patch is doing.
>
> > ---
> > src/channel-base.c | 8 ++++----
> > src/channel-cursor.c | 2 +-
> > src/channel-display-gst.c | 2 +-
> > src/decode-glz.c | 8 ++++----
> > 4 files changed, 10 insertions(+), 10 deletions(-)
> >
> > diff --git a/src/channel-base.c b/src/channel-base.c
> > index 15f25d27..209328f3 100644
> > --- a/src/channel-base.c
> > +++ b/src/channel-base.c
> > @@ -87,7 +87,7 @@ spice_channel_handle_disconnect(SpiceChannel *channel,
> > SpiceMsgIn *in)
> > {
> > SpiceMsgDisconnect *disconnect = spice_msg_in_parsed(in);
> >
> > - CHANNEL_DEBUG(channel, "%s: ts: %" PRIu64", reason: %u", __FUNCTION__,
> > + CHANNEL_DEBUG(channel, "%s: ts: %" G_GUINT64_FORMAT", reason: %u",
> > __FUNCTION__,
> > disconnect->time_stamp, disconnect->reason);
> > }
> >
> > @@ -127,11 +127,11 @@ void
> > spice_channel_handle_wait_for_channels(SpiceChannel *channel, SpiceMsgIn *i
> > .channel = channel
> > };
> >
> > - CHANNEL_DEBUG(channel, "waiting for serial %" PRIu64 " (%d/%d)",
> > data.wait->message_serial, i + 1, wfc->wait_count);
> > + CHANNEL_DEBUG(channel, "waiting for serial %" G_GUINT64_FORMAT "
> > (%d/%d)", data.wait->message_serial, i + 1, wfc->wait_count);
> > if (g_coroutine_condition_wait(&c->coroutine, wait_for_channel,
> > &data))
> > - CHANNEL_DEBUG(channel, "waiting for serial %" PRIu64 ",
> > done",
> > data.wait->message_serial);
> > + CHANNEL_DEBUG(channel, "waiting for serial %"
> > G_GUINT64_FORMAT
> > ", done", data.wait->message_serial);
> > else
> > - CHANNEL_DEBUG(channel, "waiting for serial %" PRIu64 ",
> > cancelled", data.wait->message_serial);
> > + CHANNEL_DEBUG(channel, "waiting for serial %" G_GUINT64_FORMAT
> > ", cancelled", data.wait->message_serial);
> > }
> > }
> >
> > diff --git a/src/channel-cursor.c b/src/channel-cursor.c
> > index 0e19206a..59af0ad4 100644
> > --- a/src/channel-cursor.c
> > +++ b/src/channel-cursor.c
> > @@ -389,7 +389,7 @@ static display_cursor *set_cursor(SpiceChannel
> > *channel,
> > SpiceCursor *scursor)
> > if (scursor->flags & SPICE_CURSOR_FLAGS_NONE)
> > return NULL;
> >
> > - CHANNEL_DEBUG(channel, "%s: type %s(%d), %" PRIx64 ", %dx%d",
> > __FUNCTION__,
> > + CHANNEL_DEBUG(channel, "%s: type %s(%d), %" G_GUINT64_FORMAT ",
> > %dx%d",
> > __FUNCTION__,
>
> was hex, so "%" G_GUINT64_MODIFIER "x"
>
> > cursor_type_to_string(hdr->type), hdr->type,
> > hdr->unique,
> > hdr->width, hdr->height);
> >
> > diff --git a/src/channel-display-gst.c b/src/channel-display-gst.c
> > index 3b306c1a..8ffb3293 100644
> > --- a/src/channel-display-gst.c
> > +++ b/src/channel-display-gst.c
> > @@ -338,7 +338,7 @@ static gboolean handle_pipeline_message(GstBus *bus,
> > GstMessage *msg, gpointer v
> > if (gst_is_video_overlay_prepare_window_handle_message(msg)) {
> > GstVideoOverlay *overlay;
> >
> > - SPICE_DEBUG("prepare-window-handle msg received (handle: %"
> > PRIuPTR ")", decoder->win_handle);
> > + SPICE_DEBUG("prepare-window-handle msg received (handle:
> > %"G_GUINTPTR_FORMAT")", decoder->win_handle);
why you removed the spaces?
> > if (decoder->win_handle != 0) {
> > overlay = GST_VIDEO_OVERLAY(GST_MESSAGE_SRC(msg));
> > gst_video_overlay_set_window_handle(overlay,
> > decoder->win_handle);
> > diff --git a/src/decode-glz.c b/src/decode-glz.c
> > index 9091ea92..9132b05d 100644
> > --- a/src/decode-glz.c
> > +++ b/src/decode-glz.c
> > @@ -346,10 +346,10 @@ static void decode_header(GlibGlzDecoder *d)
> > d->image.id = decode_64(d);
> > d->image.win_head_dist = decode_32(d);
> >
> > - SPICE_DEBUG("%s: %ux%u, id %" PRIu64 ", ref %" PRIu64,
> > - __FUNCTION__,
> > - d->image.width, d->image.height, d->image.id,
> > - d->image.id - d->image.win_head_dist);
> > + SPICE_DEBUG("%s: %ux%u, id %" G_GUINT64_FORMAT ", ref %"
> > G_GUINT64_FORMAT,
> > + __FUNCTION__,
> > + d->image.width, d->image.height, d->image.id,
> > + d->image.id - d->image.win_head_dist);
> > }
> >
> > static void decode(SpiceGlzDecoder *decoder,
>
Can you also remove
#include <inttypes.h> /* For PRIx64 */
from src/spice-channel-cache.h ?
Seems like GLib always accepted "I64" modifier (which Fedora 28 uses
for instance).
Frediano
More information about the Spice-devel
mailing list