gnash-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gnash-commit] [SCM] Gnash branch, master, updated. release_0_8_9_final-


From: Bastiaan Jacques
Subject: [Gnash-commit] [SCM] Gnash branch, master, updated. release_0_8_9_final-2004-g2913a1d
Date: Mon, 19 May 2014 13:34:55 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Gnash".

The branch, master has been updated
       via  2913a1dc92b8989f18222aa23dd7ac7fd7eb6c39 (commit)
       via  573b8e78bc8ed45f5c1d3cc02e48b5ff110be661 (commit)
       via  725ef0da2c4763a94eab48f041bba48c15f73287 (commit)
       via  74d73b5f9a3401ec90e7171ab6d48ac0aefa3970 (commit)
       via  998d5b525bcd02f85998827261f7b9183506c389 (commit)
      from  4545a2cffb94a704f9b6d21f42c378797b638449 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://git.savannah.gnu.org/cgit//commit/?id=2913a1dc92b8989f18222aa23dd7ac7fd7eb6c39


commit 2913a1dc92b8989f18222aa23dd7ac7fd7eb6c39
Author: Bastiaan Jacques <address@hidden>
Date:   Mon May 19 15:34:28 2014 +0200

    Replace deprecated auto_ptr with unique_ptr.

diff --git a/cygnal/cvm.cpp b/cygnal/cvm.cpp
index 4186179..ff5d931 100644
--- a/cygnal/cvm.cpp
+++ b/cygnal/cvm.cpp
@@ -333,10 +333,10 @@ vm_main(int argc, char *argv[])
 
 
 #ifdef USE_FFMPEG
-    std::auto_ptr<media::MediaHandler> handler(
+    std::unique_ptr<media::MediaHandler> handler(
             new gnash::media::ffmpeg::MediaHandlerFfmpeg() );
 #elif defined(USE_GST)
-    std::auto_ptr<media::MediaHandler> handler(
+    std::unique_ptr<media::MediaHandler> handler(
             new gnash::media::gst::MediaHandlerGst() );
 #else
     std::cerr << "Neither SOUND_SDL nor SOUND_GST defined" << std::endl;
@@ -394,7 +394,7 @@ play_movie(const std::string& filename, const RunResources& 
runResources)
 
     try {
       if (filename == "-") {
-         std::auto_ptr<IOChannel> in (
+         std::unique_ptr<IOChannel> in (
                  noseek_fd_adapter::make_stream(fileno(stdin)) );
          md = gnash::MovieFactory::makeMovie(in, filename, runResources, 
false);
       } else {
diff --git a/cygnal/libamf/lcshm.cpp b/cygnal/libamf/lcshm.cpp
index 0a5d6f8..0b0f362 100644
--- a/cygnal/libamf/lcshm.cpp
+++ b/cygnal/libamf/lcshm.cpp
@@ -299,11 +299,11 @@ Listener::removeListener(const string &name)
 /// @return A smart pointer to a vector of Listener names.
 ///
 /// @remarks This is only used for debugging
-std::auto_ptr< vector<string> >
+std::unique_ptr< vector<string> >
 Listener::listListeners()
 {
 //    GNASH_REPORT_FUNCTION;    
-    std::auto_ptr< vector<string> > listeners ( new vector<string> );
+    std::unique_ptr< vector<string> > listeners ( new vector<string> );
     if (_baseaddr != 0) {
         boost::uint8_t *addr = _baseaddr + LC_LISTENERS_START;
         
@@ -795,7 +795,7 @@ LcShm::dump()
     }
 
     vector<string>::const_iterator lit;
-    auto_ptr< vector<string> > listeners ( listListeners() );
+    unique_ptr< vector<string> > listeners ( listListeners() );
     cerr << "# of Listeners in file: " << listeners->size() << endl;
     for (lit=listeners->begin(); lit!=listeners->end(); ++lit) {
         string str = *lit;
diff --git a/cygnal/libamf/lcshm.h b/cygnal/libamf/lcshm.h
index affc748..fdda811 100644
--- a/cygnal/libamf/lcshm.h
+++ b/cygnal/libamf/lcshm.h
@@ -83,7 +83,7 @@ public:
     /// @return A smart pointer to a vector of Listener names.
     ///
     /// @remarks This is only used for debugging
-    std::auto_ptr< std::vector<std::string> > listListeners();
+    std::unique_ptr< std::vector<std::string> > listListeners();
 
     /// \brief Set the base address for the block of Listeners.
     ///
diff --git a/cygnal/libnet/cque.cpp b/cygnal/libnet/cque.cpp
index baba956..39ad2e9 100644
--- a/cygnal/libnet/cque.cpp
+++ b/cygnal/libnet/cque.cpp
@@ -253,7 +253,7 @@ CQue::merge(boost::shared_ptr<cygnal::Buffer> start)
     //que_t::iterator nextIter = _que.erase(from, to);
 //    _que.insert(nextIter, newbuf.get()); FIXME:
 
-    return newbuf; //->release(); // ownership is transferred. TODO: return 
auto_ptr
+    return newbuf; //->release(); // ownership is transferred. TODO: return 
unique_ptr
 }
 
 // Dump internal data.
diff --git a/cygnal/testsuite/libamf.all/test_lc.cpp 
b/cygnal/testsuite/libamf.all/test_lc.cpp
index 8079bc9..870c3ce 100644
--- a/cygnal/testsuite/libamf.all/test_lc.cpp
+++ b/cygnal/testsuite/libamf.all/test_lc.cpp
@@ -187,7 +187,7 @@ test_listen()
     
     Listener list(reinterpret_cast<uint8_t *>(shmaddr));
     vector<string>::const_iterator it;
-    auto_ptr< vector<string> > listeners ( list.listListeners() );
+    unique_ptr< vector<string> > listeners ( list.listListeners() );
     if (listeners->size() == 0) {
         cout << "Nobody is listening" << endl;
     } else {
@@ -329,7 +329,7 @@ test_read()
     
     Listener list(reinterpret_cast<uint8_t *>(shmaddr));
     vector<string>::const_iterator it;
-    auto_ptr< vector<string> > listeners ( list.listListeners() );
+    unique_ptr< vector<string> > listeners ( list.listListeners() );
     if (listeners->size() == 0) {
         cout << "Nobody is listening" << endl;
     } else {
@@ -596,7 +596,7 @@ int main(int /*argc*/, char **/* argv[]*/)
     addListener(str1);
     
     vector<string>::const_iterator it;
-    auto_ptr< vector<string> > listeners ( listListeners() );
+    unique_ptr< vector<string> > listeners ( listListeners() );
     if (listeners->empty()) {
         log_debug("Nobody is listening");
     } else {
diff --git a/extensions/dejagnu/dejagnu.h b/extensions/dejagnu/dejagnu.h
index b90c930..16edf92 100644
--- a/extensions/dejagnu/dejagnu.h
+++ b/extensions/dejagnu/dejagnu.h
@@ -34,7 +34,7 @@ extern "C" {
     /// Return an  instance
 }
 
-std::auto_ptr<as_object> init_dejagnu_instance();
+std::unique_ptr<as_object> init_dejagnu_instance();
 
 } // end of gnash namespace
 
diff --git a/extensions/gtk2/gtkext.cpp b/extensions/gtk2/gtkext.cpp
index 9e251b5..c41f250 100644
--- a/extensions/gtk2/gtkext.cpp
+++ b/extensions/gtk2/gtkext.cpp
@@ -165,7 +165,7 @@ void
 GtkExt::window_new()
 {
     GNASH_REPORT_FUNCTION;
-//    std::auto_ptr<Gui> ggg = player.getGuiHandle();
+//    std::unique_ptr<Gui> ggg = player.getGuiHandle();
 //    player.getGuiHandle();
 //    gui.getWindow();
     _window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
@@ -335,10 +335,10 @@ as_value gtkext_main(const fn_call& fn)
     return as_value();
 }
 
-std::auto_ptr<as_object>
+std::unique_ptr<as_object>
 init_gtkext_instance()
 {
-    return std::auto_ptr<as_object>(new GtkExt());
+    return std::unique_ptr<as_object>(new GtkExt());
 }
 
 extern "C" {
diff --git a/extensions/gtk2/gtkext.h b/extensions/gtk2/gtkext.h
index 9a308b0..165550e 100644
--- a/extensions/gtk2/gtkext.h
+++ b/extensions/gtk2/gtkext.h
@@ -23,7 +23,7 @@
 #include "gnashconfig.h"
 #endif
 
-#include <memory> // for auto_ptr
+#include <memory> // for unique_ptr
 #include "as_object.h"
 
 #include <cstdio>
@@ -68,7 +68,7 @@ extern "C" {
     /// Return an  instance
 }
 
-std::auto_ptr<as_object> init_gtkext_instance();
+std::unique_ptr<as_object> init_gtkext_instance();
 
 } // end of gnash namespace
 
diff --git a/gui/Player.cpp b/gui/Player.cpp
index 38d445f..a8789d5 100644
--- a/gui/Player.cpp
+++ b/gui/Player.cpp
@@ -335,9 +335,9 @@ Player::load_movie()
 
     try {
         if (_infile == "-") {
-            std::auto_ptr<IOChannel> in (
+            std::unique_ptr<IOChannel> in (
                 noseek_fd_adapter::make_stream(fileno(stdin)));
-            md = MovieFactory::makeMovie(in, _url, *_runResources, false);
+            md = MovieFactory::makeMovie(std::move(in), _url, *_runResources, 
false);
         }
         else {
             URL url(_infile);
@@ -416,10 +416,10 @@ Player::run(int argc, char* argv[], const std::string& 
infile,
     addDefaultLoaders(*loaders);
     _runResources->setTagLoaders(loaders);
 
-    std::auto_ptr<NamingPolicy> np(new IncrementalRename(_baseurl));
+    std::unique_ptr<NamingPolicy> np(new IncrementalRename(_baseurl));
 
     /// The StreamProvider uses the actual URL of the loaded movie.
-    boost::shared_ptr<StreamProvider> sp(new StreamProvider(_url, baseURL, 
np));
+    boost::shared_ptr<StreamProvider> sp(new StreamProvider(_url, baseURL, 
std::move(np)));
     _runResources->setStreamProvider(sp);
 
     // Set the Hardware video decoding resources. none, vaapi, omap
@@ -649,11 +649,11 @@ Player::run(int argc, char* argv[], const std::string& 
infile,
         }
         if (!last && v.empty()) return;
         
-        std::auto_ptr<ScreenShotter> ss(new ScreenShotter(_screenshotFile,
+        std::unique_ptr<ScreenShotter> ss(new ScreenShotter(_screenshotFile,
                                                           _screenshotQuality));
         if (last) ss->lastFrame();
         ss->setFrames(v);
-        _gui->setScreenShotter(ss);
+        _gui->setScreenShotter(std::move(ss));
     }
 
     _gui->run();
@@ -803,7 +803,7 @@ Player::CallbacksHandler::notify(const std::string& command,
 
 
 // private
-std::auto_ptr<Gui>
+std::unique_ptr<Gui>
 Player::getGui()
 {
 #ifdef GUI_GTK
@@ -850,7 +850,7 @@ Player::getGui()
     return createDumpGui(_windowID, _scale, _doLoop, *_runResources);
 #endif
 
-    return std::auto_ptr<Gui>(new NullGui(_doLoop, *_runResources));
+    return std::unique_ptr<Gui>(new NullGui(_doLoop, *_runResources));
 }
 
 Player::~Player()
diff --git a/gui/Player.h b/gui/Player.h
index 3763e2d..12e6b3c 100644
--- a/gui/Player.h
+++ b/gui/Player.h
@@ -250,7 +250,7 @@ private:
         const Player& _player;
     };
     
-    std::auto_ptr<CallbacksHandler> _callbacksHandler;
+    std::shared_ptr<CallbacksHandler> _callbacksHandler;
     
     void init();
     
@@ -281,7 +281,7 @@ private:
     //
     /// Uses the USE_<guiname> macros to find out which one
     ///
-    std::auto_ptr<Gui> getGui();
+    std::unique_ptr<Gui> getGui();
     
     void setFlashVars(const std::string& varstr);
 
@@ -327,10 +327,10 @@ private:
     //
     /// This must be kept alive for the entire lifetime of the movie_root
     /// (currently: of the Gui).
-    std::auto_ptr<RunResources> _runResources;
+    std::shared_ptr<RunResources> _runResources;
     
     /// This must be initialized after _runResources
-    std::auto_ptr<Gui> _gui;
+    std::shared_ptr<Gui> _gui;
     
     std::string         _url;
     
diff --git a/gui/ScreenShotter.cpp b/gui/ScreenShotter.cpp
index 42d0633..2c023f8 100644
--- a/gui/ScreenShotter.cpp
+++ b/gui/ScreenShotter.cpp
@@ -92,8 +92,8 @@ ScreenShotter::saveImage(const Renderer& r, const 
std::string& id) const
     
     FILE* f = std::fopen(outfile.c_str(), "wb");
     if (f) {
-        boost::shared_ptr<IOChannel> t(makeFileChannel(f, true));
-        r.renderToImage(t, _type, _quality);
+        std::unique_ptr<IOChannel> t(makeFileChannel(f, true));
+        r.renderToImage(std::move(t), _type, _quality);
     }
     else {
         log_error(_("Failed to open screenshot file \"%s\"!"), outfile);
diff --git a/gui/aos4/gui_aos4.cpp b/gui/aos4/gui_aos4.cpp
index f727c05..859418c 100644
--- a/gui/aos4/gui_aos4.cpp
+++ b/gui/aos4/gui_aos4.cpp
@@ -32,12 +32,12 @@
 namespace gnash {
 
 #ifdef GUI_AOS4
-std::auto_ptr<Gui> createAOS4Gui(unsigned long windowid, float scale, bool 
do_loop, RunResources& r)
+std::unique_ptr<Gui> createAOS4Gui(unsigned long windowid, float scale, bool 
do_loop, RunResources& r)
 {
-       return std::auto_ptr<Gui>(new AOS4Gui(windowid, scale, do_loop, r));
+       return std::unique_ptr<Gui>(new AOS4Gui(windowid, scale, do_loop, r));
 }
 #else // ! GUI_AOS4
-std::auto_ptr<Gui> createAOS4Gui(unsigned long , float, bool, 
RunResourcesfloat , bool , unsigned int )
+std::unique_ptr<Gui> createAOS4Gui(unsigned long , float, bool, 
RunResourcesfloat , bool , unsigned int )
 {
        throw GnashException("Support for AOS4 gui was not compiled in");
 }
diff --git a/gui/aqua/gui_aqua.cpp b/gui/aqua/gui_aqua.cpp
index 363472b..8c46368 100644
--- a/gui/aqua/gui_aqua.cpp
+++ b/gui/aqua/gui_aqua.cpp
@@ -32,12 +32,12 @@
 namespace gnash {
 
 #ifdef GUI_AQUA
-std::auto_ptr<Gui> createAQUAGui(unsigned long windowid, float scale, bool 
do_loop, RunResources& r)
+std::unique_ptr<Gui> createAQUAGui(unsigned long windowid, float scale, bool 
do_loop, RunResources& r)
 {
-       return std::auto_ptr<Gui>(new AquaGui(windowid, scale, do_loop, r));
+       return std::unique_ptr<Gui>(new AquaGui(windowid, scale, do_loop, r));
 }
 #else // ! GUI_AQUA
-std::auto_ptr<Gui> createAQUAGui(unsigned long , float, bool, 
RunResourcesfloat , bool , unsigned int )
+std::unique_ptr<Gui> createAQUAGui(unsigned long , float, bool, 
RunResourcesfloat , bool , unsigned int )
 {
        throw GnashException("Support for AQUA gui was not compiled in");
 }
diff --git a/gui/dump/gui_dump.cpp b/gui/dump/gui_dump.cpp
index c1be525..254ac89 100644
--- a/gui/dump/gui_dump.cpp
+++ b/gui/dump/gui_dump.cpp
@@ -32,12 +32,12 @@
 namespace gnash {
 
 #ifdef GUI_DUMP
-std::auto_ptr<Gui> createDumpGui(unsigned long windowid, float scale, bool 
do_loop, RunResources& r)
+std::unique_ptr<Gui> createDumpGui(unsigned long windowid, float scale, bool 
do_loop, RunResources& r)
 {
-       return std::auto_ptr<Gui>(new DumpGui(windowid, scale, do_loop, r));
+       return std::unique_ptr<Gui>(new DumpGui(windowid, scale, do_loop, r));
 }
 #else // ! GUI_DUMP
-std::auto_ptr<Gui> createDumpGui(unsigned long , float, bool, 
RunResourcesfloat , bool , unsigned int )
+std::unique_ptr<Gui> createDumpGui(unsigned long , float, bool, 
RunResourcesfloat , bool , unsigned int )
 {
        throw GnashException("Support for DUMP gui was not compiled in");
 }
diff --git a/gui/fb/fb.cpp b/gui/fb/fb.cpp
index af05358..5076f45 100644
--- a/gui/fb/fb.cpp
+++ b/gui/fb/fb.cpp
@@ -138,11 +138,11 @@ namespace gui {
 
 int terminate_request = false;  // global scope to avoid GUI access
 
-std::auto_ptr<Gui> createFBGui(unsigned long windowid, float scale,
+std::unique_ptr<Gui> createFBGui(unsigned long windowid, float scale,
                                bool do_loop, RunResources& r)
 {
     // GNASH_REPORT_FUNCTION;
-    return std::auto_ptr<Gui>(new FBGui(windowid, scale, do_loop, r));
+    return std::unique_ptr<Gui>(new FBGui(windowid, scale, do_loop, r));
 }
 
 /// Called on CTRL-C and alike
diff --git a/gui/fb/gui_fb.cpp b/gui/fb/gui_fb.cpp
index 583803b..5f64ccc 100644
--- a/gui/fb/gui_fb.cpp
+++ b/gui/fb/gui_fb.cpp
@@ -34,12 +34,12 @@ namespace gnash {
 namespace gui {
 
 #ifdef GUI_FB
-std::auto_ptr<Gui> createFBGui(unsigned long windowid, float scale, bool 
do_loop, RunResources& r)
+std::unique_ptr<Gui> createFBGui(unsigned long windowid, float scale, bool 
do_loop, RunResources& r)
 {
-    return std::auto_ptr<Gui>(new FBGui(windowid, scale, do_loop, r));
+    return std::unique_ptr<Gui>(new FBGui(windowid, scale, do_loop, r));
 }
 #else // ! GUI_FB
-std::auto_ptr<Gui> createFBGui(unsigned long , float, bool, RunResourcesfloat 
, bool , unsigned int )
+std::unique_ptr<Gui> createFBGui(unsigned long , float, bool, 
RunResourcesfloat , bool , unsigned int )
 {
     throw GnashException("Support for FB gui was not compiled in");
 }
diff --git a/gui/fltk/gui_fltk.cpp b/gui/fltk/gui_fltk.cpp
index 8b38bfe..6143f7d 100644
--- a/gui/fltk/gui_fltk.cpp
+++ b/gui/fltk/gui_fltk.cpp
@@ -32,12 +32,12 @@
 namespace gnash {
 
 #ifdef GUI_FLTK
-std::auto_ptr<Gui> createFLTKGui(unsigned long windowid, float scale, bool 
do_loop, RunResources& r)
+std::unique_ptr<Gui> createFLTKGui(unsigned long windowid, float scale, bool 
do_loop, RunResources& r)
 {
-       return std::auto_ptr<Gui>(new FltkGui(windowid, scale, do_loop, r));
+       return std::unique_ptr<Gui>(new FltkGui(windowid, scale, do_loop, r));
 }
 #else // ! GUI_FLTK
-std::auto_ptr<Gui> createFLTKGui(unsigned long , float, bool, 
RunResourcesfloat , bool , unsigned int )
+std::unique_ptr<Gui> createFLTKGui(unsigned long , float, bool, 
RunResourcesfloat , bool , unsigned int )
 {
        throw GnashException("Support for FLTK gui was not compiled in");
 }
diff --git a/gui/gnash.cpp b/gui/gnash.cpp
index d3a37ea..031482c 100644
--- a/gui/gnash.cpp
+++ b/gui/gnash.cpp
@@ -88,7 +88,7 @@ void
 playFile(gnash::Player& player, int argc, char *argv[],
                               const std::string& filename)
 {
-    gnash::Player newPlayer(player);
+    gnash::Player newPlayer = player;
     newPlayer.run(argc, argv, filename, url);
 }
 
diff --git a/gui/gtk/gtk.cpp b/gui/gtk/gtk.cpp
index d7b4b97..01a2778 100644
--- a/gui/gtk/gtk.cpp
+++ b/gui/gtk/gtk.cpp
@@ -768,7 +768,7 @@ GtkGui::createWindow(const char *title, int width, int 
height,
 
 // This creates a GtkTree model for displaying movie info.
 GtkTreeModel*
-GtkGui::makeTreeModel(std::auto_ptr<movie_root::InfoTree> treepointer)
+GtkGui::makeTreeModel(const std::unique_ptr<movie_root::InfoTree>& treepointer)
 {
 
     const movie_root::InfoTree& info = *treepointer;
@@ -1728,7 +1728,7 @@ GtkGui::showPropertiesDialog()
 
 #ifdef USE_SWFTREE
 
-    std::auto_ptr<movie_root::InfoTree> infoptr = getMovieInfo();
+    std::unique_ptr<movie_root::InfoTree> infoptr = getMovieInfo();
 
     GtkWidget *scrollwindow1 = gtk_scrolled_window_new(0, 0);
     gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrollwindow1),
diff --git a/gui/gtk/gtk_canvas.cpp b/gui/gtk/gtk_canvas.cpp
index 1a87c44..a15ddef 100644
--- a/gui/gtk/gtk_canvas.cpp
+++ b/gui/gtk/gtk_canvas.cpp
@@ -60,7 +60,7 @@
 struct _GnashCanvas
 {
     GtkDrawingArea base_instance;
-    std::auto_ptr<gnash::GtkGlue> glue;
+    std::unique_ptr<gnash::GtkGlue> glue;
     boost::shared_ptr<gnash::Renderer> renderer;
 };
 
diff --git a/gui/gtk/gtk_glue_agg_vaapi.cpp b/gui/gtk/gtk_glue_agg_vaapi.cpp
index c3d02d3..2bde056 100644
--- a/gui/gtk/gtk_glue_agg_vaapi.cpp
+++ b/gui/gtk/gtk_glue_agg_vaapi.cpp
@@ -301,7 +301,7 @@ 
GtkAggVaapiGlue::getVideoWindow(boost::shared_ptr<VaapiSurface> surface,
         return NULL;
 
     if (!context->getData()) {
-        std::auto_ptr<VaapiContextData> contextData;
+        std::unique_ptr<VaapiContextData> contextData;
         contextData.reset(new VaapiVideoWindow(parent_window, rect));
         if (!contextData.get())
             return NULL;
diff --git a/gui/gtk/gtk_glue_agg_vaapi.h b/gui/gtk/gtk_glue_agg_vaapi.h
index b0a52a1..3228886 100644
--- a/gui/gtk/gtk_glue_agg_vaapi.h
+++ b/gui/gtk/gtk_glue_agg_vaapi.h
@@ -71,7 +71,7 @@ private:
     unsigned int                        _vaapi_image_width;
     unsigned int                        _vaapi_image_height;
     boost::shared_ptr<VaapiSubpicture>  _vaapi_subpicture;
-    std::auto_ptr<VaapiSurface>         _vaapi_surface;
+    std::unique_ptr<VaapiSurface>         _vaapi_surface;
     unsigned int                        _window_width;
     unsigned int                        _window_height;
     bool                                _window_is_setup;
diff --git a/gui/gtk/gtksup.h b/gui/gtk/gtksup.h
index 69f04b8..1cefe35 100644
--- a/gui/gtk/gtksup.h
+++ b/gui/gtk/gtksup.h
@@ -154,7 +154,7 @@ private:
 
 #ifdef USE_SWFTREE
     // Create a tree model for displaying movie info
-    GtkTreeModel* makeTreeModel(std::auto_ptr<movie_root::InfoTree> tree);
+    GtkTreeModel* makeTreeModel(const std::unique_ptr<movie_root::InfoTree>& 
tree);
 #endif
 
     void stopHook();
diff --git a/gui/gtk/gui_gtk.cpp b/gui/gtk/gui_gtk.cpp
index 247cab1..7f511c3 100644
--- a/gui/gtk/gui_gtk.cpp
+++ b/gui/gtk/gui_gtk.cpp
@@ -33,12 +33,12 @@
 namespace gnash {
 
 #ifdef GUI_GTK
-std::auto_ptr<Gui> createGTKGui(unsigned long windowid, float scale, bool 
do_loop, RunResources& r)
+std::unique_ptr<Gui> createGTKGui(unsigned long windowid, float scale, bool 
do_loop, RunResources& r)
 {
-       return std::auto_ptr<Gui>(new GtkGui(windowid, scale, do_loop, r));
+       return std::unique_ptr<Gui>(new GtkGui(windowid, scale, do_loop, r));
 }
 #else // ! GUI_GTK
-std::auto_ptr<Gui> createGTKGui(unsigned long , float, bool, RunResourcesfloat 
, bool , unsigned int )
+std::unique_ptr<Gui> createGTKGui(unsigned long , float, bool, 
RunResourcesfloat , bool , unsigned int )
 {
        throw GnashException("Support for GTK gui was not compiled in");
 }
diff --git a/gui/gui.cpp b/gui/gui.cpp
index 2f25fb6..4f8d3e7 100644
--- a/gui/gui.cpp
+++ b/gui/gui.cpp
@@ -1001,7 +1001,7 @@ Gui::advanceMovie(bool doDisplay)
 }
 
 void
-Gui::setScreenShotter(std::auto_ptr<ScreenShotter> ss)
+Gui::setScreenShotter(std::unique_ptr<ScreenShotter> ss)
 {
     _screenShotter.reset(ss.release());
 }
@@ -1062,10 +1062,10 @@ Gui::setInvalidatedRegions(const InvalidatedRanges& 
ranges)
 
 #ifdef USE_SWFTREE
 
-std::auto_ptr<movie_root::InfoTree>
+std::unique_ptr<movie_root::InfoTree>
 Gui::getMovieInfo() const
 {
-    std::auto_ptr<movie_root::InfoTree> tr;
+    std::unique_ptr<movie_root::InfoTree> tr;
 
     if (!_stage) {
         return tr;
diff --git a/gui/gui.h b/gui/gui.h
index 69ec79e..483c467 100644
--- a/gui/gui.h
+++ b/gui/gui.h
@@ -113,7 +113,7 @@ public:
     /// Set the time in milliseconds after which the programme should exit.
     virtual void setTimeout(unsigned int timeout) = 0;
 
-    void setScreenShotter(std::auto_ptr<ScreenShotter> ss);
+    void setScreenShotter(std::unique_ptr<ScreenShotter> ss);
 
     /// \brief
     /// Create and display our window.
@@ -383,7 +383,7 @@ public:
 
 #ifdef USE_SWFTREE
     /// Return a tree containing information about the movie playing.
-    std::auto_ptr<movie_root::InfoTree> getMovieInfo() const;
+    std::unique_ptr<movie_root::InfoTree> getMovieInfo() const;
 #endif
 
     typedef std::map<std::string, std::string> VariableMap;
@@ -614,18 +614,18 @@ private:
 
 /// Named constructors
 namespace gui {
-  std::auto_ptr<Gui> createFBGui(unsigned long xid, float scale, bool loop, 
RunResources& r);
+  std::unique_ptr<Gui> createFBGui(unsigned long xid, float scale, bool loop, 
RunResources& r);
 }
-std::auto_ptr<Gui> createGTKGui(unsigned long xid, float scale, bool loop, 
RunResources& r);
-std::auto_ptr<Gui> createKDEGui(unsigned long xid, float scale, bool loop, 
RunResources& r);
-std::auto_ptr<Gui> createQt4Gui(unsigned long xid, float scale, bool loop, 
RunResources& r);
-std::auto_ptr<Gui> createSDLGui(unsigned long xid, float scale, bool loop, 
RunResources& r);
-std::auto_ptr<Gui> createFLTKGui(unsigned long xid, float scale, bool loop, 
RunResources& r);
-std::auto_ptr<Gui> createAQUAGui(unsigned long xid, float scale, bool loop, 
RunResources& r);
-std::auto_ptr<Gui> createRISCOSGui(unsigned long xid, float scale, bool loop, 
RunResources& r);
-std::auto_ptr<Gui> createAOS4Gui(unsigned long xid, float scale, bool loop, 
RunResources& r);
-std::auto_ptr<Gui> createHaikuGui(unsigned long xid, float scale, bool loop, 
RunResources& r);
-std::auto_ptr<Gui> createDumpGui(unsigned long xid, float scale, bool loop, 
RunResources& r);
+std::unique_ptr<Gui> createGTKGui(unsigned long xid, float scale, bool loop, 
RunResources& r);
+std::unique_ptr<Gui> createKDEGui(unsigned long xid, float scale, bool loop, 
RunResources& r);
+std::unique_ptr<Gui> createQt4Gui(unsigned long xid, float scale, bool loop, 
RunResources& r);
+std::unique_ptr<Gui> createSDLGui(unsigned long xid, float scale, bool loop, 
RunResources& r);
+std::unique_ptr<Gui> createFLTKGui(unsigned long xid, float scale, bool loop, 
RunResources& r);
+std::unique_ptr<Gui> createAQUAGui(unsigned long xid, float scale, bool loop, 
RunResources& r);
+std::unique_ptr<Gui> createRISCOSGui(unsigned long xid, float scale, bool 
loop, RunResources& r);
+std::unique_ptr<Gui> createAOS4Gui(unsigned long xid, float scale, bool loop, 
RunResources& r);
+std::unique_ptr<Gui> createHaikuGui(unsigned long xid, float scale, bool loop, 
RunResources& r);
+std::unique_ptr<Gui> createDumpGui(unsigned long xid, float scale, bool loop, 
RunResources& r);
 
  
 } // end of gnash namespace
diff --git a/gui/haiku/gui_haiku.cpp b/gui/haiku/gui_haiku.cpp
index 0793462..346adec 100644
--- a/gui/haiku/gui_haiku.cpp
+++ b/gui/haiku/gui_haiku.cpp
@@ -32,12 +32,12 @@
 namespace gnash {
 
 #ifdef GUI_HAIKU
-std::auto_ptr<Gui> createHaikuGui(unsigned long windowid, float scale, bool 
do_loop, RunResources& r)
+std::unique_ptr<Gui> createHaikuGui(unsigned long windowid, float scale, bool 
do_loop, RunResources& r)
 {
-    return std::auto_ptr<Gui>(new HaikuGui(windowid, scale, do_loop, r));
+    return std::unique_ptr<Gui>(new HaikuGui(windowid, scale, do_loop, r));
 }
 #else // ! GUI_HAIKU
-std::auto_ptr<Gui> createHaikuGui(unsigned long , float, bool, 
RunResourcesfloat , bool , unsigned int )
+std::unique_ptr<Gui> createHaikuGui(unsigned long , float, bool, 
RunResourcesfloat , bool , unsigned int )
 {
     throw GnashException("Support for Haiku gui was not compiled in");
 }
diff --git a/gui/pythonmod/gnash-view.cpp b/gui/pythonmod/gnash-view.cpp
index f1d23e5..df3209f 100644
--- a/gui/pythonmod/gnash-view.cpp
+++ b/gui/pythonmod/gnash-view.cpp
@@ -62,13 +62,13 @@ struct _GnashView {
     //
     /// This must be kept alive for the entire lifetime of the movie_root
     /// (currently: of the Gui).
-    std::auto_ptr<gnash::RunResources> run_info;
+    std::unique_ptr<gnash::RunResources> run_info;
 
     boost::intrusive_ptr<gnash::movie_definition> movie_definition;
     gnash::Movie* movie;
-    std::auto_ptr<gnash::movie_root> stage;
-    std::auto_ptr<gnash::SystemClock> system_clock;
-    std::auto_ptr<gnash::InterruptableVirtualClock> virtual_clock;
+    std::unique_ptr<gnash::movie_root> stage;
+    std::unique_ptr<gnash::SystemClock> system_clock;
+    std::unique_ptr<gnash::InterruptableVirtualClock> virtual_clock;
 };
 
 G_DEFINE_TYPE(GnashView, gnash_view, GTK_TYPE_BIN)
@@ -422,9 +422,9 @@ gnash_view_load_movie(GnashView *view, const gchar *uri)
     view->run_info.reset(new gnash::RunResources());
     view->run_info->setSoundHandler(view->sound_handler);
 
-    std::auto_ptr<gnash::NamingPolicy> np(new gnash::IncrementalRename(url));
+    std::unique_ptr<gnash::NamingPolicy> np(new gnash::IncrementalRename(url));
     boost::shared_ptr<gnash::StreamProvider> sp(
-           new gnash::StreamProvider(url, url, np));
+           new gnash::StreamProvider(url, url, std::move(np)));
     view->run_info->setStreamProvider(sp);
 
     gnash::RcInitFile& rcfile = gnash::RcInitFile::getDefaultInstance();
diff --git a/gui/qt/GuiQt4.cpp b/gui/qt/GuiQt4.cpp
index 92b27e7..ea0e2dd 100644
--- a/gui/qt/GuiQt4.cpp
+++ b/gui/qt/GuiQt4.cpp
@@ -32,12 +32,12 @@
 namespace gnash {
 
 #ifdef GUI_QT4
-std::auto_ptr<Gui> createQt4Gui(unsigned long windowid, float scale, bool 
do_loop, RunResources& r)
+std::unique_ptr<Gui> createQt4Gui(unsigned long windowid, float scale, bool 
do_loop, RunResources& r)
 {
-       return std::auto_ptr<Gui>(new Qt4Gui(windowid, scale, do_loop, r));
+       return std::unique_ptr<Gui>(new Qt4Gui(windowid, scale, do_loop, r));
 }
 #else 
-std::auto_ptr<Gui> createQt4Gui(unsigned long , float, bool, RunResourcesfloat 
, bool , unsigned int )
+std::unique_ptr<Gui> createQt4Gui(unsigned long , float, bool, 
RunResourcesfloat , bool , unsigned int )
 {
        throw GnashException("Support for QT4 gui was not compiled in");
 }
diff --git a/gui/qt/Qt4GlueAgg.h b/gui/qt/Qt4GlueAgg.h
index 688f799..52b7ae5 100644
--- a/gui/qt/Qt4GlueAgg.h
+++ b/gui/qt/Qt4GlueAgg.h
@@ -56,8 +56,8 @@ class Qt4AggGlue : public Qt4Glue
     int _height;
     boost::scoped_array<unsigned char> _offscreenbuf;
     Renderer* _renderer; // We don't own this pointer.
-    std::auto_ptr<QImage> _image;
-    std::auto_ptr<QPainter> _painter;
+    std::unique_ptr<QImage> _image;
+    std::unique_ptr<QPainter> _painter;
 };
 
 
diff --git a/gui/qt/Qt4GlueCairo.h b/gui/qt/Qt4GlueCairo.h
index 825b537..02cc448 100644
--- a/gui/qt/Qt4GlueCairo.h
+++ b/gui/qt/Qt4GlueCairo.h
@@ -26,7 +26,7 @@
 
 #include "Qt4Glue.h"
 
-#include <memory>        // for auto_ptr
+#include <memory>        // for unique_ptr
 #include <QImage>
 #include <boost/scoped_array.hpp>
 #include <QPainter>
@@ -58,8 +58,8 @@ class Qt4CairoGlue : public Qt4Glue
     int _height;
     boost::scoped_array<unsigned char> _offscreenbuf;
     Renderer* _renderer; // We don't own this pointer.
-    std::auto_ptr<QImage> _image;
-    std::auto_ptr<QPainter> _painter;
+    std::unique_ptr<QImage> _image;
+    std::unique_ptr<QPainter> _painter;
 
     cairo_t         *_cairo_handle;
     cairo_surface_t *_cairo_surface;
diff --git a/gui/qt/Qt4Gui.cpp b/gui/qt/Qt4Gui.cpp
index 469fe01..74bb48e 100644
--- a/gui/qt/Qt4Gui.cpp
+++ b/gui/qt/Qt4Gui.cpp
@@ -493,7 +493,7 @@ Qt4Gui::showProperties()
             SIGNAL(clicked()), SLOT(close()));
 
 #ifdef USE_SWFTREE
-    std::auto_ptr<movie_root::InfoTree> infoptr = getMovieInfo();
+    std::unique_ptr<movie_root::InfoTree> infoptr = getMovieInfo();
     const movie_root::InfoTree& info = *infoptr;
 
     QTreeWidget *tree = new QTreeWidget();
@@ -678,7 +678,7 @@ Qt4Gui::setupMenus()
 void
 Qt4Gui::createMainMenu()
 {
-    std::auto_ptr<QMenuBar> mainMenu(new QMenuBar);
+    std::unique_ptr<QMenuBar> mainMenu(new QMenuBar);
 
     // Set up the menu bar.
     mainMenu->addMenu(fileMenu);
diff --git a/gui/qt/Qt4Gui.h b/gui/qt/Qt4Gui.h
index c8696be..56985a6 100644
--- a/gui/qt/Qt4Gui.h
+++ b/gui/qt/Qt4Gui.h
@@ -142,7 +142,7 @@ private:
  
     /// The main application, which should destroy everything
     /// left on closing.
-    std::auto_ptr<QApplication>  _application;
+    std::unique_ptr<QApplication>  _application;
     
     /// The widget that is used for embedding between processes.
     EmbedWidget* _embedWidget;
@@ -154,10 +154,10 @@ private:
     DrawingWidget* _drawingWidget;
     
     /// Takes care of painting onto the widget.
-    std::auto_ptr<Qt4Glue> _glue;
+    std::unique_ptr<Qt4Glue> _glue;
     
     /// The main application window.
-    std::auto_ptr<QMainWindow> _window;
+    std::unique_ptr<QMainWindow> _window;
 
     /// A map for Qt::Key values that don't easily
     /// map onto Gnash ones.
diff --git a/gui/qt/gui_kde.cpp b/gui/qt/gui_kde.cpp
index 7bd22ae..f0a50e9 100644
--- a/gui/qt/gui_kde.cpp
+++ b/gui/qt/gui_kde.cpp
@@ -32,12 +32,12 @@
 namespace gnash {
 
 #ifdef GUI_KDE3
-std::auto_ptr<Gui> createKDEGui(unsigned long windowid, float scale, bool 
do_loop, RunResources& r)
+std::unique_ptr<Gui> createKDEGui(unsigned long windowid, float scale, bool 
do_loop, RunResources& r)
 {
-       return std::auto_ptr<Gui>(new KdeGui(windowid, scale, do_loop, r));
+       return std::unique_ptr<Gui>(new KdeGui(windowid, scale, do_loop, r));
 }
 #else // ! GUI_KDE3
-std::auto_ptr<Gui> createKDEGui(unsigned long , float, bool, RunResourcesfloat 
, bool , unsigned int )
+std::unique_ptr<Gui> createKDEGui(unsigned long , float, bool, 
RunResourcesfloat , bool , unsigned int )
 {
        throw GnashException("Support for KDE gui was not compiled in");
 }
diff --git a/gui/qt/kde_glue_agg.h b/gui/qt/kde_glue_agg.h
index 7525524..9b6102a 100644
--- a/gui/qt/kde_glue_agg.h
+++ b/gui/qt/kde_glue_agg.h
@@ -56,7 +56,7 @@ class KdeAggGlue : public KdeGlue
     Renderer* _renderer; // We don't own this pointer.
     geometry::Range2d<int> _validbounds;
     std::vector< geometry::Range2d<int> > _drawbounds;
-    std::auto_ptr<QImage> _qimage;
+    std::unique_ptr<QImage> _qimage;
 };
 
 
diff --git a/gui/qt/kdesup.h b/gui/qt/kdesup.h
index 0debf6d..aaceb5c 100644
--- a/gui/qt/kdesup.h
+++ b/gui/qt/kdesup.h
@@ -102,8 +102,8 @@ public:
     void resize(int width, int height);
     void quitUI();
  private:
-    std::auto_ptr<QApplication>  _qapp;
-    std::auto_ptr<qwidget>       _qwidget;
+    std::unique_ptr<QApplication>  _qapp;
+    std::unique_ptr<qwidget>       _qwidget;
     GLUE                         _glue;    
 
     gnash::key::code qtToGnashKey(QKeyEvent *event);
diff --git a/gui/sdl/gui_sdl.cpp b/gui/sdl/gui_sdl.cpp
index 3183c13..9bfa6df 100644
--- a/gui/sdl/gui_sdl.cpp
+++ b/gui/sdl/gui_sdl.cpp
@@ -32,12 +32,12 @@
 namespace gnash {
 
 #ifdef GUI_SDL
-std::auto_ptr<Gui> createSDLGui(unsigned long windowid, float scale, bool 
do_loop, RunResources& r)
+std::unique_ptr<Gui> createSDLGui(unsigned long windowid, float scale, bool 
do_loop, RunResources& r)
 {
-       return std::auto_ptr<Gui>(new SDLGui(windowid, scale, do_loop, r));
+       return std::unique_ptr<Gui>(new SDLGui(windowid, scale, do_loop, r));
 }
 #else // ! GUI_SDL
-std::auto_ptr<Gui> createSDLGui(unsigned long , float, bool, RunResourcesfloat 
, bool , unsigned int )
+std::unique_ptr<Gui> createSDLGui(unsigned long , float, bool, 
RunResourcesfloat , bool , unsigned int )
 {
        throw GnashException("Support for SDL gui was not compiled in");
 }
diff --git a/libbase/GnashImage.cpp b/libbase/GnashImage.cpp
index e08071c..cea64bd 100644
--- a/libbase/GnashImage.cpp
+++ b/libbase/GnashImage.cpp
@@ -183,7 +183,7 @@ Output::writeImageData(FileType type,
     
     quality = clamp<int>(quality, 0, 100);    
 
-    std::auto_ptr<Output> outChannel;
+    std::unique_ptr<Output> outChannel;
 
     switch (type) {
 #ifdef USE_PNG
@@ -213,11 +213,11 @@ Output::writeImageData(FileType type,
 }
 
 // See GnashEnums.h for file types.
-std::auto_ptr<GnashImage>
+std::unique_ptr<GnashImage>
 Input::readImageData(boost::shared_ptr<IOChannel> in, FileType type)
 {
-    std::auto_ptr<GnashImage> im;
-    std::auto_ptr<Input> inChannel;
+    std::unique_ptr<GnashImage> im;
+    std::unique_ptr<Input> inChannel;
 
     switch (type) {
 #ifdef USE_PNG
@@ -281,14 +281,14 @@ Input::readImageData(boost::shared_ptr<IOChannel> in, 
FileType type)
 
 // For reading SWF JPEG3-style image data, like ordinary JPEG, 
 // but stores the data in ImageRGBA format.
-std::auto_ptr<ImageRGBA>
+std::unique_ptr<ImageRGBA>
 Input::readSWFJpeg3(boost::shared_ptr<IOChannel> in)
 {
 
-    std::auto_ptr<ImageRGBA> im;
+    std::unique_ptr<ImageRGBA> im;
 
     // Calling with headerBytes as 0 has a special effect...
-    std::auto_ptr<JpegInput> j_in(
+    std::unique_ptr<JpegInput> j_in(
             JpegInput::createSWFJpeg2HeaderOnly(in, 0));
 
     // If this isn't true, we should have thrown.
diff --git a/libbase/GnashImage.h b/libbase/GnashImage.h
index cb7d17e..0717a01 100644
--- a/libbase/GnashImage.h
+++ b/libbase/GnashImage.h
@@ -308,7 +308,7 @@ public:
     /// \brief
     /// For reading SWF JPEG3-style image data, like ordinary JPEG, 
     /// but stores the data in ImageRGBA format.
-    DSOEXPORT static std::auto_ptr<ImageRGBA> readSWFJpeg3(
+    DSOEXPORT static std::unique_ptr<ImageRGBA> readSWFJpeg3(
             boost::shared_ptr<gnash::IOChannel> in);
 
     /// Read image data from an IOChannel into an GnashImage.
@@ -317,8 +317,8 @@ public:
     /// @param type The type of image to read.
     /// @return     An GnashImage with the read image data. If type
     ///             is an unsupported FileType or image reading fails,
-    ///             a NULL auto_ptr is returned.
-    DSOEXPORT static std::auto_ptr<GnashImage> readImageData(
+    ///             a NULL unique_ptr is returned.
+    DSOEXPORT static std::unique_ptr<GnashImage> readImageData(
             boost::shared_ptr<gnash::IOChannel> in, FileType type);
 
 protected:
diff --git a/libbase/GnashImageGif.cpp b/libbase/GnashImageGif.cpp
index 26865c1..832532e 100644
--- a/libbase/GnashImageGif.cpp
+++ b/libbase/GnashImageGif.cpp
@@ -304,10 +304,10 @@ GifInput::read()
 
 } // unnamed namespace
 
-std::auto_ptr<Input>
+std::unique_ptr<Input>
 createGifInput(boost::shared_ptr<IOChannel> in)
 {
-    std::auto_ptr<Input> ret(new GifInput(in));
+    std::unique_ptr<Input> ret(new GifInput(in));
     ret->read();
     return ret;
 }
diff --git a/libbase/GnashImageGif.h b/libbase/GnashImageGif.h
index 0204202..6ac5abd 100644
--- a/libbase/GnashImageGif.h
+++ b/libbase/GnashImageGif.h
@@ -39,7 +39,7 @@ namespace image {
 /// Create a GifInput and transfer ownership to the caller.
 //
 /// @param in   The IOChannel to read GIF data from.
-std::auto_ptr<Input> createGifInput(boost::shared_ptr<IOChannel> in);
+std::unique_ptr<Input> createGifInput(boost::shared_ptr<IOChannel> in);
 
 } // namespace image
 } // namespace gnash
diff --git a/libbase/GnashImageJpeg.cpp b/libbase/GnashImageJpeg.cpp
index 8a6c0f3..5594ea1 100644
--- a/libbase/GnashImageJpeg.cpp
+++ b/libbase/GnashImageJpeg.cpp
@@ -441,13 +441,13 @@ JpegInput::errorOccurred(const char* msg)
 // Create and read a new image, using a input object that
 // already has tables loaded.  The IJG documentation describes
 // this as "abbreviated" format.
-std::auto_ptr<GnashImage>
+std::unique_ptr<GnashImage>
 JpegInput::readSWFJpeg2WithTables(JpegInput& loader)
 {
 
     loader.read();
 
-    std::auto_ptr<GnashImage> im(
+    std::unique_ptr<GnashImage> im(
             new ImageRGB(loader.getWidth(), loader.getHeight()));
 
     for (size_t y = 0, height = loader.getHeight(); y < height; y++) {
@@ -619,11 +619,11 @@ JpegOutput::writeImageRGBA(const unsigned char* rgbaData)
     writeImageRGB(data.get());
 }
 
-std::auto_ptr<Output>
+std::unique_ptr<Output>
 JpegOutput::create(boost::shared_ptr<IOChannel> o, size_t width, size_t height,
         int quality)
 {
-    std::auto_ptr<Output> outChannel(new JpegOutput(o, width, height, 
quality));
+    std::unique_ptr<Output> outChannel(new JpegOutput(o, width, height, 
quality));
     return outChannel;
 }
 
diff --git a/libbase/GnashImageJpeg.h b/libbase/GnashImageJpeg.h
index 44b50d2..1d939a2 100644
--- a/libbase/GnashImageJpeg.h
+++ b/libbase/GnashImageJpeg.h
@@ -118,9 +118,9 @@ public:
     /// Create a JpegInput and transfer ownership to the caller.
     //
     /// @param in   The IOChannel to read JPEG data from.
-    static std::auto_ptr<Input> create(boost::shared_ptr<IOChannel> in)
+    static std::unique_ptr<Input> create(boost::shared_ptr<IOChannel> in)
     {
-        std::auto_ptr<Input> ret(new JpegInput(in));
+        std::unique_ptr<Input> ret(new JpegInput(in));
         // might throw an exception (I guess)
         if (ret.get()) ret->read();
         return ret;
@@ -133,7 +133,7 @@ public:
     /// @param loader   The JpegInput object to use for reading the
     ///                 data. This should have been constructed with
     ///                 createSWFJpeg2HeaderOnly().
-    DSOEXPORT static std::auto_ptr<GnashImage> readSWFJpeg2WithTables(
+    DSOEXPORT static std::unique_ptr<GnashImage> readSWFJpeg2WithTables(
             JpegInput& loader);
 
     /// Create a JPEG 'loader' object by reading a JPEG header.
@@ -142,10 +142,10 @@ public:
     //
     /// @param in               The channel to read JPEG header data from.
     /// @param maxHeaderBytes   The maximum number of bytes to read.
-    static std::auto_ptr<JpegInput> createSWFJpeg2HeaderOnly(
+    static std::unique_ptr<JpegInput> createSWFJpeg2HeaderOnly(
             boost::shared_ptr<IOChannel> in, unsigned int maxHeaderBytes)
     {
-        std::auto_ptr<JpegInput> ret (new JpegInput(in));
+        std::unique_ptr<JpegInput> ret (new JpegInput(in));
         // might throw an exception
         if (ret.get()) ret->readHeader(maxHeaderBytes);
         return ret;
@@ -197,7 +197,7 @@ public:
     /// @param width    The width of the resulting image
     /// @param height   The height of the resulting image.
     /// @param quality  The quality of the created image, from 1-100.
-    static std::auto_ptr<Output> create(boost::shared_ptr<IOChannel> out,
+    static std::unique_ptr<Output> create(boost::shared_ptr<IOChannel> out,
             size_t width, size_t height, int quality);
     
 private:
diff --git a/libbase/GnashImagePng.cpp b/libbase/GnashImagePng.cpp
index 29d9624..36e5c7e 100644
--- a/libbase/GnashImagePng.cpp
+++ b/libbase/GnashImagePng.cpp
@@ -402,19 +402,19 @@ PngOutput::writeImageRGB(const unsigned char* rgbData)
 
 } // unnamed namespace
 
-std::auto_ptr<Input>
+std::unique_ptr<Input>
 createPngInput(boost::shared_ptr<IOChannel> in)
 {
-    std::auto_ptr<Input> ret(new PngInput(in));
+    std::unique_ptr<Input> ret(new PngInput(in));
     ret->read();
     return ret;
 }
 
-std::auto_ptr<Output>
+std::unique_ptr<Output>
 createPngOutput(boost::shared_ptr<IOChannel> o, size_t width,
                        size_t height, int quality)
 {
-    std::auto_ptr<Output> outChannel(new PngOutput(o, width, height, quality));
+    std::unique_ptr<Output> outChannel(new PngOutput(o, width, height, 
quality));
     return outChannel;
 }
 
diff --git a/libbase/GnashImagePng.h b/libbase/GnashImagePng.h
index 4888ab3..ed3d8c5 100644
--- a/libbase/GnashImagePng.h
+++ b/libbase/GnashImagePng.h
@@ -39,9 +39,9 @@ namespace image {
 /// Create a PngInput and transfer ownership to the caller.
 //
 /// @param in   The IOChannel to read PNG data from.
-std::auto_ptr<Input> createPngInput(boost::shared_ptr<IOChannel> in);
+std::unique_ptr<Input> createPngInput(boost::shared_ptr<IOChannel> in);
 
-std::auto_ptr<Output> createPngOutput(boost::shared_ptr<IOChannel> out,
+std::unique_ptr<Output> createPngOutput(boost::shared_ptr<IOChannel> out,
         size_t width, size_t height, int quality);
 
 } // namespace image
diff --git a/libbase/GnashVaapiTexture.h b/libbase/GnashVaapiTexture.h
index acef86b..ba2a241 100644
--- a/libbase/GnashVaapiTexture.h
+++ b/libbase/GnashVaapiTexture.h
@@ -31,7 +31,7 @@ class VaapiSurfaceGLX;
 
 /// OpenGL texture abstraction
 class DSOEXPORT GnashVaapiTexture : public GnashTexture {
-    std::auto_ptr<VaapiSurfaceGLX> _surface;
+    std::unique_ptr<VaapiSurfaceGLX> _surface;
 
 public:
     GnashVaapiTexture(unsigned int width, unsigned int height, 
diff --git a/libbase/NetworkAdapter.cpp b/libbase/NetworkAdapter.cpp
index 881f4f4..a133026 100644
--- a/libbase/NetworkAdapter.cpp
+++ b/libbase/NetworkAdapter.cpp
@@ -43,16 +43,16 @@ namespace gnash {
 
 // Stub for warning about access when no libcurl is defined.
 
-std::auto_ptr<IOChannel>
+std::unique_ptr<IOChannel>
 NetworkAdapter::makeStream(const std::string& /*url*/, 
         const std::string& /*cachefile*/)
 {
     log_error(_("libcurl is not available, but "
                 "Gnash has attempted to use the curl adapter"));
-    return std::auto_ptr<IOChannel>();
+    return std::unique_ptr<IOChannel>();
 }
 
-std::auto_ptr<IOChannel>
+std::unique_ptr<IOChannel>
 NetworkAdapter::makeStream(const std::string& url,
         const std::string& /*postdata*/,
         const std::string& cachefile)
@@ -60,7 +60,7 @@ NetworkAdapter::makeStream(const std::string& url,
     return makeStream(url, cachefile);
 }
 
-std::auto_ptr<IOChannel>
+std::unique_ptr<IOChannel>
 NetworkAdapter::makeStream(const std::string& url,
            const std::string& /*postdata*/,
             const RequestHeaders& /*headers*/,
@@ -1337,14 +1337,14 @@ CurlSession::exportCookies()
 // Exported interfaces
 //-------------------------------------------
 
-std::auto_ptr<IOChannel>
+std::unique_ptr<IOChannel>
 NetworkAdapter::makeStream(const std::string& url, const std::string& 
cachefile)
 {
 #ifdef GNASH_CURL_VERBOSE
     log_debug("making curl stream for %s", url);
 #endif
 
-    std::auto_ptr<IOChannel> stream;
+    std::unique_ptr<IOChannel> stream;
 
     try {
         stream.reset(new CurlStreamFile(url, cachefile));
@@ -1355,7 +1355,7 @@ NetworkAdapter::makeStream(const std::string& url, const 
std::string& cachefile)
     return stream;
 }
 
-std::auto_ptr<IOChannel>
+std::unique_ptr<IOChannel>
 NetworkAdapter::makeStream(const std::string& url, const std::string& postdata,
         const std::string& cachefile)
 {
@@ -1363,7 +1363,7 @@ NetworkAdapter::makeStream(const std::string& url, const 
std::string& postdata,
     log_debug("making curl stream for %s", url);
 #endif
 
-    std::auto_ptr<IOChannel> stream;
+    std::unique_ptr<IOChannel> stream;
 
     try {
         stream.reset(new CurlStreamFile(url, postdata, cachefile));
@@ -1374,12 +1374,12 @@ NetworkAdapter::makeStream(const std::string& url, 
const std::string& postdata,
     return stream;
 }
 
-std::auto_ptr<IOChannel>
+std::unique_ptr<IOChannel>
 NetworkAdapter::makeStream(const std::string& url, const std::string& postdata,
         const RequestHeaders& headers, const std::string& cachefile)
 {
 
-    std::auto_ptr<IOChannel> stream;
+    std::unique_ptr<IOChannel> stream;
 
     try {
         stream.reset(new CurlStreamFile(url, postdata, headers, cachefile));
diff --git a/libbase/NetworkAdapter.h b/libbase/NetworkAdapter.h
index 61ebf6a..75a389b 100644
--- a/libbase/NetworkAdapter.h
+++ b/libbase/NetworkAdapter.h
@@ -47,7 +47,7 @@ public:
     /// from an url.
     //
     /// @param url      The url to fetch data from.
-    DSOEXPORT static std::auto_ptr<IOChannel> makeStream(
+    DSOEXPORT static std::unique_ptr<IOChannel> makeStream(
             const std::string& url, const std::string& cachefile);
 
     /// \brief
@@ -58,7 +58,7 @@ public:
     ///
     /// @param url      The url to post to.
     /// @param postdata The url-encoded post data
-    DSOEXPORT static std::auto_ptr<IOChannel> makeStream(
+    DSOEXPORT static std::unique_ptr<IOChannel> makeStream(
             const std::string& url, const std::string& postdata,
             const std::string& cachefile);
 
@@ -71,7 +71,7 @@ public:
     /// @param url      The url to post to.
     /// @param postdata The url-encoded post data
     /// @param headers  A RequestHeaders map of custom headers to send.
-    DSOEXPORT static std::auto_ptr<IOChannel> makeStream(const std::string& 
url,
+    DSOEXPORT static std::unique_ptr<IOChannel> makeStream(const std::string& 
url,
            const std::string& postdata, const RequestHeaders& headers,
            const std::string& cachefile);
 
diff --git a/libbase/StreamProvider.cpp b/libbase/StreamProvider.cpp
index 8204089..37ea52b 100644
--- a/libbase/StreamProvider.cpp
+++ b/libbase/StreamProvider.cpp
@@ -27,6 +27,7 @@
 #include "log.h"
 #include "rc.h" // for rcfile
 #include "NamingPolicy.h"
+#include "IOChannel.h"
 
 #include <cerrno>
 #include <cstring> // for strerror
@@ -39,9 +40,9 @@
 namespace gnash {
 
 StreamProvider::StreamProvider(const URL& orig, const URL& base,
-        std::auto_ptr<NamingPolicy> np)
+        std::unique_ptr<NamingPolicy> np)
     :
-    _namingPolicy(np),
+    _namingPolicy(std::move(np)),
     _base(base),
     _original(orig)
 {
@@ -53,11 +54,14 @@ StreamProvider::allow(const URL& url) const
     return URLAccessManager::allow(url, _original);
 }
 
-std::auto_ptr<IOChannel>
-StreamProvider::getStream(const URL& url, bool namedCacheFile) const
+struct dummy : public IOChannel
 {
+};
 
-    std::auto_ptr<IOChannel> stream;
+std::unique_ptr<IOChannel>
+StreamProvider::getStream(const URL& url, bool namedCacheFile) const
+{
+    std::unique_ptr<IOChannel> stream;
 
        if (url.protocol() == "file") {
 
@@ -73,12 +77,12 @@ StreamProvider::getStream(const URL& url, bool 
namedCacheFile) const
                        if (0 > fd) {
                                log_error(_("Could not stdin (filename -): 
%2%"),
                                          std::strerror(errno));
-                               return stream;
+                               return nullptr;
                        }
                        FILE *newin = fdopen(fd, "rb");
 
                        // Close on destruction.
-                       stream = makeFileChannel(newin, true);
+                       stream = std::move(makeFileChannel(newin, true));
                        return stream;
                }
                else {
@@ -92,22 +96,22 @@ StreamProvider::getStream(const URL& url, bool 
namedCacheFile) const
                                return stream;
                        }
                        // Close on destruction
-                       stream = makeFileChannel(newin, true);
+                       stream = std::move(makeFileChannel(newin, true));
                        return stream;
                }
        }
        else {
                if (allow(url)) {
-                       stream = NetworkAdapter::makeStream(url.str(), 
-                    namedCacheFile ? namingPolicy()(url) : "");
+                       stream = 
std::move(NetworkAdapter::makeStream(url.str(), 
+                    namedCacheFile ? namingPolicy()(url) : ""));
                }
 
-        // Will return 0 auto_ptr if not allowed.
+        // Will return 0 unique_ptr if not allowed.
                return stream;
        }
 }
 
-std::auto_ptr<IOChannel>
+std::unique_ptr<IOChannel>
 StreamProvider::getStream(const URL& url, const std::string& postdata,
         const NetworkAdapter::RequestHeaders& headers, bool namedCacheFile)
         const
@@ -125,16 +129,16 @@ StreamProvider::getStream(const URL& url, const 
std::string& postdata,
                     namedCacheFile ? namingPolicy()(url) : "");
        }
 
-       return std::auto_ptr<IOChannel>();
+       return std::unique_ptr<IOChannel>();
 
 }
 
-std::auto_ptr<IOChannel>
+std::unique_ptr<IOChannel>
 StreamProvider::getStream(const URL& url, const std::string& postdata,
        bool namedCacheFile) const
 {
 
-    std::auto_ptr<IOChannel> stream;
+    std::unique_ptr<IOChannel> stream;
 
        if (url.protocol() == "file") {
         if (!postdata.empty()) {    
@@ -165,7 +169,7 @@ StreamProvider::getStream(const URL& url, const 
std::string& postdata,
                        stream = NetworkAdapter::makeStream(url.str(), postdata,
                     namedCacheFile ? namingPolicy()(url) : "");
                }
-        // Will return 0 auto_ptr if not allowed.
+        // Will return 0 unique_ptr if not allowed.
                return stream;          
 
        }
diff --git a/libbase/StreamProvider.h b/libbase/StreamProvider.h
index eae2ee9..2466c03 100644
--- a/libbase/StreamProvider.h
+++ b/libbase/StreamProvider.h
@@ -57,8 +57,8 @@ public:
     /// @param base         The base URL, used to resolve URLs.
     /// @param np           A policy to decide the name of cached files.
        StreamProvider(const URL& original, const URL& base,
-            std::auto_ptr<NamingPolicy> np =
-            std::auto_ptr<NamingPolicy>(new NamingPolicy));
+            std::unique_ptr<NamingPolicy> np =
+            std::unique_ptr<NamingPolicy>(new NamingPolicy));
 
        virtual ~StreamProvider() {}
 
@@ -66,7 +66,7 @@ public:
        //
        /// On error NULL is returned
        /// Derive from this for a CachingStreamProvider
-       virtual std::auto_ptr<IOChannel> getStream(const URL& url,
+       virtual std::unique_ptr<IOChannel> getStream(const URL& url,
             bool namedCacheFile = false) const;
 
        /// Get a stream from the response of a POST operation
@@ -78,10 +78,10 @@ public:
        ///
        /// @param url      The url to post to.
        /// @param postdata Post data in url-encoded form.
-       virtual std::auto_ptr<IOChannel> getStream(const URL& url,
+       virtual std::unique_ptr<IOChannel> getStream(const URL& url,
             const std::string& postdata, bool namedCacheFile = false) const;
        
-       virtual std::auto_ptr<IOChannel> getStream(const URL& url,
+       virtual std::unique_ptr<IOChannel> getStream(const URL& url,
             const std::string& postdata,
             const NetworkAdapter::RequestHeaders& headers,
             bool namedCacheFile = false) const;
@@ -90,8 +90,8 @@ public:
     //
     /// This is only used when cache file naming is requested in getStream()
     /// This StreamProvider owns the NamingPolicy instance.
-    void setNamingPolicy(std::auto_ptr<NamingPolicy> np) {
-        _namingPolicy = np;
+    void setNamingPolicy(std::unique_ptr<NamingPolicy> np) {
+        _namingPolicy = std::move(np);
     }
 
     /// Return the currently selected policy for converting URL to filename
@@ -121,7 +121,7 @@ public:
 private:
 
     /// The current naming policy for cache files.
-    std::auto_ptr<NamingPolicy> _namingPolicy;
+    std::unique_ptr<NamingPolicy> _namingPolicy;
 
     const URL _base;
 
diff --git a/libbase/tu_file.cpp b/libbase/tu_file.cpp
index f69e930..fb80973 100644
--- a/libbase/tu_file.cpp
+++ b/libbase/tu_file.cpp
@@ -240,18 +240,18 @@ tu_file::close()
     std::fclose(_data);
 }
 
-std::auto_ptr<IOChannel>
+std::unique_ptr<IOChannel>
 makeFileChannel(FILE* fp, bool close)
 {
-    std::auto_ptr<IOChannel> ret(new tu_file(fp, close));
+    std::unique_ptr<IOChannel> ret(new tu_file(fp, close));
     return ret;
 }
 
-std::auto_ptr<IOChannel>
+std::unique_ptr<IOChannel>
 makeFileChannel(const char* filepath, const char* mode)
 {
        FILE* fp = fopen(filepath, mode);
-       if ( fp == 0 ) { return std::auto_ptr<IOChannel>(0); }
+       if ( fp == 0 ) { return std::unique_ptr<IOChannel>(); }
 
        return makeFileChannel(fp, true);
 }
diff --git a/libbase/tu_file.h b/libbase/tu_file.h
index ba82607..75eb4b5 100644
--- a/libbase/tu_file.h
+++ b/libbase/tu_file.h
@@ -25,7 +25,7 @@ namespace gnash {
 /// @param fp A C stream
 ///
 /// @param close Whether the C stream should be automatically closed.
-DSOEXPORT std::auto_ptr<IOChannel> makeFileChannel(FILE* fp, bool close);
+DSOEXPORT std::unique_ptr<IOChannel> makeFileChannel(FILE* fp, bool close);
 
 /// \brief
 /// Creates an IOChannel by opening the given file in the given mode.
@@ -36,7 +36,7 @@ DSOEXPORT std::auto_ptr<IOChannel> makeFileChannel(FILE* fp, 
bool close);
 /// std::fopen)
 ///
 /// @return An IOChannel or NULL if the file could not be opened.
-DSOEXPORT std::auto_ptr<IOChannel> makeFileChannel(const char* filepath, const 
char* mode);
+DSOEXPORT std::unique_ptr<IOChannel> makeFileChannel(const char* filepath, 
const char* mode);
 
 } // namespace gnash
 #endif 
diff --git a/libbase/zlib_adapter.cpp b/libbase/zlib_adapter.cpp
index 1ef03d5..8d84ce8 100644
--- a/libbase/zlib_adapter.cpp
+++ b/libbase/zlib_adapter.cpp
@@ -25,7 +25,7 @@ namespace gnash {
 // Stubs, in case client doesn't want to link to zlib.
 namespace zlib_adapter
 {
-    std::auto_ptr<IOChannel> make_inflater(std::auto_ptr<IOChannel> /*in*/) {
+    std::unique_ptr<IOChannel> make_inflater(std::unique_ptr<IOChannel> 
/*in*/) {
         std::abort(); 
     }
 }
@@ -43,7 +43,7 @@ class InflaterIOChannel : public IOChannel
 public:
 
     /// Constructor.
-    InflaterIOChannel(std::auto_ptr<IOChannel> in);
+    InflaterIOChannel(std::unique_ptr<IOChannel> in);
 
     ~InflaterIOChannel() {
         rewind_unused_bytes();
@@ -81,7 +81,7 @@ private:
 
     static const int ZBUF_SIZE = 4096;
 
-    std::auto_ptr<IOChannel> m_in;
+    std::unique_ptr<IOChannel> m_in;
 
     // position of the input stream where we started inflating.
     std::streampos m_initial_stream_pos;
@@ -291,9 +291,9 @@ InflaterIOChannel::seek(std::streampos pos)
     return true; 
 }
 
-InflaterIOChannel::InflaterIOChannel(std::auto_ptr<IOChannel> in)
+InflaterIOChannel::InflaterIOChannel(std::unique_ptr<IOChannel> in)
     :
-    m_in(in),
+    m_in(std::move(in)),
     m_initial_stream_pos(m_in->tell()),
     m_zstream(),
     m_logical_stream_pos(m_initial_stream_pos),
@@ -310,10 +310,10 @@ 
InflaterIOChannel::InflaterIOChannel(std::auto_ptr<IOChannel> in)
     }
 }
 
-std::auto_ptr<IOChannel> make_inflater(std::auto_ptr<IOChannel> in)
+std::unique_ptr<IOChannel> make_inflater(std::unique_ptr<IOChannel> in)
 {
     assert(in.get());
-    return std::auto_ptr<IOChannel>(new InflaterIOChannel(in));
+    return std::unique_ptr<IOChannel>(new InflaterIOChannel(std::move(in)));
 }
 
 }
diff --git a/libbase/zlib_adapter.h b/libbase/zlib_adapter.h
index 9d590d5..6ad009b 100644
--- a/libbase/zlib_adapter.h
+++ b/libbase/zlib_adapter.h
@@ -29,8 +29,8 @@ namespace zlib_adapter
     /// new stream.
     //
     ///
-    DSOEXPORT std::auto_ptr<IOChannel>
-        make_inflater(std::auto_ptr<IOChannel> in);
+    DSOEXPORT std::unique_ptr<IOChannel>
+        make_inflater(std::unique_ptr<IOChannel> in);
 
 } // namespace gnash.zlib_adapter
 } // namespace gnash
diff --git a/libcore/Button.cpp b/libcore/Button.cpp
index 94cdd7c..1c3c39e 100644
--- a/libcore/Button.cpp
+++ b/libcore/Button.cpp
@@ -559,9 +559,9 @@ Button::mouseEvent(const event_id& event)
     _def->forEachTrigger(event, xec);
 
     // check for built-in event handler.
-    std::auto_ptr<ExecutableCode> code (get_event_handler(event));
+    std::unique_ptr<ExecutableCode> code (get_event_handler(event));
     if (code.get()) {
-        mr.pushAction(code, movie_root::PRIORITY_DOACTION);
+        mr.pushAction(std::move(code), movie_root::PRIORITY_DOACTION);
     }
 
     sendEvent(*getObject(this), get_environment(), event.functionURI());
diff --git a/libcore/DisplayObject.cpp b/libcore/DisplayObject.cpp
index 254c4bd..ae7b18a 100644
--- a/libcore/DisplayObject.cpp
+++ b/libcore/DisplayObject.cpp
@@ -433,10 +433,10 @@ DisplayObject::add_event_handler(const event_id& id, 
const action_buffer& code)
     _event_handlers[id].push_back(&code);
 }
 
-std::auto_ptr<ExecutableCode>
+std::unique_ptr<ExecutableCode>
 DisplayObject::get_event_handler(const event_id& id) const
 {
-    std::auto_ptr<ExecutableCode> handler;
+    std::unique_ptr<ExecutableCode> handler;
 
     Events::const_iterator it = _event_handlers.find(id);
     if ( it == _event_handlers.end() ) return handler;
diff --git a/libcore/DisplayObject.h b/libcore/DisplayObject.h
index bde7359..13df4e5 100644
--- a/libcore/DisplayObject.h
+++ b/libcore/DisplayObject.h
@@ -439,7 +439,7 @@ public:
     ///       to properly fetch any user-defined event handler, which 
     ///       are the ones attached to a DisplayObject with ActionScript code.
     ///
-    std::auto_ptr<ExecutableCode> get_event_handler(const event_id& id) const;
+    std::unique_ptr<ExecutableCode> get_event_handler(const event_id& id) 
const;
 
     /// Set a built-in function handler for the given event
     //
diff --git a/libcore/Font.cpp b/libcore/Font.cpp
index 91767bf..7d563b2 100644
--- a/libcore/Font.cpp
+++ b/libcore/Font.cpp
@@ -59,7 +59,7 @@ Font::GlyphInfo::GlyphInfo()
     advance(0)
 {}
 
-Font::GlyphInfo::GlyphInfo(std::auto_ptr<SWF::ShapeRecord> glyph,
+Font::GlyphInfo::GlyphInfo(std::unique_ptr<SWF::ShapeRecord> glyph,
         float advance)
     :
     glyph(glyph.release()),
@@ -73,7 +73,7 @@ Font::GlyphInfo::GlyphInfo(const GlyphInfo& o)
 {}
 
 
-Font::Font(std::auto_ptr<SWF::DefineFontTag> ft)
+Font::Font(std::unique_ptr<SWF::DefineFontTag> ft)
     :
     _fontTag(ft.release()),
     _name(_fontTag->name()),
@@ -160,7 +160,7 @@ Font::setFlags(boost::uint8_t flags)
 
 
 void
-Font::setCodeTable(std::auto_ptr<CodeTable> table)
+Font::setCodeTable(std::unique_ptr<CodeTable> table)
 {
     if (_embeddedCodeTable) {
         IF_VERBOSE_MALFORMED_SWF(
@@ -292,7 +292,7 @@ Font::add_os_glyph(boost::uint16_t code)
     float advance;
 
     // Get the vectorial glyph
-    std::auto_ptr<SWF::ShapeRecord> sh = ft->getGlyph(code, advance);
+    std::unique_ptr<SWF::ShapeRecord> sh = ft->getGlyph(code, advance);
 
     if (!sh.get()) {
         log_error(_("Could not create shape "
@@ -307,7 +307,7 @@ Font::add_os_glyph(boost::uint16_t code)
     // Add the new glyph id
     _deviceCodeTable[code] = newOffset;
 
-    _deviceGlyphTable.push_back(GlyphInfo(sh, advance));
+    _deviceGlyphTable.push_back(GlyphInfo(std::move(sh), advance));
 
     return newOffset;
 }
diff --git a/libcore/Font.h b/libcore/Font.h
index a2314ed..9fdbb3a 100644
--- a/libcore/Font.h
+++ b/libcore/Font.h
@@ -94,7 +94,7 @@ public:
     // This table maps from Unicode DisplayObject number to glyph index.
     typedef std::map<boost::uint16_t, int> CodeTable;
 
-    Font(std::auto_ptr<SWF::DefineFontTag> ft);
+    Font(std::unique_ptr<SWF::DefineFontTag> ft);
 
     /// Create a device-font only font, using the given name to find it
     //
@@ -233,7 +233,7 @@ public:
         /// Construct default textured glyph
         //
         /// Takes ownership of the SWF::ShapeRecord.
-        GlyphInfo(std::auto_ptr<SWF::ShapeRecord> glyph, float advance);
+        GlyphInfo(std::unique_ptr<SWF::ShapeRecord> glyph, float advance);
 
         GlyphInfo(const GlyphInfo& o);
 
@@ -264,7 +264,7 @@ public:
     /// Add a CodeTable to the font.
     //
     /// This is used by SWF::DefineFontInfoTag
-    void setCodeTable(std::auto_ptr<CodeTable> table);
+    void setCodeTable(std::unique_ptr<CodeTable> table);
 
     /// Retrieve the number of embedded glyphs in this font.
     GlyphInfoRecords::size_type glyphCount() const;
@@ -322,7 +322,7 @@ private:
     typedef std::map<kerning_pair, float> kernings_table;
     kernings_table m_kerning_pairs;
 
-    mutable std::auto_ptr<FreetypeGlyphsProvider> _ftProvider;
+    mutable std::unique_ptr<FreetypeGlyphsProvider> _ftProvider;
 
 };
 
diff --git a/libcore/FreetypeGlyphsProvider.cpp 
b/libcore/FreetypeGlyphsProvider.cpp
index 273bd10..5e121af 100644
--- a/libcore/FreetypeGlyphsProvider.cpp
+++ b/libcore/FreetypeGlyphsProvider.cpp
@@ -24,7 +24,7 @@
 #include "FreetypeGlyphsProvider.h"
 
 #include <string>
-#include <memory> // for auto_ptr
+#include <memory> // for unique_ptr
 #include <boost/cstdint.hpp>
 #include <boost/format.hpp>
 
@@ -371,11 +371,11 @@ FreetypeGlyphsProvider::getFontFilename(const std::string 
&name,
 
 #ifdef USE_FREETYPE 
 // static
-std::auto_ptr<FreetypeGlyphsProvider>
+std::unique_ptr<FreetypeGlyphsProvider>
 FreetypeGlyphsProvider::createFace(const std::string& name, bool bold, bool 
italic)
 {
 
-    std::auto_ptr<FreetypeGlyphsProvider> ret;
+    std::unique_ptr<FreetypeGlyphsProvider> ret;
 
     try { 
         ret.reset(new FreetypeGlyphsProvider(name, bold, italic));
@@ -389,11 +389,11 @@ FreetypeGlyphsProvider::createFace(const std::string& 
name, bool bold, bool ital
 
 }
 #else // ndef USE_FREETYPE 
-std::auto_ptr<FreetypeGlyphsProvider>
+std::unique_ptr<FreetypeGlyphsProvider>
 FreetypeGlyphsProvider::createFace(const std::string&, bool, bool)
 {
     log_error(_("Freetype not supported"));
-    return std::auto_ptr<FreetypeGlyphsProvider>(NULL);
+    return std::unique_ptr<FreetypeGlyphsProvider>(NULL);
 }
 #endif 
        
@@ -480,10 +480,10 @@ FreetypeGlyphsProvider::FreetypeGlyphsProvider(const 
std::string&, bool, bool)
 #endif // ndef USE_FREETYPE 
 
 #ifdef USE_FREETYPE
-std::auto_ptr<SWF::ShapeRecord>
+std::unique_ptr<SWF::ShapeRecord>
 FreetypeGlyphsProvider::getGlyph(boost::uint16_t code, float& advance)
 {
-    std::auto_ptr<SWF::ShapeRecord> glyph;
+    std::unique_ptr<SWF::ShapeRecord> glyph;
 
     FT_Error error = FT_Load_Char(_face, code, FT_LOAD_NO_BITMAP | 
                                                 FT_LOAD_NO_SCALE);
@@ -548,7 +548,7 @@ FreetypeGlyphsProvider::getGlyph(boost::uint16_t code, 
float& advance)
 }
 #else // ndef(USE_FREETYPE)
 
-std::auto_ptr<SWF::ShapeRecord>
+std::unique_ptr<SWF::ShapeRecord>
 FreetypeGlyphsProvider::getGlyph(boost::uint16_t, float& advance)
 {
     abort(); // should never be called... 
diff --git a/libcore/FreetypeGlyphsProvider.h b/libcore/FreetypeGlyphsProvider.h
index 6881584..c3952f6 100644
--- a/libcore/FreetypeGlyphsProvider.h
+++ b/libcore/FreetypeGlyphsProvider.h
@@ -21,7 +21,7 @@
 #define GNASH_FREETYPE_H
 
 #include <string>
-#include <memory> // for auto_ptr
+#include <memory> // for unique_ptr
 #include <boost/thread/mutex.hpp>
 #include <boost/cstdint.hpp>
 
@@ -70,10 +70,10 @@ public:
     ///    Whether to use an italic version of the font
     ///
     /// @return a rasterizer bound to the given font name,
-    ///         or a NULL auto_ptr if the given truetype font
+    ///         or a NULL unique_ptr if the given truetype font
     ///         could not be found.
     ///
-    static std::auto_ptr<FreetypeGlyphsProvider> createFace(
+    static std::unique_ptr<FreetypeGlyphsProvider> createFace(
             const std::string& name, bool bold, bool italic);
 
     /// Destructor
@@ -101,7 +101,7 @@ public:
     ///         or a NULL pointer if the given DisplayObject code
     ///         doesn't exist in this font.
     ///
-    std::auto_ptr<SWF::ShapeRecord> getGlyph(boost::uint16_t code,
+    std::unique_ptr<SWF::ShapeRecord> getGlyph(boost::uint16_t code,
             float& advance);
 
     /// Return the font's ascender in terms of its EM own square.
diff --git a/libcore/LoadVariablesThread.h b/libcore/LoadVariablesThread.h
index bd97ff8..fac6f1d 100644
--- a/libcore/LoadVariablesThread.h
+++ b/libcore/LoadVariablesThread.h
@@ -23,7 +23,6 @@
 
 #include <string>
 #include <map>
-#include <boost/scoped_ptr.hpp>
 #include <boost/thread/thread.hpp>
 #include <boost/thread/mutex.hpp>
 #include <boost/bind.hpp> 
@@ -196,9 +195,9 @@ private:
 
        size_t _bytesTotal;
 
-    boost::scoped_ptr<IOChannel> _stream;
+        std::unique_ptr<IOChannel> _stream;
 
-    boost::scoped_ptr<boost::thread> _thread;
+        std::unique_ptr<boost::thread> _thread;
 
        ValuesMap _vals;
 
diff --git a/libcore/MovieClip.cpp b/libcore/MovieClip.cpp
index 5bb9f07..54600b7 100644
--- a/libcore/MovieClip.cpp
+++ b/libcore/MovieClip.cpp
@@ -542,8 +542,8 @@ MovieClip::getDisplayObjectAtDepth(int depth)
 void
 MovieClip::queueEvent(const event_id& id, int lvl)
 {
-    std::auto_ptr<ExecutableCode> event(new QueuedEvent(this, id));
-    stage().pushAction(event, lvl);
+    std::unique_ptr<ExecutableCode> event(new QueuedEvent(this, id));
+    stage().pushAction(std::move(event), lvl);
 }
 
 /// This handles special properties of MovieClip.
@@ -738,7 +738,7 @@ MovieClip::notifyEvent(const event_id& id)
     }
 
     // Dispatch static event handlers (defined in PlaceObject tags).
-    std::auto_ptr<ExecutableCode> code(get_event_handler(id));
+    std::unique_ptr<ExecutableCode> code(get_event_handler(id));
     if (code.get()) {
         // Dispatch.
         code->execute();
@@ -987,9 +987,9 @@ MovieClip::execute_init_action_buffer(const action_buffer& 
a, int cid)
                     "in frame %2% of MovieClip %3%",
                 cid, _currentFrame, getTarget());
 #endif
-        std::auto_ptr<ExecutableCode> code(new GlobalCode(a, this));
+        std::unique_ptr<ExecutableCode> code(new GlobalCode(a, this));
 
-        stage().pushAction(code, movie_root::PRIORITY_INIT);
+        stage().pushAction(std::move(code), movie_root::PRIORITY_INIT);
     }
     else {
 #ifdef GNASH_DEBUG
@@ -1759,8 +1759,8 @@ MovieClip::construct(as_object* initObj)
                 getTarget());
 #endif
 
-        std::auto_ptr<ExecutableCode> code(new ConstructEvent(this));
-        stage().pushAction(code, movie_root::PRIORITY_CONSTRUCT);
+        std::unique_ptr<ExecutableCode> code(new ConstructEvent(this));
+        stage().pushAction(std::move(code), movie_root::PRIORITY_CONSTRUCT);
 
     }
     else {
diff --git a/libcore/MovieClip.h b/libcore/MovieClip.h
index 4511107..0bf2290 100644
--- a/libcore/MovieClip.h
+++ b/libcore/MovieClip.h
@@ -749,7 +749,7 @@ private:
     /// We'll only allocate Textfield variables map if
     /// we need them (ie: anyone calls set_textfield_variable)
     ///
-    std::auto_ptr<TextFieldIndex> _text_variables;
+    std::unique_ptr<TextFieldIndex> _text_variables;
 
     std::string _droptarget;
 
diff --git a/libcore/MovieFactory.cpp b/libcore/MovieFactory.cpp
index d815d2d..d0300e6 100644
--- a/libcore/MovieFactory.cpp
+++ b/libcore/MovieFactory.cpp
@@ -44,11 +44,11 @@ namespace {
     FileType getFileType(IOChannel& in);
 
     boost::intrusive_ptr<SWFMovieDefinition> createSWFMovie(
-            std::auto_ptr<IOChannel> in, const std::string& url,
+            std::unique_ptr<IOChannel> in, const std::string& url,
             const RunResources& runResources, bool startLoaderThread);
 
     boost::intrusive_ptr<BitmapMovieDefinition> createBitmapMovie(
-            std::auto_ptr<IOChannel> in, const std::string& url,
+            std::unique_ptr<IOChannel> in, const std::string& url,
             const RunResources& r, FileType type);
 
     boost::intrusive_ptr<movie_definition> createNonLibraryMovie(
@@ -60,7 +60,7 @@ namespace {
 MovieLibrary MovieFactory::movieLibrary;
 
 boost::intrusive_ptr<movie_definition>
-MovieFactory::makeMovie(std::auto_ptr<IOChannel> in, const std::string& url,
+MovieFactory::makeMovie(std::unique_ptr<IOChannel> in, const std::string& url,
         const RunResources& runResources, bool startLoaderThread)
 {
     boost::intrusive_ptr<movie_definition> ret;
@@ -81,13 +81,13 @@ MovieFactory::makeMovie(std::auto_ptr<IOChannel> in, const 
std::string& url,
                            "image, for which we don't yet have the "
                            "concept of a 'loading thread'"));
             }
-            ret = createBitmapMovie(in, url, runResources, type);
+            ret = createBitmapMovie(std::move(in), url, runResources, type);
             break;
         }
 
 
         case GNASH_FILETYPE_SWF:
-            ret = createSWFMovie(in, url, runResources, startLoaderThread);
+            ret = createSWFMovie(std::move(in), url, runResources, 
startLoaderThread);
             break;
 
         case GNASH_FILETYPE_FLV:
@@ -235,7 +235,7 @@ getFileType(IOChannel& in)
 // Create a SWFMovieDefinition from an SWF stream
 // NOTE: this method assumes this *is* an SWF stream
 boost::intrusive_ptr<SWFMovieDefinition>
-createSWFMovie(std::auto_ptr<IOChannel> in, const std::string& url,
+createSWFMovie(std::unique_ptr<IOChannel> in, const std::string& url,
         const RunResources& runResources, bool startLoaderThread)
 {
 
@@ -243,7 +243,7 @@ createSWFMovie(std::auto_ptr<IOChannel> in, const 
std::string& url,
 
     const std::string& absURL = URL(url).str();
 
-    if (!m->readHeader(in, absURL)) return 0;
+    if (!m->readHeader(std::move(in), absURL)) return 0;
     if (startLoaderThread && !m->completeLoad()) return 0;
 
     return m;
@@ -254,7 +254,7 @@ createSWFMovie(std::auto_ptr<IOChannel> in, const 
std::string& url,
 // FileType type
 // TODO: The pp won't display PNGs for SWF7 or below.
 boost::intrusive_ptr<BitmapMovieDefinition>
-createBitmapMovie(std::auto_ptr<IOChannel> in, const std::string& url,
+createBitmapMovie(std::unique_ptr<IOChannel> in, const std::string& url,
         const RunResources& r, FileType type)
 {
     assert (in.get());
@@ -263,11 +263,11 @@ createBitmapMovie(std::auto_ptr<IOChannel> in, const 
std::string& url,
 
     // readImageData takes a shared pointer because JPEG streams sometimes need
     // to transfer ownership.
-    boost::shared_ptr<IOChannel> imageData(in.release());
+    std::unique_ptr<IOChannel> imageData(in.release());
 
     try {
-        std::auto_ptr<image::GnashImage> im(
-                image::Input::readImageData(imageData, type));
+        std::unique_ptr<image::GnashImage> im(
+                std::move(image::Input::readImageData(std::move(imageData), 
type)));
 
         if (!im.get()) {
             log_error(_("Can't read image file from %s"), url);
@@ -275,7 +275,7 @@ createBitmapMovie(std::auto_ptr<IOChannel> in, const 
std::string& url,
         }
 
         Renderer* renderer = r.renderer();
-        ret = new BitmapMovieDefinition(im, renderer, url);
+        ret = new BitmapMovieDefinition(std::move(im), renderer, url);
         return ret;
 
     }
@@ -294,7 +294,7 @@ createNonLibraryMovie(const URL& url, const RunResources& 
runResources,
   
     boost::intrusive_ptr<movie_definition> ret;
   
-    std::auto_ptr<IOChannel> in;
+    std::unique_ptr<IOChannel> in;
   
     const StreamProvider& streamProvider = runResources.streamProvider();
   
@@ -316,7 +316,7 @@ createNonLibraryMovie(const URL& url, const RunResources& 
runResources,
     }
   
     const std::string& movie_url = reset_url ? reset_url : url.str();
-    ret = MovieFactory::makeMovie(in, movie_url, runResources,
+    ret = MovieFactory::makeMovie(std::move(in), movie_url, runResources,
             startLoaderThread);
   
     return ret;
diff --git a/libcore/MovieFactory.h b/libcore/MovieFactory.h
index c716e64..978101f 100644
--- a/libcore/MovieFactory.h
+++ b/libcore/MovieFactory.h
@@ -111,7 +111,7 @@ public:
     /// is initialized. Initializing the VirtualMachine requires a target
     /// SWF version, which can be found in the SWF header.
     static DSOEXPORT boost::intrusive_ptr<movie_definition> makeMovie(
-            std::auto_ptr<IOChannel> in, const std::string& url,
+            std::unique_ptr<IOChannel> in, const std::string& url,
             const RunResources& runResources, bool startLoaderThread);
 
     /// Clear the MovieFactory resources
diff --git a/libcore/MovieLoader.cpp b/libcore/MovieLoader.cpp
index 21234d9..a4ca358 100644
--- a/libcore/MovieLoader.cpp
+++ b/libcore/MovieLoader.cpp
@@ -47,7 +47,7 @@ MovieLoader::MovieLoader(movie_root& mr)
     :
     _killed(false),
     _movieRoot(mr),
-    _thread(0),
+    _thread(),
     _barrier(2) // main and loader thread
 {
 }
@@ -320,12 +320,12 @@ MovieLoader::processCompletedRequest(const Request& r)
         // frame, we'll queue the
         // onLoadInit call next, so it happens after the former.
         //
-        std::auto_ptr<ExecutableCode> code(
+        std::unique_ptr<ExecutableCode> code(
                 new DelayedFunctionCall(targetDO, handler,
                     NSV::PROP_BROADCAST_MESSAGE, 
                     "onLoadInit", getObject(targetDO)));
 
-        getRoot(*handler).pushAction(code, movie_root::PRIORITY_DOACTION);
+        getRoot(*handler).pushAction(std::move(code), 
movie_root::PRIORITY_DOACTION);
     }
 
     return true;
diff --git a/libcore/MovieLoader.h b/libcore/MovieLoader.h
index b67719b..3c10439 100644
--- a/libcore/MovieLoader.h
+++ b/libcore/MovieLoader.h
@@ -204,7 +204,7 @@ private:
     /// needed for some facilities like find_character_by_target
     movie_root& _movieRoot;
 
-    std::auto_ptr<boost::thread> _thread;
+    std::unique_ptr<boost::thread> _thread;
 
        // Barrier to ensure that _thread
        // is initialized before the loader thread
diff --git a/libcore/Video.cpp b/libcore/Video.cpp
index 7f992db..7bb0f32 100644
--- a/libcore/Video.cpp
+++ b/libcore/Video.cpp
@@ -123,8 +123,8 @@ Video::getVideoFrame()
        // If this is a video from a NetStream_as object, retrieve a video
     // frame from there.
        if (_ns) {
-               std::auto_ptr<image::GnashImage> tmp = _ns->get_video();
-               if (tmp.get()) _lastDecodedVideoFrame = tmp;
+               std::unique_ptr<image::GnashImage> tmp = _ns->get_video();
+               if (tmp.get()) _lastDecodedVideoFrame = std::move(tmp);
        }
 
        // If this is a video from a VideoFrame tag, retrieve a video frame
diff --git a/libcore/Video.h b/libcore/Video.h
index d7d4242..78840a8 100644
--- a/libcore/Video.h
+++ b/libcore/Video.h
@@ -123,14 +123,14 @@ private:
        boost::int32_t _lastDecodedVideoFrameNum;
 
        /// Last decoded frame 
-       std::auto_ptr<image::GnashImage> _lastDecodedVideoFrame;
+       std::unique_ptr<image::GnashImage> _lastDecodedVideoFrame;
 
     /// The decoder used to decode the video frames for embedded streams
     //
     /// For dynamically loaded videos NetStream takes care of decoding
     /// see the _ns property
     ///
-    std::auto_ptr<media::VideoDecoder> _decoder;
+    std::unique_ptr<media::VideoDecoder> _decoder;
 
     /// Whether to request smoothing when the video is scaled
     bool _smoothing;
diff --git a/libcore/asobj/Camera_as.cpp b/libcore/asobj/Camera_as.cpp
index 0fb3878..dedc62e 100644
--- a/libcore/asobj/Camera_as.cpp
+++ b/libcore/asobj/Camera_as.cpp
@@ -153,7 +153,7 @@ class Camera_as: public Relay
 {
 public:
 
-    Camera_as(std::auto_ptr<media::VideoInput> input)
+    Camera_as(std::unique_ptr<media::VideoInput> input)
         :
         _input(input.release()),
         _loopback(false)
@@ -259,7 +259,7 @@ camera_get(const fn_call& fn)
         log_error(_("No MediaHandler exists! Cannot create a Camera object"));
         return as_value();
     }
-    std::auto_ptr<media::VideoInput> input(handler->getVideoInput(0));
+    std::unique_ptr<media::VideoInput> input(handler->getVideoInput(0));
 
     if (!input.get()) {
         // TODO: what should happen if the index is not available?
@@ -280,7 +280,7 @@ camera_get(const fn_call& fn)
     attachCameraInterface(*cam_obj);
     attachCameraProperties(*cam_obj);
 
-    cam_obj->setRelay(new Camera_as(input));
+    cam_obj->setRelay(new Camera_as(std::move(input)));
 
     return as_value(cam_obj); 
 }
diff --git a/libcore/asobj/Global_as.cpp b/libcore/asobj/Global_as.cpp
index 5f18296..3c6dc48 100644
--- a/libcore/asobj/Global_as.cpp
+++ b/libcore/asobj/Global_as.cpp
@@ -995,7 +995,7 @@ global_setInterval(const fn_call& fn)
                args += fn.arg(i);
        }
 
-       std::auto_ptr<Timer> timer;
+       std::unique_ptr<Timer> timer;
        if (as_func) {
                timer.reset(new Timer(*as_func, ms, fn.this_ptr, args));
        }
@@ -1006,7 +1006,7 @@ global_setInterval(const fn_call& fn)
        movie_root& root = getRoot(fn);
 
     // TODO: check what should happen to overflows.
-       const int id = root.addIntervalTimer(timer);
+       const int id = root.addIntervalTimer(std::move(timer));
        return as_value(id);
 }
 
@@ -1065,7 +1065,7 @@ global_setTimeout(const fn_call& fn)
                args += fn.arg(i);
        }
 
-       std::auto_ptr<Timer> timer;
+       std::unique_ptr<Timer> timer;
        if (as_func) {
                timer.reset(new Timer(*as_func, ms, fn.this_ptr, args, true));
        }
@@ -1076,7 +1076,7 @@ global_setTimeout(const fn_call& fn)
        movie_root& root = getRoot(fn);
 
     // TODO: check what should happen to overflows.
-       const int id = root.addIntervalTimer(timer);
+       const int id = root.addIntervalTimer(std::move(timer));
        return as_value(id);
 }
   
diff --git a/libcore/asobj/LoadableObject.cpp b/libcore/asobj/LoadableObject.cpp
index 959591a..ca514d5 100644
--- a/libcore/asobj/LoadableObject.cpp
+++ b/libcore/asobj/LoadableObject.cpp
@@ -342,7 +342,7 @@ loadableobject_sendAndLoad(const fn_call& fn)
 
     URL url(urlstr, ri.streamProvider().baseURL());
 
-    std::auto_ptr<IOChannel> str;
+    std::unique_ptr<IOChannel> str;
 
     if (post) {
         as_value customHeaders;
@@ -401,7 +401,7 @@ loadableobject_sendAndLoad(const fn_call& fn)
     /// All objects get a loaded member, set to false.
     target->set_member(NSV::PROP_LOADED, false);
 
-    mr.addLoadableObject(target, str);
+    mr.addLoadableObject(target, std::move(str));
     return as_value(true);
 }
 
@@ -437,10 +437,10 @@ loadableobject_load(const fn_call& fn)
     URL url(urlstr, ri.streamProvider().baseURL());
 
     // Checks whether access is allowed.
-    std::auto_ptr<IOChannel> str(ri.streamProvider().getStream(url));
+    std::unique_ptr<IOChannel> str(ri.streamProvider().getStream(url));
 
     movie_root& mr = getRoot(fn);
-    mr.addLoadableObject(obj, str);
+    mr.addLoadableObject(obj, std::move(str));
 
     obj->set_member(NSV::PROP_uBYTES_LOADED, 0.0);
     obj->set_member(NSV::PROP_uBYTES_TOTAL, as_value());
diff --git a/libcore/asobj/Microphone_as.cpp b/libcore/asobj/Microphone_as.cpp
index 3502b04..bdcd3ec 100644
--- a/libcore/asobj/Microphone_as.cpp
+++ b/libcore/asobj/Microphone_as.cpp
@@ -144,7 +144,7 @@ class Microphone_as : public Relay
 
 public:
 
-    Microphone_as(std::auto_ptr<media::AudioInput> input)
+    Microphone_as(std::unique_ptr<media::AudioInput> input)
         :
         _input(input.release())
     {
@@ -253,7 +253,7 @@ microphone_get(const fn_call& fn)
                     "object"));
         return as_value();
     }
-    std::auto_ptr<media::AudioInput> input(handler->getAudioInput(0));
+    std::unique_ptr<media::AudioInput> input(handler->getAudioInput(0));
 
     if (!input.get()) {
         // TODO: what should happen if the index is not available?
@@ -268,7 +268,7 @@ microphone_get(const fn_call& fn)
     attachMicrophoneInterface(*mic_obj);
     attachMicrophoneProperties(*mic_obj);
 
-    mic_obj->setRelay(new Microphone_as(input));
+    mic_obj->setRelay(new Microphone_as(std::move(input)));
 
     return as_value(mic_obj);
 }
diff --git a/libcore/asobj/NetConnection_as.cpp 
b/libcore/asobj/NetConnection_as.cpp
index 2c9a160..da627a4 100644
--- a/libcore/asobj/NetConnection_as.cpp
+++ b/libcore/asobj/NetConnection_as.cpp
@@ -97,9 +97,9 @@ public:
     /// Get an stream by name
     //
     /// @param name     Stream identifier
-    virtual std::auto_ptr<IOChannel> getStream(const std::string& /*name*/) {
+    virtual std::unique_ptr<IOChannel> getStream(const std::string& /*name*/) {
         log_unimpl("%s doesn't support fetching streams", typeName(*this));
-        return std::auto_ptr<IOChannel>(0);
+        return std::unique_ptr<IOChannel>();
     }
 
     /// Process pending traffic, out or in bound
@@ -626,7 +626,7 @@ NetConnection_as::createStream(as_object* asCallback) {
     startAdvanceTimer();
 }
 
-std::auto_ptr<IOChannel>
+std::unique_ptr<IOChannel>
 NetConnection_as::getStream(const std::string& name)
 {
     const RunResources& ri = getRunResources(owner());
diff --git a/libcore/asobj/NetConnection_as.h b/libcore/asobj/NetConnection_as.h
index f053b7e..c682015 100644
--- a/libcore/asobj/NetConnection_as.h
+++ b/libcore/asobj/NetConnection_as.h
@@ -104,7 +104,7 @@ public:
     void notifyStatus(StatusCode code);
 
     /// Get an stream by name
-    std::auto_ptr<IOChannel> getStream(const std::string& name);
+    std::unique_ptr<IOChannel> getStream(const std::string& name);
 
     /// Mark responders associated with remoting calls
     void markReachableResources() const;
@@ -129,7 +129,7 @@ private:
     Connections _oldConnections;
 
     /// The current conceptual network connection.
-    std::auto_ptr<Connection> _currentConnection; 
+    std::unique_ptr<Connection> _currentConnection; 
 
     /// the url prefix optionally passed to connect()
     std::string _uri;
diff --git a/libcore/asobj/NetStream_as.cpp b/libcore/asobj/NetStream_as.cpp
index 594e3c5..1a39a94 100644
--- a/libcore/asobj/NetStream_as.cpp
+++ b/libcore/asobj/NetStream_as.cpp
@@ -103,13 +103,13 @@ NetStream_as::NetStream_as(as_object* owner)
     _netCon(0),
     _bufferTime(100), 
     _imageframe(),
-    _parser(NULL),
+    _parser(),
     _inputPos(0),
     _invalidatedVideoCharacter(0),
     _decoding_state(DEC_NONE),
-    _videoDecoder(0),
+    _videoDecoder(),
     _videoInfoKnown(false),
-    _audioDecoder(0),
+    _audioDecoder(),
     _audioInfoKnown(false),
 
     // Playback clock starts in 'stop' mode
@@ -201,12 +201,12 @@ NetStream_as::bufferLength()
 #endif  // USE_MEDIA
 }
 
-std::auto_ptr<image::GnashImage>
+std::unique_ptr<image::GnashImage>
 NetStream_as::get_video()
 {
     boost::mutex::scoped_lock lock(image_mutex);
 
-    return _imageframe;    
+    return std::move(_imageframe);
 }
 
 void
@@ -504,7 +504,7 @@ NetStream_as::startPlayback()
             "parse NetStream input")) );
         return false;
     }
-    _parser = _mediaHandler->createMediaParser(_inputStream);
+    _parser = 
std::move(_mediaHandler->createMediaParser(std::move(_inputStream)));
     assert(!_inputStream.get());
 
     if (!_parser.get()) {
@@ -548,12 +548,12 @@ NetStream_as::startPlayback()
 }
 
 
-std::auto_ptr<image::GnashImage> 
+std::unique_ptr<image::GnashImage> 
 NetStream_as::getDecodedVideoFrame(boost::uint32_t ts)
 {
     assert(_videoDecoder.get());
     
-    std::auto_ptr<image::GnashImage> video;
+    std::unique_ptr<image::GnashImage> video;
 
 #ifdef USE_MEDIA
     assert(_parser.get());
@@ -631,10 +631,10 @@ NetStream_as::getDecodedVideoFrame(boost::uint32_t ts)
     return video;
 }
 
-std::auto_ptr<image::GnashImage> 
+std::unique_ptr<image::GnashImage> 
 NetStream_as::decodeNextVideoFrame()
 {
-    std::auto_ptr<image::GnashImage> video;
+    std::unique_ptr<image::GnashImage> video;
 
 #ifdef USE_MEDIA
     if (!_parser.get()) {
@@ -642,7 +642,7 @@ NetStream_as::decodeNextVideoFrame()
         return video; 
     }
 
-    std::auto_ptr<media::EncodedVideoFrame> frame = _parser->nextVideoFrame(); 
+    std::unique_ptr<media::EncodedVideoFrame> frame = 
_parser->nextVideoFrame(); 
     if (!frame.get()) {
 #ifdef GNASH_DEBUG_DECODING
         log_debug(_("%p.decodeNextVideoFrame(): "
@@ -674,7 +674,7 @@ NetStream_as::decodeNextAudioFrame()
     assert (_parser.get());
 
 #ifdef USE_MEDIA
-    std::auto_ptr<media::EncodedAudioFrame> frame = _parser->nextAudioFrame(); 
+    std::unique_ptr<media::EncodedAudioFrame> frame = 
_parser->nextAudioFrame(); 
     if (!frame.get()) {
 #ifdef GNASH_DEBUG_DECODING
         log_debug(_("%p.decodeNextAudioFrame: "
@@ -1141,7 +1141,7 @@ NetStream_as::refreshVideoFrame(bool alsoIfPaused)
 #endif 
 
     // Get next decoded video frame from parser, will have the lowest timestamp
-    std::auto_ptr<image::GnashImage> video = getDecodedVideoFrame(curPos);
+    std::unique_ptr<image::GnashImage> video = getDecodedVideoFrame(curPos);
 
     // to be decoded or we're out of data
     if (!video.get())
@@ -1171,7 +1171,7 @@ NetStream_as::refreshVideoFrame(bool alsoIfPaused)
     }
     else
     {
-        _imageframe = video; // ownership transferred
+        _imageframe = std::move(video); // ownership transferred
         assert(!video.get());
         // A frame is ready for pickup
         if ( _invalidatedVideoCharacter )
diff --git a/libcore/asobj/NetStream_as.h b/libcore/asobj/NetStream_as.h
index d55c611..8fef49e 100644
--- a/libcore/asobj/NetStream_as.h
+++ b/libcore/asobj/NetStream_as.h
@@ -298,10 +298,10 @@ public:
 
     /// Returns the video frame closest to current cursor. See time().
     //
-    /// @return a image containing the video frame, a NULL auto_ptr if
+    /// @return a image containing the video frame, a NULL unique_ptr if
     /// none were ready
     ///
-    std::auto_ptr<image::GnashImage> get_video();
+    std::unique_ptr<image::GnashImage> get_video();
     
     /// Register the DisplayObject to invalidate on video updates
     void setInvalidatedVideo(DisplayObject* ch)
@@ -431,7 +431,7 @@ private:
     //
     /// @return 0 on EOF or error, a decoded video otherwise
     ///
-    std::auto_ptr<image::GnashImage> decodeNextVideoFrame();
+    std::unique_ptr<image::GnashImage> decodeNextVideoFrame();
 
     /// Decode next audio frame fetching it MediaParser cursor
     //
@@ -454,7 +454,7 @@ private:
     /// 3. next element in cursor has timestamp > tx
     /// 4. there was an error decoding
     ///
-    std::auto_ptr<image::GnashImage> getDecodedVideoFrame(boost::uint32_t ts);
+    std::unique_ptr<image::GnashImage> getDecodedVideoFrame(boost::uint32_t 
ts);
 
     DecodingState decodingStatus(DecodingState newstate = DEC_NONE);
 
@@ -512,13 +512,13 @@ private:
     boost::mutex image_mutex;
 
     // The image/videoframe which is given to the renderer
-    std::auto_ptr<image::GnashImage> _imageframe;
+    std::unique_ptr<image::GnashImage> _imageframe;
 
     // The video URL
     std::string url;
 
     // The input media parser
-    std::auto_ptr<media::MediaParser> _parser;
+    std::unique_ptr<media::MediaParser> _parser;
 
     // The position in the inputfile, only used when not playing a FLV
     long _inputPos;
@@ -533,13 +533,13 @@ private:
     boost::mutex _state_mutex;
     
     /// Video decoder
-    std::auto_ptr<media::VideoDecoder> _videoDecoder;
+    std::unique_ptr<media::VideoDecoder> _videoDecoder;
 
     /// True if video info are known
     bool _videoInfoKnown;
 
     /// Audio decoder
-    std::auto_ptr<media::AudioDecoder> _audioDecoder;
+    std::unique_ptr<media::AudioDecoder> _audioDecoder;
 
     /// True if an audio info are known
     bool _audioInfoKnown;
@@ -561,7 +561,7 @@ private:
     /// This should just be a temporary variable, transferred
     /// to MediaParser constructor.
     ///
-    std::auto_ptr<IOChannel> _inputStream;
+    std::unique_ptr<IOChannel> _inputStream;
 
     /// The buffered audio streamer
     BufferedAudioStreamer _audioStreamer;
diff --git a/libcore/asobj/SharedObject_as.cpp 
b/libcore/asobj/SharedObject_as.cpp
index ef45151..48dae9c 100644
--- a/libcore/asobj/SharedObject_as.cpp
+++ b/libcore/asobj/SharedObject_as.cpp
@@ -1001,7 +1001,7 @@ createSharedObject(Global_as& gl)
     fn_call::Args args;
     as_object* o = constructInstance(*ctor, env, args);
 
-    std::auto_ptr<SharedObject_as> sh(new SharedObject_as(*o));
+    std::unique_ptr<SharedObject_as> sh(new SharedObject_as(*o));
     o->setRelay(sh.release());
 
     // We know what it is...
diff --git a/libcore/asobj/Sound_as.cpp b/libcore/asobj/Sound_as.cpp
index 1a05109..cbf2adc 100644
--- a/libcore/asobj/Sound_as.cpp
+++ b/libcore/asobj/Sound_as.cpp
@@ -24,7 +24,6 @@
 #include "Sound_as.h"
 
 #include <string>
-#include <boost/scoped_ptr.hpp>
 #include <boost/scoped_array.hpp>
 #include <boost/thread/mutex.hpp>
 #include <boost/cstdint.hpp>
@@ -183,7 +182,7 @@ private:
 
     void markReachableResources() const;
 
-    boost::scoped_ptr<CharacterProxy> _attachedCharacter;
+    std::unique_ptr<CharacterProxy> _attachedCharacter;
     int soundId;
     bool externalSound;
     bool isStreaming;
@@ -192,9 +191,9 @@ private:
 
     media::MediaHandler* _mediaHandler;
 
-    boost::scoped_ptr<media::MediaParser> _mediaParser;
+    std::unique_ptr<media::MediaParser> _mediaParser;
 
-    boost::scoped_ptr<media::AudioDecoder> _audioDecoder;
+    std::unique_ptr<media::AudioDecoder> _audioDecoder;
 
     /// Number of milliseconds into the sound to start it
     //
@@ -258,7 +257,7 @@ private:
 Sound_as::Sound_as(as_object* owner) 
     :
     ActiveRelay(owner),
-    _attachedCharacter(0),
+    _attachedCharacter(),
     soundId(-1),
     externalSound(false),
     isStreaming(false),
@@ -268,7 +267,7 @@ Sound_as::Sound_as(as_object* owner)
     _leftOverData(),
     _leftOverPtr(0),
     _leftOverSize(0),
-    _inputStream(0),
+    _inputStream(nullptr),
     remainingLoops(0),
     _soundCompleted(false),
     _soundLoaded(false)
@@ -280,7 +279,7 @@ Sound_as::~Sound_as()
     // Just in case...
     if (_inputStream && _soundHandler) {
         _soundHandler->unplugInputStream(_inputStream);
-        _inputStream=0;
+        _inputStream=nullptr;
     }
 
 }
@@ -586,7 +585,7 @@ Sound_as::loadSound(const std::string& file, bool streaming)
     const RcInitFile& rcfile = RcInitFile::getDefaultInstance();
 
     const StreamProvider& streamProvider = rr.streamProvider();
-    std::auto_ptr<IOChannel> inputStream(streamProvider.getStream(url,
+    std::unique_ptr<IOChannel> inputStream(streamProvider.getStream(url,
                 rcfile.saveStreamingMedia()));
 
     if (!inputStream.get()) {
@@ -599,7 +598,7 @@ Sound_as::loadSound(const std::string& file, bool streaming)
     externalSound = true;
     isStreaming = streaming;
 
-    
_mediaParser.reset(_mediaHandler->createMediaParser(inputStream).release());
+    _mediaParser = 
std::move(_mediaHandler->createMediaParser(std::move(inputStream)));
     if (!_mediaParser) {
         log_error(_("Unable to create parser for Sound at %s"), url);
         // not necessarely correct, the stream might have been found...
@@ -841,7 +840,7 @@ Sound_as::getAudio(boost::int16_t* samples, unsigned int 
nSamples, bool& atEOF)
     while (len) {
         if ( ! _leftOverData ) {
             bool parsingComplete = _mediaParser->parsingCompleted(); // check 
*before* calling nextAudioFrame
-            std::auto_ptr<media::EncodedAudioFrame> frame = 
_mediaParser->nextAudioFrame();
+            std::unique_ptr<media::EncodedAudioFrame> frame = 
_mediaParser->nextAudioFrame();
             if ( ! frame.get() ) {
                 // just wait some more if parsing isn't complete yet
                 if ( ! parsingComplete ) {
diff --git a/libcore/asobj/TextFormat_as.cpp b/libcore/asobj/TextFormat_as.cpp
index c09e5bb..a662a75 100644
--- a/libcore/asobj/TextFormat_as.cpp
+++ b/libcore/asobj/TextFormat_as.cpp
@@ -398,7 +398,7 @@ textformat_new(const fn_call& fn)
 
     as_object* obj = ensure<ValidThis>(fn);
 
-    std::auto_ptr<TextFormat_as> tf(new TextFormat_as);
+    std::unique_ptr<TextFormat_as> tf(new TextFormat_as);
 
        const size_t args = fn.nargs;
        
diff --git a/libcore/asobj/XMLNode_as.cpp b/libcore/asobj/XMLNode_as.cpp
index 9865783..55348bf 100644
--- a/libcore/asobj/XMLNode_as.cpp
+++ b/libcore/asobj/XMLNode_as.cpp
@@ -581,7 +581,7 @@ xmlnode_new(const fn_call& fn)
         return as_value();
     }
 
-    std::auto_ptr<XMLNode_as> xml(new XMLNode_as(getGlobal(fn)));
+    std::unique_ptr<XMLNode_as> xml(new XMLNode_as(getGlobal(fn)));
     xml->nodeTypeSet(XMLNode_as::NodeType(toInt(fn.arg(0), getVM(fn))));
 
     if (fn.nargs > 1) {
diff --git a/libcore/asobj/flash/display/BitmapData_as.cpp 
b/libcore/asobj/flash/display/BitmapData_as.cpp
index cc317e3..1c2e493 100644
--- a/libcore/asobj/flash/display/BitmapData_as.cpp
+++ b/libcore/asobj/flash/display/BitmapData_as.cpp
@@ -597,7 +597,7 @@ private:
 } // anonymous namespace
 
 BitmapData_as::BitmapData_as(as_object* owner,
-        std::auto_ptr<image::GnashImage> im)
+        std::unique_ptr<image::GnashImage> im)
     :
     _owner(owner),
     _cachedBitmap(0)
@@ -607,7 +607,7 @@ BitmapData_as::BitmapData_as(as_object* owner,
     
     // If there is a renderer, cache the image there, otherwise we store it.
     Renderer* r = getRunResources(*_owner).renderer();
-    if (r) _cachedBitmap = r->createCachedBitmap(im);
+    if (r) _cachedBitmap = r->createCachedBitmap(std::move(im));
     else _image.reset(im.release());
 }
     
@@ -728,7 +728,7 @@ bitmapdata_clone(const fn_call& fn)
     const size_t width = bm->width();
     const size_t height = bm->height();
 
-    std::auto_ptr<image::GnashImage> im;
+    std::unique_ptr<image::GnashImage> im;
     if (bm->transparent()) {
         im.reset(new image::ImageRGBA(width, height));
     }
@@ -746,7 +746,7 @@ bitmapdata_clone(const fn_call& fn)
         ret->set_member(NSV::PROP_uuPROTOuu, proto);
     }
 
-    ret->setRelay(new BitmapData_as(ret, im));
+    ret->setRelay(new BitmapData_as(ret, std::move(im)));
 
     return as_value(ret);
 }
@@ -1617,7 +1617,7 @@ bitmapdata_loadBitmap(const fn_call& fn)
         return as_value();
     }
  
-    std::auto_ptr<image::GnashImage> newImage;
+    std::unique_ptr<image::GnashImage> newImage;
     if (im.type() == image::TYPE_RGBA) {
         newImage.reset(new image::ImageRGBA(width, height));
     }
@@ -1631,7 +1631,7 @@ bitmapdata_loadBitmap(const fn_call& fn)
     ret->set_member(NSV::PROP_uuPROTOuu, getMember(*ptr, NSV::PROP_PROTOTYPE));
     
     newImage->update(im.begin());
-    ret->setRelay(new BitmapData_as(ret, newImage));
+    ret->setRelay(new BitmapData_as(ret, std::move(newImage)));
 
     return as_value(ret);
 }
@@ -1675,7 +1675,7 @@ bitmapdata_ctor(const fn_call& fn)
         throw ActionTypeError();
     }
 
-    std::auto_ptr<image::GnashImage> im;
+    std::unique_ptr<image::GnashImage> im;
     if (transparent) {
         im.reset(new image::ImageRGBA(width, height));
     }
@@ -1691,7 +1691,7 @@ bitmapdata_ctor(const fn_call& fn)
     std::fill(image::begin<image::ARGB>(*im), image::end<image::ARGB>(*im),
             fillColor);
 
-    ptr->setRelay(new BitmapData_as(ptr, im));
+    ptr->setRelay(new BitmapData_as(ptr, std::move(im)));
 
     return as_value(); 
 }
diff --git a/libcore/asobj/flash/display/BitmapData_as.h 
b/libcore/asobj/flash/display/BitmapData_as.h
index ac288e9..5690313 100644
--- a/libcore/asobj/flash/display/BitmapData_as.h
+++ b/libcore/asobj/flash/display/BitmapData_as.h
@@ -77,7 +77,7 @@ public:
     //
     /// The constructor sets the immutable size of the
     /// bitmap, as well as whether it can handle transparency or not.
-       BitmapData_as(as_object* owner, std::auto_ptr<image::GnashImage> im);
+       BitmapData_as(as_object* owner, std::unique_ptr<image::GnashImage> im);
 
     virtual ~BitmapData_as() {}
 
diff --git a/libcore/asobj/flash/net/FileReferenceList_as.h 
b/libcore/asobj/flash/net/FileReferenceList_as.h
index 7e07f73..cb15c5b 100644
--- a/libcore/asobj/flash/net/FileReferenceList_as.h
+++ b/libcore/asobj/flash/net/FileReferenceList_as.h
@@ -32,7 +32,7 @@ struct ObjectURI;
 void filereferencelist_class_init(as_object& where, const ObjectURI& uri);
 
 /// Return a FileReferenceList instance (in case the core lib needs it)
-//std::auto_ptr<as_object> init_FileReferenceList_instance();
+//std::unique_ptr<as_object> init_FileReferenceList_instance();
 
 } // end of gnash namespace
 
diff --git a/libcore/asobj/flash/net/FileReference_as.h 
b/libcore/asobj/flash/net/FileReference_as.h
index f72af70..682ffd0 100644
--- a/libcore/asobj/flash/net/FileReference_as.h
+++ b/libcore/asobj/flash/net/FileReference_as.h
@@ -32,7 +32,7 @@ struct ObjectURI;
 void filereference_class_init(as_object& where, const ObjectURI& uri);
 
 /// Return a FileReference instance (in case the core lib needs it)
-//std::auto_ptr<as_object> init_FileReference_instance();
+//std::unique_ptr<as_object> init_FileReference_instance();
 
 } // end of gnash namespace
 
diff --git a/libcore/asobj/flash/text/TextRenderer_as.h 
b/libcore/asobj/flash/text/TextRenderer_as.h
index bdc3e4e..a0edffe 100644
--- a/libcore/asobj/flash/text/TextRenderer_as.h
+++ b/libcore/asobj/flash/text/TextRenderer_as.h
@@ -32,7 +32,7 @@ struct ObjectURI;
 void textrenderer_class_init(as_object& where, const ObjectURI& uri);
 
 /// Return a TextRenderer instance (in case the core lib needs it)
-//std::auto_ptr<as_object> init_TextRenderer_instance();
+//std::unique_ptr<as_object> init_TextRenderer_instance();
 
 } // end of gnash namespace
 
diff --git a/libcore/movie_root.cpp b/libcore/movie_root.cpp
index 32a6073..b337629 100644
--- a/libcore/movie_root.cpp
+++ b/libcore/movie_root.cpp
@@ -812,7 +812,7 @@ movie_root::doMouseDrag()
 }
 
 boost::uint32_t
-movie_root::addIntervalTimer(std::auto_ptr<Timer> timer)
+movie_root::addIntervalTimer(std::unique_ptr<Timer> timer)
 {
     assert(timer.get());
     assert(testInvariant());
@@ -821,8 +821,7 @@ movie_root::addIntervalTimer(std::auto_ptr<Timer> timer)
 
     assert(_intervalTimers.find(id) == _intervalTimers.end());
 
-    boost::shared_ptr<Timer> t(timer);
-    _intervalTimers.insert(std::make_pair(id, t));
+    _intervalTimers.insert(std::make_pair(id, std::move(timer)));
 
     return id;
 }
@@ -1404,7 +1403,7 @@ movie_root::processActionQueue(size_t lvl)
     // and a final call to .clear() 
     while (!q.empty()) {
 
-        std::auto_ptr<ExecutableCode> code(q.pop_front().release());
+        const std::unique_ptr<ExecutableCode> code(q.pop_front().release());
         code->execute();
 
         size_t minLevel = minPopulatedPriorityQueue();
@@ -1454,9 +1453,9 @@ movie_root::flushHigherPriorityActionQueues()
 }
 
 void
-movie_root::addLoadableObject(as_object* obj, std::auto_ptr<IOChannel> str)
+movie_root::addLoadableObject(as_object* obj, std::unique_ptr<IOChannel> str)
 {
-    boost::shared_ptr<IOChannel> io(str.release());
+    std::shared_ptr<IOChannel> io(str.release());
     _loadCallbacks.push_back(LoadCallback(io, obj));
 }
 
@@ -1499,10 +1498,10 @@ movie_root::removeQueuedConstructor(MovieClip* target)
 }
 
 void
-movie_root::pushAction(std::auto_ptr<ExecutableCode> code, size_t lvl)
+movie_root::pushAction(std::unique_ptr<ExecutableCode> code, size_t lvl)
 {
     assert(lvl < PRIORITY_SIZE);
-    _actionQueue[lvl].push_back(code);
+    _actionQueue[lvl].push_back(code.release());
 }
 
 void
@@ -1513,9 +1512,9 @@ movie_root::pushAction(const action_buffer& buf, 
DisplayObject* target)
             target->getTargetPath());
 #endif
 
-    std::auto_ptr<ExecutableCode> code(new GlobalCode(buf, target));
+    std::unique_ptr<ExecutableCode> code(new GlobalCode(buf, target));
 
-    _actionQueue[PRIORITY_DOACTION].push_back(code);
+    _actionQueue[PRIORITY_DOACTION].push_back(code.release());
 }
 
 void
diff --git a/libcore/movie_root.h b/libcore/movie_root.h
index a89787b..b403c0e 100644
--- a/libcore/movie_root.h
+++ b/libcore/movie_root.h
@@ -93,6 +93,7 @@
 #include "VM.h"
 #include "HostInterface.h"
 #include "log.h"
+#include "IOChannel.h"
 
 #ifdef USE_SWFTREE
 # include "tree.hh"
@@ -153,7 +154,7 @@ public:
     
     class LoadCallback {
     public:
-        LoadCallback(boost::shared_ptr<IOChannel> s, as_object* o)
+        LoadCallback(std::shared_ptr<IOChannel> s, as_object* o)
             :
             _stream(s),
             _obj(o)
@@ -161,7 +162,7 @@ public:
         bool processLoad();
         void setReachable() const;
     private:
-        boost::shared_ptr<IOChannel> _stream;
+        std::shared_ptr<IOChannel> _stream;
         SimpleBuffer _buf;
         as_object* _obj;
     };
@@ -319,7 +320,7 @@ public:
     /// @return An integer indentifying the timer
     ///         for subsequent call to clear_interval_timer.
     ///         It will NEVER be zero.
-    boost::uint32_t addIntervalTimer(std::auto_ptr<Timer> timer);
+    boost::uint32_t addIntervalTimer(std::unique_ptr<Timer> timer);
 
     /// Register an object for loading data to.
     //
@@ -337,7 +338,7 @@ public:
     //
     /// It may be possible for this function to handle all connections if
     /// it also takes a callback function to call on each advance.
-    void addLoadableObject(as_object* obj, std::auto_ptr<IOChannel> str);
+    void addLoadableObject(as_object* obj, std::unique_ptr<IOChannel> str);
 
     void addAdvanceCallback(ActiveRelay* obj);
 
@@ -550,7 +551,7 @@ public:
         ActionQueue;
 
     /// Push an executable code to the ActionQueue
-    void pushAction(std::auto_ptr<ExecutableCode> code, size_t lvl);
+    void pushAction(std::unique_ptr<ExecutableCode> code, size_t lvl);
 
     /// Push an executable code to the ActionQueue
     void pushAction(const action_buffer& buf, DisplayObject* target);
diff --git a/libcore/parser/BitmapMovieDefinition.cpp 
b/libcore/parser/BitmapMovieDefinition.cpp
index 6a15034..36d15ae 100644
--- a/libcore/parser/BitmapMovieDefinition.cpp
+++ b/libcore/parser/BitmapMovieDefinition.cpp
@@ -39,7 +39,7 @@ BitmapMovieDefinition::createMovie(Global_as& gl, 
DisplayObject* parent)
 }
 
 BitmapMovieDefinition::BitmapMovieDefinition(
-        std::auto_ptr<image::GnashImage> image,
+        std::unique_ptr<image::GnashImage> image,
                Renderer* renderer, const std::string& url)
        :
        _version(6),
@@ -48,7 +48,7 @@ BitmapMovieDefinition::BitmapMovieDefinition(
        _framerate(12),
        _url(url),
        _bytesTotal(image->size()),
-       _bitmap(renderer ? renderer->createCachedBitmap(image) : 0)
+       _bitmap(renderer ? renderer->createCachedBitmap(std::move(image)) : 0)
 {
 }
 
diff --git a/libcore/parser/BitmapMovieDefinition.h 
b/libcore/parser/BitmapMovieDefinition.h
index 7992626..07f6dd3 100644
--- a/libcore/parser/BitmapMovieDefinition.h
+++ b/libcore/parser/BitmapMovieDefinition.h
@@ -58,7 +58,7 @@ public:
        ///  - image->size() bytes (for get_bytes_loaded()/get_bytes_total())
        ///  - provided url
        ///
-       BitmapMovieDefinition(std::auto_ptr<image::GnashImage> image,
+       BitmapMovieDefinition(std::unique_ptr<image::GnashImage> image,
             Renderer* renderer, const std::string& url);
 
     virtual DisplayObject* createDisplayObject(Global_as&, DisplayObject*)
diff --git a/libcore/parser/SWFMovieDefinition.cpp 
b/libcore/parser/SWFMovieDefinition.cpp
index beebe69..5d83d67 100644
--- a/libcore/parser/SWFMovieDefinition.cpp
+++ b/libcore/parser/SWFMovieDefinition.cpp
@@ -73,7 +73,7 @@ namespace gnash
 SWFMovieLoader::SWFMovieLoader(SWFMovieDefinition& md)
     :
     _movie_def(md),
-    _thread(NULL),
+    _thread(),
     _barrier(2) // us and the main thread..
 {
 }
@@ -157,7 +157,7 @@ SWFMovieDefinition::SWFMovieDefinition(const RunResources& 
runResources)
     _bytes_loaded(0),
     m_loading_sound_stream(-1),
     m_file_length(0),
-    m_jpeg_in(0),
+    m_jpeg_in(),
     _swf_end_pos(0),
     _loader(*this),
     _loadingCanceled(false),
@@ -261,11 +261,11 @@ SWFMovieDefinition::add_sound_sample(int id, 
sound_sample* sam)
 
 // Read header and assign url
 bool
-SWFMovieDefinition::readHeader(std::auto_ptr<IOChannel> in,
+SWFMovieDefinition::readHeader(std::unique_ptr<IOChannel> in,
         const std::string& url)
 {
 
-    _in = in;
+    _in = std::move(in);
 
     // we only read a movie once
     assert(!_str.get());
@@ -302,7 +302,7 @@ SWFMovieDefinition::readHeader(std::auto_ptr<IOChannel> in,
         );
 
         // Uncompress the input as we read it.
-        _in = zlib_adapter::make_inflater(_in);
+        _in = std::move(zlib_adapter::make_inflater(std::move(_in)));
 #endif
     }
 
@@ -593,7 +593,7 @@ SWFMovieDefinition::get_labeled_frame(const std::string& 
label,
 }
 
 void
-SWFMovieDefinition::set_jpeg_loader(std::auto_ptr<image::JpegInput> j_in)
+SWFMovieDefinition::set_jpeg_loader(std::unique_ptr<image::JpegInput> j_in)
 {
     if (m_jpeg_in.get()) {
         /// There should be only one JPEGTABLES tag in an SWF (see: 
@@ -606,7 +606,7 @@ 
SWFMovieDefinition::set_jpeg_loader(std::auto_ptr<image::JpegInput> j_in)
                     "resetting JPEG loader"));
         return;
     }
-    m_jpeg_in = j_in;
+    m_jpeg_in = std::move(j_in);
 }
 
 boost::uint16_t
diff --git a/libcore/parser/SWFMovieDefinition.h 
b/libcore/parser/SWFMovieDefinition.h
index 94f85e8..3817d44 100644
--- a/libcore/parser/SWFMovieDefinition.h
+++ b/libcore/parser/SWFMovieDefinition.h
@@ -90,7 +90,7 @@ private:
     SWFMovieDefinition& _movie_def;
 
     mutable boost::mutex _mutex;
-    std::auto_ptr<boost::thread> _thread;
+    std::unique_ptr<boost::thread> _thread;
 
     // Barrier to ensure that _thread
     // is initialized before the loader thread
@@ -294,7 +294,7 @@ public:
 
     /// Set an input object for later loading DefineBits
     /// images (JPEG images without the table info).
-    DSOTEXPORT void set_jpeg_loader(std::auto_ptr<image::JpegInput> j_in);
+    DSOTEXPORT void set_jpeg_loader(std::unique_ptr<image::JpegInput> j_in);
 
     // See dox in movie_definition.h
     image::JpegInput* get_jpeg_loader() const {
@@ -322,7 +322,7 @@ public:
     /// @param in the IOChannel from which to read SWF
     /// @param url the url associated with the input
     /// @return false if SWF header could not be parsed
-    bool readHeader(std::auto_ptr<IOChannel> in, const std::string& url);
+    bool readHeader(std::unique_ptr<IOChannel> in, const std::string& url);
 
     /// Complete load of the SWF file
     //
@@ -485,14 +485,14 @@ private:
 
     boost::uint32_t m_file_length;
 
-    std::auto_ptr<image::JpegInput> m_jpeg_in;
+    std::unique_ptr<image::JpegInput> m_jpeg_in;
 
     std::string _url;
 
     /// Non transferable stream.
     boost::scoped_ptr<SWFStream> _str;
 
-    std::auto_ptr<IOChannel> _in;
+    std::unique_ptr<IOChannel> _in;
 
     /// swf end position (as read from header)
     size_t _swf_end_pos;
diff --git a/libcore/parser/movie_definition.h 
b/libcore/parser/movie_definition.h
index bf6a133..27b640a 100644
--- a/libcore/parser/movie_definition.h
+++ b/libcore/parser/movie_definition.h
@@ -53,7 +53,7 @@
 #endif
 
 #include <string>
-#include <memory> // for auto_ptr
+#include <memory> // for unique_ptr
 #include <vector> // for PlayList typedef
 #include <boost/intrusive_ptr.hpp>
 #include <boost/cstdint.hpp>
@@ -291,9 +291,9 @@ public:
        ///
        /// The default implementation is a no-op. Actually, an implicit op
        /// *is* performed, and it is deleting the jpeg::input instance since
-       /// it is passed in an auto_ptr...
+       /// it is passed in an unique_ptr...
        ///
-       virtual void set_jpeg_loader(std::auto_ptr<image::JpegInput> /*j_in*/)
+       virtual void set_jpeg_loader(std::unique_ptr<image::JpegInput> /*j_in*/)
        {
        }
 
diff --git a/libcore/swf/DefineBitsTag.cpp b/libcore/swf/DefineBitsTag.cpp
index e0829fb..af38294 100644
--- a/libcore/swf/DefineBitsTag.cpp
+++ b/libcore/swf/DefineBitsTag.cpp
@@ -55,12 +55,12 @@ namespace SWF {
 namespace {
     void inflateWrapper(SWFStream& in, void* buffer, size_t buffer_bytes);
 
-    std::auto_ptr<image::GnashImage> readDefineBitsJpeg(SWFStream& in,
+    std::unique_ptr<image::GnashImage> readDefineBitsJpeg(SWFStream& in,
             movie_definition& m);
-    std::auto_ptr<image::GnashImage> readDefineBitsJpeg2(SWFStream& in);
+    std::unique_ptr<image::GnashImage> readDefineBitsJpeg2(SWFStream& in);
     /// DefineBitsJpeg3, also DefineBitsJpeg4!
-    std::auto_ptr<image::GnashImage> readDefineBitsJpeg3(SWFStream& in, 
TagType tag);
-    std::auto_ptr<image::GnashImage> readLossless(SWFStream& in, TagType tag);
+    std::unique_ptr<image::GnashImage> readDefineBitsJpeg3(SWFStream& in, 
TagType tag);
+    std::unique_ptr<image::GnashImage> readLossless(SWFStream& in, TagType 
tag);
 
 }
 
@@ -133,9 +133,9 @@ class StreamAdapter : public IOChannel
 public:
 
     /// Get an IOChannel from a gnash::SWFStream
-    static std::auto_ptr<IOChannel> getFile(SWFStream& str,
+    static std::unique_ptr<IOChannel> getFile(SWFStream& str,
             unsigned long endPos) {
-        std::auto_ptr<IOChannel> ret(new StreamAdapter(str, endPos));
+        std::unique_ptr<IOChannel> ret(new StreamAdapter(str, endPos));
         return ret;
     }
 };
@@ -166,7 +166,7 @@ jpeg_tables_loader(SWFStream& in, TagType tag, 
movie_definition& m,
                 currPos);
     }
 
-    std::auto_ptr<image::JpegInput> input;
+    std::unique_ptr<image::JpegInput> input;
 
     try {
         // NOTE: we cannot limit input SWFStream here as the same jpeg::input
@@ -191,7 +191,7 @@ jpeg_tables_loader(SWFStream& in, TagType tag, 
movie_definition& m,
     }
 
     log_debug("Setting jpeg loader to %p", (void*)input.get());
-    m.set_jpeg_loader(input);
+    m.set_jpeg_loader(std::move(input));
 }
 
 void
@@ -209,7 +209,7 @@ DefineBitsTag::loader(SWFStream& in, TagType tag, 
movie_definition& m,
         return;
     }
 
-    std::auto_ptr<image::GnashImage> im;
+    std::unique_ptr<image::GnashImage> im;
 
     switch (tag) {
         case SWF::DEFINEBITS:
@@ -244,7 +244,7 @@ DefineBitsTag::loader(SWFStream& in, TagType tag, 
movie_definition& m,
         );
         return;
     }    
-    boost::intrusive_ptr<CachedBitmap> bi = renderer->createCachedBitmap(im);
+    boost::intrusive_ptr<CachedBitmap> bi = 
renderer->createCachedBitmap(std::move(im));
 
     IF_VERBOSE_PARSE(
         log_parse(_("Adding bitmap id %1%"), id);
@@ -257,10 +257,10 @@ namespace {
 
 // A JPEG image without included tables; those should be in an
 // existing image::JpegInput object stored in the movie.
-std::auto_ptr<image::GnashImage>
+std::unique_ptr<image::GnashImage>
 readDefineBitsJpeg(SWFStream& /*in*/, movie_definition& m)
 {
-    std::auto_ptr<image::GnashImage> im;
+    std::unique_ptr<image::GnashImage> im;
 
     // Read the image data.
     image::JpegInput* j_in = m.get_jpeg_loader();
@@ -321,21 +321,21 @@ checkFileType(SWFStream& in)
 }
 
 
-std::auto_ptr<image::GnashImage>
+std::unique_ptr<image::GnashImage>
 readDefineBitsJpeg2(SWFStream& in)
 {
     const FileType ft = checkFileType(in);
 
     // Read the image data.
-    boost::shared_ptr<IOChannel> ad(StreamAdapter::getFile(in,
+    std::unique_ptr<IOChannel> ad(StreamAdapter::getFile(in,
                 in.get_tag_end_position()).release());
 
-    return image::Input::readImageData(ad, ft);
+    return image::Input::readImageData(std::move(ad), ft);
 }
 
 
 /// Parse a DefineBitsJpeg3 or 4 tag.
-std::auto_ptr<image::GnashImage>
+std::unique_ptr<image::GnashImage>
 readDefineBitsJpeg3(SWFStream& in, TagType tag)
 {
     in.ensureBytes(4);
@@ -356,9 +356,9 @@ readDefineBitsJpeg3(SWFStream& in, TagType tag)
     if (ft != GNASH_FILETYPE_JPEG) {
         log_debug("TESTING: non-JPEG data in DefineBitsJpeg3");
         // Read the image data.
-        boost::shared_ptr<IOChannel> ad(StreamAdapter::getFile(in,
+        std::unique_ptr<IOChannel> ad(StreamAdapter::getFile(in,
                     in.get_tag_end_position()).release());
-        return image::Input::readImageData(ad, ft);
+        return image::Input::readImageData(std::move(ad), ft);
     }
 
     // We assume it's a JPEG with alpha data.
@@ -366,16 +366,16 @@ readDefineBitsJpeg3(SWFStream& in, TagType tag)
 
 #ifndef HAVE_ZLIB_H
     log_error(_("gnash is not linked to zlib -- can't load jpeg3 image data"));
-    return std::auto_ptr<image::GnashImage>();
+    return std::unique_ptr<image::GnashImage>();
 #else
 
     // Read rgb data.
-    boost::shared_ptr<IOChannel> ad(StreamAdapter::getFile(in,
+    std::unique_ptr<IOChannel> ad(StreamAdapter::getFile(in,
                 alpha_position).release());
-    std::auto_ptr<image::ImageRGBA> im = image::Input::readSWFJpeg3(ad);
+    std::unique_ptr<image::ImageRGBA> im = 
image::Input::readSWFJpeg3(std::move(ad));
     
     /// Failure to read the jpeg.
-    if (!im.get()) return std::auto_ptr<image::GnashImage>();
+    if (!im.get()) return std::unique_ptr<image::GnashImage>();
 
     // Read alpha channel.
     in.seek(alpha_position);
@@ -394,11 +394,11 @@ readDefineBitsJpeg3(SWFStream& in, TagType tag)
     image::mergeAlpha(*im, buffer.get(), bufferLength);
 
 #endif
-    return static_cast<std::auto_ptr<image::GnashImage> >(im);
+    return std::move(im);
 }
 
 
-std::auto_ptr<image::GnashImage>
+std::unique_ptr<image::GnashImage>
 readLossless(SWFStream& in, TagType tag)
 {
     assert(tag == SWF::DEFINELOSSLESS || tag == SWF::DEFINELOSSLESS2);
@@ -414,7 +414,7 @@ readLossless(SWFStream& in, TagType tag)
                 "w = %d, h = %d"), tag, +bitmap_format, width, height);
     );
 
-    std::auto_ptr<image::GnashImage> image;  
+    std::unique_ptr<image::GnashImage> image;  
     if (!width || !height) {
          IF_VERBOSE_MALFORMED_SWF(
             log_swferror(_("Bitmap has a height or width of 0"));
@@ -475,7 +475,7 @@ readLossless(SWFStream& in, TagType tag)
 
         default:
             log_error(_("Unknown bitmap format. Ignoring"));
-            return std::auto_ptr<image::GnashImage>();
+            return std::unique_ptr<image::GnashImage>();
     }
 
     const size_t pitch = (width * bytes_per_pixel + 3) &~ 3;
diff --git a/libcore/swf/DefineButtonSoundTag.cpp 
b/libcore/swf/DefineButtonSoundTag.cpp
index 7fd7a4f..b66befa 100644
--- a/libcore/swf/DefineButtonSoundTag.cpp
+++ b/libcore/swf/DefineButtonSoundTag.cpp
@@ -75,9 +75,9 @@ DefineButtonSoundTag::loader(SWFStream& in, TagType tag, 
movie_definition& m,
         return;
     }
 
-    std::auto_ptr<DefineButtonSoundTag> bs(
+    std::unique_ptr<DefineButtonSoundTag> bs(
             new DefineButtonSoundTag(in, m));
-    button->addSoundTag(bs);
+    button->addSoundTag(std::move(bs));
 }
 
 
diff --git a/libcore/swf/DefineButtonTag.cpp b/libcore/swf/DefineButtonTag.cpp
index e776b34..9108c69 100644
--- a/libcore/swf/DefineButtonTag.cpp
+++ b/libcore/swf/DefineButtonTag.cpp
@@ -85,7 +85,7 @@ DefineButtonTag::loader(SWFStream& in, TagType tag, 
movie_definition& m,
         log_parse(_("  DefineButton loader: character id = %d"), id);
     );
 
-    std::auto_ptr<DefineButtonTag> bt(new DefineButtonTag(in, m, tag, id));
+    std::unique_ptr<DefineButtonTag> bt(new DefineButtonTag(in, m, tag, id));
 
     m.addDisplayObject(id, bt.release());
 }
@@ -102,7 +102,7 @@ DefineButton2Tag::loader(SWFStream& in, TagType tag, 
movie_definition& m,
         log_parse(_("  DefineButton2 loader: chararacter id = %d"), id);
     );
 
-    std::auto_ptr<DefineButtonTag> bt(new DefineButtonTag(in, m, tag, id));
+    std::unique_ptr<DefineButtonTag> bt(new DefineButtonTag(in, m, tag, id));
 
     m.addDisplayObject(id, bt.release());
 }
diff --git a/libcore/swf/DefineButtonTag.h b/libcore/swf/DefineButtonTag.h
index 17569b8..ff7719b 100644
--- a/libcore/swf/DefineButtonTag.h
+++ b/libcore/swf/DefineButtonTag.h
@@ -214,7 +214,7 @@ public:
 
     /// Add a DefineButtonSoundTag to the button. This should not be
     /// done twice, so check hasSound() first.
-    void addSoundTag(std::auto_ptr<SWF::DefineButtonSoundTag> soundTag) {
+    void addSoundTag(std::unique_ptr<SWF::DefineButtonSoundTag> soundTag) {
         // Do not replace a sound tag.
         assert(!_soundTag.get());
         _soundTag.reset(soundTag.release());
diff --git a/libcore/swf/DefineEditTextTag.cpp 
b/libcore/swf/DefineEditTextTag.cpp
index d6cf67f..ca096c7 100644
--- a/libcore/swf/DefineEditTextTag.cpp
+++ b/libcore/swf/DefineEditTextTag.cpp
@@ -39,7 +39,7 @@ DefineEditTextTag::loader(SWFStream& in, TagType tag, 
movie_definition& m,
     in.ensureBytes(2);
     const boost::uint16_t id = in.read_u16();
 
-    std::auto_ptr<DefineEditTextTag> editText(new DefineEditTextTag(in, m, 
id));
+    std::unique_ptr<DefineEditTextTag> editText(new DefineEditTextTag(in, m, 
id));
 
     m.addDisplayObject(id, editText.release());
 }
diff --git a/libcore/swf/DefineFontTag.cpp b/libcore/swf/DefineFontTag.cpp
index 4ad7954..2be46fc 100644
--- a/libcore/swf/DefineFontTag.cpp
+++ b/libcore/swf/DefineFontTag.cpp
@@ -46,8 +46,8 @@ DefineFontTag::loader(SWFStream& in, TagType tag, 
movie_definition& m,
     in.ensureBytes(2);
     const boost::uint16_t fontID = in.read_u16();
 
-    std::auto_ptr<DefineFontTag> ft(new DefineFontTag(in, m, tag, r));
-    boost::intrusive_ptr<Font> f(new Font(ft));
+    std::unique_ptr<DefineFontTag> ft(new DefineFontTag(in, m, tag, r));
+    boost::intrusive_ptr<Font> f(new Font(std::move(ft)));
 
     m.add_font(fontID, f);
 }
@@ -268,7 +268,7 @@ DefineFontTag::readDefineFont2Or3(SWFStream& in, 
movie_definition& m,
         return;
     }
 
-    std::auto_ptr<Font::CodeTable> table(new Font::CodeTable);
+    std::unique_ptr<Font::CodeTable> table(new Font::CodeTable);
 
     readCodeTable(in, *table, wideCodes, _glyphTable.size());
     _codeTable.reset(table.release());
@@ -360,13 +360,13 @@ DefineFontInfoTag::loader(SWFStream& in, TagType tag, 
movie_definition& m,
 
     const bool wideCodes = flags & (1 << 0);
 
-    std::auto_ptr<Font::CodeTable> table(new Font::CodeTable);
+    std::unique_ptr<Font::CodeTable> table(new Font::CodeTable);
 
     DefineFontTag::readCodeTable(in, *table, wideCodes, f->glyphCount());
 
     f->setName(name);
     f->setFlags(flags);
-    f->setCodeTable(table);
+    f->setCodeTable(std::move(table));
 }
 
 
diff --git a/libcore/swf/DefineTextTag.cpp b/libcore/swf/DefineTextTag.cpp
index 5ed0b51..e04654f 100644
--- a/libcore/swf/DefineTextTag.cpp
+++ b/libcore/swf/DefineTextTag.cpp
@@ -47,7 +47,7 @@ DefineTextTag::loader(SWFStream& in, TagType tag, 
movie_definition& m,
     in.ensureBytes(2);
     const boost::uint16_t id = in.read_u16();
 
-    std::auto_ptr<DefineTextTag> t(new DefineTextTag(in, m, tag, id));
+    std::unique_ptr<DefineTextTag> t(new DefineTextTag(in, m, tag, id));
     IF_VERBOSE_PARSE(
         log_parse(_("DefineTextTag, id = %d"), id);
     );
@@ -88,7 +88,7 @@ DefineText2Tag::loader(SWFStream& in, TagType tag, 
movie_definition& m,
     in.ensureBytes(2);
     const boost::uint16_t id = in.read_u16();
 
-    std::auto_ptr<DefineTextTag> t(new DefineTextTag(in, m, tag, id));
+    std::unique_ptr<DefineTextTag> t(new DefineTextTag(in, m, tag, id));
     IF_VERBOSE_PARSE(
         log_parse(_("Text DisplayObject, id = %d"), id);
     );
diff --git a/libcore/swf/DefineVideoStreamTag.cpp 
b/libcore/swf/DefineVideoStreamTag.cpp
index e337777..237d2f5 100644
--- a/libcore/swf/DefineVideoStreamTag.cpp
+++ b/libcore/swf/DefineVideoStreamTag.cpp
@@ -60,7 +60,7 @@ DefineVideoStreamTag::loader(SWFStream& in, SWF::TagType tag,
     in.ensureBytes(2);
     boost::uint16_t id = in.read_u16();
 
-    std::auto_ptr<DefineVideoStreamTag> vs(new DefineVideoStreamTag(in, id));
+    std::unique_ptr<DefineVideoStreamTag> vs(new DefineVideoStreamTag(in, id));
 
     m.addDisplayObject(id, vs.release());
 
@@ -106,10 +106,10 @@ DefineVideoStreamTag::read(SWFStream& in)
 
 void
 DefineVideoStreamTag::addVideoFrameTag(
-        std::auto_ptr<media::EncodedVideoFrame> frame)
+        std::unique_ptr<media::EncodedVideoFrame> frame)
 {
        boost::mutex::scoped_lock lock(_video_mutex);
-    _video_frames.push_back(frame);
+    _video_frames.push_back(frame.release());
 }
 
 DisplayObject*
diff --git a/libcore/swf/DefineVideoStreamTag.h 
b/libcore/swf/DefineVideoStreamTag.h
index fe1e406..c8011b0 100644
--- a/libcore/swf/DefineVideoStreamTag.h
+++ b/libcore/swf/DefineVideoStreamTag.h
@@ -153,7 +153,7 @@ public:
         return (upper - lower);
     }
     
-    void addVideoFrameTag(std::auto_ptr<media::EncodedVideoFrame> frame);
+    void addVideoFrameTag(std::unique_ptr<media::EncodedVideoFrame> frame);
 
 private:
 
@@ -213,7 +213,7 @@ private:
        //
        /// TODO: drop _width/_height/m_codec_id leaving all in this member
     /// instead ?
-       std::auto_ptr<media::VideoInfo> _videoInfo;
+       std::unique_ptr<media::VideoInfo> _videoInfo;
 
 };
 
diff --git a/libcore/swf/DoABCTag.h b/libcore/swf/DoABCTag.h
index a71d3a5..a804f55 100644
--- a/libcore/swf/DoABCTag.h
+++ b/libcore/swf/DoABCTag.h
@@ -87,7 +87,7 @@ public:
                        in.read_string(name);
                }
 
-        std::auto_ptr<abc::AbcBlock> block(new abc::AbcBlock());
+        std::unique_ptr<abc::AbcBlock> block(new abc::AbcBlock());
                if (!block->read(in)) {
             log_error("ABC parsing error while processing DoABCTag. This "
                     "tag will never be executed");
diff --git a/libcore/swf/PlaceObject2Tag.cpp b/libcore/swf/PlaceObject2Tag.cpp
index cb63557..ea50878 100644
--- a/libcore/swf/PlaceObject2Tag.cpp
+++ b/libcore/swf/PlaceObject2Tag.cpp
@@ -182,10 +182,10 @@ PlaceObject2Tag::readPlaceActions(SWFStream& in)
             }
     
             // Read the actions for event(s)
-            // auto_ptr here prevents leaks on malformed swf
-            std::auto_ptr<action_buffer> action(new action_buffer(_movie_def));
+            // unique_ptr here prevents leaks on malformed swf
+            std::unique_ptr<action_buffer> action(new 
action_buffer(_movie_def));
             action->read(in, in.tell() + event_length);
-            _actionBuffers.push_back(action); 
+            _actionBuffers.push_back(action.release()); 
     
             // If there is no end tag, action_buffer appends a null-terminator,
             // and fails this check. As action_buffer should check bounds, we
@@ -241,13 +241,13 @@ PlaceObject2Tag::readPlaceActions(SWFStream& in)
 
                     const event_id id(s_code_bits[i], (i == 17 ? ch : 
key::INVALID));
 
-                    std::auto_ptr<swf_event> ev(new swf_event(id, thisAction));
+                    std::unique_ptr<swf_event> ev(new swf_event(id, 
thisAction));
 
                     IF_VERBOSE_PARSE(
                         log_parse("---- actions for event %s", ev->event());
                     );
     
-                    _eventHandlers.push_back(ev);
+                    _eventHandlers.push_back(ev.release());
                 }
             }
         }
diff --git a/libcore/swf/StreamSoundBlockTag.cpp 
b/libcore/swf/StreamSoundBlockTag.cpp
index ce3510a..3dee0a4 100644
--- a/libcore/swf/StreamSoundBlockTag.cpp
+++ b/libcore/swf/StreamSoundBlockTag.cpp
@@ -104,7 +104,7 @@ StreamSoundBlockTag::loader(SWFStream& in, TagType tag, 
movie_definition& m,
     const size_t padding = mh ? mh->getInputPaddingSize() : 0;
 
     // Reserve padding too.
-    std::auto_ptr<SimpleBuffer> buf(new SimpleBuffer(dataLength + padding));
+    std::unique_ptr<SimpleBuffer> buf(new SimpleBuffer(dataLength + padding));
     buf->resize(dataLength);
 
     const unsigned int bytesRead = in.read((char*)buf->data(), dataLength);
@@ -120,7 +120,7 @@ StreamSoundBlockTag::loader(SWFStream& in, TagType tag, 
movie_definition& m,
     // not on the size of the data. Currently the sound_handler ignores
     // sampleCount completely.
     sound::sound_handler::StreamBlockId blockId =
-        handler->addSoundBlock(buf, sampleCount, seekSamples, sId);
+        handler->addSoundBlock(std::move(buf), sampleCount, seekSamples, sId);
 
     boost::intrusive_ptr<ControlTag> s(new StreamSoundBlockTag(sId, blockId));
 
diff --git a/libcore/swf/VideoFrameTag.cpp b/libcore/swf/VideoFrameTag.cpp
index c3bfa21..ba94a61 100644
--- a/libcore/swf/VideoFrameTag.cpp
+++ b/libcore/swf/VideoFrameTag.cpp
@@ -96,10 +96,10 @@ VideoFrameTag::loader(SWFStream& in, SWF::TagType tag, 
movie_definition& m,
 
     using namespace media;
 
-    std::auto_ptr<EncodedVideoFrame> frame(
+    std::unique_ptr<EncodedVideoFrame> frame(
             new EncodedVideoFrame(buffer, dataLength, frameNum));
 
-    vs->addVideoFrameTag(frame);
+    vs->addVideoFrameTag(std::move(frame));
 }
 
 } // namespace SWF
diff --git a/libcore/swf/tag_loaders.cpp b/libcore/swf/tag_loaders.cpp
index 0d2418c..469d64e 100644
--- a/libcore/swf/tag_loaders.cpp
+++ b/libcore/swf/tag_loaders.cpp
@@ -204,7 +204,7 @@ define_sound_loader(SWFStream& in, TagType tag, 
movie_definition& m,
         media::MediaHandler* mh = r.mediaHandler();
         if (mh) allocSize += mh->getInputPaddingSize();
 
-        std::auto_ptr<SimpleBuffer> data(new SimpleBuffer(allocSize));
+        std::unique_ptr<SimpleBuffer> data(new SimpleBuffer(allocSize));
 
         // dataLength is already calculated from the end of the tag, which
         // should be inside the end of the file. TODO: check that this is 
@@ -224,7 +224,7 @@ define_sound_loader(SWFStream& in, TagType tag, 
movie_definition& m,
 
         // Stores the sounddata in the soundhandler, and the ID returned
         // can be used to starting, stopping and deleting that sound
-        const int handler_id = handler->create_sound(data, sinfo);
+        const int handler_id = handler->create_sound(std::move(data), sinfo);
 
         if (handler_id >= 0) {
             sound_sample* sam = new sound_sample(handler_id, r);
diff --git a/libcore/vm/VM.h b/libcore/vm/VM.h
index 6e2edb0..54a26f7 100644
--- a/libcore/vm/VM.h
+++ b/libcore/vm/VM.h
@@ -276,7 +276,7 @@ private:
        CallStack _callStack;
 
        /// Library of SharedObjects. Owned by the VM.
-    std::auto_ptr<SharedObjectLibrary> _shLib;
+    std::unique_ptr<SharedObjectLibrary> _shLib;
 
     RNG _rng;
 
diff --git a/libdevice/directfb/Renderer_DirectFB.cpp 
b/libdevice/directfb/Renderer_DirectFB.cpp
index 6c5d1be..3c93e96 100644
--- a/libdevice/directfb/Renderer_DirectFB.cpp
+++ b/libdevice/directfb/Renderer_DirectFB.cpp
@@ -83,7 +83,7 @@ Renderer_DirectFB::init(float x, float y)
 }
 
 CachedBitmap *
-Renderer_DirectFB::createCachedBitmap(std::auto_ptr<gnash::image::GnashImage>)
+Renderer_DirectFB::createCachedBitmap(std::unique_ptr<gnash::image::GnashImage>)
 {
 
 }
diff --git a/libdevice/directfb/Renderer_DirectFB.h 
b/libdevice/directfb/Renderer_DirectFB.h
index 0779d8c..8f76f82 100644
--- a/libdevice/directfb/Renderer_DirectFB.h
+++ b/libdevice/directfb/Renderer_DirectFB.h
@@ -50,7 +50,7 @@ public:
     ~Renderer_DirectFB();
         
     void init(float x, float y);
-    CachedBitmap *createCachedBitmap(std::auto_ptr<image::GnashImage> im);
+    CachedBitmap *createCachedBitmap(std::unique_ptr<image::GnashImage> im);
 
     void world_to_pixel(int& x, int& y, float world_x, float world_y);
     gnash::geometry::Range2d<int> world_to_pixel(const gnash::SWFRect& wb);
diff --git a/libdevice/vaapi/VaapiContext.h b/libdevice/vaapi/VaapiContext.h
index 963b023..e646693 100644
--- a/libdevice/vaapi/VaapiContext.h
+++ b/libdevice/vaapi/VaapiContext.h
@@ -60,7 +60,7 @@ class DSOEXPORT VaapiContext {
     std::queue<VaapiSurfaceSP>          _surfaces;
     unsigned int                        _picture_width;
     unsigned int                        _picture_height;
-    std::auto_ptr<VaapiContextData>     _user_data;
+    std::unique_ptr<VaapiContextData>     _user_data;
 
     bool construct();
     void destruct();
@@ -84,7 +84,7 @@ public:
     void releaseSurface(boost::shared_ptr<VaapiSurface> surface);
 
     /// Set user data
-    void setData(std::auto_ptr<VaapiContextData> user_data) { _user_data = 
user_data; }
+    void setData(std::unique_ptr<VaapiContextData> user_data) { _user_data = 
user_data; }
 
     /// Get user data
     VaapiContextData *getData() const { return _user_data.get(); }
diff --git a/libdevice/vaapi/VaapiGlobalContext.cpp 
b/libdevice/vaapi/VaapiGlobalContext.cpp
index 0e2b559..c19ed07 100644
--- a/libdevice/vaapi/VaapiGlobalContext.cpp
+++ b/libdevice/vaapi/VaapiGlobalContext.cpp
@@ -32,7 +32,7 @@
 
 namespace gnash {
 
-VaapiGlobalContext::VaapiGlobalContext(std::auto_ptr<VaapiDisplay> display)
+VaapiGlobalContext::VaapiGlobalContext(std::unique_ptr<VaapiDisplay> display)
     : _display(display)
 {
     GNASH_REPORT_FUNCTION;
@@ -131,10 +131,10 @@ VaapiGlobalContext *VaapiGlobalContext::get()
 {
     LOG_ONCE(GNASH_REPORT_FUNCTION);
 
-    static std::auto_ptr<VaapiGlobalContext> vaapi_global_context;
+    static std::unique_ptr<VaapiGlobalContext> vaapi_global_context;
 
     if (!vaapi_global_context.get()) {
-        std::auto_ptr<VaapiDisplay> dpy;
+        std::unique_ptr<VaapiDisplay> dpy;
         /* XXX: this won't work with multiple renders built-in */
         try {
 #if HAVE_VA_VA_GLX_H
diff --git a/libdevice/vaapi/VaapiGlobalContext.h 
b/libdevice/vaapi/VaapiGlobalContext.h
index 904f661..c75dd4d 100644
--- a/libdevice/vaapi/VaapiGlobalContext.h
+++ b/libdevice/vaapi/VaapiGlobalContext.h
@@ -31,7 +31,7 @@ namespace gnash {
 
 /// VA API global context
 class DSOEXPORT VaapiGlobalContext {
-    std::auto_ptr<VaapiDisplay> _display;
+    std::unique_ptr<VaapiDisplay> _display;
     std::vector<VAProfile>      _profiles;
     std::vector<VAImageFormat>  _image_formats;
     std::vector<VAImageFormat>  _subpicture_formats;
@@ -39,7 +39,7 @@ class DSOEXPORT VaapiGlobalContext {
     bool init();
 
 public:
-    VaapiGlobalContext(std::auto_ptr<VaapiDisplay> display);
+    VaapiGlobalContext(std::unique_ptr<VaapiDisplay> display);
     ~VaapiGlobalContext();
 
     /// Get the unique global VA context
diff --git a/libdevice/vaapi/VaapiSurface.h b/libdevice/vaapi/VaapiSurface.h
index 4180576..bd2125d 100644
--- a/libdevice/vaapi/VaapiSurface.h
+++ b/libdevice/vaapi/VaapiSurface.h
@@ -66,7 +66,7 @@ public:
 /// VA surface abstraction
 class DSOEXPORT VaapiSurface
 {
-    std::auto_ptr<VaapiSurfaceImplBase> _impl;
+    std::unique_ptr<VaapiSurfaceImplBase> _impl;
     std::vector< boost::shared_ptr<VaapiSubpicture> > _subpictures;
 
     friend class VaapiContext;
diff --git a/libdevice/vaapi/VaapiSurfaceGLX.h 
b/libdevice/vaapi/VaapiSurfaceGLX.h
index ae4e68d..81d23b0 100644
--- a/libdevice/vaapi/VaapiSurfaceGLX.h
+++ b/libdevice/vaapi/VaapiSurfaceGLX.h
@@ -31,7 +31,7 @@ namespace gnash {
 /// VA/GLX surface abstraction
 class DSOEXPORT VaapiSurfaceGLX 
 {
-    std::auto_ptr<VaapiSurfaceImplBase> _impl;
+    std::unique_ptr<VaapiSurfaceImplBase> _impl;
 
 public:
     VaapiSurfaceGLX(GLenum target, GLuint texture);
diff --git a/libmedia/AudioDecoder.h b/libmedia/AudioDecoder.h
index 6ceac76..ef1c9ce 100644
--- a/libmedia/AudioDecoder.h
+++ b/libmedia/AudioDecoder.h
@@ -60,7 +60,7 @@ public:
        /// @return a pointer to the decoded data, or NULL if decoding fails.
        ///     The caller owns the decoded data, which was allocated with new 
[].
        ///
-       /// @todo return a SimpleBuffer by auto_ptr
+       /// @todo return a SimpleBuffer by unique_ptr
        ///
        virtual boost::uint8_t* decode(const boost::uint8_t* input,
         boost::uint32_t inputSize, boost::uint32_t& outputSize,
@@ -77,7 +77,7 @@ public:
        /// @return a pointer to the decoded data, or NULL if decoding fails.
        ///     The caller owns the decoded data, which was allocated with new 
[].
        ///
-       /// @todo return a SimpleBuffer by auto_ptr
+       /// @todo return a SimpleBuffer by unique_ptr
        ///
        virtual boost::uint8_t* decode(const EncodedAudioFrame& input,
                                       boost::uint32_t& outputSize);
diff --git a/libmedia/FLVParser.cpp b/libmedia/FLVParser.cpp
index 8210e34..c7f8b4e 100644
--- a/libmedia/FLVParser.cpp
+++ b/libmedia/FLVParser.cpp
@@ -41,9 +41,9 @@ const size_t FLVParser::paddingBytes;
 const boost::uint16_t FLVParser::FLVAudioTag::flv_audio_rates [] = 
     { 5500, 11000, 22050, 44100 };
 
-FLVParser::FLVParser(std::auto_ptr<IOChannel> lt)
+FLVParser::FLVParser(std::unique_ptr<IOChannel> lt)
        :
-       MediaParser(lt),
+       MediaParser(std::move(lt)),
        _lastParsedPosition(0),
        _nextPosToIndex(0),
        _nextAudioFrame(0),
@@ -161,10 +161,10 @@ FLVParser::indexVideoTag(const FLVTag& tag, const 
FLVVideoTag& videotag, boost::
 }
 
 
-std::auto_ptr<EncodedAudioFrame>
+std::unique_ptr<EncodedAudioFrame>
 FLVParser::parseAudioTag(const FLVTag& flvtag, const FLVAudioTag& audiotag, 
boost::uint32_t thisTagPos)
 {
-       std::auto_ptr<EncodedAudioFrame> frame;
+       std::unique_ptr<EncodedAudioFrame> frame;
 
        if ( ! _audio ) {
                log_error(_("Unexpected audio tag found at offset %d FLV stream 
"
@@ -218,7 +218,7 @@ FLVParser::parseAudioTag(const FLVTag& flvtag, const 
FLVAudioTag& audiotag, boos
        return frame;
 }
 
-std::auto_ptr<EncodedVideoFrame>
+std::unique_ptr<EncodedVideoFrame>
 FLVParser::parseVideoTag(const FLVTag& flvtag, const FLVVideoTag& videotag, 
boost::uint32_t thisTagPos)
 {
        if ( ! _video ) {
@@ -258,7 +258,7 @@ FLVParser::parseVideoTag(const FLVTag& flvtag, const 
FLVVideoTag& videotag, boos
                        break;
        }
 
-       std::auto_ptr<EncodedVideoFrame> frame = readVideoFrame(bodyLength-1,
+       std::unique_ptr<EncodedVideoFrame> frame = readVideoFrame(bodyLength-1,
             flvtag.timestamp);
        if ( ! frame.get() ) {
             log_error(_("could not read video frame?"));
@@ -377,7 +377,7 @@ FLVParser::parseNextTag(bool index_only)
                }
 
 
-               std::auto_ptr<EncodedAudioFrame> frame = 
+               std::unique_ptr<EncodedAudioFrame> frame = 
             parseAudioTag(flvtag, audiotag, thisTagPos);
                if (!frame.get()) {
                        return false;
@@ -388,7 +388,7 @@ FLVParser::parseNextTag(bool index_only)
                // the _qMutex...
                // We've done using the stream for this tag parsing anyway
                streamLock.unlock();
-               pushEncodedAudioFrame(frame);
+               pushEncodedAudioFrame(std::move(frame));
        }
        else if (flvtag.type == FLV_VIDEO_TAG)
        {
@@ -401,7 +401,7 @@ FLVParser::parseNextTag(bool index_only)
                        }
                }
 
-               std::auto_ptr<EncodedVideoFrame> frame = 
+               std::unique_ptr<EncodedVideoFrame> frame = 
             parseVideoTag(flvtag, videotag, thisTagPos);
                if (!frame.get()) {
                        return false;
@@ -412,7 +412,7 @@ FLVParser::parseNextTag(bool index_only)
                // might block us waiting for buffers flush
                // the _qMutex...
                streamLock.unlock();
-               pushEncodedVideoFrame(frame);
+               pushEncodedVideoFrame(std::move(frame));
 
        }
        else if (flvtag.type == FLV_META_TAG)
@@ -425,7 +425,7 @@ FLVParser::parseNextTag(bool index_only)
                     static_cast<int>(chunk[11]));
                }
                // Extract information from the meta tag
-               std::auto_ptr<SimpleBuffer> metaTag(new SimpleBuffer(
+               std::unique_ptr<SimpleBuffer> metaTag(new SimpleBuffer(
                     flvtag.body_size-1));
                size_t actuallyRead = _stream->read(metaTag->data(),
                 flvtag.body_size - 1);
@@ -447,7 +447,7 @@ FLVParser::parseNextTag(bool index_only)
                }
 
                boost::mutex::scoped_lock lock(_metaTagsMutex);
-               _metaTags.insert(std::make_pair(flvtag.timestamp, 
MetaTags::mapped_type(metaTag)));
+               _metaTags.insert(std::make_pair(flvtag.timestamp, 
std::move(metaTag)));
        }
        else
        {
@@ -516,11 +516,11 @@ FLVParser::getBytesLoaded() const
 
 // would be called by parser thread
 /*private*/
-std::auto_ptr<EncodedAudioFrame>
+std::unique_ptr<EncodedAudioFrame>
 FLVParser::readAudioFrame(boost::uint32_t dataSize, boost::uint32_t timestamp)
 {
 
-       std::auto_ptr<EncodedAudioFrame> frame(new EncodedAudioFrame);
+       std::unique_ptr<EncodedAudioFrame> frame(new EncodedAudioFrame);
     
     const size_t bufSize = dataSize + paddingBytes;
 
@@ -543,10 +543,10 @@ FLVParser::readAudioFrame(boost::uint32_t dataSize, 
boost::uint32_t timestamp)
 
 // would be called by parser thread
 /*private*/
-std::auto_ptr<EncodedVideoFrame>
+std::unique_ptr<EncodedVideoFrame>
 FLVParser::readVideoFrame(boost::uint32_t dataSize, boost::uint32_t timestamp)
 {
-       std::auto_ptr<EncodedVideoFrame> frame;
+       std::unique_ptr<EncodedVideoFrame> frame;
 
     const size_t bufSize = dataSize + paddingBytes;
 
diff --git a/libmedia/FLVParser.h b/libmedia/FLVParser.h
index 5a31c14..316bfd9 100644
--- a/libmedia/FLVParser.h
+++ b/libmedia/FLVParser.h
@@ -51,7 +51,7 @@ public:
     /// @param datasize
     ///     Video header data size
     ///
-    /// @todo take a SimpleBuffer by auto_ptr
+    /// @todo take a SimpleBuffer by unique_ptr
     ///
     ExtraVideoInfoFlv(boost::uint8_t* extradata, size_t datasize)
         :
@@ -83,7 +83,7 @@ public:
     /// @param datasize
     ///     Audio header data size
     ///
-    /// @todo take a SimpleBuffer by auto_ptr
+    /// @todo take a SimpleBuffer by unique_ptr
     ///
     ExtraAudioInfoFlv(boost::uint8_t* extradata, size_t datasize)
         :
@@ -120,7 +120,7 @@ public:
        ///     IOChannel to use for input.
        ///     Ownership transferred.
        ///
-       FLVParser(std::auto_ptr<IOChannel> lt);
+       FLVParser(std::unique_ptr<IOChannel> lt);
 
        /// Kills the parser...
        ~FLVParser();
@@ -233,10 +233,10 @@ private:
        ///
        bool parseNextTag(bool index_only);
 
-       std::auto_ptr<EncodedAudioFrame> parseAudioTag(const FLVTag& flvtag,
+       std::unique_ptr<EncodedAudioFrame> parseAudioTag(const FLVTag& flvtag,
             const FLVAudioTag& audiotag, boost::uint32_t thisTagPos);
        
-    std::auto_ptr<EncodedVideoFrame> parseVideoTag(const FLVTag& flvtag,
+    std::unique_ptr<EncodedVideoFrame> parseVideoTag(const FLVTag& flvtag,
             const FLVVideoTag& videotag, boost::uint32_t thisTagPos);
 
        void indexAudioTag(const FLVTag& tag, boost::uint32_t thisTagPos);
@@ -279,10 +279,10 @@ private:
        /// Audio stream is present
        bool _video;
 
-       std::auto_ptr<EncodedAudioFrame>
+       std::unique_ptr<EncodedAudioFrame>
         readAudioFrame(boost::uint32_t dataSize, boost::uint32_t timestamp);
 
-       std::auto_ptr<EncodedVideoFrame>
+       std::unique_ptr<EncodedVideoFrame>
         readVideoFrame(boost::uint32_t dataSize, boost::uint32_t timestamp);
 
        /// Position in input stream for each cue point
diff --git a/libmedia/MediaHandler.cpp b/libmedia/MediaHandler.cpp
index a84af29..c95db4e 100644
--- a/libmedia/MediaHandler.cpp
+++ b/libmedia/MediaHandler.cpp
@@ -54,10 +54,10 @@ MediaHandler::isFLV(IOChannel& stream)
     return true;
 }
 
-std::auto_ptr<MediaParser>
-MediaHandler::createMediaParser(std::auto_ptr<IOChannel> stream)
+std::unique_ptr<MediaParser>
+MediaHandler::createMediaParser(std::unique_ptr<IOChannel> stream)
 {
-    std::auto_ptr<MediaParser> parser;
+    std::unique_ptr<MediaParser> parser;
 
     try {
         if (!isFLV(*stream))
@@ -72,13 +72,13 @@ MediaHandler::createMediaParser(std::auto_ptr<IOChannel> 
stream)
         return parser;
     }
 
-    parser.reset( new FLVParser(stream) );
+    parser.reset( new FLVParser(std::move(stream)) );
     assert(!stream.get()); // TODO: when ownership will be transferred...
 
     return parser;
 }
 
-std::auto_ptr<AudioDecoder>
+std::unique_ptr<AudioDecoder>
 MediaHandler::createFlashAudioDecoder(const AudioInfo& info)
 {
     assert (info.type == CODEC_TYPE_FLASH );
@@ -90,14 +90,14 @@ MediaHandler::createFlashAudioDecoder(const AudioInfo& info)
         case media::AUDIO_CODEC_RAW:
         case media::AUDIO_CODEC_UNCOMPRESSED:
         {
-            std::auto_ptr<AudioDecoder> ret(new AudioDecoderSimple(info));
+            std::unique_ptr<AudioDecoder> ret(new AudioDecoderSimple(info));
             return ret;
         }
 
 #ifdef DECODING_SPEEX
         case AUDIO_CODEC_SPEEX:
         {
-            std::auto_ptr<AudioDecoder> ret(new AudioDecoderSpeex);
+            std::unique_ptr<AudioDecoder> ret(new AudioDecoderSpeex);
             return ret;
         }
 #endif
diff --git a/libmedia/MediaHandler.h b/libmedia/MediaHandler.h
index 98f62ce..f9df8e6 100644
--- a/libmedia/MediaHandler.h
+++ b/libmedia/MediaHandler.h
@@ -84,8 +84,8 @@ public:
     /// NOTE: the default implementation returns an FLVParser for FLV input
     ///       or 0 for others.
     ///
-    virtual std::auto_ptr<MediaParser>
-        createMediaParser(std::auto_ptr<IOChannel> stream);
+    virtual std::unique_ptr<MediaParser>
+        createMediaParser(std::unique_ptr<IOChannel> stream);
 
     /// Create a VideoDecoder for decoding what's specified in the VideoInfo
     //
@@ -93,7 +93,7 @@ public:
     ///             the image stream correctly.
     /// @return     Will always return a valid VideoDecoder or throw a
     ///             gnash::MediaException if a fatal error occurs.
-    virtual std::auto_ptr<VideoDecoder>
+    virtual std::unique_ptr<VideoDecoder>
         createVideoDecoder(const VideoInfo& info)=0;
 
     /// Create an AudioDecoder for decoding what's specified in the AudioInfo
@@ -102,7 +102,7 @@ public:
     ///             the sound correctly.
     /// @return     Will always return a valid AudioDecoder or throw a
     ///             gnash::MediaException if a fatal error occurs.
-    virtual std::auto_ptr<AudioDecoder>
+    virtual std::unique_ptr<AudioDecoder>
         createAudioDecoder(const AudioInfo& info)=0;
 
     /// Create an VideoConverter for converting between color spaces.
@@ -110,9 +110,9 @@ public:
     /// @param srcFormat The source image color space
     /// @param dstFormat The destination image color space
     ///
-    /// @return A valid VideoConverter or a NULL auto_ptr if a fatal error
+    /// @return A valid VideoConverter or a NULL unique_ptr if a fatal error
     ///         occurs.
-    virtual std::auto_ptr<VideoConverter>
+    virtual std::unique_ptr<VideoConverter>
         createVideoConverter(ImgBuf::Type4CC srcFormat,
                 ImgBuf::Type4CC dstFormat)=0;
 
@@ -159,7 +159,7 @@ protected:
     ///     for info.type to be media::CODEC_TYPE_FLASH (caller should check
     ///     that before calling this).
     ///
-    std::auto_ptr<AudioDecoder> createFlashAudioDecoder(const AudioInfo& info);
+    std::unique_ptr<AudioDecoder> createFlashAudioDecoder(const AudioInfo& 
info);
 
     /// Return true if input stream is an FLV
     //
diff --git a/libmedia/MediaParser.cpp b/libmedia/MediaParser.cpp
index e4de8ca..b78a9dd 100644
--- a/libmedia/MediaParser.cpp
+++ b/libmedia/MediaParser.cpp
@@ -33,13 +33,13 @@
 namespace gnash {
 namespace media {
 
-MediaParser::MediaParser(std::auto_ptr<IOChannel> stream)
+MediaParser::MediaParser(std::unique_ptr<IOChannel> stream)
        :
        _parsingComplete(false),
        _bytesLoaded(0),
-       _stream(stream),
+       _stream(std::move(stream)),
        _bufferTime(100), // 100 ms 
-       _parserThread(0),
+       _parserThread(),
        _parserThreadStartBarrier(2),
        _parserThreadKillRequested(false),
        _seekRequest(false)
@@ -196,7 +196,7 @@ MediaParser::nextVideoFrameTimestamp(boost::uint64_t& ts) 
const
        return true;
 }
 
-std::auto_ptr<EncodedVideoFrame>
+std::unique_ptr<EncodedVideoFrame>
 MediaParser::nextVideoFrame()
 {
 #ifdef LOAD_MEDIA_IN_A_SEPARATE_THREAD
@@ -208,7 +208,7 @@ MediaParser::nextVideoFrame()
        }
 #endif
 
-       std::auto_ptr<EncodedVideoFrame> ret;
+       std::unique_ptr<EncodedVideoFrame> ret;
        if (_videoFrames.empty()) return ret;
        ret.reset(_videoFrames.front());
        _videoFrames.pop_front();
@@ -219,7 +219,7 @@ MediaParser::nextVideoFrame()
        return ret;
 }
 
-std::auto_ptr<EncodedAudioFrame>
+std::unique_ptr<EncodedAudioFrame>
 MediaParser::nextAudioFrame()
 {
 #ifdef LOAD_MEDIA_IN_A_SEPARATE_THREAD
@@ -231,7 +231,7 @@ MediaParser::nextAudioFrame()
        }
 #endif
 
-       std::auto_ptr<EncodedAudioFrame> ret;
+       std::unique_ptr<EncodedAudioFrame> ret;
        if (_audioFrames.empty()) return ret;
        ret.reset(_audioFrames.front());
        _audioFrames.pop_front();
@@ -324,7 +324,7 @@ MediaParser::clearBuffers()
 }
 
 void
-MediaParser::pushEncodedAudioFrame(std::auto_ptr<EncodedAudioFrame> frame)
+MediaParser::pushEncodedAudioFrame(std::unique_ptr<EncodedAudioFrame> frame)
 {
 #ifdef LOAD_MEDIA_IN_A_SEPARATE_THREAD
        boost::mutex::scoped_lock lock(_qMutex);
@@ -364,7 +364,7 @@ 
MediaParser::pushEncodedAudioFrame(std::auto_ptr<EncodedAudioFrame> frame)
 }
 
 void
-MediaParser::pushEncodedVideoFrame(std::auto_ptr<EncodedVideoFrame> frame)
+MediaParser::pushEncodedVideoFrame(std::unique_ptr<EncodedVideoFrame> frame)
 {
 #ifdef LOAD_MEDIA_IN_A_SEPARATE_THREAD
        boost::mutex::scoped_lock lock(_qMutex);
diff --git a/libmedia/MediaParser.h b/libmedia/MediaParser.h
index 35ed0d0..bb0c3b8 100644
--- a/libmedia/MediaParser.h
+++ b/libmedia/MediaParser.h
@@ -277,7 +277,7 @@ public:
     //
     /// Could be ExtraVideoInfoFlv or a media-handler specific info
     ///
-       std::auto_ptr<ExtraInfo> extra;
+       std::unique_ptr<ExtraInfo> extra;
 };
 
 /// Information about a video stream 
@@ -352,7 +352,7 @@ public:
     //
     /// Could be ExtraAudioInfoFlv or a media-handler specific info
     ///
-       std::auto_ptr<ExtraInfo> extra;
+       std::unique_ptr<ExtraInfo> extra;
 };
 
 DSOEXPORT std::ostream& operator << (std::ostream& os, const VideoInfo& vi);
@@ -407,7 +407,7 @@ public:
        unsigned frameNum() const { return _frameNum; }
 
        // FIXME: should have better encapsulation for this sort of stuff.
-       std::auto_ptr<EncodedExtraData> extradata;
+       std::unique_ptr<EncodedExtraData> extradata;
 private:
 
        boost::uint32_t _size;
@@ -425,7 +425,7 @@ public:
        boost::uint64_t timestamp;
 
        // FIXME: should have better encapsulation for this sort of stuff.
-       std::auto_ptr<EncodedExtraData> extradata;
+       std::unique_ptr<EncodedExtraData> extradata;
 };
 
 /// The MediaParser class provides cursor-based access to encoded %media 
frames 
@@ -443,11 +443,12 @@ public:
     /// A container for executable MetaTags contained in media streams.
     //
     /// Presently only known in FLV.
-    typedef std::multimap<boost::uint64_t, boost::shared_ptr<SimpleBuffer> >
+    typedef std::multimap<boost::uint64_t, std::shared_ptr<SimpleBuffer> >
         MetaTags;
     
     typedef std::vector<MetaTags::mapped_type> OrderedMetaTags;
-        MediaParser(std::auto_ptr<IOChannel> stream);
+
+        MediaParser(std::unique_ptr<IOChannel> stream);
 
        // Classes with virtual methods (virtual classes)
        // must have a virtual destructor, or the destructors
@@ -527,7 +528,7 @@ public:
        /// you can check with parsingCompleted() to know wheter this is due to 
        /// EOF reached.
        ///
-       DSOEXPORT std::auto_ptr<EncodedVideoFrame> nextVideoFrame();
+       DSOEXPORT std::unique_ptr<EncodedVideoFrame> nextVideoFrame();
 
        /// Get timestamp of the audio frame which would be returned on 
nextAudioFrame
        //
@@ -545,7 +546,7 @@ public:
        /// you can check with parsingCompleted() to know wheter this is due to 
        /// EOF reached.
        ///
-       DSOEXPORT std::auto_ptr<EncodedAudioFrame> nextAudioFrame();
+       DSOEXPORT std::unique_ptr<EncodedAudioFrame> nextAudioFrame();
 
        /// Returns a VideoInfo class about the videostream
        //
@@ -621,10 +622,10 @@ protected:
        /// Subclasses *must* set the following variables: @{ 
 
        /// Info about the video stream (if any)
-       std::auto_ptr<VideoInfo> _videoInfo;
+       std::unique_ptr<VideoInfo> _videoInfo;
 
        /// Info about the audio stream (if any)
-       std::auto_ptr<AudioInfo> _audioInfo;
+       std::unique_ptr<AudioInfo> _audioInfo;
 
        /// Whether the parsing is complete or not
        bool _parsingComplete;
@@ -653,16 +654,16 @@ protected:
        //
        /// Will wait on a condition if buffer is full or parsing was completed
        ///
-       void pushEncodedAudioFrame(std::auto_ptr<EncodedAudioFrame> frame);
+       void pushEncodedAudioFrame(std::unique_ptr<EncodedAudioFrame> frame);
 
        /// Push an encoded video frame to buffer.
        //
        /// Will wait on a condition if buffer is full or parsing was completed
        ///
-       void pushEncodedVideoFrame(std::auto_ptr<EncodedVideoFrame> frame);
+       void pushEncodedVideoFrame(std::unique_ptr<EncodedVideoFrame> frame);
 
        /// The stream used to access the file
-       std::auto_ptr<IOChannel> _stream;
+       std::unique_ptr<IOChannel> _stream;
        mutable boost::mutex _streamMutex;
 
        static void parserLoopStarter(MediaParser* mp)
@@ -689,7 +690,7 @@ protected:
        boost::uint64_t _bufferTime;
        mutable boost::mutex _bufferTimeMutex;
 
-       std::auto_ptr<boost::thread> _parserThread;
+       std::unique_ptr<boost::thread> _parserThread;
        boost::barrier _parserThreadStartBarrier;
        mutable boost::mutex _parserThreadKillRequestMutex;
        bool _parserThreadKillRequested;
diff --git a/libmedia/VideoConverter.h b/libmedia/VideoConverter.h
index 28f4784..cbf923c 100644
--- a/libmedia/VideoConverter.h
+++ b/libmedia/VideoConverter.h
@@ -101,8 +101,8 @@ public:
     /// Convert a (video) image from one colorspace to another.
     //
     /// @param src the image to convert
-    /// @return the converted image or a NULL auto_ptr if an error occurred.
-    virtual std::auto_ptr<ImgBuf> convert(const ImgBuf& src) = 0;
+    /// @return the converted image or a NULL unique_ptr if an error occurred.
+    virtual std::unique_ptr<ImgBuf> convert(const ImgBuf& src) = 0;
   
 protected:
     ImgBuf::Type4CC  _src_fmt;
diff --git a/libmedia/VideoDecoder.h b/libmedia/VideoDecoder.h
index 9f682de..e0e1438 100644
--- a/libmedia/VideoDecoder.h
+++ b/libmedia/VideoDecoder.h
@@ -58,9 +58,9 @@ public:
   
   /// Pop a decoded frame from the decoder. THIS METHOD MAY BLOCK.
   //
-  /// @return The decoded video frame, or a NULL-containing auto_ptr if an
+  /// @return The decoded video frame, or a NULL-containing unique_ptr if an
   ///         error occurred.
-  virtual std::auto_ptr<image::GnashImage> pop() = 0;
+  virtual std::unique_ptr<image::GnashImage> pop() = 0;
   
   /// \brief
   /// Check whether a decoded frame is ready to be popped.
diff --git a/libmedia/ffmpeg/MediaHandlerFfmpeg.cpp 
b/libmedia/ffmpeg/MediaHandlerFfmpeg.cpp
index 2c13eaf..2ab83bc 100644
--- a/libmedia/ffmpeg/MediaHandlerFfmpeg.cpp
+++ b/libmedia/ffmpeg/MediaHandlerFfmpeg.cpp
@@ -49,20 +49,20 @@ MediaHandlerFfmpeg::description() const
     return ss.str();
 }
 
-std::auto_ptr<MediaParser>
-MediaHandlerFfmpeg::createMediaParser(std::auto_ptr<IOChannel> stream)
+std::unique_ptr<MediaParser>
+MediaHandlerFfmpeg::createMediaParser(std::unique_ptr<IOChannel> stream)
 {
-       std::auto_ptr<MediaParser> parser;
+    std::unique_ptr<MediaParser> parser;
 
     try {
         if (isFLV(*stream))
         {
-            parser.reset(new FLVParser(stream));
+            parser.reset(new FLVParser(std::move(stream)));
         }
         else
         {
-                       parser.reset(new MediaParserFfmpeg(stream));
-               }
+            parser.reset(new MediaParserFfmpeg(std::move(stream)));
+        }
     }
     catch (GnashException& ex)
     {
@@ -71,21 +71,21 @@ 
MediaHandlerFfmpeg::createMediaParser(std::auto_ptr<IOChannel> stream)
         assert(!parser.get());
     }
 
-       return parser;
+    return parser;
 }
 
-std::auto_ptr<VideoDecoder>
+std::unique_ptr<VideoDecoder>
 MediaHandlerFfmpeg::createVideoDecoder(const VideoInfo& info)
 {
-       std::auto_ptr<VideoDecoder> ret(new VideoDecoderFfmpeg(info));
+       std::unique_ptr<VideoDecoder> ret(new VideoDecoderFfmpeg(info));
        return ret;
 }
 
-std::auto_ptr<VideoConverter>
+std::unique_ptr<VideoConverter>
 MediaHandlerFfmpeg::createVideoConverter(ImgBuf::Type4CC srcFormat,
                                          ImgBuf::Type4CC dstFormat)
 {
-    std::auto_ptr<VideoConverter> converter;
+    std::unique_ptr<VideoConverter> converter;
 
     try
     {
@@ -101,11 +101,11 @@ MediaHandlerFfmpeg::createVideoConverter(ImgBuf::Type4CC 
srcFormat,
 }
 
 
-std::auto_ptr<AudioDecoder>
+std::unique_ptr<AudioDecoder>
 MediaHandlerFfmpeg::createAudioDecoder(const AudioInfo& info)
 {
 
-       std::auto_ptr<AudioDecoder> ret;
+       std::unique_ptr<AudioDecoder> ret;
 
     try {
         ret.reset(new AudioDecoderFfmpeg(info));
diff --git a/libmedia/ffmpeg/MediaHandlerFfmpeg.h 
b/libmedia/ffmpeg/MediaHandlerFfmpeg.h
index c231506..3c29cd3 100644
--- a/libmedia/ffmpeg/MediaHandlerFfmpeg.h
+++ b/libmedia/ffmpeg/MediaHandlerFfmpeg.h
@@ -47,17 +47,17 @@ public:
 
     std::string description() const;
 
-       virtual std::auto_ptr<MediaParser>
-        createMediaParser(std::auto_ptr<IOChannel> stream);
+       virtual std::unique_ptr<MediaParser>
+        createMediaParser(std::unique_ptr<IOChannel> stream);
 
-       virtual std::auto_ptr<VideoDecoder>
+       virtual std::unique_ptr<VideoDecoder>
         createVideoDecoder(const VideoInfo& info);
        
-       virtual std::auto_ptr<VideoConverter>
+       virtual std::unique_ptr<VideoConverter>
                createVideoConverter(ImgBuf::Type4CC srcFormat,
                 ImgBuf::Type4CC dstFormat);
 
-       virtual std::auto_ptr<AudioDecoder>
+       virtual std::unique_ptr<AudioDecoder>
         createAudioDecoder(const AudioInfo& info);
 
     virtual size_t getInputPaddingSize() const;
diff --git a/libmedia/ffmpeg/MediaParserFfmpeg.cpp 
b/libmedia/ffmpeg/MediaParserFfmpeg.cpp
index ee92988..e668df4 100644
--- a/libmedia/ffmpeg/MediaParserFfmpeg.cpp
+++ b/libmedia/ffmpeg/MediaParserFfmpeg.cpp
@@ -174,9 +174,9 @@ MediaParserFfmpeg::parseVideoFrame(AVPacket& packet)
        size_t allocSize = packet.size*2;
        boost::uint8_t* data = new boost::uint8_t[allocSize];
        std::copy(packet.data, packet.data+packet.size, data);
-       std::auto_ptr<EncodedVideoFrame> frame(new EncodedVideoFrame(data, 
packet.size, 0, timestamp));
+       std::unique_ptr<EncodedVideoFrame> frame(new EncodedVideoFrame(data, 
packet.size, 0, timestamp));
 
-       pushEncodedVideoFrame(frame);
+       pushEncodedVideoFrame(std::move(frame));
 
        return true;
 #endif
@@ -215,7 +215,7 @@ MediaParserFfmpeg::parseAudioFrame(AVPacket& packet)
        boost::uint64_t timestamp = static_cast<boost::uint64_t>(dts * 
as_double(_audioStream->time_base) * 1000.0); 
     //log_debug("On getting audio frame with timestamp %d, duration is %d", 
timestamp, _audioStream->duration);
 
-       std::auto_ptr<EncodedAudioFrame> frame ( new EncodedAudioFrame );
+       std::unique_ptr<EncodedAudioFrame> frame ( new EncodedAudioFrame );
 
        // TODO: FIXME: *2 is an hack to avoid libavcodec reading past end of 
allocated space
        //       we might do proper padding or (better) avoid the copy as a 
whole by making
@@ -228,7 +228,7 @@ MediaParserFfmpeg::parseAudioFrame(AVPacket& packet)
        frame->dataSize = packet.size;
        frame->timestamp = timestamp;
 
-       pushEncodedAudioFrame(frame); 
+       pushEncodedAudioFrame(std::move(frame)); 
 
        return true;
 }
@@ -320,9 +320,9 @@ MediaParserFfmpeg::getBytesLoaded() const
        return _lastParsedPosition;
 }
 
-MediaParserFfmpeg::MediaParserFfmpeg(std::auto_ptr<IOChannel> stream)
+MediaParserFfmpeg::MediaParserFfmpeg(std::unique_ptr<IOChannel> stream)
        :
-       MediaParser(stream),
+       MediaParser(std::move(stream)),
        _nextVideoFrame(0),
        _nextAudioFrame(0),
        _inputFmt(0),
diff --git a/libmedia/ffmpeg/MediaParserFfmpeg.h 
b/libmedia/ffmpeg/MediaParserFfmpeg.h
index a14cfb6..8abeb67 100644
--- a/libmedia/ffmpeg/MediaParserFfmpeg.h
+++ b/libmedia/ffmpeg/MediaParserFfmpeg.h
@@ -80,7 +80,7 @@ public:
        //
        /// Can throw a GnashException if input format couldn't be detected
        ///
-       MediaParserFfmpeg(std::auto_ptr<IOChannel> stream);
+       MediaParserFfmpeg(std::unique_ptr<IOChannel> stream);
 
        ~MediaParserFfmpeg();
 
diff --git a/libmedia/ffmpeg/VideoConverterFfmpeg.cpp 
b/libmedia/ffmpeg/VideoConverterFfmpeg.cpp
index 5247ce3..bdd038f 100644
--- a/libmedia/ffmpeg/VideoConverterFfmpeg.cpp
+++ b/libmedia/ffmpeg/VideoConverterFfmpeg.cpp
@@ -130,10 +130,10 @@ VideoConverterFfmpeg::~VideoConverterFfmpeg()
 }
 
 
-std::auto_ptr<ImgBuf>
+std::unique_ptr<ImgBuf>
 VideoConverterFfmpeg::convert(const ImgBuf& src)
 {
-    std::auto_ptr<ImgBuf> ret;    
+    std::unique_ptr<ImgBuf> ret;    
     
     const int width = src.width;
     const int height = src.height;
diff --git a/libmedia/ffmpeg/VideoConverterFfmpeg.h 
b/libmedia/ffmpeg/VideoConverterFfmpeg.h
index 9714f5b..dc4ca64 100644
--- a/libmedia/ffmpeg/VideoConverterFfmpeg.h
+++ b/libmedia/ffmpeg/VideoConverterFfmpeg.h
@@ -35,12 +35,12 @@ public:
     
     ~VideoConverterFfmpeg();
 
-    std::auto_ptr<ImgBuf> convert(const ImgBuf& src);
+    std::unique_ptr<ImgBuf> convert(const ImgBuf& src);
   
 private:
 
 #if HAVE_SWSCALE_H
-    std::auto_ptr<SwsContextWrapper> _swsContext;
+    std::unique_ptr<SwsContextWrapper> _swsContext;
 #endif
 };
 
diff --git a/libmedia/ffmpeg/VideoDecoderFfmpeg.cpp 
b/libmedia/ffmpeg/VideoDecoderFfmpeg.cpp
index 1150dbb..24edf53 100644
--- a/libmedia/ffmpeg/VideoDecoderFfmpeg.cpp
+++ b/libmedia/ffmpeg/VideoDecoderFfmpeg.cpp
@@ -255,7 +255,7 @@ VideoDecoderFfmpeg::height() const
     return _videoCodecCtx->getContext()->height;
 }
 
-std::auto_ptr<image::GnashImage>
+std::unique_ptr<image::GnashImage>
 VideoDecoderFfmpeg::frameToImage(AVCodecContext* srcCtx,
                                  const AVFrame& srcFrameRef)
 {
@@ -272,7 +272,7 @@ VideoDecoderFfmpeg::frameToImage(AVCodecContext* srcCtx,
     PixelFormat pixFmt = PIX_FMT_RGB24;
 #endif 
 
-    std::auto_ptr<image::GnashImage> im;
+    std::unique_ptr<image::GnashImage> im;
 
 #ifdef HAVE_VA_VA_H
     VaapiContextFfmpeg * const vactx = get_vaapi_context(srcCtx);
@@ -358,7 +358,7 @@ VideoDecoderFfmpeg::frameToImage(AVCodecContext* srcCtx,
 
 }
 
-std::auto_ptr<image::GnashImage>
+std::unique_ptr<image::GnashImage>
 VideoDecoderFfmpeg::decode(const boost::uint8_t* input,
         boost::uint32_t input_size)
 {
@@ -366,7 +366,7 @@ VideoDecoderFfmpeg::decode(const boost::uint8_t* input,
     // do anything anyway.
     assert(_videoCodecCtx.get());
 
-    std::auto_ptr<image::GnashImage> ret;
+    std::unique_ptr<image::GnashImage> ret;
 
     AVFrame* frame = FRAMEALLOC();
     if ( ! frame ) {
@@ -408,10 +408,10 @@ VideoDecoderFfmpeg::push(const EncodedVideoFrame& buffer)
     _video_frames.push_back(&buffer);
 }
 
-std::auto_ptr<image::GnashImage>
+std::unique_ptr<image::GnashImage>
 VideoDecoderFfmpeg::pop()
 {
-    std::auto_ptr<image::GnashImage> ret;
+    std::unique_ptr<image::GnashImage> ret;
 
     for (std::vector<const EncodedVideoFrame*>::iterator it =
              _video_frames.begin(), end = _video_frames.end(); it != end; 
++it) {
diff --git a/libmedia/ffmpeg/VideoDecoderFfmpeg.h 
b/libmedia/ffmpeg/VideoDecoderFfmpeg.h
index d471a6d..4b15f0e 100644
--- a/libmedia/ffmpeg/VideoDecoderFfmpeg.h
+++ b/libmedia/ffmpeg/VideoDecoderFfmpeg.h
@@ -55,7 +55,7 @@ public:
     
     void push(const EncodedVideoFrame& buffer);
 
-    std::auto_ptr<image::GnashImage> pop();
+    std::unique_ptr<image::GnashImage> pop();
     
     bool peek();
 
@@ -80,22 +80,22 @@ private:
     ///         caller owns that pointer, which must be freed with delete [].
     ///         It is advised to wrap the pointer in a boost::scoped_array.
     ///         If conversion fails, AVPicture::data[0] will be NULL.
-    std::auto_ptr<image::GnashImage> frameToImage(AVCodecContext* srcCtx,
+    std::unique_ptr<image::GnashImage> frameToImage(AVCodecContext* srcCtx,
             const AVFrame& srcFrame);
 
     void init(enum CODECID format, int width, int height,
             boost::uint8_t* extradata=0, int extradataSize=0);
 
-    std::auto_ptr<image::GnashImage> decode(const boost::uint8_t* input,
+    std::unique_ptr<image::GnashImage> decode(const boost::uint8_t* input,
             boost::uint32_t input_size);
 
-    std::auto_ptr<image::GnashImage> decode(const EncodedVideoFrame* vf)
+    std::unique_ptr<image::GnashImage> decode(const EncodedVideoFrame* vf)
     {
        return decode(vf->data(), vf->dataSize());
     }
 
     AVCodec* _videoCodec;
-    std::auto_ptr<CodecContextWrapper> _videoCodecCtx;
+    std::unique_ptr<CodecContextWrapper> _videoCodecCtx;
 
 #if HAVE_SWSCALE_H
     /// A pointer to a wrapper round an SwsContext
@@ -104,7 +104,7 @@ private:
     /// can be NULL, so it is important to check
     /// not only that the wrapper exists, but also
     /// the context inside it.    
-    std::auto_ptr<SwsContextWrapper> _swsContext;
+    std::unique_ptr<SwsContextWrapper> _swsContext;
 #endif
 
     std::vector<const EncodedVideoFrame*> _video_frames;
diff --git a/libmedia/gst/MediaHandlerGst.cpp b/libmedia/gst/MediaHandlerGst.cpp
index 3c888bb..90e0589 100644
--- a/libmedia/gst/MediaHandlerGst.cpp
+++ b/libmedia/gst/MediaHandlerGst.cpp
@@ -53,20 +53,20 @@ MediaHandlerGst::description() const
     return s.str();
 }
 
-std::auto_ptr<MediaParser>
-MediaHandlerGst::createMediaParser(std::auto_ptr<IOChannel> stream)
+std::unique_ptr<MediaParser>
+MediaHandlerGst::createMediaParser(std::unique_ptr<IOChannel> stream)
 {
-    std::auto_ptr<MediaParser> parser;
+    std::unique_ptr<MediaParser> parser;
 
     try
     {
         if (isFLV(*stream))
         {
-            parser.reset(new FLVParser(stream));
+            parser.reset(new FLVParser(std::move(stream)));
         }
         else
         {
-            parser.reset(new MediaParserGst(stream));
+            parser.reset(new MediaParserGst(std::move(stream)));
         }
     }
     catch (GnashException& ex)
@@ -79,7 +79,7 @@ MediaHandlerGst::createMediaParser(std::auto_ptr<IOChannel> 
stream)
     return parser;
 }
 
-std::auto_ptr<VideoDecoder>
+std::unique_ptr<VideoDecoder>
 MediaHandlerGst::createVideoDecoder(const VideoInfo& info)
 {
     if (info.type != CODEC_TYPE_FLASH) {
@@ -88,9 +88,9 @@ MediaHandlerGst::createVideoDecoder(const VideoInfo& info)
 
         if (!extrainfo) {
             log_error(_("Wrong arguments given to GST VideoDecoder"));
-            return std::auto_ptr<VideoDecoder>();
+            return std::unique_ptr<VideoDecoder>();
         }
-        return std::auto_ptr<VideoDecoder>(
+        return std::unique_ptr<VideoDecoder>(
             new VideoDecoderGst(extrainfo->caps));
     }
     videoCodecType format = static_cast<videoCodecType>(info.codec);
@@ -106,14 +106,14 @@ MediaHandlerGst::createVideoDecoder(const VideoInfo& info)
         datasize = extrainfo->size;
     }
 
-    std::auto_ptr<VideoDecoder> ret( new VideoDecoderGst(format, width, 
height, extradata, datasize) );
+    std::unique_ptr<VideoDecoder> ret( new VideoDecoderGst(format, width, 
height, extradata, datasize) );
     return ret;
 }
 
-std::auto_ptr<AudioDecoder>
+std::unique_ptr<AudioDecoder>
 MediaHandlerGst::createAudioDecoder(const AudioInfo& info)
 {
-    std::auto_ptr<AudioDecoder> ret;
+    std::unique_ptr<AudioDecoder> ret;
 
 #ifdef DECODING_SPEEX
     if (info.codec == AUDIO_CODEC_SPEEX) {
@@ -145,10 +145,10 @@ MediaHandlerGst::createAudioDecoder(const AudioInfo& info)
     return ret;
 }
 
-std::auto_ptr<VideoConverter>
+std::unique_ptr<VideoConverter>
 MediaHandlerGst::createVideoConverter(ImgBuf::Type4CC srcFormat, 
ImgBuf::Type4CC dstFormat)
 {
-    std::auto_ptr<VideoConverter> converter;
+    std::unique_ptr<VideoConverter> converter;
 
     try
     {
diff --git a/libmedia/gst/MediaHandlerGst.h b/libmedia/gst/MediaHandlerGst.h
index c03e0df..85e2fd0 100644
--- a/libmedia/gst/MediaHandlerGst.h
+++ b/libmedia/gst/MediaHandlerGst.h
@@ -45,16 +45,16 @@ public:
 
     virtual std::string description() const;
 
-       virtual std::auto_ptr<MediaParser>
-        createMediaParser(std::auto_ptr<IOChannel> stream);
+       virtual std::unique_ptr<MediaParser>
+        createMediaParser(std::unique_ptr<IOChannel> stream);
 
-       virtual std::auto_ptr<VideoDecoder>
+       virtual std::unique_ptr<VideoDecoder>
         createVideoDecoder(const VideoInfo& info);
 
-       virtual std::auto_ptr<AudioDecoder>
+       virtual std::unique_ptr<AudioDecoder>
         createAudioDecoder(const AudioInfo& info);
        
-       virtual std::auto_ptr<VideoConverter>
+       virtual std::unique_ptr<VideoConverter>
         createVideoConverter(ImgBuf::Type4CC srcFormat,
                 ImgBuf::Type4CC dstFormat);
     
diff --git a/libmedia/gst/MediaParserGst.cpp b/libmedia/gst/MediaParserGst.cpp
index be34921..3a4e5cc 100644
--- a/libmedia/gst/MediaParserGst.cpp
+++ b/libmedia/gst/MediaParserGst.cpp
@@ -38,8 +38,8 @@ namespace media {
 namespace gst {
 
 
-MediaParserGst::MediaParserGst(std::auto_ptr<IOChannel> stream)
-    : MediaParser(stream),
+MediaParserGst::MediaParserGst(std::unique_ptr<IOChannel> stream)
+    : MediaParser(std::move(stream)),
       _bin(NULL),
       _srcpad(NULL),
       _audiosink(NULL),
@@ -197,13 +197,13 @@ MediaParserGst::emitEncodedFrames()
 
     while (!_enc_audio_frames.empty()) {
         EncodedAudioFrame* frame = _enc_audio_frames.front();
-        pushEncodedAudioFrame(std::auto_ptr<EncodedAudioFrame>(frame));
+        pushEncodedAudioFrame(std::unique_ptr<EncodedAudioFrame>(frame));
        _enc_audio_frames.pop_front();
     }
     
     while (!_enc_video_frames.empty()) {
         EncodedVideoFrame* frame = _enc_video_frames.front();
-        pushEncodedVideoFrame(std::auto_ptr<EncodedVideoFrame>(frame));
+        pushEncodedVideoFrame(std::unique_ptr<EncodedVideoFrame>(frame));
        _enc_video_frames.pop_front();
     }
 
diff --git a/libmedia/gst/MediaParserGst.h b/libmedia/gst/MediaParserGst.h
index a6e47d5..eb507ce 100644
--- a/libmedia/gst/MediaParserGst.h
+++ b/libmedia/gst/MediaParserGst.h
@@ -109,7 +109,7 @@ public:
     //
     /// Can throw a MediaException if input format couldn't be detected
     ///
-    MediaParserGst(std::auto_ptr<IOChannel> stream);
+    MediaParserGst(std::unique_ptr<IOChannel> stream);
 
     ~MediaParserGst();
 
diff --git a/libmedia/gst/VideoConverterGst.cpp 
b/libmedia/gst/VideoConverterGst.cpp
index d165b13..b2cacc5 100644
--- a/libmedia/gst/VideoConverterGst.cpp
+++ b/libmedia/gst/VideoConverterGst.cpp
@@ -122,10 +122,10 @@ VideoConverterGst::~VideoConverterGst()
     }
 }
 
-std::auto_ptr<ImgBuf>
+std::unique_ptr<ImgBuf>
 VideoConverterGst::convert(const ImgBuf& src)
 {
-    std::auto_ptr<ImgBuf> ret;
+    std::unique_ptr<ImgBuf> ret;
     
     if (!init(src)) {
         return ret;  
diff --git a/libmedia/gst/VideoConverterGst.h b/libmedia/gst/VideoConverterGst.h
index 2b63725..e4e0f7e 100644
--- a/libmedia/gst/VideoConverterGst.h
+++ b/libmedia/gst/VideoConverterGst.h
@@ -38,7 +38,7 @@ public:
     
     ~VideoConverterGst();
   
-    std::auto_ptr<ImgBuf> convert(const ImgBuf& src);
+    std::unique_ptr<ImgBuf> convert(const ImgBuf& src);
     
     bool init(const ImgBuf& src);
   
diff --git a/libmedia/gst/VideoDecoderGst.cpp b/libmedia/gst/VideoDecoderGst.cpp
index 6f2bca3..02b693f 100644
--- a/libmedia/gst/VideoDecoderGst.cpp
+++ b/libmedia/gst/VideoDecoderGst.cpp
@@ -191,13 +191,13 @@ VideoDecoderGst::push(const EncodedVideoFrame& frame)
 }
   
 
-std::auto_ptr<image::GnashImage>
+std::unique_ptr<image::GnashImage>
 VideoDecoderGst::pop()
 {
     GstBuffer * buffer = swfdec_gst_decoder_pull (&_decoder);
 
     if (!buffer) {
-        return std::auto_ptr<image::GnashImage>();
+        return std::unique_ptr<image::GnashImage>();
     }
   
     GstCaps* caps = gst_buffer_get_caps(buffer);
@@ -211,7 +211,7 @@ VideoDecoderGst::pop()
 
     gst_caps_unref(caps);
   
-    std::auto_ptr<image::GnashImage> ret(new gnashGstBuffer(buffer, _width, 
_height));
+    std::unique_ptr<image::GnashImage> ret(new gnashGstBuffer(buffer, _width, 
_height));
   
     return ret;
 }
diff --git a/libmedia/gst/VideoDecoderGst.h b/libmedia/gst/VideoDecoderGst.h
index 76759a4..f63d6bb 100644
--- a/libmedia/gst/VideoDecoderGst.h
+++ b/libmedia/gst/VideoDecoderGst.h
@@ -36,7 +36,7 @@ namespace gnash {
 namespace media {
 namespace gst {
 
-// Convenience wrapper for GstBuffer. Intended to be wrapped in an auto_ptr.
+// Convenience wrapper for GstBuffer. Intended to be wrapped in an unique_ptr.
 class gnashGstBuffer : public image::ImageRGB
 {
 public:
@@ -80,7 +80,7 @@ public:
 
     void push(const EncodedVideoFrame& buffer);
 
-    std::auto_ptr<image::GnashImage> pop();
+    std::unique_ptr<image::GnashImage> pop();
   
     bool peek();
 
diff --git a/libmedia/haiku/MediaHandlerHaiku.cpp 
b/libmedia/haiku/MediaHandlerHaiku.cpp
index ca1d939..4172cad 100644
--- a/libmedia/haiku/MediaHandlerHaiku.cpp
+++ b/libmedia/haiku/MediaHandlerHaiku.cpp
@@ -40,10 +40,10 @@ namespace media {
 namespace haiku {
 
 
-std::auto_ptr<MediaParser>
-MediaHandlerHaiku::createMediaParser(std::auto_ptr<IOChannel> stream)
+std::unique_ptr<MediaParser>
+MediaHandlerHaiku::createMediaParser(std::unique_ptr<IOChannel> stream)
 {
-       std::auto_ptr<MediaParser> parser;
+       std::unique_ptr<MediaParser> parser;
 
     try {
         if (isFLV(*stream))
@@ -65,18 +65,18 @@ 
MediaHandlerHaiku::createMediaParser(std::auto_ptr<IOChannel> stream)
        return parser;
 }
 
-std::auto_ptr<VideoDecoder>
+std::unique_ptr<VideoDecoder>
 MediaHandlerHaiku::createVideoDecoder(const VideoInfo& info)
 {
-       std::auto_ptr<VideoDecoder> ret(new VideoDecoderHaiku(info));
+       std::unique_ptr<VideoDecoder> ret(new VideoDecoderHaiku(info));
        return ret;
 }
 
-std::auto_ptr<VideoConverter>
+std::unique_ptr<VideoConverter>
 MediaHandlerHaiku::createVideoConverter(ImgBuf::Type4CC srcFormat,
                                          ImgBuf::Type4CC dstFormat)
 {
-    std::auto_ptr<VideoConverter> converter;
+    std::unique_ptr<VideoConverter> converter;
 
     try
     {
@@ -92,10 +92,10 @@ MediaHandlerHaiku::createVideoConverter(ImgBuf::Type4CC 
srcFormat,
 }
 
 
-std::auto_ptr<AudioDecoder>
+std::unique_ptr<AudioDecoder>
 MediaHandlerHaiku::createAudioDecoder(const AudioInfo& info)
 {
-       std::auto_ptr<AudioDecoder> ret;
+       std::unique_ptr<AudioDecoder> ret;
 
     try
     {
diff --git a/libmedia/haiku/MediaHandlerHaiku.h 
b/libmedia/haiku/MediaHandlerHaiku.h
index 603dd28..54eefe1 100644
--- a/libmedia/haiku/MediaHandlerHaiku.h
+++ b/libmedia/haiku/MediaHandlerHaiku.h
@@ -48,17 +48,17 @@ public:
         return "Haiku Media Handler";
     }
 
-       virtual std::auto_ptr<MediaParser>
-        createMediaParser(std::auto_ptr<IOChannel> stream);
+       virtual std::unique_ptr<MediaParser>
+        createMediaParser(std::shared_ptr<IOChannel> stream);
 
-       virtual std::auto_ptr<VideoDecoder>
+       virtual std::unique_ptr<VideoDecoder>
         createVideoDecoder(const VideoInfo& info);
        
-       virtual std::auto_ptr<VideoConverter>
+       virtual std::unique_ptr<VideoConverter>
                createVideoConverter(ImgBuf::Type4CC srcFormat,
                 ImgBuf::Type4CC dstFormat);
 
-       virtual std::auto_ptr<AudioDecoder>
+       virtual std::unique_ptr<AudioDecoder>
         createAudioDecoder(const AudioInfo& info);
 
 //    virtual size_t getInputPaddingSize() const;
diff --git a/libmedia/haiku/MediaParserHaiku.cpp 
b/libmedia/haiku/MediaParserHaiku.cpp
index f0bad4b..ea5e89a 100644
--- a/libmedia/haiku/MediaParserHaiku.cpp
+++ b/libmedia/haiku/MediaParserHaiku.cpp
@@ -36,7 +36,7 @@ namespace gnash {
 namespace media {
 namespace haiku {
 
-MediaParserHaiku::MediaParserHaiku(std::auto_ptr<IOChannel> stream)
+MediaParserHaiku::MediaParserHaiku(std::unique_ptr<IOChannel> stream)
     : MediaParser(stream)
 {
     QQ(2);
diff --git a/libmedia/haiku/MediaParserHaiku.h 
b/libmedia/haiku/MediaParserHaiku.h
index 3a301f3..92093d0 100644
--- a/libmedia/haiku/MediaParserHaiku.h
+++ b/libmedia/haiku/MediaParserHaiku.h
@@ -43,7 +43,7 @@ public:
        //
        /// Can throw a GnashException if input format couldn't be detected
        ///
-       MediaParserHaiku(std::auto_ptr<IOChannel> stream);
+       MediaParserHaiku(std::shared_ptr<IOChannel> stream);
 
        ~MediaParserHaiku();
 
diff --git a/libmedia/haiku/VideoConverterHaiku.cpp 
b/libmedia/haiku/VideoConverterHaiku.cpp
index 47ecd6b..eba69e6 100644
--- a/libmedia/haiku/VideoConverterHaiku.cpp
+++ b/libmedia/haiku/VideoConverterHaiku.cpp
@@ -41,7 +41,7 @@ VideoConverterHaiku::~VideoConverterHaiku()
     QQ(2);
 }
 
-std::auto_ptr<ImgBuf>
+std::unique_ptr<ImgBuf>
 VideoConverterHaiku::convert(const ImgBuf& src)
 {
     QQ(2);
diff --git a/libmedia/haiku/VideoConverterHaiku.h 
b/libmedia/haiku/VideoConverterHaiku.h
index f142944..3d75fb3 100644
--- a/libmedia/haiku/VideoConverterHaiku.h
+++ b/libmedia/haiku/VideoConverterHaiku.h
@@ -37,7 +37,7 @@ public:
     
     ~VideoConverterHaiku();
   
-    std::auto_ptr<ImgBuf> convert(const ImgBuf& src);
+    std::unique_ptr<ImgBuf> convert(const ImgBuf& src);
 };
 
 } // gnash.media.haiku namespace
diff --git a/libmedia/haiku/VideoDecoderHaiku.cpp 
b/libmedia/haiku/VideoDecoderHaiku.cpp
index 9e37328..a49a986 100644
--- a/libmedia/haiku/VideoDecoderHaiku.cpp
+++ b/libmedia/haiku/VideoDecoderHaiku.cpp
@@ -59,10 +59,10 @@ VideoDecoderHaiku::push(const EncodedVideoFrame& frame)
 }
   
 
-std::auto_ptr<GnashImage>
+std::unique_ptr<GnashImage>
 VideoDecoderHaiku::pop()
 {
-    std::auto_ptr<GnashImage> ret;
+    std::unique_ptr<GnashImage> ret;
     ret.reset(new ImageRGB(100, 100));
     boost::uint8_t *d =
         new boost::uint8_t[100*100*4];
diff --git a/libmedia/haiku/VideoDecoderHaiku.h 
b/libmedia/haiku/VideoDecoderHaiku.h
index 32f8d30..9462225 100644
--- a/libmedia/haiku/VideoDecoderHaiku.h
+++ b/libmedia/haiku/VideoDecoderHaiku.h
@@ -47,7 +47,7 @@ public:
 
     void push(const EncodedVideoFrame& buffer);
 
-    std::auto_ptr<GnashImage> pop();
+    std::unique_ptr<GnashImage> pop();
   
     bool peek();
 
diff --git a/librender/Renderer.h b/librender/Renderer.h
index f7ee0b2..0f3d1e8 100644
--- a/librender/Renderer.h
+++ b/librender/Renderer.h
@@ -221,7 +221,7 @@ public:
     /// that can later be passed to FillStyleX_bitmap(), to set a
     /// bitmap fill style.
     virtual CachedBitmap *
-        createCachedBitmap(std::auto_ptr<image::GnashImage> im) = 0;
+        createCachedBitmap(std::unique_ptr<image::GnashImage> im) = 0;
 
 
     /// ==================================================================
@@ -315,7 +315,7 @@ public:
     /// @param type     The type of image output required (PNG, JPEG, GIF).
     ///                 Note that not all FileTypes are images: rendering
     ///                 to an FLV will not work.
-    virtual void renderToImage(boost::shared_ptr<IOChannel> /*io*/,
+    virtual void renderToImage(std::unique_ptr<IOChannel> /*io*/,
         FileType /*type*/, int /*quality*/) const {
 
         log_debug(_("Rendering to image not implemented for this "
diff --git a/librender/agg/Renderer_agg.cpp b/librender/agg/Renderer_agg.cpp
index 12b4142..ed4d0bf 100644
--- a/librender/agg/Renderer_agg.cpp
+++ b/librender/agg/Renderer_agg.cpp
@@ -687,9 +687,9 @@ public:
     // Given an image, returns a pointer to a bitmap_info class
     // that can later be passed to FillStyleX_bitmap(), to set a
     // bitmap fill style.
-    gnash::CachedBitmap* createCachedBitmap(std::auto_ptr<image::GnashImage> 
im)
+    gnash::CachedBitmap* createCachedBitmap(std::unique_ptr<image::GnashImage> 
im)
     {        
-        return new agg_bitmap_info(im);
+        return new agg_bitmap_info(std::move(im));
     }
 
     virtual void renderToImage(boost::shared_ptr<IOChannel> io,
@@ -874,7 +874,7 @@ public:
  
     virtual Renderer* startInternalRender(image::GnashImage& im) {
     
-        std::auto_ptr<Renderer_agg_base> in;
+        std::unique_ptr<Renderer_agg_base> in;
     
         switch (im.type()) {
             case image::TYPE_RGB:
@@ -2022,7 +2022,7 @@ private:  // private variables
 
     agg::rendering_buffer m_rbuf;  
 
-    std::auto_ptr<PixelFormat> m_pixf;
+    std::unique_ptr<PixelFormat> m_pixf;
 
     /// clipping rectangle
     ClipBounds _clipbounds;
diff --git a/librender/agg/Renderer_agg_bitmap.h 
b/librender/agg/Renderer_agg_bitmap.h
index a8fbc35..cfb6508 100644
--- a/librender/agg/Renderer_agg_bitmap.h
+++ b/librender/agg/Renderer_agg_bitmap.h
@@ -32,7 +32,7 @@ class agg_bitmap_info : public CachedBitmap
 {
 public:
   
-    agg_bitmap_info(std::auto_ptr<image::GnashImage> im)
+    agg_bitmap_info(std::unique_ptr<image::GnashImage> im)
         :
         _image(im.release()),
         _bpp(_image->type() == image::TYPE_RGB ? 24 : 32)
diff --git a/librender/cairo/Renderer_cairo.cpp 
b/librender/cairo/Renderer_cairo.cpp
index c597dd4..4dc0789 100644
--- a/librender/cairo/Renderer_cairo.cpp
+++ b/librender/cairo/Renderer_cairo.cpp
@@ -461,7 +461,7 @@ Renderer_cairo::~Renderer_cairo()
 }
 
 CachedBitmap*
-Renderer_cairo::createCachedBitmap(std::auto_ptr<image::GnashImage> im) 
+Renderer_cairo::createCachedBitmap(std::unique_ptr<image::GnashImage> im) 
 {
     int buf_size = im->width() * im->height() * 4;
     boost::uint8_t* buffer = new boost::uint8_t[buf_size];
diff --git a/librender/cairo/Renderer_cairo.h b/librender/cairo/Renderer_cairo.h
index 4dca89a..c601271 100644
--- a/librender/cairo/Renderer_cairo.h
+++ b/librender/cairo/Renderer_cairo.h
@@ -45,7 +45,7 @@ public:
 
     std::string description() const { return "Cairo"; }
 
-    CachedBitmap* createCachedBitmap(std::auto_ptr<image::GnashImage> im);
+    CachedBitmap* createCachedBitmap(std::unique_ptr<image::GnashImage> im);
 
     void drawVideoFrame(image::GnashImage* baseframe, const Transform& xform,
                                 const SWFRect* bounds, bool smooth);
diff --git a/librender/opengl/Renderer_ogl.cpp 
b/librender/opengl/Renderer_ogl.cpp
index 652ee6e..86c5b16 100644
--- a/librender/opengl/Renderer_ogl.cpp
+++ b/librender/opengl/Renderer_ogl.cpp
@@ -127,7 +127,7 @@ public:
       WRAP_CLAMP
     };
 
-    bitmap_info_ogl(std::auto_ptr<image::GnashImage> image, GLenum pixelformat,
+    bitmap_info_ogl(std::unique_ptr<image::GnashImage> image, GLenum 
pixelformat,
                     bool ogl_accessible);
 
     ~bitmap_info_ogl();
@@ -540,7 +540,7 @@ bool isEven(const size_t& n)
   return n % 2 == 0;
 }
 
-bitmap_info_ogl::bitmap_info_ogl(std::auto_ptr<image::GnashImage> image,
+bitmap_info_ogl::bitmap_info_ogl(std::unique_ptr<image::GnashImage> image,
         GLenum pixelformat, bool ogl_accessible)
 :
   _img(image.release()),
@@ -760,12 +760,12 @@ public:
 #endif
   }    
 
-  virtual CachedBitmap* createCachedBitmap(std::auto_ptr<image::GnashImage> im)
+  virtual CachedBitmap* createCachedBitmap(std::unique_ptr<image::GnashImage> 
im)
   {
       switch (im->type()) {
           case image::TYPE_RGB:
           {
-              std::auto_ptr<image::GnashImage> rgba(
+              std::unique_ptr<image::GnashImage> rgba(
                       new image::ImageRGBA(im->width(), im->height()));
 
               image::GnashImage::iterator it = rgba->begin();
@@ -1842,7 +1842,7 @@ private:
   std::list< boost::shared_ptr<GnashTexture> > _cached_textures;
   
 #ifdef OSMESA_TESTING
-  std::auto_ptr<OSRenderMesa> _offscreen;
+  std::unique_ptr<OSRenderMesa> _offscreen;
 #endif
 }; // class Renderer_ogl
   
@@ -1908,7 +1908,7 @@ sampleGradient(const GradientFill& fill, boost::uint8_t 
ratio)
 const CachedBitmap*
 createGradientBitmap(const GradientFill& gf, Renderer& renderer)
 {
-    std::auto_ptr<image::ImageRGBA> im;
+    std::unique_ptr<image::ImageRGBA> im;
 
     switch (gf.type())
     {
@@ -1951,7 +1951,7 @@ createGradientBitmap(const GradientFill& gf, Renderer& 
renderer)
     }
 
     const CachedBitmap* bi = renderer.createCachedBitmap(
-                    static_cast<std::auto_ptr<image::GnashImage> >(im));
+                    static_cast<std::unique_ptr<image::GnashImage> >(im));
 
     return bi;
 }
diff --git a/librender/opengles1/Renderer_gles1.cpp 
b/librender/opengles1/Renderer_gles1.cpp
index 47a0663..ffee0f7 100644
--- a/librender/opengles1/Renderer_gles1.cpp
+++ b/librender/opengles1/Renderer_gles1.cpp
@@ -108,7 +108,7 @@ Renderer_gles1::init(float /* x */, float /* y */)
 }
 
 CachedBitmap *
-Renderer_gles1::createCachedBitmap(std::auto_ptr<gnash::image::GnashImage>)
+Renderer_gles1::createCachedBitmap(std::unique_ptr<gnash::image::GnashImage>)
 {
     GNASH_REPORT_FUNCTION;
 
diff --git a/librender/opengles1/Renderer_gles1.h 
b/librender/opengles1/Renderer_gles1.h
index 9ca0488..203a1eb 100644
--- a/librender/opengles1/Renderer_gles1.h
+++ b/librender/opengles1/Renderer_gles1.h
@@ -120,7 +120,7 @@ private:
     void setup() const;    
     void upload(boost::uint8_t* data, size_t width, size_t height) const;
     
-    mutable std::auto_ptr<GnashImage> _img;
+    mutable std::unique_ptr<GnashImage> _img;
     GLenum _pixel_format;
     GLenum _ogl_img_type;
     mutable bool _ogl_accessible;  
@@ -139,7 +139,7 @@ public:
     ~Renderer_gles1();
         
     void init(float x, float y);
-    CachedBitmap *createCachedBitmap(std::auto_ptr<image::GnashImage> im);
+    CachedBitmap *createCachedBitmap(std::unique_ptr<image::GnashImage> im);
 
     void world_to_pixel(int& x, int& y, float world_x, float world_y) const;
     gnash::geometry::Range2d<int> world_to_pixel(const gnash::SWFRect& wb) 
const;
diff --git a/librender/openvg/OpenVGRenderer.cpp 
b/librender/openvg/OpenVGRenderer.cpp
index 8ad89aa..909a7da 100644
--- a/librender/openvg/OpenVGRenderer.cpp
+++ b/librender/openvg/OpenVGRenderer.cpp
@@ -298,7 +298,7 @@ Renderer_ovg::~Renderer_ovg()
 // bitmap fill style. We only cache the GnashImage here, as a
 // VGImage can't be created yet until the renderer is initialized.
 CachedBitmap *
-Renderer_ovg::createCachedBitmap(std::auto_ptr<image::GnashImage> im)
+Renderer_ovg::createCachedBitmap(std::unique_ptr<image::GnashImage> im)
 {
     // GNASH_REPORT_FUNCTION;
 
diff --git a/librender/openvg/OpenVGRenderer.h 
b/librender/openvg/OpenVGRenderer.h
index 535a73e..6257461 100644
--- a/librender/openvg/OpenVGRenderer.h
+++ b/librender/openvg/OpenVGRenderer.h
@@ -81,7 +81,7 @@ public:
     ~Renderer_ovg();
         
     void init(float x, float y);
-    CachedBitmap *createCachedBitmap(std::auto_ptr<image::GnashImage> im);
+    CachedBitmap *createCachedBitmap(std::unique_ptr<image::GnashImage> im);
 
     void drawVideoFrame(gnash::image::GnashImage*, const gnash::Transform&,
                         const gnash::SWFRect*, bool);
diff --git a/librender/testr.cpp b/librender/testr.cpp
index 986cb1e..8e437e5 100644
--- a/librender/testr.cpp
+++ b/librender/testr.cpp
@@ -376,7 +376,7 @@ test_renderer(Renderer *renderer, const std::string &type)
 #endif
     
     image::GnashImage *frame1 = new image::ImageRGBA(10, 12);
-    std::auto_ptr<image::GnashImage> im1(frame1);
+    std::unique_ptr<image::GnashImage> im1(frame1);
     CachedBitmap *cb = renderer->createCachedBitmap(im1);
     if (cb) {
         image::GnashImage &gi = cb->image();
@@ -472,7 +472,7 @@ test_renderer(Renderer *renderer, const std::string &type)
 //   drawglyph.stop();
 
 #if 0
-    boost::shared_ptr<IOChannel> io;
+    std::unique_ptr<IOChannel> io;
     FileType ftype;
     Timer renderi("renderToImage");
     renderer->renderToImage(io, ftype);
@@ -482,7 +482,7 @@ test_renderer(Renderer *renderer, const std::string &type)
 
     CachedBitmap *bitmap = 0;
     image::GnashImage *frame2 = new image::ImageRGBA(10, 10);
-    std::auto_ptr<image::GnashImage> im(frame2);
+    std::unique_ptr<image::GnashImage> im(frame2);
     Timer cbit("createCachedBitmap");
     bitmap = renderer->createCachedBitmap(im);
     cbit.stop();
@@ -600,7 +600,7 @@ test_iterators(Renderer *renderer, const std::string &type)
     image::GnashImage *frame = new image::ImageRGBA(10, 10);
     // gnash::GnashVaapiImage *foo = static_cast<gnash::GnashVaapiImage 
*>(frame);
     // gnash::GnashVaapiImageProxy *bar = new gnash::GnashVaapiImageProxy(foo, 
a.x, a.y, c.x - a.x, c.y - a.y);
-    std::auto_ptr<image::GnashImage> rgba(frame);
+    std::unique_ptr<image::GnashImage> rgba(frame);
 //    image.reset(new gnash::GnashVaapiImageProxy(foo, a.x, a.y, c.x - a.x, 
c.y - a.y));
 
     renderer->addRenderImage(image);
@@ -638,7 +638,7 @@ test_iterators(Renderer *renderer, const std::string &type)
 #if 0
 FIXME:
  add tests for
-Renderer_ovg::createBitmapInfo(std::auto_ptr<GnashImage> im)
+Renderer_ovg::createBitmapInfo(std::unique_ptr<GnashImage> im)
 #endif
 
 // Local Variables:
diff --git a/libsound/EmbedSound.cpp b/libsound/EmbedSound.cpp
index 9f18ba0..afd581f 100644
--- a/libsound/EmbedSound.cpp
+++ b/libsound/EmbedSound.cpp
@@ -32,7 +32,7 @@
 namespace gnash {
 namespace sound {
 
-EmbedSound::EmbedSound(std::auto_ptr<SimpleBuffer> data,
+EmbedSound::EmbedSound(std::unique_ptr<SimpleBuffer> data,
         const media::SoundInfo& info, int nVolume)
     :
     soundinfo(info),
@@ -56,12 +56,12 @@ EmbedSound::eraseActiveSound(Instances::iterator i)
     return _soundInstances.erase(i);
 }
 
-std::auto_ptr<EmbedSoundInst>
+std::unique_ptr<EmbedSoundInst>
 EmbedSound::createInstance(media::MediaHandler& mh, unsigned int inPoint,
         unsigned int outPoint, const SoundEnvelopes* envelopes,
         int loopCount)
 {
-    std::auto_ptr<EmbedSoundInst> ret(
+    std::unique_ptr<EmbedSoundInst> ret(
         new EmbedSoundInst(*this, mh, inPoint, outPoint, envelopes, 
loopCount));
 
     boost::mutex::scoped_lock lock(_soundInstancesMutex);
diff --git a/libsound/EmbedSound.h b/libsound/EmbedSound.h
index 61a0890..8f421dc 100644
--- a/libsound/EmbedSound.h
+++ b/libsound/EmbedSound.h
@@ -21,7 +21,7 @@
 #define SOUND_EMBEDSOUND_H
 
 #include <vector>
-#include <memory> // for auto_ptr (composition)
+#include <memory> // for unique_ptr (composition)
 #include <cassert>
 #include <boost/thread/mutex.hpp>
 #include <boost/scoped_ptr.hpp>
@@ -59,7 +59,7 @@ public:
     /// @param data The encoded sound data.
     /// @param info encoding info
     /// @param volume initial volume (0..100). Optional, defaults to 100.
-    EmbedSound(std::auto_ptr<SimpleBuffer> data, const media::SoundInfo& info,
+    EmbedSound(std::unique_ptr<SimpleBuffer> data, const media::SoundInfo& 
info,
             int volume);
 
     ~EmbedSound();
@@ -136,7 +136,7 @@ public:
     ///     @todo document if every loop starts at secsOffset !
     /// Locks the _soundInstancesMutex when pushing to it
     ///
-    std::auto_ptr<EmbedSoundInst> createInstance(media::MediaHandler& mh,
+    std::unique_ptr<EmbedSoundInst> createInstance(media::MediaHandler& mh,
             unsigned int inPoint, unsigned int outPoint,
             const SoundEnvelopes* envelopes, int loopCount);
 
diff --git a/libsound/StreamingSoundData.cpp b/libsound/StreamingSoundData.cpp
index 34c16ba..b7b429f 100644
--- a/libsound/StreamingSoundData.cpp
+++ b/libsound/StreamingSoundData.cpp
@@ -35,11 +35,11 @@ namespace sound {
 
 
 size_t
-StreamingSoundData::append(std::auto_ptr<SimpleBuffer> data,
+StreamingSoundData::append(std::unique_ptr<SimpleBuffer> data,
         size_t sampleCount, int seekSamples)
 {
     assert(data.get());
-    _buffers.push_back(data);
+    _buffers.push_back(data.release());
     _blockData.push_back(BlockData(sampleCount, seekSamples));
     assert(_blockData.size() == _buffers.size());
     return _buffers.size() - 1;
@@ -74,10 +74,10 @@ StreamingSoundData::eraseActiveSound(Instances::iterator i)
     return _soundInstances.erase(i);
 }
 
-std::auto_ptr<StreamingSound>
+std::unique_ptr<StreamingSound>
 StreamingSoundData::createInstance(media::MediaHandler& mh, unsigned long 
block)
 {
-    std::auto_ptr<StreamingSound> ret(new StreamingSound(*this, mh, block));
+    std::unique_ptr<StreamingSound> ret(new StreamingSound(*this, mh, block));
 
     boost::mutex::scoped_lock lock(_soundInstancesMutex);
 
diff --git a/libsound/StreamingSoundData.h b/libsound/StreamingSoundData.h
index 6da7326..af1b1a5 100644
--- a/libsound/StreamingSoundData.h
+++ b/libsound/StreamingSoundData.h
@@ -68,7 +68,7 @@ public:
     ///                      padded (see MediaHandler::getInputPaddingBytes())
     /// @param sampleCount   The number of samples when decoded.
     /// @param seekSamples   Where to start playing from at a particular frame.
-    size_t append(std::auto_ptr<SimpleBuffer> data, size_t sampleCount,
+    size_t append(std::unique_ptr<SimpleBuffer> data, size_t sampleCount,
             int seekSamples);
 
     /// Do we have any data?
@@ -125,7 +125,7 @@ public:
     ///                         This refers to a specific StreamSoundBlock.
     ///                         @see gnash::swf::StreamSoundBlockTag
     /// Locks the _soundInstancesMutex when pushing to it
-    std::auto_ptr<StreamingSound> createInstance(media::MediaHandler& mh,
+    std::unique_ptr<StreamingSound> createInstance(media::MediaHandler& mh,
             unsigned long blockOffset);
 
     /// Drop all active sounds
diff --git a/libsound/aos4/sound_handler_ahi.cpp 
b/libsound/aos4/sound_handler_ahi.cpp
index 333e65e..5aea48e 100644
--- a/libsound/aos4/sound_handler_ahi.cpp
+++ b/libsound/aos4/sound_handler_ahi.cpp
@@ -185,8 +185,8 @@ AOS4_sound_handler::reset()
 }
 
 int
-AOS4_sound_handler::create_sound(std::auto_ptr<SimpleBuffer> data,
-                                std::auto_ptr<media::SoundInfo> sinfo)
+AOS4_sound_handler::create_sound(std::unique_ptr<SimpleBuffer> data,
+                                std::unique_ptr<media::SoundInfo> sinfo)
 {
     boost::mutex::scoped_lock lock(_mutex);
     return sound_handler::create_sound(data, sinfo);
@@ -394,7 +394,7 @@ AOS4_sound_handler::mix(boost::int16_t* outSamples, 
boost::int16_t* inSamples, u
 }
 
 void
-AOS4_sound_handler::plugInputStream(std::auto_ptr<InputStream> newStreamer)
+AOS4_sound_handler::plugInputStream(std::unique_ptr<InputStream> newStreamer)
 {
     boost::mutex::scoped_lock lock(_mutex);
 
diff --git a/libsound/aos4/sound_handler_ahi.h 
b/libsound/aos4/sound_handler_ahi.h
index 381d04f..5a84176 100644
--- a/libsound/aos4/sound_handler_ahi.h
+++ b/libsound/aos4/sound_handler_ahi.h
@@ -104,7 +104,7 @@ public:
     ~AOS4_sound_handler();
 
     // See dox in sound_handler.h
-    virtual int create_sound(std::auto_ptr<SimpleBuffer> data, 
std::auto_ptr<media::SoundInfo> sinfo);
+    virtual int create_sound(std::unique_ptr<SimpleBuffer> data, 
std::unique_ptr<media::SoundInfo> sinfo);
 
     // See dox in sound_handler.h
     // overridden to serialize access to the data buffer slot
@@ -162,7 +162,7 @@ public:
 
     // See dox in sound_handler.h
     // Overridden to unpause SDL audio
-    void plugInputStream(std::auto_ptr<InputStream> in);
+    void plugInputStream(std::unique_ptr<InputStream> in);
 
     // See dox in sound_handler.h
     void fetchSamples(boost::int16_t* to, unsigned int nSamples);
diff --git a/libsound/mkit/sound_handler_mkit.cpp 
b/libsound/mkit/sound_handler_mkit.cpp
index ddfb229..ca87319 100644
--- a/libsound/mkit/sound_handler_mkit.cpp
+++ b/libsound/mkit/sound_handler_mkit.cpp
@@ -153,8 +153,8 @@ Mkit_sound_handler::reset()
 }
 
 int
-Mkit_sound_handler::create_sound(std::auto_ptr<SimpleBuffer> data,
-                                std::auto_ptr<media::SoundInfo> sinfo)
+Mkit_sound_handler::create_sound(std::unique_ptr<SimpleBuffer> data,
+                                std::unique_ptr<media::SoundInfo> sinfo)
 {
     boost::mutex::scoped_lock lock(_mutex);
     return sound_handler::create_sound(data, sinfo);
@@ -294,7 +294,7 @@ Mkit_sound_handler::mix(boost::int16_t* outSamples, 
boost::int16_t* inSamples, u
 }
 
 void
-Mkit_sound_handler::plugInputStream(std::auto_ptr<InputStream> newStreamer)
+Mkit_sound_handler::plugInputStream(std::unique_ptr<InputStream> newStreamer)
 {
     boost::mutex::scoped_lock lock(_mutex);
 
diff --git a/libsound/mkit/sound_handler_mkit.h 
b/libsound/mkit/sound_handler_mkit.h
index fdcea45..21e5344 100644
--- a/libsound/mkit/sound_handler_mkit.h
+++ b/libsound/mkit/sound_handler_mkit.h
@@ -72,7 +72,7 @@ public:
     ~Mkit_sound_handler();
 
     // See dox in sound_handler.h
-    virtual int create_sound(std::auto_ptr<SimpleBuffer> data, 
std::auto_ptr<media::SoundInfo> sinfo);
+    virtual int create_sound(std::unique_ptr<SimpleBuffer> data, 
std::unique_ptr<media::SoundInfo> sinfo);
 
     // See dox in sound_handler.h
     // overridden to serialize access to the data buffer slot
@@ -130,7 +130,7 @@ public:
 
     // See dox in sound_handler.h
     // Overridden to unpause SDL audio
-    void plugInputStream(std::auto_ptr<InputStream> in);
+    void plugInputStream(std::unique_ptr<InputStream> in);
 
     // See dox in sound_handler.h
     void fetchSamples(boost::int16_t* to, unsigned int nSamples);
diff --git a/libsound/sdl/sound_handler_sdl.cpp 
b/libsound/sdl/sound_handler_sdl.cpp
index 8bd8c5a..a4324d5 100644
--- a/libsound/sdl/sound_handler_sdl.cpp
+++ b/libsound/sdl/sound_handler_sdl.cpp
@@ -141,20 +141,20 @@ SDL_sound_handler::createStreamingSound(const 
media::SoundInfo& sinfo)
 }
 
 int
-SDL_sound_handler::create_sound(std::auto_ptr<SimpleBuffer> data,
+SDL_sound_handler::create_sound(std::unique_ptr<SimpleBuffer> data,
                                 const media::SoundInfo& sinfo)
 {
     boost::mutex::scoped_lock lock(_mutex);
-    return sound_handler::create_sound(data, sinfo);
+    return sound_handler::create_sound(std::move(data), sinfo);
 }
 
 sound_handler::StreamBlockId
-SDL_sound_handler::addSoundBlock(std::auto_ptr<SimpleBuffer> buf,
+SDL_sound_handler::addSoundBlock(std::unique_ptr<SimpleBuffer> buf,
         size_t sampleCount, int seekSamples, int handle)
 {
 
     boost::mutex::scoped_lock lock(_mutex);
-    return sound_handler::addSoundBlock(buf, sampleCount, seekSamples, handle);
+    return sound_handler::addSoundBlock(std::move(buf), sampleCount, 
seekSamples, handle);
 }
 
 
@@ -295,11 +295,11 @@ SDL_sound_handler::mix(boost::int16_t* outSamples, 
boost::int16_t* inSamples,
 }
 
 void
-SDL_sound_handler::plugInputStream(std::auto_ptr<InputStream> newStreamer)
+SDL_sound_handler::plugInputStream(std::unique_ptr<InputStream> newStreamer)
 {
     boost::mutex::scoped_lock lock(_mutex);
 
-    sound_handler::plugInputStream(newStreamer);
+    sound_handler::plugInputStream(std::move(newStreamer));
 
     { // TODO: this whole block should only be executed when adding
       // the first stream. 
diff --git a/libsound/sdl/sound_handler_sdl.h b/libsound/sdl/sound_handler_sdl.h
index 9d3c830..c940ae1 100644
--- a/libsound/sdl/sound_handler_sdl.h
+++ b/libsound/sdl/sound_handler_sdl.h
@@ -94,12 +94,12 @@ public:
     virtual int createStreamingSound(const media::SoundInfo& sinfo);
 
     // See dox in sound_handler.h
-    virtual int create_sound(std::auto_ptr<SimpleBuffer> data,
+    virtual int create_sound(std::unique_ptr<SimpleBuffer> data,
             const media::SoundInfo& sinfo);
 
     // See dox in sound_handler.h
     // overridden to serialize access to the data buffer slot
-    virtual StreamBlockId addSoundBlock(std::auto_ptr<SimpleBuffer> buf,
+    virtual StreamBlockId addSoundBlock(std::unique_ptr<SimpleBuffer> buf,
            size_t sample_count, int seekSamples, int streamId);
 
     // See dox in sound_handler.h
@@ -156,7 +156,7 @@ public:
     
     // See dox in sound_handler.h
     // Overridden to unpause SDL audio
-    void plugInputStream(std::auto_ptr<InputStream> in);
+    void plugInputStream(std::unique_ptr<InputStream> in);
 
     // Overidden to provide thread safety.
     void unplugInputStream(InputStream* id);
diff --git a/libsound/sound_handler.cpp b/libsound/sound_handler.cpp
index 3c0ae52..c9e0686 100644
--- a/libsound/sound_handler.cpp
+++ b/libsound/sound_handler.cpp
@@ -77,7 +77,7 @@ ensurePadding(SimpleBuffer& data, media::MediaHandler* m)
 } // anonymous namespace
 
 sound_handler::StreamBlockId
-sound_handler::addSoundBlock(std::auto_ptr<SimpleBuffer> data,
+sound_handler::addSoundBlock(std::unique_ptr<SimpleBuffer> data,
         size_t sampleCount, int seekSamples, int handle)
 {
     if (!validHandle(_streamingSounds, handle)) {
@@ -96,7 +96,7 @@ sound_handler::addSoundBlock(std::auto_ptr<SimpleBuffer> data,
     assert(data.get());
     ensurePadding(*data, _mediaHandler);
 
-    return sounddata->append(data, sampleCount, seekSamples);
+    return sounddata->append(std::move(data), sampleCount, seekSamples);
 }
 
 void
@@ -388,7 +388,7 @@ sound_handler::get_duration(int handle) const
 int
 sound_handler::createStreamingSound(const media::SoundInfo& sinfo)
 {
-    std::auto_ptr<StreamingSoundData> sounddata(
+    std::unique_ptr<StreamingSoundData> sounddata(
             new StreamingSoundData(sinfo, 100));
 
     int sound_id = _streamingSounds.size();
@@ -399,7 +399,7 @@ sound_handler::createStreamingSound(const media::SoundInfo& 
sinfo)
 }
 
 int
-sound_handler::create_sound(std::auto_ptr<SimpleBuffer> data,
+sound_handler::create_sound(std::unique_ptr<SimpleBuffer> data,
                             const media::SoundInfo& sinfo)
 {
     if (data.get()) {
@@ -408,7 +408,7 @@ sound_handler::create_sound(std::auto_ptr<SimpleBuffer> 
data,
     else {
         log_debug("Event sound with no data!");
     }
-    std::auto_ptr<EmbedSound> sounddata(new EmbedSound(data, sinfo, 100));
+    std::unique_ptr<EmbedSound> sounddata(new EmbedSound(std::move(data), 
sinfo, 100));
 
     int sound_id = _sounds.size();
 
@@ -447,9 +447,9 @@ sound_handler::playStream(int soundId, StreamBlockId 
blockId)
     if (s.isPlaying() || s.empty()) return;
 
     try {
-        std::auto_ptr<InputStream> is(
+        std::unique_ptr<InputStream> is(
                 s.createInstance(*_mediaHandler, blockId));
-        plugInputStream(is);
+        plugInputStream(std::move(is));
     }
     catch (const MediaException& e) {
         log_error(_("Could not start streaming sound: %s"), e.what());
@@ -537,10 +537,10 @@ sound_handler::startSound(int handle, int loops, const 
SoundEnvelopes* env,
     try {
         // Make an InputStream for this sound and plug it into  
         // the set of InputStream channels
-        std::auto_ptr<InputStream> sound(
+        std::unique_ptr<InputStream> sound(
                 sounddata.createInstance(*_mediaHandler, inPoint, outPoint,
                     env, loops));
-        plugInputStream(sound);
+        plugInputStream(std::move(sound));
     }
     catch (const MediaException& e) {
         log_error(_("Could not start event sound: %s"), e.what());
@@ -549,7 +549,7 @@ sound_handler::startSound(int handle, int loops, const 
SoundEnvelopes* env,
 }
 
 void
-sound_handler::plugInputStream(std::auto_ptr<InputStream> newStreamer)
+sound_handler::plugInputStream(std::unique_ptr<InputStream> newStreamer)
 {
 #ifdef GNASH_DEBUG_SOUNDS_MANAGEMENT
     InputStream* newStream = newStreamer.get(); // for debugging
@@ -768,11 +768,11 @@ sound_handler::attach_aux_streamer(aux_streamer_ptr ptr, 
void* owner)
     assert(owner);
     assert(ptr);
 
-    std::auto_ptr<InputStream> newStreamer ( new AuxStream(ptr, owner) );
+    std::unique_ptr<InputStream> newStreamer ( new AuxStream(ptr, owner) );
 
     InputStream* ret = newStreamer.get();
 
-    plugInputStream(newStreamer);
+    plugInputStream(std::move(newStreamer));
 
     return ret;
 }
diff --git a/libsound/sound_handler.h b/libsound/sound_handler.h
index 1486139..15711a3 100644
--- a/libsound/sound_handler.h
+++ b/libsound/sound_handler.h
@@ -118,7 +118,7 @@ public:
     /// @param sinfo        A SoundInfo object containing info about
     ///                     samplerate, samplecount, stereo etc.
     /// @return             handle for later identification.
-    virtual int create_sound(std::auto_ptr<SimpleBuffer> data,
+    virtual int create_sound(std::unique_ptr<SimpleBuffer> data,
             const media::SoundInfo& sinfo);
         
     /// Remove scheduled requests to play the specified sound buffer slot
@@ -244,7 +244,7 @@ public:
     ///                     to add data to
     /// @return             a handler for the new block for use in playStream()
     /// @throw              SoundException on error
-    virtual StreamBlockId addSoundBlock(std::auto_ptr<SimpleBuffer> data,
+    virtual StreamBlockId addSoundBlock(std::unique_ptr<SimpleBuffer> data,
                size_t sampleCount, int seekSamples, int streamId);
 
     /// Returns a SoundInfo object for the sound with the given id.
@@ -473,7 +473,7 @@ protected:
     /// @param in
     ///     The InputStream to plug, ownership transferred
     ///
-    virtual void plugInputStream(std::auto_ptr<InputStream> in);
+    virtual void plugInputStream(std::unique_ptr<InputStream> in);
 
     /// Unplug all input streams
     virtual void unplugAllInputStreams();
diff --git a/plugin/aos4/plugin.cpp b/plugin/aos4/plugin.cpp
index 4ee69f2..5088877 100644
--- a/plugin/aos4/plugin.cpp
+++ b/plugin/aos4/plugin.cpp
@@ -488,7 +488,7 @@ nsPluginInstance::threadMain(void)
     md->completeLoad();
     DBG("Movie loaded.\n");
 
-    std::auto_ptr<gnash::Movie> mr(md->createMovie());
+    std::unique_ptr<gnash::Movie> mr(md->createMovie());
     mr->setVariables(_flashVars);
     root.setRootMovie(mr.release());
     //root.set_display_viewport(0, 0, _width, _height);
diff --git a/plugin/aos4/plugin.h b/plugin/aos4/plugin.h
index bc33f26..6734898 100644
--- a/plugin/aos4/plugin.h
+++ b/plugin/aos4/plugin.h
@@ -101,7 +101,7 @@ private:
     struct BitMap *_bmp;
     unsigned char* _memaddr;
 
-    //std::auto_ptr<gnash::media::sound_handler> _sound_handler;
+    //std::unique_ptr<gnash::media::sound_handler> _sound_handler;
     gnash::Renderer* _Renderer;
 
     // Mouse state.
diff --git a/plugin/win32/plugin.cpp b/plugin/win32/plugin.cpp
index 771d6e7..b14d138 100644
--- a/plugin/win32/plugin.cpp
+++ b/plugin/win32/plugin.cpp
@@ -486,7 +486,7 @@ nsPluginInstance::threadMain(void)
     md->completeLoad();
     DBG("Movie loaded.\n");
 
-    std::auto_ptr<gnash::Movie> mr(md->createMovie());
+    std::unique_ptr<gnash::Movie> mr(md->createMovie());
     mr->setVariables(_flashVars);
     root.setRootMovie(mr.release());
     root.set_display_viewport(0, 0, _width, _height);
diff --git a/plugin/win32/plugin.h b/plugin/win32/plugin.h
index 03b899a..64c505d 100644
--- a/plugin/win32/plugin.h
+++ b/plugin/win32/plugin.h
@@ -101,7 +101,7 @@ private:
     HBITMAP     _bmp;
     unsigned char* _memaddr;
 
-    std::auto_ptr<gnash::media::sound_handler> _sound_handler;
+    std::unique_ptr<gnash::media::sound_handler> _sound_handler;
     gnash::Renderer* _Renderer;
 
     // Mouse state.
diff --git a/testsuite/DummyCharacter.h b/testsuite/DummyCharacter.h
index 1cb9213..8b9126e 100644
--- a/testsuite/DummyCharacter.h
+++ b/testsuite/DummyCharacter.h
@@ -24,7 +24,7 @@
 #include "Movie.h" // for createMovie
 #include "snappingrange.h" // for InvalidatedRanges typedef (don't like it)
 
-#include <memory> // for auto_ptr
+#include <memory> // for unique_ptr
 
 // Forward declarations
 namespace gnash {
diff --git a/testsuite/DummyMovieDefinition.h b/testsuite/DummyMovieDefinition.h
index b4e51ae..4d92ec5 100644
--- a/testsuite/DummyMovieDefinition.h
+++ b/testsuite/DummyMovieDefinition.h
@@ -27,7 +27,7 @@
 
 #include <vector>
 #include <string>
-#include <memory> // for auto_ptr
+#include <memory> // for unique_ptr
 
 
 namespace gnash
diff --git a/testsuite/MovieTester.cpp b/testsuite/MovieTester.cpp
index ace436c..61636c5 100644
--- a/testsuite/MovieTester.cpp
+++ b/testsuite/MovieTester.cpp
@@ -52,7 +52,7 @@
 
 #include <cstdio>
 #include <string>
-#include <memory> // for auto_ptr
+#include <memory> // for unique_ptr
 #include <cmath> // for ceil
 #include <iostream>
 #include <boost/shared_ptr.hpp>
@@ -117,10 +117,10 @@ MovieTester::MovieTester(const std::string& url)
     _runResources->setStreamProvider(sp);
 
     if ( url == "-" ) {
-       std::auto_ptr<IOChannel> in (
+       std::unique_ptr<IOChannel> in (
                noseek_fd_adapter::make_stream(fileno(stdin))
                                     );
-               _movie_def = MovieFactory::makeMovie(in, url, *_runResources, 
false);
+               _movie_def = MovieFactory::makeMovie(std::move(in), url, 
*_runResources, false);
        } else {
        URL urlObj(url);
        if ( urlObj.protocol() == "file" ) {
diff --git a/testsuite/MovieTester.h b/testsuite/MovieTester.h
index 2584003..d36a7a4 100644
--- a/testsuite/MovieTester.h
+++ b/testsuite/MovieTester.h
@@ -29,7 +29,7 @@
 #include "Range2d.h"
 #include "GnashKey.h"
 #include "sound_handler.h" // for creating the "test" sound handlers
-#include "Renderer.h" // for dtor visibility by auto_ptr
+#include "Renderer.h" // for dtor visibility by unique_ptr
 #include "Movie.h" 
 #include "ManualClock.h" // for composition
 #include "RunResources.h" // For initialization.
@@ -37,7 +37,7 @@
 
 #include <boost/intrusive_ptr.hpp>
 #include <vector>
-#include <memory> // for auto_ptr
+#include <memory> // for unique_ptr
 #include <string> 
 #include <boost/shared_ptr.hpp>
 #include <cmath>
@@ -364,7 +364,7 @@ private:
 
     boost::shared_ptr<media::MediaHandler> _mediaHandler;
 
-    std::auto_ptr<RunResources> _runResources;
+    std::unique_ptr<RunResources> _runResources;
        /// Current pointer position - X ordinate
        int _x;
 
diff --git a/testsuite/libbase.all/CurlStreamTest.cpp 
b/testsuite/libbase.all/CurlStreamTest.cpp
index 4f15b6a..03b5e9f 100644
--- a/testsuite/libbase.all/CurlStreamTest.cpp
+++ b/testsuite/libbase.all/CurlStreamTest.cpp
@@ -24,7 +24,7 @@
 #include "tu_file.h"
 #include "IOChannel.h"
 
-#include <memory>               // for auto_ptr
+#include <memory>               // for unique_ptr
 #include <cstdio>
 #include <iostream>
 #include <cassert>
@@ -38,7 +38,7 @@ const char* post = NULL;
 static void
 dump_curl(const char* url, ostream& os)
 {
-       std::auto_ptr<gnash::IOChannel> reader;
+       std::unique_ptr<gnash::IOChannel> reader;
        if ( post )
        {
                reader.reset( gnash::NetworkAdapter::make_stream(url, post) );
@@ -64,7 +64,7 @@ dump_curl(const char* url, ostream& os)
 static void
 dump_tu_file(const char* url, ostream& os)
 {
-    std::auto_ptr<IOChannel> reader = makeFileChannel(url, true);
+    std::unique_ptr<IOChannel> reader = makeFileChannel(url, true);
        assert(reader);
        if (reader->bad()) return;
 
diff --git a/testsuite/libbase.all/NoSeekFileTest.cpp 
b/testsuite/libbase.all/NoSeekFileTest.cpp
index fb63911..cea0d89 100644
--- a/testsuite/libbase.all/NoSeekFileTest.cpp
+++ b/testsuite/libbase.all/NoSeekFileTest.cpp
@@ -155,7 +155,7 @@ trymain(int /*argc*/, char** /*argv*/)
 
 
     FILE* f = std::fopen(cachename, "r");
-    std::auto_ptr<gnash::IOChannel> orig = gnash::makeFileChannel(f, false);
+    std::unique_ptr<gnash::IOChannel> orig = gnash::makeFileChannel(f, false);
        lseek(raw, 0, SEEK_SET);
        compare_reads(orig.get(), raw, "cache", "raw");
        close(raw);
diff --git a/testsuite/libcore.all/ClassSizes.cpp 
b/testsuite/libcore.all/ClassSizes.cpp
index 1e6bcb1..91cab74 100644
--- a/testsuite/libcore.all/ClassSizes.cpp
+++ b/testsuite/libcore.all/ClassSizes.cpp
@@ -73,7 +73,7 @@ using namespace gnash::SWF;
 // Add types in brackets to this macro to have their size printed.
 #define TYPES \
 (int) (float) (long) (double) \
-(Property*) (auto_ptr<Property>) (scoped_ptr<Property>) \
+(Property*) (unique_ptr<Property>) (scoped_ptr<Property>) \
 (boost::shared_ptr<Property>) (intrusive_ptr<as_object>) (GcResource) \
 (rgba) (SWFMatrix) (SWFRect) (LineStyle) (FillStyle) (SWFCxForm) \
 (as_value) \
diff --git a/testsuite/misc-ming.all/loading/loadMovieTestRunner.cpp 
b/testsuite/misc-ming.all/loading/loadMovieTestRunner.cpp
index 947c33d..5e0494a 100644
--- a/testsuite/misc-ming.all/loading/loadMovieTestRunner.cpp
+++ b/testsuite/misc-ming.all/loading/loadMovieTestRunner.cpp
@@ -37,7 +37,7 @@
 using namespace gnash;
 using namespace std;
 
-std::auto_ptr<MovieTester> tester;
+std::unique_ptr<MovieTester> tester;
 MovieClip* root;
 
 MovieClip*
diff --git a/testsuite/misc-ming.all/loop/loop_test-Runner.cpp 
b/testsuite/misc-ming.all/loop/loop_test-Runner.cpp
index 654a94a..42f5d4e 100644
--- a/testsuite/misc-ming.all/loop/loop_test-Runner.cpp
+++ b/testsuite/misc-ming.all/loop/loop_test-Runner.cpp
@@ -43,7 +43,7 @@ int
 trymain(int /*argc*/, char** /*argv*/)
 {
        string filename = string(TGTDIR) + string("/") + string(INPUT_FILENAME);
-       auto_ptr<MovieTester> t;
+       unique_ptr<MovieTester> t;
 
        try
        {
diff --git a/testsuite/misc-ming.all/sound/eventSoundTest1-Runner.cpp 
b/testsuite/misc-ming.all/sound/eventSoundTest1-Runner.cpp
index f6464f9..a484553 100644
--- a/testsuite/misc-ming.all/sound/eventSoundTest1-Runner.cpp
+++ b/testsuite/misc-ming.all/sound/eventSoundTest1-Runner.cpp
@@ -43,7 +43,7 @@ int
 trymain(int /*argc*/, char** /*argv*/)
 {
        string filename = string(TGTDIR) + string("/") + string(INPUT_FILENAME);
-       auto_ptr<MovieTester> t;
+       unique_ptr<MovieTester> t;
 
        try
        {
diff --git a/testsuite/misc-swfc.all/button_test1runner.cpp 
b/testsuite/misc-swfc.all/button_test1runner.cpp
index ad6e969..301a0b8 100644
--- a/testsuite/misc-swfc.all/button_test1runner.cpp
+++ b/testsuite/misc-swfc.all/button_test1runner.cpp
@@ -43,7 +43,7 @@ int
 trymain(int /*argc*/, char** /*argv*/)
 {
        string filename = string(BUILDDIR) + string("/") + 
string(INPUT_FILENAME);
-       auto_ptr<MovieTester> t;
+       unique_ptr<MovieTester> t;
 
        gnash::LogFile& dbglogfile = gnash::LogFile::getDefaultInstance();
        dbglogfile.setVerbosity(1);
diff --git a/testsuite/misc-swfc.all/sound_stop_runner.cpp 
b/testsuite/misc-swfc.all/sound_stop_runner.cpp
index 9013930..aa896db 100644
--- a/testsuite/misc-swfc.all/sound_stop_runner.cpp
+++ b/testsuite/misc-swfc.all/sound_stop_runner.cpp
@@ -37,7 +37,7 @@ int
 trymain(int /*argc*/, char** /*argv*/)
 {
     string filename = string(BUILDDIR) + string("/") + string(INPUT_FILENAME);
-    auto_ptr<MovieTester> t;
+    unique_ptr<MovieTester> t;
 
     gnash::LogFile& dbglogfile = gnash::LogFile::getDefaultInstance();
     dbglogfile.setVerbosity(2);
diff --git a/testsuite/misc-swfmill.all/backgroundTestRunner.cpp 
b/testsuite/misc-swfmill.all/backgroundTestRunner.cpp
index 847b0c7..662c5e1 100644
--- a/testsuite/misc-swfmill.all/backgroundTestRunner.cpp
+++ b/testsuite/misc-swfmill.all/backgroundTestRunner.cpp
@@ -40,7 +40,7 @@ int
 trymain(int /*argc*/, char** /*argv*/)
 {
        string filename = string(TGTDIR) + string("/") + string(INPUT_FILENAME);
-       auto_ptr<MovieTester> t;
+       unique_ptr<MovieTester> t;
 
        gnash::LogFile& dbglogfile = gnash::LogFile::getDefaultInstance();
        dbglogfile.setVerbosity(1);
diff --git a/testsuite/misc-swfmill.all/missing_bitmapTestRunner.cpp 
b/testsuite/misc-swfmill.all/missing_bitmapTestRunner.cpp
index d33a4d9..fc4fe20 100644
--- a/testsuite/misc-swfmill.all/missing_bitmapTestRunner.cpp
+++ b/testsuite/misc-swfmill.all/missing_bitmapTestRunner.cpp
@@ -40,7 +40,7 @@ int
 trymain(int /*argc*/, char** /*argv*/)
 {
        string filename = string(TGTDIR) + string("/") + string(INPUT_FILENAME);
-       auto_ptr<MovieTester> t;
+       unique_ptr<MovieTester> t;
 
        gnash::LogFile& dbglogfile = gnash::LogFile::getDefaultInstance();
        dbglogfile.setVerbosity(1);
diff --git a/testsuite/samples/clip_as_button2-TestRunner.cpp 
b/testsuite/samples/clip_as_button2-TestRunner.cpp
index dd79e77..be76352 100644
--- a/testsuite/samples/clip_as_button2-TestRunner.cpp
+++ b/testsuite/samples/clip_as_button2-TestRunner.cpp
@@ -41,7 +41,7 @@ int
 trymain(int /*argc*/, char** /*argv*/)
 {
        string filename = string(SRCDIR) + string("/") + string(INPUT_FILENAME);
-       auto_ptr<MovieTester> t;
+       unique_ptr<MovieTester> t;
 
        gnash::LogFile& dbglogfile = gnash::LogFile::getDefaultInstance();
        dbglogfile.setVerbosity(1);
diff --git a/testsuite/samples/gotoFrameOnKeyEvent-TestRunner.cpp 
b/testsuite/samples/gotoFrameOnKeyEvent-TestRunner.cpp
index d937b67..036e9d9 100644
--- a/testsuite/samples/gotoFrameOnKeyEvent-TestRunner.cpp
+++ b/testsuite/samples/gotoFrameOnKeyEvent-TestRunner.cpp
@@ -40,7 +40,7 @@ int
 trymain(int /*argc*/, char** /*argv*/)
 {
   string filename = string(SRCDIR) + string("/") + string(INPUT_FILENAME);
-  auto_ptr<MovieTester> t;
+  unique_ptr<MovieTester> t;
 
   gnash::LogFile& dbglogfile = gnash::LogFile::getDefaultInstance();
   dbglogfile.setVerbosity(1);
diff --git a/testsuite/samples/subshapes-TestRunner.cpp 
b/testsuite/samples/subshapes-TestRunner.cpp
index 165df2e..4cd90ed 100644
--- a/testsuite/samples/subshapes-TestRunner.cpp
+++ b/testsuite/samples/subshapes-TestRunner.cpp
@@ -40,7 +40,7 @@ int
 trymain(int /*argc*/, char** /*argv*/)
 {
        string filename = string(SRCDIR) + string("/") + string(INPUT_FILENAME);
-       auto_ptr<MovieTester> t;
+       unique_ptr<MovieTester> t;
 
        gnash::LogFile& dbglogfile = gnash::LogFile::getDefaultInstance();
        dbglogfile.setVerbosity(1);
diff --git a/testsuite/samples/test_15bpp_bitmap-TestRunner.cpp 
b/testsuite/samples/test_15bpp_bitmap-TestRunner.cpp
index fb5b2fa..973b4ae 100644
--- a/testsuite/samples/test_15bpp_bitmap-TestRunner.cpp
+++ b/testsuite/samples/test_15bpp_bitmap-TestRunner.cpp
@@ -38,7 +38,7 @@ int
 trymain(int /*argc*/, char** /*argv*/)
 {
        string filename = string(SRCDIR) + string("/") + string(INPUT_FILENAME);
-       auto_ptr<MovieTester> t;
+       unique_ptr<MovieTester> t;
 
        gnash::LogFile& dbglogfile = gnash::LogFile::getDefaultInstance();
        dbglogfile.setVerbosity(1);
diff --git a/utilities/processor.cpp b/utilities/processor.cpp
index 6690a77..c42f97b 100644
--- a/utilities/processor.cpp
+++ b/utilities/processor.cpp
@@ -452,9 +452,9 @@ play_movie(const std::string& filename, const RunResources& 
runResources)
     {
       if (filename == "-")
       {
-         std::auto_ptr<IOChannel> in (
+         std::unique_ptr<IOChannel> in (
                  noseek_fd_adapter::make_stream(fileno(stdin)) );
-         md = MovieFactory::makeMovie(in, filename, runResources, false);
+         md = MovieFactory::makeMovie(std::move(in), filename, runResources, 
false);
       }
       else
       {

http://git.savannah.gnu.org/cgit//commit/?id=573b8e78bc8ed45f5c1d3cc02e48b5ff110be661


commit 573b8e78bc8ed45f5c1d3cc02e48b5ff110be661
Author: Bastiaan Jacques <address@hidden>
Date:   Mon May 19 15:16:23 2014 +0200

    GCC seems unhappy with a shared_ptr passed by nonconst-reference.

diff --git a/cygnal/libamf/buffer.cpp b/cygnal/libamf/buffer.cpp
index ab6366d..3d8b171 100644
--- a/cygnal/libamf/buffer.cpp
+++ b/cygnal/libamf/buffer.cpp
@@ -384,7 +384,7 @@ Buffer::operator+=(boost::uint32_t length)
 /// 
 /// @return A reference to a Buffer.
 Buffer &
-Buffer::operator+=(boost::shared_ptr<Buffer> &buf)
+Buffer::operator+=(boost::shared_ptr<Buffer> buf)
 {
 //    GNASH_REPORT_FUNCTION;
     append(buf->reference(), buf->allocated());
@@ -524,7 +524,7 @@ Buffer::operator=(boost::uint8_t *data)
 /// 
 /// @return A reference to a Buffer.
 Buffer &
-Buffer::operator=(boost::shared_ptr<Buffer> &buf)
+Buffer::operator=(boost::shared_ptr<Buffer> buf)
 {
 //    GNASH_REPORT_FUNCTION;
     copy(buf->reference(), buf->size());
diff --git a/cygnal/libamf/buffer.h b/cygnal/libamf/buffer.h
index 864b78a..4a608f6 100644
--- a/cygnal/libamf/buffer.h
+++ b/cygnal/libamf/buffer.h
@@ -156,7 +156,7 @@ public:
     /// 
     /// @return A reference to a Buffer.
     Buffer &operator=(Buffer &buf);
-    Buffer &operator=(boost::shared_ptr<Buffer>& buf);
+    Buffer &operator=(boost::shared_ptr<Buffer> buf);
     /// \brief Copy a string into the buffer.
     ///                This overwrites all data, and resets the seek ptr.
     ///
@@ -225,7 +225,7 @@ public:
     /// 
     /// @return A reference to a Buffer.
     Buffer &operator+=(Buffer &buf);
-    Buffer &operator+=(boost::shared_ptr<Buffer> &buf);
+    Buffer &operator+=(boost::shared_ptr<Buffer> buf);
 
     /// \brief Append a string to existing data in the buffer.
     ///

http://git.savannah.gnu.org/cgit//commit/?id=725ef0da2c4763a94eab48f041bba48c15f73287


commit 725ef0da2c4763a94eab48f041bba48c15f73287
Author: Bastiaan Jacques <address@hidden>
Date:   Mon May 19 01:00:07 2014 +0200

    Compile in C++11 mode to enable new language features.

diff --git a/configure.ac b/configure.ac
index ad01e2f..10e7b49 100644
--- a/configure.ac
+++ b/configure.ac
@@ -30,6 +30,7 @@ dnl Figure out development tool stuff
 dnl --------------------------------------------------------
 
 AC_PROG_CXX
+AX_CXX_COMPILE_STDCXX_11(noext, mandatory)
 AC_PROG_CC
 AM_PROG_CC_C_O
 AC_EXEEXT
diff --git a/macros/ax_cxx_compile_stdcxx_11.m4 
b/macros/ax_cxx_compile_stdcxx_11.m4
new file mode 100644
index 0000000..163a4c6
--- /dev/null
+++ b/macros/ax_cxx_compile_stdcxx_11.m4
@@ -0,0 +1,142 @@
+# ============================================================================
+#  http://www.gnu.org/software/autoconf-archive/ax_cxx_compile_stdcxx_11.html
+# ============================================================================
+#
+# SYNOPSIS
+#
+#   AX_CXX_COMPILE_STDCXX_11([ext|noext],[mandatory|optional])
+#
+# DESCRIPTION
+#
+#   Check for baseline language coverage in the compiler for the C++11
+#   standard; if necessary, add switches to CXXFLAGS to enable support.
+#
+#   The first argument, if specified, indicates whether you insist on an
+#   extended mode (e.g. -std=gnu++11) or a strict conformance mode (e.g.
+#   -std=c++11).  If neither is specified, you get whatever works, with
+#   preference for an extended mode.
+#
+#   The second argument, if specified 'mandatory' or if left unspecified,
+#   indicates that baseline C++11 support is required and that the macro
+#   should error out if no mode with that support is found.  If specified
+#   'optional', then configuration proceeds regardless, after defining
+#   HAVE_CXX11 if and only if a supporting mode is found.
+#
+# LICENSE
+#
+#   Copyright (c) 2008 Benjamin Kosnik <address@hidden>
+#   Copyright (c) 2012 Zack Weinberg <address@hidden>
+#   Copyright (c) 2013 Roy Stogner <address@hidden>
+#   Copyright (c) 2014 Alexey Sokolov <address@hidden>
+#
+#   Copying and distribution of this file, with or without modification, are
+#   permitted in any medium without royalty provided the copyright notice
+#   and this notice are preserved. This file is offered as-is, without any
+#   warranty.
+
+#serial 4
+
+m4_define([_AX_CXX_COMPILE_STDCXX_11_testbody], [[
+  template <typename T>
+    struct check
+    {
+      static_assert(sizeof(int) <= sizeof(T), "not big enough");
+    };
+
+    struct Base {
+    virtual void f() {}
+    };
+    struct Child : public Base {
+    virtual void f() override {}
+    };
+
+    typedef check<check<bool>> right_angle_brackets;
+
+    int a;
+    decltype(a) b;
+
+    typedef check<int> check_type;
+    check_type c;
+    check_type&& cr = static_cast<check_type&&>(c);
+
+    auto d = a;
+    auto l = [](){};
+]])
+
+AC_DEFUN([AX_CXX_COMPILE_STDCXX_11], [dnl
+  m4_if([$1], [], [],
+        [$1], [ext], [],
+        [$1], [noext], [],
+        [m4_fatal([invalid argument `$1' to AX_CXX_COMPILE_STDCXX_11])])dnl
+  m4_if([$2], [], [ax_cxx_compile_cxx11_required=true],
+        [$2], [mandatory], [ax_cxx_compile_cxx11_required=true],
+        [$2], [optional], [ax_cxx_compile_cxx11_required=false],
+        [m4_fatal([invalid second argument `$2' to AX_CXX_COMPILE_STDCXX_11])])
+  AC_LANG_PUSH([C++])dnl
+  ac_success=no
+  AC_CACHE_CHECK(whether $CXX supports C++11 features by default,
+  ax_cv_cxx_compile_cxx11,
+  [AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_11_testbody])],
+    [ax_cv_cxx_compile_cxx11=yes],
+    [ax_cv_cxx_compile_cxx11=no])])
+  if test x$ax_cv_cxx_compile_cxx11 = xyes; then
+    ac_success=yes
+  fi
+
+  m4_if([$1], [noext], [], [dnl
+  if test x$ac_success = xno; then
+    for switch in -std=gnu++11 -std=gnu++0x; do
+      cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx11_$switch])
+      AC_CACHE_CHECK(whether $CXX supports C++11 features with $switch,
+                     $cachevar,
+        [ac_save_CXXFLAGS="$CXXFLAGS"
+         CXXFLAGS="$CXXFLAGS $switch"
+         
AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_11_testbody])],
+          [eval $cachevar=yes],
+          [eval $cachevar=no])
+         CXXFLAGS="$ac_save_CXXFLAGS"])
+      if eval test x\$$cachevar = xyes; then
+        CXXFLAGS="$CXXFLAGS $switch"
+        ac_success=yes
+        break
+      fi
+    done
+  fi])
+
+  m4_if([$1], [ext], [], [dnl
+  if test x$ac_success = xno; then
+    for switch in -std=c++11 -std=c++0x; do
+      cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx11_$switch])
+      AC_CACHE_CHECK(whether $CXX supports C++11 features with $switch,
+                     $cachevar,
+        [ac_save_CXXFLAGS="$CXXFLAGS"
+         CXXFLAGS="$CXXFLAGS $switch"
+         
AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_11_testbody])],
+          [eval $cachevar=yes],
+          [eval $cachevar=no])
+         CXXFLAGS="$ac_save_CXXFLAGS"])
+      if eval test x\$$cachevar = xyes; then
+        CXXFLAGS="$CXXFLAGS $switch"
+        ac_success=yes
+        break
+      fi
+    done
+  fi])
+  AC_LANG_POP([C++])
+  if test x$ax_cxx_compile_cxx11_required = xtrue; then
+    if test x$ac_success = xno; then
+      AC_MSG_ERROR([*** A compiler with support for C++11 language features is 
required.])
+    fi
+  else
+    if test x$ac_success = xno; then
+      HAVE_CXX11=0
+      AC_MSG_NOTICE([No compiler with C++11 support was found])
+    else
+      HAVE_CXX11=1
+      AC_DEFINE(HAVE_CXX11,1,
+                [define if the compiler supports basic C++11 syntax])
+    fi
+
+    AC_SUBST(HAVE_CXX11)
+  fi
+])

http://git.savannah.gnu.org/cgit//commit/?id=74d73b5f9a3401ec90e7171ab6d48ac0aefa3970


commit 74d73b5f9a3401ec90e7171ab6d48ac0aefa3970
Author: Bastiaan Jacques <address@hidden>
Date:   Mon May 19 00:56:19 2014 +0200

    Chuck out non-standard attributes and fix up a UB bit shift.

diff --git a/libbase/IOChannel.cpp b/libbase/IOChannel.cpp
index 1cf6278..0e02298 100644
--- a/libbase/IOChannel.cpp
+++ b/libbase/IOChannel.cpp
@@ -69,7 +69,7 @@ IOChannel::read_float32()
         boost::uint32_t    i;
     } u;
 
-    BOOST_STATIC_ASSERT(sizeof(u) == sizeof(u.i)) __attribute__((unused));
+    BOOST_STATIC_ASSERT(sizeof(u) == sizeof(u.i));
     
     u.i = read_le32();
     return u.f;
diff --git a/libcore/SWFStream.cpp b/libcore/SWFStream.cpp
index f64ed43..3b0b018 100644
--- a/libcore/SWFStream.cpp
+++ b/libcore/SWFStream.cpp
@@ -197,7 +197,7 @@ SWFStream::read_sint(unsigned short bitcount)
 
     // Sign extend...
     if (value & (1 << (bitcount - 1))) {
-        value |= -1 << bitcount;
+        value |= static_cast<boost::uint32_t>(-1) << bitcount;
     }
 
 //        IF_DEBUG(log_debug("SWFStream::read_sint(%d) == %d\n", bitcount, 
value)));
@@ -312,7 +312,7 @@ double SWFStream::read_d64()
     const unsigned short dataLength = 8;
     double d = 0;
 
-    BOOST_STATIC_ASSERT(sizeof(double) == dataLength) __attribute__((unused));
+    BOOST_STATIC_ASSERT(sizeof(double) == dataLength);
 
     // Should align:
     if (read(reinterpret_cast<char*>(&d), dataLength) < dataLength)
diff --git a/libcore/parser/action_buffer.cpp b/libcore/parser/action_buffer.cpp
index 23ddab2..d6c64b4 100644
--- a/libcore/parser/action_buffer.cpp
+++ b/libcore/parser/action_buffer.cpp
@@ -574,7 +574,7 @@ convert_double_wacky(const void *p)
         } c;
     } u;
 
-    BOOST_STATIC_ASSERT(sizeof(u) == sizeof(u.i)) __attribute__((unused));
+    BOOST_STATIC_ASSERT(sizeof(u) == sizeof(u.i));
 
     // Detect endianness of doubles by storing a value that is
     // exactly representable and that has different values in the
diff --git a/libcore/swf/DefineBitsTag.cpp b/libcore/swf/DefineBitsTag.cpp
index 9967921..e0829fb 100644
--- a/libcore/swf/DefineBitsTag.cpp
+++ b/libcore/swf/DefineBitsTag.cpp
@@ -616,8 +616,7 @@ inflateWrapper(SWFStream& in, void* buffer, size_t 
buffer_bytes)
             chunkSize = availableBytes;
         }
     
-        BOOST_STATIC_ASSERT(sizeof(char) == sizeof(boost::uint8_t))
-            __attribute__((unused));
+        BOOST_STATIC_ASSERT(sizeof(char) == sizeof(boost::uint8_t));
 
         // Fill the buffer    
         in.read(reinterpret_cast<char*>(buf), chunkSize);

http://git.savannah.gnu.org/cgit//commit/?id=998d5b525bcd02f85998827261f7b9183506c389


commit 998d5b525bcd02f85998827261f7b9183506c389
Author: Bastiaan Jacques <address@hidden>
Date:   Mon May 19 00:55:22 2014 +0200

    C++11 mode is unhappy with the conversion to bool; use get() instead.

diff --git a/libcore/swf/DefineButtonTag.h b/libcore/swf/DefineButtonTag.h
index 9910e06..17569b8 100644
--- a/libcore/swf/DefineButtonTag.h
+++ b/libcore/swf/DefineButtonTag.h
@@ -98,7 +98,7 @@ public:
     /// A ButtonRecord is invalid if it refers to a DisplayObject
     /// which has not been defined.
     bool valid() const {
-        return (_definitionTag);
+        return _definitionTag.get();
     }
 
 private:

-----------------------------------------------------------------------

Summary of changes:
 configure.ac                                       |    1 +
 cygnal/cvm.cpp                                     |    6 +-
 cygnal/libamf/buffer.cpp                           |    4 +-
 cygnal/libamf/buffer.h                             |    4 +-
 cygnal/libamf/lcshm.cpp                            |    6 +-
 cygnal/libamf/lcshm.h                              |    2 +-
 cygnal/libnet/cque.cpp                             |    2 +-
 cygnal/testsuite/libamf.all/test_lc.cpp            |    6 +-
 extensions/dejagnu/dejagnu.h                       |    2 +-
 extensions/gtk2/gtkext.cpp                         |    6 +-
 extensions/gtk2/gtkext.h                           |    4 +-
 gui/Player.cpp                                     |   16 +-
 gui/Player.h                                       |    8 +-
 gui/ScreenShotter.cpp                              |    4 +-
 gui/aos4/gui_aos4.cpp                              |    6 +-
 gui/aqua/gui_aqua.cpp                              |    6 +-
 gui/dump/gui_dump.cpp                              |    6 +-
 gui/fb/fb.cpp                                      |    4 +-
 gui/fb/gui_fb.cpp                                  |    6 +-
 gui/fltk/gui_fltk.cpp                              |    6 +-
 gui/gnash.cpp                                      |    2 +-
 gui/gtk/gtk.cpp                                    |    4 +-
 gui/gtk/gtk_canvas.cpp                             |    2 +-
 gui/gtk/gtk_glue_agg_vaapi.cpp                     |    2 +-
 gui/gtk/gtk_glue_agg_vaapi.h                       |    2 +-
 gui/gtk/gtksup.h                                   |    2 +-
 gui/gtk/gui_gtk.cpp                                |    6 +-
 gui/gui.cpp                                        |    6 +-
 gui/gui.h                                          |   26 ++--
 gui/haiku/gui_haiku.cpp                            |    6 +-
 gui/pythonmod/gnash-view.cpp                       |   12 +-
 gui/qt/GuiQt4.cpp                                  |    6 +-
 gui/qt/Qt4GlueAgg.h                                |    4 +-
 gui/qt/Qt4GlueCairo.h                              |    6 +-
 gui/qt/Qt4Gui.cpp                                  |    4 +-
 gui/qt/Qt4Gui.h                                    |    6 +-
 gui/qt/gui_kde.cpp                                 |    6 +-
 gui/qt/kde_glue_agg.h                              |    2 +-
 gui/qt/kdesup.h                                    |    4 +-
 gui/sdl/gui_sdl.cpp                                |    6 +-
 libbase/GnashImage.cpp                             |   14 +-
 libbase/GnashImage.h                               |    6 +-
 libbase/GnashImageGif.cpp                          |    4 +-
 libbase/GnashImageGif.h                            |    2 +-
 libbase/GnashImageJpeg.cpp                         |    8 +-
 libbase/GnashImageJpeg.h                           |   12 +-
 libbase/GnashImagePng.cpp                          |    8 +-
 libbase/GnashImagePng.h                            |    4 +-
 libbase/GnashVaapiTexture.h                        |    2 +-
 libbase/IOChannel.cpp                              |    2 +-
 libbase/NetworkAdapter.cpp                         |   20 ++--
 libbase/NetworkAdapter.h                           |    6 +-
 libbase/StreamProvider.cpp                         |   36 +++---
 libbase/StreamProvider.h                           |   16 +-
 libbase/tu_file.cpp                                |    8 +-
 libbase/tu_file.h                                  |    4 +-
 libbase/zlib_adapter.cpp                           |   14 +-
 libbase/zlib_adapter.h                             |    4 +-
 libcore/Button.cpp                                 |    4 +-
 libcore/DisplayObject.cpp                          |    4 +-
 libcore/DisplayObject.h                            |    2 +-
 libcore/Font.cpp                                   |   10 +-
 libcore/Font.h                                     |    8 +-
 libcore/FreetypeGlyphsProvider.cpp                 |   16 +-
 libcore/FreetypeGlyphsProvider.h                   |    8 +-
 libcore/LoadVariablesThread.h                      |    5 +-
 libcore/MovieClip.cpp                              |   14 +-
 libcore/MovieClip.h                                |    2 +-
 libcore/MovieFactory.cpp                           |   28 ++--
 libcore/MovieFactory.h                             |    2 +-
 libcore/MovieLoader.cpp                            |    6 +-
 libcore/MovieLoader.h                              |    2 +-
 libcore/SWFStream.cpp                              |    4 +-
 libcore/Video.cpp                                  |    4 +-
 libcore/Video.h                                    |    4 +-
 libcore/asobj/Camera_as.cpp                        |    6 +-
 libcore/asobj/Global_as.cpp                        |    8 +-
 libcore/asobj/LoadableObject.cpp                   |    8 +-
 libcore/asobj/Microphone_as.cpp                    |    6 +-
 libcore/asobj/NetConnection_as.cpp                 |    6 +-
 libcore/asobj/NetConnection_as.h                   |    4 +-
 libcore/asobj/NetStream_as.cpp                     |   28 ++--
 libcore/asobj/NetStream_as.h                       |   18 ++--
 libcore/asobj/SharedObject_as.cpp                  |    2 +-
 libcore/asobj/Sound_as.cpp                         |   19 ++--
 libcore/asobj/TextFormat_as.cpp                    |    2 +-
 libcore/asobj/XMLNode_as.cpp                       |    2 +-
 libcore/asobj/flash/display/BitmapData_as.cpp      |   16 +-
 libcore/asobj/flash/display/BitmapData_as.h        |    2 +-
 libcore/asobj/flash/net/FileReferenceList_as.h     |    2 +-
 libcore/asobj/flash/net/FileReference_as.h         |    2 +-
 libcore/asobj/flash/text/TextRenderer_as.h         |    2 +-
 libcore/movie_root.cpp                             |   19 ++--
 libcore/movie_root.h                               |   11 +-
 libcore/parser/BitmapMovieDefinition.cpp           |    4 +-
 libcore/parser/BitmapMovieDefinition.h             |    2 +-
 libcore/parser/SWFMovieDefinition.cpp              |   14 +-
 libcore/parser/SWFMovieDefinition.h                |   10 +-
 libcore/parser/action_buffer.cpp                   |    2 +-
 libcore/parser/movie_definition.h                  |    6 +-
 libcore/swf/DefineBitsTag.cpp                      |   55 ++++----
 libcore/swf/DefineButtonSoundTag.cpp               |    4 +-
 libcore/swf/DefineButtonTag.cpp                    |    4 +-
 libcore/swf/DefineButtonTag.h                      |    4 +-
 libcore/swf/DefineEditTextTag.cpp                  |    2 +-
 libcore/swf/DefineFontTag.cpp                      |   10 +-
 libcore/swf/DefineTextTag.cpp                      |    4 +-
 libcore/swf/DefineVideoStreamTag.cpp               |    6 +-
 libcore/swf/DefineVideoStreamTag.h                 |    4 +-
 libcore/swf/DoABCTag.h                             |    2 +-
 libcore/swf/PlaceObject2Tag.cpp                    |   10 +-
 libcore/swf/StreamSoundBlockTag.cpp                |    4 +-
 libcore/swf/VideoFrameTag.cpp                      |    4 +-
 libcore/swf/tag_loaders.cpp                        |    4 +-
 libcore/vm/VM.h                                    |    2 +-
 libdevice/directfb/Renderer_DirectFB.cpp           |    2 +-
 libdevice/directfb/Renderer_DirectFB.h             |    2 +-
 libdevice/vaapi/VaapiContext.h                     |    4 +-
 libdevice/vaapi/VaapiGlobalContext.cpp             |    6 +-
 libdevice/vaapi/VaapiGlobalContext.h               |    4 +-
 libdevice/vaapi/VaapiSurface.h                     |    2 +-
 libdevice/vaapi/VaapiSurfaceGLX.h                  |    2 +-
 libmedia/AudioDecoder.h                            |    4 +-
 libmedia/FLVParser.cpp                             |   32 +++---
 libmedia/FLVParser.h                               |   14 +-
 libmedia/MediaHandler.cpp                          |   14 +-
 libmedia/MediaHandler.h                            |   14 +-
 libmedia/MediaParser.cpp                           |   18 ++--
 libmedia/MediaParser.h                             |   29 ++--
 libmedia/VideoConverter.h                          |    4 +-
 libmedia/VideoDecoder.h                            |    4 +-
 libmedia/ffmpeg/MediaHandlerFfmpeg.cpp             |   26 ++--
 libmedia/ffmpeg/MediaHandlerFfmpeg.h               |   10 +-
 libmedia/ffmpeg/MediaParserFfmpeg.cpp              |   12 +-
 libmedia/ffmpeg/MediaParserFfmpeg.h                |    2 +-
 libmedia/ffmpeg/VideoConverterFfmpeg.cpp           |    4 +-
 libmedia/ffmpeg/VideoConverterFfmpeg.h             |    4 +-
 libmedia/ffmpeg/VideoDecoderFfmpeg.cpp             |   12 +-
 libmedia/ffmpeg/VideoDecoderFfmpeg.h               |   12 +-
 libmedia/gst/MediaHandlerGst.cpp                   |   26 ++--
 libmedia/gst/MediaHandlerGst.h                     |   10 +-
 libmedia/gst/MediaParserGst.cpp                    |    8 +-
 libmedia/gst/MediaParserGst.h                      |    2 +-
 libmedia/gst/VideoConverterGst.cpp                 |    4 +-
 libmedia/gst/VideoConverterGst.h                   |    2 +-
 libmedia/gst/VideoDecoderGst.cpp                   |    6 +-
 libmedia/gst/VideoDecoderGst.h                     |    4 +-
 libmedia/haiku/MediaHandlerHaiku.cpp               |   18 ++--
 libmedia/haiku/MediaHandlerHaiku.h                 |   10 +-
 libmedia/haiku/MediaParserHaiku.cpp                |    2 +-
 libmedia/haiku/MediaParserHaiku.h                  |    2 +-
 libmedia/haiku/VideoConverterHaiku.cpp             |    2 +-
 libmedia/haiku/VideoConverterHaiku.h               |    2 +-
 libmedia/haiku/VideoDecoderHaiku.cpp               |    4 +-
 libmedia/haiku/VideoDecoderHaiku.h                 |    2 +-
 librender/Renderer.h                               |    4 +-
 librender/agg/Renderer_agg.cpp                     |    8 +-
 librender/agg/Renderer_agg_bitmap.h                |    2 +-
 librender/cairo/Renderer_cairo.cpp                 |    2 +-
 librender/cairo/Renderer_cairo.h                   |    2 +-
 librender/opengl/Renderer_ogl.cpp                  |   14 +-
 librender/opengles1/Renderer_gles1.cpp             |    2 +-
 librender/opengles1/Renderer_gles1.h               |    4 +-
 librender/openvg/OpenVGRenderer.cpp                |    2 +-
 librender/openvg/OpenVGRenderer.h                  |    2 +-
 librender/testr.cpp                                |   10 +-
 libsound/EmbedSound.cpp                            |    6 +-
 libsound/EmbedSound.h                              |    6 +-
 libsound/StreamingSoundData.cpp                    |    8 +-
 libsound/StreamingSoundData.h                      |    4 +-
 libsound/aos4/sound_handler_ahi.cpp                |    6 +-
 libsound/aos4/sound_handler_ahi.h                  |    4 +-
 libsound/mkit/sound_handler_mkit.cpp               |    6 +-
 libsound/mkit/sound_handler_mkit.h                 |    4 +-
 libsound/sdl/sound_handler_sdl.cpp                 |   12 +-
 libsound/sdl/sound_handler_sdl.h                   |    6 +-
 libsound/sound_handler.cpp                         |   24 ++--
 libsound/sound_handler.h                           |    6 +-
 macros/ax_cxx_compile_stdcxx_11.m4                 |  142 ++++++++++++++++++++
 plugin/aos4/plugin.cpp                             |    2 +-
 plugin/aos4/plugin.h                               |    2 +-
 plugin/win32/plugin.cpp                            |    2 +-
 plugin/win32/plugin.h                              |    2 +-
 testsuite/DummyCharacter.h                         |    2 +-
 testsuite/DummyMovieDefinition.h                   |    2 +-
 testsuite/MovieTester.cpp                          |    6 +-
 testsuite/MovieTester.h                            |    6 +-
 testsuite/libbase.all/CurlStreamTest.cpp           |    6 +-
 testsuite/libbase.all/NoSeekFileTest.cpp           |    2 +-
 testsuite/libcore.all/ClassSizes.cpp               |    2 +-
 .../misc-ming.all/loading/loadMovieTestRunner.cpp  |    2 +-
 testsuite/misc-ming.all/loop/loop_test-Runner.cpp  |    2 +-
 .../misc-ming.all/sound/eventSoundTest1-Runner.cpp |    2 +-
 testsuite/misc-swfc.all/button_test1runner.cpp     |    2 +-
 testsuite/misc-swfc.all/sound_stop_runner.cpp      |    2 +-
 .../misc-swfmill.all/backgroundTestRunner.cpp      |    2 +-
 .../misc-swfmill.all/missing_bitmapTestRunner.cpp  |    2 +-
 testsuite/samples/clip_as_button2-TestRunner.cpp   |    2 +-
 .../samples/gotoFrameOnKeyEvent-TestRunner.cpp     |    2 +-
 testsuite/samples/subshapes-TestRunner.cpp         |    2 +-
 testsuite/samples/test_15bpp_bitmap-TestRunner.cpp |    2 +-
 utilities/processor.cpp                            |    4 +-
 202 files changed, 832 insertions(+), 687 deletions(-)
 create mode 100644 macros/ax_cxx_compile_stdcxx_11.m4


hooks/post-receive
-- 
Gnash



reply via email to

[Prev in Thread] Current Thread [Next in Thread]