[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