Hello community,

here is the log from the commit of package pinpoint for openSUSE:Factory 
checked in at 2016-01-15 10:40:59
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/pinpoint (Old)
 and      /work/SRC/openSUSE:Factory/.pinpoint.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "pinpoint"

Changes:
--------
--- /work/SRC/openSUSE:Factory/pinpoint/pinpoint.changes        2015-08-01 
11:38:03.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.pinpoint.new/pinpoint.changes   2016-01-15 
10:41:00.000000000 +0100
@@ -1,0 +2,9 @@
+Tue Jan 12 13:49:37 UTC 2016 - [email protected]
+
+- Update to version 0.1.8:
+  + Make pinpoint work on Wayland (includes depending on Gtk+ to
+    have window decorations).
+  + Remove more deprecation warnings (still so many left).
+- Add pkgconfig(clutter-gtk-1.0) BuildRequires: new dependency.
+
+-------------------------------------------------------------------

Old:
----
  pinpoint-0.1.6.tar.xz

New:
----
  pinpoint-0.1.8.tar.xz

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

Other differences:
------------------
++++++ pinpoint.spec ++++++
--- /var/tmp/diff_new_pack.kzHbsq/_old  2016-01-15 10:41:01.000000000 +0100
+++ /var/tmp/diff_new_pack.kzHbsq/_new  2016-01-15 10:41:01.000000000 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package pinpoint
 #
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
 
 
 Name:           pinpoint
-Version:        0.1.6
+Version:        0.1.8
 Release:        0
 Summary:        Simple Presentation Tool for Excellent Presentations
 License:        LGPL-2.1+
@@ -25,8 +25,9 @@
 Url:            http://live.gnome.org/Pinpoint
 Source:         
http://download.gnome.org/sources/pinpoint/0.1/%{name}-%{version}.tar.xz
 BuildRequires:  pkgconfig(cairo-pdf)
-BuildRequires:  pkgconfig(clutter-1.0) >= 1.12
+BuildRequires:  pkgconfig(clutter-1.0) >= 1.23.7
 BuildRequires:  pkgconfig(clutter-gst-3.0) >= 3.0.0
+BuildRequires:  pkgconfig(clutter-gtk-1.0) >= 1.6
 BuildRequires:  pkgconfig(gdk-pixbuf-2.0)
 BuildRequires:  pkgconfig(gio-2.0)
 BuildRequires:  pkgconfig(librsvg-2.0)

++++++ pinpoint-0.1.6.tar.xz -> pinpoint-0.1.8.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pinpoint-0.1.6/Makefile.in 
new/pinpoint-0.1.8/Makefile.in
--- old/pinpoint-0.1.6/Makefile.in      2015-07-28 00:18:50.000000000 +0200
+++ new/pinpoint-0.1.8/Makefile.in      2015-09-22 20:12:20.000000000 +0200
@@ -328,6 +328,7 @@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pinpoint-0.1.6/NEWS new/pinpoint-0.1.8/NEWS
--- old/pinpoint-0.1.6/NEWS     2015-07-28 00:16:52.000000000 +0200
+++ new/pinpoint-0.1.8/NEWS     2015-09-22 20:11:48.000000000 +0200
@@ -1,4 +1,10 @@
-Pinpoint 0.1.6 - Bodean's - 2015-07-127
+Pinpoint 0.1.8 - Burrito Tuesday - 2015-09-22
+
+- Make pinpoint work on Wayland (includes depending on Gtk+ to have window
+  decorations)
+- Remove more deprecation warnings (still so many left)
+
+Pinpoint 0.1.6 - Bodean's - 2015-07-27
 
 - --ignore-comments to generate slides without comments
 - Switched to a more recent version of GStreamer
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pinpoint-0.1.6/config.h.in 
new/pinpoint-0.1.8/config.h.in
--- old/pinpoint-0.1.6/config.h.in      2015-07-28 00:24:47.000000000 +0200
+++ new/pinpoint-0.1.8/config.h.in      2015-09-22 20:12:21.000000000 +0200
@@ -1,8 +1,5 @@
 /* config.h.in.  Generated from configure.ac by autoheader.  */
 
-/* Whether clutter is compiled for x11 */
-#undef HAVE_CLUTTER_X11
-
 /* Whether pinpoint will generate PDFs */
 #undef HAVE_PDF
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pinpoint-0.1.6/configure new/pinpoint-0.1.8/configure
--- old/pinpoint-0.1.6/configure        2015-07-28 00:10:18.000000000 +0200
+++ new/pinpoint-0.1.8/configure        2015-09-22 20:12:20.000000000 +0200
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for pinpoint 0.1.6.
+# Generated by GNU Autoconf 2.69 for pinpoint 0.1.8.
 #
 #
 # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
@@ -577,8 +577,8 @@
 # Identity of this package.
 PACKAGE_NAME='pinpoint'
 PACKAGE_TARNAME='pinpoint'
-PACKAGE_VERSION='0.1.6'
-PACKAGE_STRING='pinpoint 0.1.6'
+PACKAGE_VERSION='0.1.8'
+PACKAGE_STRING='pinpoint 0.1.8'
 PACKAGE_BUGREPORT=''
 PACKAGE_URL=''
 
@@ -672,6 +672,7 @@
 docdir
 oldincludedir
 includedir
+runstatedir
 localstatedir
 sharedstatedir
 sysconfdir
@@ -753,6 +754,7 @@
 sysconfdir='${prefix}/etc'
 sharedstatedir='${prefix}/com'
 localstatedir='${prefix}/var'
+runstatedir='${localstatedir}/run'
 includedir='${prefix}/include'
 oldincludedir='/usr/include'
 docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
@@ -1005,6 +1007,15 @@
   | -silent | --silent | --silen | --sile | --sil)
     silent=yes ;;
 
+  -runstatedir | --runstatedir | --runstatedi | --runstated \
+  | --runstate | --runstat | --runsta | --runst | --runs \
+  | --run | --ru | --r)
+    ac_prev=runstatedir ;;
+  -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
+  | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
+  | --run=* | --ru=* | --r=*)
+    runstatedir=$ac_optarg ;;
+
   -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
     ac_prev=sbindir ;;
   -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
@@ -1142,7 +1153,7 @@
 for ac_var in  exec_prefix prefix bindir sbindir libexecdir datarootdir \
                datadir sysconfdir sharedstatedir localstatedir includedir \
                oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
-               libdir localedir mandir
+               libdir localedir mandir runstatedir
 do
   eval ac_val=\$$ac_var
   # Remove trailing slashes.
@@ -1255,7 +1266,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures pinpoint 0.1.6 to adapt to many kinds of systems.
+\`configure' configures pinpoint 0.1.8 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1295,6 +1306,7 @@
   --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
   --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
   --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
+  --runstatedir=DIR       modifiable per-process data [LOCALSTATEDIR/run]
   --libdir=DIR            object code libraries [EPREFIX/lib]
   --includedir=DIR        C header files [PREFIX/include]
   --oldincludedir=DIR     C header files for non-gcc [/usr/include]
@@ -1321,7 +1333,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of pinpoint 0.1.6:";;
+     short | recursive ) echo "Configuration of pinpoint 0.1.8:";;
    esac
   cat <<\_ACEOF
 
@@ -1427,7 +1439,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-pinpoint configure 0.1.6
+pinpoint configure 0.1.8
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1561,7 +1573,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by pinpoint $as_me 0.1.6, which was
+It was created by pinpoint $as_me 0.1.8, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -2425,7 +2437,7 @@
 
 # Define the identity of the package.
  PACKAGE='pinpoint'
- VERSION='0.1.6'
+ VERSION='0.1.8'
 
 
 # Some tools Automake needs.
@@ -2669,8 +2681,8 @@
 
 PINPOINT_MAJOR_VERSION=0
 PINPOINT_MINOR_VERSION=1
-PINPOINT_MICRO_VERSION=6
-PINPOINT_VERSION=0.1.6
+PINPOINT_MICRO_VERSION=8
+PINPOINT_VERSION=0.1.8
 
 
 
@@ -4286,7 +4298,7 @@
 fi
 
 
-PINPOINT_DEPS="clutter-1.0 >= 1.12 gio-2.0 >= 2.26 cairo-pdf pangocairo 
gdk-pixbuf-2.0"
+PINPOINT_DEPS="clutter-gtk-1.0 >= 1.6 clutter-1.0 >= 1.23.7 gio-2.0 >= 2.26 
cairo-pdf pangocairo gdk-pixbuf-2.0"
 
 
   list=-Wall
@@ -4333,18 +4345,6 @@
 
 
 
-# Do we have clutter compiled for x11?
-if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists 
--print-errors \"clutter-x11-1.0\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "clutter-x11-1.0") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-
-$as_echo "#define HAVE_CLUTTER_X11 1" >>confdefs.h
-
-fi
-
 # PDF output support
 # Check whether --enable-pdf was given.
 if test "${enable_pdf+set}" = set; then :
@@ -5208,7 +5208,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by pinpoint $as_me 0.1.6, which was
+This file was extended by pinpoint $as_me 0.1.8, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -5274,7 +5274,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; 
s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-pinpoint config.status 0.1.6
+pinpoint config.status 0.1.8
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pinpoint-0.1.6/configure.ac 
new/pinpoint-0.1.8/configure.ac
--- old/pinpoint-0.1.6/configure.ac     2015-07-28 00:10:15.000000000 +0200
+++ new/pinpoint-0.1.8/configure.ac     2015-09-22 20:12:16.000000000 +0200
@@ -1,6 +1,6 @@
 m4_define(pinpoint_major_version, 0)
 m4_define(pinpoint_minor_version, 1)
-m4_define(pinpoint_micro_version, 6)
+m4_define(pinpoint_micro_version, 8)
 
 m4_define([pinpoint_version],
           
[pinpoint_major_version.pinpoint_minor_version.pinpoint_micro_version])
@@ -27,16 +27,11 @@
 PKG_PROG_PKG_CONFIG
 AC_HEADER_STDC
 
-PINPOINT_DEPS="clutter-1.0 >= 1.12 gio-2.0 >= 2.26 cairo-pdf pangocairo 
gdk-pixbuf-2.0"
+PINPOINT_DEPS="clutter-gtk-1.0 >= 1.6 clutter-1.0 >= 1.23.7 gio-2.0 >= 2.26 
cairo-pdf pangocairo gdk-pixbuf-2.0"
 
 AS_COMPILER_FLAGS([MAINTAINER_CFLAGS], [-Wall])
 AC_SUBST(MAINTAINER_CFLAGS)
 
-# Do we have clutter compiled for x11?
-PKG_CHECK_EXISTS([clutter-x11-1.0],
-                [AC_DEFINE([HAVE_CLUTTER_X11], [1],
-                           [Whether clutter is compiled for x11])])
-
 # PDF output support
 AC_ARG_ENABLE([pdf],
              [AS_HELP_STRING([--enable-pdf=@<:no/auto/yes:>@],
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pinpoint-0.1.6/pinpoint.c 
new/pinpoint-0.1.8/pinpoint.c
--- old/pinpoint-0.1.6/pinpoint.c       2015-07-27 23:37:04.000000000 +0200
+++ new/pinpoint-0.1.8/pinpoint.c       2015-09-13 22:48:58.000000000 +0200
@@ -200,7 +200,6 @@
   context = g_option_context_new ("- Presentations made easy");
   g_option_context_add_main_entries (context, entries, NULL);
   g_option_context_add_group (context, clutter_get_option_group_without_init 
());
-  g_option_context_add_group (context, cogl_get_option_group ());
   if (!g_option_context_parse (context, &argc, &argv, &error))
     {
       g_print ("option parsing failed: %s\n", error->message);
@@ -225,10 +224,11 @@
         }
     }
 
+  if (!gtk_clutter_init (&argc, &argv))
+    return EXIT_FAILURE;
 #ifdef USE_CLUTTER_GST
-  clutter_gst_init (&argc, &argv);
-#else
-  clutter_init (&argc, &argv);
+  if (!clutter_gst_init (&argc, &argv))
+    return EXIT_FAILURE;
 #endif
 #ifdef USE_DAX
   dax_init (&argc, &argv);
@@ -952,17 +952,19 @@
               }
             break;
         case '#': /* comment */
-          if (startofline && ! pp_ignore_comments)
+          if (startofline)
             {
               const char *end = p + 1;
               while (*end != '\n' && *end != '\0')
                 {
-                  g_string_append_c (notes_str, *end);
+                  if (!pp_ignore_comments)
+                    g_string_append_c (notes_str, *end);
                   end++;
                 }
               if (end)
                 {
-                  g_string_append_c (notes_str, '\n');
+                  if (!pp_ignore_comments)
+                    g_string_append_c (notes_str, '\n');
                   p = end;
                   break;
                 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pinpoint-0.1.6/pinpoint.h 
new/pinpoint-0.1.8/pinpoint.h
--- old/pinpoint-0.1.6/pinpoint.h       2015-07-27 23:30:23.000000000 +0200
+++ new/pinpoint-0.1.8/pinpoint.h       2015-09-13 01:52:56.000000000 +0200
@@ -28,7 +28,7 @@
 #include "config.h"
 #endif
 
-#include <clutter/clutter.h>
+#include <clutter-gtk/clutter-gtk.h>
 
 typedef struct _PinPointPoint    PinPointPoint;
 typedef struct _PinPointRenderer PinPointRenderer;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pinpoint-0.1.6/pp-clutter.c 
new/pinpoint-0.1.8/pp-clutter.c
--- old/pinpoint-0.1.6/pp-clutter.c     2015-07-27 23:30:45.000000000 +0200
+++ new/pinpoint-0.1.8/pp-clutter.c     2015-09-22 19:35:07.000000000 +0200
@@ -27,9 +27,6 @@
 
 #include "pinpoint.h"
 
-#if HAVE_CLUTTER_X11
-#include <clutter/x11/clutter-x11.h>
-#endif
 #include <gio/gio.h>
 #ifdef USE_CLUTTER_GST
 #include <clutter-gst/clutter-gst.h>
@@ -41,6 +38,9 @@
 #include <stdlib.h>
 #include <string.h>
 
+#define DEFAULT_WIDTH (800)
+#define DEFAULT_HEIGHT (600)
+
 void cairo_renderer_unset_cr (PinPointRenderer *pp_renderer);
 
 void cairo_renderer_set_cr (PinPointRenderer *pp_renderer,
@@ -87,16 +87,15 @@
 PinPointRenderer *pp_cairo_renderer   (void);
 #endif
 
-typedef enum _PPClutterBackend
-{
-  PP_CLUTTER_BACKEND_X11,
-  PP_CLUTTER_BACKEND_UNKNOWN
-} PPClutterBackend;
-
 typedef struct _ClutterRenderer
 {
   PinPointRenderer renderer;
+
+  GtkApplication *application;
+
   GHashTable      *bg_cache;    /* only load the same backgrounds once */
+
+  GtkWidget       *window;
   ClutterActor    *stage;
   ClutterActor    *root;
 
@@ -117,6 +116,7 @@
   gboolean         autoadvance;
 
   gboolean         speaker_mode;
+  GtkWidget       *speaker_window;
   ClutterActor    *speaker_screen;
 
   gdouble          slide_start_time;
@@ -154,16 +154,11 @@
 
   PinPointRenderer *cairo_renderer;
 
-  /* Proxy object for the Gnome Session Manager; used to inhibit suspend during
-   * presentations.
-   */
-  GDBusProxy       *gsm;
-  /* Token returned by the Inhibit() method; passed to Uninhibit() when we
-   * leave fullscreen to tell GSM it's free to turn the screen off now.
+  /* Token returned by the gtk_application_inhibit() method; passed to
+   * gtk_application_uninhibit() when we leave fullscreen to tell GSM
+   * it's free to turn the screen off now.
    */
   guint32           inhibit_cookie;
-
-  PPClutterBackend  clutter_backend;
 } ClutterRenderer;
 
 typedef struct
@@ -288,103 +283,33 @@
   clutter_actor_set_position (data->background, bg_x, bg_y);
 }
 
-#ifdef HAVE_CLUTTER_X11
-static void pp_set_fullscreen_x11 (ClutterStage     *stage,
-                                   gboolean          fullscreen)
-{
-  static gboolean is_fullscreen = FALSE;
-  static float old_width=640, old_height=480;
-
-  struct {
-    unsigned long flags;
-    unsigned long functions;
-    unsigned long decorations;
-    long inputMode;
-    unsigned long status;
-  } MWMHints = { 2, 0, 0, 0, 0};
-
-  Display *xdisplay = clutter_x11_get_default_display ();
-  int      xscreen  = clutter_x11_get_default_screen ();
-  Atom     wm_hints = XInternAtom(xdisplay, "_MOTIF_WM_HINTS", True);
-  Window   xwindow  = clutter_x11_get_stage_window (stage);
-
-  if (!pp_maximized)
-    return clutter_stage_set_fullscreen (stage, fullscreen);
-
-  pp_fullscreen = fullscreen;
-  if (is_fullscreen == fullscreen)
-    return;
-  is_fullscreen = fullscreen;
-
-  if (fullscreen)
-    {
-      int full_width = DisplayWidth (xdisplay, xscreen);
-      int full_height = DisplayHeight (xdisplay, xscreen)+5;
-        /* avoid being detected as fullscreen, workaround for some
-           windowmanagers  */
-      clutter_actor_get_size (CLUTTER_ACTOR (stage), &old_width, &old_height);
-
-      if (wm_hints != None)
-        XChangeProperty (xdisplay, xwindow, wm_hints, wm_hints, 32,
-                         PropModeReplace, (guchar*)&MWMHints,
-                         sizeof(MWMHints)/sizeof(long));
-      clutter_actor_set_size (CLUTTER_ACTOR (stage), full_width, full_height);
-      XMoveResizeWindow (xdisplay, xwindow,
-                         0, 0, full_width, full_height);
-    }
-  else
-    {
-      MWMHints.decorations = 7;
-      if (wm_hints != None )
-        XChangeProperty (xdisplay, xwindow, wm_hints, wm_hints, 32,
-                         PropModeReplace, (guchar*)&MWMHints,
-                         sizeof(MWMHints)/sizeof(long));
-      clutter_stage_set_fullscreen (stage, FALSE);
-      clutter_actor_set_size (CLUTTER_ACTOR (stage), old_width, old_height);
-    }
+static void
+pp_monitor_window_state (GtkWidget           *widget,
+                         GdkEventWindowState *event,
+                         gpointer             user_data)
+{
+  gboolean fullscreen = (event->new_window_state & 
GDK_WINDOW_STATE_FULLSCREEN) != 0;
+  g_object_set_data (G_OBJECT (widget),
+                     "fullscreen-state", GUINT_TO_POINTER (fullscreen));
 }
 
-static gboolean pp_get_fullscreen_x11 (ClutterStage *stage)
-{
-  if (!pp_maximized)
-    return clutter_stage_get_fullscreen (stage);
-  return pp_fullscreen;
-}
-#endif
-
 static void
-pp_set_fullscreen (ClutterRenderer  *renderer,
-                   ClutterStage     *stage,
-                   gboolean          fullscreen)
-{
-  switch (renderer->clutter_backend)
-    {
-#ifdef HAVE_CLUTTER_X11
-    case PP_CLUTTER_BACKEND_X11:
-      pp_set_fullscreen_x11 (stage, fullscreen);
-      break;
-#endif
-
-    default:
-      clutter_stage_set_fullscreen (stage, fullscreen);
-      break;
-    }
+pp_set_fullscreen (ClutterRenderer *renderer,
+                   GtkWindow       *window,
+                   gboolean         fullscreen)
+{
+  if (fullscreen)
+    gtk_window_fullscreen (window);
+  else
+    gtk_window_unfullscreen (window);
 }
 
 static gboolean
 pp_get_fullscreen (ClutterRenderer *renderer,
-                   ClutterStage    *stage)
+                   GtkWindow       *window)
 {
-  switch (renderer->clutter_backend)
-    {
-#ifdef HAVE_CLUTTER_X11
-    case PP_CLUTTER_BACKEND_X11:
-      return pp_get_fullscreen_x11 (stage);
-#endif
-
-    default:
-      return clutter_stage_get_fullscreen (stage);
-    }
+  return GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (window),
+                                              "fullscreen-state"));
 }
 
 static void
@@ -439,8 +364,8 @@
   PinPointPoint *point = pp_slidep->data;
 
   if (clutter_event_type (event) == CLUTTER_KEY_PRESS &&
-      (clutter_event_get_key_symbol (event) == CLUTTER_Escape ||
-       clutter_event_get_key_symbol (event) == CLUTTER_Tab))
+      (clutter_event_get_key_symbol (event) == CLUTTER_KEY_Escape ||
+       clutter_event_get_key_symbol (event) == CLUTTER_KEY_Tab))
     {
       clutter_actor_grab_key_focus (renderer->stage);
       pp_actor_animate (renderer->commandline,
@@ -512,7 +437,8 @@
   clutter_stage_show_cursor (CLUTTER_STAGE (actor));
   hide_cursor = g_timeout_add (500, hide_cursor_cb, actor);
 
-  if (!pp_get_fullscreen (renderer, CLUTTER_STAGE (actor)))
+  if (!pp_get_fullscreen (renderer,
+                          GTK_WINDOW (((ClutterRenderer *)renderer)->window)))
     return FALSE;
 
   clutter_actor_get_size (CLUTTER_RENDERER (renderer)->stage,
@@ -579,7 +505,7 @@
             gpointer      data)
 {
   ClutterRenderer *renderer = CLUTTER_RENDERER (data);
-  if (!renderer->speaker_screen) {
+  if (!renderer->speaker_window) {
     return TRUE;
   }
   if (renderer->timer_paused)
@@ -721,11 +647,25 @@
 static void
 clutter_renderer_init_speaker_screen (ClutterRenderer *renderer)
 {
+  GtkWidget *embed;
 
-  renderer->speaker_screen = clutter_stage_new ();
-  clutter_stage_set_title(CLUTTER_STAGE(renderer->speaker_screen), "Pinpoint 
speaker screen");
-
+  renderer->speaker_window = g_object_new (GTK_TYPE_WINDOW,
+                                           "type", GTK_WINDOW_TOPLEVEL,
+                                           "hide-titlebar-when-maximized", 
TRUE,
+                                           "resizable", TRUE,
+                                           "title", "Pinpoint speaker screen",
+                                           "default-width", DEFAULT_WIDTH,
+                                           "default-height", DEFAULT_HEIGHT,
+                                           NULL);
+  gtk_application_add_window (renderer->application,
+                              GTK_WINDOW (renderer->speaker_window));
+  g_signal_connect (renderer->speaker_window, "window-state-event",
+                    G_CALLBACK (pp_monitor_window_state), NULL);
+  embed = gtk_clutter_embed_new ();
+  gtk_container_add (GTK_CONTAINER (renderer->speaker_window),
+                     embed);
 
+  renderer->speaker_screen = gtk_clutter_embed_get_stage (GTK_CLUTTER_EMBED 
(embed));
 
   renderer->speaker_notes = g_object_new (CLUTTER_TYPE_TEXT,
                                 "x", 10.0,
@@ -866,7 +806,6 @@
 
   clutter_actor_set_background_color (renderer->speaker_screen, &black);
   clutter_actor_set_background_color (renderer->speaker_screen, &black);
-  clutter_stage_set_user_resizable (CLUTTER_STAGE (renderer->speaker_screen), 
TRUE);
 
 
   renderer->speaker_preview_bar = pp_rectangle_new_with_color (&lightgray);
@@ -917,16 +856,20 @@
   g_signal_connect (renderer->speaker_next, "button-press-event",
                     G_CALLBACK (go_next), renderer);
 
-  g_signal_connect (renderer->speaker_screen, "delete-event",
+  g_signal_connect (renderer->speaker_window, "delete-event",
                     G_CALLBACK (speaker_screen_deleted), renderer);
+
+  gtk_widget_show_all (embed);
 }
 
 static gboolean
-stage_deleted (ClutterStage *stage,
-               ClutterEvent *event,
-               gpointer      user_data)
+window_deleted (ClutterStage *stage,
+                ClutterEvent *event,
+                gpointer      user_data)
 {
-  clutter_main_quit ();
+  ClutterRenderer *renderer = CLUTTER_RENDERER (user_data);
+
+  g_application_quit (G_APPLICATION (renderer->application));
 
   return TRUE;
 }
@@ -938,11 +881,34 @@
   ClutterRenderer *renderer = CLUTTER_RENDERER (pp_renderer);
   GFileMonitor *monitor;
   ClutterActor *stage;
-  GDBusConnection *session_bus;
-  ClutterBackend *backend;
+  GtkWidget *embed;
 
-  renderer->stage = stage = clutter_stage_new ();
-  clutter_stage_set_title(CLUTTER_STAGE(stage), "Pinpoint presentation");
+  renderer->application = gtk_application_new ("org.gnome.Pinpoint",
+                                               G_APPLICATION_NON_UNIQUE);
+  g_application_register (G_APPLICATION (renderer->application), NULL, NULL);
+
+  renderer->window = g_object_new (GTK_TYPE_WINDOW,
+                                   "type", GTK_WINDOW_TOPLEVEL,
+                                   "hide-titlebar-when-maximized", TRUE,
+                                   "resizable", TRUE,
+                                   "title", "Pinpoint presentation",
+                                   "default-width", DEFAULT_WIDTH,
+                                   "default-height", DEFAULT_HEIGHT,
+                                   NULL);
+  g_signal_connect_swapped (renderer->application, "activate",
+                            G_CALLBACK (gtk_window_present), renderer->window);
+  gtk_application_add_window (renderer->application,
+                              GTK_WINDOW (renderer->window));
+  g_signal_connect (renderer->window, "window-state-event",
+                    G_CALLBACK (pp_monitor_window_state), NULL);
+  g_signal_connect (renderer->window, "delete-event",
+                    G_CALLBACK (window_deleted), renderer);
+
+  embed = gtk_clutter_embed_new ();
+  gtk_container_add (GTK_CONTAINER (renderer->window), embed);
+  gtk_window_set_focus (GTK_WINDOW (renderer->window), embed);
+
+  renderer->stage = stage = gtk_clutter_embed_get_stage (GTK_CLUTTER_EMBED 
(embed));
   renderer->root = clutter_actor_new ();
   renderer->curtain = pp_rectangle_new_with_color (&black);
   renderer->rest_y = STARTPOS;
@@ -954,15 +920,6 @@
   renderer->commandline_shading = pp_rectangle_new_with_color (&black);
   renderer->commandline = clutter_text_new ();
 
-  /* Clutter doesn't seem to have a good way to infer which backend it
-     is using so we'll try to guess from the name of the backend
-     class */
-  backend = clutter_get_default_backend ();
-  if (strcmp (G_OBJECT_TYPE_NAME (backend), "ClutterBackendX11") == 0)
-    renderer->clutter_backend = PP_CLUTTER_BACKEND_X11;
-  else
-    renderer->clutter_backend = PP_CLUTTER_BACKEND_UNKNOWN;
-
   clutter_actor_set_size (renderer->curtain, 10000, 10000);
   clutter_actor_hide (renderer->curtain);
   clutter_actor_set_opacity (renderer->shading, 0x77);
@@ -987,12 +944,9 @@
   if (pp_speakermode)
     toggle_speaker_screen (renderer);
 
-  clutter_actor_show (stage);
-
+  gtk_widget_show_all (renderer->window);
 
   clutter_actor_set_background_color (stage, &black);
-  g_signal_connect (stage, "delete-event",
-                    G_CALLBACK (stage_deleted), renderer);
   g_signal_connect (stage, "key-press-event",
                     G_CALLBACK (key_pressed), renderer);
   g_signal_connect (stage, "button-press-event",
@@ -1021,10 +975,8 @@
   g_signal_connect (renderer->commandline, "notify::width",
                     G_CALLBACK (commandline_notify_cb), renderer);
 
-  clutter_stage_set_user_resizable (CLUTTER_STAGE (stage), TRUE);
-
   if (pp_fullscreen) {
-    pp_set_fullscreen (renderer, CLUTTER_STAGE (stage), TRUE);
+    pp_set_fullscreen (renderer, GTK_WINDOW (renderer->window), TRUE);
     pp_inhibit (renderer, pp_fullscreen);
   }
 
@@ -1042,22 +994,6 @@
 
   renderer->cairo_renderer = pp_cairo_renderer ();
   renderer->cairo_renderer->init (renderer->cairo_renderer, pinpoint_file);
-
-  session_bus = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, NULL);
-  if (session_bus != NULL)
-    {
-      renderer->gsm = g_dbus_proxy_new_sync (session_bus,
-                                             
G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES |
-                                             
G_DBUS_PROXY_FLAGS_DO_NOT_CONNECT_SIGNALS |
-                                             
G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START,
-                                             NULL,
-                                             "org.gnome.SessionManager",
-                                             "/org/gnome/SessionManager",
-                                             "org.gnome.SessionManager",
-                                             NULL,
-                                             NULL);
-      g_clear_object (&session_bus);
-    }
 }
 
 static gboolean update_speaker_screen (ClutterRenderer *renderer);
@@ -1073,7 +1009,7 @@
   renderer->total_seconds = point_defaults->duration * 60;
 
   g_timeout_add (15, (GSourceFunc)update_speaker_screen, renderer);
-  clutter_main ();
+  g_application_run (G_APPLICATION (renderer->application), 0, NULL);
 }
 
 static void
@@ -1081,9 +1017,10 @@
 {
   ClutterRenderer *renderer = CLUTTER_RENDERER (pp_renderer);
 
-  clutter_actor_destroy (renderer->stage);
+  gtk_widget_destroy (renderer->window);
+  gtk_widget_destroy (renderer->speaker_window);
+
   g_hash_table_unref (renderer->bg_cache);
-  g_clear_object (&renderer->gsm);
 }
 
 static ClutterActor *
@@ -1377,81 +1314,53 @@
     toggle_autoadvance (NULL, NULL, renderer);
 }
 
-
-static void
-toggle_speaker_screen (ClutterRenderer *renderer)
+static gboolean
+toggle_speaker_screen_internal (ClutterRenderer *renderer)
 {
-  if (!renderer->speaker_screen)
+  if (!renderer->speaker_window)
     clutter_renderer_init_speaker_screen (renderer);
   if (renderer->speaker_mode)
     {
       renderer->speaker_mode = FALSE;
-      clutter_actor_hide (renderer->speaker_screen);
+      gtk_widget_hide (renderer->speaker_window);
     }
   else
     {
       renderer->speaker_mode = TRUE;
-      clutter_actor_show (renderer->speaker_screen);
+      gtk_widget_show_all (renderer->speaker_window);
     }
+  return FALSE;
+}
+
+static void
+toggle_speaker_screen (ClutterRenderer *renderer)
+{
+  /* Because of the complex interaction between Clutter & GTK+, we
+   * need to break out the event processing chain. This timeout ensure
+   * we don't process an event in each framework within the same
+   * call stack.
+   */
+  g_timeout_add (0, (GSourceFunc) toggle_speaker_screen_internal, renderer);
 }
 
 static void
 pp_inhibit (ClutterRenderer *renderer,
             gboolean         fullscreen)
 {
-#if HAVE_CLUTTER_X11
-  if (renderer->clutter_backend != PP_CLUTTER_BACKEND_X11)
-    return;
-
-  /* Hey maybe we don't have D-Bus. */
-  if (renderer->gsm == NULL)
-    return;
-
   if (fullscreen)
     {
-      GVariant *args = g_variant_new ("(susu)",
-                                      "Pinpoint",
-                                      clutter_x11_get_stage_window (
-                                          CLUTTER_STAGE (renderer->stage)),
-                                      "Presenting some blingin' slides",
-                                      /* The flag '8' means "Inhibit the
-                                       * session being marked as idle", as
-                                       * opposed to logging out, user
-                                       * switching, or suspending.
-                                       */
-                                      8);
-      GVariant *ret = g_dbus_proxy_call_sync (renderer->gsm,
-                                              "Inhibit",
-                                              args,
-                                              G_DBUS_CALL_FLAGS_NONE,
-                                              -1,
-                                              NULL,
-                                              NULL);
-
-      if (ret != NULL)
-        {
-          if (g_variant_is_of_type (ret, G_VARIANT_TYPE ("(u)")))
-            g_variant_get (ret, "(u)", &renderer->inhibit_cookie);
-
-          g_variant_unref (ret);
-        }
-      /* Bleh, maybe this is an older version of Gnome where it was the
-       * screensaver which had the inhibition API.
-       */
+      renderer->inhibit_cookie =
+        gtk_application_inhibit (renderer->application,
+                                 GTK_WINDOW (renderer->window),
+                                 GTK_APPLICATION_INHIBIT_IDLE,
+                                 "Presenting some blingin' slides");
     }
   else if (renderer->inhibit_cookie != 0)
     {
-      g_dbus_proxy_call_sync (renderer->gsm,
-                              "Uninhibit",
-                              g_variant_new ("(u)", renderer->inhibit_cookie),
-                              G_DBUS_CALL_FLAGS_NONE,
-                              -1,
-                              NULL,
-                              NULL);
+      gtk_application_uninhibit (renderer->application,
+                                 renderer->inhibit_cookie);
       renderer->inhibit_cookie = 0;
     }
-  /* else I guess Inhibit() failed. */
-#endif /* HAVE_CLUTTER_X11 */
 }
 
 static gboolean
@@ -1462,75 +1371,75 @@
   if (event) /* There is no event for the first triggering */
   switch (clutter_event_get_key_symbol (event))
     {
-      case CLUTTER_Left:
-      case CLUTTER_Up:
-      case CLUTTER_BackSpace:
-      case CLUTTER_Prior:
+      case CLUTTER_KEY_Left:
+      case CLUTTER_KEY_Up:
+      case CLUTTER_KEY_BackSpace:
+      case CLUTTER_KEY_Prior:
         prev_slide (renderer);
         break;
-      case CLUTTER_Right:
-      case CLUTTER_space:
-      case CLUTTER_Next:
-      case CLUTTER_Down:
+      case CLUTTER_KEY_Right:
+      case CLUTTER_KEY_space:
+      case CLUTTER_KEY_Next:
+      case CLUTTER_KEY_Down:
         next_slide (renderer);
         break;
-      case CLUTTER_Escape:
-      case CLUTTER_Q:
-      case CLUTTER_q:
-        clutter_main_quit ();
+      case CLUTTER_KEY_Escape:
+      case CLUTTER_KEY_Q:
+      case CLUTTER_KEY_q:
+        g_application_quit (G_APPLICATION (renderer->application));
         break;
-      case CLUTTER_F1:
+      case CLUTTER_KEY_F1:
         {
           gboolean was_fullscreen =
             pp_get_fullscreen (renderer,
-                               CLUTTER_STAGE (renderer->stage));
+                               GTK_WINDOW (renderer->window));
           toggle_speaker_screen (renderer);
-          if (renderer->speaker_mode && renderer->speaker_screen)
+          if (renderer->speaker_mode && renderer->speaker_window)
             pp_set_fullscreen (renderer,
-                               CLUTTER_STAGE (renderer->speaker_screen),
+                               GTK_WINDOW (renderer->speaker_window),
                                was_fullscreen);
         }
         break;
-      case CLUTTER_F2:
+      case CLUTTER_KEY_F2:
         if (renderer->autoadvance)
           renderer->autoadvance = FALSE;
         else
           renderer->autoadvance = TRUE;
         break;
-      case CLUTTER_F11:
-        case CLUTTER_F:
-        case CLUTTER_f:
+      case CLUTTER_KEY_F11:
+      case CLUTTER_KEY_F:
+      case CLUTTER_KEY_f:
         {
           gboolean was_fullscreen =
             pp_get_fullscreen (renderer,
-                               CLUTTER_STAGE (renderer->stage));
+                               GTK_WINDOW (renderer->window));
           pp_set_fullscreen (renderer,
-                             CLUTTER_STAGE (renderer->stage),
+                             GTK_WINDOW (renderer->window),
                              !was_fullscreen);
-          if (renderer->speaker_mode && renderer->speaker_screen)
+          if (renderer->speaker_mode && renderer->speaker_window)
             pp_set_fullscreen (renderer,
-                               CLUTTER_STAGE (renderer->speaker_screen),
+                               GTK_WINDOW (renderer->speaker_window),
                                !was_fullscreen);
 
           pp_inhibit (renderer, !was_fullscreen);
         }
         break;
-      case CLUTTER_Return:
+      case CLUTTER_KEY_Return:
         action_slide (renderer);
         break;
-      case CLUTTER_Tab:
+      case CLUTTER_KEY_Tab:
         activate_commandline (renderer);
         break;
-      case CLUTTER_b:
-      case CLUTTER_B:
-        if (CLUTTER_ACTOR_IS_VISIBLE (renderer->curtain))
+      case CLUTTER_KEY_b:
+      case CLUTTER_KEY_B:
+        if (clutter_actor_is_visible (renderer->curtain))
           clutter_actor_hide (renderer->curtain);
         else
           clutter_actor_show (renderer->curtain);
         break;
-      case CLUTTER_H:
-      case CLUTTER_h:
-      case CLUTTER_Home:
+      case CLUTTER_KEY_H:
+      case CLUTTER_KEY_h:
+      case CLUTTER_KEY_Home:
         start (NULL, NULL, renderer);
         break;
     }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pinpoint-0.1.6/transitions/Makefile.in 
new/pinpoint-0.1.8/transitions/Makefile.in
--- old/pinpoint-0.1.6/transitions/Makefile.in  2015-07-28 00:10:17.000000000 
+0200
+++ new/pinpoint-0.1.8/transitions/Makefile.in  2015-09-22 20:12:20.000000000 
+0200
@@ -239,6 +239,7 @@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@


Reply via email to