Hello community,

here is the log from the commit of package cairomm for openSUSE:Factory checked 
in at 2017-01-25 23:35:04
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/cairomm (Old)
 and      /work/SRC/openSUSE:Factory/.cairomm.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "cairomm"

Changes:
--------
--- /work/SRC/openSUSE:Factory/cairomm/cairomm.changes  2016-12-15 
10:42:51.286446525 +0100
+++ /work/SRC/openSUSE:Factory/.cairomm.new/cairomm.changes     2017-01-25 
23:35:05.424465869 +0100
@@ -1,0 +2,9 @@
+Fri Jan 20 09:11:49 UTC 2017 - [email protected]
+
+- Update to version 1.15.3:
+  + RefPtr: This is now an alias for std::shared_ptr<>. These
+    should be instatiated via Cairo::make_refptr_for_instance(),
+    though that should never be necessary anyway outside of the
+    cairomm implementation itself.
+
+-------------------------------------------------------------------

Old:
----
  cairomm-1.15.2.tar.xz

New:
----
  cairomm-1.15.3.tar.xz

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

Other differences:
------------------
++++++ cairomm.spec ++++++
--- /var/tmp/diff_new_pack.zvEfWS/_old  2017-01-25 23:35:06.180351974 +0100
+++ /var/tmp/diff_new_pack.zvEfWS/_new  2017-01-25 23:35:06.188350769 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package cairomm
 #
-# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2017 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:           cairomm
-Version:        1.15.2
+Version:        1.15.3
 Release:        0
 Summary:        C++ Interface for Cairo
 License:        LGPL-2.1+

++++++ _service ++++++
--- /var/tmp/diff_new_pack.zvEfWS/_old  2017-01-25 23:35:06.268338716 +0100
+++ /var/tmp/diff_new_pack.zvEfWS/_new  2017-01-25 23:35:06.276337511 +0100
@@ -2,8 +2,8 @@
   <service name="tar_scm" mode="disabled">
     <param name="url">git://anongit.freedesktop.org/cairomm</param>
     <param name="scm">git</param>
-    <param name="versionformat">1.15.2</param>
-    <param name="revision">refs/tags/v1.15.2</param>
+    <param name="versionformat">1.15.3</param>
+    <param name="revision">refs/tags/v1.15.3</param>
   </service>
   <service name="recompress" mode="disabled">
     <param name="file">*.tar</param>

++++++ cairomm-1.15.2.tar.xz -> cairomm-1.15.3.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cairomm-1.15.2/NEWS new/cairomm-1.15.3/NEWS
--- old/cairomm-1.15.2/NEWS     2016-12-07 11:24:02.000000000 +0100
+++ new/cairomm-1.15.3/NEWS     2016-12-13 17:54:24.000000000 +0100
@@ -1,3 +1,12 @@
+1.15.3 (unstable):
+(Distros should probably not package this yet.)
+
+* RefPtr: This is now an alias for std::shared_ptr<>.
+  These should be instatiated via
+  Cairo::make_refptr_for_instance(), though that should
+  never be necessary anyway outside of the cairomm
+  implementation itself.
+
 1.15.2 (unstable):
 (Distros should probably not package this yet.)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cairomm-1.15.2/cairomm/context.cc 
new/cairomm-1.15.3/cairomm/context.cc
--- old/cairomm-1.15.2/cairomm/context.cc       2016-12-07 11:24:02.000000000 
+0100
+++ new/cairomm-1.15.3/cairomm/context.cc       2016-12-13 17:54:24.000000000 
+0100
@@ -17,9 +17,9 @@
  */
 
 /* M_PI is defined in math.h in the case of Microsoft Visual C++ */
-#if defined(_MSC_VER)
+#if defined(_WIN32)
 #define _USE_MATH_DEFINES
-#endif 
+#endif
 
 #include <cairommconfig.h>
 #include <cairomm/context.h>
@@ -29,11 +29,6 @@
 #include <cairomm/script_surface.h>
 #include <cairomm/scaledfont.h>
 
-/* M_PI is defined in math.h in the case of Microsoft Visual C++ */
-#if defined(_MSC_VER)
-#define _USE_MATH_DEFINES
-#endif
-
 /* Solaris et. al. need math.h for M_PI too */
 #include <cmath>
 
@@ -51,7 +46,7 @@
 
 RefPtr<Context> Context::create(const RefPtr<Surface>& target)
 {
-  return RefPtr<Context>(new Context(target));
+  return make_refptr_for_instance<Context>(new Context(target));
 }
 
 Context::Context(cairo_t* cobject, bool has_reference)
@@ -511,7 +506,7 @@
 {
   auto font = cairo_get_scaled_font(cobj());
   check_object_status_and_throw_exception(*this);
-  return RefPtr<ScaledFont>(new ScaledFont(font, false /* does not have 
reference */));
+  return make_refptr_for_instance<ScaledFont>(new ScaledFont(font, false /* 
does not have reference */));
 }
 
 void Context::show_text(const std::string& utf8)
@@ -546,14 +541,14 @@
 {
   auto cfontface = cairo_get_font_face(cobj());
   check_object_status_and_throw_exception(*this);
-  return RefPtr<FontFace>(new FontFace(cfontface, false /* does not have 
reference */));
+  return make_refptr_for_instance<FontFace>(new FontFace(cfontface, false /* 
does not have reference */));
 }
 
 RefPtr<const FontFace> Context::get_font_face() const
 {
   auto cfontface = cairo_get_font_face(const_cast<cobject*>(cobj()));
   check_object_status_and_throw_exception(*this);
-  return RefPtr<const FontFace>(new FontFace(cfontface, false /* does not have 
reference */));
+  return make_refptr_for_instance<const FontFace>(new FontFace(cfontface, 
false /* does not have reference */));
 }
 
 void Context::get_font_extents(FontExtents& extents) const
@@ -610,19 +605,19 @@
   switch (pattern_type)
   {
     case CAIRO_PATTERN_TYPE_SOLID:
-      return RefPtr<SolidPattern>(new SolidPattern(pattern, false /* does not 
have reference */));
+      return make_refptr_for_instance<SolidPattern>(new SolidPattern(pattern, 
false /* does not have reference */));
       break;
     case CAIRO_PATTERN_TYPE_SURFACE:
-      return RefPtr<SurfacePattern>(new SurfacePattern(pattern, false /* does 
not have reference */));
+      return make_refptr_for_instance<SurfacePattern>(new 
SurfacePattern(pattern, false /* does not have reference */));
       break;
     case CAIRO_PATTERN_TYPE_LINEAR:
-      return RefPtr<LinearGradient>(new LinearGradient(pattern, false /* does 
not have reference */));
+      return make_refptr_for_instance<LinearGradient>(new 
LinearGradient(pattern, false /* does not have reference */));
       break;
     case CAIRO_PATTERN_TYPE_RADIAL:
-      return RefPtr<RadialGradient>(new RadialGradient(pattern, false /* does 
not have reference */));
+      return make_refptr_for_instance<RadialGradient>(new 
RadialGradient(pattern, false /* does not have reference */));
       break;
     default:
-      return RefPtr<Pattern>(new Pattern(pattern, false /* does not have 
reference */));
+      return make_refptr_for_instance<Pattern>(new Pattern(pattern, false /* 
does not have reference */));
   }
 }
 
@@ -637,7 +632,7 @@
 {
   auto pattern = cairo_get_source(const_cast<cobject*>(cobj()));
   check_object_status_and_throw_exception(*this);
-  return RefPtr<const Pattern>::cast_const (get_pattern_wrapper (pattern));
+  return get_pattern_wrapper(pattern);
 }
 
 double Context::get_tolerance() const
@@ -735,16 +730,16 @@
   switch (surface_type)
   {
     case CAIRO_SURFACE_TYPE_IMAGE:
-      return RefPtr<ImageSurface>(new ImageSurface(surface, false /* does not 
have reference */));
+      return make_refptr_for_instance<ImageSurface>(new ImageSurface(surface, 
false /* does not have reference */));
       break;
 #if CAIRO_HAS_PDF_SURFACE
     case CAIRO_SURFACE_TYPE_PDF:
-      return RefPtr<PdfSurface>(new PdfSurface(surface, false /* does not have 
reference */));
+      return make_refptr_for_instance<PdfSurface>(new PdfSurface(surface, 
false /* does not have reference */));
       break;
 #endif
 #if CAIRO_HAS_PS_SURFACE
     case CAIRO_SURFACE_TYPE_PS:
-      return RefPtr<PsSurface>(new PsSurface(surface, false /* does not have 
reference */));
+      return make_refptr_for_instance<PsSurface>(new PsSurface(surface, false 
/* does not have reference */));
       break;
 #endif
 #if CAIRO_HAS_XLIB_SURFACE
@@ -754,7 +749,7 @@
 #endif
 #if CAIRO_HAS_GLITZ_SURFACE
     case CAIRO_SURFACE_TYPE_GLITZ:
-      return RefPtr<GlitzSurface>(new GlitzSurface(surface, false /* does not 
have reference */));
+      return make_refptr_for_instance<GlitzSurface>(new GlitzSurface(surface, 
false /* does not have reference */));
       break;
 #endif
 #if CAIRO_HAS_QUARTZ_SURFACE
@@ -764,7 +759,7 @@
 #endif
 #if CAIRO_HAS_SCRIPT_SURFACE
     case CAIRO_SURFACE_TYPE_SCRIPT:
-      return RefPtr<ScriptSurface>(new ScriptSurface(surface, false));
+      return make_refptr_for_instance<ScriptSurface>(new 
ScriptSurface(surface, false));
       break;
 #endif
 #if CAIRO_HAS_WIN32_SURFACE
@@ -774,7 +769,7 @@
 #endif
 #if CAIRO_HAS_SVG_SURFACE
     case CAIRO_SURFACE_TYPE_SVG:
-      return RefPtr<SvgSurface>(new SvgSurface(surface, false /* does not have 
reference */));
+      return make_refptr_for_instance<SvgSurface>(new SvgSurface(surface, 
false /* does not have reference */));
       break;
 #endif
     // the following surfaces are not directly supported in cairomm yet
@@ -783,7 +778,7 @@
     case CAIRO_SURFACE_TYPE_BEOS:
     case CAIRO_SURFACE_TYPE_XCB:
     default:
-      return RefPtr<Surface>(new Surface(surface, false /* does not have 
reference */));
+      return make_refptr_for_instance<Surface>(new Surface(surface, false /* 
does not have reference */));
   }
 }
 
@@ -798,7 +793,7 @@
 {
   auto surface = cairo_get_target(const_cast<cobject*>(cobj()));
   check_object_status_and_throw_exception(*this);
-  return RefPtr<const Surface>::cast_const (get_surface_wrapper (surface));
+  return get_surface_wrapper(surface);
 }
 
 Path* Context::copy_path() const
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cairomm-1.15.2/cairomm/context_surface_quartz.cc 
new/cairomm-1.15.3/cairomm/context_surface_quartz.cc
--- old/cairomm-1.15.2/cairomm/context_surface_quartz.cc        2016-12-07 
11:24:02.000000000 +0100
+++ new/cairomm-1.15.3/cairomm/context_surface_quartz.cc        2016-12-13 
17:54:24.000000000 +0100
@@ -29,9 +29,9 @@
 RefPtr<Surface> wrap_surface_quartz(cairo_surface_t* surface)
 {
 #if CAIRO_HAS_QUARTZ_SURFACE
-    return RefPtr<QuartzSurface>(new QuartzSurface(surface, false /* does not 
have reference */));
+    return make_refptr_for_instance<QuartzSurface>(new QuartzSurface(surface, 
false /* does not have reference */));
 #else
-    return RefPtr<Surface>(new Surface(surface, false /* does not have 
reference */));
+    return make_refptr_for_instance<Surface>(new Surface(surface, false /* 
does not have reference */));
 #endif
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cairomm-1.15.2/cairomm/context_surface_win32.cc 
new/cairomm-1.15.3/cairomm/context_surface_win32.cc
--- old/cairomm-1.15.2/cairomm/context_surface_win32.cc 2016-12-07 
11:24:02.000000000 +0100
+++ new/cairomm-1.15.3/cairomm/context_surface_win32.cc 2016-12-13 
17:54:24.000000000 +0100
@@ -29,9 +29,9 @@
 RefPtr<Surface> wrap_surface_win32(cairo_surface_t* surface)
 {
 #if CAIRO_HAS_WIN32_SURFACE
-    return RefPtr<Win32Surface>(new Win32Surface(surface, false /* does not 
have reference */));
+    return make_refptr_for_instance<Win32Surface>(new Win32Surface(surface, 
false /* does not have reference */));
 #else
-    return RefPtr<Surface>(new Surface(surface, false /* does not have 
reference */));
+    return make_refptr_for_instance<Surface>(new Surface(surface, false /* 
does not have reference */));
 #endif
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cairomm-1.15.2/cairomm/context_surface_xlib.cc 
new/cairomm-1.15.3/cairomm/context_surface_xlib.cc
--- old/cairomm-1.15.2/cairomm/context_surface_xlib.cc  2016-12-07 
11:24:02.000000000 +0100
+++ new/cairomm-1.15.3/cairomm/context_surface_xlib.cc  2016-12-13 
17:54:24.000000000 +0100
@@ -29,9 +29,9 @@
 RefPtr<Surface> wrap_surface_xlib(cairo_surface_t* surface)
 {
 #if CAIRO_HAS_XLIB_SURFACE
-    return RefPtr<XlibSurface>(new XlibSurface(surface, false /* does not have 
reference */));
+    return make_refptr_for_instance<XlibSurface>(new XlibSurface(surface, 
false /* does not have reference */));
 #else
-    return RefPtr<Surface>(new Surface(surface, false /* does not have 
reference */));
+    return make_refptr_for_instance<Surface>(new Surface(surface, false /* 
does not have reference */));
 #endif
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cairomm-1.15.2/cairomm/fontface.cc 
new/cairomm-1.15.3/cairomm/fontface.cc
--- old/cairomm-1.15.2/cairomm/fontface.cc      2016-12-07 11:24:02.000000000 
+0100
+++ new/cairomm-1.15.3/cairomm/fontface.cc      2016-12-13 17:54:24.000000000 
+0100
@@ -83,7 +83,7 @@
 RefPtr<ToyFontFace>
 ToyFontFace::create(const std::string& family, FontSlant slant, FontWeight 
weight)
 {
-  return RefPtr<ToyFontFace>(new ToyFontFace(family, slant, weight));
+  return make_refptr_for_instance<ToyFontFace>(new ToyFontFace(family, slant, 
weight));
 }
 
 ToyFontFace::ToyFontFace(const std::string& family, FontSlant slant, 
FontWeight weight) :
@@ -142,8 +142,8 @@
   {
     try
     {
-      return instance->init(RefPtr<ScaledFont>(new ScaledFont(scaled_font)),
-                            RefPtr<Context>(new Context(cr)),
+      return instance->init(make_refptr_for_instance<ScaledFont>(new 
ScaledFont(scaled_font)),
+                            make_refptr_for_instance<Context>(new Context(cr)),
                             static_cast<FontExtents&>(*metrics));
     }
     catch(const std::exception& ex)
@@ -189,7 +189,7 @@
   {
     try
     {
-      return instance->unicode_to_glyph(RefPtr<ScaledFont>(new 
ScaledFont(scaled_font)),
+      return 
instance->unicode_to_glyph(make_refptr_for_instance<ScaledFont>(new 
ScaledFont(scaled_font)),
                                         unicode, *glyph);
     }
     catch(const std::exception& ex)
@@ -242,7 +242,7 @@
       auto local_flags = static_cast<TextClusterFlags>(0);
 
       auto status =
-        instance->text_to_glyphs(RefPtr<ScaledFont>(new
+        instance->text_to_glyphs(make_refptr_for_instance<ScaledFont>(new
                                                     ScaledFont(scaled_font)),
                                  utf8_str, glyph_v, cluster_v, local_flags);
 
@@ -335,8 +335,8 @@
   {
     try
     {
-      return instance->render_glyph(RefPtr<ScaledFont>(new 
ScaledFont(scaled_font)),
-                                    glyph, RefPtr<Context>(new Context(cr)),
+      return instance->render_glyph(make_refptr_for_instance<ScaledFont>(new 
ScaledFont(scaled_font)),
+                                    glyph, 
make_refptr_for_instance<Context>(new Context(cr)),
                                     static_cast<TextExtents&>(*metrics));
     }
     catch(const std::exception& ex)
@@ -380,7 +380,7 @@
 RefPtr<FtFontFace>
 FtFontFace::create(FT_Face face, int load_flags)
 {
-  return RefPtr<FtFontFace>(new FtFontFace(face, load_flags));
+  return make_refptr_for_instance<FtFontFace>(new FtFontFace(face, 
load_flags));
 }
 
 FtFontFace::FtFontFace(FT_Face face, int load_flags) :
@@ -394,7 +394,7 @@
 RefPtr<FtFontFace>
 FtFontFace::create(FcPattern* pattern)
 {
-  return RefPtr<FtFontFace>(new FtFontFace(pattern));
+  return make_refptr_for_instance<FtFontFace>(new FtFontFace(pattern));
 }
 
 FtFontFace::FtFontFace(FcPattern* pattern) :
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cairomm-1.15.2/cairomm/fontface.h 
new/cairomm-1.15.3/cairomm/fontface.h
--- old/cairomm-1.15.2/cairomm/fontface.h       2016-12-07 11:24:02.000000000 
+0100
+++ new/cairomm-1.15.3/cairomm/fontface.h       2016-12-13 17:54:24.000000000 
+0100
@@ -164,7 +164,7 @@
  *
  * public:
  *   static Cairo::RefPtr<MyUserFont> create() {
- *     return Cairo::RefPtr<MyUserFont>(new MyUserFont);
+ *     return Cairo::make_refptr_for_instance<MyUserFont>(new MyUserFont);
  *
  * protected:
  *   // implement render_glyph() and any other virtual functions you want to 
override
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cairomm-1.15.2/cairomm/pattern.cc 
new/cairomm-1.15.3/cairomm/pattern.cc
--- old/cairomm-1.15.2/cairomm/pattern.cc       2016-12-07 11:24:02.000000000 
+0100
+++ new/cairomm-1.15.3/cairomm/pattern.cc       2016-12-13 17:54:24.000000000 
+0100
@@ -114,14 +114,14 @@
 {
   auto cobject = cairo_pattern_create_rgb(red, green, blue);
   check_status_and_throw_exception(cairo_pattern_status(cobject)); 
-  return RefPtr<SolidPattern>(new SolidPattern(cobject, true /* has reference 
*/));
+  return make_refptr_for_instance<SolidPattern>(new SolidPattern(cobject, true 
/* has reference */));
 }
 
 RefPtr<SolidPattern> SolidPattern::create_rgba(double red, double green, 
double blue, double alpha)
 {
   cairo_pattern_t* cobject  = cairo_pattern_create_rgba(red, green, blue, 
alpha);
   check_status_and_throw_exception(cairo_pattern_status(cobject));
-  return RefPtr<SolidPattern>(new SolidPattern(cobject, true /* has reference 
*/));
+  return make_refptr_for_instance<SolidPattern>(new SolidPattern(cobject, true 
/* has reference */));
 }
 
 
@@ -138,7 +138,7 @@
   // we can ignore the return value since we know this is a surface pattern
   cairo_pattern_get_surface(const_cast<cairo_pattern_t*>(m_cobject), &surface);
   check_object_status_and_throw_exception(*this);
-  return RefPtr<Surface>(new Surface(surface, false /* does not have reference 
*/));
+  return make_refptr_for_instance<Surface>(new Surface(surface, false /* does 
not have reference */));
 }
 
 RefPtr<const Surface>
@@ -149,7 +149,7 @@
 
 RefPtr<SurfacePattern> SurfacePattern::create(const RefPtr<Surface>& surface)
 {
-  return RefPtr<SurfacePattern>(new SurfacePattern(surface));
+  return make_refptr_for_instance<SurfacePattern>(new SurfacePattern(surface));
 }
 
 SurfacePattern::SurfacePattern(cairo_pattern_t* cobject, bool has_reference)
@@ -242,7 +242,7 @@
 
 RefPtr<LinearGradient> LinearGradient::create(double x0, double y0, double x1, 
double y1)
 {
-  return RefPtr<LinearGradient>(new LinearGradient(x0, y0, x1, y1));
+  return make_refptr_for_instance<LinearGradient>(new LinearGradient(x0, y0, 
x1, y1));
 }
 
 LinearGradient::LinearGradient(cairo_pattern_t* cobject, bool has_reference)
@@ -275,7 +275,7 @@
 
 RefPtr<RadialGradient> RadialGradient::create(double cx0, double cy0, double 
radius0, double cx1, double cy1, double radius1)
 {
-  return RefPtr<RadialGradient>(new RadialGradient(cx0, cy0, radius0, cx1, 
cy1, radius1));
+  return make_refptr_for_instance<RadialGradient>(new RadialGradient(cx0, cy0, 
radius0, cx1, cy1, radius1));
 }
 
 RadialGradient::RadialGradient(cairo_pattern_t* cobject, bool has_reference)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cairomm-1.15.2/cairomm/quartz_font.cc 
new/cairomm-1.15.3/cairomm/quartz_font.cc
--- old/cairomm-1.15.2/cairomm/quartz_font.cc   2016-12-07 11:24:02.000000000 
+0100
+++ new/cairomm-1.15.3/cairomm/quartz_font.cc   2016-12-13 17:54:24.000000000 
+0100
@@ -32,7 +32,7 @@
 
 RefPtr<QuartzFontFace> QuartzFontFace::create(CGFontRef font)
 {
-  return RefPtr<QuartzFontFace>(new QuartzFontFace(font));
+  return make_refptr_for_instance<QuartzFontFace>(new QuartzFontFace(font));
 }
 
 
@@ -45,7 +45,7 @@
 
 RefPtr<QuartzFontFace> QuartzFontFace::create(ATSUFontID font_id)
 {
-  return RefPtr<QuartzFontFace>(new QuartzFontFace(font_id));
+  return make_refptr_for_instance<QuartzFontFace>(new QuartzFontFace(font_id));
 }
 #endif
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cairomm-1.15.2/cairomm/quartz_surface.cc 
new/cairomm-1.15.3/cairomm/quartz_surface.cc
--- old/cairomm-1.15.2/cairomm/quartz_surface.cc        2016-12-07 
11:24:02.000000000 +0100
+++ new/cairomm-1.15.3/cairomm/quartz_surface.cc        2016-12-13 
17:54:24.000000000 +0100
@@ -43,14 +43,14 @@
   auto cobject = cairo_quartz_surface_create_for_cg_context(cg_context, 
           width, height);
   check_status_and_throw_exception(cairo_surface_status(cobject));
-  return RefPtr<QuartzSurface>(new QuartzSurface(cobject, true /* has 
reference */));
+  return make_refptr_for_instance<QuartzSurface>(new QuartzSurface(cobject, 
true /* has reference */));
 }
 
 RefPtr<QuartzSurface> QuartzSurface::create(Format format, int width, int 
height)
 {
   auto cobject = cairo_quartz_surface_create((cairo_format_t)format, width, 
height);
   check_status_and_throw_exception(cairo_surface_status(cobject));
-  return RefPtr<QuartzSurface>(new QuartzSurface(cobject, true /* has 
reference */));
+  return make_refptr_for_instance<QuartzSurface>(new QuartzSurface(cobject, 
true /* has reference */));
 }
 
 #endif // CAIRO_HAS_QUARTZ_SURFACE
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cairomm-1.15.2/cairomm/refptr.h 
new/cairomm-1.15.3/cairomm/refptr.h
--- old/cairomm-1.15.2/cairomm/refptr.h 2016-12-07 11:24:02.000000000 +0100
+++ new/cairomm-1.15.3/cairomm/refptr.h 2016-12-13 17:54:24.000000000 +0100
@@ -2,6 +2,8 @@
 #ifndef _cairo_REFPTR_H
 #define _cairo_REFPTR_H
 
+#include <memory>
+
 /* $Id: refptr.h,v 1.6 2006-09-27 18:38:57 murrayc Exp $ */
 
 /* Copyright 2005 The cairomm Development Team
@@ -27,7 +29,15 @@
 namespace Cairo
 {
 
-//TODO: Use std::shared_ptr<> instead when we can break ABI.
+template <class T_CppObject>
+void RefPtrDeleter(T_CppObject* object)
+{
+  if (!object)
+    return;
+
+  object->unreference();
+}
+
 /** RefPtr<> is a reference-counting shared smartpointer.
  *
  * Reference counting means that a shared reference count is incremented each
@@ -41,428 +51,17 @@
  * and unreference() cairo objects.
  */
 template <class T_CppObject>
-class RefPtr
-{
-public:
-  // Let the cast constructors and assignement operators access private data.
-  template <typename T_CastFrom>
-  friend class RefPtr;
-
-  /** Default constructor
-   *
-   * Afterwards it will be null and use of -> will cause a segmentation fault.
-   */
-  inline RefPtr() noexcept;
-  
-  /// Destructor - decrements reference count.
-  inline ~RefPtr() noexcept;
-
-  /** For use only in the internal implementation of cairomm, gtkmm, etc.
-   *
-   * This takes ownership of @a pCppObject, so it will be deleted when the 
-   * last RefPtr is deleted, for instance when it goes out of scope.
-   *
-   * This assumes that @a pCppObject already has a starting reference for its 
underlying cairo object,
-   * so that destruction of @a @pCppObject will cause a corresponding 
unreference of its underlying 
-   * cairo object. For instance, a cairo_*_create() function usually provides 
a starting reference, 
-   * but a cairo_*_get_*() function requires the caller to manually reference 
the returned object.
-   * In this case, you should call reference() on @a pCppObject before passing 
it to this constructor.
-   */
-  explicit inline RefPtr(T_CppObject* pCppObject) noexcept;
-
-  ///  For use only in the internal implementation of sharedptr.
-  explicit inline RefPtr(T_CppObject* pCppObject, int* refcount) noexcept;
-
-  /** Move constructor
-   */
-  inline RefPtr(RefPtr&& src) noexcept;
-
-  /** Move constructor (from different, but castable type).
-   */
-  template <class T_CastFrom>
-  inline RefPtr(RefPtr<T_CastFrom>&& src) noexcept;
-
-  /** Copy constructor
-   *
-   * This increments the shared reference count.
-   */
-  inline RefPtr(const RefPtr<T_CppObject>& src) noexcept;
-
-  /** Copy constructor (from different, but castable type).
-   *
-   * Increments the reference count.
-   */
-  template <class T_CastFrom>
-  inline RefPtr(const RefPtr<T_CastFrom>& src) noexcept;
-
-  /** Swap the contents of two RefPtr<>.
-   * This method swaps the internal pointers to T_CppObject.  This can be
-   * done safely without involving a reference/unreference cycle and is
-   * therefore highly efficient.
-   */
-  inline void swap(RefPtr<T_CppObject>& other) noexcept;
-
-  /// Copy from another RefPtr:
-  inline RefPtr<T_CppObject>& operator=(const RefPtr<T_CppObject>& src) 
noexcept;
-
-  /** Copy from different, but castable type).
-   *
-   * Increments the reference count.
-   */
-  template <class T_CastFrom>
-  inline RefPtr<T_CppObject>& operator=(const RefPtr<T_CastFrom>& src) 
noexcept;
-
-  /// Move assignment operator:
-  inline RefPtr& operator=(RefPtr&& src) noexcept;
-
-  /// Move assignment operator (from different, but castable type):
-  template <class T_CastFrom>
-  inline RefPtr& operator=(RefPtr<T_CastFrom>&& src) noexcept;
-
-  /// Tests whether the RefPtr<> point to the same underlying instance.
-  inline bool operator==(const RefPtr<T_CppObject>& src) const noexcept;
-  
-  /// See operator==().
-  inline bool operator!=(const RefPtr<T_CppObject>& src) const noexcept;
-
-  /** Dereferencing.
-   *
-   * Use the methods of the underlying instance like so:
-   * <code>refptr->memberfun()</code>.
-   */
-  inline T_CppObject* operator->() const noexcept;
-
-  /** Test whether the RefPtr<> points to any underlying instance.
-   *
-   * Mimics usage of ordinary pointers:
-   * @code
-   *   if (ptr)
-   *     do_something();
-   * @endcode
-   */
-  inline explicit operator bool() const noexcept;
-
-  /// Set underlying instance to 0, decrementing reference count of existing 
instance appropriately.
-  inline void clear() noexcept;
-
-
-  /** Dynamic cast to derived class.
-   *
-   * The RefPtr can't be cast with the usual notation so instead you can use
-   * @code
-   *   ptr_derived = RefPtr<Derived>::cast_dynamic(ptr_base);
-   * @endcode
-   */
-  template <class T_CastFrom>
-  static inline RefPtr<T_CppObject> cast_dynamic(const RefPtr<T_CastFrom>& 
src) noexcept;
-
-  /** Static cast to derived class.
-   *
-   * Like the dynamic cast; the notation is 
-   * @code
-   *   ptr_derived = RefPtr<Derived>::cast_static(ptr_base);
-   * @endcode
-   */
-  template <class T_CastFrom>
-  static inline RefPtr<T_CppObject> cast_static(const RefPtr<T_CastFrom>& src) 
noexcept;
-
-  /** Cast to non-const.
-   *
-   * The RefPtr can't be cast with the usual notation so instead you can use
-   * @code
-   *   ptr_unconst = RefPtr<UnConstType>::cast_const(ptr_const);
-   * @endcode
-   */
-  template <class T_CastFrom>
-  static inline RefPtr<T_CppObject> cast_const(const RefPtr<T_CastFrom>& src) 
noexcept;
-
-
-#ifndef DOXYGEN_IGNORE_THIS
-
-  // Warning: This is for internal use only.  Do not manually modify the
-  // reference count with this pointer.
-  inline int* refcount_() const noexcept { return pCppRefcount_; }
-
-#endif // DOXYGEN_IGNORE_THIS
-
-private:
-  void unref() noexcept;
-
-  T_CppObject* pCppObject_;
-  mutable int* pCppRefcount_;
-};
-
-
-#ifndef DOXYGEN_IGNORE_THIS
-
-// RefPtr<>::operator->() comes first here since it's used by other methods.
-// If it would come after them it wouldn't be inlined.
-
-template <class T_CppObject> inline
-T_CppObject* RefPtr<T_CppObject>::operator->() const noexcept
-{
-  return pCppObject_;
-}
-
-template <class T_CppObject> inline
-RefPtr<T_CppObject>::RefPtr() noexcept
-:
-  pCppObject_(nullptr),
-  pCppRefcount_(nullptr)
-{}
-
-template <class T_CppObject> inline
-RefPtr<T_CppObject>::~RefPtr() noexcept
-{
-  unref();
-}
-
-template <class T_CppObject> inline
-void RefPtr<T_CppObject>::unref() noexcept
-{
-  if(pCppRefcount_)
-  {
-    --(*pCppRefcount_);
-
-    if(*pCppRefcount_ == 0)
-    {
-      if(pCppObject_)
-      {
-        delete pCppObject_;
-        pCppObject_ = nullptr;
-      }
-
-      delete pCppRefcount_;
-      pCppRefcount_ = nullptr;
-    }
-  }
-}
-
-
-template <class T_CppObject> inline
-RefPtr<T_CppObject>::RefPtr(T_CppObject* pCppObject) noexcept
-:
-  pCppObject_(pCppObject),
-  pCppRefcount_(nullptr)
-{
-  if(pCppObject)
-  {
-    pCppRefcount_ = new int;
-    *pCppRefcount_ = 1; //This will be decremented in the destructor.
-  }
-}
-
-//Used by cast_*() implementations:
-template <class T_CppObject> inline
-RefPtr<T_CppObject>::RefPtr(T_CppObject* pCppObject, int* refcount) noexcept
-:
-  pCppObject_(pCppObject),
-  pCppRefcount_(refcount)
-{
-  if(pCppObject_ && pCppRefcount_)
-    ++(*pCppRefcount_);
-}
-
-template <class T_CppObject> inline
-RefPtr<T_CppObject>::RefPtr(const RefPtr<T_CppObject>& src) noexcept
-:
-  pCppObject_ (src.pCppObject_),
-  pCppRefcount_(src.pCppRefcount_)
-{
-  if(pCppObject_ && pCppRefcount_)
-    ++(*pCppRefcount_);
-}
-
-template <class T_CppObject> inline
-RefPtr<T_CppObject>::RefPtr(RefPtr&& src) noexcept
-:
-  pCppObject_ (src.pCppObject_),
-  pCppRefcount_ (src.pCppRefcount_)
-{
-  src.pCppObject_ = nullptr;
-  src.pCppRefcount_ = nullptr;
-}
-
-template <class T_CppObject>
-  template <class T_CastFrom>
-inline
-RefPtr<T_CppObject>::RefPtr(RefPtr<T_CastFrom>&& src) noexcept
-:
-  pCppObject_ (src.pCppObject_),
-  pCppRefcount_ (src.pCppRefcount_)
-{
-  src.pCppObject_ = nullptr;
-  src.pCppRefcount_ = nullptr;
-}
-
-// The templated ctor allows copy construction from any object that's
-// castable.  Thus, it does downcasts:
-//   base_ref = derived_ref
-template <class T_CppObject>
-  template <class T_CastFrom>
-inline
-RefPtr<T_CppObject>::RefPtr(const RefPtr<T_CastFrom>& src) noexcept
-:
-  // Without the friend delaration,
-  // a different RefPtr<> will not allow us access to pCppObject_.  We need
-  // to add a get_underlying() for this, but that would encourage incorrect
-  // use, so we use the less well-known operator->() accessor:
-  pCppObject_ (src.operator->()),
-  pCppRefcount_(src.refcount_())
-{
-  if(pCppObject_ && pCppRefcount_)
-    ++(*pCppRefcount_);
-}
-
-template <class T_CppObject> inline
-void RefPtr<T_CppObject>::swap(RefPtr<T_CppObject>& other) noexcept
-{
-  T_CppObject *const temp = pCppObject_;
-  int* temp_count = pCppRefcount_; 
-
-  pCppObject_ = other.pCppObject_;
-  pCppRefcount_ = other.pCppRefcount_;
-
-  other.pCppObject_ = temp;
-  other.pCppRefcount_ = temp_count;
-}
-
-template <class T_CppObject> inline
-RefPtr<T_CppObject>& RefPtr<T_CppObject>::operator=(const RefPtr<T_CppObject>& 
src) noexcept
-{
-  // In case you haven't seen the swap() technique to implement copy
-  // assignment before, here's what it does:
-  //
-  // 1) Create a temporary RefPtr<> instance via the copy ctor, thereby
-  //    increasing the reference count of the source object.
-  //
-  // 2) Swap the internal object pointers of *this and the temporary
-  //    RefPtr<>.  After this step, *this already contains the new pointer,
-  //    and the old pointer is now managed by temp.
-  //
-  // 3) The destructor of temp is executed, thereby unreferencing the
-  //    old object pointer.
-  //
-  // This technique is described in Herb Sutter's "Exceptional C++", and
-  // has a number of advantages over conventional approaches:
-  //
-  // - Code reuse by calling the copy ctor.
-  // - Strong exception safety for free.
-  // - Self assignment is handled implicitely.
-  // - Simplicity.
-  // - It just works and is hard to get wrong; i.e. you can use it without
-  //   even thinking about it to implement copy assignment whereever the
-  //   object data is managed indirectly via a pointer, which is very common.
-
-  RefPtr<T_CppObject> temp (src);
-  this->swap(temp);
-  return *this;
-}
-
-template <class T_CppObject> inline
-RefPtr<T_CppObject>& RefPtr<T_CppObject>::operator=(RefPtr&& src) noexcept
-{
-  RefPtr<T_CppObject> temp (std::move(src));
-  this->swap(temp);
-  src.pCppObject_ = nullptr;
-  src.pCppRefcount_ = nullptr;
-
-  return *this;
-}
-
-template <class T_CppObject>
-  template <class T_CastFrom>
-inline
-RefPtr<T_CppObject>& RefPtr<T_CppObject>::operator=(RefPtr<T_CastFrom>&& src) 
noexcept
-{
-  RefPtr<T_CppObject> temp (std::move(src));
-  this->swap(temp);
-  src.pCppObject_ = nullptr;
-  src.pCppRefcount_ = nullptr;
-
-  return *this;
-}
+using RefPtr = std::shared_ptr<T_CppObject>;
 
 template <class T_CppObject>
-  template <class T_CastFrom>
-inline
-RefPtr<T_CppObject>& RefPtr<T_CppObject>::operator=(const RefPtr<T_CastFrom>& 
src) noexcept
-{
-  RefPtr<T_CppObject> temp (src);
-  this->swap(temp);
-  return *this;
-}
-
-template <class T_CppObject> inline
-bool RefPtr<T_CppObject>::operator==(const RefPtr<T_CppObject>& src) const 
noexcept
+RefPtr<T_CppObject>
+make_refptr_for_instance(T_CppObject* object)
 {
-  return (pCppObject_ == src.pCppObject_);
-}
-
-template <class T_CppObject> inline
-bool RefPtr<T_CppObject>::operator!=(const RefPtr<T_CppObject>& src) const 
noexcept
-{
-  return (pCppObject_ != src.pCppObject_);
-}
-
-template <class T_CppObject> inline
-RefPtr<T_CppObject>::operator bool() const noexcept
-{
-  return (pCppObject_ != nullptr);
-}
-
-template <class T_CppObject> inline
-void RefPtr<T_CppObject>::clear() noexcept
-{
-  RefPtr<T_CppObject> temp; // swap with an empty RefPtr<> to clear *this
-  this->swap(temp);
-}
-
-template <class T_CppObject>
-  template <class T_CastFrom>
-inline
-RefPtr<T_CppObject> RefPtr<T_CppObject>::cast_dynamic(const 
RefPtr<T_CastFrom>& src) noexcept
-{
-  T_CppObject *const pCppObject = dynamic_cast<T_CppObject*>(src.operator->());
-
-  if(pCppObject) //Check whether dynamic_cast<> succeeded so we don't pass a 
null object with a used refcount:
-    return RefPtr<T_CppObject>(pCppObject, src.refcount_());
-  else
-    return RefPtr<T_CppObject>();
-}
-
-template <class T_CppObject>
-  template <class T_CastFrom>
-inline
-RefPtr<T_CppObject> RefPtr<T_CppObject>::cast_static(const RefPtr<T_CastFrom>& 
src) noexcept
-{
-  T_CppObject *const pCppObject = static_cast<T_CppObject*>(src.operator->());
-
-  return RefPtr<T_CppObject>(pCppObject, src.refcount_());
-}
-
-template <class T_CppObject>
-  template <class T_CastFrom>
-inline
-RefPtr<T_CppObject> RefPtr<T_CppObject>::cast_const(const RefPtr<T_CastFrom>& 
src) noexcept
-{
-  T_CppObject *const pCppObject = const_cast<T_CppObject*>(src.operator->());
-
-  return RefPtr<T_CppObject>(pCppObject, src.refcount_());
-}
-
-#endif /* DOXYGEN_IGNORE_THIS */
-
-/** @relates Glib::RefPtr */
-template <class T_CppObject> inline
-void swap(RefPtr<T_CppObject>& lhs, RefPtr<T_CppObject>& rhs) noexcept
-{
-  lhs.swap(rhs);
+  return RefPtr<T_CppObject>(object, &RefPtrDeleter<T_CppObject>);
 }
 
 } // namespace Cairo
 
-
 #endif /* _cairo_REFPTR_H */
 
 // vim: ts=2 sw=2 et
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cairomm-1.15.2/cairomm/region.cc 
new/cairomm-1.15.3/cairomm/region.cc
--- old/cairomm-1.15.2/cairomm/region.cc        2016-12-07 11:24:02.000000000 
+0100
+++ new/cairomm-1.15.3/cairomm/region.cc        2016-12-13 17:54:24.000000000 
+0100
@@ -68,27 +68,27 @@
 
 RefPtr<Region> Region::create()
 {
-  return RefPtr<Region>(new Region());
+  return make_refptr_for_instance<Region>(new Region());
 }
 
 RefPtr<Region> Region::create(const RectangleInt& rectangle)
 {
-  return RefPtr<Region>(new Region(rectangle));
+  return make_refptr_for_instance<Region>(new Region(rectangle));
 }
 
 RefPtr<Region> Region::create(const std::vector<RectangleInt>& rects)
 {
-  return RefPtr<Region>(new Region(rects));
+  return make_refptr_for_instance<Region>(new Region(rects));
 }
 
 RefPtr<Region> Region::create(const RectangleInt *rects, int count)
 {
-  return RefPtr<Region>(new Region(rects, count));
+  return make_refptr_for_instance<Region>(new Region(rects, count));
 }
 
 RefPtr<Region> Region::copy() const
 {
-  return RefPtr<Region> (new Region (cairo_region_copy (m_cobject), true));
+  return make_refptr_for_instance<Region>(new Region (cairo_region_copy 
(m_cobject), true));
 }
 
 Region::~Region()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cairomm-1.15.2/cairomm/scaledfont.cc 
new/cairomm-1.15.3/cairomm/scaledfont.cc
--- old/cairomm-1.15.2/cairomm/scaledfont.cc    2016-12-07 11:24:02.000000000 
+0100
+++ new/cairomm-1.15.3/cairomm/scaledfont.cc    2016-12-13 17:54:24.000000000 
+0100
@@ -53,7 +53,7 @@
 RefPtr<ScaledFont> ScaledFont::create(const RefPtr<FontFace>& font_face, const 
Matrix& font_matrix,
     const Matrix& ctm, const FontOptions& options)
 {
-  return RefPtr<ScaledFont>(new ScaledFont(font_face, font_matrix, ctm, 
options));
+  return make_refptr_for_instance<ScaledFont>(new ScaledFont(font_face, 
font_matrix, ctm, options));
 }
 
 void ScaledFont::get_extents(FontExtents& extents) const
@@ -66,7 +66,7 @@
 {
   auto face = cairo_scaled_font_get_font_face(m_cobject);
   check_object_status_and_throw_exception(*this);
-  return RefPtr<FontFace>(new FontFace(face, false /* returned face doesn't 
have a reference */));
+  return make_refptr_for_instance<FontFace>(new FontFace(face, false /* 
returned face doesn't have a reference */));
 }
 
 void ScaledFont::get_font_options(FontOptions& options) const
@@ -148,7 +148,7 @@
                      const Matrix& font_matrix, const Matrix& ctm,
                      const FontOptions& options)
 {
-  return RefPtr<FtScaledFont>(new FtScaledFont(font_face, font_matrix, ctm, 
options));
+  return make_refptr_for_instance<FtScaledFont>(new FtScaledFont(font_face, 
font_matrix, ctm, options));
 }
 
 FT_Face FtScaledFont::lock_face()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cairomm-1.15.2/cairomm/script.cc 
new/cairomm-1.15.3/cairomm/script.cc
--- old/cairomm-1.15.2/cairomm/script.cc        2016-12-07 11:24:02.000000000 
+0100
+++ new/cairomm-1.15.3/cairomm/script.cc        2016-12-13 17:54:24.000000000 
+0100
@@ -58,7 +58,7 @@
 {
   auto cobject = cairo_script_create(filename.c_str());
   check_status_and_throw_exception(cairo_device_status(cobject));
-  return RefPtr<Script>(new Script(cobject, true /* has reference */));
+  return make_refptr_for_instance<Script>(new Script(cobject, true /* has 
reference */));
 }
 
 static cairo_user_data_key_t USER_DATA_KEY_DEVICE_WRITE_FUNC = {0};
@@ -95,7 +95,7 @@
                                                            slot_copy);
   check_status_and_throw_exception(cairo_device_status(cobject));
   set_write_slot(cobject, slot_copy);
-  return RefPtr<Script>(new Script(cobject, true /* has reference */));
+  return make_refptr_for_instance<Script>(new Script(cobject, true /* has 
reference */));
 }
 
 #endif // CAIRO_HAS_SCRIPT_SURFACE
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cairomm-1.15.2/cairomm/script_surface.cc 
new/cairomm-1.15.3/cairomm/script_surface.cc
--- old/cairomm-1.15.2/cairomm/script_surface.cc        2016-12-07 
11:24:02.000000000 +0100
+++ new/cairomm-1.15.3/cairomm/script_surface.cc        2016-12-13 
17:54:24.000000000 +0100
@@ -40,7 +40,7 @@
         cairo_script_surface_create(script->cobj(), 
static_cast<cairo_content_t>(content),
                                     width, height);
   check_status_and_throw_exception(cairo_surface_status(cobject));
-  return RefPtr<ScriptSurface>(new ScriptSurface(cobject, true /* has 
reference */));
+  return make_refptr_for_instance<ScriptSurface>(new ScriptSurface(cobject, 
true /* has reference */));
 }
 
 RefPtr<ScriptSurface>
@@ -50,7 +50,7 @@
   auto cobject =
         cairo_script_surface_create_for_target(script->cobj(), target->cobj());
   check_status_and_throw_exception(cairo_surface_status(cobject));
-  return RefPtr<ScriptSurface>(new ScriptSurface(cobject, true /* has 
reference */));
+  return make_refptr_for_instance<ScriptSurface>(new ScriptSurface(cobject, 
true /* has reference */));
 }
 
 #endif // CAIRO_HAS_SCRIPT_SURFACE
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cairomm-1.15.2/cairomm/surface.cc 
new/cairomm-1.15.3/cairomm/surface.cc
--- old/cairomm-1.15.2/cairomm/surface.cc       2016-12-07 11:24:02.000000000 
+0100
+++ new/cairomm-1.15.3/cairomm/surface.cc       2016-12-13 17:54:24.000000000 
+0100
@@ -246,11 +246,11 @@
   {
 #if CAIRO_HAS_SCRIPT_SURFACE
     case CAIRO_SURFACE_TYPE_SCRIPT:
-      return RefPtr<Script>(new Script(d, true /* has reference */));
+      return make_refptr_for_instance<Script>(new Script(d, true /* has 
reference */));
       break;
 #endif
     default:
-      return RefPtr<Device>(new Device(d, true /* has reference */));
+      return make_refptr_for_instance<Device>(new Device(d, true /* has 
reference */));
   }
 }
 
@@ -268,14 +268,14 @@
 {
   auto cobject = cairo_surface_create_similar(other->cobj(), 
(cairo_content_t)content, width, height);
   check_status_and_throw_exception(cairo_surface_status(cobject));
-  return RefPtr<Surface>(new Surface(cobject, true /* has reference */));
+  return make_refptr_for_instance<Surface>(new Surface(cobject, true /* has 
reference */));
 }
 
 RefPtr<Surface> Surface::create(const RefPtr<Surface>& target, double x, 
double y, double width, double height)
 {
   auto cobject = cairo_surface_create_for_rectangle(target->cobj(), x, y, 
width, height);
   check_status_and_throw_exception(cairo_surface_status(cobject));
-  return RefPtr<Surface>(new Surface(cobject, true /* has reference */));
+  return make_refptr_for_instance<Surface>(new Surface(cobject, true /* has 
reference */));
 }
 
 
@@ -292,14 +292,14 @@
 {
   auto cobject = cairo_image_surface_create((cairo_format_t)format, width, 
height);
   check_status_and_throw_exception(cairo_surface_status(cobject));
-  return RefPtr<ImageSurface>(new ImageSurface(cobject, true /* has reference 
*/));
+  return make_refptr_for_instance<ImageSurface>(new ImageSurface(cobject, true 
/* has reference */));
 }
 
 RefPtr<ImageSurface> ImageSurface::create(unsigned char* data, Format format, 
int width, int height, int stride)
 {
   auto cobject = cairo_image_surface_create_for_data(data, 
(cairo_format_t)format, width, height, stride);
   check_status_and_throw_exception(cairo_surface_status(cobject));
-  return RefPtr<ImageSurface>(new ImageSurface(cobject, true /* has reference 
*/));
+  return make_refptr_for_instance<ImageSurface>(new ImageSurface(cobject, true 
/* has reference */));
 }
 
 #ifdef CAIRO_HAS_PNG_FUNCTIONS
@@ -308,7 +308,7 @@
 {
   auto cobject = cairo_image_surface_create_from_png(filename.c_str());
   check_status_and_throw_exception(cairo_surface_status(cobject));
-  return RefPtr<ImageSurface>(new ImageSurface(cobject, true /* has reference 
*/));
+  return make_refptr_for_instance<ImageSurface>(new ImageSurface(cobject, true 
/* has reference */));
 }
 
 RefPtr<ImageSurface> ImageSurface::create_from_png_stream(const SlotReadFunc& 
read_func)
@@ -318,7 +318,7 @@
     cairo_image_surface_create_from_png_stream(&read_func_wrapper, slot_copy);
   check_status_and_throw_exception(cairo_surface_status(cobject));
   set_read_slot(cobject, slot_copy);
-  return RefPtr<ImageSurface>(new ImageSurface(cobject, true /* has reference 
*/));
+  return make_refptr_for_instance<ImageSurface>(new ImageSurface(cobject, true 
/* has reference */));
 }
 
 #endif // CAIRO_HAS_PNG_FUNCTIONS
@@ -378,14 +378,14 @@
 {
   auto cobject = cairo_recording_surface_create((cairo_content_t)content, 
NULL);
   check_status_and_throw_exception(cairo_surface_status(cobject));
-  return RefPtr<RecordingSurface>(new RecordingSurface(cobject, true /* has 
reference */));
+  return make_refptr_for_instance<RecordingSurface>(new 
RecordingSurface(cobject, true /* has reference */));
 }
 
 RefPtr<RecordingSurface> RecordingSurface::create(const Rectangle& extents, 
Content content)
 {
   auto cobject = cairo_recording_surface_create((cairo_content_t)content, 
&extents);
   check_status_and_throw_exception(cairo_surface_status(cobject));
-  return RefPtr<RecordingSurface>(new RecordingSurface(cobject, true /* has 
reference */));
+  return make_refptr_for_instance<RecordingSurface>(new 
RecordingSurface(cobject, true /* has reference */));
 }
 
 Rectangle RecordingSurface::ink_extents() const
@@ -425,7 +425,7 @@
 {
   auto cobject = cairo_pdf_surface_create(filename.c_str(), width_in_points, 
height_in_points);
   check_status_and_throw_exception(cairo_surface_status(cobject));
-  return RefPtr<PdfSurface>(new PdfSurface(cobject, true /* has reference */));
+  return make_refptr_for_instance<PdfSurface>(new PdfSurface(cobject, true /* 
has reference */));
 }
 
 RefPtr<PdfSurface> PdfSurface::create_for_stream(const SlotWriteFunc& 
write_func, double
@@ -437,7 +437,7 @@
                                         width_in_points, height_in_points);
   check_status_and_throw_exception(cairo_surface_status(cobject));
   set_write_slot(cobject, slot_copy);
-  return RefPtr<PdfSurface>(new PdfSurface(cobject, true /* has reference */));
+  return make_refptr_for_instance<PdfSurface>(new PdfSurface(cobject, true /* 
has reference */));
 }
 
 void PdfSurface::set_size(double width_in_points, double height_in_points)
@@ -493,7 +493,7 @@
 {
   auto cobject = cairo_ps_surface_create(filename.c_str(), width_in_points, 
height_in_points);
   check_status_and_throw_exception(cairo_surface_status(cobject));
-  return RefPtr<PsSurface>(new PsSurface(cobject, true /* has reference */));
+  return make_refptr_for_instance<PsSurface>(new PsSurface(cobject, true /* 
has reference */));
 }
 
 RefPtr<PsSurface> PsSurface::create_for_stream(const SlotWriteFunc& 
write_func, double
@@ -505,7 +505,7 @@
                                        width_in_points, height_in_points);
   check_status_and_throw_exception(cairo_surface_status(cobject));
   set_write_slot(cobject, slot_copy);
-  return RefPtr<PsSurface>(new PsSurface(cobject, true /* has reference */));
+  return make_refptr_for_instance<PsSurface>(new PsSurface(cobject, true /* 
has reference */));
 }
 
 void PsSurface::set_size(double width_in_points, double height_in_points)
@@ -594,7 +594,7 @@
 {
   auto cobject = cairo_svg_surface_create(filename.c_str(), width_in_points, 
height_in_points);
   check_status_and_throw_exception(cairo_surface_status(cobject));
-  return RefPtr<SvgSurface>(new SvgSurface(cobject, true /* has reference */));
+  return make_refptr_for_instance<SvgSurface>(new SvgSurface(cobject, true /* 
has reference */));
 }
 
 RefPtr<SvgSurface> SvgSurface::create_for_stream(const SlotWriteFunc& 
write_func,
@@ -607,7 +607,7 @@
                                         width_in_points, height_in_points);
   check_status_and_throw_exception(cairo_surface_status(cobject));
   set_write_slot(cobject, slot_copy);
-  return RefPtr<SvgSurface>(new SvgSurface(cobject, true /* has reference */));
+  return make_refptr_for_instance<SvgSurface>(new SvgSurface(cobject, true /* 
has reference */));
 }
 
 void SvgSurface::restrict_to_version(SvgVersion version)
@@ -658,7 +658,7 @@
 {
   auto cobject = cairo_glitz_surface_create(surface);
   check_status_and_throw_exception(cairo_surface_status(cobject));
-  return RefPtr<GlitzSurface>(new GlitzSurface(cobject, true /* has reference 
*/));
+  return make_refptr_for_instance<GlitzSurface>(new GlitzSurface(cobject, true 
/* has reference */));
 }
 
 #endif // CAIRO_HAS_GLITZ_SURFACE
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cairomm-1.15.2/cairomm/win32_font.cc 
new/cairomm-1.15.3/cairomm/win32_font.cc
--- old/cairomm-1.15.2/cairomm/win32_font.cc    2016-12-07 11:24:02.000000000 
+0100
+++ new/cairomm-1.15.3/cairomm/win32_font.cc    2016-12-13 17:54:24.000000000 
+0100
@@ -44,17 +44,17 @@
 
 RefPtr<Win32FontFace> Win32FontFace::create(LOGFONTW* logfont)
 {
-  return RefPtr<Win32FontFace>(new Win32FontFace(logfont));
+  return make_refptr_for_instance<Win32FontFace>(new Win32FontFace(logfont));
 }
 
 RefPtr<Win32FontFace> Win32FontFace::create(HFONT font)
 {
-  return RefPtr<Win32FontFace>(new Win32FontFace(font));
+  return make_refptr_for_instance<Win32FontFace>(new Win32FontFace(font));
 }
 
 RefPtr<Win32FontFace> Win32FontFace::create(LOGFONTW* logfont, HFONT font)
 {
-  return RefPtr<Win32FontFace>(new Win32FontFace(logfont, font));
+  return make_refptr_for_instance<Win32FontFace>(new Win32FontFace(logfont, 
font));
 }
 
 // ScaledFont
@@ -72,7 +72,7 @@
                         const Matrix& font_matrix, const Matrix& ctm,
                         const FontOptions& options)
 {
-  return RefPtr<Win32ScaledFont>(new Win32ScaledFont(font_face, font_matrix,
+  return make_refptr_for_instance<Win32ScaledFont>(new 
Win32ScaledFont(font_face, font_matrix,
                                                      ctm, options));
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cairomm-1.15.2/cairomm/win32_surface.cc 
new/cairomm-1.15.3/cairomm/win32_surface.cc
--- old/cairomm-1.15.2/cairomm/win32_surface.cc 2016-12-07 11:24:02.000000000 
+0100
+++ new/cairomm-1.15.3/cairomm/win32_surface.cc 2016-12-13 17:54:24.000000000 
+0100
@@ -50,7 +50,7 @@
 {
   auto cobject = cairo_win32_surface_create(hdc);
   check_status_and_throw_exception(cairo_surface_status(cobject));
-  return RefPtr<Win32Surface>(new Win32Surface(cobject, true /* has reference 
*/));
+  return make_refptr_for_instance<Win32Surface>(new Win32Surface(cobject, true 
/* has reference */));
 }
 
 RefPtr<Win32Surface> Win32Surface::create(Format format, int width, int height)
@@ -62,7 +62,7 @@
 {
   auto cobject = cairo_win32_surface_create_with_dib((cairo_format_t)format, 
width, height);
   check_status_and_throw_exception(cairo_surface_status(cobject));
-  return RefPtr<Win32Surface>(new Win32Surface(cobject, true /* has reference 
*/));
+  return make_refptr_for_instance<Win32Surface>(new Win32Surface(cobject, true 
/* has reference */));
 }
 
 RefPtr<Win32Surface> Win32Surface::create_with_ddb(HDC hdc, Format format, int 
width, int height)
@@ -70,7 +70,7 @@
   auto cobject =
     cairo_win32_surface_create_with_ddb(hdc, (cairo_format_t)format, width, 
height);
   check_status_and_throw_exception(cairo_surface_status(cobject));
-  return RefPtr<Win32Surface>(new Win32Surface(cobject, true /* has reference 
*/));
+  return make_refptr_for_instance<Win32Surface>(new Win32Surface(cobject, true 
/* has reference */));
 }
 
 Win32PrintingSurface::Win32PrintingSurface(cairo_surface_t* cobject, bool 
has_reference)
@@ -87,7 +87,7 @@
 {
   auto cobject = cairo_win32_surface_create(hdc);
   check_status_and_throw_exception(cairo_surface_status(cobject));
-  return RefPtr<Win32PrintingSurface>(new Win32PrintingSurface(cobject, true 
/* has reference */));
+  return make_refptr_for_instance<Win32PrintingSurface>(new 
Win32PrintingSurface(cobject, true /* has reference */));
 }
 
 #endif // CAIRO_HAS_WIN32_SURFACE
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cairomm-1.15.2/cairomm/xlib_surface.cc 
new/cairomm-1.15.3/cairomm/xlib_surface.cc
--- old/cairomm-1.15.2/cairomm/xlib_surface.cc  2016-12-07 11:24:02.000000000 
+0100
+++ new/cairomm-1.15.3/cairomm/xlib_surface.cc  2016-12-13 17:54:24.000000000 
+0100
@@ -38,14 +38,14 @@
 {
   auto cobject = cairo_xlib_surface_create(dpy, drawable, visual, width, 
height);
   check_status_and_throw_exception(cairo_surface_status(cobject));
-  return RefPtr<XlibSurface>(new XlibSurface(cobject, true /* has reference 
*/));
+  return make_refptr_for_instance<XlibSurface>(new XlibSurface(cobject, true 
/* has reference */));
 }
 
 RefPtr<XlibSurface> XlibSurface::create(Display* dpy, Pixmap bitmap, Screen* 
screen, int width, int height)
 {
   auto cobject = cairo_xlib_surface_create_for_bitmap(dpy, bitmap, screen, 
width, height);
   check_status_and_throw_exception(cairo_surface_status(cobject));
-  return RefPtr<XlibSurface>(new XlibSurface(cobject, true /* has reference 
*/));
+  return make_refptr_for_instance<XlibSurface>(new XlibSurface(cobject, true 
/* has reference */));
 }
 
 void XlibSurface::set_size(int width, int height)
@@ -144,7 +144,7 @@
                                                     screen, format,
                                                     width, height);
   check_status_and_throw_exception(cairo_surface_status(cobject));
-  return RefPtr<XlibSurface>(new XlibSurface(cobject, true /* has reference 
*/));
+  return make_refptr_for_instance<XlibSurface>(new XlibSurface(cobject, true 
/* has reference */));
 }
 
 XRenderPictFormat*
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cairomm-1.15.2/configure.ac 
new/cairomm-1.15.3/configure.ac
--- old/cairomm-1.15.2/configure.ac     2016-12-07 11:24:02.000000000 +0100
+++ new/cairomm-1.15.3/configure.ac     2016-12-13 17:54:24.000000000 +0100
@@ -15,7 +15,7 @@
 ## You should have received a copy of the GNU Lesser General Public License
 ## along with this library.  If not, see <http://www.gnu.org/licenses/>.
 
-AC_INIT([cairomm], [1.15.2], 
[https://bugs.freedesktop.org/enter_bug.cgi?product=cairomm],
+AC_INIT([cairomm], [1.15.3], 
[https://bugs.freedesktop.org/enter_bug.cgi?product=cairomm],
         [cairomm], [http://www.cairographics.org/cairomm/])
 AC_PREREQ([2.62])
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cairomm-1.15.2/examples/text/user-font.cc 
new/cairomm-1.15.3/examples/text/user-font.cc
--- old/cairomm-1.15.2/examples/text/user-font.cc       2016-12-07 
11:24:02.000000000 +0100
+++ new/cairomm-1.15.3/examples/text/user-font.cc       2016-12-13 
17:54:24.000000000 +0100
@@ -36,7 +36,7 @@
   // and return it with a RefPtr
   static Cairo::RefPtr<BoxFontFace> create()
   {
-    return Cairo::RefPtr<BoxFontFace>(new BoxFontFace());
+    return Cairo::make_refptr_for_instance<BoxFontFace>(new BoxFontFace());
   }
 
   Cairo::ErrorStatus
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cairomm-1.15.2/tests/test-user-font.cc 
new/cairomm-1.15.3/tests/test-user-font.cc
--- old/cairomm-1.15.2/tests/test-user-font.cc  2016-12-07 11:24:02.000000000 
+0100
+++ new/cairomm-1.15.3/tests/test-user-font.cc  2016-12-13 17:54:24.000000000 
+0100
@@ -55,7 +55,7 @@
 class ImplTextUserFont: public NullRenderUserFont
 {
 public:
-  static RefPtr<ImplTextUserFont> create() { return 
RefPtr<ImplTextUserFont>(new ImplTextUserFont());};
+  static RefPtr<ImplTextUserFont> create() { return 
make_refptr_for_insance<ImplTextUserFont>(new ImplTextUserFont());};
   ErrorStatus text_to_glyphs(const RefPtr<ScaledFont>& /*scaled_font*/,
                                      const std::string& /*utf8*/,
                                      std::vector<Glyph>& glyphs,
@@ -90,7 +90,7 @@
 class ImplUnicodeUserFont: public NullRenderUserFont
 {
 public:
-  static RefPtr<ImplUnicodeUserFont> create() { return 
RefPtr<ImplUnicodeUserFont>(new ImplUnicodeUserFont());};
+  static RefPtr<ImplUnicodeUserFont> create() { return 
make_refptr_for_instance<ImplUnicodeUserFont>(new ImplUnicodeUserFont());};
   ErrorStatus unicode_to_glyph(const RefPtr<ScaledFont>& /*scaled_font*/,
                                        unsigned long /*unicode*/,
                                        unsigned long& /*glyph*/) override
@@ -117,7 +117,7 @@
 class ImplBothUserFont: public NullRenderUserFont
 {
 public:
-  static RefPtr<ImplBothUserFont> create() { return 
RefPtr<ImplBothUserFont>(new ImplBothUserFont());};
+  static RefPtr<ImplBothUserFont> create() { return 
make_refptr_for_instance<ImplBothUserFont>(new ImplBothUserFont());};
   ErrorStatus unicode_to_glyph(const RefPtr<ScaledFont>& /*scaled_font*/,
                                        unsigned long /*unicode*/,
                                        unsigned long& /*glyph*/) override
@@ -161,7 +161,7 @@
 class ImplNeitherUserFont: public NullRenderUserFont
 {
 public:
-  static RefPtr<ImplNeitherUserFont> create() { return 
RefPtr<ImplNeitherUserFont>(new ImplNeitherUserFont());};
+  static RefPtr<ImplNeitherUserFont> create() { return 
make_refptr_for_instance<ImplNeitherUserFont>(new ImplNeitherUserFont());};
 
 protected:
   ImplNeitherUserFont() : NullRenderUserFont() {}
@@ -182,7 +182,7 @@
 class ImplInitUserFont: public NullRenderUserFont
 {
 public:
-  static RefPtr<ImplInitUserFont> create() { return 
RefPtr<ImplInitUserFont>(new ImplInitUserFont());};
+  static RefPtr<ImplInitUserFont> create() { return 
make_refptr_for_instance<ImplInitUserFont>(new ImplInitUserFont());};
   ErrorStatus init(const RefPtr<ScaledFont>& /*scaled_font*/,
                            const RefPtr<Context>& /*cr*/,
                            FontExtents& /*extents*/) override
@@ -207,7 +207,7 @@
 class ExceptionUserFont : public UserFontFace
 {
 public:
-  static RefPtr<ExceptionUserFont> create(int flags) { return 
RefPtr<ExceptionUserFont>(new ExceptionUserFont(flags));};
+  static RefPtr<ExceptionUserFont> create(int flags) { return 
make_refptr_for_instance<ExceptionUserFont>(new ExceptionUserFont(flags));};
 
   ErrorStatus
   render_glyph(const RefPtr<ScaledFont>& /*scaled_font*/,


Reply via email to