[SCM] GNU Shockwave Flash (SWF) player branch, upstream, updated. upstream/0.8.11_git20140419-1-g6f3a9e8
Gabriele Giacone
gg0-guest at moszumanska.debian.org
Tue Jul 8 21:32:51 UTC 2014
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 "GNU Shockwave Flash (SWF) player".
The branch, upstream has been updated
via 6f3a9e8e8717134511e3c52e9005abe2aca33dd1 (commit)
from 2da9a9681f8dd68cd58ec28e8cbfcb39d35dd40d (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 -----------------------------------------------------------------
-----------------------------------------------------------------------
Summary of changes:
Makefile.am | 2 +-
NEWS | 10 +-
configure.ac | 43 +-
cygnal/Makefile.am | 5 +-
cygnal/alloc.cpp | 8 +-
cygnal/cgi-bin/echo/Makefile.am | 2 +-
cygnal/cgi-bin/echo/echo.cpp | 59 +-
cygnal/cgi-bin/echo/echo.h | 35 +-
cygnal/cgi-bin/echo/gateway.cpp | 59 +-
cygnal/cgi-bin/echo/gateway.h | 9 +-
cygnal/cgi-bin/fitcDemo/Makefile.am | 2 +-
cygnal/cgi-bin/fitcDemo/fitcDemo.cpp | 53 +-
cygnal/cgi-bin/fitcDemo/fitcDemo.h | 25 +-
cygnal/cgi-bin/oflaDemo/Makefile.am | 2 +-
cygnal/cgi-bin/oflaDemo/oflaDemo.cpp | 111 +-
cygnal/cgi-bin/oflaDemo/oflaDemo.h | 41 +-
cygnal/crc.cpp | 2 +-
cygnal/cvm.cpp | 8 +-
cygnal/cygnal.cpp | 75 +-
cygnal/cygnal.h | 33 +-
cygnal/handler.cpp | 39 +-
cygnal/handler.h | 62 +-
cygnal/http_server.cpp | 129 +-
cygnal/http_server.h | 33 +-
cygnal/libamf/amf.cpp | 289 +-
cygnal/libamf/amf.h | 67 +-
cygnal/libamf/amf_msg.cpp | 119 +-
cygnal/libamf/amf_msg.h | 45 +-
cygnal/libamf/buffer.cpp | 96 +-
cygnal/libamf/buffer.h | 52 +-
cygnal/libamf/element.cpp | 141 +-
cygnal/libamf/element.h | 83 +-
cygnal/libamf/flv.cpp | 83 +-
cygnal/libamf/flv.h | 55 +-
cygnal/libamf/lcshm.cpp | 123 +-
cygnal/libamf/lcshm.h | 46 +-
cygnal/libamf/sol.cpp | 72 +-
cygnal/libamf/sol.h | 25 +-
cygnal/libnet/Makefile.am | 2 +-
cygnal/libnet/cache.cpp | 45 +-
cygnal/libnet/cache.h | 16 +-
cygnal/libnet/cque.cpp | 66 +-
cygnal/libnet/cque.h | 40 +-
cygnal/libnet/cqueue.cpp | 6 +-
cygnal/libnet/cqueue.h | 18 +-
cygnal/libnet/diskstream.cpp | 88 +-
cygnal/libnet/diskstream.h | 24 +-
cygnal/libnet/http.cpp | 119 +-
cygnal/libnet/http.h | 39 +-
cygnal/libnet/lirc.cpp | 4 +-
cygnal/libnet/network.cpp | 73 +-
cygnal/libnet/network.h | 25 +-
cygnal/libnet/rtmp.cpp | 237 +-
cygnal/libnet/rtmp.h | 91 +-
cygnal/libnet/rtmp_client.cpp | 147 +-
cygnal/libnet/rtmp_client.h | 31 +-
cygnal/libnet/rtmp_msg.cpp | 32 +-
cygnal/libnet/rtmp_msg.h | 22 +-
cygnal/libnet/sshclient.cpp | 16 +-
cygnal/libnet/sshclient.h | 18 +-
cygnal/libnet/sshserver.cpp | 12 +-
cygnal/libnet/sshserver.h | 6 +-
cygnal/libnet/sslclient.cpp | 16 +-
cygnal/libnet/sslclient.h | 18 +-
cygnal/libnet/sslserver.cpp | 14 +-
cygnal/libnet/sslserver.h | 6 +-
cygnal/libnet/statistics.cpp | 8 +-
cygnal/libnet/statistics.h | 2 +-
cygnal/proc.cpp | 22 +-
cygnal/proc.h | 11 +-
cygnal/rtmp_server.cpp | 305 +-
cygnal/rtmp_server.h | 59 +-
cygnal/serverSO.cpp | 2 +-
cygnal/testsuite/cygnal.all/Makefile.am | 4 +-
cygnal/testsuite/libamf.all/Makefile.am | 5 +-
cygnal/testsuite/libamf.all/test_amf.cpp | 53 +-
cygnal/testsuite/libamf.all/test_amfmsg.cpp | 29 +-
cygnal/testsuite/libamf.all/test_buffer.cpp | 28 +-
cygnal/testsuite/libamf.all/test_el.cpp | 10 +-
cygnal/testsuite/libamf.all/test_flv.cpp | 40 +-
cygnal/testsuite/libamf.all/test_lc.cpp | 10 +-
cygnal/testsuite/libamf.all/test_number.cpp | 4 +-
cygnal/testsuite/libamf.all/test_sol.cpp | 5 +-
cygnal/testsuite/libnet.all/Makefile.am | 4 +-
cygnal/testsuite/libnet.all/generate_amfbins.cpp | 24 +-
cygnal/testsuite/libnet.all/test_cache.cpp | 26 +-
cygnal/testsuite/libnet.all/test_cque.cpp | 30 +-
cygnal/testsuite/libnet.all/test_diskstream.cpp | 6 +-
cygnal/testsuite/libnet.all/test_handler.cpp | 26 +-
cygnal/testsuite/libnet.all/test_http.cpp | 338 +-
cygnal/testsuite/libnet.all/test_rtmp.cpp | 129 +-
extensions/dejagnu/Makefile.am | 2 +-
extensions/dejagnu/dejagnu.h | 2 +-
extensions/fileio/Makefile.am | 2 +-
extensions/fileio/fileio.cpp | 6 +-
extensions/gtk2/gtkext.cpp | 6 +-
extensions/gtk2/gtkext.h | 4 +-
extensions/mysql/mysql_db.cpp | 18 +-
gui/Player.cpp | 31 +-
gui/Player.h | 15 +-
gui/ScreenShotter.cpp | 14 +-
gui/ScreenShotter.h | 6 +-
gui/aos4/aos4.cpp | 2 +-
gui/aos4/aos4_agg_glue.h | 2 +-
gui/aos4/aos4_cairo_glue.h | 2 +-
gui/aos4/aos4_glue.h | 2 +-
gui/aos4/gui_aos4.cpp | 6 +-
gui/aqua/aqua.cpp | 2 +-
gui/aqua/gui_aqua.cpp | 6 +-
gui/dump/dump.cpp | 14 +-
gui/dump/dump.h | 8 +-
gui/dump/gui_dump.cpp | 6 +-
gui/fb/fb.cpp | 33 +-
gui/fb/fb_glue.h | 2 +-
gui/fb/fb_glue_agg.cpp | 23 +-
gui/fb/fb_glue_agg.h | 5 +-
gui/fb/fb_glue_gles1.h | 4 +-
gui/fb/fb_glue_ovg.cpp | 2 +-
gui/fb/fb_glue_ovg.h | 2 +-
gui/fb/fbsup.h | 10 +-
gui/fb/gui_fb.cpp | 6 +-
gui/fltk/fltk_glue_cairo.cpp | 2 +-
gui/fltk/gui_fltk.cpp | 6 +-
gui/gnash.cpp | 78 +-
gui/gtk/gtk.cpp | 66 +-
gui/gtk/gtk_canvas.cpp | 13 +-
gui/gtk/gtk_canvas.h | 4 +-
gui/gtk/gtk_glue.h | 2 +-
gui/gtk/gtk_glue_agg.cpp | 6 +-
gui/gtk/gtk_glue_agg.h | 1 -
gui/gtk/gtk_glue_agg_vaapi.cpp | 8 +-
gui/gtk/gtk_glue_agg_vaapi.h | 10 +-
gui/gtk/gtk_glue_cairo.cpp | 23 +-
gui/gtk/gtk_glue_gtkglext.cpp | 6 +-
gui/gtk/gtk_glue_gtkglext.h | 1 -
gui/gtk/gtk_glue_ovg.cpp | 2 +-
gui/gtk/gtk_glue_ovg.h | 5 +-
gui/gtk/gtksup.h | 2 +-
gui/gtk/gui_gtk.cpp | 6 +-
gui/gui.cpp | 50 +-
gui/gui.h | 41 +-
gui/haiku/gui_haiku.cpp | 6 +-
gui/haiku/haiku_agg_glue.cpp | 4 +-
gui/haiku/haiku_agg_glue.h | 6 +-
gui/pythonmod/Makefile.am | 20 +-
gui/pythonmod/gnash-view.cpp | 71 +-
gui/qt/GuiQt4.cpp | 6 +-
gui/qt/Qt4Glue.h | 2 +-
gui/qt/Qt4GlueAgg.cpp | 2 +-
gui/qt/Qt4GlueAgg.h | 7 +-
gui/qt/Qt4GlueCairo.cpp | 7 +-
gui/qt/Qt4GlueCairo.h | 9 +-
gui/qt/Qt4GlueOgl.cpp | 5 +-
gui/qt/Qt4GlueOgl.h | 3 -
gui/qt/Qt4Gui.cpp | 84 +-
gui/qt/Qt4Gui.h | 7 +-
gui/qt/gui_kde.cpp | 6 +-
gui/qt/kde_glue_agg.h | 5 +-
gui/qt/kdesup.h | 4 +-
gui/sdl/gui_sdl.cpp | 6 +-
gui/sdl/sdl.cpp | 2 +-
gui/sdl/sdl_agg_glue.cpp | 14 +-
gui/sdl/sdl_agg_glue.h | 6 +-
gui/sdl/sdl_cairo_glue.cpp | 12 +-
gui/sdl/sdl_cairo_glue.h | 4 +-
gui/sdl/sdl_glue.h | 4 +-
gui/sdl/sdl_ogl_glue.cpp | 2 +-
gui/sdl/sdl_ogl_glue.h | 2 +-
libbase/AMF.cpp | 22 +-
libbase/AMF.h | 30 +-
libbase/BitsReader.cpp | 6 +-
libbase/BitsReader.h | 30 +-
libbase/ClockTime.cpp | 14 +-
libbase/ClockTime.h | 6 +-
libbase/GC.cpp | 16 +-
libbase/GC.h | 6 +-
libbase/GnashAlgorithm.h | 6 +-
libbase/GnashFactory.h | 20 +-
libbase/GnashImage.cpp | 26 +-
libbase/GnashImage.h | 30 +-
libbase/GnashImageGif.cpp | 17 +-
libbase/GnashImageGif.h | 3 +-
libbase/GnashImageJpeg.cpp | 33 +-
libbase/GnashImageJpeg.h | 18 +-
libbase/GnashImagePng.cpp | 51 +-
libbase/GnashImagePng.h | 5 +-
libbase/GnashNumeric.h | 23 +-
libbase/GnashScopedPtr.h | 85 -
libbase/GnashSleep.h | 2 +-
libbase/GnashVaapiImage.cpp | 18 +-
libbase/GnashVaapiImage.h | 13 +-
libbase/GnashVaapiImageProxy.h | 7 +-
libbase/GnashVaapiTexture.cpp | 2 +-
libbase/GnashVaapiTexture.h | 4 +-
libbase/IOChannel.cpp | 38 +-
libbase/IOChannel.h | 18 +-
libbase/ImageIterators.h | 6 +-
libbase/Makefile.am | 2 -
libbase/NamingPolicy.cpp | 4 +-
libbase/NamingPolicy.h | 2 +-
libbase/NetworkAdapter.cpp | 127 +-
libbase/NetworkAdapter.h | 8 +-
libbase/Point2d.h | 32 +-
libbase/RTMP.cpp | 133 +-
libbase/RTMP.h | 53 +-
libbase/Range2d.h | 58 +-
libbase/SWFCtype.cpp | 317 +-
libbase/SharedMem.cpp | 6 +-
libbase/SharedMem.h | 4 +-
libbase/SimpleBuffer.h | 78 +-
libbase/Socket.cpp | 24 +-
libbase/Socket.h | 4 +-
libbase/StreamProvider.cpp | 49 +-
libbase/StreamProvider.h | 18 +-
libbase/URL.cpp | 7 +-
libbase/URLAccessManager.cpp | 4 +-
libbase/WallClockTimer.cpp | 4 +-
libbase/WallClockTimer.h | 6 +-
libbase/accumulator.h | 6 +-
libbase/arg_parser.cpp | 6 +-
libbase/arg_parser.h | 5 +-
libbase/extension.cpp | 6 +-
libbase/log.cpp | 75 +-
libbase/log.h | 174 +-
libbase/memory.cpp | 6 +-
libbase/noseek_fd_adapter.cpp | 7 +-
libbase/noseek_fd_adapter.h | 2 +-
libbase/rc.cpp | 12 +-
libbase/rc.h | 12 +-
libbase/ref_counted.h | 6 +-
libbase/sharedlib.cpp | 19 +-
libbase/sharedlib.h | 8 +-
libbase/snappingrange.h | 8 +-
libbase/string_table.cpp | 6 +-
libbase/string_table.h | 8 +-
libbase/tree.hh | 122 +-
libbase/tu_file.cpp | 30 +-
libbase/tu_file.h | 4 +-
libbase/utf8.cpp | 26 +-
libbase/utf8.h | 11 +-
libbase/utility.h | 2 +-
libbase/zlib_adapter.cpp | 18 +-
libbase/zlib_adapter.h | 4 +-
libcore/AMFConverter.cpp | 16 +-
libcore/AMFConverter.h | 8 +-
libcore/Bitmap.cpp | 8 +-
libcore/Bitmap.h | 4 +-
libcore/BitmapMovie.cpp | 2 +-
libcore/Button.cpp | 64 +-
libcore/Button.h | 8 +-
libcore/CharacterProxy.cpp | 4 +-
libcore/CharacterProxy.h | 1 -
libcore/ClassHierarchy.cpp | 9 +-
libcore/ClassHierarchy.h | 10 +-
libcore/DisplayList.cpp | 58 +-
libcore/DisplayList.h | 14 +-
libcore/DisplayObject.cpp | 98 +-
libcore/DisplayObject.h | 40 +-
libcore/DisplayObjectContainer.cpp | 2 +-
libcore/DragState.h | 16 +-
libcore/DynamicShape.cpp | 16 +-
libcore/DynamicShape.h | 16 +-
libcore/ExternalInterface.cpp | 14 +-
libcore/ExternalInterface.h | 6 +-
libcore/FillStyle.cpp | 14 +-
libcore/FillStyle.h | 18 +-
libcore/Filters.h | 105 +-
libcore/Font.cpp | 40 +-
libcore/Font.h | 37 +-
libcore/FreetypeGlyphsProvider.cpp | 66 +-
libcore/FreetypeGlyphsProvider.h | 14 +-
libcore/Function.cpp | 8 +-
libcore/Function.h | 12 +-
libcore/Function2.cpp | 4 +-
libcore/Function2.h | 10 +-
libcore/Geometry.cpp | 6 +-
libcore/Geometry.h | 45 +-
libcore/HostInterface.h | 12 +-
libcore/InteractiveObject.h | 8 +-
libcore/LineStyle.cpp | 6 +-
libcore/LineStyle.h | 9 +-
libcore/LoadVariablesThread.cpp | 219 +-
libcore/LoadVariablesThread.h | 127 +-
libcore/MorphShape.cpp | 2 +-
libcore/MorphShape.h | 2 +-
libcore/MouseButtonState.h | 4 +-
libcore/Movie.h | 6 +-
libcore/MovieClip.cpp | 144 +-
libcore/MovieClip.h | 22 +-
libcore/MovieFactory.cpp | 30 +-
libcore/MovieFactory.h | 6 +-
libcore/MovieLibrary.h | 11 +-
libcore/MovieLoader.cpp | 68 +-
libcore/MovieLoader.h | 49 +-
libcore/PropFlags.h | 10 +-
libcore/Property.cpp | 5 +-
libcore/Property.h | 40 +-
libcore/PropertyList.cpp | 26 +-
libcore/PropertyList.h | 15 +-
libcore/RGBA.cpp | 2 +-
libcore/RGBA.h | 22 +-
libcore/RunResources.h | 42 +-
libcore/SWFCxForm.cpp | 20 +-
libcore/SWFCxForm.h | 23 +-
libcore/SWFMatrix.cpp | 54 +-
libcore/SWFMatrix.h | 34 +-
libcore/SWFMovie.cpp | 10 +-
libcore/SWFMovie.h | 8 +-
libcore/SWFRect.cpp | 24 +-
libcore/SWFRect.h | 54 +-
libcore/SWFStream.cpp | 50 +-
libcore/SWFStream.h | 28 +-
libcore/Shape.cpp | 16 +-
libcore/Shape.h | 18 +-
libcore/StaticText.cpp | 6 +-
libcore/StaticText.h | 4 +-
libcore/SystemClock.cpp | 4 +-
libcore/SystemClock.h | 4 +-
libcore/TextField.cpp | 153 +-
libcore/TextField.h | 56 +-
libcore/Timers.cpp | 14 +-
libcore/Timers.h | 6 +-
libcore/Transform.h | 9 +-
libcore/UserFunction.h | 2 +-
libcore/Video.cpp | 16 +-
libcore/Video.h | 10 +-
libcore/abc/AbcBlock.cpp | 126 +-
libcore/abc/AbcBlock.h | 25 +-
libcore/abc/Class.cpp | 22 +-
libcore/abc/Class.h | 8 +-
libcore/abc/CodeStream.cpp | 16 +-
libcore/abc/CodeStream.h | 10 +-
libcore/abc/Method.cpp | 16 +-
libcore/abc/Method.h | 44 +-
libcore/abc/MultiName.h | 4 +-
libcore/abc/abc_function.h | 2 +-
libcore/abc/asException.h | 12 +-
libcore/as_environment.cpp | 28 +-
libcore/as_environment.h | 4 +-
libcore/as_function.cpp | 2 +-
libcore/as_object.cpp | 47 +-
libcore/as_object.h | 20 +-
libcore/as_value.cpp | 21 +-
libcore/as_value.h | 26 +-
libcore/asobj/ASConversions.cpp | 26 +-
libcore/asobj/Array_as.cpp | 69 +-
libcore/asobj/AsBroadcaster.cpp | 2 +-
libcore/asobj/Camera_as.cpp | 10 +-
libcore/asobj/Color_as.cpp | 24 +-
libcore/asobj/ContextMenuItem_as.cpp | 2 +-
libcore/asobj/ContextMenu_as.cpp | 4 +-
libcore/asobj/Date_as.cpp | 67 +-
libcore/asobj/Error_as.cpp | 2 +-
libcore/asobj/Function_as.cpp | 4 +-
libcore/asobj/Global_as.cpp | 87 +-
libcore/asobj/Global_as.h | 61 +-
libcore/asobj/Key_as.cpp | 2 +-
libcore/asobj/LoadVars_as.cpp | 2 +-
libcore/asobj/LoadableObject.cpp | 8 +-
libcore/asobj/LocalConnection_as.cpp | 66 +-
libcore/asobj/Microphone_as.cpp | 13 +-
libcore/asobj/Mouse_as.cpp | 2 +-
libcore/asobj/MovieClipLoader.cpp | 2 +-
libcore/asobj/MovieClip_as.cpp | 82 +-
libcore/asobj/NetConnection_as.cpp | 94 +-
libcore/asobj/NetConnection_as.h | 7 +-
libcore/asobj/NetStream_as.cpp | 147 +-
libcore/asobj/NetStream_as.h | 77 +-
libcore/asobj/Object.cpp | 4 +-
libcore/asobj/PlayHead.cpp | 8 +-
libcore/asobj/PlayHead.h | 10 +-
libcore/asobj/Selection_as.cpp | 4 +-
libcore/asobj/SharedObject_as.cpp | 85 +-
libcore/asobj/Sound_as.cpp | 81 +-
libcore/asobj/String_as.cpp | 14 +-
libcore/asobj/String_as.h | 2 +-
libcore/asobj/TextField_as.cpp | 16 +-
libcore/asobj/TextFormat_as.cpp | 32 +-
libcore/asobj/TextFormat_as.h | 38 +-
libcore/asobj/TextSnapshot_as.cpp | 70 +-
libcore/asobj/XMLNode_as.cpp | 120 +-
libcore/asobj/XMLNode_as.h | 23 +-
libcore/asobj/XMLSocket_as.cpp | 14 +-
libcore/asobj/XML_as.cpp | 45 +-
libcore/asobj/XML_as.h | 5 +-
libcore/asobj/flash/display/BitmapData_as.cpp | 165 +-
libcore/asobj/flash/display/BitmapData_as.h | 8 +-
.../asobj/flash/external/ExternalInterface_as.cpp | 5 +-
libcore/asobj/flash/filters/BevelFilter_as.cpp | 10 +-
libcore/asobj/flash/filters/BitmapFilter_as.cpp | 2 +-
libcore/asobj/flash/filters/BlurFilter_as.cpp | 2 +-
.../asobj/flash/filters/DropShadowFilter_as.cpp | 2 +-
libcore/asobj/flash/filters/GlowFilter_as.cpp | 4 +-
.../asobj/flash/filters/GradientBevelFilter_as.cpp | 2 +-
.../asobj/flash/filters/GradientGlowFilter_as.cpp | 2 +-
libcore/asobj/flash/geom/ColorTransform_as.cpp | 10 +-
libcore/asobj/flash/geom/Matrix_as.cpp | 2 +-
libcore/asobj/flash/geom/Rectangle_as.cpp | 4 +-
libcore/asobj/flash/net/FileReferenceList_as.h | 2 +-
libcore/asobj/flash/net/FileReference_as.cpp | 7 +-
libcore/asobj/flash/net/FileReference_as.h | 2 +-
libcore/asobj/flash/text/TextRenderer_as.cpp | 2 +-
libcore/asobj/flash/text/TextRenderer_as.h | 2 +-
libcore/builtin_function.h | 7 +-
libcore/event_id.cpp | 85 +-
libcore/event_id.h | 2 +-
libcore/fontlib.cpp | 13 +-
libcore/movie_root.cpp | 190 +-
libcore/movie_root.h | 56 +-
libcore/parser/BitmapMovieDefinition.cpp | 10 +-
libcore/parser/BitmapMovieDefinition.h | 6 +-
libcore/parser/SWFMovieDefinition.cpp | 170 +-
libcore/parser/SWFMovieDefinition.h | 116 +-
libcore/parser/SWFParser.cpp | 2 +-
libcore/parser/SWFParser.h | 3 +-
libcore/parser/TypesParser.cpp | 81 +-
libcore/parser/action_buffer.cpp | 65 +-
libcore/parser/action_buffer.h | 22 +-
libcore/parser/filter_factory.cpp | 16 +-
libcore/parser/filter_factory.h | 4 +-
libcore/parser/movie_definition.h | 36 +-
libcore/parser/sprite_definition.cpp | 2 +-
libcore/parser/sprite_definition.h | 14 +-
libcore/swf/CSMTextSettingsTag.cpp | 8 +-
libcore/swf/DefaultTagLoaders.cpp | 177 +-
libcore/swf/DefineBitsTag.cpp | 106 +-
libcore/swf/DefineButtonCxformTag.cpp | 7 +-
libcore/swf/DefineButtonSoundTag.cpp | 7 +-
libcore/swf/DefineButtonSoundTag.h | 4 +-
libcore/swf/DefineButtonTag.cpp | 32 +-
libcore/swf/DefineButtonTag.h | 33 +-
libcore/swf/DefineEditTextTag.cpp | 6 +-
libcore/swf/DefineEditTextTag.h | 24 +-
libcore/swf/DefineFontAlignZonesTag.cpp | 14 +-
libcore/swf/DefineFontNameTag.h | 2 +-
libcore/swf/DefineFontTag.cpp | 37 +-
libcore/swf/DefineFontTag.h | 22 +-
libcore/swf/DefineMorphShapeTag.cpp | 12 +-
libcore/swf/DefineMorphShapeTag.h | 2 +-
libcore/swf/DefineScalingGridTag.cpp | 2 +-
libcore/swf/DefineSceneAndFrameLabelDataTag.h | 12 +-
libcore/swf/DefineShapeTag.cpp | 8 +-
libcore/swf/DefineShapeTag.h | 4 +-
libcore/swf/DefineTextTag.cpp | 10 +-
libcore/swf/DefineTextTag.h | 2 +-
libcore/swf/DefineVideoStreamTag.cpp | 15 +-
libcore/swf/DefineVideoStreamTag.h | 50 +-
libcore/swf/DefinitionTag.h | 9 +-
libcore/swf/DoABCTag.h | 2 +-
libcore/swf/DoInitActionTag.h | 2 +-
libcore/swf/ExportAssetsTag.h | 9 +-
libcore/swf/ImportAssetsTag.h | 11 +-
libcore/swf/PlaceObject2Tag.cpp | 21 +-
libcore/swf/PlaceObject2Tag.h | 16 +-
libcore/swf/ScriptLimitsTag.h | 4 +-
libcore/swf/SetTabIndexTag.cpp | 4 +-
libcore/swf/ShapeRecord.cpp | 110 +-
libcore/swf/ShapeRecord.h | 7 +-
libcore/swf/SoundStreamHeadTag.cpp | 16 +-
libcore/swf/SoundStreamHeadTag.h | 2 -
libcore/swf/StartSoundTag.cpp | 3 +-
libcore/swf/StartSoundTag.h | 4 +-
libcore/swf/StreamSoundBlockTag.cpp | 14 +-
libcore/swf/StreamSoundBlockTag.h | 6 +-
libcore/swf/SymbolClassTag.h | 4 +-
libcore/swf/TagLoadersTable.h | 4 +-
libcore/swf/TextRecord.cpp | 42 +-
libcore/swf/TextRecord.h | 12 +-
libcore/swf/VideoFrameTag.cpp | 8 +-
libcore/swf/tag_loaders.cpp | 49 +-
libcore/swf_event.h | 5 +-
libcore/vm/ASHandlers.cpp | 135 +-
libcore/vm/ActionExec.cpp | 38 +-
libcore/vm/ActionExec.h | 14 +-
libcore/vm/CallStack.h | 2 +-
libcore/vm/ExecutableCode.h | 21 +-
libcore/vm/Machine.cpp | 118 +-
libcore/vm/Machine.h | 6 +-
libcore/vm/SafeStack.h | 2 +-
libcore/vm/VM.cpp | 20 +-
libcore/vm/VM.h | 10 +-
libcore/vm/fn_call.h | 38 +-
libdevice/DeviceGlue.cpp | 2 +-
libdevice/DeviceGlue.h | 9 +-
libdevice/GnashDevice.h | 6 +-
libdevice/directfb/DirectFBDevice.h | 3 +-
libdevice/directfb/Renderer_DirectFB.cpp | 4 +-
libdevice/directfb/Renderer_DirectFB.h | 2 +-
libdevice/egl/eglDevice.h | 3 +-
libdevice/events/EventDevice.cpp | 39 +-
libdevice/events/InputDevice.cpp | 26 +-
libdevice/events/InputDevice.h | 29 +-
libdevice/events/MouseDevice.cpp | 13 +-
libdevice/events/TouchDevice.cpp | 16 +-
libdevice/events/UinputDevice.cpp | 11 +-
libdevice/rawfb/RawFBDevice.cpp | 32 +-
libdevice/rawfb/RawFBDevice.h | 11 +-
libdevice/vaapi/VaapiContext.cpp | 6 +-
libdevice/vaapi/VaapiContext.h | 10 +-
libdevice/vaapi/VaapiDevice.h | 3 +-
libdevice/vaapi/VaapiGlobalContext.cpp | 6 +-
libdevice/vaapi/VaapiGlobalContext.h | 4 +-
libdevice/vaapi/VaapiImage.cpp | 4 +-
libdevice/vaapi/VaapiImage.h | 5 +-
libdevice/vaapi/VaapiSubpicture.cpp | 2 +-
libdevice/vaapi/VaapiSubpicture.h | 4 +-
libdevice/vaapi/VaapiSurface.cpp | 16 +-
libdevice/vaapi/VaapiSurface.h | 8 +-
libdevice/vaapi/VaapiSurfaceGLX.cpp | 40 +-
libdevice/vaapi/VaapiSurfaceGLX.h | 4 +-
libdevice/vaapi/VaapiSurfaceProxy.cpp | 4 +-
libdevice/vaapi/VaapiSurfaceProxy.h | 12 +-
libdevice/vaapi/vaapi_common.h | 7 +-
libdevice/vaapi/vaapi_utils.cpp | 2 +-
libdevice/vaapi/vaapi_utils.h | 2 +-
libdevice/x11/X11Device.h | 3 +-
libmedia/AudioDecoder.h | 30 +-
libmedia/AudioDecoderSimple.cpp | 75 +-
libmedia/AudioDecoderSimple.h | 6 +-
libmedia/AudioDecoderSpeex.cpp | 41 +-
libmedia/AudioDecoderSpeex.h | 6 +-
libmedia/AudioInput.h | 2 +-
libmedia/AudioResampler.cpp | 12 +-
libmedia/AudioResampler.h | 4 +-
libmedia/FLVParser.cpp | 107 +-
libmedia/FLVParser.h | 97 +-
libmedia/MediaHandler.cpp | 21 +-
libmedia/MediaHandler.h | 26 +-
libmedia/MediaParser.cpp | 115 +-
libmedia/MediaParser.h | 147 +-
libmedia/SoundInfo.h | 14 +-
libmedia/VideoConverter.h | 18 +-
libmedia/VideoDecoder.h | 4 +-
libmedia/VideoInput.h | 2 +-
libmedia/ffmpeg/AudioDecoderFfmpeg.cpp | 84 +-
libmedia/ffmpeg/AudioDecoderFfmpeg.h | 18 +-
libmedia/ffmpeg/AudioInputFfmpeg.h | 2 +-
libmedia/ffmpeg/AudioResamplerFfmpeg.cpp | 9 +-
libmedia/ffmpeg/AudioResamplerFfmpeg.h | 6 +-
libmedia/ffmpeg/MediaHandlerFfmpeg.cpp | 28 +-
libmedia/ffmpeg/MediaHandlerFfmpeg.h | 10 +-
libmedia/ffmpeg/MediaParserFfmpeg.cpp | 168 +-
libmedia/ffmpeg/MediaParserFfmpeg.h | 49 +-
libmedia/ffmpeg/VideoConverterFfmpeg.cpp | 12 +-
libmedia/ffmpeg/VideoConverterFfmpeg.h | 4 +-
libmedia/ffmpeg/VideoDecoderFfmpeg.cpp | 40 +-
libmedia/ffmpeg/VideoDecoderFfmpeg.h | 16 +-
libmedia/ffmpeg/VideoDecoderFfmpegVaapi.cpp | 5 +-
libmedia/ffmpeg/VideoDecoderFfmpegVaapi.h | 6 +-
libmedia/ffmpeg/VideoInputFfmpeg.h | 2 +-
libmedia/gst/AudioDecoderGst.cpp | 34 +-
libmedia/gst/AudioDecoderGst.h | 8 +-
libmedia/gst/AudioInputGst.cpp | 90 +-
libmedia/gst/AudioInputGst.h | 2 +-
libmedia/gst/GstUtil.cpp | 14 +-
libmedia/gst/MediaHandlerGst.cpp | 35 +-
libmedia/gst/MediaHandlerGst.h | 10 +-
libmedia/gst/MediaParserGst.cpp | 43 +-
libmedia/gst/MediaParserGst.h | 10 +-
libmedia/gst/VideoConverterGst.cpp | 12 +-
libmedia/gst/VideoConverterGst.h | 2 +-
libmedia/gst/VideoDecoderGst.cpp | 24 +-
libmedia/gst/VideoDecoderGst.h | 8 +-
libmedia/gst/VideoInputGst.cpp | 132 +-
libmedia/gst/VideoInputGst.h | 7 +-
libmedia/haiku/AudioDecoderHaiku.cpp | 18 +-
libmedia/haiku/AudioDecoderHaiku.h | 10 +-
libmedia/haiku/AudioInputHaiku.h | 2 +-
libmedia/haiku/MediaHandlerHaiku.cpp | 24 +-
libmedia/haiku/MediaHandlerHaiku.h | 10 +-
libmedia/haiku/MediaParserHaiku.cpp | 6 +-
libmedia/haiku/MediaParserHaiku.h | 7 +-
libmedia/haiku/VideoConverterHaiku.cpp | 2 +-
libmedia/haiku/VideoConverterHaiku.h | 2 +-
libmedia/haiku/VideoDecoderHaiku.cpp | 12 +-
libmedia/haiku/VideoDecoderHaiku.h | 4 +-
libmedia/haiku/VideoInputHaiku.h | 2 +-
librender/GnashTexture.cpp | 33 +-
librender/GnashTexture.h | 3 +-
librender/Renderer.h | 10 +-
librender/agg/LinearRGB.h | 8 +-
librender/agg/Renderer_agg.cpp | 116 +-
librender/agg/Renderer_agg.h | 4 +-
librender/agg/Renderer_agg_bitmap.h | 10 +-
librender/agg/Renderer_agg_style.h | 16 +-
librender/cairo/PathParser.cpp | 25 +-
librender/cairo/PathParser.h | 6 +-
librender/cairo/Renderer_cairo.cpp | 92 +-
librender/cairo/Renderer_cairo.h | 7 +-
librender/opengl/Renderer_ogl.cpp | 143 +-
librender/opengles1/Renderer_gles1.cpp | 4 +-
librender/opengles1/Renderer_gles1.h | 6 +-
librender/openvg/OpenVGBitmap.cpp | 6 +-
librender/openvg/OpenVGBitmap.h | 4 +-
librender/openvg/OpenVGRenderer.cpp | 13 +-
librender/openvg/OpenVGRenderer.h | 5 +-
librender/testr.cpp | 20 +-
libsound/AuxStream.h | 6 +-
libsound/EmbedSound.cpp | 31 +-
libsound/EmbedSound.h | 19 +-
libsound/EmbedSoundInst.cpp | 20 +-
libsound/EmbedSoundInst.h | 6 +-
libsound/InputStream.h | 4 +-
libsound/LiveSound.cpp | 27 +-
libsound/LiveSound.h | 159 +-
libsound/NullSoundHandler.h | 4 +-
libsound/SoundEnvelope.h | 8 +-
libsound/SoundUtils.h | 6 +-
libsound/StreamingSound.cpp | 16 +-
libsound/StreamingSound.h | 4 +-
libsound/StreamingSoundData.cpp | 37 +-
libsound/StreamingSoundData.h | 17 +-
libsound/WAVWriter.cpp | 34 +-
libsound/WAVWriter.h | 4 +-
libsound/aos4/sound_handler_ahi.cpp | 74 +-
libsound/aos4/sound_handler_ahi.h | 29 +-
libsound/mkit/sound_handler_mkit.cpp | 74 +-
libsound/mkit/sound_handler_mkit.h | 33 +-
libsound/sdl/sound_handler_sdl.cpp | 78 +-
libsound/sdl/sound_handler_sdl.h | 29 +-
libsound/sound_handler.cpp | 96 +-
libsound/sound_handler.h | 30 +-
macros/ax_cxx_compile_stdcxx_11.m4 | 145 +
macros/boost.m4 | 12 +-
macros/npapi.m4 | 6 +-
macros/po.m4 | 2 +-
plugin/aos4/plugin.cpp | 6 +-
plugin/aos4/plugin.h | 2 +-
plugin/npapi/external.cpp | 15 +-
plugin/npapi/external.h | 4 +-
plugin/npapi/mozilla-sdk/np_entry.cpp | 4 +-
plugin/npapi/mozilla-sdk/npn_gate.cpp | 4 +-
plugin/npapi/plugin.cpp | 65 +-
plugin/npapi/pluginScriptObject.cpp | 66 +-
plugin/npapi/test.cpp | 2 +-
plugin/win32/plugin.cpp | 6 +-
plugin/win32/plugin.h | 2 +-
po/Makefile.am | 10 +-
po/gnash.pot | 10382 +++++++------
po/nb.po | 1292 ++
po/{zh_TW.po => zh_CN.po} | 14523 ++++++++++---------
revno.h | 2 +-
testsuite/DummyCharacter.h | 4 +-
testsuite/DummyMovieDefinition.h | 2 +-
testsuite/FuzzyPixel.h | 2 +-
testsuite/Makefile.am | 1 +
testsuite/MovieTester.cpp | 49 +-
testsuite/MovieTester.h | 28 +-
testsuite/actionscript.all/BitmapData.as | 10 +-
testsuite/actionscript.all/Date.as | 17 +-
testsuite/actionscript.all/Makefile.am | 10 +-
testsuite/actionscript.all/MovieClipLoader.as | 6 +-
testsuite/actionscript.all/XMLNode.as | 49 +-
testsuite/analyse-results.sh | 47 +-
testsuite/check.h | 11 +
testsuite/dejagnu.h | 1 +
testsuite/generic-testrunner.sh | 2 +-
testsuite/libbase.all/CurlStreamTest.cpp | 6 +-
testsuite/libbase.all/IntTypesTest.cpp | 21 +-
testsuite/libbase.all/Makefile.am | 6 +-
testsuite/libbase.all/NoSeekFileTest.cpp | 30 +-
testsuite/libbase.all/Point2dTest.cpp | 5 +-
testsuite/libbase.all/Range2dTest.cpp | 2 +-
testsuite/libbase.all/RcTest.cpp | 9 +-
testsuite/libbase.all/URLTest.cpp | 5 +-
testsuite/libbase.all/memtest.cpp | 1 +
testsuite/libbase.all/snappingrangetest.cpp | 1 +
testsuite/libbase.all/string_tableTest.cpp | 6 +-
testsuite/libcore.all/AsValueTest.cpp | 9 +-
testsuite/libcore.all/BitsReaderTest.cpp | 14 +-
testsuite/libcore.all/ClassSizes.cpp | 6 +-
testsuite/libcore.all/CodeStreamTest.cpp | 8 +-
testsuite/libcore.all/CxFormTest.cpp | 9 +-
testsuite/libcore.all/DisplayListTest.cpp | 7 +-
testsuite/libcore.all/EdgeTest.cpp | 1 +
testsuite/libcore.all/Makefile.am | 5 +-
testsuite/libcore.all/MatrixTest.cpp | 17 +-
testsuite/libcore.all/PointTest.cpp | 7 -
testsuite/libcore.all/PropFlagsTest.cpp | 1 +
testsuite/libcore.all/PropertyListTest.cpp | 6 +-
testsuite/libcore.all/SafeStackTest.cpp | 4 +-
testsuite/libcore.all/StreamTest.cpp | 13 +-
testsuite/libdevice.all/test_dfb.cpp | 1 +
testsuite/libdevice.all/test_egl.cpp | 1 +
testsuite/libdevice.all/test_events.cpp | 15 +-
testsuite/libdevice.all/test_rawfb.cpp | 3 +-
testsuite/libdevice.all/test_vaapi.cpp | 1 +
testsuite/libdevice.all/test_x11.cpp | 1 +
testsuite/libmedia.all/Makefile.am | 4 +-
testsuite/misc-haxe.all/classes.all/media/media.am | 7 +-
testsuite/misc-haxe.all/classes.all/net/net.am | 2 +
testsuite/misc-ming.all/BeginBitmapFillRunner.cpp | 4 +-
testsuite/misc-ming.all/BitmapDataTestRunner.cpp | 4 +-
.../misc-ming.all/ButtonEventsTest-Runner.cpp | 4 +-
.../misc-ming.all/ButtonPropertiesTestRunner.cpp | 4 +-
.../misc-ming.all/DefineEditTextTest-Runner.cpp | 4 +-
.../DefineEditTextVariableNameTest-Runner.cpp | 4 +-
testsuite/misc-ming.all/DefineTextTest-Runner.cpp | 5 +-
testsuite/misc-ming.all/DragDropTestRunner.cpp | 3 +-
testsuite/misc-ming.all/DrawingApiTestRunner.cpp | 4 +-
testsuite/misc-ming.all/KeyEventOrderRunner.cpp | 4 +-
testsuite/misc-ming.all/Makefile.am | 16 +-
.../misc-ming.all/NetStream-SquareTestRunner.cpp | 4 +-
.../PrototypeEventListenersTestRunner.cpp | 3 +-
.../misc-ming.all/ResolveEventsTest-Runner.cpp | 4 +-
testsuite/misc-ming.all/RollOverOutTest-Runner.cpp | 4 +-
.../SpriteButtonEventsTest-Runner.cpp | 4 +-
.../misc-ming.all/Video-EmbedSquareTestRunner.cpp | 4 +-
.../misc-ming.all/attachMovieLoopingTestRunner.cpp | 4 +-
testsuite/misc-ming.all/attachMovieTestRunner.cpp | 4 +-
testsuite/misc-ming.all/intervalTestRunner.cpp | 4 +-
testsuite/misc-ming.all/key_event_testrunner.cpp | 4 +-
testsuite/misc-ming.all/loading/Makefile.am | 1 +
.../misc-ming.all/loading/loadMovieTestRunner.cpp | 6 +-
testsuite/misc-ming.all/loop/Makefile.am | 1 +
testsuite/misc-ming.all/loop/loop_test-Runner.cpp | 6 +-
testsuite/misc-ming.all/loop/loop_test2runner.cpp | 4 +-
.../misc-ming.all/loop/simple_loop_testrunner.cpp | 4 +-
testsuite/misc-ming.all/masks_test2runner.cpp | 4 +-
testsuite/misc-ming.all/masks_testrunner.cpp | 4 +-
testsuite/misc-ming.all/morph_test1runner.cpp | 8 +-
testsuite/misc-ming.all/register_class/Makefile.am | 1 +
.../register_class/registerClassTestRunner.cpp | 4 +-
.../misc-ming.all/replace_buttons1test_runner.cpp | 4 +-
.../misc-ming.all/replace_shapes1test_runner.cpp | 4 +-
.../misc-ming.all/replace_sprites1test_runner.cpp | 4 +-
testsuite/misc-ming.all/root_stop_testrunner.cpp | 3 +-
.../sound/EmbeddedSoundTest-Runner.cpp | 5 +-
testsuite/misc-ming.all/sound/Makefile.am | 1 +
.../misc-ming.all/sound/StreamSoundTestRunner.cpp | 5 +-
.../misc-ming.all/sound/eventSoundTest1-Runner.cpp | 6 +-
.../sound/streamingSoundTest1-Runner.cpp | 4 +-
.../sound/streamingSoundTest2-Runner.cpp | 4 +-
testsuite/misc-swfc.all/Makefile.am | 20 +-
testsuite/misc-swfc.all/button_test1runner.cpp | 6 +-
testsuite/misc-swfc.all/sound_stop_runner.cpp | 6 +-
testsuite/misc-swfmill.all/Makefile.am | 1 +
.../misc-swfmill.all/backgroundTestRunner.cpp | 6 +-
.../misc-swfmill.all/missing_bitmapTestRunner.cpp | 6 +-
testsuite/movies.all/Makefile.am | 1 +
.../movies.all/gravity_embedded-TestRunner.cpp | 4 +-
testsuite/movies.all/tic_tac2-TestRunner.cpp | 92 +-
testsuite/network.all/test_ssh.cpp | 2 +-
testsuite/network.all/test_ssl.cpp | 2 +-
testsuite/samples/Makefile.am | 1 +
testsuite/samples/clip_as_button2-TestRunner.cpp | 6 +-
.../samples/gotoFrameOnKeyEvent-TestRunner.cpp | 6 +-
testsuite/samples/subshapes-TestRunner.cpp | 6 +-
testsuite/samples/test_15bpp_bitmap-TestRunner.cpp | 6 +-
testsuite/simultaneous-testrunner.sh | 74 +-
testsuite/timingissues | 9 +-
utilities/findmicrophones.cpp | 22 +-
utilities/findwebcams.cpp | 30 +-
utilities/flvdumper.cpp | 21 +-
utilities/processor.cpp | 42 +-
utilities/rtmpget.cpp | 14 +-
utilities/soldumper.cpp | 12 +-
757 files changed, 23066 insertions(+), 22147 deletions(-)
diff --git a/Makefile.am b/Makefile.am
index f8bcf34..1199d32 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -489,7 +489,7 @@ check-local:
$(MAKE) anal
anal testreport checksum:
- $(srcdir)/testsuite/analyse-results.sh
+ $(srcdir)/testsuite/analyse-results.sh $(MODE)
endif
.PHONY : dumpconfig \
diff --git a/NEWS b/NEWS
index 20dfb8a..dc3d70a 100644
--- a/NEWS
+++ b/NEWS
@@ -4,14 +4,18 @@ YYYY/MM/DD
Caveats:
* The in-tree copy of jemalloc has been removed in preference to linking
the system-installed jemalloc library.
-* The minimum required version of FFMPEG/libavcodec (if available) is 53.35.0.
+* The minimum required version of FFMPEG/libavcodec (if available) is
+ 53.35.0.
+* Extensions support is now disabled by default.
+* The minimum GCC version required to build Gnash is 4.6.0.
Improvements since 0.8.10 release are:
* Fix opening of external URL with Gnash Standalone (#31833)
* Stability fixes in image handling, (CVE-2012-1175, #39388, #37629).
- * Stability fixes in parsing (#34686) and ActionScript handling (#39385, #39404).
- * NPAPI Plugin stability fix (#36002).
+ * Stability fixes in parsing (#34686) and ActionScript handling (#39385,
+ #39404).
+ * NPAPI Plugin stability fix (#36002, #42199) and a file descriptor leak.
* Improved NetStream ActionScript class support.
* Add support for IPv6 [TODO: affects Socket/XML, and what else?].
* Fix build against recent Boost, FFMPEG and libav.
diff --git a/configure.ac b/configure.ac
index 0d580a7..10e7b49 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,5 +1,5 @@
dnl
-dnl Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
+dnl Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2014
dnl Free Software Foundation, Inc.
dnl
dnl This program is free software; you can redistribute it and/or modify
@@ -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
@@ -1358,7 +1359,7 @@ ext_lirc=no
ext_dbus=no
ext_all=no
extensions_list=
-extensions_support=yes
+extensions_support=no
nextensions=0
AC_ARG_ENABLE(extensions,
AC_HELP_STRING([--enable-extensions=], [Specify which extensions to build (default: none)])
@@ -1367,11 +1368,10 @@ AC_HELP_STRING([--disable-extensions], [Disable support for extensions entirely]
if test "x${enableval}" != "xno"; then
extlist="${enableval}"
enableval=`echo ${enableval} | tr '\054' ' ' `
- AC_DEFINE([USE_EXTENSIONS], [1], [Specify that extension support is enabled.])
+ extensions_support=yes
else
extlist=""
enableval=""
- extensions_support=no
fi
fi
nextensions=0
@@ -1451,8 +1451,6 @@ AM_CONDITIONAL(BUILD_LIRC_EXT, [ test x$ext_lirc = xyes ])
AM_CONDITIONAL(BUILD_DBUS_EXT, [ test x$ext_dbus = xyes ])
AM_CONDITIONAL(BUILD_EXTENSIONS, [ test -n "$extensions_list"])
-AM_CONDITIONAL(ENABLE_EXTENSIONS, [ test "x${extensions_support}" != "xno" ])
-
dnl --------------------------------------------------------
dnl Libtool
dnl --------------------------------------------------------
@@ -1687,12 +1685,18 @@ dnl --------------------------------------------------------
AC_ARG_ENABLE(cygnal,
AC_HELP_STRING([--enable-cygnal], [Enable building of the Cygnal server]),
[case "${enableval}" in
- yes) cygnal=yes ;;
+ yes) cygnal=yes
+ extensions_support=yes ;;
no) cygnal=no ;;
*) AC_MSG_ERROR([bad value ${enableval} for enable-cygnal option]) ;;
esac],cygnal=no)
AM_CONDITIONAL(CYGNAL, test x$cygnal = xyes)
+if test x$extensions_support = xyes; then
+ AC_DEFINE([USE_EXTENSIONS], [1], [Specify that extension support is enabled.])
+fi
+AM_CONDITIONAL(ENABLE_EXTENSIONS, [ test "x${extensions_support}" != "xno" ])
+
dnl --------------------------------------------------------
dnl Build the cgibins server if specified.
dnl --------------------------------------------------------
@@ -2143,6 +2147,11 @@ if test x$ipc_key = xno; then
)
fi
+dnl If sysv semaphores functs are stubs (e.g. on Hurd),
+dnl disable LocalConnection tests
+AC_CHECK_FUNCS(semget, semget=yes)
+AM_CONDITIONAL(HAVE_SEMGET, test x${semget} = xyes)
+
AC_CACHE_CHECK([for finite], ac_cv_finite,
[AC_TRY_COMPILE([
#include <math.h>
@@ -2689,8 +2698,15 @@ dnl ****************************************
dnl *** Check for ELF visibility support ***
dnl ****************************************
+dnl Enable visibility by default, disabled if extensions are enabled
AC_ARG_ENABLE([visibility],
- AC_HELP_STRING([--enable-visibility], [Use ELF visibility attributes]), [], [enable_visibility=no])
+ AC_HELP_STRING([--enable-visibility], [Use ELF visibility attributes])
+AC_HELP_STRING([--disable-visibility], [Disable ELF visibility]), [], [
+ if test x"$extensions_support" != x"no"; then
+ enable_visibility=no
+ else
+ enable_visibility=yes
+ fi])
if test x"$enable_visibility" != x"no"; then
dnl Check whether the compiler supports the visibility attribute
@@ -2881,11 +2897,18 @@ AC_ARG_ENABLE([harden],
[harden=yes]
)
-if test x"$harden" = x"yes" -a x"${host_cpu}" != mips -a x"${android}" != xyes; then
+if test x"$harden" = x"yes" -a x"${host_cpu}" != x"mips" -a x"${android}" != x"yes" -a x"$GCC" = x"yes"; then
CPPFLAGS="${CPPFLAGS} -D_FORTIFY_SOURCE=2"
CFLAGS="${CFLAGS} -fPIE -fstack-protector --param ssp-buffer-size=4 -Wformat -Werror=format-security"
CXXFLAGS="${CXXFLAGS} -fPIE -fstack-protector --param ssp-buffer-size=4 -Wformat -Werror=format-security"
- LDFLAGS="${LDFLAGS} -fPIE -pie -Wl,-z,relro -Wl,-z,now"
+
+ if test x"$with_gnu_ld" = x"yes"; then
+ LDFLAGS="${LDFLAGS} -fPIE -pie -Wl,-z,relro -Wl,-z,now"
+ elif test x"$darwin" = x"yes"; then
+ LDFLAGS="${LDFLAGS} -fPIE -pie"
+ else
+ LDFLAGS="${LDFLAGS}"
+ fi
fi
dnl Define convenience constants so Gnash can print out the
diff --git a/cygnal/Makefile.am b/cygnal/Makefile.am
index 30fbba6..c4b0146 100644
--- a/cygnal/Makefile.am
+++ b/cygnal/Makefile.am
@@ -44,8 +44,6 @@ sysconf_DATA = cygnalrc
# this is where Cygnal plugins get installed
pluginsdir = $(libdir)/cygnal/plugins
-AM_CPPFLAGS = -DPLUGINSDIR=\"$(pluginsdir)\"
-
AM_LDFLAGS = \
libnet/libgnashnet.la \
libamf/libgnashamf.la \
@@ -68,7 +66,7 @@ endif
localedir = $(datadir)/locale
-INCLUDES = -I.. \
+AM_CPPFLAGS = -I.. \
-I$(srcdir)/libamf \
-I$(srcdir)/libnet \
-I$(top_srcdir) \
@@ -83,6 +81,7 @@ INCLUDES = -I.. \
-I$(top_srcdir)/libcore/parser \
-I$(top_srcdir)/libcore/vm \
-DLOCALEDIR=\"$(localedir)\" \
+ -DPLUGINSDIR=\"$(pluginsdir)\" \
$(CURL_CFLAGS) \
$(BOOST_CFLAGS) \
$(PTHREAD_CFLAGS)
diff --git a/cygnal/alloc.cpp b/cygnal/alloc.cpp
index bf74cfc..9ce5902 100644
--- a/cygnal/alloc.cpp
+++ b/cygnal/alloc.cpp
@@ -19,15 +19,15 @@
/// This defines thread safe new/delete operators
#include <new>
-#include <boost/thread/mutex.hpp>
+#include <mutex>
-static boost::mutex mem_mutex;
+static std::mutex mem_mutex;
#if 0
// Wrap new in a mutex, because it is not thread safe.
void *
operator new (std::size_t bytes) throw (std::bad_alloc) {
- boost::mutex::scoped_lock lock(mem_mutex);
+ std::lock_guard<std::mutex> lock(mem_mutex);
void *ptr = malloc (bytes);
return ptr;
}
@@ -35,7 +35,7 @@ operator new (std::size_t bytes) throw (std::bad_alloc) {
// Wrap delete in a mutex, because it is not thread safe.
void
operator delete (void* vptr) throw () {
- boost::mutex::scoped_lock lock(mem_mutex);
+ std::lock_guard<std::mutex> lock(mem_mutex);
free (vptr);
}
#endif
diff --git a/cygnal/cgi-bin/echo/Makefile.am b/cygnal/cgi-bin/echo/Makefile.am
index 841a203..28c9830 100644
--- a/cygnal/cgi-bin/echo/Makefile.am
+++ b/cygnal/cgi-bin/echo/Makefile.am
@@ -31,7 +31,7 @@ GNASH_LIBS = \
$(BOOST_LIBS) \
$(NULL)
-INCLUDES = \
+AM_CPPFLAGS = \
-I$(top_srcdir)/libbase \
-I$(top_srcdir)/libcore \
-I$(top_srcdir)/libltdl \
diff --git a/cygnal/cgi-bin/echo/echo.cpp b/cygnal/cgi-bin/echo/echo.cpp
index 4087a5d..0b9d871 100644
--- a/cygnal/cgi-bin/echo/echo.cpp
+++ b/cygnal/cgi-bin/echo/echo.cpp
@@ -21,7 +21,6 @@
#include <log.h>
#include <iostream>
#include <string>
-#include <boost/shared_ptr.hpp>
// Gnash headers
#include "amf.h"
@@ -48,14 +47,12 @@ static bool netdebug = false;
static EchoTest echo;
-extern "C" {
-
// the standard API
- boost::shared_ptr<Handler::cygnal_init_t>
- echo_init_func(boost::shared_ptr<gnash::RTMPMsg> &msg)
+ std::shared_ptr<Handler::cygnal_init_t>
+ echo_init_func(std::shared_ptr<gnash::RTMPMsg> &msg)
{
GNASH_REPORT_FUNCTION;
- boost::shared_ptr<Handler::cygnal_init_t> init(new Handler::cygnal_init_t);
+ std::shared_ptr<Handler::cygnal_init_t> init(new Handler::cygnal_init_t);
if (msg) {
echo.setNetConnection(msg);
@@ -70,11 +67,11 @@ extern "C" {
return init;
}
- boost::shared_ptr<cygnal::Buffer> echo_read_func()
+ std::shared_ptr<cygnal::Buffer> echo_read_func()
{
// GNASH_REPORT_FUNCTION;
- boost::shared_ptr<cygnal::Buffer> buf = echo.getResponse();
+ std::shared_ptr<cygnal::Buffer> buf = echo.getResponse();
// log_network("%s", hexify(data, safe, true));
@@ -83,13 +80,13 @@ extern "C" {
// GNASH_REPORT_RETURN;
}
- size_t echo_write_func(boost::uint8_t *data, size_t size)
+ size_t echo_write_func(std::uint8_t *data, size_t size)
{
// GNASH_REPORT_FUNCTION;
- boost::shared_ptr<cygnal::Buffer> buf = echo.getResponse();
+ std::shared_ptr<cygnal::Buffer> buf = echo.getResponse();
- vector<boost::shared_ptr<cygnal::Element> > request =
+ vector<std::shared_ptr<cygnal::Element> > request =
echo.parseEchoRequest(data, size);
if (request[3]) {
buf = echo.formatEchoResponse(request[1]->to_number(), *request[3]);
@@ -103,8 +100,6 @@ extern "C" {
// GNASH_REPORT_RETURN;
}
-} // end of extern C
-
int
main(int argc, char *argv[])
{
@@ -178,7 +173,7 @@ main(int argc, char *argv[])
// This is the main message processing loop for rtmp. All message received require
// a response.
do {
- boost::shared_ptr<cygnal::Buffer> bufptr(new cygnal::Buffer);
+ std::shared_ptr<cygnal::Buffer> bufptr(new cygnal::Buffer);
if (infile.empty()) {
net.readNet(netfd, *bufptr);
} else {
@@ -190,10 +185,10 @@ main(int argc, char *argv[])
}
}
- vector<boost::shared_ptr<cygnal::Element> > request = net.parseEchoRequest(
+ vector<std::shared_ptr<cygnal::Element> > request = net.parseEchoRequest(
bufptr->reference(), bufptr->allocated());
if (request[3]) {
- boost::shared_ptr<cygnal::Buffer> result = net.formatEchoResponse(request[1]->to_number(), *request[3]);
+ std::shared_ptr<cygnal::Buffer> result = net.formatEchoResponse(request[1]->to_number(), *request[3]);
if (net.writeNet(netfd, *result)) {
log_debug("Sent echo test response response to client.");
}
@@ -216,31 +211,31 @@ EchoTest::~EchoTest()
// Parse an Echo Request message coming from the Red5 echo_test. This
// method should only be used for testing purposes.
-vector<boost::shared_ptr<cygnal::Element > >
-EchoTest::parseEchoRequest(boost::uint8_t *ptr, size_t size)
+vector<std::shared_ptr<cygnal::Element > >
+EchoTest::parseEchoRequest(std::uint8_t *ptr, size_t size)
{
// GNASH_REPORT_FUNCTION;
cygnal::AMF amf;
- vector<boost::shared_ptr<cygnal::Element > > headers;
+ vector<std::shared_ptr<cygnal::Element > > headers;
// The first element is the name of the test, 'echo'
- boost::shared_ptr<cygnal::Element> el1 = amf.extractAMF(ptr, ptr+size);
+ std::shared_ptr<cygnal::Element> el1 = amf.extractAMF(ptr, ptr+size);
ptr += amf.totalsize();
headers.push_back(el1);
// The second element is the number of the test,
- boost::shared_ptr<cygnal::Element> el2 = amf.extractAMF(ptr, ptr+size);
+ std::shared_ptr<cygnal::Element> el2 = amf.extractAMF(ptr, ptr+size);
ptr += amf.totalsize();
headers.push_back(el2);
// This one has always been a NULL object from my tests
- boost::shared_ptr<cygnal::Element> el3 = amf.extractAMF(ptr, ptr+size);
+ std::shared_ptr<cygnal::Element> el3 = amf.extractAMF(ptr, ptr+size);
ptr += amf.totalsize();
headers.push_back(el3);
// This one has always been an NULL or Undefined object from my tests
- boost::shared_ptr<cygnal::Element> el4 = amf.extractAMF(ptr, ptr+size);
+ std::shared_ptr<cygnal::Element> el4 = amf.extractAMF(ptr, ptr+size);
if (!el4) {
log_error("Couldn't reliably extract the echo data!");
}
@@ -254,11 +249,11 @@ EchoTest::parseEchoRequest(boost::uint8_t *ptr, size_t size)
// is only used for testing by developers. The format appears to be
// a string '_result', followed by the number of the test, and then two
// NULL objects.
-boost::shared_ptr<cygnal::Buffer>
+std::shared_ptr<cygnal::Buffer>
EchoTest::formatEchoResponse(double num, cygnal::Element &el)
{
// GNASH_REPORT_FUNCTION;
- boost::shared_ptr<cygnal::Buffer> data = cygnal::AMF::encodeElement(el);
+ std::shared_ptr<cygnal::Buffer> data = cygnal::AMF::encodeElement(el);
if (data) {
return formatEchoResponse(num, data->reference(), data->allocated());
} else {
@@ -269,15 +264,15 @@ EchoTest::formatEchoResponse(double num, cygnal::Element &el)
return data;
}
-boost::shared_ptr<cygnal::Buffer>
+std::shared_ptr<cygnal::Buffer>
EchoTest::formatEchoResponse(double num, cygnal::Buffer &data)
{
// GNASH_REPORT_FUNCTION;
return formatEchoResponse(num, data.reference(), data.allocated());
}
-boost::shared_ptr<cygnal::Buffer>
-EchoTest::formatEchoResponse(double num, boost::uint8_t *data, size_t size)
+std::shared_ptr<cygnal::Buffer>
+EchoTest::formatEchoResponse(double num, std::uint8_t *data, size_t size)
{
// GNASH_REPORT_FUNCTION;
@@ -291,11 +286,11 @@ EchoTest::formatEchoResponse(double num, boost::uint8_t *data, size_t size)
Element null;
null.makeNull();
- boost::shared_ptr<cygnal::Buffer> encecho = echo.encode();
- boost::shared_ptr<cygnal::Buffer> encidx = index.encode();
- boost::shared_ptr<cygnal::Buffer> encnull = null.encode();
+ std::shared_ptr<cygnal::Buffer> encecho = echo.encode();
+ std::shared_ptr<cygnal::Buffer> encidx = index.encode();
+ std::shared_ptr<cygnal::Buffer> encnull = null.encode();
- boost::shared_ptr<cygnal::Buffer> buf(new cygnal::Buffer(encecho->size()
+ std::shared_ptr<cygnal::Buffer> buf(new cygnal::Buffer(encecho->size()
+ encidx->size()
+ encnull->size() + size));
diff --git a/cygnal/cgi-bin/echo/echo.h b/cygnal/cgi-bin/echo/echo.h
index ca69426..48b2f27 100644
--- a/cygnal/cgi-bin/echo/echo.h
+++ b/cygnal/cgi-bin/echo/echo.h
@@ -20,9 +20,6 @@
#define _ECHO_H_
#include <vector>
-#include <boost/shared_ptr.hpp>
-#include <boost/shared_array.hpp>
-#include <boost/scoped_array.hpp>
#include <sstream>
// gnash headers
@@ -46,40 +43,38 @@ public:
~EchoTest ();
// Parse an Echo Request message coming from the Red5 echo_test.
- std::vector<boost::shared_ptr<cygnal::Element > > parseEchoRequest(cygnal::Buffer &buf)
+ std::vector<std::shared_ptr<cygnal::Element > > parseEchoRequest(cygnal::Buffer &buf)
{ return parseEchoRequest(buf.reference(), buf.size()); };
- std::vector<boost::shared_ptr<cygnal::Element > > parseEchoRequest(boost::uint8_t *buf, size_t size);
+ std::vector<std::shared_ptr<cygnal::Element > > parseEchoRequest(std::uint8_t *buf, size_t size);
// format a response to the 'echo' test used for testing Gnash.
- boost::shared_ptr<cygnal::Buffer> formatEchoResponse(double num, cygnal::Element &el);
- boost::shared_ptr<cygnal::Buffer> formatEchoResponse(double num, cygnal::Buffer &data);
- boost::shared_ptr<cygnal::Buffer> formatEchoResponse(double num, boost::uint8_t *data, size_t size);
+ std::shared_ptr<cygnal::Buffer> formatEchoResponse(double num, cygnal::Element &el);
+ std::shared_ptr<cygnal::Buffer> formatEchoResponse(double num, cygnal::Buffer &data);
+ std::shared_ptr<cygnal::Buffer> formatEchoResponse(double num, std::uint8_t *data, size_t size);
- boost::shared_ptr<cygnal::Buffer> getResponse() { return _response; };
- void setResponse(boost::shared_ptr<cygnal::Buffer> &x) { _response = x; };
+ std::shared_ptr<cygnal::Buffer> getResponse() { return _response; };
+ void setResponse(std::shared_ptr<cygnal::Buffer> &x) { _response = x; };
void setNetConnection(gnash::RTMPMsg *msg) { _netconnect.reset(msg); };
- void setNetConnection(boost::shared_ptr<gnash::RTMPMsg> msg) { _netconnect = msg; };
- boost::shared_ptr<gnash::RTMPMsg> getNetConnection() { return _netconnect;};
+ void setNetConnection(std::shared_ptr<gnash::RTMPMsg> msg) { _netconnect = msg; };
+ std::shared_ptr<gnash::RTMPMsg> getNetConnection() { return _netconnect;};
private:
- boost::shared_ptr<cygnal::Buffer> _response;
- boost::shared_ptr<Handler::cygnal_init_t> _info;
+ std::shared_ptr<cygnal::Buffer> _response;
+ std::shared_ptr<Handler::cygnal_init_t> _info;
/// \var _netconnect
/// This store the data from the NetConnection ActionScript
/// object we get as the final part of the handshake process
/// that is used to set up the connection. This has all the
/// file paths and other information needed by the server.
- boost::shared_ptr<gnash::RTMPMsg> _netconnect;
+ std::shared_ptr<gnash::RTMPMsg> _netconnect;
};
// the standard API
-extern "C" {
- boost::shared_ptr<Handler::cygnal_init_t>echo_init_func(boost::shared_ptr<gnash::RTMPMsg> &msg);
+ std::shared_ptr<Handler::cygnal_init_t>echo_init_func(std::shared_ptr<gnash::RTMPMsg> &msg);
- boost::shared_ptr<cygnal::Buffer> echo_read_func();
- size_t echo_write_func(boost::uint8_t *data, size_t size);
-}
+ std::shared_ptr<cygnal::Buffer> echo_read_func();
+ size_t echo_write_func(std::uint8_t *data, size_t size);
} // end of cygnal namespace
#endif // end of __ECHO_H__
diff --git a/cygnal/cgi-bin/echo/gateway.cpp b/cygnal/cgi-bin/echo/gateway.cpp
index ff49eca..0cbc1d3 100644
--- a/cygnal/cgi-bin/echo/gateway.cpp
+++ b/cygnal/cgi-bin/echo/gateway.cpp
@@ -21,7 +21,6 @@
#include <log.h>
#include <iostream>
#include <string>
-#include <boost/shared_ptr.hpp>
#include "amf.h"
#include "arg_parser.h"
@@ -49,11 +48,11 @@ static GatewayTest gateway;
extern "C" {
// the standard API
- boost::shared_ptr<Handler::cygnal_init_t>
- gateway_init_func(boost::shared_ptr<gnash::RTMPMsg> &msg)
+ std::shared_ptr<Handler::cygnal_init_t>
+ gateway_init_func(std::shared_ptr<gnash::RTMPMsg> &msg)
{
GNASH_REPORT_FUNCTION;
- boost::shared_ptr<Handler::cygnal_init_t> init(new Handler::cygnal_init_t);
+ std::shared_ptr<Handler::cygnal_init_t> init(new Handler::cygnal_init_t);
init->version = "Gateway Test 0.1 (Gnash)";
init->description = "gateway RTMPT test for Cygnal.\n"
@@ -62,14 +61,14 @@ extern "C" {
return init;
}
- boost::shared_ptr<amf::Buffer> gateway_read_func()
+ std::shared_ptr<amf::Buffer> gateway_read_func()
{
// GNASH_REPORT_FUNCTION;
// GNASH_REPORT_RETURN;
}
- size_t gateway_write_func(boost::uint8_t *data, size_t size)
+ size_t gateway_write_func(std::uint8_t *data, size_t size)
{
// GNASH_REPORT_FUNCTION;
@@ -166,8 +165,8 @@ main(int argc, char *argv[])
}
// Wait for data, and when we get it, process it.
- boost::shared_ptr<amf::Buffer> content;
- vector<boost::shared_ptr<amf::Element> > headers;
+ std::shared_ptr<amf::Buffer> content;
+ vector<std::shared_ptr<amf::Element> > headers;
net.setTimeout(10);
do {
netfd = net.newConnection(false, fd);
@@ -177,7 +176,7 @@ main(int argc, char *argv[])
}
// See if we have any messages waiting
if (infile.empty()) {
- boost::shared_ptr<amf::Buffer> content = net.readNet();
+ std::shared_ptr<amf::Buffer> content = net.readNet();
if (!content) {
done = true;
break;
@@ -194,7 +193,7 @@ main(int argc, char *argv[])
break;
}
- //boost::shared_ptr<amf::Element> &el0 = headers[0];
+ //std::shared_ptr<amf::Element> &el0 = headers[0];
if (!done) {
if (headers.size() >= 4) {
@@ -236,28 +235,28 @@ GatewayTest::~GatewayTest()
// Parse an Echo Request message coming from the Red5 echo_test. This
// method should only be used for testing purposes.
-vector<boost::shared_ptr<amf::Element > >
-GatewayTest::parseEchoRequest(boost::uint8_t *data, size_t size)
+vector<std::shared_ptr<amf::Element > >
+GatewayTest::parseEchoRequest(std::uint8_t *data, size_t size)
{
// GNASH_REPORT_FUNCTION;
- vector<boost::shared_ptr<amf::Element > > headers;
+ vector<std::shared_ptr<amf::Element > > headers;
// skip past the header bytes, we don't care about them.
- boost::uint8_t *tmpptr = data + 6;
+ std::uint8_t *tmpptr = data + 6;
- boost::uint16_t length;
- length = ntohs((*(boost::uint16_t *)tmpptr) & 0xffff);
- tmpptr += sizeof(boost::uint16_t);
+ std::uint16_t length;
+ length = ntohs((*(std::uint16_t *)tmpptr) & 0xffff);
+ tmpptr += sizeof(std::uint16_t);
// Get the first name, which is a raw string, and not preceded by
// a type byte.
- boost::shared_ptr<amf::Element > el1(new amf::Element);
+ std::shared_ptr<amf::Element > el1(new amf::Element);
// If the length of the name field is corrupted, then we get out of
// range quick, and corrupt memory. This is a bit of a hack, but
// reduces memory errors caused by some of the corrupted tes cases.
- boost::uint8_t *endstr = std::find(tmpptr, tmpptr+length, '\0');
+ std::uint8_t *endstr = std::find(tmpptr, tmpptr+length, '\0');
if (endstr != tmpptr+length) {
log_debug("Caught corrupted string! length was %d, null at %d",
length, endstr-tmpptr);
@@ -269,9 +268,9 @@ GatewayTest::parseEchoRequest(boost::uint8_t *data, size_t size)
// Get the second name, which is a raw string, and not preceded by
// a type byte.
- length = ntohs((*(boost::uint16_t *)tmpptr) & 0xffff);
- tmpptr += sizeof(boost::uint16_t);
- boost::shared_ptr<amf::Element > el2(new amf::Element);
+ length = ntohs((*(std::uint16_t *)tmpptr) & 0xffff);
+ tmpptr += sizeof(std::uint16_t);
+ std::shared_ptr<amf::Element > el2(new amf::Element);
// std::string name2(reinterpret_cast<const char *>(tmpptr), length);
// el2->setName(name2.c_str(), name2.size());
@@ -291,11 +290,11 @@ GatewayTest::parseEchoRequest(boost::uint8_t *data, size_t size)
// Get the last two pieces of data, which are both AMF encoded
// with a type byte.
amf::AMF amf;
- boost::shared_ptr<amf::Element> el3 = amf.extractAMF(tmpptr, tmpptr + size);
+ std::shared_ptr<amf::Element> el3 = amf.extractAMF(tmpptr, tmpptr + size);
headers.push_back(el3);
tmpptr += amf.totalsize();
- boost::shared_ptr<amf::Element> el4 = amf.extractAMF(tmpptr, tmpptr + size);
+ std::shared_ptr<amf::Element> el4 = amf.extractAMF(tmpptr, tmpptr + size);
headers.push_back(el4);
return headers;
@@ -308,7 +307,7 @@ amf::Buffer &
GatewayTest::formatEchoResponse(const std::string &num, amf::Element &el)
{
// GNASH_REPORT_FUNCTION;
- boost::shared_ptr<amf::Buffer> data;
+ std::shared_ptr<amf::Buffer> data;
amf::Element nel;
if (el.getType() == amf::Element::TYPED_OBJECT_AMF0) {
@@ -319,7 +318,7 @@ GatewayTest::formatEchoResponse(const std::string &num, amf::Element &el)
// FIXME: see about using std::reverse() instead.
for (int i=el.propertySize()-1; i>=0; i--) {
// for (int i=0 ; i<el.propertySize(); i++) {
- boost::shared_ptr<amf::Element> child = el.getProperty(i);
+ std::shared_ptr<amf::Element> child = el.getProperty(i);
nel.addProperty(child);
}
data = nel.encode();
@@ -341,11 +340,11 @@ GatewayTest::formatEchoResponse(const std::string &num, amf::Buffer &data)
}
amf::Buffer &
-GatewayTest::formatEchoResponse(const std::string &num, boost::uint8_t *data, size_t size)
+GatewayTest::formatEchoResponse(const std::string &num, std::uint8_t *data, size_t size)
{
// GNASH_REPORT_FUNCTION;
- //boost::uint8_t *tmpptr = data;
+ //std::uint8_t *tmpptr = data;
// FIXME: temporary hacks while debugging
amf::Buffer fixme("00 00 00 00 00 01");
@@ -370,11 +369,11 @@ GatewayTest::formatEchoResponse(const std::string &num, boost::uint8_t *data, si
// the request, a slash followed by a number like "/2".
string result = num;
result += "/onResult";
- boost::shared_ptr<amf::Buffer> res = amf::AMF::encodeString(result);
+ std::shared_ptr<amf::Buffer> res = amf::AMF::encodeString(result);
_buffer.append(res->begin()+1, res->size()-1);
// Add the null data item
- boost::shared_ptr<amf::Buffer> null = amf::AMF::encodeString("null");
+ std::shared_ptr<amf::Buffer> null = amf::AMF::encodeString("null");
_buffer.append(null->begin()+1, null->size()-1);
// Add the other binary blob
diff --git a/cygnal/cgi-bin/echo/gateway.h b/cygnal/cgi-bin/echo/gateway.h
index 637ef68..023ca37 100644
--- a/cygnal/cgi-bin/echo/gateway.h
+++ b/cygnal/cgi-bin/echo/gateway.h
@@ -21,9 +21,6 @@
#include <string>
#include <vector>
-#include <boost/shared_ptr.hpp>
-#include <boost/shared_array.hpp>
-#include <boost/scoped_array.hpp>
#include <sstream>
#include "amf.h"
@@ -43,14 +40,14 @@ public:
~GatewayTest ();
// Parse an Echo Request message coming from the Red5 echo_test.
- std::vector<boost::shared_ptr<amf::Element > > parseEchoRequest(amf::Buffer &buf)
+ std::vector<std::shared_ptr<amf::Element > > parseEchoRequest(amf::Buffer &buf)
{ return parseEchoRequest(buf.reference(), buf.size()); };
- std::vector<boost::shared_ptr<amf::Element > > parseEchoRequest(boost::uint8_t *buf, size_t size);
+ std::vector<std::shared_ptr<amf::Element > > parseEchoRequest(std::uint8_t *buf, size_t size);
// format a response to the 'echo' test used for testing Gnash.
amf::Buffer &formatEchoResponse(const std::string &num, amf::Element &el);
amf::Buffer &formatEchoResponse(const std::string &num, amf::Buffer &data);
- amf::Buffer &formatEchoResponse(const std::string &num, boost::uint8_t *data, size_t size);
+ amf::Buffer &formatEchoResponse(const std::string &num, std::uint8_t *data, size_t size);
private:
};
diff --git a/cygnal/cgi-bin/fitcDemo/Makefile.am b/cygnal/cgi-bin/fitcDemo/Makefile.am
index e661c49..49027f6 100644
--- a/cygnal/cgi-bin/fitcDemo/Makefile.am
+++ b/cygnal/cgi-bin/fitcDemo/Makefile.am
@@ -31,7 +31,7 @@ GNASH_LIBS = \
$(BOOST_CFLAGS) \
$(NULL)
-INCLUDES = \
+AM_CPPFLAGS = \
-I$(top_srcdir)/libbase \
-I$(top_srcdir)/libamf \
-I$(top_srcdir)/libnet \
diff --git a/cygnal/cgi-bin/fitcDemo/fitcDemo.cpp b/cygnal/cgi-bin/fitcDemo/fitcDemo.cpp
index 49ec080..c6ad29a 100644
--- a/cygnal/cgi-bin/fitcDemo/fitcDemo.cpp
+++ b/cygnal/cgi-bin/fitcDemo/fitcDemo.cpp
@@ -24,7 +24,6 @@
#include <log.h>
#include <iostream>
#include <string>
-#include <boost/shared_ptr.hpp>
// Gnash headers
#include "amf.h"
@@ -54,25 +53,25 @@ static FitcDemoTest fitcDemo;
extern "C" {
- boost::shared_ptr<Handler::cygnal_init_t>
+ std::shared_ptr<Handler::cygnal_init_t>
fitcDemo_class_init()
{
GNASH_REPORT_FUNCTION;
// the standard API
- boost::shared_ptr<Handler::cygnal_init_t> init(new Handler::cygnal_init_t);
+ std::shared_ptr<Handler::cygnal_init_t> init(new Handler::cygnal_init_t);
// init.read_func = read_func;
// init.write_func = write_func;
return init;
}
- size_t fitcDemo_read_func(boost::uint8_t *data, size_t size)
+ size_t fitcDemo_read_func(std::uint8_t *data, size_t size)
{
// GNASH_REPORT_FUNCTION;
size_t safe = 0;
- boost::shared_ptr<amf::Buffer> buf = fitcDemo.getResponse();
+ std::shared_ptr<amf::Buffer> buf = fitcDemo.getResponse();
if (size < buf->allocated()) {
safe = buf->allocated();
@@ -88,13 +87,13 @@ extern "C" {
// GNASH_REPORT_RETURN;
}
- size_t fitcDemo_write_func(boost::uint8_t *data, size_t size)
+ size_t fitcDemo_write_func(std::uint8_t *data, size_t size)
{
// GNASH_REPORT_FUNCTION;
- boost::shared_ptr<amf::Buffer> buf = fitcDemo.getResponse();
+ std::shared_ptr<amf::Buffer> buf = fitcDemo.getResponse();
- vector<boost::shared_ptr<amf::Element> > request =
+ vector<std::shared_ptr<amf::Element> > request =
fitcDemo.parseFitcDemoRequest(data, size);
if (request[3]) {
buf = fitcDemo.formatFitcDemoResponse(request[1]->to_number(), *request[3]);
@@ -183,7 +182,7 @@ main(int argc, char *argv[])
// This is the main message processing loop for rtmp. All message received require
// a response.
do {
- boost::shared_ptr<amf::Buffer> bufptr(new amf::Buffer);
+ std::shared_ptr<amf::Buffer> bufptr(new amf::Buffer);
if (infile.empty()) {
net.readNet(netfd, *bufptr);
} else {
@@ -195,10 +194,10 @@ main(int argc, char *argv[])
}
}
- vector<boost::shared_ptr<amf::Element> > request = net.parseFitcDemoRequest(
+ vector<std::shared_ptr<amf::Element> > request = net.parseFitcDemoRequest(
bufptr->reference(), bufptr->allocated());
if (request[3]) {
- boost::shared_ptr<amf::Buffer> result = net.formatFitcDemoResponse(request[1]->to_number(), *request[3]);
+ std::shared_ptr<amf::Buffer> result = net.formatFitcDemoResponse(request[1]->to_number(), *request[3]);
if (net.writeNet(netfd, *result)) {
log_debug("Sent fitcDemo test response response to client.");
}
@@ -221,31 +220,31 @@ FitcDemoTest::~FitcDemoTest()
// Parse an FitcDemo Request message coming from the Red5 fitcDemo_test. This
// method should only be used for testing purposes.
-vector<boost::shared_ptr<amf::Element > >
-FitcDemoTest::parseFitcDemoRequest(boost::uint8_t *ptr, size_t size)
+vector<std::shared_ptr<amf::Element > >
+FitcDemoTest::parseFitcDemoRequest(std::uint8_t *ptr, size_t size)
{
// GNASH_REPORT_FUNCTION;
AMF amf;
- vector<boost::shared_ptr<amf::Element > > headers;
+ vector<std::shared_ptr<amf::Element > > headers;
// The first element is the name of the test, 'fitcDemo'
- boost::shared_ptr<amf::Element> el1 = amf.extractAMF(ptr, ptr+size);
+ std::shared_ptr<amf::Element> el1 = amf.extractAMF(ptr, ptr+size);
ptr += amf.totalsize();
headers.push_back(el1);
// The second element is the number of the test,
- boost::shared_ptr<amf::Element> el2 = amf.extractAMF(ptr, ptr+size);
+ std::shared_ptr<amf::Element> el2 = amf.extractAMF(ptr, ptr+size);
ptr += amf.totalsize();
headers.push_back(el2);
// This one has always been a NULL object from my tests
- boost::shared_ptr<amf::Element> el3 = amf.extractAMF(ptr, ptr+size);
+ std::shared_ptr<amf::Element> el3 = amf.extractAMF(ptr, ptr+size);
ptr += amf.totalsize();
headers.push_back(el3);
// This one has always been an NULL or Undefined object from my tests
- boost::shared_ptr<amf::Element> el4 = amf.extractAMF(ptr, ptr+size);
+ std::shared_ptr<amf::Element> el4 = amf.extractAMF(ptr, ptr+size);
if (!el4) {
log_error("Couldn't reliably extract the fitcDemo data!");
}
@@ -259,11 +258,11 @@ FitcDemoTest::parseFitcDemoRequest(boost::uint8_t *ptr, size_t size)
// is only used for testing by developers. The format appears to be
// a string '_result', followed by the number of the test, and then two
// NULL objects.
-boost::shared_ptr<amf::Buffer>
+std::shared_ptr<amf::Buffer>
FitcDemoTest::formatFitcDemoResponse(double num, amf::Element &el)
{
// GNASH_REPORT_FUNCTION;
- boost::shared_ptr<amf::Buffer> data = amf::AMF::encodeElement(el);
+ std::shared_ptr<amf::Buffer> data = amf::AMF::encodeElement(el);
if (data) {
return formatFitcDemoResponse(num, data->reference(), data->allocated());
} else {
@@ -274,15 +273,15 @@ FitcDemoTest::formatFitcDemoResponse(double num, amf::Element &el)
return data;
}
-boost::shared_ptr<amf::Buffer>
+std::shared_ptr<amf::Buffer>
FitcDemoTest::formatFitcDemoResponse(double num, amf::Buffer &data)
{
// GNASH_REPORT_FUNCTION;
return formatFitcDemoResponse(num, data.reference(), data.allocated());
}
-boost::shared_ptr<amf::Buffer>
-FitcDemoTest::formatFitcDemoResponse(double num, boost::uint8_t *data, size_t size)
+std::shared_ptr<amf::Buffer>
+FitcDemoTest::formatFitcDemoResponse(double num, std::uint8_t *data, size_t size)
{
// GNASH_REPORT_FUNCTION;
@@ -296,11 +295,11 @@ FitcDemoTest::formatFitcDemoResponse(double num, boost::uint8_t *data, size_t si
Element null;
null.makeNull();
- boost::shared_ptr<amf::Buffer> encfitcDemo = fitcDemo.encode();
- boost::shared_ptr<amf::Buffer> encidx = index.encode();
- boost::shared_ptr<amf::Buffer> encnull = null.encode();
+ std::shared_ptr<amf::Buffer> encfitcDemo = fitcDemo.encode();
+ std::shared_ptr<amf::Buffer> encidx = index.encode();
+ std::shared_ptr<amf::Buffer> encnull = null.encode();
- boost::shared_ptr<amf::Buffer> buf(new amf::Buffer(encfitcDemo->size()
+ std::shared_ptr<amf::Buffer> buf(new amf::Buffer(encfitcDemo->size()
+ encidx->size()
+ encnull->size() + size));
diff --git a/cygnal/cgi-bin/fitcDemo/fitcDemo.h b/cygnal/cgi-bin/fitcDemo/fitcDemo.h
index 30de5a5..656a2b5 100644
--- a/cygnal/cgi-bin/fitcDemo/fitcDemo.h
+++ b/cygnal/cgi-bin/fitcDemo/fitcDemo.h
@@ -20,9 +20,6 @@
#define _FITCDEMO_H_
#include <vector>
-#include <boost/shared_ptr.hpp>
-#include <boost/shared_array.hpp>
-#include <boost/scoped_array.hpp>
#include <sstream>
// gnash headers
@@ -45,27 +42,27 @@ public:
~FitcDemoTest ();
// Parse an FitcDemo Request message coming from the Red5 fitcDemo_test.
- std::vector<boost::shared_ptr<amf::Element > > parseFitcDemoRequest(amf::Buffer &buf)
+ std::vector<std::shared_ptr<amf::Element > > parseFitcDemoRequest(amf::Buffer &buf)
{ return parseFitcDemoRequest(buf.reference(), buf.size()); };
- std::vector<boost::shared_ptr<amf::Element > > parseFitcDemoRequest(boost::uint8_t *buf, size_t size);
+ std::vector<std::shared_ptr<amf::Element > > parseFitcDemoRequest(std::uint8_t *buf, size_t size);
// format a response to the 'fitcDemo' test used for testing Gnash.
- boost::shared_ptr<amf::Buffer> formatFitcDemoResponse(double num, amf::Element &el);
- boost::shared_ptr<amf::Buffer> formatFitcDemoResponse(double num, amf::Buffer &data);
- boost::shared_ptr<amf::Buffer> formatFitcDemoResponse(double num, boost::uint8_t *data, size_t size);
+ std::shared_ptr<amf::Buffer> formatFitcDemoResponse(double num, amf::Element &el);
+ std::shared_ptr<amf::Buffer> formatFitcDemoResponse(double num, amf::Buffer &data);
+ std::shared_ptr<amf::Buffer> formatFitcDemoResponse(double num, std::uint8_t *data, size_t size);
- boost::shared_ptr<amf::Buffer> getResponse() { return _response; };
- void setResponse(boost::shared_ptr<amf::Buffer> &x) { _response = x; };
+ std::shared_ptr<amf::Buffer> getResponse() { return _response; };
+ void setResponse(std::shared_ptr<amf::Buffer> &x) { _response = x; };
private:
- boost::shared_ptr<amf::Buffer> _response;
+ std::shared_ptr<amf::Buffer> _response;
};
extern "C" {
- boost::shared_ptr<Handler::cygnal_init_t> fitcDemo_class_init();
+ std::shared_ptr<Handler::cygnal_init_t> fitcDemo_class_init();
// the standard API
- size_t fitcDemo_read_func(boost::uint8_t *data, size_t size);
- size_t fitcDemo_write_func(boost::uint8_t *data, size_t size);
+ size_t fitcDemo_read_func(std::uint8_t *data, size_t size);
+ size_t fitcDemo_write_func(std::uint8_t *data, size_t size);
}
} // end of cygnal namespace
diff --git a/cygnal/cgi-bin/oflaDemo/Makefile.am b/cygnal/cgi-bin/oflaDemo/Makefile.am
index e24a9fe..fcee9d7 100644
--- a/cygnal/cgi-bin/oflaDemo/Makefile.am
+++ b/cygnal/cgi-bin/oflaDemo/Makefile.am
@@ -31,7 +31,7 @@ GNASH_LIBS = \
$(BOOST_LIBS) \
$(NULL)
-INCLUDES = \
+AM_CPPFLAGS = \
-I$(top_srcdir)/libbase \
-I$(top_srcdir)/libcore \
-I$(top_srcdir)/libltdl \
diff --git a/cygnal/cgi-bin/oflaDemo/oflaDemo.cpp b/cygnal/cgi-bin/oflaDemo/oflaDemo.cpp
index d4f0a40..3b2ebd4 100644
--- a/cygnal/cgi-bin/oflaDemo/oflaDemo.cpp
+++ b/cygnal/cgi-bin/oflaDemo/oflaDemo.cpp
@@ -27,8 +27,7 @@
#include <sys/types.h>
#include <sys/stat.h>
#include <ctime>
-#include <boost/shared_ptr.hpp>
-#include <boost/scoped_ptr.hpp>
+#include <memory>
#if !defined(_MSC_VER)
# include <unistd.h>
@@ -105,12 +104,12 @@ static OflaDemoTest oflaDemo;
extern "C" {
// the standard API
- boost::shared_ptr<Handler::cygnal_init_t>
- oflaDemo_init_func(boost::shared_ptr<gnash::RTMPMsg> &msg)
+ std::shared_ptr<Handler::cygnal_init_t>
+ oflaDemo_init_func(std::shared_ptr<gnash::RTMPMsg> &msg)
{
GNASH_REPORT_FUNCTION;
- boost::shared_ptr<Handler::cygnal_init_t> init(new Handler::cygnal_init_t);
+ std::shared_ptr<Handler::cygnal_init_t> init(new Handler::cygnal_init_t);
if (msg) {
oflaDemo.setNetConnection(msg);
} else {
@@ -124,11 +123,11 @@ extern "C" {
return init;
}
- boost::shared_ptr<cygnal::Buffer> oflaDemo_read_func()
+ std::shared_ptr<cygnal::Buffer> oflaDemo_read_func()
{
// GNASH_REPORT_FUNCTION;
- boost::shared_ptr<cygnal::Buffer> buf = oflaDemo.getResponse();
+ std::shared_ptr<cygnal::Buffer> buf = oflaDemo.getResponse();
// log_network("%s", hexify(data, safe, true));
return buf;
@@ -136,27 +135,27 @@ extern "C" {
// GNASH_REPORT_RETURN;
}
- size_t oflaDemo_write_func(boost::uint8_t *data, size_t size)
+ size_t oflaDemo_write_func(std::uint8_t *data, size_t size)
{
// GNASH_REPORT_FUNCTION;
- boost::shared_ptr<cygnal::Buffer> buf = oflaDemo.getResponse();
+ std::shared_ptr<cygnal::Buffer> buf = oflaDemo.getResponse();
- vector<boost::shared_ptr<cygnal::Element> > request =
+ vector<std::shared_ptr<cygnal::Element> > request =
oflaDemo.parseOflaDemoRequest(data, size);
if (request.empty()) {
// Send the packet to notify the client that the
// NetConnection::connect() was sucessful. After the client
// receives this, the handhsake is completed.
- boost::shared_ptr<cygnal::Buffer> error =
+ std::shared_ptr<cygnal::Buffer> error =
oflaDemo.encodeResult(RTMPMsg::NC_CALL_FAILED);
// This builds the full header,which is required as the first part
// of the packet.
- boost::shared_ptr<cygnal::Buffer> head = oflaDemo.encodeHeader(0x3,
+ std::shared_ptr<cygnal::Buffer> head = oflaDemo.encodeHeader(0x3,
RTMP::HEADER_12, error->allocated(),
RTMP::INVOKE, RTMPMsg::FROM_SERVER);
- boost::scoped_ptr<cygnal::Buffer> response(new cygnal::Buffer(
+ std::unique_ptr<cygnal::Buffer> response(new cygnal::Buffer(
error->allocated() + head->allocated()));
*response = head;
*response += error;
@@ -250,7 +249,7 @@ main(int argc, char *argv[])
// This is the main message processing loop for rtmp. All message received require
// a response.
do {
- boost::shared_ptr<cygnal::Buffer> bufptr(new cygnal::Buffer);
+ std::shared_ptr<cygnal::Buffer> bufptr(new cygnal::Buffer);
if (infile.empty()) {
net.readNet(netfd, *bufptr);
} else {
@@ -262,10 +261,10 @@ main(int argc, char *argv[])
}
}
- vector<boost::shared_ptr<cygnal::Element> > request = net.parseOflaDemoRequest(
+ vector<std::shared_ptr<cygnal::Element> > request = net.parseOflaDemoRequest(
bufptr->reference(), bufptr->allocated());
if (request[3]) {
- boost::shared_ptr<cygnal::Buffer> result = net.formatOflaDemoResponse(request[1]->to_number(), *request[3]);
+ std::shared_ptr<cygnal::Buffer> result = net.formatOflaDemoResponse(request[1]->to_number(), *request[3]);
if (net.writeNet(netfd, *result)) {
log_debug("Sent oflaDemo test response response to client.");
}
@@ -286,14 +285,14 @@ demoService::~demoService()
// GNASH_REPORT_FUNCTION;
}
-std::vector<boost::shared_ptr<demoService::filestats_t> > &
+std::vector<std::shared_ptr<demoService::filestats_t> > &
demoService::getListOfAvailableFiles(const std::string &path)
{
// GNASH_REPORT_FUNCTION;
return getListOfAvailableFiles(path, ".flv");
}
-std::vector<boost::shared_ptr<demoService::filestats_t> > &
+std::vector<std::shared_ptr<demoService::filestats_t> > &
demoService::getListOfAvailableFiles(const std::string &path,
const std::string &type)
{
@@ -317,7 +316,7 @@ demoService::getListOfAvailableFiles(const std::string &path,
#else
// The Adobe media server and Red5 sort the directories
// alphabetically, so we do too.
- int ret = scandir(path.c_str(), &namelist, 0, alphasort);
+ int ret = scandir(path.c_str(), &namelist, nullptr, alphasort);
for (int i=0; i<ret; ++i) {
entry = namelist[i];
#endif
@@ -342,7 +341,7 @@ demoService::getListOfAvailableFiles(const std::string &path,
filespec += name;
struct stat st;
if (stat(filespec.c_str(), &st) == 0) {
- boost::shared_ptr<demoService::filestats_t> stats(new filestats_t);
+ std::shared_ptr<demoService::filestats_t> stats(new filestats_t);
stats->name = name;
stringstream ss;
ss << st.st_size;
@@ -385,16 +384,16 @@ OflaDemoTest::~OflaDemoTest()
// Parse an OflaDemo Request message coming from the Red5 oflaDemo_test. This
// method should only be used for testing purposes.
-vector<boost::shared_ptr<cygnal::Element > >
-OflaDemoTest::parseOflaDemoRequest(boost::uint8_t *ptr, size_t size)
+vector<std::shared_ptr<cygnal::Element > >
+OflaDemoTest::parseOflaDemoRequest(std::uint8_t *ptr, size_t size)
{
GNASH_REPORT_FUNCTION;
demoService demo;
cygnal::AMF amf;
- vector<boost::shared_ptr<cygnal::Element > > headers;
+ vector<std::shared_ptr<cygnal::Element > > headers;
- boost::shared_ptr<cygnal::Element> el1 = amf.extractAMF(ptr, ptr+size);
+ std::shared_ptr<cygnal::Element> el1 = amf.extractAMF(ptr, ptr+size);
if (!el1) {
log_error("No AMF data in message!");
return headers;
@@ -405,7 +404,7 @@ OflaDemoTest::parseOflaDemoRequest(boost::uint8_t *ptr, size_t size)
headers.push_back(el1);
// The second element is a number
- boost::shared_ptr<cygnal::Element> el2 = amf.extractAMF(ptr, ptr+size);
+ std::shared_ptr<cygnal::Element> el2 = amf.extractAMF(ptr, ptr+size);
if (!el2) {
log_error("No AMF data in message!");
return headers;
@@ -416,11 +415,11 @@ OflaDemoTest::parseOflaDemoRequest(boost::uint8_t *ptr, size_t size)
if (method == "demoService.getListOfAvailableFLVs") {
// Get the path from the NetConnection object we recieved from the
// client at the end of the handshake process.
- boost::shared_ptr<cygnal::Element> version;
- boost::shared_ptr<cygnal::Element> tcurl;
- boost::shared_ptr<cygnal::Element> swfurl;
+ std::shared_ptr<cygnal::Element> version;
+ std::shared_ptr<cygnal::Element> tcurl;
+ std::shared_ptr<cygnal::Element> swfurl;
- boost::shared_ptr<gnash::RTMPMsg> msg = getNetConnection();
+ std::shared_ptr<gnash::RTMPMsg> msg = getNetConnection();
if (msg) {
version = msg->findProperty("flashVer");
if (version) {
@@ -446,32 +445,32 @@ OflaDemoTest::parseOflaDemoRequest(boost::uint8_t *ptr, size_t size)
std::string key = docroot + "/";
key += url.hostname() + url.path();
demo.getListOfAvailableFiles(key);
- std::vector<boost::shared_ptr<demoService::filestats_t> > &mediafiles = demo.getFileStats();
+ std::vector<std::shared_ptr<demoService::filestats_t> > &mediafiles = demo.getFileStats();
// std::vector<demoService::filestats_t> mediafiles = demo.getListOfAvailableFiles(key);
- std::vector<boost::shared_ptr<demoService::filestats_t> >::iterator it;
+ std::vector<std::shared_ptr<demoService::filestats_t> >::iterator it;
// Make the top level object
Element toparr;
toparr.makeECMAArray();
size_t total_size = 0;
- vector<boost::shared_ptr<cygnal::Buffer> > buffers;
+ vector<std::shared_ptr<cygnal::Buffer> > buffers;
for (it=mediafiles.begin(); it<mediafiles.end(); ++it) {
- vector<boost::shared_ptr<cygnal::Element> > data;
+ vector<std::shared_ptr<cygnal::Element> > data;
- boost::shared_ptr<demoService::filestats_t> file = *it;
- boost::shared_ptr<cygnal::Element> obj(new cygnal::Element);
+ std::shared_ptr<demoService::filestats_t> file = *it;
+ std::shared_ptr<cygnal::Element> obj(new cygnal::Element);
obj->makeECMAArray();
obj->setName(file->name);
- boost::shared_ptr<cygnal::Element> modified(new cygnal::Element);
+ std::shared_ptr<cygnal::Element> modified(new cygnal::Element);
modified->makeString("lastModified", file->last);
obj->addProperty(modified);
- boost::shared_ptr<cygnal::Element> name(new cygnal::Element);
+ std::shared_ptr<cygnal::Element> name(new cygnal::Element);
name->makeString("name", file->name);
obj->addProperty(name);
- boost::shared_ptr<cygnal::Element> size(new cygnal::Element);
+ std::shared_ptr<cygnal::Element> size(new cygnal::Element);
size->makeString("size", file->size);
obj->addProperty(size);
@@ -479,31 +478,31 @@ OflaDemoTest::parseOflaDemoRequest(boost::uint8_t *ptr, size_t size)
toparr.addProperty(obj);
}
- boost::shared_ptr<cygnal::Buffer> topenc = toparr.encode();
+ std::shared_ptr<cygnal::Buffer> topenc = toparr.encode();
total_size += topenc->allocated();
// Start with the method name for the INVOKE
cygnal::Element method;
method.makeString("_result");
- boost::shared_ptr<cygnal::Buffer> methodenc = method.encode();
+ std::shared_ptr<cygnal::Buffer> methodenc = method.encode();
total_size += methodenc->allocated();
// Add the stream ID
cygnal::Element sid;
sid.makeNumber(2); // FIXME: needs a real value!
- boost::shared_ptr<cygnal::Buffer> sidenc = sid.encode();
+ std::shared_ptr<cygnal::Buffer> sidenc = sid.encode();
total_size += sidenc->allocated();
// There there is always a NULL object to start the data
Element null;
null.makeNull();
- boost::shared_ptr<cygnal::Buffer> encnull = null.encode();
+ std::shared_ptr<cygnal::Buffer> encnull = null.encode();
total_size += encnull->allocated();
- boost::shared_ptr<cygnal::Buffer> result(new cygnal::Buffer(total_size+cygnal::AMF_HEADER_SIZE+RTMP_MAX_HEADER_SIZE+10));
+ std::shared_ptr<cygnal::Buffer> result(new cygnal::Buffer(total_size+cygnal::AMF_HEADER_SIZE+RTMP_MAX_HEADER_SIZE+10));
_response.reset(new cygnal::Buffer(total_size+cygnal::AMF_HEADER_SIZE+RTMP_MAX_HEADER_SIZE+10));
#if 0
- boost::shared_ptr<cygnal::Buffer> head = encodeHeader(0x3,
+ std::shared_ptr<cygnal::Buffer> head = encodeHeader(0x3,
RTMP::HEADER_8, total_size,
RTMP::INVOKE, RTMPMsg::FROM_SERVER);
*result = head;
@@ -515,11 +514,11 @@ OflaDemoTest::parseOflaDemoRequest(boost::uint8_t *ptr, size_t size)
#if 0
// Followed by all the encoded objects and properties
- vector<boost::shared_ptr<cygnal::Buffer> >::iterator rit;
+ vector<std::shared_ptr<cygnal::Buffer> >::iterator rit;
for (rit=buffers.begin(); rit<buffers.end(); ++rit) {
- boost::shared_ptr<cygnal::Buffer> buf = *rit;
+ std::shared_ptr<cygnal::Buffer> buf = *rit;
*_response += buf;
- std::vector<boost::shared_ptr<cygnal::Element> > data1;
+ std::vector<std::shared_ptr<cygnal::Element> > data1;
}
#endif
}
@@ -534,11 +533,11 @@ OflaDemoTest::parseOflaDemoRequest(boost::uint8_t *ptr, size_t size)
// is only used for testing by developers. The format appears to be
// a string '_result', followed by the number of the test, and then two
// NULL objects.
-boost::shared_ptr<cygnal::Buffer>
+std::shared_ptr<cygnal::Buffer>
OflaDemoTest::formatOflaDemoResponse(double num, cygnal::Element &el)
{
// GNASH_REPORT_FUNCTION;
- boost::shared_ptr<cygnal::Buffer> data = cygnal::AMF::encodeElement(el);
+ std::shared_ptr<cygnal::Buffer> data = cygnal::AMF::encodeElement(el);
if (data) {
return formatOflaDemoResponse(num, data->reference(), data->allocated());
} else {
@@ -549,15 +548,15 @@ OflaDemoTest::formatOflaDemoResponse(double num, cygnal::Element &el)
return data;
}
-boost::shared_ptr<cygnal::Buffer>
+std::shared_ptr<cygnal::Buffer>
OflaDemoTest::formatOflaDemoResponse(double num, cygnal::Buffer &data)
{
// GNASH_REPORT_FUNCTION;
return formatOflaDemoResponse(num, data.reference(), data.allocated());
}
-boost::shared_ptr<cygnal::Buffer>
-OflaDemoTest::formatOflaDemoResponse(double num, boost::uint8_t *data, size_t size)
+std::shared_ptr<cygnal::Buffer>
+OflaDemoTest::formatOflaDemoResponse(double num, std::uint8_t *data, size_t size)
{
// GNASH_REPORT_FUNCTION;
@@ -571,11 +570,11 @@ OflaDemoTest::formatOflaDemoResponse(double num, boost::uint8_t *data, size_t si
Element null;
null.makeNull();
- boost::shared_ptr<cygnal::Buffer> encoflaDemo = oflaDemo.encode();
- boost::shared_ptr<cygnal::Buffer> encidx = index.encode();
- boost::shared_ptr<cygnal::Buffer> encnull = null.encode();
+ std::shared_ptr<cygnal::Buffer> encoflaDemo = oflaDemo.encode();
+ std::shared_ptr<cygnal::Buffer> encidx = index.encode();
+ std::shared_ptr<cygnal::Buffer> encnull = null.encode();
- boost::shared_ptr<cygnal::Buffer> buf(new cygnal::Buffer(encoflaDemo->size()
+ std::shared_ptr<cygnal::Buffer> buf(new cygnal::Buffer(encoflaDemo->size()
+ encidx->size()
+ encnull->size() + size));
diff --git a/cygnal/cgi-bin/oflaDemo/oflaDemo.h b/cygnal/cgi-bin/oflaDemo/oflaDemo.h
index 04fd03b..17c960e 100644
--- a/cygnal/cgi-bin/oflaDemo/oflaDemo.h
+++ b/cygnal/cgi-bin/oflaDemo/oflaDemo.h
@@ -21,9 +21,6 @@
#include <string>
#include <vector>
-#include <boost/shared_ptr.hpp>
-#include <boost/shared_array.hpp>
-#include <boost/scoped_array.hpp>
#include <sstream>
// gnash headers
@@ -54,16 +51,16 @@ public:
~demoService();
/// return the list of FLV files we've found
- std::vector<boost::shared_ptr<filestats_t> > &getListOfAvailableFiles(const std::string &path);
+ std::vector<std::shared_ptr<filestats_t> > &getListOfAvailableFiles(const std::string &path);
/// return the list of FLV files we've found of the specified type
- std::vector<boost::shared_ptr<filestats_t> > &getListOfAvailableFiles(const std::string &path,
+ std::vector<std::shared_ptr<filestats_t> > &getListOfAvailableFiles(const std::string &path,
const std::string &type);
- std::vector<boost::shared_ptr<filestats_t> > &getFileStats() { return _stats; };
+ std::vector<std::shared_ptr<filestats_t> > &getFileStats() { return _stats; };
private:
std::string _path;
- std::vector<boost::shared_ptr<filestats_t> > _stats;
+ std::vector<std::shared_ptr<filestats_t> > _stats;
};
class OflaDemoTest : public cygnal::RTMPServer
@@ -73,39 +70,39 @@ public:
~OflaDemoTest ();
// Parse an OflaDemo Request message coming from the Red5 oflaDemo_test.
- std::vector<boost::shared_ptr<cygnal::Element > > parseOflaDemoRequest(cygnal::Buffer &buf)
+ std::vector<std::shared_ptr<cygnal::Element > > parseOflaDemoRequest(cygnal::Buffer &buf)
{ return parseOflaDemoRequest(buf.reference(), buf.size()); };
- std::vector<boost::shared_ptr<cygnal::Element > > parseOflaDemoRequest(boost::uint8_t *buf, size_t size);
+ std::vector<std::shared_ptr<cygnal::Element > > parseOflaDemoRequest(std::uint8_t *buf, size_t size);
// format a response to the 'oflaDemo' test used for testing Gnash.
- boost::shared_ptr<cygnal::Buffer> formatOflaDemoResponse(double num, cygnal::Element &el);
- boost::shared_ptr<cygnal::Buffer> formatOflaDemoResponse(double num, cygnal::Buffer &data);
- boost::shared_ptr<cygnal::Buffer> formatOflaDemoResponse(double num, boost::uint8_t *data, size_t size);
+ std::shared_ptr<cygnal::Buffer> formatOflaDemoResponse(double num, cygnal::Element &el);
+ std::shared_ptr<cygnal::Buffer> formatOflaDemoResponse(double num, cygnal::Buffer &data);
+ std::shared_ptr<cygnal::Buffer> formatOflaDemoResponse(double num, std::uint8_t *data, size_t size);
- boost::shared_ptr<cygnal::Buffer> getResponse() { return _response; };
- void setResponse(boost::shared_ptr<cygnal::Buffer> &x) { _response = x; };
+ std::shared_ptr<cygnal::Buffer> getResponse() { return _response; };
+ void setResponse(std::shared_ptr<cygnal::Buffer> &x) { _response = x; };
void setNetConnection(gnash::RTMPMsg *msg) { _netconnect.reset(msg); };
- void setNetConnection(boost::shared_ptr<gnash::RTMPMsg> msg) { _netconnect = msg; };
- boost::shared_ptr<gnash::RTMPMsg> getNetConnection() { return _netconnect;};
+ void setNetConnection(std::shared_ptr<gnash::RTMPMsg> msg) { _netconnect = msg; };
+ std::shared_ptr<gnash::RTMPMsg> getNetConnection() { return _netconnect;};
/// \var _netconnect
/// This store the data from the NetConnection ActionScript
/// object we get as the final part of the handshake process
/// that is used to set up the connection. This has all the
/// file paths and other information needed by the server.
- boost::shared_ptr<gnash::RTMPMsg> _netconnect;
+ std::shared_ptr<gnash::RTMPMsg> _netconnect;
private:
- boost::shared_ptr<cygnal::Buffer> _response;
- boost::shared_ptr<Handler::cygnal_init_t> _info;
+ std::shared_ptr<cygnal::Buffer> _response;
+ std::shared_ptr<Handler::cygnal_init_t> _info;
};
// the standard API
extern "C" {
- boost::shared_ptr<Handler::cygnal_init_t>oflaDemo_init_func(boost::shared_ptr<gnash::RTMPMsg> &msg);
+ std::shared_ptr<Handler::cygnal_init_t>oflaDemo_init_func(std::shared_ptr<gnash::RTMPMsg> &msg);
- boost::shared_ptr<cygnal::Buffer> oflaDemo_read_func();
- size_t oflaDemo_write_func(boost::uint8_t *data, size_t size);
+ std::shared_ptr<cygnal::Buffer> oflaDemo_read_func();
+ size_t oflaDemo_write_func(std::uint8_t *data, size_t size);
}
} // end of cygnal namespace
diff --git a/cygnal/crc.cpp b/cygnal/crc.cpp
index 1464e7b..2fb53d7 100644
--- a/cygnal/crc.cpp
+++ b/cygnal/crc.cpp
@@ -34,7 +34,7 @@
#include <sys/types.h>
#include "GnashSystemIOHeaders.h" // for getuid()
#include <sys/stat.h>
-#include <boost/cstdint.hpp>
+#include <cstdint>
#include <cctype> // for toupper
#include <string>
diff --git a/cygnal/cvm.cpp b/cygnal/cvm.cpp
index 4186179..6293444 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;
@@ -344,7 +344,7 @@ vm_main(int argc, char *argv[])
#endif
gnash::media::MediaHandler::set(handler);
- boost::shared_ptr<sound::sound_handler> soundHandler(
+ std::shared_ptr<sound::sound_handler> soundHandler(
new sound::NullSoundHandler());
std::vector<movie_data> data;
@@ -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/cygnal.cpp b/cygnal/cygnal.cpp
index 320e278..c9e9399 100644
--- a/cygnal/cygnal.cpp
+++ b/cygnal/cygnal.cpp
@@ -34,6 +34,9 @@
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
+#include <functional>
+#include <mutex>
+#include <condition_variable>
#include "GnashSleep.h"
#include "revno.h"
@@ -51,7 +54,6 @@ extern "C"{
#endif
}
-#include <boost/shared_ptr.hpp>
// classes internal to Gnash
#include "network.h"
@@ -89,11 +91,6 @@ extern "C"{
//#include <boost/date_time/local_time/local_time.hpp>
#include <boost/date_time/time_zone_base.hpp>
#include <boost/date_time/posix_time/posix_time.hpp>
-#include <boost/thread/thread.hpp>
-#include <boost/bind.hpp>
-#include <boost/thread/mutex.hpp>
-#include <boost/thread/condition.hpp>
-#include <boost/thread/tss.hpp>
#ifndef POLLRDHUP
#define POLLRDHUP 0
@@ -166,11 +163,11 @@ static Cache& cache = Cache::getDefaultInstance();
//static std::map<std::string, Proc> procs; // = proc::getDefaultInstance();
// This mutex is used to signify when all the threads are done.
-static boost::condition alldone;
-static boost::mutex alldone_mutex;
+static std::condition_variable alldone;
+static std::mutex alldone_mutex;
-static boost::condition noclients;
-static boost::mutex noclients_mutex;
+static std::condition_variable noclients;
+static std::mutex noclients_mutex;
const char *proto_str[] = {
"NONE",
@@ -305,7 +302,7 @@ Cygnal::loadPeersFile(const std::string &filespec)
}
// Create a new peer item
- boost::shared_ptr<peer_t> peer(new Cygnal::peer_t);
+ std::shared_ptr<peer_t> peer(new Cygnal::peer_t);
peer->hostname = host;
peer->port = strtol(portstr.c_str(), NULL, 0) & 0xffff;
@@ -350,14 +347,14 @@ Cygnal::probePeers(peer_t &peer)
}
void
-Cygnal::probePeers(std::vector<boost::shared_ptr<peer_t> > &peers)
+Cygnal::probePeers(std::vector<std::shared_ptr<peer_t> > &peers)
{
// GNASH_REPORT_FUNCTION;
// createClient();
- std::vector<boost::shared_ptr<Cygnal::peer_t> >::iterator it;
+ std::vector<std::shared_ptr<Cygnal::peer_t> >::iterator it;
for (it = peers.begin(); it != peers.end(); ++it) {
- boost::shared_ptr<Cygnal::peer_t> peer = *it;
+ std::shared_ptr<Cygnal::peer_t> peer = *it;
probePeers(*peer);
if (peer->connected) {
log_network(_("%s is active on fd #%d."), peer->hostname,
@@ -371,20 +368,20 @@ void
Cygnal::removeHandler(const std::string &path)
{
// GNASH_REPORT_FUNCTION;
- map<std::string, boost::shared_ptr<Handler> >::iterator it;
+ map<std::string, std::shared_ptr<Handler> >::iterator it;
it = _handlers.find(path);
if (it != _handlers.end()) {
- boost::mutex::scoped_lock lock(_mutex);
+ std::lock_guard<std::mutex> lock(_mutex);
_handlers.erase(it);
}
}
-boost::shared_ptr<Handler>
+std::shared_ptr<Handler>
Cygnal::findHandler(const std::string &path)
{
// GNASH_REPORT_FUNCTION;
- map<std::string, boost::shared_ptr<Handler> >::iterator it;
- boost::shared_ptr<Handler> hand;
+ map<std::string, std::shared_ptr<Handler> >::iterator it;
+ std::shared_ptr<Handler> hand;
it = _handlers.find(path);
if (it != _handlers.end()) {
hand = (*it).second;
@@ -396,7 +393,7 @@ Cygnal::findHandler(const std::string &path)
void
Cygnal::dump()
{
- std::vector<boost::shared_ptr<Cygnal::peer_t> >::iterator it;
+ std::vector<std::shared_ptr<Cygnal::peer_t> >::iterator it;
for (it = _peers.begin(); it != _peers.end(); ++it) {
cerr << "Remote Peer: " << (*it)->hostname
<< ":" << (*it)->port << endl;
@@ -529,7 +526,7 @@ main(int argc, char *argv[])
// Lock a mutex the main() waits in before exiting. This is
// because all the actually processing is done by other threads.
- boost::mutex::scoped_lock lk(alldone_mutex);
+ std::unique_lock<std::mutex> lk(alldone_mutex);
// Start the Admin handler. This allows one to connect to Cygnal
// at port 1111 and dump statistics to the terminal for tuning
@@ -537,7 +534,7 @@ main(int argc, char *argv[])
if (admin) {
Network::thread_params_t admin_data;
admin_data.port = gnash::ADMIN_PORT;
- boost::thread admin_thread(boost::bind(&admin_handler, &admin_data));
+ std::thread admin_thread(std::bind(&admin_handler, &admin_data));
}
// Cvm cvm;
@@ -567,7 +564,7 @@ main(int argc, char *argv[])
http_data->port = port_offset + gnash::HTTP_PORT;
http_data->hostname = hostname;
if (crcfile.getThreadingFlag()) {
- boost::thread http_thread(boost::bind(&connection_handler, http_data));
+ std::thread http_thread(std::bind(&connection_handler, http_data));
} else {
connection_handler(http_data);
}
@@ -585,7 +582,7 @@ main(int argc, char *argv[])
rtmp_data->port = port_offset + gnash::RTMP_PORT;
rtmp_data->hostname = hostname;
if (crcfile.getThreadingFlag()) {
- boost::thread rtmp_thread(boost::bind(&connection_handler, rtmp_data));
+ std::thread rtmp_thread(std::bind(&connection_handler, rtmp_data));
} else {
connection_handler(rtmp_data);
}
@@ -846,11 +843,11 @@ connection_handler(Network::thread_params_t *args)
hargs->protocol = args->protocol;
hargs->netfd = args->netfd;
#if 0
- boost::shared_ptr<Handler> hand = cyg.findHandler(path);
+ std::shared_ptr<Handler> hand = cyg.findHandler(path);
HTTPServer *http = new HTTPServer;
hargs.entry = http;
http->setDocRoot(crcfile.getDocumentRoot());
- boost::shared_ptr<cygnal::Buffer> buf(http->peekChunk());
+ std::shared_ptr<cygnal::Buffer> buf(http->peekChunk());
http->processHeaderFields(*buf);
string hostname, path;
string::size_type pos = http->getField("host").find(":", 0);
@@ -889,9 +886,9 @@ connection_handler(Network::thread_params_t *args)
// If in multi-threaded mode (the default), start a thread
// with a connection_handler for each port we're interested
// in. Each port of could have a different protocol.
- boost::bind(event_handler, hargs);
+ std::bind(event_handler, hargs);
if (crcfile.getThreadingFlag() == true) {
- boost::thread event_thread(boost::bind(&event_handler, hargs));
+ std::thread event_thread(std::bind(&event_handler, hargs));
} else {
event_handler(hargs);
// We're done, close this network connection
@@ -912,7 +909,7 @@ connection_handler(Network::thread_params_t *args)
rargs->protocol = args->protocol;
rargs->netfd = args->netfd;
RTMPServer *rtmp = new RTMPServer;
- boost::shared_ptr<cygnal::Element> tcurl =
+ std::shared_ptr<cygnal::Element> tcurl =
rtmp->processClientHandShake(args->netfd);
if (!tcurl) {
// log_error("Couldn't read the tcUrl variable!");
@@ -921,7 +918,7 @@ connection_handler(Network::thread_params_t *args)
}
URL url(tcurl->to_string());
string key = url.hostname() + url.path();
- boost::shared_ptr<Handler> hand = cyg.findHandler(url.path());
+ std::shared_ptr<Handler> hand = cyg.findHandler(url.path());
if (!hand) {
log_network(_("Creating new %s Handler for: %s for fd %#d"),
proto_str[args->protocol], key, args->netfd);
@@ -929,8 +926,8 @@ connection_handler(Network::thread_params_t *args)
cyg.addHandler(key, hand);
rargs->entry = rtmp;
hand->setNetConnection(rtmp->getNetConnection());
- std::vector<boost::shared_ptr<Cygnal::peer_t> >::iterator it;
- std::vector<boost::shared_ptr<Cygnal::peer_t> > active = cyg.getActive();
+ std::vector<std::shared_ptr<Cygnal::peer_t> >::iterator it;
+ std::vector<std::shared_ptr<Cygnal::peer_t> > active = cyg.getActive();
for (it = active.begin(); it < active.end(); ++it) {
Cygnal::peer_t *peer = (*it).get();
hand->addRemote(peer->fd);
@@ -952,7 +949,7 @@ connection_handler(Network::thread_params_t *args)
cgiroot = PLUGINSDIR;
}
hand->scanDir(cgiroot);
- boost::shared_ptr<Handler::cygnal_init_t> init =
+ std::shared_ptr<Handler::cygnal_init_t> init =
hand->initModule(url.path());
// this is where the real work gets done.
@@ -961,7 +958,7 @@ connection_handler(Network::thread_params_t *args)
// with a connection_handler for each port we're interested
// in. Each port of course has a different protocol.
if (crcfile.getThreadingFlag() == true) {
- boost::thread event_thread(boost::bind(&event_handler, args));
+ std::thread event_thread(std::bind(&event_handler, args));
} else {
event_handler(args);
// We're done, close this network connection
@@ -1045,7 +1042,7 @@ event_handler(Network::thread_params_t *args)
// hand->dump();
}
#if 0
- boost::shared_ptr<DiskStream> filestream(cache.findFile(args->filespec));
+ std::shared_ptr<DiskStream> filestream(cache.findFile(args->filespec));
if (filestream) {
filestream->dump();
}
@@ -1053,7 +1050,7 @@ event_handler(Network::thread_params_t *args)
// cache.dump();
#endif
//hand->dump();
- boost::shared_ptr<DiskStream> ds;
+ std::shared_ptr<DiskStream> ds;
for (int i=1; i <= hand->getActiveDiskStreams(); i++) {
ds = hand->getDiskStream(i);
if (ds) {
@@ -1090,7 +1087,7 @@ event_handler(Network::thread_params_t *args)
{
largs.netfd = i;
// largs.filespec = fullpath;
- boost::shared_ptr<HTTPServer> &http = hand->getHTTPHandler(i);
+ std::shared_ptr<HTTPServer> &http = hand->getHTTPHandler(i);
if (!http->http_handler(hand, args->netfd, args->buffer)) {
log_network(_("Done with HTTP connection for fd #%d, CGI %s"), i, args->filespec);
net.closeNet(args->netfd);
@@ -1114,7 +1111,7 @@ event_handler(Network::thread_params_t *args)
{
net.setTimeout(timeout);
args->netfd = i;
- boost::shared_ptr<HTTPServer> &http = hand->getHTTPHandler(i);
+ std::shared_ptr<HTTPServer> &http = hand->getHTTPHandler(i);
// args->filespec = path;
if (!http->http_handler(hand, args->netfd, args->buffer)) {
log_network(_("Done with HTTP connection for fd #%d, CGI %s"), i, largs.filespec);
@@ -1126,7 +1123,7 @@ event_handler(Network::thread_params_t *args)
{
args->netfd = i;
// args->filespec = path;
- boost::shared_ptr<HTTPServer> &http = hand->getHTTPHandler(i);
+ std::shared_ptr<HTTPServer> &http = hand->getHTTPHandler(i);
if (!http->http_handler(hand, args->netfd, args->buffer)) {
log_network(_("Done with HTTP connection for fd #%d, CGI %s"), i, args->filespec);
return;
diff --git a/cygnal/cygnal.h b/cygnal/cygnal.h
index 7640556..f310cee 100644
--- a/cygnal/cygnal.h
+++ b/cygnal/cygnal.h
@@ -19,9 +19,8 @@
#ifndef __CYGNAL_H__
#define __CYGNAL_H__
-#include <boost/cstdint.hpp>
-#include <boost/shared_ptr.hpp>
-#include <boost/thread.hpp>
+#include <cstdint>
+#include <thread>
#include <vector>
#include <string>
#include <map>
@@ -59,29 +58,29 @@ public:
void probePeers();
void probePeers(peer_t &peer);
- void probePeers(boost::shared_ptr<peer_t> peer);
- void probePeers(std::vector<boost::shared_ptr<peer_t> > &peers);
+ void probePeers(std::shared_ptr<peer_t> peer);
+ void probePeers(std::vector<std::shared_ptr<peer_t> > &peers);
- void addHandler(const std::string &path, boost::shared_ptr<Handler> x) {
+ void addHandler(const std::string &path, std::shared_ptr<Handler> x) {
_handlers[path] = x;
};
- boost::shared_ptr<Handler> findHandler(const std::string &path);
+ std::shared_ptr<Handler> findHandler(const std::string &path);
void removeHandler(const std::string &path);
- std::vector<boost::shared_ptr<peer_t> > & getActive() { return _active_peers; };
+ std::vector<std::shared_ptr<peer_t> > & getActive() { return _active_peers; };
void dump();
private:
- void addPeer(boost::shared_ptr<peer_t> x) {
+ void addPeer(std::shared_ptr<peer_t> x) {
_peers.push_back(x);
};
- std::vector<boost::shared_ptr<peer_t> > _peers;
- std::vector<boost::shared_ptr<peer_t> > _active_peers;
- std::map<std::string, boost::shared_ptr<Handler> > _handlers;
- boost::mutex _mutex;
+ std::vector<std::shared_ptr<peer_t> > _peers;
+ std::vector<std::shared_ptr<peer_t> > _active_peers;
+ std::map<std::string, std::shared_ptr<Handler> > _handlers;
+ std::mutex _mutex;
};
/// \class cygnal::ThreadCounter of threads currently
@@ -92,13 +91,13 @@ class ThreadCounter
public:
ThreadCounter() : _tids(0) {};
- void increment() { boost::mutex::scoped_lock lk(_tid_mutex); ++_tids; };
- void decrement() { boost::mutex::scoped_lock lk(_tid_mutex); --_tids; };
+ void increment() { std::lock_guard<std::mutex> lk(_tid_mutex); ++_tids; };
+ void decrement() { std::lock_guard<std::mutex> lk(_tid_mutex); --_tids; };
int num_of_tids() { return _tids; };
private:
- boost::mutex _tid_mutex;
+ std::mutex _tid_mutex;
int _tids;
- boost::thread _tid_handle;
+ std::thread _tid_handle;
};
// End of gnash namespace
diff --git a/cygnal/handler.cpp b/cygnal/handler.cpp
index 4ec0a27..d1abec7 100644
--- a/cygnal/handler.cpp
+++ b/cygnal/handler.cpp
@@ -20,12 +20,9 @@
#include "gnashconfig.h"
#endif
-#include <boost/thread/thread.hpp>
-#include <boost/thread/mutex.hpp>
-#include <boost/shared_ptr.hpp>
-#include <boost/shared_array.hpp>
-#include <boost/scoped_ptr.hpp>
-#include <boost/bind.hpp>
+#include <mutex>
+#include <memory>
+#include <functional>
#include <algorithm>
#include <string>
#include <deque>
@@ -99,7 +96,7 @@ Handler::addClient(int fd, Network::protocols_supported_e proto)
{
// GNASH_REPORT_FUNCTION;
- boost::mutex::scoped_lock lock(_mutex);
+ std::lock_guard<std::mutex> lock(_mutex);
log_debug("Adding %d to the client array.", fd);
switch (proto) {
@@ -107,7 +104,7 @@ Handler::addClient(int fd, Network::protocols_supported_e proto)
break;
case Network::HTTP:
{
- boost::shared_ptr<HTTPServer> http(new HTTPServer);
+ std::shared_ptr<HTTPServer> http(new HTTPServer);
_http[fd] = http;
break;
}
@@ -115,7 +112,7 @@ Handler::addClient(int fd, Network::protocols_supported_e proto)
break;
case Network::RTMP:
{
- boost::shared_ptr<RTMPServer> rtmp(new RTMPServer);
+ std::shared_ptr<RTMPServer> rtmp(new RTMPServer);
_rtmp[fd] = rtmp;
break;
}
@@ -145,7 +142,7 @@ Handler::parseFirstRequest(int fd, gnash::Network::protocols_supported_e proto)
string key;
Network net;
cygnal::Buffer *buf = 0;
- boost::mutex::scoped_lock lock(_mutex);
+ std::lock_guard<std::mutex> lock(_mutex);
switch (proto) {
case Network::NONE:
@@ -222,7 +219,7 @@ int
Handler::recvMsg(int fd)
{
// GNASH_REPORT_FUNCTION;
- boost::mutex::scoped_lock lock(_mutex);
+ std::lock_guard<std::mutex> lock(_mutex);
switch (_protocol[fd]) {
case Network::NONE:
@@ -253,7 +250,7 @@ Handler::removeClient(int x)
{
// GNASH_REPORT_FUNCTION;
- boost::mutex::scoped_lock lock(_mutex);
+ std::lock_guard<std::mutex> lock(_mutex);
vector<int>::iterator it;
for (it = _clients.begin(); it < _clients.end(); ++it) {
@@ -265,7 +262,7 @@ Handler::removeClient(int x)
}
void
-Handler::setPlugin(boost::shared_ptr<Handler::cygnal_init_t> &/* init */)
+Handler::setPlugin(std::shared_ptr<Handler::cygnal_init_t> &/* init */)
{
// GNASH_REPORT_FUNCTION;
// _plugin.reset(init.get());
@@ -279,7 +276,7 @@ Handler::setPlugin(Handler::cygnal_io_read_t /* read_ptr */, Handler::cygnal_io_
_plugin.reset(new Handler::cygnal_init_t);
}
-boost::shared_ptr<Handler::cygnal_init_t>
+std::shared_ptr<Handler::cygnal_init_t>
Handler::initModule(const std::string& str)
{
// GNASH_REPORT_FUNCTION;
@@ -318,7 +315,7 @@ Handler::initModule(const std::string& str)
if (!init_symptr) {
log_network(_("No %s symbol in plugin"), symbol);
} else {
- boost::shared_ptr<cygnal_init_t> info = init_symptr(_netconnect);
+ std::shared_ptr<cygnal_init_t> info = init_symptr(_netconnect);
log_network(_("Initialized Plugin: \"%s\": %s"), info->version,
info->description);
}
@@ -358,7 +355,7 @@ Handler::initModule(const std::string& str)
}
size_t
-Handler::writeToPlugin(boost::uint8_t *data, size_t size)
+Handler::writeToPlugin(std::uint8_t *data, size_t size)
{
// GNASH_REPORT_FUNCTION;
size_t ret = 0;
@@ -369,12 +366,12 @@ Handler::writeToPlugin(boost::uint8_t *data, size_t size)
return ret;
}
-boost::shared_ptr<cygnal::Buffer>
+std::shared_ptr<cygnal::Buffer>
Handler::readFromPlugin()
{
// GNASH_REPORT_FUNCTION;
- boost::shared_ptr<cygnal::Buffer> buf;
+ std::shared_ptr<cygnal::Buffer> buf;
if (_plugin) {
buf = _plugin->read_func();
}
@@ -398,7 +395,7 @@ Handler::initialized()
}
// Find a stream in the vector or Disk Streams
-boost::shared_ptr<gnash::DiskStream>
+std::shared_ptr<gnash::DiskStream>
Handler::findStream(const std::string &filespec)
{
// GNASH_REPORT_FUNCTION;
@@ -454,7 +451,7 @@ Handler::playStream(const std::string &filespec)
{
GNASH_REPORT_FUNCTION;
- boost::shared_ptr<gnash::DiskStream> ds = _diskstreams[_streams];
+ std::shared_ptr<gnash::DiskStream> ds = _diskstreams[_streams];
string fullpath = crcfile.getDocumentRoot();
fullpath += "/";
@@ -599,7 +596,7 @@ Handler::dump()
cerr << "Currently there are " << dec <<_diskstreams.size() << " DiskStreams."
<< endl;
- map<int, boost::shared_ptr<DiskStream> >::iterator it;
+ map<int, std::shared_ptr<DiskStream> >::iterator it;
for (it = _diskstreams.begin(); it != _diskstreams.end(); ++it) {
if (it->second) {
cerr << "DiskStream for fd #" << dec << it->first << endl;
diff --git a/cygnal/handler.h b/cygnal/handler.h
index 6154e75..29c84b1 100644
--- a/cygnal/handler.h
+++ b/cygnal/handler.h
@@ -20,12 +20,9 @@
#define __HANDLER_H__ 1
#include <map>
-#include <boost/cstdint.hpp>
-#include <boost/thread/mutex.hpp>
-#include <boost/shared_ptr.hpp>
-#include <boost/shared_array.hpp>
-#include <boost/scoped_ptr.hpp>
-//#include <boost/thread/condition.hpp>
+#include <cstdint>
+#include <mutex>
+#include <memory>
#include <vector>
#include <string>
@@ -90,8 +87,8 @@ public:
} pub_stream_e;
/// This typedef is only used for the io function that must be
/// supported by the plugin.
- typedef size_t (*cygnal_io_write_t)(boost::uint8_t *data, size_t size);
- typedef boost::shared_ptr<cygnal::Buffer> (*cygnal_io_read_t)();
+ typedef size_t (*cygnal_io_write_t)(std::uint8_t *data, size_t size);
+ typedef std::shared_ptr<cygnal::Buffer> (*cygnal_io_read_t)();
typedef struct {
std::string version;
std::string description;
@@ -104,7 +101,7 @@ public:
/// This typedef is only used for the init function optionally
/// supported by the plugin.
- typedef boost::shared_ptr<cygnal_init_t>(*cygnal_io_init_t)(boost::shared_ptr<gnash::RTMPMsg> &msg);
+ typedef std::shared_ptr<cygnal_init_t>(*cygnal_io_init_t)(std::shared_ptr<gnash::RTMPMsg> &msg);
DSOEXPORT Handler();
~Handler();
@@ -121,14 +118,14 @@ public:
// Check the status of active disk streams, which is one less than
// default as the Streams IDs start at 1.
int getActiveDiskStreams() { return _diskstreams.size(); }
- // int removeDiskStream(boost::shared_ptr<DiskStream> x);
+ // int removeDiskStream(std::shared_ptr<DiskStream> x);
// Operate on a disk streaming inprogress
- boost::shared_ptr<gnash::DiskStream> getDiskStream(int x) { return _diskstreams[x]; }
- void setDiskStream(int x, boost::shared_ptr<gnash::DiskStream> y) { _diskstreams[x] = y; }
+ std::shared_ptr<gnash::DiskStream> getDiskStream(int x) { return _diskstreams[x]; }
+ void setDiskStream(int x, std::shared_ptr<gnash::DiskStream> y) { _diskstreams[x] = y; }
/// Add a SharedObject
- void addSOL(boost::shared_ptr<cygnal::Element> x) {
+ void addSOL(std::shared_ptr<cygnal::Element> x) {
_sol.push_back(x);
};
@@ -162,24 +159,24 @@ public:
/// Add a remote machine to the list for input messages.
size_t addRemote(int x) { _remote.push_back(x); return _remote.size(); };
- void setPlugin(boost::shared_ptr<Handler::cygnal_init_t> &init);
+ void setPlugin(std::shared_ptr<Handler::cygnal_init_t> &init);
void setPlugin(Handler::cygnal_io_read_t read_ptr, Handler::cygnal_io_write_t write_ptr );
/// Initialize the named module within Cygnal
//
- boost::shared_ptr<cygnal_init_t> initModule(const std::string& module);
+ std::shared_ptr<cygnal_init_t> initModule(const std::string& module);
/// \method initialized
/// See if any of the cgi-bins has been loaded.
bool initialized();
/// This method reads raw data from a plugin.
- boost::shared_ptr<cygnal::Buffer> readFromPlugin();
+ std::shared_ptr<cygnal::Buffer> readFromPlugin();
/// This method writes raw data to a plugin.
size_t writeToPlugin(cygnal::Buffer &buf) {
return writeToPlugin(buf.begin(), buf.allocated()); };
- size_t writeToPlugin(boost::uint8_t *data, size_t size);
+ size_t writeToPlugin(std::uint8_t *data, size_t size);
// These methods handle control of the file streaming, and are
// used by both HTTP and RTMP*
@@ -208,7 +205,7 @@ public:
int pauseStream(double transid);
// Find a stream in the vector or Disk Streams
- boost::shared_ptr<gnash::DiskStream> findStream(const std::string &filespec);
+ std::shared_ptr<gnash::DiskStream> findStream(const std::string &filespec);
// Pause the RTMP stream
int togglePause(double);
@@ -231,13 +228,13 @@ public:
// and shouldn't really be done here, but we're trying not to
// break things while refactoring.
void setNetConnection(gnash::RTMPMsg *msg) { _netconnect.reset(msg); };
- void setNetConnection(boost::shared_ptr<gnash::RTMPMsg> msg) { _netconnect = msg; };
- boost::shared_ptr<gnash::RTMPMsg> getNetConnection() { return _netconnect;};
+ void setNetConnection(std::shared_ptr<gnash::RTMPMsg> msg) { _netconnect = msg; };
+ std::shared_ptr<gnash::RTMPMsg> getNetConnection() { return _netconnect;};
#endif
#if 1
- boost::shared_ptr<HTTPServer> &getHTTPHandler(int fd) { return _http[fd]; };
- boost::shared_ptr<RTMPServer> getRTMPHandler(int fd) { return _rtmp[fd]; };
+ std::shared_ptr<HTTPServer> &getHTTPHandler(int fd) { return _http[fd]; };
+ std::shared_ptr<RTMPServer> getRTMPHandler(int fd) { return _rtmp[fd]; };
#endif
// Parse the first nessages when starting a new message handler,
@@ -264,15 +261,14 @@ protected:
/// \var _diskstreams
/// This is all the opened disk based files that are currently
/// being streamed by the server.
- // boost::shared_array<gnash::DiskStream> _diskstreams;
- std::map<int, boost::shared_ptr<gnash::DiskStream> > _diskstreams;
+ std::map<int, std::shared_ptr<gnash::DiskStream> > _diskstreams;
/// \var _protocol
/// this is the map of which protocol is being used by which
/// file descriptor.
std::map<int, gnash::Network::protocols_supported_e> _protocol;
#if 1
- std::map<int, boost::shared_ptr<HTTPServer> > _http;
- std::map<int, boost::shared_ptr<RTMPServer> > _rtmp;
+ std::map<int, std::shared_ptr<HTTPServer> > _http;
+ std::map<int, std::shared_ptr<RTMPServer> > _rtmp;
#endif
/// \var _clients
/// is the array of all clients connected to this server for
@@ -286,16 +282,16 @@ protected:
/// \var _local
/// These are local process we're responsible for
/// starting and stopping.
- boost::shared_ptr<cygnal::Proc> _local;
+ std::shared_ptr<cygnal::Proc> _local;
/// \var _plugins
/// is for the dynamically loaded applications
- boost::shared_ptr<cygnal_init_t> _plugin;
+ std::shared_ptr<cygnal_init_t> _plugin;
/// \var _file
/// is for disk based files
- std::vector<boost::shared_ptr<gnash::DiskStream> > _files;
+ std::vector<std::shared_ptr<gnash::DiskStream> > _files;
/// \var _sol
/// is for remote SharedObjects
- std::vector<boost::shared_ptr<cygnal::Element> > _sol;
+ std::vector<std::shared_ptr<cygnal::Element> > _sol;
///var _bodysize;
/// is to store the body size of the previous packet for this
/// channel. 4 and 1 byte heades don't use the length field,
@@ -317,15 +313,15 @@ protected:
/// object we get as the final part of the handshake process
/// that is used to set up the connection. This has all the
/// file paths and other information needed by the server.
- boost::shared_ptr<gnash::RTMPMsg> _netconnect;
+ std::shared_ptr<gnash::RTMPMsg> _netconnect;
#endif
std::map<int, std::string> _keys;
private:
- boost::mutex _mutex;
+ std::mutex _mutex;
// Remote Shared Objects. References are an index into this vector.
-// std::map<std::string, boost::shared_ptr<handler_t> > _handlers;
+// std::map<std::string, std::shared_ptr<handler_t> > _handlers;
};
} // end of gnash namespace
diff --git a/cygnal/http_server.cpp b/cygnal/http_server.cpp
index fde1cb8..7b5f84a 100644
--- a/cygnal/http_server.cpp
+++ b/cygnal/http_server.cpp
@@ -22,10 +22,7 @@
#include "gnashconfig.h"
#endif
-#include <boost/thread/mutex.hpp>
-#include <boost/shared_ptr.hpp>
-#include <boost/shared_array.hpp>
-#include <boost/scoped_array.hpp>
+#include <mutex>
#include <boost/tokenizer.hpp>
#include <boost/date_time/posix_time/posix_time.hpp>
#include <boost/date_time/gregorian/gregorian.hpp>
@@ -66,7 +63,7 @@
using namespace gnash;
using namespace std;
-static boost::mutex stl_mutex;
+static std::mutex stl_mutex;
namespace cygnal
{
@@ -145,7 +142,7 @@ HTTPServer::processClientRequest(Handler *hand, int fd, cygnal::Buffer *buf)
string url = _docroot + _filespec;
// See if the file is in the cache and already opened.
- boost::shared_ptr<DiskStream> filestream(cache.findFile(_filespec));
+ std::shared_ptr<DiskStream> filestream(cache.findFile(_filespec));
if (filestream) {
log_debug("FIXME: found filestream %s in cache!", _filespec);
filestream->dump();
@@ -188,7 +185,7 @@ HTTPServer::processGetRequest(Handler *hand, int fd, cygnal::Buffer *buf)
// cerr << "YYYYYYY: " << (char *)buf->reference() << endl;
// cerr << hexify(buf->reference(), buf->allocated(), false) << endl;
- if (buf == 0) {
+ if (buf == nullptr) {
// log_debug("Queue empty, net connection dropped for fd #%d", getFileFd());
log_debug("Queue empty, net connection dropped for fd #%d", fd);
// cygnal::Buffer buf;
@@ -202,7 +199,7 @@ HTTPServer::processGetRequest(Handler *hand, int fd, cygnal::Buffer *buf)
string url = _docroot + _filespec;
- boost::shared_ptr<DiskStream> ds = hand->getDiskStream(fd);
+ std::shared_ptr<DiskStream> ds = hand->getDiskStream(fd);
if (ds) {
_diskstream = ds;
}
@@ -271,21 +268,21 @@ HTTPServer::processGetRequest(Handler *hand, int fd, cygnal::Buffer *buf)
// A POST request asks sends a data from the client to the server. After processing
// the header like we normally do, we then read the amount of bytes specified by
// the "content-length" field, and then write that data to disk, or decode the amf.
-boost::shared_ptr<cygnal::Buffer>
+std::shared_ptr<cygnal::Buffer>
HTTPServer::processPostRequest(int fd, cygnal::Buffer * /* bufFIXME */)
{
GNASH_REPORT_FUNCTION;
// cerr << "QUE1 = " << _que.size() << endl;
- boost::shared_ptr<cygnal::Buffer> buf;
+ std::shared_ptr<cygnal::Buffer> buf;
if (_que.size() == 0) {
return buf;
}
buf = _que.pop();
- if (buf == 0) {
+ if (buf == nullptr) {
log_debug("Queue empty, net connection dropped for fd #%d",
getFileFd());
return buf;
@@ -293,9 +290,9 @@ HTTPServer::processPostRequest(int fd, cygnal::Buffer * /* bufFIXME */)
// cerr << __FUNCTION__ << buf->allocated() << " : " << hexify(buf->reference(), buf->allocated(), true) << endl;
clearHeader();
- boost::uint8_t *data = processHeaderFields(buf.get());
- size_t length = strtol(getField("content-length").c_str(), NULL, 0);
- boost::shared_ptr<cygnal::Buffer> content(new cygnal::Buffer(length));
+ std::uint8_t *data = processHeaderFields(buf.get());
+ size_t length = strtol(getField("content-length").c_str(), nullptr, 0);
+ std::shared_ptr<cygnal::Buffer> content(new cygnal::Buffer(length));
int ret = 0;
if (buf->allocated() - (data - buf->reference()) ) {
// cerr << "Don't need to read more data: have " << buf->allocated() << " bytes" << endl;
@@ -321,7 +318,7 @@ HTTPServer::processPostRequest(int fd, cygnal::Buffer * /* bufFIXME */)
log_debug("Got AMF data in POST");
#if 0
amf::AMF amf;
- boost::shared_ptr<cygnal::Element> el = amf.extractAMF(content.reference(), content.end());
+ std::shared_ptr<cygnal::Element> el = amf.extractAMF(content.reference(), content.end());
el->dump(); // FIXME: do something intelligent
// with this Element
#endif
@@ -342,13 +339,13 @@ HTTPServer::processPostRequest(int fd, cygnal::Buffer * /* bufFIXME */)
cgis.startCGI(_filespec, true, CGIBIN_PORT);
cgis.createClient("localhost", CGIBIN_PORT);
cgis.writeNet(*content);
- boost::shared_ptr<cygnal::Buffer> reply = cgis.readNet();
+ std::shared_ptr<cygnal::Buffer> reply = cgis.readNet();
writeNet(fd, *reply);
// cgis.stopCGI(_filespec);
#else
- vector<boost::shared_ptr<cygnal::Element> > headers = parseEchoRequest(*content);
- //boost::shared_ptr<cygnal::Element> &el0 = headers[0];
+ vector<std::shared_ptr<cygnal::Element> > headers = parseEchoRequest(*content);
+ //std::shared_ptr<cygnal::Element> &el0 = headers[0];
if (headers.size() >= 4) {
if (headers[3]) {
@@ -367,61 +364,61 @@ HTTPServer::processPostRequest(int fd, cygnal::Buffer * /* bufFIXME */)
return buf;
}
-boost::shared_ptr<cygnal::Buffer>
+std::shared_ptr<cygnal::Buffer>
HTTPServer::processPutRequest(int /* fd */, cygnal::Buffer */* buf */)
{
- boost::shared_ptr<cygnal::Buffer> buf;
+ std::shared_ptr<cygnal::Buffer> buf;
// GNASH_REPORT_FUNCTION;
log_unimpl(_("PUT request"));
return buf;
}
-boost::shared_ptr<cygnal::Buffer>
+std::shared_ptr<cygnal::Buffer>
HTTPServer::processDeleteRequest(int /* fd */, cygnal::Buffer */* buf */)
{
// GNASH_REPORT_FUNCTION;
- boost::shared_ptr<cygnal::Buffer> buf;
+ std::shared_ptr<cygnal::Buffer> buf;
log_unimpl(_("DELETE request"));
return buf;
}
-boost::shared_ptr<cygnal::Buffer>
+std::shared_ptr<cygnal::Buffer>
HTTPServer::processConnectRequest(int /* fd */, cygnal::Buffer */* buf */)
{
// GNASH_REPORT_FUNCTION;
- boost::shared_ptr<cygnal::Buffer> buf;
+ std::shared_ptr<cygnal::Buffer> buf;
log_unimpl(_("CONNECT request"));
return buf;
}
-boost::shared_ptr<cygnal::Buffer>
+std::shared_ptr<cygnal::Buffer>
HTTPServer::processOptionsRequest(int /* fd */, cygnal::Buffer */* buf */)
{
// GNASH_REPORT_FUNCTION;
- boost::shared_ptr<cygnal::Buffer> buf;
+ std::shared_ptr<cygnal::Buffer> buf;
log_unimpl(_("OPTIONS request"));
return buf;
}
-boost::shared_ptr<cygnal::Buffer>
+std::shared_ptr<cygnal::Buffer>
HTTPServer::processHeadRequest(int /* fd */, cygnal::Buffer */* buf */)
{
// GNASH_REPORT_FUNCTION;
- boost::shared_ptr<cygnal::Buffer> buf;
+ std::shared_ptr<cygnal::Buffer> buf;
log_unimpl(_("HEAD request"));
return buf;
}
-boost::shared_ptr<cygnal::Buffer>
+std::shared_ptr<cygnal::Buffer>
HTTPServer::processTraceRequest(int /* fd */, cygnal::Buffer */* buf */)
{
// GNASH_REPORT_FUNCTION;
- boost::shared_ptr<cygnal::Buffer> buf;
+ std::shared_ptr<cygnal::Buffer> buf;
log_unimpl(_("TRACE request"));
return buf;
@@ -481,7 +478,7 @@ HTTPServer::formatGetReply(size_t size, http_status_e code)
formatHeader(size, code);
// int ret = Network::writeNet(_header.str());
-// boost::uint8_t *ptr = (boost::uint8_t *)_body.str().c_str();
+// std::uint8_t *ptr = (std::uint8_t *)_body.str().c_str();
// buf->copy(ptr, _body.str().size());
// _handler->dump();
@@ -512,7 +509,7 @@ HTTPServer::formatPostReply(rtmpt_cmd_e /* code */)
#if 0
formatHeader(_filesize, code);
- boost::shared_ptr<cygnal::Buffer> buf = new cygnal::Buffer;
+ std::shared_ptr<cygnal::Buffer> buf = new cygnal::Buffer;
if (_header.str().size()) {
buf->resize(_header.str().size());
string str = _header.str();
@@ -533,28 +530,28 @@ HTTPServer::formatPostReply(rtmpt_cmd_e /* code */)
#ifndef USE_CGIBIN
// Parse an Echo Request message coming from the Red5 echo_test. This
// method should only be used for testing purposes.
-vector<boost::shared_ptr<cygnal::Element > >
-HTTPServer::parseEchoRequest(boost::uint8_t *data, size_t size)
+vector<std::shared_ptr<cygnal::Element > >
+HTTPServer::parseEchoRequest(std::uint8_t *data, size_t size)
{
// GNASH_REPORT_FUNCTION;
- vector<boost::shared_ptr<cygnal::Element > > headers;
+ vector<std::shared_ptr<cygnal::Element > > headers;
// skip past the header bytes, we don't care about them.
- boost::uint8_t *tmpptr = data + 6;
+ std::uint8_t *tmpptr = data + 6;
- boost::uint16_t length;
- length = ntohs((*(boost::uint16_t *)tmpptr) & 0xffff);
- tmpptr += sizeof(boost::uint16_t);
+ std::uint16_t length;
+ length = ntohs((*(std::uint16_t *)tmpptr) & 0xffff);
+ tmpptr += sizeof(std::uint16_t);
// Get the first name, which is a raw string, and not preceded by
// a type byte.
- boost::shared_ptr<cygnal::Element > el1(new cygnal::Element);
+ std::shared_ptr<cygnal::Element > el1(new cygnal::Element);
// If the length of the name field is corrupted, then we get out of
// range quick, and corrupt memory. This is a bit of a hack, but
// reduces memory errors caused by some of the corrupted tes cases.
- boost::uint8_t *endstr = std::find(tmpptr, tmpptr+length, '\0');
+ std::uint8_t *endstr = std::find(tmpptr, tmpptr+length, '\0');
if (endstr != tmpptr+length) {
log_debug("Caught corrupted string! length was %d, null at %d",
length, endstr-tmpptr);
@@ -566,9 +563,9 @@ HTTPServer::parseEchoRequest(boost::uint8_t *data, size_t size)
// Get the second name, which is a raw string, and not preceded by
// a type byte.
- length = ntohs((*(boost::uint16_t *)tmpptr) & 0xffff);
- tmpptr += sizeof(boost::uint16_t);
- boost::shared_ptr<cygnal::Element > el2(new cygnal::Element);
+ length = ntohs((*(std::uint16_t *)tmpptr) & 0xffff);
+ tmpptr += sizeof(std::uint16_t);
+ std::shared_ptr<cygnal::Element > el2(new cygnal::Element);
// std::string name2(reinterpret_cast<const char *>(tmpptr), length);
// el2->setName(name2.c_str(), name2.size());
@@ -588,11 +585,11 @@ HTTPServer::parseEchoRequest(boost::uint8_t *data, size_t size)
// Get the last two pieces of data, which are both AMF encoded
// with a type byte.
amf::AMF amf;
- boost::shared_ptr<cygnal::Element> el3 = amf.extractAMF(tmpptr, tmpptr + size);
+ std::shared_ptr<cygnal::Element> el3 = amf.extractAMF(tmpptr, tmpptr + size);
headers.push_back(el3);
tmpptr += amf.totalsize();
- boost::shared_ptr<cygnal::Element> el4 = amf.extractAMF(tmpptr, tmpptr + size);
+ std::shared_ptr<cygnal::Element> el4 = amf.extractAMF(tmpptr, tmpptr + size);
headers.push_back(el4);
return headers;
@@ -605,7 +602,7 @@ cygnal::Buffer &
HTTPServer::formatEchoResponse(const std::string &num, cygnal::Element &el)
{
// GNASH_REPORT_FUNCTION;
- boost::shared_ptr<cygnal::Buffer> data;
+ std::shared_ptr<cygnal::Buffer> data;
cygnal::Element nel;
if (el.getType() == cygnal::Element::TYPED_OBJECT_AMF0) {
@@ -616,7 +613,7 @@ HTTPServer::formatEchoResponse(const std::string &num, cygnal::Element &el)
// FIXME: see about using std::reverse() instead.
for (int i=el.propertySize()-1; i>=0; i--) {
// for (int i=0 ; i<el.propertySize(); i++) {
- boost::shared_ptr<cygnal::Element> child = el.getProperty(i);
+ std::shared_ptr<cygnal::Element> child = el.getProperty(i);
nel.addProperty(child);
}
data = nel.encode();
@@ -638,11 +635,11 @@ HTTPServer::formatEchoResponse(const std::string &num, cygnal::Buffer &data)
}
cygnal::Buffer &
-HTTPServer::formatEchoResponse(const std::string &num, boost::uint8_t *data, size_t size)
+HTTPServer::formatEchoResponse(const std::string &num, std::uint8_t *data, size_t size)
{
// GNASH_REPORT_FUNCTION;
- //boost::uint8_t *tmpptr = data;
+ //std::uint8_t *tmpptr = data;
// FIXME: temporary hacks while debugging
cygnal::Buffer fixme("00 00 00 00 00 01");
@@ -667,11 +664,11 @@ HTTPServer::formatEchoResponse(const std::string &num, boost::uint8_t *data, siz
// the request, a slash followed by a number like "/2".
string result = num;
result += "/onResult";
- boost::shared_ptr<cygnal::Buffer> res = amf::AMF::encodeString(result);
+ std::shared_ptr<cygnal::Buffer> res = amf::AMF::encodeString(result);
_buffer.append(res->begin()+1, res->size()-1);
// Add the null data item
- boost::shared_ptr<cygnal::Buffer> null = amf::AMF::encodeString("null");
+ std::shared_ptr<cygnal::Buffer> null = amf::AMF::encodeString("null");
_buffer.append(null->begin()+1, null->size()-1);
// Add the other binary blob
@@ -710,7 +707,7 @@ HTTPServer::formatEchoResponse(const std::string &num, boost::uint8_t *data, siz
/// <index>
/// is a consecutive number that seems to be used to detect missing packages
HTTP::rtmpt_cmd_e
-HTTP::extractRTMPT(boost::uint8_t *data)
+HTTP::extractRTMPT(std::uint8_t *data)
{
GNASH_REPORT_FUNCTION;
@@ -779,7 +776,7 @@ HTTP::extractRTMPT(boost::uint8_t *data)
/// <index>
/// is a consecutive number that seems to be used to detect missing packages
HTTPServer::rtmpt_cmd_e
-HTTPServer::extractRTMPT(boost::uint8_t *data)
+HTTPServer::extractRTMPT(std::uint8_t *data)
{
GNASH_REPORT_FUNCTION;
@@ -822,8 +819,8 @@ HTTPServer::extractRTMPT(boost::uint8_t *data)
}
}
- _index = strtol(indx.c_str(), NULL, 0);
- _clientid = strtol(cid.c_str(), NULL, 0);
+ _index = strtol(indx.c_str(), nullptr, 0);
+ _clientid = strtol(cid.c_str(), nullptr, 0);
end = body.find("\r\n", start);
// if (end != string::npos) {
// cmd = HTTPServer::CLOSE;
@@ -834,7 +831,7 @@ HTTPServer::extractRTMPT(boost::uint8_t *data)
#if 0
HTTPServer::http_method_e
-HTTPServer::extractCommand(boost::uint8_t *data)
+HTTPServer::extractCommand(std::uint8_t *data)
{
GNASH_REPORT_FUNCTION;
@@ -867,9 +864,9 @@ HTTPServer::extractCommand(boost::uint8_t *data)
// For valid requests, the second argument, delimited by spaces
// is the filespec of the file being requested or transmitted.
if (cmd != HTTP::HTTP_NONE) {
- boost::uint8_t *start = std::find(data, data+7, ' ') + 1;
- boost::uint8_t *end = std::find(start + 2, data+PATH_MAX, ' ');
- boost::uint8_t *params = std::find(start, end, '?');
+ std::uint8_t *start = std::find(data, data+7, ' ') + 1;
+ std::uint8_t *end = std::find(start + 2, data+PATH_MAX, ' ');
+ std::uint8_t *params = std::find(start, end, '?');
if (params != end) {
_params = std::string(params+1, end);
_filespec = std::string(start, params);
@@ -893,7 +890,7 @@ HTTPServer::extractCommand(boost::uint8_t *data)
return cmd;
}
-boost::uint8_t *
+std::uint8_t *
HTTPServer::processHeaderFields(cygnal::Buffer &buf)
{
// GNASH_REPORT_FUNCTION;
@@ -946,8 +943,8 @@ HTTPServer::processHeaderFields(cygnal::Buffer &buf)
// cerr << "FIXME: " << (void *)i << " : " << dec << end << endl;
} else {
- const boost::uint8_t *cmd = reinterpret_cast<const boost::uint8_t *>(i->c_str());
- if (extractCommand(const_cast<boost::uint8_t *>(cmd)) == HTTP::HTTP_NONE) {
+ const std::uint8_t *cmd = reinterpret_cast<const std::uint8_t *>(i->c_str());
+ if (extractCommand(const_cast<std::uint8_t *>(cmd)) == HTTP::HTTP_NONE) {
break;
#if 1
} else {
@@ -1006,7 +1003,7 @@ HTTPServer::http_handler(Handler *hand, int netfd, cygnal::Buffer *buf)
// Handler *hand = reinterpret_cast<Handler *>(args->handler);
// cygnal::Buffer *buf = args->buffer;
- // boost::shared_ptr<HTTPServer> www(new HTTPServer); // = hand->getHTTPHandler (args->netfd);
+ // std::shared_ptr<HTTPServer> www(new HTTPServer); // = hand->getHTTPHandler (args->netfd);
string url, parameters;
// by default, only look once unless changed later
@@ -1061,11 +1058,11 @@ HTTPServer::http_handler(Handler *hand, int netfd, cygnal::Buffer *buf)
cerr << "FIXME no cache hit for: " << www.getFilespec() << endl;
// www.clearHeader();
// cygnal::Buffer &ss = www.formatHeader(filestream->getFileSize(), HTTP::LIFE_IS_GOOD);
-// www.writeNet(args->netfd, (boost::uint8_t *)www.getHeader().c_str(), www.getHeader().size());
+// www.writeNet(args->netfd, (std::uint8_t *)www.getHeader().c_str(), www.getHeader().size());
// cache.addResponse(www.getFilespec(), www.getHeader());
} else {
cerr << "FIXME cache hit on: " << www.getFilespec() << endl;
- www.writeNet(args->netfd, (boost::uint8_t *)response.c_str(), response.size());
+ www.writeNet(args->netfd, (std::uint8_t *)response.c_str(), response.size());
}
#endif
diff --git a/cygnal/http_server.h b/cygnal/http_server.h
index e63f307..594ec48 100644
--- a/cygnal/http_server.h
+++ b/cygnal/http_server.h
@@ -22,9 +22,6 @@
#include <string>
#include <vector>
-#include <boost/shared_ptr.hpp>
-#include <boost/shared_array.hpp>
-#include <boost/scoped_array.hpp>
#include <sstream>
#include "amf.h"
@@ -49,16 +46,16 @@ public:
http_method_e processClientRequest(int fd);
http_method_e processClientRequest(Handler *hand, int fd, cygnal::Buffer *buf);
cygnal::Buffer &processGetRequest(Handler *hand, int fd, cygnal::Buffer *buf);
- boost::shared_ptr<cygnal::Buffer> processPostRequest(int fd, cygnal::Buffer *buf);
- boost::shared_ptr<cygnal::Buffer> processPutRequest(int fd, cygnal::Buffer *buf);
- boost::shared_ptr<cygnal::Buffer> processDeleteRequest(int fd, cygnal::Buffer *buf);
- boost::shared_ptr<cygnal::Buffer> processConnectRequest(int fd, cygnal::Buffer *buf);
- boost::shared_ptr<cygnal::Buffer> processOptionsRequest(int fd, cygnal::Buffer *buf);
- boost::shared_ptr<cygnal::Buffer> processHeadRequest(int fd, cygnal::Buffer *buf);
- boost::shared_ptr<cygnal::Buffer> processTraceRequest(int fd, cygnal::Buffer *buf);
+ std::shared_ptr<cygnal::Buffer> processPostRequest(int fd, cygnal::Buffer *buf);
+ std::shared_ptr<cygnal::Buffer> processPutRequest(int fd, cygnal::Buffer *buf);
+ std::shared_ptr<cygnal::Buffer> processDeleteRequest(int fd, cygnal::Buffer *buf);
+ std::shared_ptr<cygnal::Buffer> processConnectRequest(int fd, cygnal::Buffer *buf);
+ std::shared_ptr<cygnal::Buffer> processOptionsRequest(int fd, cygnal::Buffer *buf);
+ std::shared_ptr<cygnal::Buffer> processHeadRequest(int fd, cygnal::Buffer *buf);
+ std::shared_ptr<cygnal::Buffer> processTraceRequest(int fd, cygnal::Buffer *buf);
// Handle the response for the request.
- boost::shared_ptr<cygnal::Buffer> formatServerReply(http_status_e code);
+ std::shared_ptr<cygnal::Buffer> formatServerReply(http_status_e code);
cygnal::Buffer &formatGetReply(gnash::DiskStream::filetype_e type, size_t size, http_status_e code);
cygnal::Buffer &formatGetReply(size_t size, http_status_e code);
cygnal::Buffer &formatGetReply(http_status_e code);
@@ -68,27 +65,27 @@ public:
// These methods extract data from an RTMPT message. RTMP is an
// extension to HTTP that adds commands to manipulate the
// connection's persistance.
- rtmpt_cmd_e extractRTMPT(boost::uint8_t *data);
+ rtmpt_cmd_e extractRTMPT(std::uint8_t *data);
rtmpt_cmd_e extractRTMPT(cygnal::Buffer &data)
{ return extractRTMPT(data.reference()); };
#if 0
// Examine the beginning of the data for an HTTP request command
// like GET or POST, etc...
- http_method_e extractCommand(boost::uint8_t *data);
+ http_method_e extractCommand(std::uint8_t *data);
http_method_e extractCommand(cygnal::Buffer &data)
{ return extractCommand(data.reference()); };
// process all the header fields in the Buffer, storing them internally
// in _fields. The address returned is the address where the Content data
// starts, and is "Content-Length" bytes long, of "Content-Type" data.
- boost::uint8_t *processHeaderFields(cygnal::Buffer &buf);
+ std::uint8_t *processHeaderFields(cygnal::Buffer &buf);
#endif
#if 0
// Parse an Echo Request message coming from the Red5 echo_test.
- std::vector<boost::shared_ptr<cygnal::Element > > parseEchoRequest(gnash::cygnal::Buffer &buf) { return parseEchoRequest(buf.reference(), buf.size()); };
- std::vector<boost::shared_ptr<cygnal::Element > > parseEchoRequest(boost::uint8_t *buf, size_t size);
+ std::vector<std::shared_ptr<cygnal::Element > > parseEchoRequest(gnash::cygnal::Buffer &buf) { return parseEchoRequest(buf.reference(), buf.size()); };
+ std::vector<std::shared_ptr<cygnal::Element > > parseEchoRequest(std::uint8_t *buf, size_t size);
// format a response to the 'echo' test used for testing Gnash.
gnash::cygnal::Buffer &formatEchoResponse(const std::string &num, cygnal::Element &el);
@@ -97,12 +94,12 @@ public:
#endif
bool http_handler(Handler *hand, int netfd, cygnal::Buffer *buf);
- boost::shared_ptr<gnash::DiskStream> getDiskStream() { return _diskstream; };
+ std::shared_ptr<gnash::DiskStream> getDiskStream() { return _diskstream; };
void dump();
private:
cygnal::Buffer _buf;
- boost::shared_ptr<gnash::DiskStream> _diskstream;
+ std::shared_ptr<gnash::DiskStream> _diskstream;
};
} // end of gnash namespace
diff --git a/cygnal/libamf/amf.cpp b/cygnal/libamf/amf.cpp
index a49e645..b2dea5e 100644
--- a/cygnal/libamf/amf.cpp
+++ b/cygnal/libamf/amf.cpp
@@ -26,11 +26,10 @@
#include "element.h"
#include "amfutf8.h"
-#include <boost/shared_ptr.hpp>
#include <string>
#include <vector>
#include <map>
-#include <boost/cstdint.hpp>
+#include <cstdint>
namespace cygnal
{
@@ -102,10 +101,10 @@ void *
swapBytes(void *word, size_t size)
{
union {
- boost::uint16_t s;
+ std::uint16_t s;
struct {
- boost::uint8_t c0;
- boost::uint8_t c1;
+ std::uint8_t c0;
+ std::uint8_t c1;
} c;
} u;
@@ -118,7 +117,7 @@ swapBytes(void *word, size_t size)
// Little-endian machine: byte-swap the word
// A conveniently-typed pointer to the source data
- boost::uint8_t *x = static_cast<boost::uint8_t *>(word);
+ std::uint8_t *x = static_cast<std::uint8_t *>(word);
/// Handle odd as well as even counts of bytes
std::reverse(x, x+size);
@@ -135,14 +134,14 @@ swapBytes(void *word, size_t size)
/// @param num A double value to serialize.
///
/// @return a binary AMF packet in big endian format
-boost::shared_ptr<Buffer>
+std::shared_ptr<Buffer>
AMF::encodeNumber(double indata)
{
// GNASH_REPORT_FUNCTION;
double num;
// Encode the data as a 64 bit, big-endian, numeric value
// only one additional byte for the type
- boost::shared_ptr<Buffer> buf(new Buffer(AMF0_NUMBER_SIZE + 1));
+ std::shared_ptr<Buffer> buf(new Buffer(AMF0_NUMBER_SIZE + 1));
*buf = Element::NUMBER_AMF0;
num = indata;
swapBytes(&num, AMF0_NUMBER_SIZE);
@@ -156,14 +155,14 @@ AMF::encodeNumber(double indata)
/// @param flag The boolean value to serialize.
///
/// @return a binary AMF packet in big endian format
-boost::shared_ptr<Buffer>
+std::shared_ptr<Buffer>
AMF::encodeBoolean(bool flag)
{
// GNASH_REPORT_FUNCTION;
// Encode a boolean value. 0 for false, 1 for true
- boost::shared_ptr<Buffer> buf(new Buffer(2));
+ std::shared_ptr<Buffer> buf(new Buffer(2));
*buf = Element::BOOLEAN_AMF0;
- *buf += static_cast<boost::uint8_t>(flag);
+ *buf += static_cast<std::uint8_t>(flag);
return buf;
}
@@ -171,14 +170,14 @@ AMF::encodeBoolean(bool flag)
/// \brief Encode the end of an object to it's serialized representation.
///
/// @return a binary AMF packet in big endian format
-boost::shared_ptr<Buffer>
+std::shared_ptr<Buffer>
AMF::encodeObject(const cygnal::Element &data)
{
// GNASH_REPORT_FUNCTION;
- boost::uint32_t length;
+ std::uint32_t length;
length = data.propertySize();
gnash::log_debug(_("Encoded data size has %d properties"), length);
- boost::shared_ptr<cygnal::Buffer> buf;
+ std::shared_ptr<cygnal::Buffer> buf;
if (length) {
buf.reset(new cygnal::Buffer);
} else {
@@ -187,11 +186,11 @@ AMF::encodeObject(const cygnal::Element &data)
*buf = Element::OBJECT_AMF0;
if (data.propertySize() > 0) {
- std::vector<boost::shared_ptr<cygnal::Element> >::const_iterator ait;
- std::vector<boost::shared_ptr<cygnal::Element> > props = data.getProperties();
+ std::vector<std::shared_ptr<cygnal::Element> >::const_iterator ait;
+ std::vector<std::shared_ptr<cygnal::Element> > props = data.getProperties();
for (ait = props.begin(); ait != props.end(); ++ait) {
- boost::shared_ptr<cygnal::Element> el = (*(ait));
- boost::shared_ptr<cygnal::Buffer> item = AMF::encodeElement(el);
+ std::shared_ptr<cygnal::Element> el = (*(ait));
+ std::shared_ptr<cygnal::Buffer> item = AMF::encodeElement(el);
if (item) {
*buf += item;
item.reset();
@@ -213,11 +212,11 @@ AMF::encodeObject(const cygnal::Element &data)
/// \brief Encode the end of an object to it's serialized representation.
///
/// @return a binary AMF packet in big endian format
-boost::shared_ptr<Buffer>
+std::shared_ptr<Buffer>
AMF::encodeObjectEnd()
{
// GNASH_REPORT_FUNCTION;
- boost::shared_ptr<Buffer> buf(new Buffer(1));
+ std::shared_ptr<Buffer> buf(new Buffer(1));
*buf += TERMINATOR;
return buf;
@@ -226,11 +225,11 @@ AMF::encodeObjectEnd()
/// \brief Encode an "Undefined" object to it's serialized representation.
///
/// @return a binary AMF packet in big endian format
-boost::shared_ptr<Buffer>
+std::shared_ptr<Buffer>
AMF::encodeUndefined()
{
// GNASH_REPORT_FUNCTION;
- boost::shared_ptr<Buffer> buf(new Buffer(1));
+ std::shared_ptr<Buffer> buf(new Buffer(1));
*buf = Element::UNDEFINED_AMF0;
return buf;
@@ -239,11 +238,11 @@ AMF::encodeUndefined()
/// \brief Encode a "Unsupported" object to it's serialized representation.
///
/// @return a binary AMF packet in big endian format
-boost::shared_ptr<Buffer>
+std::shared_ptr<Buffer>
AMF::encodeUnsupported()
{
// GNASH_REPORT_FUNCTION;
- boost::shared_ptr<Buffer> buf(new Buffer(1));
+ std::shared_ptr<Buffer> buf(new Buffer(1));
*buf = Element::UNSUPPORTED_AMF0;
return buf;
@@ -254,13 +253,13 @@ AMF::encodeUnsupported()
/// @param data A pointer to the raw bytes that becomes the data.
///
/// @return a binary AMF packet in big endian format
-boost::shared_ptr<Buffer>
-AMF::encodeDate(const boost::uint8_t *date)
+std::shared_ptr<Buffer>
+AMF::encodeDate(const std::uint8_t *date)
{
// GNASH_REPORT_FUNCTION;
-// boost::shared_ptr<Buffer> buf;
- boost::shared_ptr<Buffer> buf;
- if (date != 0) {
+// std::shared_ptr<Buffer> buf;
+ std::shared_ptr<Buffer> buf;
+ if (date != nullptr) {
buf.reset(new Buffer(AMF0_NUMBER_SIZE+1));
*buf = Element::DATE_AMF0;
double num = *(reinterpret_cast<const double*>(date));
@@ -274,12 +273,12 @@ AMF::encodeDate(const boost::uint8_t *date)
/// A NULL object is often used as a placeholder in RTMP.
///
/// @return a binary AMF packet in big endian format
-boost::shared_ptr<Buffer>
+std::shared_ptr<Buffer>
AMF::encodeNull()
{
// GNASH_REPORT_FUNCTION;
- boost::shared_ptr<Buffer> buf(new Buffer(1));
+ std::shared_ptr<Buffer> buf(new Buffer(1));
*buf = Element::NULL_AMF0;
return buf;
@@ -292,11 +291,11 @@ AMF::encodeNull()
/// @param nbytes The number of bytes to serialize.
///
/// @return a binary AMF packet in big endian format
-boost::shared_ptr<Buffer>
-AMF::encodeXMLObject(const boost::uint8_t * /*data */, size_t /* size */)
+std::shared_ptr<Buffer>
+AMF::encodeXMLObject(const std::uint8_t * /*data */, size_t /* size */)
{
// GNASH_REPORT_FUNCTION;
- boost::shared_ptr<Buffer> buf;
+ std::shared_ptr<Buffer> buf;
gnash::log_unimpl(_("XML AMF objects not supported yet"));
buf.reset();
return buf;
@@ -309,15 +308,15 @@ AMF::encodeXMLObject(const boost::uint8_t * /*data */, size_t /* size */)
/// @param size The number of bytes to serialize.
///
/// @return a binary AMF packet in big endian format
-boost::shared_ptr<Buffer>
+std::shared_ptr<Buffer>
AMF::encodeTypedObject(const cygnal::Element &data)
{
// GNASH_REPORT_FUNCTION;
size_t size = 0;
- boost::uint32_t props;
+ std::uint32_t props;
props = data.propertySize();
- boost::shared_ptr<cygnal::Buffer> buf;
+ std::shared_ptr<cygnal::Buffer> buf;
// log_debug("Encoded data size has %d properties", props);
if (props) {
// Calculate the total size of the output buffer
@@ -334,7 +333,7 @@ AMF::encodeTypedObject(const cygnal::Element &data)
*buf = Element::TYPED_OBJECT_AMF0;
size_t length = data.getNameSize();
- boost::uint16_t enclength = length;
+ std::uint16_t enclength = length;
swapBytes(&enclength, 2);
*buf += enclength;
@@ -346,11 +345,11 @@ AMF::encodeTypedObject(const cygnal::Element &data)
}
if (data.propertySize() > 0) {
- std::vector<boost::shared_ptr<cygnal::Element> >::const_iterator ait;
- std::vector<boost::shared_ptr<cygnal::Element> > props = data.getProperties();
+ std::vector<std::shared_ptr<cygnal::Element> >::const_iterator ait;
+ std::vector<std::shared_ptr<cygnal::Element> > props = data.getProperties();
for (ait = props.begin(); ait != props.end(); ++ait) {
- boost::shared_ptr<cygnal::Element> el = (*(ait));
- boost::shared_ptr<cygnal::Buffer> item = AMF::encodeElement(el);
+ std::shared_ptr<cygnal::Element> el = (*(ait));
+ std::shared_ptr<cygnal::Buffer> item = AMF::encodeElement(el);
if (item) {
*buf += item;
item.reset();
@@ -376,14 +375,14 @@ AMF::encodeTypedObject(const cygnal::Element &data)
/// @param size The number of bytes to serialize.
///
/// @return a binary AMF packet in big endian format (header,data)
-boost::shared_ptr<Buffer>
-AMF::encodeReference(boost::uint16_t index)
+std::shared_ptr<Buffer>
+AMF::encodeReference(std::uint16_t index)
{
// GNASH_REPORT_FUNCTION;
- boost::uint16_t num = index;
- boost::shared_ptr<cygnal::Buffer> buf(new Buffer(3));
+ std::uint16_t num = index;
+ std::shared_ptr<cygnal::Buffer> buf(new Buffer(3));
*buf = Element::REFERENCE_AMF0;
- swapBytes(&num, sizeof(boost::uint16_t));
+ swapBytes(&num, sizeof(std::uint16_t));
*buf += num;
return buf;
@@ -396,11 +395,11 @@ AMF::encodeReference(boost::uint16_t index)
/// @param size The number of bytes to serialize.
///
/// @return a binary AMF packet in big endian format (header,data)
-boost::shared_ptr<Buffer>
-AMF::encodeMovieClip(const boost::uint8_t * /*data */, size_t /* size */)
+std::shared_ptr<Buffer>
+AMF::encodeMovieClip(const std::uint8_t * /*data */, size_t /* size */)
{
// GNASH_REPORT_FUNCTION;
- boost::shared_ptr<Buffer> buf;
+ std::shared_ptr<Buffer> buf;
gnash::log_unimpl(_("Movie Clip AMF objects not supported yet"));
return buf;
@@ -415,17 +414,17 @@ AMF::encodeMovieClip(const boost::uint8_t * /*data */, size_t /* size */)
/// @param size The number of bytes to serialize.
///
/// @return a binary AMF packet in big endian format
-boost::shared_ptr<Buffer>
+std::shared_ptr<Buffer>
AMF::encodeECMAArray(const cygnal::Element &data)
{
// GNASH_REPORT_FUNCTION;
- boost::uint32_t length;
+ std::uint32_t length;
bool sparse = false;
//size_t counter = 0;
length = data.propertySize();
// log_debug("Encoded data size has %d properties", length);
- boost::shared_ptr<cygnal::Buffer> buf(new cygnal::Buffer);
+ std::shared_ptr<cygnal::Buffer> buf(new cygnal::Buffer);
if (length == 0) {
// an undefined array is only 5 bytes, 1 for the type and
// 4 for the length.
@@ -433,17 +432,17 @@ AMF::encodeECMAArray(const cygnal::Element &data)
}
*buf = Element::ECMA_ARRAY_AMF0;
length = 0;
- swapBytes(&length, sizeof(boost::uint32_t));
+ swapBytes(&length, sizeof(std::uint32_t));
*buf += length;
// At lest for red5, it seems to encode from the last item to the
// first, so we do the same for now.
if (data.propertySize() > 0) {
- boost::shared_ptr<cygnal::Buffer> item;
- std::vector<boost::shared_ptr<cygnal::Element> >::const_iterator ait;
- std::vector<boost::shared_ptr<cygnal::Element> > props = data.getProperties();
+ std::shared_ptr<cygnal::Buffer> item;
+ std::vector<std::shared_ptr<cygnal::Element> >::const_iterator ait;
+ std::vector<std::shared_ptr<cygnal::Element> > props = data.getProperties();
for (ait = props.begin(); ait != props.end(); ++ait) {
- boost::shared_ptr<cygnal::Element> el = (*(ait));
+ std::shared_ptr<cygnal::Element> el = (*(ait));
if (sparse) {
sparse = false;
// char num[12];
@@ -468,7 +467,7 @@ AMF::encodeECMAArray(const cygnal::Element &data)
#if 0
double count = data.propertySize();
cygnal::Element ellen("length", count);
- boost::shared_ptr<cygnal::Buffer> buflen = ellen.encode();
+ std::shared_ptr<cygnal::Buffer> buflen = ellen.encode();
*buf += buflen;
#endif
@@ -487,11 +486,11 @@ AMF::encodeECMAArray(const cygnal::Element &data)
/// @param size The number of bytes to serialize.
///
/// @return a binary AMF packet in big endian format
-boost::shared_ptr<Buffer>
-AMF::encodeLongString(const boost::uint8_t * /* data */, size_t /* size */)
+std::shared_ptr<Buffer>
+AMF::encodeLongString(const std::uint8_t * /* data */, size_t /* size */)
{
// GNASH_REPORT_FUNCTION;
- boost::shared_ptr<Buffer> buf;
+ std::shared_ptr<Buffer> buf;
gnash::log_unimpl(_("Long String AMF objects not supported yet"));
return buf;
@@ -504,11 +503,11 @@ AMF::encodeLongString(const boost::uint8_t * /* data */, size_t /* size */)
/// @param size The number of bytes to serialize.
///
/// @return a binary AMF packet in big endian format
-boost::shared_ptr<Buffer>
-AMF::encodeRecordSet(const boost::uint8_t * /* data */, size_t /* size */)
+std::shared_ptr<Buffer>
+AMF::encodeRecordSet(const std::uint8_t * /* data */, size_t /* size */)
{
// GNASH_REPORT_FUNCTION;
- boost::shared_ptr<Buffer> buf;
+ std::shared_ptr<Buffer> buf;
gnash::log_unimpl(_("Reecord Set AMF objects not supported yet"));
return buf;
@@ -523,14 +522,14 @@ AMF::encodeRecordSet(const boost::uint8_t * /* data */, size_t /* size */)
/// @param size The number of bytes to serialize.
///
/// @return a binary AMF packet in big endian format (header,data)
-boost::shared_ptr<Buffer>
+std::shared_ptr<Buffer>
AMF::encodeStrictArray(const cygnal::Element &data)
{
// GNASH_REPORT_FUNCTION;
- boost::uint32_t items;
+ std::uint32_t items;
items = data.propertySize();
// log_debug("Encoded data size has %d properties", items);
- boost::shared_ptr<cygnal::Buffer> buf(new cygnal::Buffer);
+ std::shared_ptr<cygnal::Buffer> buf(new cygnal::Buffer);
if (items) {
buf.reset(new cygnal::Buffer);
} else {
@@ -540,17 +539,17 @@ AMF::encodeStrictArray(const cygnal::Element &data)
// buf.reset(new cygnal::Buffer(5));
}
*buf = Element::STRICT_ARRAY_AMF0;
- swapBytes(&items, sizeof(boost::uint32_t));
+ swapBytes(&items, sizeof(std::uint32_t));
*buf += items;
if (data.propertySize() > 0) {
- std::vector<boost::shared_ptr<cygnal::Element> >::const_iterator ait;
- std::vector<boost::shared_ptr<cygnal::Element> > props = data.getProperties();
+ std::vector<std::shared_ptr<cygnal::Element> >::const_iterator ait;
+ std::vector<std::shared_ptr<cygnal::Element> > props = data.getProperties();
bool sparse = false;
size_t counter = 0;
for (ait = props.begin(); ait != props.end(); ++ait) {
counter++;
- boost::shared_ptr<cygnal::Element> el = (*(ait));
+ std::shared_ptr<cygnal::Element> el = (*(ait));
#if 0
// FIXME: Red5's echo tests like to turn strict array's into ecma
// arrays, but we shouldn't do that in the core.
@@ -563,10 +562,10 @@ AMF::encodeStrictArray(const cygnal::Element &data)
// When returning an ECMA array for a sparsely populated
// array, Red5 adds one more to the count to be 1 based,
// instead of zero based.
- boost::uint32_t moreitems = data.propertySize() + 1;
- swapBytes(&moreitems, sizeof(boost::uint32_t));
- boost::uint8_t *ptr = buf->reference() + 1;
- memcpy(ptr, &moreitems, sizeof(boost::uint32_t));
+ std::uint32_t moreitems = data.propertySize() + 1;
+ swapBytes(&moreitems, sizeof(std::uint32_t));
+ std::uint8_t *ptr = buf->reference() + 1;
+ memcpy(ptr, &moreitems, sizeof(std::uint32_t));
sparse = true;
}
continue;
@@ -582,7 +581,7 @@ AMF::encodeStrictArray(const cygnal::Element &data)
cygnal::Element ellen("length", nodes);
*buf += AMF::encodeElement(ellen);
} else {
- boost::shared_ptr<cygnal::Buffer> item = AMF::encodeElement(el);
+ std::shared_ptr<cygnal::Buffer> item = AMF::encodeElement(el);
if (item) {
*buf += item;
item.reset();
@@ -604,10 +603,10 @@ AMF::encodeStrictArray(const cygnal::Element &data)
/// @param str a string value
///
/// @return a binary AMF packet in big endian format
-boost::shared_ptr<Buffer>
+std::shared_ptr<Buffer>
AMF::encodeString(const std::string &str)
{
- boost::uint8_t *ptr = const_cast<boost::uint8_t *>(reinterpret_cast<const boost::uint8_t *>(str.c_str()));
+ std::uint8_t *ptr = const_cast<std::uint8_t *>(reinterpret_cast<const std::uint8_t *>(str.c_str()));
return encodeString(ptr, str.size());
}
@@ -618,17 +617,17 @@ AMF::encodeString(const std::string &str)
/// @param size The size of the data in bytes
///
/// @return a binary AMF packet in big endian format
-boost::shared_ptr<Buffer>
-AMF::encodeString(boost::uint8_t *data, size_t size)
+std::shared_ptr<Buffer>
+AMF::encodeString(std::uint8_t *data, size_t size)
{
// GNASH_REPORT_FUNCTION;
- boost::shared_ptr<Buffer>buf(new Buffer(size + AMF_HEADER_SIZE));
+ std::shared_ptr<Buffer>buf(new Buffer(size + AMF_HEADER_SIZE));
*buf = Element::STRING_AMF0;
// when a string is stored in an element, we add a NULL terminator so
// it can be printed by to_string() efficiently. The NULL terminator
// doesn't get written when encoding a string as it has a byte count
// instead.
- boost::uint16_t length = size;
+ std::uint16_t length = size;
// log_debug("Encoded data size is going to be %d", length);
swapBytes(&length, 2);
*buf += length;
@@ -641,13 +640,13 @@ AMF::encodeString(boost::uint8_t *data, size_t size)
/// A NULL String is a string with no associated data.
///
/// @return a binary AMF packet in big endian format
-boost::shared_ptr<Buffer>
+std::shared_ptr<Buffer>
AMF::encodeNullString()
{
// GNASH_REPORT_FUNCTION;
- boost::uint16_t length;
+ std::uint16_t length;
- boost::shared_ptr<Buffer> buf(new Buffer(AMF_HEADER_SIZE));
+ std::shared_ptr<Buffer> buf(new Buffer(AMF_HEADER_SIZE));
*buf = Element::STRING_AMF0;
// when a string is stored in an element, we add a NULL terminator so
// it can be printed by to_string() efficiently. The NULL terminator
@@ -682,17 +681,17 @@ AMF::encodeNullString()
/// @param el A smart pointer to the Element to encode.
///
/// @return a binary AMF packet in big endian format
-boost::shared_ptr<Buffer>
-AMF::encodeElement(boost::shared_ptr<cygnal::Element> el)
+std::shared_ptr<Buffer>
+AMF::encodeElement(std::shared_ptr<cygnal::Element> el)
{
return encodeElement(*el);
}
-boost::shared_ptr<Buffer>
+std::shared_ptr<Buffer>
AMF::encodeElement(const cygnal::Element& el)
{
// GNASH_REPORT_FUNCTION;
- boost::shared_ptr<Buffer> buf;
+ std::shared_ptr<Buffer> buf;
// Encode the element's data
switch (el.getType()) {
case Element::NOTYPE:
@@ -700,14 +699,14 @@ AMF::encodeElement(const cygnal::Element& el)
break;
case Element::NUMBER_AMF0:
{
- // boost::shared_ptr<Buffer> encnum = AMF::encodeNumber(el.to_number());
+ // std::shared_ptr<Buffer> encnum = AMF::encodeNumber(el.to_number());
// *buf += encnum;
buf = AMF::encodeNumber(el.to_number());
break;
}
case Element::BOOLEAN_AMF0:
{
-// boost::shared_ptr<Buffer> encbool = AMF::encodeBoolean(el.to_bool());
+// std::shared_ptr<Buffer> encbool = AMF::encodeBoolean(el.to_bool());
// *buf += encodeBoolean(el.to_bool());
// *buf += encbool;
buf = AMF::encodeBoolean(el.to_bool());
@@ -715,7 +714,7 @@ AMF::encodeElement(const cygnal::Element& el)
}
case Element::STRING_AMF0:
{
- // boost::shared_ptr<Buffer> encstr = AMF::encodeString(el.to_string());
+ // std::shared_ptr<Buffer> encstr = AMF::encodeString(el.to_string());
// *buf += encstr;
if (el.getDataSize() == 0) {
buf = encodeNullString();
@@ -755,7 +754,7 @@ AMF::encodeElement(const cygnal::Element& el)
}
case Element::DATE_AMF0:
{
- // boost::shared_ptr<Buffer> encdate = AMF::encodeNumber(el.to_number());
+ // std::shared_ptr<Buffer> encdate = AMF::encodeNumber(el.to_number());
buf = AMF::encodeDate(el.to_reference());
break;
}
@@ -789,17 +788,17 @@ AMF::encodeElement(const cygnal::Element& el)
};
// If the name field is set, it's a property, followed by the data
- boost::shared_ptr<Buffer> bigbuf;
+ std::shared_ptr<Buffer> bigbuf;
if (el.getName() && (el.getType() != Element::TYPED_OBJECT_AMF0)) {
if (buf) {
- bigbuf.reset(new cygnal::Buffer(el.getNameSize() + sizeof(boost::uint16_t) + buf->size()));
+ bigbuf.reset(new cygnal::Buffer(el.getNameSize() + sizeof(std::uint16_t) + buf->size()));
} else {
- bigbuf.reset(new cygnal::Buffer(el.getNameSize() + sizeof(boost::uint16_t)));
+ bigbuf.reset(new cygnal::Buffer(el.getNameSize() + sizeof(std::uint16_t)));
}
// Add the length of the string for the name of the variable
size_t length = el.getNameSize();
- boost::uint16_t enclength = length;
+ std::uint16_t enclength = length;
swapBytes(&enclength, 2);
*bigbuf = enclength;
// Now the name itself
@@ -821,20 +820,20 @@ AMF::encodeElement(const cygnal::Element& el)
/// @param el A smart pointer to the Element to encode.
///
/// @return a binary AMF packet in big endian format
-boost::shared_ptr<Buffer>
-AMF::encodeProperty(boost::shared_ptr<cygnal::Element> el)
+std::shared_ptr<Buffer>
+AMF::encodeProperty(std::shared_ptr<cygnal::Element> el)
{
// GNASH_REPORT_FUNCTION;
size_t outsize;
outsize = el->getNameSize() + el->getDataSize() + AMF_PROP_HEADER_SIZE;
- boost::shared_ptr<Buffer> buf(new Buffer(outsize));
+ std::shared_ptr<Buffer> buf(new Buffer(outsize));
_totalsize += outsize;
// Add the length of the string for the name of the property
size_t length = el->getNameSize();
- boost::uint16_t enclength = length;
+ std::uint16_t enclength = length;
swapBytes(&enclength, 2);
*buf = enclength;
@@ -879,12 +878,12 @@ AMF::encodeProperty(boost::shared_ptr<cygnal::Element> el)
/// @return A smart ptr to an Element.
///
/// @remarks May throw a ParserException
-boost::shared_ptr<cygnal::Element>
-AMF::extractAMF(boost::shared_ptr<Buffer> buf)
+std::shared_ptr<cygnal::Element>
+AMF::extractAMF(std::shared_ptr<Buffer> buf)
{
// GNASH_REPORT_FUNCTION;
- boost::uint8_t* start = buf->reference();
- boost::uint8_t* tooFar = start+buf->size();
+ std::uint8_t* start = buf->reference();
+ std::uint8_t* tooFar = start+buf->size();
return extractAMF(start, tooFar);
}
@@ -900,21 +899,21 @@ AMF::extractAMF(boost::shared_ptr<Buffer> buf)
/// @return A smart ptr to an Element.
///
/// @remarks May throw a ParserException
-boost::shared_ptr<cygnal::Element>
-AMF::extractAMF(boost::uint8_t *in, boost::uint8_t* tooFar)
+std::shared_ptr<cygnal::Element>
+AMF::extractAMF(std::uint8_t *in, std::uint8_t* tooFar)
{
// GNASH_REPORT_FUNCTION;
- boost::uint8_t *tmpptr = in;
- boost::uint16_t length;
- boost::shared_ptr<cygnal::Element> el(new Element);
+ std::uint8_t *tmpptr = in;
+ std::uint16_t length;
+ std::shared_ptr<cygnal::Element> el(new Element);
- if (in == 0) {
+ if (in == nullptr) {
gnash::log_error(_("AMF body input data is NULL"));
return el;
}
- std::map<boost::uint16_t, cygnal::Element> references;
+ std::map<std::uint16_t, cygnal::Element> references;
// All elements look like this:
// the first two bytes is the length of name of the element
@@ -972,8 +971,8 @@ AMF::extractAMF(boost::uint8_t *in, boost::uint8_t* tooFar)
break;
case Element::STRING_AMF0:
// get the length of the name
- length = ntohs((*(boost::uint16_t *)tmpptr) & 0xffff);
- tmpptr += sizeof(boost::uint16_t);
+ length = ntohs((*(std::uint16_t *)tmpptr) & 0xffff);
+ tmpptr += sizeof(std::uint16_t);
if (length >= SANE_STR_SIZE) {
gnash::log_error(_("%d bytes for a string is over the safe "
"limit of %d, line %d"), length,
@@ -1002,9 +1001,9 @@ AMF::extractAMF(boost::uint8_t *in, boost::uint8_t* tooFar)
tmpptr++;
break;
}
- boost::shared_ptr<cygnal::Element> child =
+ std::shared_ptr<cygnal::Element> child =
amf_obj.extractProperty(tmpptr, tooFar);
- if (child == 0) {
+ if (child == nullptr) {
// skip past zero length string (2 bytes), null
// (1 byte) and end object (1 byte)
//tmpptr += 3;
@@ -1028,8 +1027,8 @@ AMF::extractAMF(boost::uint8_t *in, boost::uint8_t* tooFar)
break;
case Element::REFERENCE_AMF0:
{
- length = ntohs((*(boost::uint16_t *)tmpptr) & 0xffff);
- tmpptr += sizeof(boost::uint16_t);
+ length = ntohs((*(std::uint16_t *)tmpptr) & 0xffff);
+ tmpptr += sizeof(std::uint16_t);
el->makeReference(length);
// FIXME: connect reference Element to the object
// pointed to by the index.
@@ -1042,7 +1041,7 @@ AMF::extractAMF(boost::uint8_t *in, boost::uint8_t* tooFar)
case Element::ECMA_ARRAY_AMF0:
{
el->makeECMAArray();
- tmpptr += sizeof(boost::uint32_t);
+ tmpptr += sizeof(std::uint32_t);
#if 1
while (tmpptr < tooFar) { // FIXME: was tooFar - AMF_HEADER_SIZE)
if (*tmpptr+3 == TERMINATOR) {
@@ -1050,9 +1049,9 @@ AMF::extractAMF(boost::uint8_t *in, boost::uint8_t* tooFar)
tmpptr++;
break;
}
- boost::shared_ptr<cygnal::Element> child =
+ std::shared_ptr<cygnal::Element> child =
amf_obj.extractProperty(tmpptr, tooFar);
- if (child == 0) {
+ if (child == nullptr) {
// skip past zero length string (2 bytes),
// null (1 byte) and end object (1 byte)
//tmpptr += 3;
@@ -1066,12 +1065,12 @@ AMF::extractAMF(boost::uint8_t *in, boost::uint8_t* tooFar)
break;
#else
// get the number of elements in the array
- boost::uint32_t items =
- ntohl((*(boost::uint32_t *)tmpptr) & 0xffffffff);
+ std::uint32_t items =
+ ntohl((*(std::uint32_t *)tmpptr) & 0xffffffff);
- tmpptr += sizeof(boost::uint32_t);
+ tmpptr += sizeof(std::uint32_t);
while (items--) {
- boost::shared_ptr<cygnal::Element> child =
+ std::shared_ptr<cygnal::Element> child =
amf_obj.extractProperty(tmpptr, tooFar);
if (child == 0) {
break;
@@ -1091,13 +1090,13 @@ AMF::extractAMF(boost::uint8_t *in, boost::uint8_t* tooFar)
{
el->makeStrictArray();
// get the number of numbers in the array
- boost::uint32_t items = ntohl((*(boost::uint32_t *)tmpptr));
+ std::uint32_t items = ntohl((*(std::uint32_t *)tmpptr));
// Skip past the length field to get to the start of the data
- tmpptr += sizeof(boost::uint32_t);
+ tmpptr += sizeof(std::uint32_t);
while (items) {
- boost::shared_ptr<cygnal::Element> child =
+ std::shared_ptr<cygnal::Element> child =
amf_obj.extractAMF(tmpptr, tooFar);
- if (child == 0) {
+ if (child == nullptr) {
break;
} else {
//child->dump();
@@ -1133,8 +1132,8 @@ AMF::extractAMF(boost::uint8_t *in, boost::uint8_t* tooFar)
{
el->makeTypedObject();
- length = ntohs((*(boost::uint16_t *)tmpptr) & 0xffff);
- tmpptr += sizeof(boost::uint16_t);
+ length = ntohs((*(std::uint16_t *)tmpptr) & 0xffff);
+ tmpptr += sizeof(std::uint16_t);
if (length > 0) {
std::string name(reinterpret_cast<const char*>(tmpptr), length);
//log_debug("Typed object name is: %s", el->getName());
@@ -1152,9 +1151,9 @@ AMF::extractAMF(boost::uint8_t *in, boost::uint8_t* tooFar)
tmpptr++;
break;
}
- boost::shared_ptr<cygnal::Element> child =
+ std::shared_ptr<cygnal::Element> child =
amf_obj.extractProperty(tmpptr, tooFar);
- if (child == 0) {
+ if (child == nullptr) {
break;
}
el->addProperty(child);
@@ -1187,13 +1186,13 @@ AMF::extractAMF(boost::uint8_t *in, boost::uint8_t* tooFar)
/// @return A smart ptr to an Element.
///
/// @remarks May throw a ParserException
-boost::shared_ptr<cygnal::Element>
-AMF::extractProperty(boost::shared_ptr<Buffer> buf)
+std::shared_ptr<cygnal::Element>
+AMF::extractProperty(std::shared_ptr<Buffer> buf)
{
// GNASH_REPORT_FUNCTION;
- boost::uint8_t* start = buf->reference();
- boost::uint8_t* tooFar = start+buf->size();
+ std::uint8_t* start = buf->reference();
+ std::uint8_t* tooFar = start+buf->size();
return extractProperty(start, tooFar);
}
@@ -1210,18 +1209,18 @@ AMF::extractProperty(boost::shared_ptr<Buffer> buf)
/// @return A smart ptr to an Element.
///
/// @remarks May throw a ParserException
-boost::shared_ptr<cygnal::Element>
-AMF::extractProperty(boost::uint8_t *in, boost::uint8_t* tooFar)
+std::shared_ptr<cygnal::Element>
+AMF::extractProperty(std::uint8_t *in, std::uint8_t* tooFar)
{
// GNASH_REPORT_FUNCTION;
- boost::uint8_t *tmpptr = in;
- boost::uint16_t length;
- boost::shared_ptr<cygnal::Element> el;
+ std::uint8_t *tmpptr = in;
+ std::uint16_t length;
+ std::shared_ptr<cygnal::Element> el;
- length = ntohs((*(boost::uint16_t *)tmpptr) & 0xffff);
+ length = ntohs((*(std::uint16_t *)tmpptr) & 0xffff);
// go past the length bytes, which leaves us pointing at the raw data
- tmpptr += sizeof(boost::uint16_t);
+ tmpptr += sizeof(std::uint16_t);
// sanity check the length of the data. The length is usually only zero if
// we've gone all the way to the end of the object.
diff --git a/cygnal/libamf/amf.h b/cygnal/libamf/amf.h
index 6478de3..389fcc7 100644
--- a/cygnal/libamf/amf.h
+++ b/cygnal/libamf/amf.h
@@ -29,8 +29,7 @@
#include <string>
#include <cstring>
-#include <boost/cstdint.hpp>
-#include <boost/shared_ptr.hpp>
+#include <cstdint>
#include "element.h"
#include "dsodefs.h"
@@ -48,7 +47,7 @@ const size_t AMF0_NUMBER_SIZE = 0x08;
/// \brief The header size in bytes of an common AMF object.
/// The size of an AMF header is a type field (1 byte), followed by a
/// length field. (short)
-const boost::uint8_t AMF_HEADER_SIZE = 3;
+const std::uint8_t AMF_HEADER_SIZE = 3;
/// \brief The header size of a property.
/// A property is a little different. It always assumes the the
@@ -56,20 +55,20 @@ const boost::uint8_t AMF_HEADER_SIZE = 3;
/// type byte like a regular AMF object and length is used for the
/// data. So a property object header is then only 5 bytes instead
/// of the 6 that one assumes would be used.
-const boost::uint8_t AMF_PROP_HEADER_SIZE = 5;
+const std::uint8_t AMF_PROP_HEADER_SIZE = 5;
/// AMF version 0 is supported by default
-const boost::uint8_t AMF_VERSION = 0;
+const std::uint8_t AMF_VERSION = 0;
/// For terminating sequences, a byte with value 0x09 is used.
-const boost::uint8_t TERMINATOR = 0x09;
+const std::uint8_t TERMINATOR = 0x09;
/// \brief The maximum size for a string.
/// As if there is a parsing error, we'll often see the symptom of the length
/// for the following value is bogus. Although the length field is a short, it
/// seems silly to assume we'll ever see a string 65,000 characters long. Still,
/// it makes sense to make this an adjustable thing.
-const boost::uint16_t SANE_STR_SIZE = 65535;
+const std::uint16_t SANE_STR_SIZE = 65535;
/// Binary representation of an ActionScript object.
//
@@ -135,7 +134,7 @@ public:
///
/// @return a binary AMF packet in big endian format
///
- static boost::shared_ptr<Buffer> encodeString(const std::string &str);
+ static std::shared_ptr<Buffer> encodeString(const std::string &str);
/// Encode an array of ASCII bytes to its serialized representation.
//
@@ -145,7 +144,7 @@ public:
///
/// @return a binary AMF packet in big endian format
///
- static boost::shared_ptr<Buffer> encodeString(boost::uint8_t *data,
+ static std::shared_ptr<Buffer> encodeString(std::uint8_t *data,
size_t size);
/// Encode a String object to its serialized representation.
@@ -154,7 +153,7 @@ public:
///
/// @return a binary AMF packet in big endian format
///
- static boost::shared_ptr<Buffer> encodeNullString();
+ static std::shared_ptr<Buffer> encodeNullString();
/// Encode a Boolean object to its serialized representation.
//
@@ -162,13 +161,13 @@ public:
///
/// @return a binary AMF packet in big endian format
///
- static boost::shared_ptr<Buffer> encodeBoolean(bool flag);
+ static std::shared_ptr<Buffer> encodeBoolean(bool flag);
/// Encode an "Undefined" object to its serialized representation.
//
/// @return a binary AMF packet in big endian format
///
- static boost::shared_ptr<Buffer> encodeUndefined();
+ static std::shared_ptr<Buffer> encodeUndefined();
/// Encode a NULL object to its serialized representation.
//
@@ -176,13 +175,13 @@ public:
///
/// @return a binary AMF packet in big endian format
///
- static boost::shared_ptr<Buffer> encodeNull();
+ static std::shared_ptr<Buffer> encodeNull();
/// Encode a "Unsupported" object to its serialized representation.
//
/// @return a binary AMF packet in big endian format
///
- static boost::shared_ptr<Buffer> encodeUnsupported();
+ static std::shared_ptr<Buffer> encodeUnsupported();
/// Encode an XML object to its serialized representation.
//
@@ -192,7 +191,7 @@ public:
///
/// @return a binary AMF packet in big endian format
///
- static boost::shared_ptr<Buffer> encodeXMLObject(const boost::uint8_t *data,
+ static std::shared_ptr<Buffer> encodeXMLObject(const std::uint8_t *data,
size_t nbytes);
/// Encode a Typed Object to its serialized representation.
@@ -203,7 +202,7 @@ public:
///
/// @return a binary AMF packet in big endian format
///
- static boost::shared_ptr<Buffer> encodeTypedObject(const cygnal::Element &data);
+ static std::shared_ptr<Buffer> encodeTypedObject(const cygnal::Element &data);
/// Encode a Reference to an object to its serialized representation.
//
@@ -213,7 +212,7 @@ public:
///
/// @return a binary AMF packet in big endian format (header,data)
///
- static boost::shared_ptr<Buffer> encodeReference(boost::uint16_t index);
+ static std::shared_ptr<Buffer> encodeReference(std::uint16_t index);
/// Encode a Movie Clip (swf data) to its serialized representation.
//
@@ -223,7 +222,7 @@ public:
///
/// @return a binary AMF packet in big endian format (header,data)
///
- static boost::shared_ptr<Buffer> encodeMovieClip(const boost::uint8_t *data,
+ static std::shared_ptr<Buffer> encodeMovieClip(const std::uint8_t *data,
size_t size);
/// Encode an ECMA Array to its serialized representation.
@@ -237,7 +236,7 @@ public:
///
/// @return a binary AMF packet in big endian format
///
- static boost::shared_ptr<Buffer> encodeECMAArray(const cygnal::Element &data);
+ static std::shared_ptr<Buffer> encodeECMAArray(const cygnal::Element &data);
/// Encode a Long String to its serialized representation.
//
@@ -247,7 +246,7 @@ public:
///
/// @return a binary AMF packet in big endian format
///
- static boost::shared_ptr<Buffer> encodeLongString(const boost::uint8_t *data,
+ static std::shared_ptr<Buffer> encodeLongString(const std::uint8_t *data,
size_t size);
/// Encode a Record Set to its serialized representation.
@@ -258,7 +257,7 @@ public:
///
/// @return a binary AMF packet in big endian format
///
- static boost::shared_ptr<Buffer> encodeRecordSet(const boost::uint8_t *data,
+ static std::shared_ptr<Buffer> encodeRecordSet(const std::uint8_t *data,
size_t size);
/// Encode a Date to its serialized representation.
@@ -267,7 +266,7 @@ public:
///
/// @return a binary AMF packet in big endian format
///
- static boost::shared_ptr<Buffer> encodeDate(const boost::uint8_t *data);
+ static std::shared_ptr<Buffer> encodeDate(const std::uint8_t *data);
/// Encode a Strict Array to its serialized representation.
//
@@ -280,7 +279,7 @@ public:
///
/// @return a binary AMF packet in big endian format (header,data)
///
- static boost::shared_ptr<Buffer> encodeStrictArray(const cygnal::Element &data);
+ static std::shared_ptr<Buffer> encodeStrictArray(const cygnal::Element &data);
/// Encode an object to its serialized representation.
//
@@ -288,13 +287,13 @@ public:
///
/// @return a binary AMF packet in big endian format
///
- static boost::shared_ptr<Buffer> encodeObject(const cygnal::Element &data);
+ static std::shared_ptr<Buffer> encodeObject(const cygnal::Element &data);
/// Encode the end of an object to its serialized representation.
//
/// @return a binary AMF packet in big endian format
///
- static boost::shared_ptr<Buffer> encodeObjectEnd();
+ static std::shared_ptr<Buffer> encodeObjectEnd();
/// Encode a 64 bit number to its serialized representation.
//
@@ -302,7 +301,7 @@ public:
///
/// @return a binary AMF packet in big endian format
///
- static boost::shared_ptr<Buffer> encodeNumber(double num);
+ static std::shared_ptr<Buffer> encodeNumber(double num);
/// Encode an Element to its serialized representation.
//
@@ -310,7 +309,7 @@ public:
///
/// @return a binary AMF packet in big endian format
///
- static boost::shared_ptr<Buffer> encodeElement(boost::shared_ptr<cygnal::Element> el);
+ static std::shared_ptr<Buffer> encodeElement(std::shared_ptr<cygnal::Element> el);
/// Encode an Element to its serialized representation.
//
@@ -318,7 +317,7 @@ public:
///
/// @return a binary AMF packet in big endian format
///
- static boost::shared_ptr<Buffer> encodeElement(const cygnal::Element& el);
+ static std::shared_ptr<Buffer> encodeElement(const cygnal::Element& el);
/// Encode a variable to its serialized representation.
//
@@ -326,7 +325,7 @@ public:
///
/// @return a binary AMF packet in big endian format
///
- boost::shared_ptr<Buffer> encodeProperty(boost::shared_ptr<cygnal::Element> el);
+ std::shared_ptr<Buffer> encodeProperty(std::shared_ptr<cygnal::Element> el);
/// @} end of encoding methods
@@ -342,7 +341,7 @@ public:
///
/// @return The data type from the header
///
- static Element::amf0_type_e extractElementHeader(boost::uint8_t *in)
+ static Element::amf0_type_e extractElementHeader(std::uint8_t *in)
{ return *(reinterpret_cast<Element::amf0_type_e *>(in)); };
/// Extract an AMF object from an array of raw bytes.
@@ -358,7 +357,7 @@ public:
///
/// @remarks May throw a ParserException
///
- boost::shared_ptr<cygnal::Element> extractAMF(boost::uint8_t *in, boost::uint8_t* tooFar);
+ std::shared_ptr<cygnal::Element> extractAMF(std::uint8_t *in, std::uint8_t* tooFar);
/// Extract an AMF object from an array of raw bytes.
//
@@ -368,7 +367,7 @@ public:
///
/// @remarks May throw a ParserException
///
- boost::shared_ptr<cygnal::Element> extractAMF(boost::shared_ptr<Buffer> buf);
+ std::shared_ptr<cygnal::Element> extractAMF(std::shared_ptr<Buffer> buf);
/// Extract a Property.
//
@@ -385,7 +384,7 @@ public:
///
/// @remarks May throw a ParserException
///
- boost::shared_ptr<cygnal::Element> extractProperty(boost::uint8_t *in, boost::uint8_t* tooFar);
+ std::shared_ptr<cygnal::Element> extractProperty(std::uint8_t *in, std::uint8_t* tooFar);
/// Extract a Property.
//
@@ -399,7 +398,7 @@ public:
///
/// @remarks May throw a ParserException
///
- boost::shared_ptr<cygnal::Element> extractProperty(boost::shared_ptr<Buffer> buf);
+ std::shared_ptr<cygnal::Element> extractProperty(std::shared_ptr<Buffer> buf);
/// @} end of decoding methods
diff --git a/cygnal/libamf/amf_msg.cpp b/cygnal/libamf/amf_msg.cpp
index f18c4ff..ca6da89 100644
--- a/cygnal/libamf/amf_msg.cpp
+++ b/cygnal/libamf/amf_msg.cpp
@@ -27,9 +27,8 @@
#include "network.h"
#include "GnashSystemNetHeaders.h"
-#include <boost/shared_ptr.hpp>
#include <string>
-#include <boost/cstdint.hpp> // For C99 int types
+#include <cstdint> // For C99 int types
using gnash::GnashException;
using gnash::log_error;
@@ -40,18 +39,18 @@ using std::endl;
namespace cygnal
{
-boost::shared_ptr<cygnal::Buffer>
-AMF_msg::encodeContextHeader(boost::uint16_t version, boost::uint16_t headers,
- boost::uint16_t messages)
+std::shared_ptr<cygnal::Buffer>
+AMF_msg::encodeContextHeader(std::uint16_t version, std::uint16_t headers,
+ std::uint16_t messages)
{
// GNASH_REPORT_FUNCTION;
size_t size = sizeof(AMF_msg::context_header_t);
- boost::shared_ptr<cygnal::Buffer> buf (new cygnal::Buffer(size));
+ std::shared_ptr<cygnal::Buffer> buf (new cygnal::Buffer(size));
// use a short as a temporary, as it turns out htons() returns a 32bit int
// instead when compiling with -O2. This forces appending bytes to get the
// right size.
- boost::uint16_t swapped = htons(version);
+ std::uint16_t swapped = htons(version);
*buf = swapped;
swapped = htons(headers);
*buf += swapped;
@@ -61,7 +60,7 @@ AMF_msg::encodeContextHeader(boost::uint16_t version, boost::uint16_t headers,
return buf;
}
-boost::shared_ptr<cygnal::Buffer>
+std::shared_ptr<cygnal::Buffer>
AMF_msg::encodeContextHeader(AMF_msg::context_header_t *head)
{
// GNASH_REPORT_FUNCTION;
@@ -72,17 +71,17 @@ AMF_msg::encodeContextHeader(AMF_msg::context_header_t *head)
// 00 06 67 65 74 77 61 79 <- getway, message #1
// 00 04 2f 32 32 39 <- /229, operation name
// 00 00 00 0e <- byte length of message
-boost::shared_ptr<cygnal::Buffer>
+std::shared_ptr<cygnal::Buffer>
AMF_msg::encodeMsgHeader(AMF_msg::message_header_t *head)
{
// GNASH_REPORT_FUNCTION;
// The size of the buffer are the two strings, their lenght fields, and the integer.
-// size_t size = head->target.size() + head->response.size() + sizeof(boost::uint32_t)
-// + (sizeof(boost::uint16_t) * 2);
- boost::shared_ptr<cygnal::Buffer> buf (new cygnal::Buffer(sizeof(AMF_msg::message_header_t)));
+// size_t size = head->target.size() + head->response.size() + sizeof(std::uint32_t)
+// + (sizeof(std::uint16_t) * 2);
+ std::shared_ptr<cygnal::Buffer> buf (new cygnal::Buffer(sizeof(AMF_msg::message_header_t)));
// Encode the target URI, which usually looks something like ."getway"
- boost::uint16_t length = head->target.size();
+ std::uint16_t length = head->target.size();
*buf = length;
*buf += head->target;
@@ -92,58 +91,58 @@ AMF_msg::encodeMsgHeader(AMF_msg::message_header_t *head)
*buf += head->target;
// Encode the size of the encoded message
- *buf += static_cast<boost::uint32_t>(head->size);
+ *buf += static_cast<std::uint32_t>(head->size);
return buf;
}
// These methods parse the raw data of the AMF packet
-boost::shared_ptr<AMF_msg::context_header_t>
+std::shared_ptr<AMF_msg::context_header_t>
AMF_msg::parseContextHeader(cygnal::Buffer &data)
{
// GNASH_REPORT_FUNCTION;
return parseContextHeader(data.reference(), data.size());
}
-boost::shared_ptr<AMF_msg::context_header_t>
-AMF_msg::parseContextHeader(boost::uint8_t *data, size_t /* size */)
+std::shared_ptr<AMF_msg::context_header_t>
+AMF_msg::parseContextHeader(std::uint8_t *data, size_t /* size */)
{
// GNASH_REPORT_FUNCTION;
- boost::shared_ptr<AMF_msg::context_header_t> msg (new AMF_msg::context_header_t);
+ std::shared_ptr<AMF_msg::context_header_t> msg (new AMF_msg::context_header_t);
- boost::uint16_t tmpnum = *reinterpret_cast<boost::uint16_t *>(data);
+ std::uint16_t tmpnum = *reinterpret_cast<std::uint16_t *>(data);
msg->version = tmpnum;
- tmpnum = *reinterpret_cast<boost::uint16_t *>(data + sizeof(boost::uint16_t));
+ tmpnum = *reinterpret_cast<std::uint16_t *>(data + sizeof(std::uint16_t));
msg->headers = ntohs(tmpnum);
- tmpnum = *reinterpret_cast<boost::uint16_t *>(data + sizeof(boost::uint32_t));
+ tmpnum = *reinterpret_cast<std::uint16_t *>(data + sizeof(std::uint32_t));
msg->messages = ntohs(tmpnum);
return msg;
}
-boost::shared_ptr<AMF_msg::message_header_t>
+std::shared_ptr<AMF_msg::message_header_t>
AMF_msg::parseMessageHeader(cygnal::Buffer &data)
{
// GNASH_REPORT_FUNCTION;
return parseMessageHeader(data.reference(), data.size());
}
-boost::shared_ptr<AMF_msg::message_header_t>
-AMF_msg::parseMessageHeader(boost::uint8_t *data, size_t size)
+std::shared_ptr<AMF_msg::message_header_t>
+AMF_msg::parseMessageHeader(std::uint8_t *data, size_t size)
{
// GNASH_REPORT_FUNCTION;
AMF amf;
- boost::uint8_t *tmpptr = data;
- boost::shared_ptr<AMF_msg::message_header_t> msg (new AMF_msg::message_header_t);
+ std::uint8_t *tmpptr = data;
+ std::shared_ptr<AMF_msg::message_header_t> msg (new AMF_msg::message_header_t);
// The target is a standard length->bytes field
- boost::uint16_t length = ntohs((*(boost::uint16_t *)tmpptr) & 0xffff);
+ std::uint16_t length = ntohs((*(std::uint16_t *)tmpptr) & 0xffff);
if (length == 0) {
boost::format msg("Length of string shouldn't be zero! amf_msg.cpp::%1%(): %2%");
msg % __FUNCTION__ % __LINE__;
throw GnashException(msg.str());
}
- tmpptr += sizeof(boost::uint16_t);
+ tmpptr += sizeof(std::uint16_t);
std::string str1(reinterpret_cast<const char *>(tmpptr), length);
msg->target = str1;
if ((tmpptr - data) > static_cast<int>(size)) {
@@ -155,13 +154,13 @@ AMF_msg::parseMessageHeader(boost::uint8_t *data, size_t size)
}
// The response is a standard length->bytes field
- length = ntohs((*(boost::uint16_t *)tmpptr) & 0xffff);
+ length = ntohs((*(std::uint16_t *)tmpptr) & 0xffff);
if (length == 0) {
boost::format msg("Length of string shouldn't be zero! amf_msg.cpp::%1%(): %2%");
msg % __FUNCTION__ % __LINE__;
throw GnashException(msg.str());
}
- tmpptr += sizeof(boost::uint16_t);
+ tmpptr += sizeof(std::uint16_t);
std::string str2(reinterpret_cast<const char *>(tmpptr), length);
msg->response = str2;
tmpptr += length;
@@ -172,7 +171,7 @@ AMF_msg::parseMessageHeader(boost::uint8_t *data, size_t size)
}
// The length is a 4 word integer
- msg->size = ntohl((*(boost::uint32_t *)tmpptr));
+ msg->size = ntohl((*(std::uint32_t *)tmpptr));
if (msg->target.empty()) {
log_error(_("AMF Message \'target\' field missing!"));
@@ -190,20 +189,20 @@ AMF_msg::parseMessageHeader(boost::uint8_t *data, size_t size)
return msg;
}
-boost::shared_ptr<AMF_msg::context_header_t>
+std::shared_ptr<AMF_msg::context_header_t>
AMF_msg::parseAMFPacket(cygnal::Buffer &data)
{
// GNASH_REPORT_FUNCTION;
return parseAMFPacket(data.reference(), data.size());
}
-boost::shared_ptr<AMF_msg::context_header_t>
-AMF_msg::parseAMFPacket(boost::uint8_t *data, size_t size)
+std::shared_ptr<AMF_msg::context_header_t>
+AMF_msg::parseAMFPacket(std::uint8_t *data, size_t size)
{
GNASH_REPORT_FUNCTION;
// _messages.push_back();
- boost::uint8_t *ptr = data + sizeof(AMF_msg::context_header_t);
- boost::shared_ptr<context_header_t> header = AMF_msg::parseContextHeader(data, size);
+ std::uint8_t *ptr = data + sizeof(AMF_msg::context_header_t);
+ std::shared_ptr<context_header_t> header = AMF_msg::parseContextHeader(data, size);
// log_debug("%s: %s", __PRETTY_FUNCTION__, hexify(data, size, true));
@@ -211,13 +210,13 @@ AMF_msg::parseAMFPacket(boost::uint8_t *data, size_t size)
/// Read all the messages from the AMF packet
try {
for (int i=0; i<header->messages; i++) {
- boost::shared_ptr<AMF_msg::amf_message_t> msgpkt(new AMF_msg::amf_message_t);
- boost::shared_ptr<AMF_msg::message_header_t> msghead = AMF_msg::parseMessageHeader(ptr, size);
+ std::shared_ptr<AMF_msg::amf_message_t> msgpkt(new AMF_msg::amf_message_t);
+ std::shared_ptr<AMF_msg::message_header_t> msghead = AMF_msg::parseMessageHeader(ptr, size);
if (msghead) {
ptr += msghead->target.size() + msghead->response.size()
- + (sizeof(boost::uint16_t) * 2)
- + (sizeof(boost::uint32_t));
- boost::shared_ptr<cygnal::Element> el = amf.extractAMF(ptr, ptr+size);
+ + (sizeof(std::uint16_t) * 2)
+ + (sizeof(std::uint32_t));
+ std::shared_ptr<cygnal::Element> el = amf.extractAMF(ptr, ptr+size);
msgpkt->header.target = msghead->target;
msgpkt->header.response = msghead->response;
msgpkt->header.size = msghead->size;
@@ -234,7 +233,7 @@ AMF_msg::parseAMFPacket(boost::uint8_t *data, size_t size)
return header;
}
-boost::shared_ptr<cygnal::Buffer>
+std::shared_ptr<cygnal::Buffer>
AMF_msg::encodeAMFPacket(const std::string & /* target */,
const std::string & /*response */, size_t /* size */)
{
@@ -243,29 +242,29 @@ AMF_msg::encodeAMFPacket(const std::string & /* target */,
return encodeAMFPacket();
}
-boost::shared_ptr<cygnal::Buffer>
+std::shared_ptr<cygnal::Buffer>
AMF_msg::encodeAMFPacket()
{
// GNASH_REPORT_FUNCTION;
- boost::shared_ptr<cygnal::Buffer> buf(new cygnal::Buffer);
+ std::shared_ptr<cygnal::Buffer> buf(new cygnal::Buffer);
// Encode the packet header
- boost::shared_ptr<cygnal::Buffer> buf1 = encodeContextHeader(0, 0, _messages.size());
+ std::shared_ptr<cygnal::Buffer> buf1 = encodeContextHeader(0, 0, _messages.size());
*buf = buf1;
// Now encode all the messages
- std::vector<boost::shared_ptr<AMF_msg::amf_message_t> >::iterator it;
+ std::vector<std::shared_ptr<AMF_msg::amf_message_t> >::iterator it;
for (it = _messages.begin(); it != _messages.end(); ++it) {
- boost::shared_ptr<AMF_msg::amf_message_t> msg = (*(it));
+ std::shared_ptr<AMF_msg::amf_message_t> msg = (*(it));
- boost::shared_ptr<cygnal::Buffer> buf2 = encodeMsgHeader(msg->header.target,
+ std::shared_ptr<cygnal::Buffer> buf2 = encodeMsgHeader(msg->header.target,
msg->header.response,
msg->header.size);
// AMF_msg::dump(msg->header);
// msg->data->dump();
- boost::shared_ptr<cygnal::Buffer> buf3 = msg->data->encode();
+ std::shared_ptr<cygnal::Buffer> buf3 = msg->data->encode();
*buf += buf2;
*buf += buf3;
}
@@ -273,27 +272,27 @@ AMF_msg::encodeAMFPacket()
return buf;
}
-boost::shared_ptr<cygnal::Buffer>
+std::shared_ptr<cygnal::Buffer>
AMF_msg::encodeMsgHeader(const std::string &target,
const std::string &response, size_t size)
{
// GNASH_REPORT_FUNCTION;
- size_t total = target.size() + sizeof(boost::uint16_t);
- total += response.size() + sizeof(boost::uint16_t);
- total += sizeof(boost::uint32_t);
+ size_t total = target.size() + sizeof(std::uint16_t);
+ total += response.size() + sizeof(std::uint16_t);
+ total += sizeof(std::uint32_t);
- boost::shared_ptr<cygnal::Buffer> buf (new cygnal::Buffer(total));
- boost::uint16_t length = target.size();
- swapBytes(&length, sizeof(boost::uint16_t));
+ std::shared_ptr<cygnal::Buffer> buf (new cygnal::Buffer(total));
+ std::uint16_t length = target.size();
+ swapBytes(&length, sizeof(std::uint16_t));
*buf += length;
*buf += target;
length = response.size();
- swapBytes(&length, sizeof(boost::uint16_t));
+ swapBytes(&length, sizeof(std::uint16_t));
*buf += length;
*buf += response;
- boost::uint32_t swapped = htonl(size);
+ std::uint32_t swapped = htonl(size);
*buf += swapped;
return buf;
@@ -322,9 +321,9 @@ AMF_msg::dump()
{
// GNASH_REPORT_FUNCTION;
cout << "AMF Packet has " << _messages.size() << " messages." << endl;
- std::vector<boost::shared_ptr<AMF_msg::amf_message_t> >::iterator it;
+ std::vector<std::shared_ptr<AMF_msg::amf_message_t> >::iterator it;
for (it = _messages.begin(); it != _messages.end(); ++it) {
- boost::shared_ptr<AMF_msg::amf_message_t> msg = (*(it));
+ std::shared_ptr<AMF_msg::amf_message_t> msg = (*(it));
AMF_msg::dump(msg->header);
msg->data->dump();
}
diff --git a/cygnal/libamf/amf_msg.h b/cygnal/libamf/amf_msg.h
index a8da5c0..338cada 100644
--- a/cygnal/libamf/amf_msg.h
+++ b/cygnal/libamf/amf_msg.h
@@ -30,8 +30,7 @@
#include <string>
#include <vector>
-#include <boost/cstdint.hpp>
-#include <boost/shared_ptr.hpp>
+#include <cstdint>
#include "element.h"
#include "dsodefs.h"
@@ -58,9 +57,9 @@ class DSOEXPORT AMF_msg {
AMF3 = 0x11
} amf_version_e;
typedef struct {
- boost::uint16_t version;
- boost::uint16_t headers;
- boost::uint16_t messages;
+ std::uint16_t version;
+ std::uint16_t headers;
+ std::uint16_t messages;
} context_header_t;
typedef struct {
std::string target;
@@ -69,41 +68,41 @@ class DSOEXPORT AMF_msg {
} message_header_t;
typedef struct {
message_header_t header;
- boost::shared_ptr<cygnal::Element> data;
+ std::shared_ptr<cygnal::Element> data;
} amf_message_t;
- size_t addMessage(boost::shared_ptr<amf_message_t> msg)
+ size_t addMessage(std::shared_ptr<amf_message_t> msg)
{
_messages.push_back(msg); return _messages.size();
};
- boost::shared_ptr<amf_message_t> &getMessage(int x) { return _messages[x]; };
+ std::shared_ptr<amf_message_t> &getMessage(int x) { return _messages[x]; };
size_t messageCount() { return _messages.size(); };
// These methods create the raw data of the AMF packet from Elements
- static boost::shared_ptr<cygnal::Buffer> encodeContextHeader(context_header_t *head);
- static boost::shared_ptr<cygnal::Buffer> encodeContextHeader(boost::uint16_t version,
- boost::uint16_t headers,
- boost::uint16_t messages);
+ static std::shared_ptr<cygnal::Buffer> encodeContextHeader(context_header_t *head);
+ static std::shared_ptr<cygnal::Buffer> encodeContextHeader(std::uint16_t version,
+ std::uint16_t headers,
+ std::uint16_t messages);
- static boost::shared_ptr<cygnal::Buffer> encodeMsgHeader(message_header_t *head);
- static boost::shared_ptr<cygnal::Buffer> encodeMsgHeader(const std::string &target,
+ static std::shared_ptr<cygnal::Buffer> encodeMsgHeader(message_header_t *head);
+ static std::shared_ptr<cygnal::Buffer> encodeMsgHeader(const std::string &target,
const std::string &response, size_t size);
// These methods parse the raw data of the AMF packet into data structures
- static boost::shared_ptr<context_header_t> parseContextHeader(cygnal::Buffer &data);
- static boost::shared_ptr<context_header_t> parseContextHeader(boost::uint8_t *data, size_t size);
+ static std::shared_ptr<context_header_t> parseContextHeader(cygnal::Buffer &data);
+ static std::shared_ptr<context_header_t> parseContextHeader(std::uint8_t *data, size_t size);
- static boost::shared_ptr<message_header_t> parseMessageHeader(cygnal::Buffer &data);
- static boost::shared_ptr<message_header_t> parseMessageHeader(boost::uint8_t *data, size_t size);
+ static std::shared_ptr<message_header_t> parseMessageHeader(cygnal::Buffer &data);
+ static std::shared_ptr<message_header_t> parseMessageHeader(std::uint8_t *data, size_t size);
// These methods parse the entire packet. which consists of multiple messages
- boost::shared_ptr<context_header_t> parseAMFPacket(cygnal::Buffer &buf);
- boost::shared_ptr<context_header_t> parseAMFPacket(boost::uint8_t *data,
+ std::shared_ptr<context_header_t> parseAMFPacket(cygnal::Buffer &buf);
+ std::shared_ptr<context_header_t> parseAMFPacket(std::uint8_t *data,
size_t size);
// This methods create an entire packet from multiple messages, already parsed in
- boost::shared_ptr<cygnal::Buffer> encodeAMFPacket();
- boost::shared_ptr<cygnal::Buffer> encodeAMFPacket(const std::string &target,
+ std::shared_ptr<cygnal::Buffer> encodeAMFPacket();
+ std::shared_ptr<cygnal::Buffer> encodeAMFPacket(const std::string &target,
const std::string &response, size_t size);
static void dump(context_header_t &data);
@@ -111,7 +110,7 @@ class DSOEXPORT AMF_msg {
void dump();
private:
- std::vector<boost::shared_ptr<amf_message_t> > _messages;
+ std::vector<std::shared_ptr<amf_message_t> > _messages;
// context_header_t _context_header;
};
diff --git a/cygnal/libamf/buffer.cpp b/cygnal/libamf/buffer.cpp
index ab6366d..b287759 100644
--- a/cygnal/libamf/buffer.cpp
+++ b/cygnal/libamf/buffer.cpp
@@ -20,7 +20,7 @@
#include "gnashconfig.h"
#endif
-#include <boost/cstdint.hpp>
+#include <cstdint>
#include <iostream>
#include <boost/random/uniform_int.hpp>
#include <boost/random/mersenne_twister.hpp>
@@ -43,8 +43,8 @@ namespace cygnal
/// @param digit The digit as a hex value
///
/// @return The byte as a decimal value.
-boost::uint8_t
-Buffer::hex2digit (boost::uint8_t digit)
+std::uint8_t
+Buffer::hex2digit (std::uint8_t digit)
{
if (digit == 0)
return 0;
@@ -73,10 +73,10 @@ Buffer::hex2mem(const std::string &str)
// GNASH_REPORT_FUNCTION;
size_t count = str.size();
size_t size = (count/3) + 4;
- boost::uint8_t ch = 0;
+ std::uint8_t ch = 0;
- boost::uint8_t *ptr = const_cast<boost::uint8_t *>(reinterpret_cast<const boost::uint8_t *>(str.c_str()));
- boost::uint8_t *end = ptr + count;
+ std::uint8_t *ptr = const_cast<std::uint8_t *>(reinterpret_cast<const std::uint8_t *>(str.c_str()));
+ std::uint8_t *end = ptr + count;
init(size);
@@ -126,7 +126,7 @@ Buffer::init(size_t size)
{
// GNASH_REPORT_FUNCTION;
if (!_data) {
- _data.reset(new boost::uint8_t[size]);
+ _data.reset(new std::uint8_t[size]);
_seekptr = _data.get();
}
_seekptr = _data.get();
@@ -142,7 +142,7 @@ Buffer::init(size_t size)
/// \brief Create a new Buffer with the default size
Buffer::Buffer()
- : _seekptr(0)
+ : _seekptr(nullptr)
{
// GNASH_REPORT_FUNCTION;
_nbytes = cygnal::NETBUFSIZE;
@@ -151,7 +151,7 @@ Buffer::Buffer()
/// \brief Create a new Buffer with a size other than the default
Buffer::Buffer(size_t nbytes)
- : _seekptr(0)
+ : _seekptr(nullptr)
{
// GNASH_REPORT_FUNCTION;
_nbytes = nbytes;
@@ -180,7 +180,7 @@ Buffer::~Buffer()
(void *)_data.get(), _nbytes,
(float)((now.tv_sec - _stamp.tv_sec) + ((now.tv_nsec - _stamp.tv_nsec)/1e9)));
#endif
- _seekptr = 0;
+ _seekptr = nullptr;
_nbytes = 0;
}
}
@@ -195,7 +195,7 @@ Buffer::~Buffer()
///
/// @return A reference to a Buffer.
Buffer &
-Buffer::copy(boost::uint8_t *data, size_t nbytes)
+Buffer::copy(std::uint8_t *data, size_t nbytes)
{
// GNASH_REPORT_FUNCTION;
if (_data) {
@@ -221,7 +221,7 @@ Buffer::copy(boost::uint8_t *data, size_t nbytes)
///
/// @return A reference to a Buffer.
Buffer &
-Buffer::append(boost::uint8_t *data, size_t nbytes)
+Buffer::append(std::uint8_t *data, size_t nbytes)
{
// GNASH_REPORT_FUNCTION;
if (_data) {
@@ -262,7 +262,7 @@ Buffer &
Buffer::operator+=(cygnal::Element::amf0_type_e type)
{
// GNASH_REPORT_FUNCTION;
- boost::uint8_t nb = static_cast<boost::uint8_t>(type);
+ std::uint8_t nb = static_cast<std::uint8_t>(type);
return operator+=(nb);
}
@@ -276,7 +276,7 @@ Buffer &
Buffer::operator+=(char byte)
{
// GNASH_REPORT_FUNCTION;
- boost::uint8_t nb = static_cast<boost::uint8_t>(byte);
+ std::uint8_t nb = static_cast<std::uint8_t>(byte);
return operator+=(nb);
}
@@ -289,7 +289,7 @@ Buffer &
Buffer::operator+=(bool flag)
{
// GNASH_REPORT_FUNCTION;
- boost::uint8_t nb = static_cast<boost::uint8_t>(flag);
+ std::uint8_t nb = static_cast<std::uint8_t>(flag);
return operator+=(nb);
}
@@ -299,12 +299,12 @@ Buffer::operator+=(bool flag)
///
/// @return A reference to a Buffer.
Buffer &
-Buffer::operator+=(boost::uint8_t byte)
+Buffer::operator+=(std::uint8_t byte)
{
// GNASH_REPORT_FUNCTION;
if ((_seekptr + 1) <= (_data.get() + _nbytes)) {
*_seekptr = byte;
- _seekptr += sizeof(boost::uint8_t);
+ _seekptr += sizeof(std::uint8_t);
}
return *this;
}
@@ -319,7 +319,7 @@ Buffer &
Buffer::operator+=(const char *str)
{
// GNASH_REPORT_FUNCTION;
- boost::uint8_t *ptr = const_cast<boost::uint8_t *>(reinterpret_cast<const boost::uint8_t *>(str));
+ std::uint8_t *ptr = const_cast<std::uint8_t *>(reinterpret_cast<const std::uint8_t *>(str));
return append(ptr, strlen(str));
}
@@ -334,7 +334,7 @@ Buffer &
Buffer::operator+=(const std::string &str)
{
// GNASH_REPORT_FUNCTION;
- boost::uint8_t *ptr = const_cast<boost::uint8_t *>(reinterpret_cast<const boost::uint8_t *>(str.c_str()));
+ std::uint8_t *ptr = const_cast<std::uint8_t *>(reinterpret_cast<const std::uint8_t *>(str.c_str()));
return append(ptr, str.size());
}
@@ -348,7 +348,7 @@ Buffer &
Buffer::operator+=(double num)
{
// GNASH_REPORT_FUNCTION;
- boost::uint8_t *ptr = reinterpret_cast<boost::uint8_t *>(&num);
+ std::uint8_t *ptr = reinterpret_cast<std::uint8_t *>(&num);
return append(ptr, AMF0_NUMBER_SIZE);
}
@@ -358,11 +358,11 @@ Buffer::operator+=(double num)
///
/// @return A reference to a Buffer.
Buffer &
-Buffer::operator+=(boost::uint16_t length)
+Buffer::operator+=(std::uint16_t length)
{
// GNASH_REPORT_FUNCTION;
- boost::uint8_t *ptr = reinterpret_cast<boost::uint8_t *>(&length);
- return append(ptr, sizeof(boost::uint16_t));
+ std::uint8_t *ptr = reinterpret_cast<std::uint8_t *>(&length);
+ return append(ptr, sizeof(std::uint16_t));
}
/// \brief Append an integer to existing data in the buffer.
@@ -371,11 +371,11 @@ Buffer::operator+=(boost::uint16_t length)
///
/// @return A reference to a Buffer.
Buffer &
-Buffer::operator+=(boost::uint32_t length)
+Buffer::operator+=(std::uint32_t length)
{
// GNASH_REPORT_FUNCTION;
- boost::uint8_t *ptr = reinterpret_cast<boost::uint8_t *>(&length);
- return append(ptr, sizeof(boost::uint32_t));
+ std::uint8_t *ptr = reinterpret_cast<std::uint8_t *>(&length);
+ return append(ptr, sizeof(std::uint32_t));
}
/// \brief Append a Buffer class to existing data in the buffer.
@@ -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+=(std::shared_ptr<Buffer> buf)
{
// GNASH_REPORT_FUNCTION;
append(buf->reference(), buf->allocated());
@@ -419,7 +419,7 @@ Buffer &
Buffer::operator=(const std::string &str)
{
// GNASH_REPORT_FUNCTION;
- boost::uint8_t *ptr = const_cast<boost::uint8_t *>(reinterpret_cast<const boost::uint8_t *>(str.c_str()));
+ std::uint8_t *ptr = const_cast<std::uint8_t *>(reinterpret_cast<const std::uint8_t *>(str.c_str()));
return copy(ptr, str.size());
}
@@ -427,7 +427,7 @@ Buffer &
Buffer::operator=(const char *str)
{
// GNASH_REPORT_FUNCTION;
- boost::uint8_t *ptr = const_cast<boost::uint8_t *>(reinterpret_cast<const boost::uint8_t *>(str));
+ std::uint8_t *ptr = const_cast<std::uint8_t *>(reinterpret_cast<const std::uint8_t *>(str));
return copy(ptr, strlen(str));
}
@@ -441,7 +441,7 @@ Buffer &
Buffer::operator=(double num)
{
// GNASH_REPORT_FUNCTION;
- boost::uint8_t *ptr = reinterpret_cast<boost::uint8_t *>(&num);
+ std::uint8_t *ptr = reinterpret_cast<std::uint8_t *>(&num);
return copy(ptr, AMF0_NUMBER_SIZE);
}
@@ -452,11 +452,11 @@ Buffer::operator=(double num)
///
/// @return A reference to a Buffer.
Buffer &
-Buffer::operator=(boost::uint16_t length)
+Buffer::operator=(std::uint16_t length)
{
// GNASH_REPORT_FUNCTION;
- boost::uint8_t *ptr = reinterpret_cast<boost::uint8_t *>(&length);
- return copy(ptr, sizeof(boost::uint16_t));
+ std::uint8_t *ptr = reinterpret_cast<std::uint8_t *>(&length);
+ return copy(ptr, sizeof(std::uint16_t));
}
/// \brief Copy a AMF0 type into the buffer.
@@ -468,7 +468,7 @@ Buffer::operator=(boost::uint16_t length)
Buffer &
Buffer::operator=(cygnal::Element::amf0_type_e type)
{
- boost::uint8_t nb = static_cast<boost::uint8_t>(type);
+ std::uint8_t nb = static_cast<std::uint8_t>(type);
return operator=(nb);
}
@@ -481,7 +481,7 @@ Buffer::operator=(cygnal::Element::amf0_type_e type)
Buffer &
Buffer::operator=(bool flag)
{
- boost::uint8_t nb = static_cast<boost::uint8_t>(flag);
+ std::uint8_t nb = static_cast<std::uint8_t>(flag);
return operator=(nb);
}
@@ -492,7 +492,7 @@ Buffer::operator=(bool flag)
///
/// @return A reference to a Buffer.
Buffer &
-Buffer::operator=(boost::uint8_t byte)
+Buffer::operator=(std::uint8_t byte)
{
// GNASH__FUNCTION;
@@ -506,7 +506,7 @@ Buffer::operator=(boost::uint8_t byte)
///
/// @return A reference to a Buffer.
Buffer &
-Buffer::operator=(boost::uint8_t *data)
+Buffer::operator=(std::uint8_t *data)
{
// GNASH_REPORT_FUNCTION;
if (data) {
@@ -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=(std::shared_ptr<Buffer> buf)
{
// GNASH_REPORT_FUNCTION;
copy(buf->reference(), buf->size());
@@ -559,16 +559,16 @@ Buffer::operator==(Buffer &buf)
/// @param byte The byte to remove from the buffer.
///
/// @return A real pointer to the base address of the buffer.
-boost::uint8_t *
-Buffer::remove(boost::uint8_t c)
+std::uint8_t *
+Buffer::remove(std::uint8_t c)
{
// GNASH_REPORT_FUNCTION;
- boost::uint8_t *start = std::find(begin(), end(), c);
+ std::uint8_t *start = std::find(begin(), end(), c);
// log_debug("Byte is at %x", (void *)start);
- if (start == 0) {
- return 0;
+ if (start == nullptr) {
+ return nullptr;
}
std::copy(start + 1, end(), start);
@@ -587,7 +587,7 @@ Buffer::remove(boost::uint8_t c)
/// Buffer
///
/// @return A real pointer to the base address of the Buffer.
-boost::uint8_t *
+std::uint8_t *
Buffer::remove(int start)
{
// GNASH_REPORT_FUNCTION;
@@ -611,7 +611,7 @@ Buffer::remove(int start)
/// @param range The amount of bytes to remove from the Buffer.
///
/// @return A real pointer to the base address of the Buffer.
-boost::uint8_t *
+std::uint8_t *
Buffer::remove(int start, int range)
{
// GNASH_REPORT_FUNCTION;
@@ -665,7 +665,7 @@ Buffer &
Buffer::resize(size_t size)
{
// GNASH_REPORT_FUNCTION;
- boost::scoped_array<boost::uint8_t> tmp;
+ std::unique_ptr<std::uint8_t[]> tmp;
// If there is no size, don't do anything
if (size == 0) {
@@ -675,7 +675,7 @@ Buffer::resize(size_t size)
// If we don't have any data yet in this buffer, resizing is cheap, as
// we don't havce to copy any data.
if (_seekptr == _data.get()) {
- _data.reset(new boost::uint8_t[size]);
+ _data.reset(new std::uint8_t[size]);
_nbytes= size;
return *this;
}
@@ -711,7 +711,7 @@ Buffer::resize(size_t size)
gnash::log_error(_("cygnal::Buffer::resize(%d): Truncating data (%d bytes) while resizing!"), size, used - size);
used = size;
}
- boost::uint8_t *newptr = new boost::uint8_t[size];
+ std::uint8_t *newptr = new std::uint8_t[size];
std::copy(_data.get(), _data.get() + used, newptr);
_data.reset(newptr);
diff --git a/cygnal/libamf/buffer.h b/cygnal/libamf/buffer.h
index 864b78a..709e1ff 100644
--- a/cygnal/libamf/buffer.h
+++ b/cygnal/libamf/buffer.h
@@ -24,9 +24,7 @@
#endif
#include <vector>
-#include <boost/cstdint.hpp>
-#include <boost/scoped_array.hpp>
-#include <boost/shared_ptr.hpp>
+#include <cstdint>
#include <iostream> // for output operator
#include <string>
@@ -147,7 +145,7 @@ public:
/// @param nbytes The number of bytes to copy.
///
/// @return A reference to a Buffer.
- Buffer ©(boost::uint8_t *data, size_t nbytes);
+ Buffer ©(std::uint8_t *data, size_t nbytes);
/// \brief Copy a Buffer class into the buffer.
/// This overwrites all data, and resets the seek ptr.
@@ -156,7 +154,7 @@ public:
///
/// @return A reference to a Buffer.
Buffer &operator=(Buffer &buf);
- Buffer &operator=(boost::shared_ptr<Buffer>& buf);
+ Buffer &operator=(std::shared_ptr<Buffer> buf);
/// \brief Copy a string into the buffer.
/// This overwrites all data, and resets the seek ptr.
///
@@ -179,21 +177,21 @@ public:
/// @param num A numeric short value.
///
/// @return A reference to a Buffer.
- Buffer &operator=(boost::uint16_t length);
+ Buffer &operator=(std::uint16_t length);
/// \brief Copy a byte into the buffer.
/// This overwrites all data, and resets the seek ptr.
///
/// @param byte A single byte.
///
/// @return A reference to a Buffer.
- Buffer &operator=(boost::uint8_t byte);
+ Buffer &operator=(std::uint8_t byte);
/// \brief Copy a byte into the buffer.
/// This overwrites all data, and resets the seek ptr.
///
/// @param byte A pointer to a single byte.
///
/// @return A reference to a Buffer.
- Buffer &operator=(boost::uint8_t *byte);
+ Buffer &operator=(std::uint8_t *byte);
/// \brief Copy a AMF0 type into the buffer.
/// This overwrites all data, and resets the seek ptr.
///
@@ -217,7 +215,7 @@ public:
/// @param nbytes The number of bytes to append.
///
/// @return A reference to a Buffer.
- Buffer &append(boost::uint8_t *data, size_t nbytes);
+ Buffer &append(std::uint8_t *data, size_t nbytes);
/// \brief Append a Buffer class to existing data in the buffer.
///
@@ -225,7 +223,7 @@ public:
///
/// @return A reference to a Buffer.
Buffer &operator+=(Buffer &buf);
- Buffer &operator+=(boost::shared_ptr<Buffer> &buf);
+ Buffer &operator+=(std::shared_ptr<Buffer> buf);
/// \brief Append a string to existing data in the buffer.
///
@@ -247,19 +245,19 @@ public:
/// @param num A numeric integer value.
///
/// @return A reference to a Buffer.
- Buffer &operator+=(boost::uint32_t length);
+ Buffer &operator+=(std::uint32_t length);
/// \brief Append a short to existing data in the buffer.
///
/// @param num A numeric short value.
///
/// @return A reference to a Buffer.
- Buffer &operator+=(boost::uint16_t length);
+ Buffer &operator+=(std::uint16_t length);
/// \brief Append a byte to existing data in the buffer.
///
/// @param byte A single byte.
///
/// @return A reference to a Buffer.
- Buffer &operator+=(boost::uint8_t byte);
+ Buffer &operator+=(std::uint8_t byte);
Buffer &operator+=(char byte);
/// \brief Append an AMF0 type to existing data in the buffer.
///
@@ -282,7 +280,7 @@ public:
/// @param byte The byte to remove from the buffer.
///
/// @return A real pointer to the base address of the buffer.
- boost::uint8_t *remove(boost::uint8_t c);
+ std::uint8_t *remove(std::uint8_t c);
/// \brief Drop a byte without resizing.
/// This will remove the byte from the Buffer, and then
/// move the remaining data to be in the correct
@@ -292,7 +290,7 @@ public:
/// Buffer
///
/// @return A real pointer to the base address of the Buffer.
- boost::uint8_t *remove(int index);
+ std::uint8_t *remove(int index);
/// \brief Drop bytes without resizing.
/// This will remove the bytes from the Buffer, and then
/// move the remaining data to be in the correct
@@ -307,22 +305,22 @@ public:
/// @param range The amoiunt of bytes to remove from the Buffer.
///
/// @return A real pointer to the base address of the Buffer.
- boost::uint8_t *remove(int start, int range);
+ std::uint8_t *remove(int start, int range);
// Network::byte_t *remove(char c);
/// \brief Return the base address of the Buffer.
///
/// @return A real pointer to the base address of the Buffer.
- boost::uint8_t *begin() { return _data.get() ; };
- boost::uint8_t *reference() { return _data.get(); }
- const boost::uint8_t *reference() const { return _data.get(); }
+ std::uint8_t *begin() { return _data.get() ; };
+ std::uint8_t *reference() { return _data.get(); }
+ const std::uint8_t *reference() const { return _data.get(); }
/// \brief Return the last address of the Buffer
/// Which is the base address plus the total size of the
/// Buffer.
///
/// @return A real pointer to the last address of the Buffer with data.
- boost::uint8_t *end() { return _seekptr; };
+ std::uint8_t *end() { return _seekptr; };
/// \brief Get the size of the Buffer.
///
@@ -341,7 +339,7 @@ public:
void setSize(size_t nbytes) { _nbytes = nbytes; };
/// \brief Set the real pointer to a block of Memory.
- void setPointer(boost::uint8_t *ptr) { _data.reset(ptr); };
+ void setPointer(std::uint8_t *ptr) { _data.reset(ptr); };
/// \brief Test equivalance against another Buffer.
/// This compares all the data on the current Buffer with
@@ -359,7 +357,7 @@ public:
/// get.
///
/// @return The byte at the specified location.
- boost::uint8_t operator[](int index) { return _data[index]; };
+ std::uint8_t operator[](int index) { return _data[index]; };
/// \brief Get the byte at a specified location.
///
@@ -367,7 +365,7 @@ public:
/// get.
///
/// @return A real pointer to the byte at the specified location.
- boost::uint8_t *at(int index) { return _data.get() + index; };
+ std::uint8_t *at(int index) { return _data.get() + index; };
/// \brief How much room is left in the buffer past the seek pointer.
/// This is primarily used to see if the buffer is fully
@@ -388,7 +386,7 @@ public:
/// @param ptr the real pointer to set the seek pointer to
///
/// @return nothing
- void setSeekPointer(boost::uint8_t *ptr) { _seekptr = ptr; };
+ void setSeekPointer(std::uint8_t *ptr) { _seekptr = ptr; };
void setSeekPointer(off_t offset) { _seekptr = _data.get() + offset; };
/// \brief Dump the internal data of this class in a human readable form.
@@ -401,12 +399,12 @@ public:
/// \var _seekptr
/// \brief This is a pointer to the address in the Buffer to
/// write data to then next time some is appended.
- boost::uint8_t *_seekptr;
+ std::uint8_t *_seekptr;
/// \var _data
/// \brief This is the container of the actual data in this
/// Buffer.
- boost::scoped_array<boost::uint8_t> _data;
+ std::unique_ptr<std::uint8_t[]> _data;
/// \var _nbytes
/// \brief This is the total allocated size of the Buffer.
@@ -434,7 +432,7 @@ public:
/// @param digit The digit as a hex value
///
/// @return The byte as a decimal value.
- boost::uint8_t hex2digit (boost::uint8_t digit);
+ std::uint8_t hex2digit (std::uint8_t digit);
};
/// \brief Dump to the specified output stream.
diff --git a/cygnal/libamf/element.cpp b/cygnal/libamf/element.cpp
index f87d452..be9f7d0 100644
--- a/cygnal/libamf/element.cpp
+++ b/cygnal/libamf/element.cpp
@@ -22,8 +22,7 @@
#include <vector>
#include <cmath>
#include <climits>
-#include <boost/shared_ptr.hpp>
-#include <boost/cstdint.hpp> // for boost::?int??_t
+#include <cstdint> // for boost::?int??_t
#include "buffer.h"
#include "log.h"
@@ -66,7 +65,7 @@ const char *astype_str[] = {
/// \brief Create a new Element with no data type.
Element::Element()
- : _name(0),
+ : _name(nullptr),
_type(NOTYPE)
{
// GNASH_REPORT_FUNCTION;
@@ -84,7 +83,7 @@ Element::~Element()
///
/// @param data The double to use as the value for this Element.
Element::Element(double indata)
- : _name(0),
+ : _name(nullptr),
_type(NOTYPE)
{
// GNASH_REPORT_FUNCTION;
@@ -97,7 +96,7 @@ Element::Element(double indata)
///
/// @param num The double to use as the value of the property.
Element::Element(const string &name, double num)
- : _name(0),
+ : _name(nullptr),
_type(NOTYPE)
{
// GNASH_REPORT_FUNCTION;
@@ -110,7 +109,7 @@ Element::Element(const string &name, double num)
///
/// @remarks This assume the data string is already NULL terminated.
Element::Element(const string &indata)
- : _name(0),
+ : _name(nullptr),
_type(NOTYPE)
{
// GNASH_REPORT_FUNCTION;
@@ -119,7 +118,7 @@ Element::Element(const string &indata)
/// \overload Element(const std::string &data)
Element::Element(const char *indata)
- : _name(0),
+ : _name(nullptr),
_type(NOTYPE)
{
// GNASH_REPORT_FUNCTION;
@@ -132,7 +131,7 @@ Element::Element(const char *indata)
///
/// @param data The ASCII string to use as the value of the property.
Element::Element(const string &name, const string &data)
- : _name(0),
+ : _name(nullptr),
_type(NOTYPE)
{
// GNASH_REPORT_FUNCTION;
@@ -143,7 +142,7 @@ Element::Element(const string &name, const string &data)
///
/// @param data The boolean to use as the value for this Element.
Element::Element(bool data)
- : _name(0),
+ : _name(nullptr),
_type(NOTYPE)
{
// GNASH_REPORT_FUNCTION;
@@ -156,7 +155,7 @@ Element::Element(bool data)
///
/// @param data The boolean to use as the value of the property.
Element::Element(const string &name, bool indata)
- : _name(0),
+ : _name(nullptr),
_type(NOTYPE)
{
// GNASH_REPORT_FUNCTION;
@@ -215,7 +214,7 @@ Element::clear()
{
// GNASH_REPORT_FUNCTION;
delete[] _name;
- _name = 0;
+ _name = nullptr;
_buffer.reset();
}
@@ -250,12 +249,12 @@ Element::to_number() const
/// \brief Cast the data in this Element to a short value.
///
/// @return short value.
-boost::uint16_t
+std::uint16_t
Element::to_short() const
{
// GNASH_REPORT_FUNCTION;
if (_buffer) {
- return *(reinterpret_cast<boost::uint16_t *>(_buffer->reference()));
+ return *(reinterpret_cast<std::uint16_t *>(_buffer->reference()));
}
// return ::nan("NaN");
return -1;
@@ -264,12 +263,12 @@ Element::to_short() const
/// \brief Cast the data in this Element to a short value.
///
/// @return short value.
-boost::uint32_t
+std::uint32_t
Element::to_integer() const
{
// GNASH_REPORT_FUNCTION;
if (_buffer) {
- return *(reinterpret_cast<boost::uint32_t *>(_buffer->reference()));
+ return *(reinterpret_cast<std::uint32_t *>(_buffer->reference()));
}
// return ::nan("NaN");
return -1;
@@ -288,7 +287,7 @@ Element::to_string() const
}
return "NULL";
}
- return 0;
+ return nullptr;
}
/// \brief Cast the data in this Element to a boolean value.
@@ -307,24 +306,24 @@ Element::to_bool() const
/// \brief Cast the data in this Element to an real pointer to data.
///
/// @return A real pointer to the base address of the raw data in memory.
-boost::uint8_t *
+std::uint8_t *
Element::to_reference()
{
// GNASH_REPORT_FUNCTION;
if (_buffer) {
return _buffer->reference();
}
- return 0;
+ return nullptr;
}
-const boost::uint8_t *
+const std::uint8_t *
Element::to_reference() const
{
// GNASH_REPORT_FUNCTION;
if (_buffer) {
return _buffer->reference();
}
- return 0;
+ return nullptr;
}
/// \brief Test equivalance against another Element.
@@ -413,7 +412,7 @@ Element::calculateSize(cygnal::Element &el) const
// If thr name is set, it's a property, so the length is
// prefixed to the name string.
if (el.getNameSize()) {
- outsize += el.getNameSize() + sizeof(boost::uint16_t);
+ outsize += el.getNameSize() + sizeof(std::uint16_t);
}
// If there is any data, then the size of the data plus the header
// of the type and the length is next.
@@ -424,14 +423,14 @@ Element::calculateSize(cygnal::Element &el) const
// If an array has no data, it's undefined, so has a length of zero.
if (el.getType() == Element::STRICT_ARRAY_AMF0) {
if (el.getDataSize() == 0) {
- outsize = sizeof(boost::uint32_t) + 1;
+ outsize = sizeof(std::uint32_t) + 1;
}
}
// More complex messages have child elements, either properties or
// the items in an array, If we have children, count up their size too.
// Calculate the total size of the message
- std::vector<boost::shared_ptr<cygnal::Element> > props = el.getProperties();
+ std::vector<std::shared_ptr<cygnal::Element> > props = el.getProperties();
for (size_t i=0; i<props.size(); i++) {
outsize += props[i]->getDataSize();
if (props[i]->getNameSize()) {
@@ -450,7 +449,7 @@ Element::calculateSize(cygnal::Element &el) const
/// properties into raw binary data in big endoan format.
///
/// @return a smart pointer to a Buffer class.
-boost::shared_ptr<Buffer>
+std::shared_ptr<Buffer>
Element::encode()
{
// GNASH_REPORT_FUNCTION;
@@ -458,12 +457,12 @@ Element::encode()
return encode(false);
}
-boost::shared_ptr<Buffer>
+std::shared_ptr<Buffer>
Element::encode(bool notobject)
{
// GNASH_REPORT_FUNCTION;
size_t size = 0;
- boost::shared_ptr<Buffer> buf;
+ std::shared_ptr<Buffer> buf;
if (_type == Element::OBJECT_AMF0) {
// Calculate the total size of the output buffer
@@ -481,19 +480,19 @@ Element::encode(bool notobject)
if (!notobject) {
*buf = Element::OBJECT_AMF0;
}
- if (_name > static_cast<char *>(0)) {
+ if (_name > static_cast<char *>(nullptr)) {
size_t length = getNameSize();
- boost::uint16_t enclength = length;
+ std::uint16_t enclength = length;
swapBytes(&enclength, 2);
*buf += enclength;
string str = _name;
*buf += str;
- boost::uint8_t byte = static_cast<boost::uint8_t>(0x5);
+ std::uint8_t byte = static_cast<std::uint8_t>(0x5);
*buf += byte;
}
for (size_t i=0; i<_properties.size(); i++) {
- boost::shared_ptr<Buffer> partial = AMF::encodeElement(_properties[i]);
+ std::shared_ptr<Buffer> partial = AMF::encodeElement(_properties[i]);
// log_debug("Encoded partial size for is %d", partial->size());
// _properties[i]->dump();
// partial->dump();
@@ -506,7 +505,7 @@ Element::encode(bool notobject)
}
// log_debug("FIXME: Terminating object");
if (!notobject) {
- boost::uint8_t pad = 0;
+ std::uint8_t pad = 0;
*buf += pad;
*buf += pad;
*buf += TERMINATOR;
@@ -525,7 +524,7 @@ Element::encode(bool notobject)
/// the array to get.
///
/// @return A smart pointer to the Element or property.
-boost::shared_ptr<Element>
+std::shared_ptr<Element>
Element::operator[](size_t index)
{
// GNASH_REPORT_FUNCTION;
@@ -533,7 +532,7 @@ Element::operator[](size_t index)
return _properties[index];
}
- boost::shared_ptr<Element> el;
+ std::shared_ptr<Element> el;
return el;
}
@@ -607,7 +606,7 @@ Element::operator=(bool flag)
///
/// @return A reference to this Element.
Element &
-Element::makeString(boost::uint8_t *data, size_t size)
+Element::makeString(std::uint8_t *data, size_t size)
{
// GNASH_REPORT_FUNCTION;
_type = Element::STRING_AMF0;
@@ -650,7 +649,7 @@ Element::makeNullString()
// GNASH_REPORT_FUNCTION;
_type = Element::STRING_AMF0;
try {
- check_buffer(sizeof(boost::uint8_t));
+ check_buffer(sizeof(std::uint8_t));
} catch (std::exception& e) {
log_error("%s", e.what());
return *this;
@@ -672,7 +671,7 @@ Element::makeString(const char *str, size_t size)
{
// GNASH_REPORT_FUNCTION;
_type = Element::STRING_AMF0;
- boost::uint8_t *ptr = reinterpret_cast<boost::uint8_t *>(const_cast<char *>(str));
+ std::uint8_t *ptr = reinterpret_cast<std::uint8_t *>(const_cast<char *>(str));
return makeString(ptr, size);
}
@@ -711,7 +710,7 @@ Element::makeString(const string &name, const string &str)
///
/// @return A reference to this Element.
Element &
-Element::makeNumber(boost::shared_ptr<cygnal::Buffer> buf)
+Element::makeNumber(std::shared_ptr<cygnal::Buffer> buf)
{
// GNASH_REPORT_FUNCTION;
return makeNumber(buf->reference());
@@ -724,7 +723,7 @@ Element::makeNumber(boost::shared_ptr<cygnal::Buffer> buf)
///
/// @return A reference to this Element.
Element &
-Element::makeNumber(boost::uint8_t *data)
+Element::makeNumber(std::uint8_t *data)
{
// GNASH_REPORT_FUNCTION;
double num = *reinterpret_cast<const double*>(data);
@@ -778,10 +777,10 @@ Element::makeNumber(const string &name, double num)
return makeNumber(num);
}
-/// \overload Element::makeNumber(const std::string &name, boost::uint8_t *data);
+/// \overload Element::makeNumber(const std::string &name, std::uint8_t *data);
/// The size isn't needed as a double is always the same size.
Element &
-Element::makeNumber(const std::string &name, boost::uint8_t *data)
+Element::makeNumber(const std::string &name, std::uint8_t *data)
{
// GNASH_REPORT_FUNCTION;
if (name.size()) {
@@ -845,7 +844,7 @@ Element::makeBoolean(const string &name, bool flag)
///
/// @return A reference to this Element.
Element &
-Element::makeBoolean(boost::uint8_t *data)
+Element::makeBoolean(std::uint8_t *data)
{
// GNASH_REPORT_FUNCTION;
bool flag = *reinterpret_cast<const bool*>(data);
@@ -947,7 +946,7 @@ Element::makeObject(const std::string &name)
///
/// @return A reference to this Element.
Element &
-Element::makeObject(const std::string &name, std::vector<boost::shared_ptr<Element> > &data)
+Element::makeObject(const std::string &name, std::vector<std::shared_ptr<Element> > &data)
{
// GNASH_REPORT_FUNCTION;
_type = OBJECT_AMF0;
@@ -963,13 +962,13 @@ Element::makeObject(const std::string &name, std::vector<boost::shared_ptr<Eleme
///
/// @return A reference to this Element.
Element &
-Element::makeObject(std::vector<boost::shared_ptr<Element> > &data)
+Element::makeObject(std::vector<std::shared_ptr<Element> > &data)
{
// GNASH_REPORT_FUNCTION;
_type = Element::OBJECT_AMF0;
- std::vector<boost::shared_ptr<Element> >::const_iterator ait;
+ std::vector<std::shared_ptr<Element> >::const_iterator ait;
for (ait = data.begin(); ait != data.end(); ++ait) {
- boost::shared_ptr<Element> el = (*(ait));
+ std::shared_ptr<Element> el = (*(ait));
addProperty(el);
// el->dump(os);
}
@@ -988,7 +987,7 @@ Element::makeXMLObject()
return *this;
}
Element &
-Element::makeXMLObject(boost::uint8_t * /*data*/)
+Element::makeXMLObject(std::uint8_t * /*data*/)
{
// GNASH_REPORT_FUNCTION;
_type = Element::XML_OBJECT_AMF0;
@@ -1071,7 +1070,7 @@ Element::makeTypedObject()
///
/// @return A reference to this Element.
Element &
-Element::makeTypedObject(boost::uint8_t */*data*/)
+Element::makeTypedObject(std::uint8_t */*data*/)
{
// GNASH_REPORT_FUNCTION;
_type = Element::TYPED_OBJECT_AMF0;
@@ -1092,12 +1091,12 @@ Element::makeReference()
}
Element &
-Element::makeReference(boost::uint16_t index)
+Element::makeReference(std::uint16_t index)
{
// GNASH_REPORT_FUNCTION;
_type = Element::REFERENCE_AMF0;
- boost::uint8_t *ptr = reinterpret_cast<boost::uint8_t *>(&index);
- return makeReference(ptr, sizeof(boost::uint16_t));
+ std::uint8_t *ptr = reinterpret_cast<std::uint8_t *>(&index);
+ return makeReference(ptr, sizeof(std::uint16_t));
return *this;
}
@@ -1110,7 +1109,7 @@ Element::makeReference(boost::uint16_t index)
///
/// @return A reference to this Element.
Element &
-Element::makeReference(boost::uint8_t *indata, size_t size)
+Element::makeReference(std::uint8_t *indata, size_t size)
{
// GNASH_REPORT_FUNCTION;
_type = Element::REFERENCE_AMF0;
@@ -1144,7 +1143,7 @@ Element::makeMovieClip()
///
/// @return A reference to this Element.
Element &
-Element::makeMovieClip(boost::uint8_t *indata, size_t size)
+Element::makeMovieClip(std::uint8_t *indata, size_t size)
{
// GNASH_REPORT_FUNCTION;
_type = Element::MOVIECLIP_AMF0;
@@ -1189,7 +1188,7 @@ Element::makeECMAArray(const std::string &name)
///
/// @return A reference to this Element.
Element &
-Element::makeECMAArray(const std::string &name, std::vector<boost::shared_ptr<cygnal::Element> > &data)
+Element::makeECMAArray(const std::string &name, std::vector<std::shared_ptr<cygnal::Element> > &data)
{
// GNASH_REPORT_FUNCTION;
_type = Element::ECMA_ARRAY_AMF0;
@@ -1206,7 +1205,7 @@ Element::makeECMAArray(const std::string &name, std::vector<boost::shared_ptr<cy
///
/// @return A reference to this Element.
Element &
-Element::makeECMAArray(std::vector<boost::shared_ptr<cygnal::Element> > &data)
+Element::makeECMAArray(std::vector<std::shared_ptr<cygnal::Element> > &data)
{
// GNASH_REPORT_FUNCTION;
makeObject(data);
@@ -1252,7 +1251,7 @@ Element::makeStrictArray(const std::string &name)
///
/// @return A reference to this Element.
Element &
-Element::makeStrictArray(const std::string &name, std::vector<boost::shared_ptr<cygnal::Element> > &data)
+Element::makeStrictArray(const std::string &name, std::vector<std::shared_ptr<cygnal::Element> > &data)
{
// GNASH_REPORT_FUNCTION;
makeObject(name, data);
@@ -1268,7 +1267,7 @@ Element::makeStrictArray(const std::string &name, std::vector<boost::shared_ptr<
///
/// @return A reference to this Element.
Element &
-Element::makeStrictArray(std::vector<boost::shared_ptr<cygnal::Element> > &data)
+Element::makeStrictArray(std::vector<std::shared_ptr<cygnal::Element> > &data)
{
// GNASH_REPORT_FUNCTION;
makeObject(data);
@@ -1295,7 +1294,7 @@ Element::makeUnsupported()
///
/// @return A reference to this Element.
Element &
-Element::makeUnsupported(boost::uint8_t *data)
+Element::makeUnsupported(std::uint8_t *data)
{
UNUSED(data);
_type = Element::UNSUPPORTED_AMF0;
@@ -1321,7 +1320,7 @@ Element::makeLongString()
///
/// @return A reference to this Element.
Element &
-Element::makeLongString(boost::uint8_t *indata)
+Element::makeLongString(std::uint8_t *indata)
{
UNUSED(indata);
_type = Element::LONG_STRING_AMF0;
@@ -1341,7 +1340,7 @@ Element::makeRecordSet()
return *this;
}
Element &
-Element::makeRecordSet(boost::uint8_t *data)
+Element::makeRecordSet(std::uint8_t *data)
{
UNUSED(data);
_type = Element::RECORD_SET_AMF0;
@@ -1363,7 +1362,7 @@ Element::makeDate()
}
Element &
-Element::makeDate(boost::uint8_t *date)
+Element::makeDate(std::uint8_t *date)
{
// GNASH_REPORT_FUNCTION;
@@ -1377,7 +1376,7 @@ Element &
Element::makeDate(double date)
{
// GNASH_REPORT_FUNCTION;
- //boost::uint8_t *ptr = reinterpret_cast<boost::uint8_t *>(&date);
+ //std::uint8_t *ptr = reinterpret_cast<std::uint8_t *>(&date);
_type = Element::DATE_AMF0;
try {
check_buffer(AMF0_NUMBER_SIZE);
@@ -1434,7 +1433,7 @@ void
Element::setName(const char *name, size_t size)
{
// GNASH_REPORT_FUNCTION;
- boost::uint8_t *ptr = reinterpret_cast<boost::uint8_t *>(const_cast<char *>(name));
+ std::uint8_t *ptr = reinterpret_cast<std::uint8_t *>(const_cast<char *>(name));
return setName(ptr, size);
}
@@ -1449,10 +1448,10 @@ Element::setName(const char *name, size_t size)
///
/// @remarks This adds a NULL string terminator so the name can be printed.
void
-Element::setName(boost::uint8_t *name, size_t size)
+Element::setName(std::uint8_t *name, size_t size)
{
// GNASH_REPORT_FUNCTION;
- if ((size > 0) && (name != 0)) {
+ if ((size > 0) && (name != nullptr)) {
_name = new char[size+1];
std::copy(name, name+size, _name);
*(_name + size) = 0;
@@ -1470,7 +1469,7 @@ void
Element::check_buffer(size_t size)
{
// GNASH_REPORT_FUNCTION;
- if (_buffer == 0) {
+ if (_buffer == nullptr) {
_buffer.reset(new Buffer(size));
} else {
if (_buffer->size() < size) {
@@ -1554,10 +1553,10 @@ Element::dump(std::ostream& os) const
}
if (_properties.size() > 0) {
- std::vector<boost::shared_ptr<Element> >::const_iterator ait;
+ std::vector<std::shared_ptr<Element> >::const_iterator ait;
os << "# of Properties in object: " << _properties.size() << std::endl;
for (ait = _properties.begin(); ait != _properties.end(); ++ait) {
- const boost::shared_ptr<Element> el = (*(ait));
+ const std::shared_ptr<Element> el = (*(ait));
el->dump(os);
}
}
@@ -1569,21 +1568,21 @@ Element::dump(std::ostream& os) const
/// search for.
///
/// @return A smart pointer to the Element for this property.
-boost::shared_ptr<cygnal::Element>
+std::shared_ptr<cygnal::Element>
Element::findProperty(const std::string &name)
{
if (_properties.size() > 0) {
- std::vector<boost::shared_ptr<Element> >::iterator ait;
+ std::vector<std::shared_ptr<Element> >::iterator ait;
// cerr << "# of Properties in object: " << _properties.size() << endl;
for (ait = _properties.begin(); ait != _properties.end(); ++ait) {
- boost::shared_ptr<Element> el = (*(ait));
+ std::shared_ptr<Element> el = (*(ait));
if (el->getName() == name) {
return el;
}
// el->dump();
}
}
- boost::shared_ptr<Element> el;
+ std::shared_ptr<Element> el;
return el;
}
diff --git a/cygnal/libamf/element.h b/cygnal/libamf/element.h
index 22f9502..8d669ac 100644
--- a/cygnal/libamf/element.h
+++ b/cygnal/libamf/element.h
@@ -23,9 +23,8 @@
#include <string>
#include <cstring>
#include <iostream> // for output operator
-#include <boost/cstdint.hpp>
-#include <boost/shared_ptr.hpp>
-#include <boost/scoped_ptr.hpp>
+#include <cstdint>
+#include <memory>
//#include "network.h"
#include "dsodefs.h" // DSOEXPORT
@@ -182,7 +181,7 @@ public:
///
/// @return A reference to this Element.
Element &operator=(Element &el);
-// Element &operator=(boost::shared_ptr<Element>);
+// Element &operator=(std::shared_ptr<Element>);
/// \brief Make this Element be the same as a double.
/// This sets both the data type and the value.
@@ -222,8 +221,8 @@ public:
///
/// @return A reference to this Element.
Element &makeString(const char *str, size_t size);
- /// \overload Element::makeString(boost::uint8_t *data, size_t size)
- Element &makeString(boost::uint8_t *data, size_t size);
+ /// \overload Element::makeString(std::uint8_t *data, size_t size)
+ Element &makeString(std::uint8_t *data, size_t size);
/// \brief Make this Element with an ASCII string value.
///
@@ -254,7 +253,7 @@ public:
/// @param buf A smart pointer to a Buffer class.
///
/// @return A reference to this Element.
- Element &makeNumber(boost::shared_ptr<cygnal::Buffer> buf);
+ Element &makeNumber(std::shared_ptr<cygnal::Buffer> buf);
/// \brief Make this Element with a double value.
/// The size isn't needed as a double is always the same size.
@@ -262,7 +261,7 @@ public:
/// @param str The double to use as the value.
///
/// @return A reference to this Element.
- Element &makeNumber(boost::uint8_t *data);
+ Element &makeNumber(std::uint8_t *data);
/// \brief Make this Element a Property with a double value
///
@@ -270,9 +269,9 @@ public:
///
/// @param num The double to use as the value of the property.
Element &makeNumber(const std::string &name, double num) ;
- /// \overload Element::makeNumber(const std::string &name, boost::uint8_t *data);
+ /// \overload Element::makeNumber(const std::string &name, std::uint8_t *data);
/// The size isn't needed as a double is always the same size.
- Element &makeNumber(const std::string &name, boost::uint8_t *data);
+ Element &makeNumber(const std::string &name, std::uint8_t *data);
/// \brief Make this Element with a boolean value.
/// The size isn't needed as a boolean is always the same size.
@@ -280,7 +279,7 @@ public:
/// @param data A real pointer to the boolean use as the value.
///
/// @return A reference to this Element.
- Element &makeBoolean(boost::uint8_t *data);
+ Element &makeBoolean(std::uint8_t *data);
/// \brief Make this Element with a boolean value.
///
@@ -350,7 +349,7 @@ public:
/// @param data A smart pointer to an Element to use as the value.
///
/// @return A reference to this Element.
- Element &makeObject(std::vector<boost::shared_ptr<cygnal::Element> > &data);
+ Element &makeObject(std::vector<std::shared_ptr<cygnal::Element> > &data);
/// \brief Make this Element a Property with an Object as the value.
///
@@ -359,7 +358,7 @@ public:
/// @param data A smart pointer to an Element to use as the value.
///
/// @return A reference to this Element.
- Element &makeObject(const std::string &name, std::vector<boost::shared_ptr<cygnal::Element> > &data);
+ Element &makeObject(const std::string &name, std::vector<std::shared_ptr<cygnal::Element> > &data);
/// \brief Make this Element as an XML Object data type.
/// This is like a string object, but the type is different.
@@ -384,7 +383,7 @@ public:
///
/// @return A reference to this Element.
Element &makeXMLObject(const std::string &name, const std::string &data);
- Element &makeXMLObject(boost::uint8_t *data);
+ Element &makeXMLObject(std::uint8_t *data);
/// \brief Make this Element a Property with an ECMA Array as the value.
/// This is a mixed array of any AMF types. These are stored
@@ -407,7 +406,7 @@ public:
/// @param data A smart pointer to a vector of Elements to use as the vaule.
///
/// @return A reference to this Element.
- Element &makeECMAArray(std::vector<boost::shared_ptr<cygnal::Element> > &data);
+ Element &makeECMAArray(std::vector<std::shared_ptr<cygnal::Element> > &data);
/// \brief Make this Element a Property with an ECMA Array as the value.
///
@@ -416,7 +415,7 @@ public:
/// @param data A smart pointer to a vector of Elements to use as the vaule.
///
/// @return A reference to this Element.
- Element &makeECMAArray(const std::string &name, std::vector<boost::shared_ptr<cygnal::Element> > &data);
+ Element &makeECMAArray(const std::string &name, std::vector<std::shared_ptr<cygnal::Element> > &data);
/// \brief Make this Element a Property with an Strict Array as the value.
/// This is an array of a single AMF type. These are stored
@@ -441,7 +440,7 @@ public:
/// @param data A smart pointer to a vector of Elements to use as the vaule.
///
/// @return A reference to this Element.
- Element &makeStrictArray(std::vector<boost::shared_ptr<cygnal::Element> > &data);
+ Element &makeStrictArray(std::vector<std::shared_ptr<cygnal::Element> > &data);
/// \brief Make this Element a Property with an Strict Array as the value.
///
@@ -450,7 +449,7 @@ public:
/// @param data A smart pointer to a vector of Elements to use as the vaule.
///
/// @return A reference to this Element.
- Element &makeStrictArray(const std::string &name, std::vector<boost::shared_ptr<cygnal::Element> > &data);
+ Element &makeStrictArray(const std::string &name, std::vector<std::shared_ptr<cygnal::Element> > &data);
/// \brief Make this Element a Property with an Typed Object as the value.
///
@@ -467,13 +466,13 @@ public:
/// @param size The number of bytes to use as the value.
///
/// @return A reference to this Element.
- Element &makeTypedObject(boost::uint8_t *data);
+ Element &makeTypedObject(std::uint8_t *data);
/// \brief Make this Element a Property with an Object Reference as the value.
///
/// @return A reference to this Element.
Element &makeReference();
- Element &makeReference(boost::uint16_t index);
+ Element &makeReference(std::uint16_t index);
/// \brief Make this Element a Property with an Object Reference as the value.
///
@@ -482,7 +481,7 @@ public:
/// @param size The number of bytes to use as the value.
///
/// @return A reference to this Element.
- Element &makeReference(boost::uint8_t *data, size_t size);
+ Element &makeReference(std::uint8_t *data, size_t size);
/// \brief Make this Element a Property with a Movie Clip (SWF data) as the value.
///
@@ -496,7 +495,7 @@ public:
/// @param size The number of bytes to use as the value.
///
/// @return A reference to this Element.
- Element &makeMovieClip(boost::uint8_t *data, size_t size);
+ Element &makeMovieClip(std::uint8_t *data, size_t size);
/// \brief Make this Element a Property with a UTF8 String as the value.
///
@@ -510,7 +509,7 @@ public:
/// @param size The number of bytes to use as the value.
///
/// @return A reference to this Element.
- Element &makeLongString(boost::uint8_t *data);
+ Element &makeLongString(std::uint8_t *data);
/// \brief Make this Element a Property with a Record Set as the value.
///
@@ -524,7 +523,7 @@ public:
/// @param size The number of bytes to use as the value.
///
/// @return A reference to this Element.
- Element &makeRecordSet(boost::uint8_t *data);
+ Element &makeRecordSet(std::uint8_t *data);
/// \brief Make this Element a Property with a Date as the value.
///
@@ -536,7 +535,7 @@ public:
/// @param data A real pointer to the raw data to use as the value.
///
/// @return A reference to this Element.
- Element &makeDate(boost::uint8_t *data);
+ Element &makeDate(std::uint8_t *data);
Element &makeDate(double data);
/// \brief Make this Element a Property with an Unsupported value.
@@ -551,7 +550,7 @@ public:
/// @param size The number of bytes to use as the value.
///
/// @return A reference to this Element.
- Element &makeUnsupported(boost::uint8_t *data);
+ Element &makeUnsupported(std::uint8_t *data);
/// \brief Test equivalance against another Element.
/// This compares all the data and the data type in the
@@ -573,7 +572,7 @@ public:
/// @param buf A smart pointer to an Element.
///
/// @return A boolean true if the Elements are indentical.
- bool operator==(boost::shared_ptr<cygnal::Element> );
+ bool operator==(std::shared_ptr<cygnal::Element> );
/// \brief Test equivalance against a boolean value
/// This compares all the data and the data type in the
@@ -592,7 +591,7 @@ public:
/// the array to get.
///
/// @return A smart pointer to the Element or property.
- boost::shared_ptr<cygnal::Element> operator[](size_t index);
+ std::shared_ptr<cygnal::Element> operator[](size_t index);
/// \brief Get the size in bytes of the Element's data.
/// All data in an Element is stored in a Buffer class.
@@ -626,12 +625,12 @@ public:
/// \brief Cast the data in this Element to a short (2 bytes) value.
///
/// @return short (2 bytes) value.
- boost::uint16_t to_short() const;
+ std::uint16_t to_short() const;
/// \brief Cast the data in this Element to an integer (4 bytes) value.
///
/// @return integer (4 bytes) value.
- boost::uint32_t to_integer() const;
+ std::uint32_t to_integer() const;
/// \brief Cast the data in this Element to an ASCII string value.
///
@@ -641,8 +640,8 @@ public:
/// \brief Cast the data in this Element to an real pointer to data.
///
/// @return A real pointer to the base address of the raw data in memory.
- boost::uint8_t *to_reference();
- const boost::uint8_t *to_reference() const;
+ std::uint8_t *to_reference();
+ const std::uint8_t *to_reference() const;
// Manipulate the name of a property
@@ -678,7 +677,7 @@ public:
/// @return nothing.
///
/// @remarks This add a NULL string terminator so the name can be printed.
- void setName(boost::uint8_t *name, size_t size);
+ void setName(std::uint8_t *name, size_t size);
// Manipulate the children Elements of an object
@@ -688,21 +687,21 @@ public:
/// search for.
///
/// @return A smart pointer to the Element for this property.
- boost::shared_ptr<Element> findProperty(const std::string &name);
+ std::shared_ptr<Element> findProperty(const std::string &name);
/// \brief Find the property at this index for this Object.
///
/// @param index The index of the property in the array of data.
///
/// @return A smart pointer to the Element for this property.
- boost::shared_ptr<Element> getProperty(size_t index) const { return _properties[index]; };
+ std::shared_ptr<Element> getProperty(size_t index) const { return _properties[index]; };
/// \brief Add a Property to the array of properties for this object.
///
/// @param el A smart pointer to the Element for this Property.
///
/// @return nothing.
- void addProperty(boost::shared_ptr<Element> el) { _properties.push_back(el); };
+ void addProperty(std::shared_ptr<Element> el) { _properties.push_back(el); };
void clearProperties() { return _properties.clear(); };
@@ -712,7 +711,7 @@ public:
///
/// @remarks This does not remove the Element from array of
/// properties.
- boost::shared_ptr<Element> popProperty()
+ std::shared_ptr<Element> popProperty()
{ return _properties.front(); };
/// \brief Get the count of properties for this Element.
@@ -730,8 +729,8 @@ public:
/// formatting onStatus response packets.
///
/// @return a smart pointer to a Buffer class.
- boost::shared_ptr<Buffer> encode();
- boost::shared_ptr<Buffer> encode(bool notobject);
+ std::shared_ptr<Buffer> encode();
+ std::shared_ptr<Buffer> encode(bool notobject);
/// \brief Get the array of properties for this Element.
///
@@ -739,7 +738,7 @@ public:
///
/// @remarks This is only intended to be used for testing and
/// debugging purposes.
- std::vector<boost::shared_ptr<Element> > getProperties() const
+ std::vector<std::shared_ptr<Element> > getProperties() const
{ return _properties; };
size_t calculateSize();
@@ -770,7 +769,7 @@ private:
/// \var _buffer
/// A smart pointer to the Buffer used to hold the data
/// for this Element.
- boost::shared_ptr<cygnal::Buffer> _buffer;
+ std::shared_ptr<cygnal::Buffer> _buffer;
/// \var _type
/// The AMF0 data type of this Element.
@@ -779,7 +778,7 @@ private:
/// \var _properties
/// The vector of properties stored for this Element if
/// it's a top level object.
- std::vector<boost::shared_ptr<Element> > _properties;
+ std::vector<std::shared_ptr<Element> > _properties;
}; // end of class definition
diff --git a/cygnal/libamf/flv.cpp b/cygnal/libamf/flv.cpp
index 0f8a206..c9e0769 100644
--- a/cygnal/libamf/flv.cpp
+++ b/cygnal/libamf/flv.cpp
@@ -27,12 +27,11 @@
#include "flv.h"
#include <boost/detail/endian.hpp>
-#include <boost/shared_ptr.hpp>
#include <string>
#include <vector>
#include <cmath>
#include <climits>
-#include <boost/cstdint.hpp>
+#include <cstdint>
using gnash::log_debug;
using gnash::log_error;
@@ -61,31 +60,31 @@ Flv::~Flv()
}
// Encode the data into a Buffer
-boost::shared_ptr<cygnal::Buffer>
-Flv::encodeHeader(boost::uint8_t type)
+std::shared_ptr<cygnal::Buffer>
+Flv::encodeHeader(std::uint8_t type)
{
// GNASH_REPORT_FUNCTION;
- boost::shared_ptr<cygnal::Buffer> buf(new Buffer(sizeof(Flv::flv_header_t)));
+ std::shared_ptr<cygnal::Buffer> buf(new Buffer(sizeof(Flv::flv_header_t)));
buf->clear();
- boost::uint8_t version = 0x1;
+ std::uint8_t version = 0x1;
*buf = "FLV";
*buf += version;
*buf += type;
- boost::uint32_t size = htonl(0x9);
- buf->append((boost::uint8_t *)&size, sizeof(boost::uint32_t));
+ std::uint32_t size = htonl(0x9);
+ buf->append((std::uint8_t *)&size, sizeof(std::uint32_t));
return buf;
}
// Decode a Buffer into a header
-boost::shared_ptr<Flv::flv_header_t>
-Flv::decodeHeader(boost::uint8_t *data)
+std::shared_ptr<Flv::flv_header_t>
+Flv::decodeHeader(std::uint8_t *data)
{
// GNASH_REPORT_FUNCTION;
- boost::shared_ptr<flv_header_t> header(new flv_header_t);
+ std::shared_ptr<flv_header_t> header(new flv_header_t);
memcpy(header.get(), data, sizeof(flv_header_t));
// std::copy(buf->begin(), buf->begin() + sizeof(flv_header_t), header.get());
@@ -113,9 +112,9 @@ Flv::decodeHeader(boost::uint8_t *data)
// Be lazy, as head_size is an array of 4 bytes, and not an integer in the data
// structure. This is to get around possible padding done to the data structure
// done by some compilers.
- boost::uint32_t size = *(reinterpret_cast<boost::uint32_t *>(header->head_size));
+ std::uint32_t size = *(reinterpret_cast<std::uint32_t *>(header->head_size));
// The header size is big endian
- swapBytes(header->head_size, sizeof(boost::uint32_t));
+ swapBytes(header->head_size, sizeof(std::uint32_t));
// The header size is always 9, guess it could change some day in the far future, so
// we should use it.
@@ -128,19 +127,19 @@ Flv::decodeHeader(boost::uint8_t *data)
}
// Decode a MetaData object, which is after the header, but before all the tags
-boost::shared_ptr<cygnal::Element>
-Flv::decodeMetaData(boost::shared_ptr<cygnal::Buffer> buf)
+std::shared_ptr<cygnal::Element>
+Flv::decodeMetaData(std::shared_ptr<cygnal::Buffer> buf)
{
return decodeMetaData(buf->reference(), buf->size());
}
-boost::shared_ptr<cygnal::Element>
-Flv::decodeMetaData(boost::uint8_t *buf, size_t size)
+std::shared_ptr<cygnal::Element>
+Flv::decodeMetaData(std::uint8_t *buf, size_t size)
{
// GNASH_REPORT_FUNCTION;
AMF amf;
- boost::uint8_t *ptr = buf;
- boost::uint8_t *tooFar = ptr + size;
+ std::uint8_t *ptr = buf;
+ std::uint8_t *tooFar = ptr + size;
// Extract the onMetaData object name
// In disk files, I always see the 0x2 type field for
@@ -150,13 +149,13 @@ Flv::decodeMetaData(boost::uint8_t *buf, size_t size)
ptr++;
}
- boost::uint16_t length;
- length = ntohs((*(boost::uint16_t *)ptr) & 0xffff);
+ std::uint16_t length;
+ length = ntohs((*(std::uint16_t *)ptr) & 0xffff);
if (length >= SANE_STR_SIZE) {
log_error(_("%d bytes for a string is over the safe limit of %d"),
length, SANE_STR_SIZE);
}
- ptr += sizeof(boost::uint16_t);
+ ptr += sizeof(std::uint16_t);
std::string name(reinterpret_cast<const char *>(ptr), length);
ptr += length;
@@ -170,11 +169,11 @@ Flv::decodeMetaData(boost::uint8_t *buf, size_t size)
return _metadata;
}
-boost::shared_ptr<Flv::flv_audio_t>
-Flv::decodeAudioData(boost::uint8_t byte)
+std::shared_ptr<Flv::flv_audio_t>
+Flv::decodeAudioData(std::uint8_t byte)
{
// GNASH_REPORT_FUNCTION;
- boost::shared_ptr<flv_audio_t> audio(new flv_audio_t);
+ std::shared_ptr<flv_audio_t> audio(new flv_audio_t);
// memset(audio->reference(), 0, sizeof(flv_audio_t));
// Get the sound type
@@ -229,11 +228,11 @@ Flv::decodeAudioData(boost::uint8_t byte)
return audio;
}
-boost::shared_ptr<Flv::flv_video_t>
-Flv::decodeVideoData(boost::uint8_t byte)
+std::shared_ptr<Flv::flv_video_t>
+Flv::decodeVideoData(std::uint8_t byte)
{
// GNASH_REPORT_FUNCTION;
- boost::shared_ptr<flv_video_t> video(new flv_video_t);
+ std::shared_ptr<flv_video_t> video(new flv_video_t);
// memset(video, 0, sizeof(flv_video_t));
// Get the codecID codecID
@@ -271,16 +270,16 @@ Flv::decodeVideoData(boost::uint8_t byte)
}
// Convert a 24 bit integer to a 32 bit one so we can use it.
-boost::uint32_t
-Flv::convert24(boost::uint8_t *num)
+std::uint32_t
+Flv::convert24(std::uint8_t *num)
{
// GNASH_REPORT_FUNCTION;
- boost::uint32_t bodysize = 0;
+ std::uint32_t bodysize = 0;
#ifdef BOOST_BIG_ENDIAN
- bodysize = *(reinterpret_cast<boost::uint32_t *>(num)) >> 8;
+ bodysize = *(reinterpret_cast<std::uint32_t *>(num)) >> 8;
#else
- bodysize = *(reinterpret_cast<boost::uint32_t *>(num)) << 8;
+ bodysize = *(reinterpret_cast<std::uint32_t *>(num)) << 8;
bodysize = ntohl(bodysize);
#endif
@@ -288,12 +287,12 @@ Flv::convert24(boost::uint8_t *num)
}
// Decode the tag header
-boost::shared_ptr<Flv::flv_tag_t>
-Flv::decodeTagHeader(boost::uint8_t *buf)
+std::shared_ptr<Flv::flv_tag_t>
+Flv::decodeTagHeader(std::uint8_t *buf)
{
// GNASH_REPORT_FUNCTION;
flv_tag_t *data = reinterpret_cast<flv_tag_t *>(buf);
- boost::shared_ptr<flv_tag_t> tag(new flv_tag_t);
+ std::shared_ptr<flv_tag_t> tag(new flv_tag_t);
memcpy(tag.get(), data, sizeof(flv_tag_t));
// std::copy(buf->begin(), buf->end(), tag);
@@ -306,21 +305,21 @@ Flv::decodeTagHeader(boost::uint8_t *buf)
return tag;
}
-boost::shared_ptr<cygnal::Element>
+std::shared_ptr<cygnal::Element>
Flv::findProperty(const std::string &name)
{
if (_properties.size() > 0) {
- std::vector<boost::shared_ptr<cygnal::Element> >::iterator ait;
+ std::vector<std::shared_ptr<cygnal::Element> >::iterator ait;
// cerr << "# of Properties in object: " << _properties.size() << endl;
for (ait = _properties.begin(); ait != _properties.end(); ++ait) {
- boost::shared_ptr<cygnal::Element> el = (*(ait));
+ std::shared_ptr<cygnal::Element> el = (*(ait));
if (el->getName() == name) {
return el;
}
// el->dump();
}
}
- boost::shared_ptr<cygnal::Element> el;
+ std::shared_ptr<cygnal::Element> el;
return el;
}
@@ -329,11 +328,11 @@ Flv::dump()
{
// GNASH_REPORT_FUNCTION;
if (_properties.size() > 0) {
- std::vector<boost::shared_ptr<cygnal::Element> >::iterator ait;
+ std::vector<std::shared_ptr<cygnal::Element> >::iterator ait;
std::cerr << "# of Properties in object: " << _properties.size()
<< std::endl;
for (ait = _properties.begin(); ait != _properties.end(); ++ait) {
- boost::shared_ptr<cygnal::Element> el = (*(ait));
+ std::shared_ptr<cygnal::Element> el = (*(ait));
// an onMetaData packet of an FLV stream only contains number or
// boolean bydefault
if (el->getType() == Element::NUMBER_AMF0) {
diff --git a/cygnal/libamf/flv.h b/cygnal/libamf/flv.h
index 01d9b8d..de845af 100644
--- a/cygnal/libamf/flv.h
+++ b/cygnal/libamf/flv.h
@@ -22,8 +22,7 @@
#include <vector>
#include <string>
#include <cstring>
-#include <boost/cstdint.hpp> // for boost::?int??_t
-#include <boost/shared_ptr.hpp>
+#include <cstdint> // for boost::?int??_t
//#include "buffer.h"
#include "element.h"
@@ -40,7 +39,7 @@ namespace cygnal
const size_t FLV_HEADER_SIZE = 0x9;
/// \brief The maximum value that can be held in a 32 bit word.
-const boost::uint32_t FLV_MAX_LENGTH = 0xffffff;
+const std::uint32_t FLV_MAX_LENGTH = 0xffffff;
/// \class Flv
/// This class abstracts an FLV file into something usable by Gnash.
@@ -48,7 +47,7 @@ class DSOEXPORT Flv {
public:
/// \typedef previous_size_t
/// This is the size in bytes of the previous MetaTag.
- typedef boost::uint32_t previous_size_t;
+ typedef std::uint32_t previous_size_t;
/// \enum Flv::flv_type_e
/// The two flv file types
typedef enum {
@@ -144,19 +143,19 @@ class DSOEXPORT Flv {
/// \struct Flv::flv_header_t.
typedef struct {
- boost::uint8_t sig[3]; // always "FLV"
- boost::uint8_t version; // version, always seems to be 1
- boost::uint8_t type; // Bitmask: 0x4 for audio, 0x1 for video
- boost::uint8_t head_size[4];// size of header, always seems to be 9
+ std::uint8_t sig[3]; // always "FLV"
+ std::uint8_t version; // version, always seems to be 1
+ std::uint8_t type; // Bitmask: 0x4 for audio, 0x1 for video
+ std::uint8_t head_size[4];// size of header, always seems to be 9
} flv_header_t;
/// \struct Flv::flv_tag_t.
typedef struct {
- boost::uint8_t type; // the type. audio, video, or meta
- boost::uint8_t bodysize[3]; // body size (tag size - sizeof(flv_tag_t))
- boost::uint8_t timestamp[3]; // timestamp in milliseconds
- boost::uint8_t extended; // extended timestamp
- boost::uint8_t streamid[3]; // always 0
+ std::uint8_t type; // the type. audio, video, or meta
+ std::uint8_t bodysize[3]; // body size (tag size - sizeof(flv_tag_t))
+ std::uint8_t timestamp[3]; // timestamp in milliseconds
+ std::uint8_t extended; // extended timestamp
+ std::uint8_t streamid[3]; // always 0
} flv_tag_t;
Flv();
@@ -167,15 +166,15 @@ class DSOEXPORT Flv {
/// @param type The data type for the header
///
/// @return a smart pointer to a Buffer containing the data in big endian format.
- boost::shared_ptr<cygnal::Buffer> encodeHeader(boost::uint8_t type);
+ std::shared_ptr<cygnal::Buffer> encodeHeader(std::uint8_t type);
/// \brief Decode a Buffer into a header
///
/// @param buf a smart pointer to a Buffer containing the data.
///
/// @return a smart pointer to data structure that contains the data.
- boost::shared_ptr<flv_header_t> decodeHeader(boost::shared_ptr<cygnal::Buffer> buf) { return decodeHeader(buf->reference()); };
- boost::shared_ptr<flv_header_t> decodeHeader(boost::uint8_t *data);
+ std::shared_ptr<flv_header_t> decodeHeader(std::shared_ptr<cygnal::Buffer> buf) { return decodeHeader(buf->reference()); };
+ std::shared_ptr<flv_header_t> decodeHeader(std::uint8_t *data);
/// \brief Decode a MetaData object.
/// This is after the header, but before all the other tags usually
@@ -183,7 +182,7 @@ class DSOEXPORT Flv {
/// @param buf a smart pointer to a Buffer containing the data.
///
/// @return a smart pointer to an Element that contains the data.
- boost::shared_ptr<cygnal::Element> decodeMetaData(boost::shared_ptr<cygnal::Buffer> buf);
+ std::shared_ptr<cygnal::Element> decodeMetaData(std::shared_ptr<cygnal::Buffer> buf);
/// \brief Decode a MetaData object.
/// This is after the header, but before all the other tags usually
@@ -193,29 +192,29 @@ class DSOEXPORT Flv {
/// @param size The size of the data in bytes
///
/// @return a smart pointer to an Element that contains the data.
- boost::shared_ptr<cygnal::Element> decodeMetaData(boost::uint8_t *data, size_t size);
+ std::shared_ptr<cygnal::Element> decodeMetaData(std::uint8_t *data, size_t size);
/// \brief Decode an Audio object.
///
/// @param flags The data to deserialize.
///
/// @return a smart pointer to an audio data structure that contains the data.
- boost::shared_ptr<flv_audio_t> decodeAudioData(boost::uint8_t flags);
+ std::shared_ptr<flv_audio_t> decodeAudioData(std::uint8_t flags);
/// \brief Decode an Video object.
///
/// @param flags The data to deserialize.
///
/// @return a smart pointer to an video data structure that contains the data.
- boost::shared_ptr<flv_video_t> decodeVideoData(boost::uint8_t flags);
+ std::shared_ptr<flv_video_t> decodeVideoData(std::uint8_t flags);
/// \brief Decode an MetaData object.
///
/// @param flags The data to deserialize.
///
/// @return a smart pointer to an video data structure that contains the data.
- boost::shared_ptr<flv_tag_t> decodeTagHeader(boost::shared_ptr<cygnal::Buffer> &buf) { return decodeTagHeader(buf->reference()); };
- boost::shared_ptr<flv_tag_t> decodeTagHeader(boost::uint8_t *data);
+ std::shared_ptr<flv_tag_t> decodeTagHeader(std::shared_ptr<cygnal::Buffer> &buf) { return decodeTagHeader(buf->reference()); };
+ std::shared_ptr<flv_tag_t> decodeTagHeader(std::uint8_t *data);
/// \brief Find the named property for this Object.
///
@@ -223,20 +222,20 @@ class DSOEXPORT Flv {
/// search for.
///
/// @return A smart pointer to the Element for this property.
- boost::shared_ptr<cygnal::Element> findProperty(const std::string &name);
+ std::shared_ptr<cygnal::Element> findProperty(const std::string &name);
/// \brief Set all the properties from an array of Element classes.
///
/// @param array
///
/// @return nothing
- void setProperties(std::vector<boost::shared_ptr<cygnal::Element> > array)
+ void setProperties(std::vector<std::shared_ptr<cygnal::Element> > array)
{ _properties = array; };
/// \brief Convert a 24 bit integer to a 32 bit one so we can use it.
///
/// @return An unsigned 32 bit integer
- boost::uint32_t convert24(boost::uint8_t *);
+ std::uint32_t convert24(std::uint8_t *);
/// \brief Dump the internal data of this class in a human readable form.
/// @remarks This should only be used for debugging purposes.
@@ -247,7 +246,7 @@ class DSOEXPORT Flv {
/// A stored copy of the Flv file header.
flv_header_t _header;
-// boost::uint32_t _previous_tag_size;
+// std::uint32_t _previous_tag_size;
/// \var Flv::_tag
/// A stored copy of the main onMetaTag data. Althought
/// there may be more than one MetaTag in an FLV, I've
@@ -258,12 +257,12 @@ class DSOEXPORT Flv {
/// \var Flv::_properties
/// The array of properties for this Flv file, which is
/// populated by the data from the first onMetaTag block.
- std::vector<boost::shared_ptr<cygnal::Element> > _properties;
+ std::vector<std::shared_ptr<cygnal::Element> > _properties;
/// \var _metadata
/// The data contained in the first onMetaData tag from
/// the FLV file.
- boost::shared_ptr<cygnal::Element> _metadata;
+ std::shared_ptr<cygnal::Element> _metadata;
}; // end of class definition
diff --git a/cygnal/libamf/lcshm.cpp b/cygnal/libamf/lcshm.cpp
index 0a5d6f8..9d63490 100644
--- a/cygnal/libamf/lcshm.cpp
+++ b/cygnal/libamf/lcshm.cpp
@@ -21,8 +21,7 @@
#include <vector>
#include <string>
#include <cstring>
-#include <boost/cstdint.hpp>
-#include <boost/shared_ptr.hpp>
+#include <cstdint>
#include "log.h"
#include "buffer.h"
@@ -54,10 +53,12 @@ using gnash::log_error;
namespace cygnal
{
+#if 0
// The maximum
// although a bool is one byte, it appears to be a short in AMF,
// plus the type byte.
const int AMF_BOOLEAN_SIZE = 3;
+#endif
/// \var LC_HEADER_SIZE
/// The header size for a memory segment.
@@ -100,7 +101,7 @@ const int LC_LISTENERS_START = MAX_LC_HEADER_SIZE + LC_HEADER_SIZE;
LcShm::LcShm()
:
SharedMem(64528),
- _baseaddr(0)
+ _baseaddr(nullptr)
{
// GNASH_REPORT_FUNCTION;
}
@@ -108,7 +109,7 @@ LcShm::LcShm()
/// \brief Construct an initialized shared memory segment.
///
/// @param addr The address to use for the memory segment.
-LcShm::LcShm(boost::uint8_t *addr)
+LcShm::LcShm(std::uint8_t *addr)
:
SharedMem(64528)
{
@@ -137,7 +138,7 @@ LcShm::~LcShm()
/// \brief Construct a block of Listeners.
/// This constructs an uninitialized Listener block.
Listener::Listener()
- : _baseaddr(0)
+ : _baseaddr(nullptr)
{
// GNASH_REPORT_FUNCTION;
}
@@ -146,7 +147,7 @@ Listener::Listener()
///
/// @param baseaddr The address to use for the block of
/// Listeners.
-Listener::Listener(boost::uint8_t *x)
+Listener::Listener(std::uint8_t *x)
{
// GNASH_REPORT_FUNCTION;
_baseaddr = x;
@@ -169,7 +170,7 @@ Listener::findListener(const string &name)
{
// GNASH_REPORT_FUNCTION;
- boost::uint8_t *addr = _baseaddr + LC_LISTENERS_START;
+ std::uint8_t *addr = _baseaddr + LC_LISTENERS_START;
char *item = reinterpret_cast<char *>(addr);
// Walk through the list to the end
while (*item != 0) {
@@ -195,7 +196,7 @@ Listener::addListener(const string &name)
{
GNASH_REPORT_FUNCTION;
- boost::uint8_t *addr = _baseaddr + LC_LISTENERS_START;
+ std::uint8_t *addr = _baseaddr + LC_LISTENERS_START;
char *item = reinterpret_cast<char *>(addr);
if (findListener(name)) {
@@ -209,7 +210,7 @@ Listener::addListener(const string &name)
}
// Add ourselves to the list
- if (memcpy(item, name.c_str(), name.size()) == 0) {
+ if (memcpy(item, name.c_str(), name.size()) == nullptr) {
return false;
}
@@ -253,7 +254,7 @@ Listener::removeListener(const string &name)
{
GNASH_REPORT_FUNCTION;
- boost::uint8_t *addr = _baseaddr + LC_LISTENERS_START;
+ std::uint8_t *addr = _baseaddr + LC_LISTENERS_START;
int len = 0;
int dest= 0;
@@ -299,13 +300,13 @@ 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> );
- if (_baseaddr != 0) {
- boost::uint8_t *addr = _baseaddr + LC_LISTENERS_START;
+ std::unique_ptr< vector<string> > listeners ( new vector<string> );
+ if (_baseaddr != nullptr) {
+ std::uint8_t *addr = _baseaddr + LC_LISTENERS_START;
const char *item = reinterpret_cast<const char *>(addr);
while (*item != 0) {
@@ -362,15 +363,15 @@ LcShm::close()
/// @return A real pointer to the data after the headers has been parsed.
///
/// @remarks May throw a ParserException
-boost::uint8_t *
-LcShm::parseHeader(boost::uint8_t *data, boost::uint8_t* tooFar)
+std::uint8_t *
+LcShm::parseHeader(std::uint8_t *data, std::uint8_t* tooFar)
{
// GNASH_REPORT_FUNCTION;
- boost::uint8_t *ptr = data;
+ std::uint8_t *ptr = data;
- if (data == 0) {
+ if (data == nullptr) {
log_debug(_("No data pointer to parse!"));
- return 0;
+ return nullptr;
}
#ifndef GNASH_TRUST_AMF
@@ -386,15 +387,15 @@ LcShm::parseHeader(boost::uint8_t *data, boost::uint8_t* tooFar)
ptr += LC_HEADER_SIZE;
AMF amf;
- boost::shared_ptr<Element> el = amf.extractAMF(ptr, tooFar);
- if (el == 0) {
+ std::shared_ptr<Element> el = amf.extractAMF(ptr, tooFar);
+ if (el == nullptr) {
log_debug(_("Didn't extract an element from the byte stream!"));
- return 0;
+ return nullptr;
}
_object.connection_name = el->to_string();
el = amf.extractAMF(ptr, tooFar);
- if (ptr != 0) {
+ if (ptr != nullptr) {
_object.hostname = el->to_string();
}
@@ -433,22 +434,22 @@ LcShm::parseHeader(boost::uint8_t *data, boost::uint8_t* tooFar)
/// @param domain The domain the hostname is in.
///
/// @return A real pointer to a header for a memory segment.
-boost::uint8_t *
+std::uint8_t *
LcShm::formatHeader(const std::string &con, const std::string &host, bool /* domain */ )
{
// GNASH_REPORT_FUNCTION;
-// boost::uint8_t *ptr = data + LC_HEADER_SIZE;
+// std::uint8_t *ptr = data + LC_HEADER_SIZE;
int size = con.size() + host.size() + 9;
// Buffer *buf;
// Si:
// Assign the value of header and ptr directly.
-// boost::uint8_t *header = new boost::uint8_t[size + 1];
-// boost::uint8_t *ptr = header;
+// std::uint8_t *header = new std::uint8_t[size + 1];
+// std::uint8_t *ptr = header;
- boost::uint8_t *header = Listener::getBaseAddress();
- boost::uint8_t *ptr_FH = Listener::getBaseAddress();
+ std::uint8_t *header = Listener::getBaseAddress();
+ std::uint8_t *ptr_FH = Listener::getBaseAddress();
// log_debug("Base address in 'formatHeader' is: 0x%x, 0x%x",(unsigned int) header, (unsigned int) ptr_FH);
// This is the initial 16 bytes of the header
@@ -465,17 +466,17 @@ LcShm::formatHeader(const std::string &con, const std::string &host, bool /* dom
// Make sure it is always right. Probably wrong.
// Which is then always followed by 3 AMF objects.
- boost::shared_ptr<cygnal::Buffer> buf1 = AMF::encodeString(con);
+ std::shared_ptr<cygnal::Buffer> buf1 = AMF::encodeString(con);
memcpy(ptr_FH, buf1->begin(), buf1->size());
ptr_FH += buf1->size();
const std::string protocol="localhost";
// This could equal to the domain name.
- boost::shared_ptr<cygnal::Buffer> buf2 = AMF::encodeString(protocol);
+ std::shared_ptr<cygnal::Buffer> buf2 = AMF::encodeString(protocol);
memcpy(ptr_FH, buf2->begin(), buf2->size());
ptr_FH += buf2->size();
- boost::shared_ptr<cygnal::Buffer> buf3 = AMF::encodeString(host);
+ std::shared_ptr<cygnal::Buffer> buf3 = AMF::encodeString(host);
memcpy(ptr_FH, buf3->begin(), buf3->size());
ptr_FH += buf3->size();
@@ -516,19 +517,19 @@ LcShm::connect(const string& names)
return false;
}
- if (SharedMem::begin() <= static_cast<unsigned char *>(0)) {
+ if (SharedMem::begin() <= static_cast<unsigned char *>(nullptr)) {
log_error(_("Failed to open shared memory segment: \"%s\""), names.c_str());
return false;
}
- boost::uint8_t* baseAddress = reinterpret_cast<boost::uint8_t *>(SharedMem::begin());
+ std::uint8_t* baseAddress = reinterpret_cast<std::uint8_t *>(SharedMem::begin());
- boost::uint8_t* tooFar = SharedMem::end();
+ std::uint8_t* tooFar = SharedMem::end();
Listener::setBaseAddress(baseAddress);
_baseaddr = baseAddress;
parseHeader(baseAddress, tooFar);
// log_debug("Base address in 'connect' is: 0x%x, 0x%x",(unsigned int) SharedMem::begin(), (unsigned int) _baseaddr);
-// vector<boost::shared_ptr<Element> > ellist = parseBody(ptr);
+// vector<std::shared_ptr<Element> > ellist = parseBody(ptr);
// log_debug("Base address is: 0x%x, 0x%x",
// (unsigned int)Listener::getBaseAddress(), (unsigned int)_baseaddr);
@@ -550,24 +551,24 @@ LcShm::connect(const string& names)
bool
LcShm::connect(key_t key)
{
- boost::mutex::scoped_lock lock(_localconnection_mutex);
- // GNASH_REPORT_FUNCTION;
+ std::lock_guard<std::mutex> lock(_localconnection_mutex);
+ // GNASH_REPORT_FUNCTION;
if (SharedMem::attach() == false) {
return false;
}
- if (SharedMem::begin() <= static_cast<unsigned char *>(0)) {
+ if (SharedMem::begin() <= static_cast<unsigned char *>(nullptr)) {
log_error(_("Failed to open shared memory segment: 0x%x"), key);
return false;
}
- boost::uint8_t* baseAddress = reinterpret_cast<boost::uint8_t *>(SharedMem::begin());
- boost::uint8_t* tooFar = SharedMem::end();
+ std::uint8_t* baseAddress = reinterpret_cast<std::uint8_t *>(SharedMem::begin());
+ std::uint8_t* tooFar = SharedMem::end();
Listener::setBaseAddress(baseAddress);
_baseaddr = baseAddress;
parseHeader(baseAddress, tooFar);
-// vector<boost::shared_ptr<Element> > ellist = parseBody(ptr);
+// vector<std::shared_ptr<Element> > ellist = parseBody(ptr);
// log_debug("Base address is: 0x%x, 0x%x",
// (unsigned int)Listener::getBaseAddress(), (unsigned int)_baseaddr);
@@ -595,15 +596,15 @@ LcShm::send(const string& name , const string& domainname ,
vector<cygnal::Element* >& data )
{
//GNASH_REPORT_FUNCTION;
- boost::mutex::scoped_lock lock(_localconnection_mutex);
+ std::lock_guard<std::mutex> lock(_localconnection_mutex);
std::vector<cygnal::Element* >::iterator iter;
if (!Listener::getBaseAddress()) return;
//The base address
- boost::uint8_t *baseptr = Listener::getBaseAddress();
- boost::uint8_t *ptr = baseptr;
+ std::uint8_t *baseptr = Listener::getBaseAddress();
+ std::uint8_t *ptr = baseptr;
// Compute the time
// Please check before use.
@@ -616,7 +617,7 @@ LcShm::send(const string& name , const string& domainname ,
int message_size=0;
if (data.size()!=0){
for(iter = data.begin(); iter != data.end(); ++iter){
- boost::shared_ptr<Buffer> buf = AMF::encodeElement(*iter);
+ std::shared_ptr<Buffer> buf = AMF::encodeElement(*iter);
message_size+=buf->size();
}
}
@@ -642,16 +643,16 @@ LcShm::send(const string& name , const string& domainname ,
// Make sure it is right later.
// Which is then always followed by 3 AMF objects.
- boost::shared_ptr<cygnal::Buffer> buf1 = AMF::encodeString(name);
+ std::shared_ptr<cygnal::Buffer> buf1 = AMF::encodeString(name);
memcpy(ptr, buf1->begin(), buf1->size());
ptr += buf1->size();
const std::string protocol="localhostf";
- boost::shared_ptr<cygnal::Buffer> buf2 = AMF::encodeString(protocol);
+ std::shared_ptr<cygnal::Buffer> buf2 = AMF::encodeString(protocol);
memcpy(ptr, buf2->begin(), buf2->size());
ptr += buf2->size();
- boost::shared_ptr<cygnal::Buffer> buf3 = AMF::encodeString(domainname);
+ std::shared_ptr<cygnal::Buffer> buf3 = AMF::encodeString(domainname);
memcpy(ptr, buf3->begin(), buf3->size());
ptr += buf3->size();
@@ -661,7 +662,7 @@ LcShm::send(const string& name , const string& domainname ,
if (data.size()==0){
for(iter = data.begin(); iter != data.end(); ++iter){
// temporary buf for element
- boost::shared_ptr<Buffer> buf = AMF::encodeElement(*iter);
+ std::shared_ptr<Buffer> buf = AMF::encodeElement(*iter);
memcpy(ptr, buf->begin(), buf->size() );
ptr+= buf->size();
}
@@ -670,7 +671,7 @@ LcShm::send(const string& name , const string& domainname ,
// Update the connection name
#if 0
-// boost::uint8_t *tmp = AMF::encodeElement(name.c_str());
+// std::uint8_t *tmp = AMF::encodeElement(name.c_str());
// memcpy(ptr, tmp, name.size());
// ptr += name.size() + AMF_HEADER_SIZE;
// delete[] tmp;
@@ -680,7 +681,7 @@ LcShm::send(const string& name , const string& domainname ,
// ptr += domainname.size() + AMF_HEADER_SIZE;
// ptr += LC_HEADER_SIZE;
-// boost::uint8_t *x = ptr; // just for debugging from gdb. temporary
+// std::uint8_t *x = ptr; // just for debugging from gdb. temporary
// This is the initial 16 bytes of the header
memset(ptr, 0, LC_HEADER_SIZE + 200);
@@ -713,8 +714,8 @@ LcShm::send(const string& name , const string& domainname ,
// ptr += AMF_BOOLEAN_SIZE;
- vector<boost::uint8_t> *vec = AMF::encodeElement(data);
- vector<boost::uint8_t>::iterator vit;
+ vector<std::uint8_t> *vec = AMF::encodeElement(data);
+ vector<std::uint8_t>::iterator vit;
// Can't do a memcpy with a std::vector
// log_debug("Number of bytes in the vector: %x", vec->size());
for (vit = vec->begin(); vit != vec->end(); vit++) {
@@ -748,7 +749,7 @@ LcShm::send(const string& name , const string& domainname ,
///
/// @return nothing.
/// We may only need a connection name for the receive function.
-///void recv(std::string &name, std::string &dataname, boost::shared_ptr<cygnal::Element> data)
+///void recv(std::string &name, std::string &dataname, std::shared_ptr<cygnal::Element> data)
//{
//GNASH_REPORT_FUNCTION;
@@ -757,15 +758,15 @@ LcShm::send(const string& name , const string& domainname ,
/// TODO:
/// This function should at do the following work:
/// 1: Lock the shared memory
-/// boost::mutex::scoped_lock lock(_localconnection_mutex);
+/// std::lock_guard<std::mutex> lock(_localconnection_mutex);
/// 2: Check if the current object is the listener
/// if findListener()
/// Make sure the object is the listener for certain connection name
/// 2: Parse the header
-/// boost::uint8_t *parseHeader(boost::uint8_t *data, boost::uint8_t* tooFar);
+/// std::uint8_t *parseHeader(std::uint8_t *data, std::uint8_t* tooFar);
/// This should be easy if parseHeader function has been finished.
/// 3: Parse the body of the shared memory
-/// std::vector<boost::shared_ptr<cygnal::Element> > parseBody(boost::uint8_t *data);
+/// std::vector<std::shared_ptr<cygnal::Element> > parseBody(std::uint8_t *data);
/// This should be easy if parseHeader function has been finished.
/// 4: The listened should implement these commands somehow automatically .
/// Handler?
@@ -787,15 +788,15 @@ LcShm::dump()
cerr << "Connection Name:\t" << _object.connection_name << endl;
cerr << "Hostname Name:\t\t" << _object.hostname << endl;
cerr << "Domain Allowed:\t\t" << ((_object.domain) ? "true" : "false") << endl;
- vector<boost::shared_ptr<Element> >::iterator ait;
+ vector<std::shared_ptr<Element> >::iterator ait;
cerr << "# of Elements in file: " << _amfobjs.size() << endl;
for (ait = _amfobjs.begin(); ait != _amfobjs.end(); ++ait) {
- boost::shared_ptr<Element> el = (*(ait));
+ std::shared_ptr<Element> el = (*(ait));
el->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..e3583dd 100644
--- a/cygnal/libamf/lcshm.h
+++ b/cygnal/libamf/lcshm.h
@@ -19,10 +19,10 @@
#ifndef __LCSHM_H__
#define __LCSHM_H__
-#include <boost/cstdint.hpp>
-#include <boost/shared_ptr.hpp>
+#include <cstdint>
#include <string>
#include <vector>
+#include <mutex>
#include "amf.h"
#include "element.h"
@@ -50,7 +50,7 @@ public:
///
/// @param baseaddr The address to use for the block of
/// Listeners.
- Listener(boost::uint8_t *baseaddr);
+ Listener(std::uint8_t *baseaddr);
/// \brief Delete the Listener block
~Listener();
@@ -83,20 +83,20 @@ 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.
///
/// @param addr The address for the block of Listeners.
///
/// @return nothing.
- void setBaseAddress(boost::uint8_t *addr) { _baseaddr = addr; };
+ void setBaseAddress(std::uint8_t *addr) { _baseaddr = addr; };
/// \brief Set the base address for the block of Listeners.
///
/// @return A real pointer to the base address of the block of
/// Listeners in the memory segment.
- boost::uint8_t *getBaseAddress() { return _baseaddr; };
+ std::uint8_t *getBaseAddress() { return _baseaddr; };
protected:
/// \var LcShm::_name
@@ -105,7 +105,7 @@ protected:
/// \var LcShm::_baseaddr
/// The base address of the block of Listeners.
- boost::uint8_t *_baseaddr;
+ std::uint8_t *_baseaddr;
// std::vector<std::string> _listeners;
};
@@ -117,11 +117,11 @@ public:
/// \struct LcShm::lc_header_t
/// Hold the data in the memory segment's header.
typedef struct {
- boost::uint32_t unknown1;
- boost::uint32_t unknown2;
- boost::uint32_t timestamp; // number of milliseconds that have
+ std::uint32_t unknown1;
+ std::uint32_t unknown2;
+ std::uint32_t timestamp; // number of milliseconds that have
// elapsed since the system was started
- boost::uint32_t length;
+ std::uint32_t length;
} lc_header_t;
/// \struct LcShm::lc_message_t
/// Hold the data for a single message in the memory segment.
@@ -129,7 +129,7 @@ public:
std::string connection_name;
std::string protocol;
std::string method_name;
- std::vector<boost::shared_ptr<cygnal::Element> > data; // this can be any AMF data type
+ std::vector<std::shared_ptr<cygnal::Element> > data; // this can be any AMF data type
} lc_message_t;
/// \struct LcShm::lc_object.t
/// Hold the data for each connection to the memory segment.
@@ -150,7 +150,7 @@ public:
/// \brief Construct an initialized shared memory segment.
///
/// @param baseaddr The address to use for the memory segment.
- LcShm(boost::uint8_t *baseaddr);
+ LcShm(std::uint8_t *baseaddr);
/// \brief Construct an initialized shared memory segment.
///
@@ -203,7 +203,7 @@ public:
///
/// @return nothing.
/// We may only need a connection name for the receive function.
- void recv(std::string &name, std::string &dataname, boost::shared_ptr<cygnal::Element> data);
+ void recv(std::string &name, std::string &dataname, std::shared_ptr<cygnal::Element> data);
/// \brief Parse the body of a memory segment.
///
@@ -211,7 +211,7 @@ public:
///
/// @return A vector of smart pointers to the AMF0 Elements in
/// this memopry segment.
- std::vector<boost::shared_ptr<cygnal::Element> > parseBody(boost::uint8_t *data);
+ std::vector<std::shared_ptr<cygnal::Element> > parseBody(std::uint8_t *data);
/// \brief Parse the header of the memory segment.
///
@@ -223,7 +223,7 @@ public:
/// @return A real pointer to the data after the headers has been parsed.
///
/// @remarks May throw a ParserException
- boost::uint8_t *parseHeader(boost::uint8_t *data, boost::uint8_t* tooFar);
+ std::uint8_t *parseHeader(std::uint8_t *data, std::uint8_t* tooFar);
/// \brief Format the header for the memory segment.
///
@@ -234,7 +234,7 @@ public:
/// @param domain The domain the hostname is in.
///
/// @return A real pointer to a header for a memory segment.
- boost::uint8_t *formatHeader(const std::string &con, const std::string &host, bool domain);
+ std::uint8_t *formatHeader(const std::string &con, const std::string &host, bool domain);
/// \brief Set the name for this connection to the memory segment.
///
@@ -253,7 +253,7 @@ public:
/// \brief Add an AMF0 Element array of data for this memory segment.
///
/// @return
- void addObject(boost::shared_ptr<cygnal::Element> el) { _amfobjs.push_back(el); };
+ void addObject(std::shared_ptr<cygnal::Element> el) { _amfobjs.push_back(el); };
/// \brief Get the number of AMF0 Elements stored in this class.
///
@@ -263,14 +263,14 @@ public:
/// \brief Get the array of AMF0 objects stored by this class.
///
/// @return A vector of smart pointers to AMF0 Elements.
- std::vector<boost::shared_ptr<cygnal::Element> > getElements() { return _amfobjs; };
+ std::vector<std::shared_ptr<cygnal::Element> > getElements() { return _amfobjs; };
/// \brief Set the base address to be used for the memory segment.
///
/// @param addr The address to use for opening the memory segment.
///
/// @return nothing.
- void setBaseAddr(boost::uint8_t *addr) { _baseaddr = addr; };
+ void setBaseAddr(std::uint8_t *addr) { _baseaddr = addr; };
/// \brief Dump the internal data of this class in a human readable form.
/// @remarks This should only be used for debugging purposes.
@@ -284,7 +284,7 @@ public:
private:
/// \var LcShm::_baseaddr.
/// The base address of the memory segment.
- boost::uint8_t *_baseaddr;
+ std::uint8_t *_baseaddr;
/// \var LcShm::_header
/// A stored copy of the header for the memory segment.
@@ -297,11 +297,11 @@ private:
/// \var LcShm::_amfobjs
/// A vector of AMF0 Elements in the memory segment.
/// Is this necessary if we have put all the things to pass in the memory?
- std::vector<boost::shared_ptr<cygnal::Element> > _amfobjs;
+ std::vector<std::shared_ptr<cygnal::Element> > _amfobjs;
///Si added
/// This is the mutex that controls access to the sharedmemory
- boost::mutex _localconnection_mutex;
+ std::mutex _localconnection_mutex;
///Si
///Moved from LocalConnectoin class to here.
diff --git a/cygnal/libamf/sol.cpp b/cygnal/libamf/sol.cpp
index e591de8..4b7be14 100644
--- a/cygnal/libamf/sol.cpp
+++ b/cygnal/libamf/sol.cpp
@@ -25,9 +25,7 @@
#include "log.h"
#include "GnashException.h"
-#include <boost/scoped_array.hpp>
-#include <boost/cstdint.hpp>
-#include <boost/shared_ptr.hpp>
+#include <cstdint>
#include <cerrno>
#include <string>
#include <vector>
@@ -51,10 +49,10 @@ using gnash::log_error;
// Object Name - variable (the name of the object as an AMF encoded string)
// Padding - 4 bytes
// After this is a series of AMF objects
-const boost::uint16_t SOL_MAGIC = 0x00bf; // is in big-endian format, this is the first
+const std::uint16_t SOL_MAGIC = 0x00bf; // is in big-endian format, this is the first
// two bytes. of the .sol file.
//char *SOL_FILETYPE = "TCSO";
-const boost::uint16_t SOL_BLOCK_MARK = 0x0004;
+const std::uint16_t SOL_BLOCK_MARK = 0x0004;
/// \define ENSUREBYTES
///
@@ -118,7 +116,7 @@ SOL::extractHeader(const vector<unsigned char> & /*data*/)
///
/// @return nothing.
void
-SOL::addObj(boost::shared_ptr<cygnal::Element> el)
+SOL::addObj(std::shared_ptr<cygnal::Element> el)
{
// GNASH_REPORT_FUNCTION;
_amfobjs.push_back(el);
@@ -151,10 +149,10 @@ SOL::formatHeader(const std::string &name)
template <typename T>
void
-appendSwapped(std::vector<boost::uint8_t>& container, T val)
+appendSwapped(std::vector<std::uint8_t>& container, T val)
{
- boost::uint8_t *ptr =
- static_cast<boost::uint8_t*>(swapBytes(&val, sizeof(val)));
+ std::uint8_t *ptr =
+ static_cast<std::uint8_t*>(swapBytes(&val, sizeof(val)));
container.insert(container.end(), ptr, ptr+sizeof(val));
}
@@ -178,7 +176,7 @@ SOL::formatHeader(const std::string &name, int filesize)
// includes the padding in the header, the mystery bytes, and the
// padding, plus the length of the name itself.
filesize += name.size() + 16;
- boost::uint32_t len = filesize;
+ std::uint32_t len = filesize;
appendSwapped(_header, len);
// Then the mystery block, but as the value never seems to every change,
@@ -190,19 +188,19 @@ SOL::formatHeader(const std::string &name, int filesize)
// then the 0x0004 bytes, also a mystery
appendSwapped(_header, SOL_BLOCK_MARK);
// finally a bunch of zeros to pad things for this field
- _header.insert(_header.end(), '\0', sizeof(boost::uint32_t));
+ _header.insert(_header.end(), '\0', sizeof(std::uint32_t));
// Encode the name. This is not a string object, which has a type field
// one byte field precedding the length as a file type of AMF::STRING.
// First the length in two bytes
- boost::uint16_t size = name.size();
+ std::uint16_t size = name.size();
appendSwapped(_header, size);
// then the string itself
_header.insert(_header.end(), name.begin(), name.end());
// finally a bunch of zeros to pad things at the end of the header
- _header.insert(_header.end(), '\0', sizeof(boost::uint32_t));
+ _header.insert(_header.end(), '\0', sizeof(std::uint32_t));
#if 0
unsigned char *hexint;
@@ -233,8 +231,8 @@ SOL::writeFile(const std::string &filespec, const std::string &name)
return false;
}
- vector<boost::uint8_t>::iterator it;
- vector<boost::shared_ptr<cygnal::Element> >::iterator ita;
+ vector<std::uint8_t>::iterator it;
+ vector<std::shared_ptr<cygnal::Element> >::iterator ita;
AMF amf_obj;
char *ptr;
int size = 0;
@@ -244,20 +242,20 @@ SOL::writeFile(const std::string &filespec, const std::string &name)
}
for (ita = _amfobjs.begin(); ita != _amfobjs.end(); ++ita) {
- boost::shared_ptr<cygnal::Element> el = (*(ita));
+ std::shared_ptr<cygnal::Element> el = (*(ita));
size += el->getNameSize() + el->getDataSize() + 7;
}
_filesize = size;
- boost::scoped_array<char> body ( new char[size + 20] );
+ std::unique_ptr<char[]> body ( new char[size + 20] );
std::fill_n(body.get(), size, 0);
ptr = body.get();
char* endPtr = ptr+size+20; // that's the amount we allocated..
for (ita = _amfobjs.begin(); ita != _amfobjs.end(); ++ita) {
- boost::shared_ptr<Element> el = (*(ita));
- boost::shared_ptr<cygnal::Buffer> var = amf_obj.encodeProperty(el);
- // boost::uint8_t *var = amf_obj.encodeProperty(el, outsize);
+ std::shared_ptr<Element> el = (*(ita));
+ std::shared_ptr<cygnal::Buffer> var = amf_obj.encodeProperty(el);
+ // std::uint8_t *var = amf_obj.encodeProperty(el, outsize);
if (!var) {
continue;
}
@@ -305,8 +303,8 @@ SOL::writeFile(const std::string &filespec, const std::string &name)
}
_filesize = ptr - body.get();
- int len = name.size() + sizeof(boost::uint16_t) + 16;
- boost::scoped_array<char> head ( new char[len + 4] );
+ int len = name.size() + sizeof(std::uint16_t) + 16;
+ std::unique_ptr<char[]> head ( new char[len + 4] );
memset(head.get(), 0, len);
ptr = head.get();
formatHeader(name);
@@ -342,7 +340,7 @@ SOL::readFile(const std::string &filespec)
{
// GNASH_REPORT_FUNCTION;
struct stat st;
- boost::uint16_t size;
+ std::uint16_t size;
size_t bodysize;
// Make sure it's an SOL file
@@ -350,16 +348,16 @@ SOL::readFile(const std::string &filespec)
try {
- boost::uint8_t *ptr = 0;
+ std::uint8_t *ptr = nullptr;
std::ifstream ifs(filespec.c_str(), std::ios::binary);
_filesize = st.st_size;
- boost::scoped_array<boost::uint8_t> buf(
- new boost::uint8_t[_filesize + sizeof(int)]);
+ std::unique_ptr<std::uint8_t[]> buf(
+ new std::uint8_t[_filesize + sizeof(int)]);
ptr = buf.get();
- boost::uint8_t* tooFar = buf.get() + _filesize;
+ std::uint8_t* tooFar = buf.get() + _filesize;
bodysize = st.st_size - 6;
_filespec = filespec;
@@ -373,7 +371,7 @@ SOL::readFile(const std::string &filespec)
ptr += 2;
// extract the file size
- boost::uint32_t length = *(reinterpret_cast<boost::uint32_t *>(ptr));
+ std::uint32_t length = *(reinterpret_cast<std::uint32_t *>(ptr));
length = ntohl(length);
ptr += 4;
@@ -401,7 +399,7 @@ SOL::readFile(const std::string &filespec)
// 2 bytes for the length of the object name, but it's also
// null terminated
- size = *(reinterpret_cast<boost::uint16_t *>(ptr));
+ size = *(reinterpret_cast<std::uint16_t *>(ptr));
size = ntohs(size);
ptr += 2;
@@ -418,11 +416,11 @@ SOL::readFile(const std::string &filespec)
ptr += 4;
AMF amf_obj;
- boost::shared_ptr<cygnal::Element> el;
+ std::shared_ptr<cygnal::Element> el;
while ( ptr < tooFar) {
if (ptr) {
el = amf_obj.extractProperty(ptr, tooFar);
- if (el != 0) {
+ if (el != nullptr) {
ptr += amf_obj.totalsize() + 1;
_amfobjs.push_back(el);
}
@@ -441,12 +439,12 @@ SOL::readFile(const std::string &filespec)
}
bool
-SOL::updateSO(boost::shared_ptr<cygnal::Element> &newel)
+SOL::updateSO(std::shared_ptr<cygnal::Element> &newel)
{
// GNASH_REPORT_FUNCTION;
- vector<boost::shared_ptr<cygnal::Element> >::iterator ita;
+ vector<std::shared_ptr<cygnal::Element> >::iterator ita;
for (ita = _amfobjs.begin(); ita != _amfobjs.end(); ++ita) {
- boost::shared_ptr<cygnal::Element> oldel = (*(ita));
+ std::shared_ptr<cygnal::Element> oldel = (*(ita));
if (oldel == newel) {
oldel = newel;
}
@@ -455,7 +453,7 @@ SOL::updateSO(boost::shared_ptr<cygnal::Element> &newel)
}
bool
-SOL::updateSO(int index, boost::shared_ptr<cygnal::Element> &el)
+SOL::updateSO(int index, std::shared_ptr<cygnal::Element> &el)
{
// GNASH_REPORT_FUNCTION;
_amfobjs[index] = el;
@@ -469,14 +467,14 @@ void
SOL::dump()
{
using namespace std;
- vector<boost::shared_ptr<cygnal::Element> >::iterator it;
+ vector<std::shared_ptr<cygnal::Element> >::iterator it;
cerr << "Dumping SOL file" << endl;
cerr << "The file name is: " << _filespec << endl;
cerr << "The size of the file is: " << _filesize << endl;
cerr << "The name of the object is: " << _objname << endl;
for (it = _amfobjs.begin(); it != _amfobjs.end(); ++it) {
- boost::shared_ptr<cygnal::Element> el = (*(it));
+ std::shared_ptr<cygnal::Element> el = (*(it));
cerr << el->getName() << ": ";
if (el->getType() == Element::STRING_AMF0) {
if (el->getDataSize() != 0) {
diff --git a/cygnal/libamf/sol.h b/cygnal/libamf/sol.h
index 7f5b634..2d4e46d 100644
--- a/cygnal/libamf/sol.h
+++ b/cygnal/libamf/sol.h
@@ -19,7 +19,8 @@
#ifndef GNASH_SOL_H
#define GNASH_SOL_H
-#include <boost/cstdint.hpp>
+#include <cstdint>
+#include <cassert>
#include <string>
#include <vector>
@@ -69,7 +70,7 @@ public:
/// .sol file data.
///
/// @return true if this succeeded. false if it doesn't.
- bool extractHeader(const std::vector<boost::uint8_t> &data);
+ bool extractHeader(const std::vector<std::uint8_t> &data);
/// \brief Extract the header from the file.
///
@@ -84,7 +85,7 @@ public:
/// .sol file data.
///
/// @return true if this succeeded. false if it doesn't.
- bool formatHeader(const std::vector<boost::uint8_t> &data);
+ bool formatHeader(const std::vector<std::uint8_t> &data);
/// \brief Create the file header.
///
@@ -126,27 +127,27 @@ public:
/// \brief Get the stored copy of the header
///
/// @return A vector of raw bytes that is a binary form of the header.
- std::vector<boost::uint8_t> getHeader() { return _header; };
+ std::vector<std::uint8_t> getHeader() { return _header; };
/// \brief Add the AMF objects that are the data of the file
//
/// @param el A smart pointer to the Element to add to the .sol file.
///
/// @return nothing.
- void addObj(boost::shared_ptr<Element> el);
+ void addObj(std::shared_ptr<Element> el);
/// \brief Return a reference to the elements in this object
///
/// @return A smart pointer to the array of properities for this
/// .sol file.
- std::vector<boost::shared_ptr<cygnal::Element> > &getElements() { return _amfobjs; }
+ std::vector<std::shared_ptr<cygnal::Element> > &getElements() { return _amfobjs; }
/// \brief Get an element referenced by index in the array
///
/// @param size The index of the property to retrieve.
///
/// @return A smart pointer to the element at the specified location.
- boost::shared_ptr<Element> getElement(size_t size)
+ std::shared_ptr<Element> getElement(size_t size)
{
assert(size<_amfobjs.size());
return _amfobjs[size];
@@ -180,8 +181,8 @@ public:
/// in the .sol file.
const std::string &getObjectName() const { return _objname; };
- bool updateSO(boost::shared_ptr<cygnal::Element> &el);
- bool updateSO(int index, boost::shared_ptr<cygnal::Element> &el);
+ bool updateSO(std::shared_ptr<cygnal::Element> &el);
+ bool updateSO(int index, std::shared_ptr<cygnal::Element> &el);
/// \brief Dump the internal data of this class in a human readable form.
///
@@ -191,11 +192,11 @@ public:
private:
/// \var SOL::_header
/// A stored copy of the SOL file header.
- std::vector<boost::uint8_t> _header;
+ std::vector<std::uint8_t> _header;
/// \var SOL::_data
/// The vector that contains the raw dats for this .sol file.
- std::vector<boost::uint8_t> _data;
+ std::vector<std::uint8_t> _data;
/// \var SOL::_objname
/// The name of the SharedObject in the .sol file.
@@ -212,7 +213,7 @@ public:
protected:
/// \var SOL::_amfobjs
/// The array of elements in this SharedObject.
- std::vector<boost::shared_ptr<Element> > _amfobjs;
+ std::vector<std::shared_ptr<Element> > _amfobjs;
};
diff --git a/cygnal/libnet/Makefile.am b/cygnal/libnet/Makefile.am
index e5a27a6..a99d195 100644
--- a/cygnal/libnet/Makefile.am
+++ b/cygnal/libnet/Makefile.am
@@ -39,7 +39,7 @@ libgnashnet_la_LDFLAGS = -release $(VERSION) $(AM_LDFLAGS)
localedir = $(datadir)/locale
-INCLUDES = \
+AM_CPPFLAGS = \
-I$(top_srcdir)/cygnal/libamf \
-I$(top_srcdir)/cygnal/libnet \
-I$(top_srcdir)/libbase \
diff --git a/cygnal/libnet/cache.cpp b/cygnal/libnet/cache.cpp
index 2a273ab..d7411ed 100644
--- a/cygnal/libnet/cache.cpp
+++ b/cygnal/libnet/cache.cpp
@@ -22,10 +22,7 @@
#include "gnashconfig.h"
#endif
-#include <boost/thread/mutex.hpp>
-#include <boost/shared_ptr.hpp>
-#include <boost/shared_array.hpp>
-#include <boost/scoped_array.hpp>
+#include <mutex>
#include <sys/types.h>
#include <sys/stat.h>
#include <string>
@@ -41,22 +38,20 @@ using std::string;
using std::map;
using std::endl;
-static boost::mutex cache_mutex;
+static std::mutex cache_mutex;
namespace gnash
{
Cache::Cache()
- : _max_size(0),
#ifdef USE_STATS_CACHE
- _pathname_lookups(0),
+ : _pathname_lookups(0),
_pathname_hits(0),
_response_lookups(0),
_response_hits(0),
_file_lookups(0),
- _file_hits(0),
+ _file_hits(0)
#endif
- _pagesize(0)
{
// GNASH_REPORT_FUNCTION;
log_error(_("using this constructor is only allowed for testing purposes."));
@@ -83,7 +78,7 @@ void
Cache::addPath(const std::string &name, const std::string &fullpath)
{
// GNASH_REPORT_FUNCTION;
- boost::mutex::scoped_lock lock(cache_mutex);
+ std::lock_guard<std::mutex> lock(cache_mutex);
_pathnames[name] = fullpath;
}
@@ -91,17 +86,17 @@ void
Cache::addResponse(const std::string &name, const std::string &response)
{
// GNASH_REPORT_FUNCTION;
- boost::mutex::scoped_lock lock(cache_mutex);
+ std::lock_guard<std::mutex> lock(cache_mutex);
_responses[name] = response;
}
void
-Cache::addFile(const std::string &name, boost::shared_ptr<DiskStream> &file)
+Cache::addFile(const std::string &name, std::shared_ptr<DiskStream> &file)
{
// GNASH_REPORT_FUNCTION;
- boost::mutex::scoped_lock lock(cache_mutex);
+ std::lock_guard<std::mutex> lock(cache_mutex);
log_network(_("Adding file %s to cache."), name);
_files[name] = file;
}
@@ -110,7 +105,7 @@ string &
Cache::findPath(const std::string &name)
{
// GNASH_REPORT_FUNCTION;
- boost::mutex::scoped_lock lock(cache_mutex);
+ std::lock_guard<std::mutex> lock(cache_mutex);
#ifdef USE_STATS_CACHE
clock_gettime (CLOCK_REALTIME, &_last_access);
_pathname_lookups++;
@@ -127,7 +122,7 @@ string &
Cache::findResponse(const std::string &name)
{
// GNASH_REPORT_FUNCTION;
- boost::mutex::scoped_lock lock(cache_mutex);
+ std::lock_guard<std::mutex> lock(cache_mutex);
#ifdef USE_STATS_CACHE
clock_gettime (CLOCK_REALTIME, &_last_access);
_response_lookups++;
@@ -140,17 +135,17 @@ Cache::findResponse(const std::string &name)
return _responses[name];
}
-boost::shared_ptr<DiskStream> &
+std::shared_ptr<DiskStream> &
Cache::findFile(const std::string &name)
{
// GNASH_REPORT_FUNCTION;
log_network(_("Trying to find %s in the cache."), name);
- boost::mutex::scoped_lock lock(cache_mutex);
+ std::lock_guard<std::mutex> lock(cache_mutex);
#ifdef USE_STATS_CACHE
clock_gettime (CLOCK_REALTIME, &_last_access);
_file_lookups++;
- map<string, boost::shared_ptr<DiskStream> >::const_iterator it;
+ map<string, std::shared_ptr<DiskStream> >::const_iterator it;
it = _files.find(name);
if (it != _files.end()) {
_file_hits++;
@@ -163,7 +158,7 @@ void
Cache::removePath(const std::string &name)
{
// GNASH_REPORT_FUNCTION;
- boost::mutex::scoped_lock lock(cache_mutex);
+ std::lock_guard<std::mutex> lock(cache_mutex);
_pathnames.erase(name);
}
@@ -171,7 +166,7 @@ void
Cache::removeResponse(const std::string &name)
{
// GNASH_REPORT_FUNCTION;
- boost::mutex::scoped_lock lock(cache_mutex);
+ std::lock_guard<std::mutex> lock(cache_mutex);
_responses.erase(name);
}
@@ -179,7 +174,7 @@ void
Cache::removeFile(const std::string &name)
{
// GNASH_REPORT_FUNCTION;
- boost::mutex::scoped_lock lock(cache_mutex);
+ std::lock_guard<std::mutex> lock(cache_mutex);
_files.erase(name);
}
@@ -226,7 +221,7 @@ Cache::stats(bool xml) const
text << " File hits from cache: " << _file_hits << endl;
}
- map<std::string, boost::shared_ptr<DiskStream> >::const_iterator data;
+ map<std::string, std::shared_ptr<DiskStream> >::const_iterator data;
for (data = _files.begin(); data != _files.end(); ++data) {
const struct timespec *last = data->second->getLastAccessTime();
time = ((now.tv_sec - last->tv_sec) + ((now.tv_nsec - last->tv_nsec)/1e9));
@@ -256,7 +251,7 @@ void
Cache::dump(std::ostream& os) const
{
GNASH_REPORT_FUNCTION;
- boost::mutex::scoped_lock lock(cache_mutex);
+ std::lock_guard<std::mutex> lock(cache_mutex);
// Dump all the pathnames
os << "Pathname cache has " << _pathnames.size() << " files." << endl;
@@ -273,9 +268,9 @@ Cache::dump(std::ostream& os) const
os << "DiskStream cache has " << _files.size() << " files." << endl;
- map<std::string, boost::shared_ptr<DiskStream> >::const_iterator data;
+ map<std::string, std::shared_ptr<DiskStream> >::const_iterator data;
for (data = _files.begin(); data != _files.end(); ++data) {
- boost::shared_ptr<DiskStream> filedata = data->second;
+ std::shared_ptr<DiskStream> filedata = data->second;
os << "file info for \"" << data->first << "\" is: " << endl;
filedata->dump();
os << "-----------------------------" << endl;
diff --git a/cygnal/libnet/cache.h b/cygnal/libnet/cache.h
index e07bef7..0d5c36c 100644
--- a/cygnal/libnet/cache.h
+++ b/cygnal/libnet/cache.h
@@ -26,7 +26,6 @@
#include <string>
#include <map>
#include <iostream>
-#include <boost/shared_ptr.hpp>
#include "statistics.h"
#include "diskstream.h"
@@ -59,8 +58,8 @@ public:
std::string &findResponse(const std::string &name);
void removeResponse(const std::string &name);
- void addFile(const std::string &name, boost::shared_ptr<DiskStream > &file);
- boost::shared_ptr<DiskStream> & findFile(const std::string &name);
+ void addFile(const std::string &name, std::shared_ptr<DiskStream > &file);
+ std::shared_ptr<DiskStream> & findFile(const std::string &name);
void removeFile(const std::string &name);
/// \brief Dump the internal data of this class in a human readable form.
@@ -81,11 +80,7 @@ private:
std::map<std::string, std::string> _responses;
/// \var Cache::_responses
/// The cache of Distream handles to often played files.
- std::map<std::string, boost::shared_ptr<DiskStream> > _files;
-
- /// \var Cache::_max_size
- /// The maximum amount of memory the cache is allowed to use.
- size_t _max_size;
+ std::map<std::string, std::shared_ptr<DiskStream> > _files;
/// \brief Cache file statistics variables are defined here.
#ifdef USE_STATS_CACHE
@@ -97,11 +92,6 @@ private:
long _file_lookups;
long _file_hits;
#endif
- /// \var Cache::_pagesize
- /// The memory page size.
- size_t _pagesize;
-
-cygnal::AMF::filetype_e _filetype; // FIXME: this shouldn't be here still
};
/// \brief Dump to the specified output stream.
diff --git a/cygnal/libnet/cque.cpp b/cygnal/libnet/cque.cpp
index baba956..d341d06 100644
--- a/cygnal/libnet/cque.cpp
+++ b/cygnal/libnet/cque.cpp
@@ -51,9 +51,9 @@ CQue::~CQue()
// GNASH_REPORT_FUNCTION;
// clear();
que_t::iterator it;
- boost::mutex::scoped_lock lock(_mutex);
+ std::lock_guard<std::mutex> lock(_mutex);
// for (it = _que.begin(); it != _que.end(); it++) {
-// boost::shared_ptr<cygnal::Buffer> ptr = *(it);
+// std::shared_ptr<cygnal::Buffer> ptr = *(it);
// if (ptr->size()) { // FIXME: we probably want to delete ptr anyway,
// delete ptr; // but if we do, this will core dump.
// }
@@ -65,7 +65,7 @@ void
CQue::wait()
{
// GNASH_REPORT_FUNCTION;
- boost::mutex::scoped_lock lk(_cond_mutex);
+ std::unique_lock<std::mutex> lk(_cond_mutex);
#ifndef _WIN32
_cond.wait(lk);
log_unimpl(_("CQue::wait(win32)"));
@@ -89,15 +89,15 @@ size_t
CQue::size()
{
// GNASH_REPORT_FUNCTION;
- boost::mutex::scoped_lock lock(_mutex);
+ std::lock_guard<std::mutex> lock(_mutex);
return _que.size();
}
bool
-CQue::push(boost::shared_ptr<cygnal::Buffer> data)
+CQue::push(std::shared_ptr<cygnal::Buffer> data)
{
// GNASH_REPORT_FUNCTION;
- boost::mutex::scoped_lock lock(_mutex);
+ std::lock_guard<std::mutex> lock(_mutex);
_que.push_back(data);
#ifdef USE_STATS_QUEUE
_stats.totalbytes += data->size();
@@ -108,22 +108,22 @@ CQue::push(boost::shared_ptr<cygnal::Buffer> data)
// Push data
bool
-CQue::push(boost::uint8_t *data, int nbytes)
+CQue::push(std::uint8_t *data, int nbytes)
{
// GNASH_REPORT_FUNCTION;
- boost::shared_ptr<cygnal::Buffer> buf(new cygnal::Buffer);
+ std::shared_ptr<cygnal::Buffer> buf(new cygnal::Buffer);
std::copy(data, data + nbytes, buf->reference());
return push(buf);
}
// Pop the first date element off the FIFO
-boost::shared_ptr<cygnal::Buffer>
+std::shared_ptr<cygnal::Buffer>
CQue::pop()
{
// GNASH_REPORT_FUNCTION;
- boost::shared_ptr<cygnal::Buffer> buf;
- boost::mutex::scoped_lock lock(_mutex);
+ std::shared_ptr<cygnal::Buffer> buf;
+ std::lock_guard<std::mutex> lock(_mutex);
if (_que.size()) {
buf = _que.front();
_que.pop_front();
@@ -135,15 +135,15 @@ CQue::pop()
}
// Peek at the first data element without removing it
-boost::shared_ptr<cygnal::Buffer>
+std::shared_ptr<cygnal::Buffer>
CQue::peek()
{
// GNASH_REPORT_FUNCTION;
- boost::mutex::scoped_lock lock(_mutex);
+ std::lock_guard<std::mutex> lock(_mutex);
if (_que.size()) {
return _que.front();
}
- return boost::shared_ptr<cygnal::Buffer>();
+ return std::shared_ptr<cygnal::Buffer>();
}
// Return the size of the queues
@@ -151,20 +151,20 @@ void
CQue::clear()
{
// GNASH_REPORT_FUNCTION;
- boost::mutex::scoped_lock lock(_mutex);
+ std::lock_guard<std::mutex> lock(_mutex);
_que.clear();
}
// Remove a range of elements
void
-CQue::remove(boost::shared_ptr<cygnal::Buffer> begin, boost::shared_ptr<cygnal::Buffer> end)
+CQue::remove(std::shared_ptr<cygnal::Buffer> begin, std::shared_ptr<cygnal::Buffer> end)
{
GNASH_REPORT_FUNCTION;
- deque<boost::shared_ptr<cygnal::Buffer> >::iterator it;
- deque<boost::shared_ptr<cygnal::Buffer> >::iterator start;
- deque<boost::shared_ptr<cygnal::Buffer> >::iterator stop;
- boost::mutex::scoped_lock lock(_mutex);
- boost::shared_ptr<cygnal::Buffer> ptr;
+ deque<std::shared_ptr<cygnal::Buffer> >::iterator it;
+ deque<std::shared_ptr<cygnal::Buffer> >::iterator start;
+ deque<std::shared_ptr<cygnal::Buffer> >::iterator stop;
+ std::lock_guard<std::mutex> lock(_mutex);
+ std::shared_ptr<cygnal::Buffer> ptr;
for (it = _que.begin(); it != _que.end(); ++it) {
ptr = *(it);
if (ptr->reference() == begin->reference()) {
@@ -180,13 +180,13 @@ CQue::remove(boost::shared_ptr<cygnal::Buffer> begin, boost::shared_ptr<cygnal::
// Remove an element
void
-CQue::remove(boost::shared_ptr<cygnal::Buffer> element)
+CQue::remove(std::shared_ptr<cygnal::Buffer> element)
{
GNASH_REPORT_FUNCTION;
- deque<boost::shared_ptr<cygnal::Buffer> >::iterator it;
- boost::mutex::scoped_lock lock(_mutex);
+ deque<std::shared_ptr<cygnal::Buffer> >::iterator it;
+ std::lock_guard<std::mutex> lock(_mutex);
for (it = _que.begin(); it != _que.end(); ) {
- boost::shared_ptr<cygnal::Buffer> ptr = *(it);
+ std::shared_ptr<cygnal::Buffer> ptr = *(it);
if (ptr->reference() == element->reference()) {
it = _que.erase(it);
} else {
@@ -197,7 +197,7 @@ CQue::remove(boost::shared_ptr<cygnal::Buffer> element)
// Merge sucessive buffers into one single larger buffer. This is for some
// protocols, than have very long headers.
-boost::shared_ptr<cygnal::Buffer>
+std::shared_ptr<cygnal::Buffer>
CQue::merge()
{
// GNASH_REPORT_FUNCTION;
@@ -205,8 +205,8 @@ CQue::merge()
return merge(_que.front());
}
-boost::shared_ptr<cygnal::Buffer>
-CQue::merge(boost::shared_ptr<cygnal::Buffer> start)
+std::shared_ptr<cygnal::Buffer>
+CQue::merge(std::shared_ptr<cygnal::Buffer> start)
{
// GNASH_REPORT_FUNCTION;
// Find iterator to first element to merge
@@ -232,7 +232,7 @@ CQue::merge(boost::shared_ptr<cygnal::Buffer> start)
// log_debug("%s: Final Totalsize is %s", __PRETTY_FUNCTION__, totalsize);
// Merge all elements in a single buffer. We have totalsize now.
- boost::shared_ptr<cygnal::Buffer> newbuf(new cygnal::Buffer(totalsize));
+ std::shared_ptr<cygnal::Buffer> newbuf(new cygnal::Buffer(totalsize));
for (que_t::iterator i=from; i!=to; ++i) {
// log_debug("%s: copying %d bytes, space left is %d, totalsize is %d", __PRETTY_FUNCTION__,
// (*i)->allocated(), newbuf->spaceLeft(), totalsize);
@@ -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.
@@ -261,12 +261,12 @@ void
CQue::dump()
{
// GNASH_REPORT_FUNCTION;
- deque<boost::shared_ptr<cygnal::Buffer> >::iterator it;
- boost::mutex::scoped_lock lock(_mutex);
+ deque<std::shared_ptr<cygnal::Buffer> >::iterator it;
+ std::lock_guard<std::mutex> lock(_mutex);
std::cerr << std::endl << "CQue \"" << _name << "\" has "<< _que.size()
<< " buffers." << std::endl;
for (it = _que.begin(); it != _que.end(); ++it) {
- boost::shared_ptr<cygnal::Buffer> ptr = *(it);
+ std::shared_ptr<cygnal::Buffer> ptr = *(it);
ptr->dump();
}
#ifdef USE_STATS_QUEUE
diff --git a/cygnal/libnet/cque.h b/cygnal/libnet/cque.h
index b7ca12f..02e4178 100644
--- a/cygnal/libnet/cque.h
+++ b/cygnal/libnet/cque.h
@@ -20,9 +20,9 @@
#define __CQUE_H__
#include <string>
-#include <boost/cstdint.hpp>
-#include <boost/thread/mutex.hpp>
-#include <boost/thread/condition.hpp>
+#include <cstdint>
+#include <mutex>
+#include <condition_variable>
#include <deque>
#include "getclocktime.hpp"
@@ -36,7 +36,7 @@ namespace gnash
class CQue {
public:
- typedef std::deque<boost::shared_ptr<cygnal::Buffer> > que_t;
+ typedef std::deque<std::shared_ptr<cygnal::Buffer> > que_t;
#ifdef USE_STATS_QUEUE
typedef struct {
struct timespec start;
@@ -49,12 +49,12 @@ public:
CQue(const std::string &str) { _name = str; };
~CQue();
// Push data onto the que
- bool push(boost::uint8_t *data, int nbytes);
- bool push(boost::shared_ptr<cygnal::Buffer> data);
+ bool push(std::uint8_t *data, int nbytes);
+ bool push(std::shared_ptr<cygnal::Buffer> data);
// Pop the first date element off the que
- boost::shared_ptr<cygnal::Buffer> DSOEXPORT pop();
+ std::shared_ptr<cygnal::Buffer> DSOEXPORT pop();
// Peek at the first date element witjhout removing it from the que
- boost::shared_ptr<cygnal::Buffer> DSOEXPORT peek();
+ std::shared_ptr<cygnal::Buffer> DSOEXPORT peek();
// Get the number of elements in the que
size_t DSOEXPORT size();
// Wait for a condition variable to trigger
@@ -64,16 +64,16 @@ public:
// Empty the que of all data.
void clear();
// Remove a range of elements
- void remove(boost::shared_ptr<cygnal::Buffer> begin, boost::shared_ptr<cygnal::Buffer> end);
+ void remove(std::shared_ptr<cygnal::Buffer> begin, std::shared_ptr<cygnal::Buffer> end);
// // Remove an element
-// void remove(boost::shared_ptr<cygnal::Buffer> it);
- void remove(boost::shared_ptr<cygnal::Buffer> it);
+// void remove(std::shared_ptr<cygnal::Buffer> it);
+ void remove(std::shared_ptr<cygnal::Buffer> it);
// Merge sucessive buffers into one single larger buffer. This is for some
// protocols, than have very long headers.
- boost::shared_ptr<cygnal::Buffer> DSOEXPORT merge(boost::shared_ptr<cygnal::Buffer> begin);
- boost::shared_ptr<cygnal::Buffer> DSOEXPORT merge();
+ std::shared_ptr<cygnal::Buffer> DSOEXPORT merge(std::shared_ptr<cygnal::Buffer> begin);
+ std::shared_ptr<cygnal::Buffer> DSOEXPORT merge();
- boost::shared_ptr<cygnal::Buffer> operator[] (int index) { return _que[index]; };
+ std::shared_ptr<cygnal::Buffer> operator[] (int index) { return _que[index]; };
// Dump the data to the terminal
void dump();
@@ -84,19 +84,19 @@ public:
const std::string &getName() { return _name; }
private:
// an optional name for the queue, only used for debugging messages to make them unique
- std::string _name;
+ std::string _name;
// The queue itself
- que_t _que;
+ que_t _que;
// A condition variable used to signal the other thread when the que has data
- boost::condition _cond;
+ std::condition_variable _cond;
// This is the mutex used by the condition variable. It needs to be separate from the
// one used to lock access to the que.
- boost::mutex _cond_mutex;
+ std::mutex _cond_mutex;
// This is the mutex that controls access to the que.
- boost::mutex _mutex;
+ std::mutex _mutex;
#ifdef USE_STATS_QUEUE
- que_stats_t _stats;
+ que_stats_t _stats;
#endif
};
diff --git a/cygnal/libnet/cqueue.cpp b/cygnal/libnet/cqueue.cpp
index eec6901..3a1b0e9 100644
--- a/cygnal/libnet/cqueue.cpp
+++ b/cygnal/libnet/cqueue.cpp
@@ -18,7 +18,7 @@
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
//
-#include <boost/thread/mutex.hpp>
+#include <mutex>
#include <boost/date_time/gregorian/gregorian.hpp>
//#include <boost/date_time/local_time/local_time.hpp>
#include <boost/date_time/posix_time/posix_time.hpp>
@@ -47,7 +47,7 @@ CQueue::~CQueue()
#if 0
void
-memcpy(boost::uint8_t *data, size_t size,
+memcpy(std::uint8_t *data, size_t size,
vector<uint8_t> *ptr)
{
// GNASH_REPORT_FUNCTION;
@@ -70,7 +70,7 @@ bool
CQueue::push(uint8_t *data, int nbytes)
{
// GNASH_REPORT_FUNCTION;
- vector<boost::uint8_t> *ptr = new vector<boost::uint8_t>;
+ vector<std::uint8_t> *ptr = new vector<std::uint8_t>;
ptr->reserve(nbytes);
std::copy(data, data + nbytes, ptr->begin());
_queue.push_back(ptr);
diff --git a/cygnal/libnet/cqueue.h b/cygnal/libnet/cqueue.h
index 3d58a81..671fe5a 100644
--- a/cygnal/libnet/cqueue.h
+++ b/cygnal/libnet/cqueue.h
@@ -22,8 +22,8 @@
#define __CQUEUE_H__ 1
-#include <boost/cstdint.hpp>
-#include <boost/thread/mutex.hpp>
+#include <cstdint>
+#include <mutex>
#include <boost/date_time/gregorian/gregorian.hpp>
#include <boost/date_time/posix_time/posix_time.hpp>
#include <iostream>
@@ -40,21 +40,21 @@ public:
~CQueue();
// Push bytes on the FIFO
- bool push(boost::uint8_t *data, int nbytes);
- bool push(std::vector<boost::uint8_t> *data);
+ bool push(std::uint8_t *data, int nbytes);
+ bool push(std::vector<std::uint8_t> *data);
// Pop the first date element off the FIFO
std::vector<uint8_t> *pop();
// Peek at the first data element without removing it
std::vector<uint8_t> *peek();
-// void memcpy(boost::uint8_t *data, size_t size,
-// std::vector<boost::uint8_t> *ptr);
-// void memcpy(std::vector<boost::uint8_t> *ptr,
-// boost::uint8_t *data, size_t size);
+// void memcpy(std::uint8_t *data, size_t size,
+// std::vector<std::uint8_t> *ptr);
+// void memcpy(std::vector<std::uint8_t> *ptr,
+// std::uint8_t *data, size_t size);
size_t size() { return _queue.size(); };
// Dump internal data.
void dump();
private:
- std::vector<std::vector<boost::uint8_t> *> _queue;
+ std::vector<std::vector<std::uint8_t> *> _queue;
};
diff --git a/cygnal/libnet/diskstream.cpp b/cygnal/libnet/diskstream.cpp
index 4a5e515..ec2a5df 100644
--- a/cygnal/libnet/diskstream.cpp
+++ b/cygnal/libnet/diskstream.cpp
@@ -23,7 +23,7 @@
#endif
#include <sys/types.h>
-#include <boost/cstdint.hpp>
+#include <cstdint>
#include <sys/stat.h>
#include <fcntl.h>
#include <iostream>
@@ -55,9 +55,9 @@
# include <sys/sendfile.h>
#endif
-#include <boost/thread/mutex.hpp>
-static boost::mutex io_mutex;
-static boost::mutex mem_mutex;
+#include <mutex>
+static std::mutex io_mutex;
+static std::mutex mem_mutex;
using std::string;
@@ -86,7 +86,7 @@ DiskStream::DiskStream()
: _state(DiskStream::NO_STATE),
_filefd(0),
_netfd(0),
- _dataptr(0),
+ _dataptr(nullptr),
_max_memload(0),
_filesize(0),
_pagesize(0),
@@ -126,7 +126,7 @@ DiskStream::DiskStream(const string &str)
: _state(DiskStream::NO_STATE),
_filefd(0),
_netfd(0),
- _dataptr(0),
+ _dataptr(nullptr),
_max_memload(0),
_filesize(0),
_pagesize(0),
@@ -163,11 +163,11 @@ DiskStream::DiskStream(const string &str)
#endif
}
-DiskStream::DiskStream(const string &str, boost::uint8_t *data, size_t size)
+DiskStream::DiskStream(const string &str, std::uint8_t *data, size_t size)
: _state(DiskStream::NO_STATE),
_filefd(0),
_netfd(0),
- _dataptr(0),
+ _dataptr(nullptr),
_max_memload(0),
_pagesize(0),
_offset(0)
@@ -197,7 +197,7 @@ DiskStream::DiskStream(const string &str, boost::uint8_t *data, size_t size)
#endif
#endif
- _dataptr = new boost::uint8_t[size];
+ _dataptr = new std::uint8_t[size];
// Note that this is a copy operation, which may effect performance. We do this for now
// incase the top level pointer gets deleted. This should really be using
// boost::scoped_array, but we don't want that complexity till this code stabalizes.
@@ -215,7 +215,7 @@ DiskStream::DiskStream(const string &str, cygnal::Buffer &buf)
: _state(DiskStream::NO_STATE),
_filefd(0),
_netfd(0),
- _dataptr(0),
+ _dataptr(nullptr),
_max_memload(0),
_pagesize(0),
_offset(0)
@@ -245,7 +245,7 @@ DiskStream::DiskStream(const string &str, cygnal::Buffer &buf)
#endif
#endif
- _dataptr = new boost::uint8_t[buf.size()];
+ _dataptr = new std::uint8_t[buf.size()];
// Note that this is a copy operation, which may effect performance. We do this for now
// incase the top level pointer gets deleted. This should really be using
// boost::scoped_array, but we don't want that complexity till this code stabalizes.
@@ -262,8 +262,8 @@ DiskStream::DiskStream(const string &str, cygnal::Buffer &buf)
DiskStream::DiskStream(const string &str, int netfd)
: _state(DiskStream::NO_STATE),
_filefd(0),
- _filespec(0),
- _dataptr(0),
+ _filespec(nullptr),
+ _dataptr(nullptr),
_max_memload(0),
_filesize(0),
_pagesize(0),
@@ -336,7 +336,7 @@ DiskStream::fullyPopulated()
{
// GNASH_REPORT_FUNCTION;
- if ((_filesize < _max_memload) && (_dataptr != 0)) {
+ if ((_filesize < _max_memload) && (_dataptr != nullptr)) {
return true;
}
return false;
@@ -388,7 +388,7 @@ DiskStream::close()
///
/// @return A real pointer to the location of the data at the
/// location pointed to by the offset.
-boost::uint8_t *
+std::uint8_t *
DiskStream::loadToMem(off_t offset)
{
// GNASH_REPORT_FUNCTION;
@@ -396,7 +396,7 @@ DiskStream::loadToMem(off_t offset)
return loadToMem(_filesize, offset);
}
-boost::uint8_t *
+std::uint8_t *
DiskStream::loadToMem(size_t filesize, off_t offset)
{
GNASH_REPORT_FUNCTION;
@@ -443,13 +443,13 @@ DiskStream::loadToMem(size_t filesize, off_t offset)
return _dataptr + offset;
}
- boost::uint8_t *dataptr = 0;
+ std::uint8_t *dataptr = nullptr;
if (_filefd) {
/// If the data pointer is legit, then we need to unmap that page
/// to mmap() a new one. If we're still in the current mapped
/// page, then just return the existing data pointer.
- if (dataptr != 0) {
+ if (dataptr != nullptr) {
#ifdef _WIN32
UnmapViewOfFile(_dataptr);
#elif defined(__amigaos4__)
@@ -472,32 +472,32 @@ DiskStream::loadToMem(size_t filesize, off_t offset)
// lock in case two threads try to load the same file at the
// same time.
- boost::mutex::scoped_lock lock(mem_mutex);
+ std::lock_guard<std::mutex> lock(mem_mutex);
#ifdef _WIN32
HANDLE handle = CreateFileMapping((HANDLE)_get_osfhandle(_filefd), NULL,
PAGE_WRITECOPY, 0, 0, NULL);
if (handle != NULL) {
- dataptr = static_cast<boost::uint8_t *>(MapViewOfFile(handle, FILE_MAP_COPY, 0, offset, page));
+ dataptr = static_cast<std::uint8_t *>(MapViewOfFile(handle, FILE_MAP_COPY, 0, offset, page));
CloseHandle(handle);
}
#elif defined(__amigaos4__)
- dataptr = static_cast<boost::uint8_t *>(malloc(loadsize));
+ dataptr = static_cast<std::uint8_t *>(malloc(loadsize));
#else
- dataptr = static_cast<boost::uint8_t *>(mmap(0, loadsize,
+ dataptr = static_cast<std::uint8_t *>(mmap(nullptr, loadsize,
PROT_READ, MAP_SHARED,
_filefd, page));
#endif
} else {
log_error(_("Couldn't load file %s"), _filespec);
- return 0;
+ return nullptr;
}
if (dataptr == MAP_FAILED) {
log_error(_("Couldn't map file %s into memory: %s"),
_filespec, strerror(errno));
- return 0;
+ return nullptr;
} else {
log_debug(_("File %s a offset %d mapped to: %p"), _filespec, offset, (void *)dataptr);
clock_gettime (CLOCK_REALTIME, &_last_access);
@@ -508,18 +508,18 @@ DiskStream::loadToMem(size_t filesize, off_t offset)
_offset = 0;
}
- boost::uint8_t *ptr = dataptr;
+ std::uint8_t *ptr = dataptr;
if (_filetype == FILETYPE_FLV) {
// FIXME: for now, assume all media files are in FLV format
_flv.reset(new cygnal::Flv);
- boost::shared_ptr<cygnal::Flv::flv_header_t> head = _flv->decodeHeader(ptr);
+ std::shared_ptr<cygnal::Flv::flv_header_t> head = _flv->decodeHeader(ptr);
ptr += sizeof(cygnal::Flv::flv_header_t);
ptr += sizeof(cygnal::Flv::previous_size_t);
- boost::shared_ptr<cygnal::Flv::flv_tag_t> tag = _flv->decodeTagHeader(ptr);
+ std::shared_ptr<cygnal::Flv::flv_tag_t> tag = _flv->decodeTagHeader(ptr);
ptr += sizeof(cygnal::Flv::flv_tag_t);
size_t bodysize = _flv->convert24(tag->bodysize);
if (tag->type == cygnal::Flv::TAG_METADATA) {
- boost::shared_ptr<cygnal::Element> metadata = _flv->decodeMetaData(ptr, bodysize);
+ std::shared_ptr<cygnal::Element> metadata = _flv->decodeMetaData(ptr, bodysize);
if (metadata) {
metadata->dump();
}
@@ -575,7 +575,7 @@ DiskStream::writeToDisk(const std::string &filespec, cygnal::Buffer &data)
}
bool
-DiskStream::writeToDisk(const std::string &filespec, boost::uint8_t *data, size_t size)
+DiskStream::writeToDisk(const std::string &filespec, std::uint8_t *data, size_t size)
{
// GNASH_REPORT_FUNCTION;
@@ -662,11 +662,11 @@ DiskStream::open(const string &filespec, int netfd, Statistics &statistics)
log_debug(_("Trying to open %s"), filespec);
if (getFileStats(filespec)) {
- boost::mutex::scoped_lock lock(io_mutex);
+ std::lock_guard<std::mutex> lock(io_mutex);
_filefd = ::open(_filespec.c_str(), O_RDONLY);
log_debug (_("Opening file %s (fd #%d), %lld bytes in size."),
_filespec, _filefd,
- (boost::int64_t) _filesize);
+ (std::int64_t) _filesize);
_state = OPEN;
_filetype = determineFileType(filespec);
loadToMem(0); // load the first page into memory
@@ -891,7 +891,7 @@ DiskStream::pause()
/// seek to.
///
/// @return A real pointer to the location of the data seeked to.
-boost::uint8_t *
+std::uint8_t *
DiskStream::seek(off_t offset)
{
// GNASH_REPORT_FUNCTION;
@@ -1044,46 +1044,46 @@ DiskStream::determineFileType(const string &filespec)
}
DiskStream::filetype_e
-DiskStream::determineFileType( boost::uint8_t *data)
+DiskStream::determineFileType( std::uint8_t *data)
{
// GNASH_REPORT_FUNCTION;
- if (data == 0) {
+ if (data == nullptr) {
return FILETYPE_NONE;
}
// JPEG, offset 6 bytes, read the string JFIF
- if (memcpy(data + 6, "JFIF", 4) == 0) {
+ if (memcpy(data + 6, "JFIF", 4) == nullptr) {
return FILETYPE_NONE;
}
// SWF, offset 0, read the string FWS
- if (memcpy(data, "SWF", 3) == 0) {
+ if (memcpy(data, "SWF", 3) == nullptr) {
return FILETYPE_SWF;
}
// compressed SWF, offset 0, read the string CWS
// FLV, offset 0, read the string FLV
// PNG, offset 0, read the string PNG
- if (memcpy(data, "PNG", 3) == 0) {
+ if (memcpy(data, "PNG", 3) == nullptr) {
return FILETYPE_PNG;
}
// Ogg, offset 0, read the string OggS
- if (memcpy(data, "OggS", 4) == 0) {
+ if (memcpy(data, "OggS", 4) == nullptr) {
return FILETYPE_OGG;
}
// Theora, offset 28, read string theora
- if (memcpy(data + 28, "theora", 6) == 0) {
+ if (memcpy(data + 28, "theora", 6) == nullptr) {
return FILETYPE_THEORA;
}
// FLAC, offset 28, read string FLAC
- if (memcpy(data + 28, "FLAC", 4) == 0) {
+ if (memcpy(data + 28, "FLAC", 4) == nullptr) {
return FILETYPE_FLAC;
}
// Vorbis, offset 28, read string vorbis
- if (memcpy(data + 28, "vorbis", 6) == 0) {
+ if (memcpy(data + 28, "vorbis", 6) == nullptr) {
return FILETYPE_VORBIS;
}
// MP3, offset 0, read string ID3
- if (memcpy(data, "ID3", 3) == 0) {
+ if (memcpy(data, "ID3", 3) == nullptr) {
return FILETYPE_MP3;
}
@@ -1092,12 +1092,12 @@ DiskStream::determineFileType( boost::uint8_t *data)
// offset 0, read string "\<head"
// offset 0, read string "\<title"
// offset 0, read string "\<html"
- if (memcpy(data, "ID3", 3) == 0) {
+ if (memcpy(data, "ID3", 3) == nullptr) {
return FILETYPE_HTML;
}
// XML, offset 0, read string "\<?xml"
- if (memcpy(data, "<?xml", 5) == 0) {
+ if (memcpy(data, "<?xml", 5) == nullptr) {
return FILETYPE_XML;
}
diff --git a/cygnal/libnet/diskstream.h b/cygnal/libnet/diskstream.h
index af221c8..5eed482 100644
--- a/cygnal/libnet/diskstream.h
+++ b/cygnal/libnet/diskstream.h
@@ -34,7 +34,7 @@
#include "statistics.h"
#include "getclocktime.hpp"
#include "dsodefs.h"
-#include <boost/scoped_ptr.hpp>
+#include <memory>
/// \namespace gnash
/// This is the main namespace for Gnash and it's libraries.
@@ -90,7 +90,7 @@ public:
DSOEXPORT DiskStream();
DSOEXPORT DiskStream(const std::string &filespec);
DSOEXPORT DiskStream(const std::string &filespec, cygnal::Buffer &buf);
- DSOEXPORT DiskStream(const std::string &filespec, boost::uint8_t *data, size_t size);
+ DSOEXPORT DiskStream(const std::string &filespec, std::uint8_t *data, size_t size);
DSOEXPORT DiskStream(const std::string &filespec, int netfd);
DSOEXPORT ~DiskStream();
@@ -160,7 +160,7 @@ public:
/// seek to.
///
/// @return A real pointer to the location of the data seeked to.
- boost::uint8_t * seek(off_t offset);
+ std::uint8_t * seek(off_t offset);
/// \brief Upload a file into a sandbox.
/// The sandbox is an area where uploaded files can get
@@ -186,9 +186,9 @@ public:
///
/// @return A real pointer to the location of the data at the
/// location pointed to by the offset.
- DSOEXPORT boost::uint8_t *loadToMem(size_t filesize, off_t offset);
- DSOEXPORT boost::uint8_t *loadToMem(off_t offset);
- DSOEXPORT boost::uint8_t *loadToMem() { return loadToMem(_offset); };
+ DSOEXPORT std::uint8_t *loadToMem(size_t filesize, off_t offset);
+ DSOEXPORT std::uint8_t *loadToMem(off_t offset);
+ DSOEXPORT std::uint8_t *loadToMem() { return loadToMem(_offset); };
/// \brief Write the data in memory to disk
///
@@ -200,7 +200,7 @@ public:
/// @param size The amount of data in bytes to be written
///
/// @return true if the operation suceeded, false if it failed.
- DSOEXPORT bool writeToDisk(const std::string &filespec, boost::uint8_t *data, size_t size);
+ DSOEXPORT bool writeToDisk(const std::string &filespec, std::uint8_t *data, size_t size);
DSOEXPORT bool writeToDisk(const std::string &filespec, cygnal::Buffer &data);
DSOEXPORT bool writeToDisk(const std::string &filespec);
DSOEXPORT bool writeToDisk();
@@ -239,7 +239,7 @@ public:
///
/// @return A real pointer to the base address data in the file, but after
/// the header bytes.
- boost::uint8_t *get() { return _dataptr; };
+ std::uint8_t *get() { return _dataptr; };
bool fullyPopulated();
// bool fullyPopulated() { return ((_seekptr - _filesize) == _dataptr); };
@@ -304,7 +304,7 @@ private:
/// \var DiskStream::_dataptr
/// The base address of the memory page.
- boost::uint8_t *_dataptr;
+ std::uint8_t *_dataptr;
/// \var DiskStream::_max_memload
/// The maximum amount of data to load into memory
@@ -313,7 +313,7 @@ private:
/// \var DiskStream::_seekptr
/// The current location within the current memory page where
/// the data ends, which is in increments of the empry page size.
- boost::uint8_t *_seekptr;
+ std::uint8_t *_seekptr;
/// \var DiskStream::_filesize
/// The size of the disk file to stream.
@@ -334,7 +334,7 @@ private:
///
/// @return an AMF filetype
filetype_e determineFileType();
- filetype_e determineFileType( boost::uint8_t *data);
+ filetype_e determineFileType( std::uint8_t *data);
filetype_e determineFileType(const std::string &filespec);
// Get the file stats, so we know how to set the
@@ -354,7 +354,7 @@ private:
#endif
// The header, tag, and onMetaData from the FLV file.
- boost::shared_ptr<cygnal::Flv> _flv;
+ std::shared_ptr<cygnal::Flv> _flv;
};
/// \brief Dump to the specified output stream.
diff --git a/cygnal/libnet/http.cpp b/cygnal/libnet/http.cpp
index ba9e3f0..14a9e00 100644
--- a/cygnal/libnet/http.cpp
+++ b/cygnal/libnet/http.cpp
@@ -18,10 +18,7 @@
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
//
-#include <boost/thread/mutex.hpp>
-#include <boost/shared_ptr.hpp>
-#include <boost/shared_array.hpp>
-#include <boost/scoped_array.hpp>
+#include <mutex>
#include <boost/tokenizer.hpp>
#include <boost/date_time/posix_time/posix_time.hpp>
#include <boost/date_time/gregorian/gregorian.hpp>
@@ -65,15 +62,17 @@
using std::string;
-static boost::mutex stl_mutex;
+static std::mutex stl_mutex;
namespace gnash
{
// extern map<int, Handler *> handlers;
+#if 0
// FIXME, this seems too small to me. --gnu
static const int readsize = 1024;
+#endif
static Cache& cache = Cache::getDefaultInstance();
@@ -139,7 +138,7 @@ HTTP::operator = (HTTP& /*obj*/)
}
-boost::uint8_t *
+std::uint8_t *
HTTP::processHeaderFields(cygnal::Buffer *buf)
{
// GNASH_REPORT_FUNCTION;
@@ -162,7 +161,7 @@ HTTP::processHeaderFields(cygnal::Buffer *buf)
if (name == "keep-alive") {
_keepalive = true;
if ((value != "on") && (value != "off")) {
- _max_requests = strtol(value.c_str(), NULL, 0);
+ _max_requests = strtol(value.c_str(), nullptr, 0);
// log_debug("Setting Max Requests for Keep-Alive to %d", _max_requests);
}
}
@@ -172,7 +171,7 @@ HTTP::processHeaderFields(cygnal::Buffer *buf)
}
}
if (name == "content-length") {
- _filesize = strtol(value.c_str(), NULL, 0);
+ _filesize = strtol(value.c_str(), nullptr, 0);
log_debug(_("Setting Content Length to %d"), _filesize);
}
if (name == "content-type") {
@@ -191,8 +190,8 @@ HTTP::processHeaderFields(cygnal::Buffer *buf)
// cerr << "FIXME: " << (void *)i << " : " << dec << end << endl;
} else {
- const boost::uint8_t *cmd = reinterpret_cast<const boost::uint8_t *>(i->c_str());
- if (extractCommand(const_cast<boost::uint8_t *>(cmd)) == HTTP::HTTP_NONE) {
+ const std::uint8_t *cmd = reinterpret_cast<const std::uint8_t *>(i->c_str());
+ if (extractCommand(const_cast<std::uint8_t *>(cmd)) == HTTP::HTTP_NONE) {
break;
#if 1
} else {
@@ -236,28 +235,28 @@ HTTP::processHeaderFields(cygnal::Buffer *buf)
// // Parse an Echo Request message coming from the Red5 echo_test. This
// // method should only be used for testing purposes.
-// vector<boost::shared_ptr<cygnal::Element > >
-// HTTP::parseEchoRequest(boost::uint8_t *data, size_t size)
+// vector<std::shared_ptr<cygnal::Element > >
+// HTTP::parseEchoRequest(std::uint8_t *data, size_t size)
// {
// // GNASH_REPORT_FUNCTION;
-// vector<boost::shared_ptr<cygnal::Element > > headers;
+// vector<std::shared_ptr<cygnal::Element > > headers;
// // skip past the header bytes, we don't care about them.
-// boost::uint8_t *tmpptr = data + 6;
+// std::uint8_t *tmpptr = data + 6;
-// boost::uint16_t length;
-// length = ntohs((*(boost::uint16_t *)tmpptr) & 0xffff);
-// tmpptr += sizeof(boost::uint16_t);
+// std::uint16_t length;
+// length = ntohs((*(std::uint16_t *)tmpptr) & 0xffff);
+// tmpptr += sizeof(std::uint16_t);
// // Get the first name, which is a raw string, and not preceded by
// // a type byte.
-// boost::shared_ptr<cygnal::Element > el1(new cygnal::Element);
+// std::shared_ptr<cygnal::Element > el1(new cygnal::Element);
// // If the length of the name field is corrupted, then we get out of
// // range quick, and corrupt memory. This is a bit of a hack, but
// // reduces memory errors caused by some of the corrupted tes cases.
-// boost::uint8_t *endstr = std::find(tmpptr, tmpptr+length, '\0');
+// std::uint8_t *endstr = std::find(tmpptr, tmpptr+length, '\0');
// if (endstr != tmpptr+length) {
// log_debug("Caught corrupted string! length was %d, null at %d",
// length, endstr-tmpptr);
@@ -269,9 +268,9 @@ HTTP::processHeaderFields(cygnal::Buffer *buf)
// // Get the second name, which is a raw string, and not preceded by
// // a type byte.
-// length = ntohs((*(boost::uint16_t *)tmpptr) & 0xffff);
-// tmpptr += sizeof(boost::uint16_t);
-// boost::shared_ptr<cygnal::Element > el2(new cygnal::Element);
+// length = ntohs((*(std::uint16_t *)tmpptr) & 0xffff);
+// tmpptr += sizeof(std::uint16_t);
+// std::shared_ptr<cygnal::Element > el2(new cygnal::Element);
// // std::string name2(reinterpret_cast<const char *>(tmpptr), length);
// // el2->setName(name2.c_str(), name2.size());
@@ -291,11 +290,11 @@ HTTP::processHeaderFields(cygnal::Buffer *buf)
// // Get the last two pieces of data, which are both AMF encoded
// // with a type byte.
// amf::AMF amf;
-// boost::shared_ptr<cygnal::Element> el3 = amf.extractAMF(tmpptr, tmpptr + size);
+// std::shared_ptr<cygnal::Element> el3 = amf.extractAMF(tmpptr, tmpptr + size);
// headers.push_back(el3);
// tmpptr += amf.totalsize();
-// boost::shared_ptr<cygnal::Element> el4 = amf.extractAMF(tmpptr, tmpptr + size);
+// std::shared_ptr<cygnal::Element> el4 = amf.extractAMF(tmpptr, tmpptr + size);
// headers.push_back(el4);
// return headers;
@@ -308,7 +307,7 @@ HTTP::processHeaderFields(cygnal::Buffer *buf)
// HTTP::formatEchoResponse(const std::string &num, cygnal::Element &el)
// {
// // GNASH_REPORT_FUNCTION;
-// boost::shared_ptr<cygnal::Buffer> data;
+// std::shared_ptr<cygnal::Buffer> data;
// cygnal::Element nel;
// if (el.getType() == cygnal::Element::TYPED_OBJECT_AMF0) {
@@ -319,7 +318,7 @@ HTTP::processHeaderFields(cygnal::Buffer *buf)
// // FIXME: see about using std::reverse() instead.
// for (int i=el.propertySize()-1; i>=0; i--) {
// // for (int i=0 ; i<el.propertySize(); i++) {
-// boost::shared_ptr<cygnal::Element> child = el.getProperty(i);
+// std::shared_ptr<cygnal::Element> child = el.getProperty(i);
// nel.addProperty(child);
// }
// data = nel.encode();
@@ -335,12 +334,12 @@ HTTP::processHeaderFields(cygnal::Buffer *buf)
#if 0 // FIXME:
// Client side parsing of response message codes
-boost::shared_ptr<HTTP::http_response_t>
+std::shared_ptr<HTTP::http_response_t>
HTTP::parseStatus(const std::string &line)
{
// GNASH_REPORT_FUNCTION;
- boost::shared_ptr<http_response_t> status;
+ std::shared_ptr<http_response_t> status;
// The respnse is a number followed by the error message.
string::size_type pos = line.find(" ", 0);
if (pos != string::npos) {
@@ -358,7 +357,7 @@ HTTP::processClientRequest(int fd)
// GNASH_REPORT_FUNCTION;
bool result = false;
- boost::shared_ptr<cygnal::Buffer> buf(_que.peek());
+ std::shared_ptr<cygnal::Buffer> buf(_que.peek());
if (buf) {
_cmd = extractCommand(buf->reference());
switch (_cmd) {
@@ -400,7 +399,7 @@ HTTP::processGetRequest(int fd)
{
GNASH_REPORT_FUNCTION;
-// boost::uint8_t buffer[readsize+1];
+// std::uint8_t buffer[readsize+1];
// const char *ptr = reinterpret_cast<const char *>(buffer);
// memset(buffer, 0, readsize+1);
@@ -413,7 +412,7 @@ HTTP::processGetRequest(int fd)
return false;
}
- boost::shared_ptr<cygnal::Buffer> buf(_que.pop());
+ std::shared_ptr<cygnal::Buffer> buf(_que.pop());
// cerr << "YYYYYYY: " << (char *)buf->reference() << endl;
// cerr << hexify(buf->reference(), buf->allocated(), false) << endl;
@@ -428,7 +427,7 @@ HTTP::processGetRequest(int fd)
string url = _docroot + _filespec;
// See if the file is in the cache and already opened.
- boost::shared_ptr<DiskStream> filestream(cache.findFile(url));
+ std::shared_ptr<DiskStream> filestream(cache.findFile(url));
if (filestream) {
log_network(_("FIXME: found file in cache!"));
} else {
@@ -516,7 +515,7 @@ HTTP::processPostRequest(int fd)
return false;
}
- boost::shared_ptr<cygnal::Buffer> buf(_que.pop());
+ std::shared_ptr<cygnal::Buffer> buf(_que.pop());
if (buf == 0) {
log_debug(_("Que empty, net connection dropped for fd #%d"), getFileFd());
return false;
@@ -524,9 +523,9 @@ HTTP::processPostRequest(int fd)
// cerr << __FUNCTION__ << buf->allocated() << " : " << hexify(buf->reference(), buf->allocated(), true) << endl;
clearHeader();
- boost::uint8_t *data = processHeaderFields(*buf);
+ std::uint8_t *data = processHeaderFields(*buf);
size_t length = strtol(getField("content-length").c_str(), NULL, 0);
- boost::shared_ptr<cygnal::Buffer> content(new cygnal::Buffer(length));
+ std::shared_ptr<cygnal::Buffer> content(new cygnal::Buffer(length));
int ret = 0;
if (buf->allocated() - (data - buf->reference()) ) {
// cerr << "Don't need to read more data: have " << buf->allocated() << " bytes" << endl;
@@ -549,7 +548,7 @@ HTTP::processPostRequest(int fd)
log_debug(_("Got AMF data in POST"));
#if 0
amf::AMF amf;
- boost::shared_ptr<cygnal::Element> el = amf.extractAMF(content.reference(), content.end());
+ std::shared_ptr<cygnal::Element> el = amf.extractAMF(content.reference(), content.end());
el->dump(); // FIXME: do something intelligent
// with this Element
#endif
@@ -564,10 +563,10 @@ HTTP::processPostRequest(int fd)
log_debug(_("Got CGI echo request in POST"));
// cerr << "FIXME 2: " << hexify(content->reference(), content->allocated(), true) << endl;
- vector<boost::shared_ptr<cygnal::Element> > headers = parseEchoRequest(*content);
- //boost::shared_ptr<cygnal::Element> &el0 = headers[0];
- //boost::shared_ptr<cygnal::Element> &el1 = headers[1];
- //boost::shared_ptr<cygnal::Element> &el3 = headers[3];
+ vector<std::shared_ptr<cygnal::Element> > headers = parseEchoRequest(*content);
+ //std::shared_ptr<cygnal::Element> &el0 = headers[0];
+ //std::shared_ptr<cygnal::Element> &el1 = headers[1];
+ //std::shared_ptr<cygnal::Element> &el3 = headers[3];
if (headers.size() >= 4) {
if (headers[3]) {
@@ -642,7 +641,7 @@ HTTP::getContentLength()
// GNASH_REPORT_FUNCTION;
std::string length = getField("content-length");
if (length.size() > 0) {
- return static_cast<size_t>(strtol(length.c_str(), NULL, 0));
+ return static_cast<size_t>(strtol(length.c_str(), nullptr, 0));
}
return 0;
@@ -732,11 +731,11 @@ HTTP::checkGeneralFields(cygnal::Buffer & /* buf */)
return false;
}
-boost::shared_ptr<std::vector<std::string> >
+std::shared_ptr<std::vector<std::string> >
HTTP::getFieldItem(const std::string &name)
{
// GNASH_REPORT_FUNCTION;
- boost::shared_ptr<std::vector<std::string> > ptr(new std::vector<std::string>);
+ std::shared_ptr<std::vector<std::string> > ptr(new std::vector<std::string>);
Tok t(_fields[name], Sep(", "));
for (Tok::iterator i = t.begin(), e = t.end(); i != e; ++i) {
ptr->push_back(*i);
@@ -1021,7 +1020,7 @@ HTTP::formatContentLength()
}
cygnal::Buffer &
-HTTP::formatContentLength(boost::uint32_t filesize)
+HTTP::formatContentLength(std::uint32_t filesize)
{
// GNASH_REPORT_FUNCTION;
// _header << "Content-Length: " << filesize << "\r\n";
@@ -1140,11 +1139,11 @@ HTTP::formatEchoResponse(const std::string &num, cygnal::Buffer &data)
}
cygnal::Buffer &
-HTTP::formatEchoResponse(const std::string &num, boost::uint8_t *data, size_t size)
+HTTP::formatEchoResponse(const std::string &num, std::uint8_t *data, size_t size)
{
// GNASH_REPORT_FUNCTION;
- //boost::uint8_t *tmpptr = data;
+ //std::uint8_t *tmpptr = data;
// FIXME: temporary hacks while debugging
cygnal::Buffer fixme("00 00 00 00 00 01");
@@ -1169,11 +1168,11 @@ HTTP::formatEchoResponse(const std::string &num, boost::uint8_t *data, size_t si
// the request, a slash followed by a number like "/2".
string result = num;
result += "/onResult";
- boost::shared_ptr<cygnal::Buffer> res = cygnal::AMF::encodeString(result);
+ std::shared_ptr<cygnal::Buffer> res = cygnal::AMF::encodeString(result);
_buffer.append(res->begin()+1, res->size()-1);
// Add the null data item
- boost::shared_ptr<cygnal::Buffer> null = cygnal::AMF::encodeString("null");
+ std::shared_ptr<cygnal::Buffer> null = cygnal::AMF::encodeString("null");
_buffer.append(null->begin()+1, null->size()-1);
// Add the other binary blob
@@ -1251,7 +1250,7 @@ HTTP::formatRequest(const string &url, http_method_e cmd)
HTTP::http_method_e
-HTTP::extractCommand(boost::uint8_t *data)
+HTTP::extractCommand(std::uint8_t *data)
{
// GNASH_REPORT_FUNCTION;
@@ -1286,9 +1285,9 @@ HTTP::extractCommand(boost::uint8_t *data)
// For valid requests, the second argument, delimited by spaces
// is the filespec of the file being requested or transmitted.
if (cmd != HTTP::HTTP_NONE) {
- boost::uint8_t *start = std::find(data, data+7, ' ') + 1;
- boost::uint8_t *end = std::find(start + 2, data+PATH_MAX, ' ');
- boost::uint8_t *params = std::find(start, end, '?');
+ std::uint8_t *start = std::find(data, data+7, ' ') + 1;
+ std::uint8_t *end = std::find(start + 2, data+PATH_MAX, ' ');
+ std::uint8_t *params = std::find(start, end, '?');
if (params != end) {
_params = std::string(params+1, end);
_filespec = std::string(start, params);
@@ -1349,7 +1348,7 @@ HTTP::sendMsg(int /* fd */)
///
/// @return The number of bytes sent
int DSOEXPORT
-HTTP::sendMsg(const boost::uint8_t *data, size_t size)
+HTTP::sendMsg(const std::uint8_t *data, size_t size)
{
GNASH_REPORT_FUNCTION;
// _header
@@ -1358,7 +1357,7 @@ HTTP::sendMsg(const boost::uint8_t *data, size_t size)
}
size_t
-HTTP::recvChunked(boost::uint8_t *data, size_t size)
+HTTP::recvChunked(std::uint8_t *data, size_t size)
{
// GNASH_REPORT_FUNCTION;
bool done = false;
@@ -1375,13 +1374,13 @@ HTTP::recvChunked(boost::uint8_t *data, size_t size)
// line number. There is supposed to be a ';' before the \r\n, as this
// field can have other attributes, but the OpenStreetMap server doesn't
// use the semi-colon, as it's optional, and rarely used anyway.
- boost::shared_ptr<cygnal::Buffer> buf;
- boost::uint8_t *start = std::find(data, data+size, '\r') + 2;
+ std::shared_ptr<cygnal::Buffer> buf;
+ std::uint8_t *start = std::find(data, data+size, '\r') + 2;
if (start != data+size) {
// extract the total size of the chunk
std::string bytes(data, start-2);
size_t sizesize = start-data;
- total = static_cast<size_t>(strtol(bytes.c_str(), NULL, 16));
+ total = static_cast<size_t>(strtol(bytes.c_str(), nullptr, 16));
log_debug(_("%s: Total size for first chunk is: %d, data size %d (%d)"),
__PRETTY_FUNCTION__, total, size, sizesize);
buf.reset(new cygnal::Buffer(total+2));
@@ -1430,7 +1429,7 @@ HTTP::recvChunked(boost::uint8_t *data, size_t size)
if (start != buf->reference()+ret) {
// extract the total size of the chunk
std::string bytes(buf->reference(), start-2);
- total = static_cast<size_t>(strtol(bytes.c_str(), NULL, 16));
+ total = static_cast<size_t>(strtol(bytes.c_str(), nullptr, 16));
// The total size of the last chunk is always "0"
if (total == 0) {
log_debug(_("%s: end of chunks!"), __PRETTY_FUNCTION__);
@@ -1503,7 +1502,7 @@ HTTP::recvMsg(int fd, size_t size)
Network net;
do {
- boost::shared_ptr<cygnal::Buffer> buf(new cygnal::Buffer(size));
+ std::shared_ptr<cygnal::Buffer> buf(new cygnal::Buffer(size));
ret = net.readNet(fd, *buf, 5);
// cerr << __PRETTY_FUNCTION__ << ret << " : " << (char *)buf->reference() << endl;
@@ -1555,7 +1554,7 @@ void
HTTP::dump() {
// GNASH_REPORT_FUNCTION;
- boost::mutex::scoped_lock lock(stl_mutex);
+ std::lock_guard<std::mutex> lock(stl_mutex);
log_debug (_("==== The HTTP header breaks down as follows: ===="));
log_debug (_("Filespec: %s"), _filespec.c_str());
diff --git a/cygnal/libnet/http.h b/cygnal/libnet/http.h
index 74b3417..f7a396a 100644
--- a/cygnal/libnet/http.h
+++ b/cygnal/libnet/http.h
@@ -23,9 +23,6 @@
#include <string>
#include <map>
#include <vector>
-#include <boost/shared_ptr.hpp>
-#include <boost/shared_array.hpp>
-#include <boost/scoped_array.hpp>
#include <sstream>
#ifdef HAVE_CONFIG_H
@@ -137,8 +134,8 @@ public:
bool checkGeneralFields(cygnal::Buffer &buf);
// // Parse an Echo Request message coming from the Red5 echo_test.
- std::vector<boost::shared_ptr<cygnal::Element > > parseEchoRequest(cygnal::Buffer &buf) { return parseEchoRequest(buf.reference(), buf.size()); };
- std::vector<boost::shared_ptr<cygnal::Element > > parseEchoRequest(boost::uint8_t *buf, size_t size);
+ std::vector<std::shared_ptr<cygnal::Element > > parseEchoRequest(cygnal::Buffer &buf) { return parseEchoRequest(buf.reference(), buf.size()); };
+ std::vector<std::shared_ptr<cygnal::Element > > parseEchoRequest(std::uint8_t *buf, size_t size);
// Convert the Content-Length field to a number we can use
size_t getContentLength();
@@ -146,7 +143,7 @@ public:
// process all the header fields in the Buffer, storing them internally
// in _fields. The address returned is the address where the Content data
// starts, and is "Content-Length" bytes long, of "Content-Type" data.
- boost::uint8_t *processHeaderFields(cygnal::Buffer *buf);
+ std::uint8_t *processHeaderFields(cygnal::Buffer *buf);
// Get the field for header 'name' that was stored by processHeaderFields()
std::string &getField(const std::string &name) { return _fields[name]; };
@@ -155,13 +152,13 @@ public:
std::map<std::string, std::string> &getFields() { return _fields; };
// Get an array of values for header field 'name'.
- boost::shared_ptr<std::vector<std::string> > getFieldItem(const std::string &name);
+ std::shared_ptr<std::vector<std::string> > getFieldItem(const std::string &name);
// Client side parsing of response message codes
- boost::shared_ptr<http_response_t> parseStatus(const std::string &line);
+ std::shared_ptr<http_response_t> parseStatus(const std::string &line);
// Handle the response for the request.
- boost::shared_ptr<cygnal::Buffer> formatServerReply(http_status_e code);
+ std::shared_ptr<cygnal::Buffer> formatServerReply(http_status_e code);
cygnal::Buffer &formatGetReply(DiskStream::filetype_e type, size_t size, http_status_e code);
cygnal::Buffer &formatGetReply(size_t size, http_status_e code);
cygnal::Buffer &formatGetReply(http_status_e code);
@@ -196,7 +193,7 @@ public:
// format a response to the 'echo' test used for testing Gnash.
cygnal::Buffer &formatEchoResponse(const std::string &num, cygnal::Element &el);
cygnal::Buffer &formatEchoResponse(const std::string &num, cygnal::Buffer &data);
- cygnal::Buffer &formatEchoResponse(const std::string &num, boost::uint8_t *data, size_t size);
+ cygnal::Buffer &formatEchoResponse(const std::string &num, std::uint8_t *data, size_t size);
cygnal::Buffer &formatMethod(const std::string &data)
{return formatCommon("Method: " + data); };
@@ -210,7 +207,7 @@ public:
cygnal::Buffer &formatKeepAlive(const std::string &data)
{return formatCommon("Keep-Alive: " + data); };
cygnal::Buffer &formatContentLength();
- cygnal::Buffer &formatContentLength(boost::uint32_t filesize);
+ cygnal::Buffer &formatContentLength(std::uint32_t filesize);
cygnal::Buffer &formatContentType();
cygnal::Buffer &formatContentType(DiskStream::filetype_e type);
cygnal::Buffer &formatHost(const std::string &data)
@@ -238,7 +235,7 @@ public:
// cygnal::Buffer &formatErrorResponse(http_status_e err);
// Return the header that's been built up.
- boost::uint8_t *getHeader() { return _buffer.reference(); };
+ std::uint8_t *getHeader() { return _buffer.reference(); };
// Return the header that's been built up.
cygnal::Buffer &getBuffer() { return _buffer; };
@@ -260,7 +257,7 @@ public:
int recvMsg(int fd);
int recvMsg(int fd, size_t size);
- size_t recvChunked(boost::uint8_t *data, size_t size);
+ size_t recvChunked(std::uint8_t *data, size_t size);
/// \brief Send a message to the other end of the network connection.
///
@@ -274,11 +271,11 @@ public:
/// @return The number of bytes sent
int sendMsg();
int sendMsg(int fd);
- int sendMsg(const boost::uint8_t *data, size_t size);
- int sendMsg(boost::shared_ptr<cygnal::Buffer> &buf)
+ int sendMsg(const std::uint8_t *data, size_t size);
+ int sendMsg(std::shared_ptr<cygnal::Buffer> &buf)
{ return sendMsg(buf->reference(), buf->size()); };
int sendMsg(std::stringstream &sstr)
- { return sendMsg(reinterpret_cast<const boost::uint8_t *>(sstr.str().c_str()), sstr.str().size()); };
+ { return sendMsg(reinterpret_cast<const std::uint8_t *>(sstr.str().c_str()), sstr.str().size()); };
// These accessors are used mostly just for debugging.
bool keepAlive() { return _keepalive; }
@@ -298,20 +295,20 @@ public:
std::string &getDocRoot() { return _docroot; };
// Pop the first date element off the que
- boost::shared_ptr<cygnal::Buffer> DSOEXPORT popChunk() { return _que.pop(); };
+ std::shared_ptr<cygnal::Buffer> DSOEXPORT popChunk() { return _que.pop(); };
// Peek at the first date element witjhout removing it from the que
- boost::shared_ptr<cygnal::Buffer> DSOEXPORT peekChunk() { return _que.peek(); };
+ std::shared_ptr<cygnal::Buffer> DSOEXPORT peekChunk() { return _que.peek(); };
// Get the number of elements in the que
size_t DSOEXPORT sizeChunks() { return _que.size(); };
- boost::shared_ptr<cygnal::Buffer> DSOEXPORT mergeChunks() { return _que.merge(); };
+ std::shared_ptr<cygnal::Buffer> DSOEXPORT mergeChunks() { return _que.merge(); };
http_method_e getOperation() { return _cmd; };
protected:
// Examine the beginning of the data for an HTTP request command
// like GET or POST, etc...
- http_method_e extractCommand(boost::uint8_t *data);
+ http_method_e extractCommand(std::uint8_t *data);
http_method_e extractCommand(cygnal::Buffer &data)
{ return extractCommand(data.reference()); };
@@ -325,7 +322,7 @@ protected:
DiskStream::filetype_e _filetype;
std::string _filespec;
std::string _params;
- boost::uint32_t _filesize;
+ std::uint32_t _filesize;
std::map<int, struct status_codes *> _status_codes;
std::map<std::string, std::string> _fields;
diff --git a/cygnal/libnet/lirc.cpp b/cygnal/libnet/lirc.cpp
index 3d2b8b0..c0a8bc0 100644
--- a/cygnal/libnet/lirc.cpp
+++ b/cygnal/libnet/lirc.cpp
@@ -36,7 +36,7 @@ const int TIMEOUT = 10;
const int BUTTONSIZE = 10;
Lirc::Lirc()
- : _sockname("/tmp/lircd"), _button(0)
+ : _sockname("/tmp/lircd"), _button(nullptr)
{
// GNASH_REPORT_FUNCTION;
_button = new char[BUTTONSIZE];
@@ -45,7 +45,7 @@ Lirc::Lirc()
Lirc::~Lirc()
{
// GNASH_REPORT_FUNCTION;
- if (_button != 0) {
+ if (_button != nullptr) {
delete _button;
}
closeNet();
diff --git a/cygnal/libnet/network.cpp b/cygnal/libnet/network.cpp
index e6cb1d9..7925136 100644
--- a/cygnal/libnet/network.cpp
+++ b/cygnal/libnet/network.cpp
@@ -21,8 +21,7 @@
#include "gnashconfig.h"
#endif
-#include <boost/thread/mutex.hpp>
-#include <boost/shared_ptr.hpp>
+#include <mutex>
#include <vector>
#include "utility.h"
@@ -197,7 +196,7 @@ Network::createServer(std::string hostname, short port)
clientservice, sizeof(clientservice),
NI_NUMERICHOST);
- boost::shared_ptr<char> straddr = getIPString(ot);
+ std::shared_ptr<char> straddr = getIPString(ot);
if (ot->ai_family == AF_INET6) {
log_debug("%s has IPV6 address of: %s", hostname, straddr.get());
@@ -220,14 +219,14 @@ Network::createServer(std::string hostname, short port)
// Try the next IP number
it = it->ai_next;
} else {
- boost::shared_ptr<char> straddr = getIPString(it);
+ std::shared_ptr<char> straddr = getIPString(it);
log_debug("Socket created for %s", straddr);
break;
}
}
// error, wasn't able to create a socket
- if (it == 0) {
+ if (it == nullptr) {
log_error(_("unable to create socket: %s"), strerror(errno));
return -1;
}
@@ -339,9 +338,9 @@ Network::newConnection(bool block, int fd)
tval.tv_sec = _timeout;
tval.tv_nsec = 0;
if (block) {
- ret = pselect(fd+1, &fdset, NULL, NULL, NULL, &blockset);
+ ret = pselect(fd+1, &fdset, nullptr, nullptr, nullptr, &blockset);
} else {
- ret = pselect(fd+1, &fdset, NULL, NULL, &tval, &blockset);
+ ret = pselect(fd+1, &fdset, nullptr, nullptr, &tval, &blockset);
}
if (sig_number) {
log_debug("Have a SIGINT interrupt waiting!");
@@ -460,7 +459,7 @@ Network::connectSocket(const string &sockname)
tval.tv_sec = 5;
tval.tv_usec = 0;
- ret = ::select(_sockfd+1, &fdset, NULL, NULL, &tval);
+ ret = ::select(_sockfd+1, &fdset, nullptr, nullptr, &tval);
// If interrupted by a system call, try again
if (ret == -1 && errno == EINTR) {
@@ -576,7 +575,7 @@ Network::createClient(const string &hostname, short port)
req.ai_family = AF_UNSPEC; // Allow IPv4 or IPv6
req.ai_socktype = SOCK_STREAM;
- if ((code = getaddrinfo(hostname.c_str(), 0, &req, &ans)) != 0) {
+ if ((code = getaddrinfo(hostname.c_str(), nullptr, &req, &ans)) != 0) {
log_error(_("getaddrinfo() failed with code: #%d - %s\n"),
code, gai_strerror(code));
return false;
@@ -600,7 +599,7 @@ Network::createClient(const string &hostname, short port)
clientservice, sizeof(clientservice),
NI_NUMERICHOST);
- boost::shared_ptr<char> straddr = getIPString(ot);
+ std::shared_ptr<char> straddr = getIPString(ot);
if (ot->ai_family == AF_INET6) {
log_debug("%s has IPV6 address of: %s", hostname, straddr.get());
@@ -638,7 +637,7 @@ Network::createClient(const string &hostname, short port)
struct sockaddr *saddr = it->ai_addr;
const int addrlen = it->ai_addrlen;
- boost::shared_ptr<char> straddr = getIPString(it);
+ std::shared_ptr<char> straddr = getIPString(it);
freeaddrinfo(ans); // free the response data
@@ -654,7 +653,7 @@ Network::createClient(const string &hostname, short port)
tval.tv_sec = 5;
tval.tv_usec = 0;
- ret = ::select(_sockfd+1, &fdset, NULL, NULL, &tval);
+ ret = ::select(_sockfd+1, &fdset, nullptr, nullptr, &tval);
// If interrupted by a system call, try again
if (ret == -1 && errno == EINTR) {
@@ -821,11 +820,11 @@ Network::closeConnection(int fd)
return false;
}
-boost::shared_ptr<cygnal::Buffer>
+std::shared_ptr<cygnal::Buffer>
Network::readNet()
{
// GNASH_REPORT_FUNCTION;
- boost::shared_ptr<cygnal::Buffer> buffer(new cygnal::Buffer);
+ std::shared_ptr<cygnal::Buffer> buffer(new cygnal::Buffer);
int ret = readNet(*buffer);
if (ret > 0) {
buffer->resize(ret);
@@ -923,7 +922,7 @@ Network::readNet(int fd, byte_t *buffer, int nbytes, int timeout)
fd_set fdset;
int ret = -1;
-// boost::mutex::scoped_lock lock(_net_mutex);
+// std::lock_guard<std::mutex> lock(_net_mutex);
if (_debug) {
log_debug(_("Trying to read %d bytes from fd #%d"), nbytes, fd);
@@ -946,7 +945,7 @@ Network::readNet(int fd, byte_t *buffer, int nbytes, int timeout)
sigemptyset(&blockset);
// sigaddset(&blockset, SIGINT); /* Block SIGINT */
// sigaddset(&blockset, SIGPIPE); /* Block SIGPIPE */
- sigprocmask(SIG_BLOCK, &blockset, NULL);
+ sigprocmask(SIG_BLOCK, &blockset, nullptr);
// Trap ^C (SIGINT) so we can kill all the threads
// struct sigaction act;
@@ -959,7 +958,7 @@ Network::readNet(int fd, byte_t *buffer, int nbytes, int timeout)
#endif
if (timeout == 0) {
#ifdef HAVE_PSELECT
- ret = pselect(fd+1, &fdset, NULL, NULL, NULL, &blockset);
+ ret = pselect(fd+1, &fdset, nullptr, nullptr, nullptr, &blockset);
#else
ret = select(fd+1, &fdset, NULL, NULL, NULL);
#endif
@@ -967,7 +966,7 @@ Network::readNet(int fd, byte_t *buffer, int nbytes, int timeout)
#ifdef HAVE_PSELECT
tval.tv_sec = timeout;
tval.tv_nsec = 0;
- ret = pselect(fd+1, &fdset, NULL, NULL, &tval, &blockset);
+ ret = pselect(fd+1, &fdset, nullptr, nullptr, &tval, &blockset);
sigpending(&pending);
if (sigismember(&pending, SIGINT)) {
log_debug("Have a pending SIGINT interrupt waiting!");
@@ -1115,7 +1114,7 @@ Network::writeNet(int fd, const byte_t *buffer, int nbytes, int timeout)
fd_set fdset;
int ret = -1;
- boost::mutex::scoped_lock lock(_net_mutex);
+ std::lock_guard<std::mutex> lock(_net_mutex);
// We need a writable, and not const point for byte arithmetic.
byte_t *bufptr = const_cast<byte_t *>(buffer);
@@ -1137,7 +1136,7 @@ Network::writeNet(int fd, const byte_t *buffer, int nbytes, int timeout)
sigemptyset(&blockset);
// sigaddset(&blockset, SIGINT); /* Block SIGINT */
sigaddset(&blockset, SIGPIPE);
- sigprocmask(SIG_BLOCK, &blockset, NULL);
+ sigprocmask(SIG_BLOCK, &blockset, nullptr);
#else
struct timeval tval;
#endif
@@ -1148,7 +1147,7 @@ Network::writeNet(int fd, const byte_t *buffer, int nbytes, int timeout)
#ifdef HAVE_PSELECT
tval.tv_sec = timeout;
tval.tv_nsec = 0;
- ret = pselect(fd+1, NULL, &fdset, NULL, &tval, &blockset);
+ ret = pselect(fd+1, nullptr, &fdset, nullptr, &tval, &blockset);
sigpending(&pending);
if (sigismember(&pending, SIGINT)) {
log_debug("Have a pending SIGINT interrupt waiting!");
@@ -1242,7 +1241,7 @@ Network::addPollFD(struct pollfd &fd, Network::entry_t *func)
// GNASH_REPORT_FUNCTION;
log_debug(_("%s: adding fd #%d to pollfds"), __PRETTY_FUNCTION__, fd.fd);
- boost::mutex::scoped_lock lock(_poll_mutex);
+ std::lock_guard<std::mutex> lock(_poll_mutex);
_handlers[fd.fd] = func;
_pollfds.push_back(fd);
// notify();
@@ -1253,7 +1252,7 @@ Network::addPollFD(struct pollfd &fd)
{
// GNASH_REPORT_FUNCTION;
log_debug(_("%s: adding fd #%d to pollfds"), __PRETTY_FUNCTION__, fd.fd);
- boost::mutex::scoped_lock lock(_poll_mutex);
+ std::lock_guard<std::mutex> lock(_poll_mutex);
_pollfds.push_back(fd);
// notify();
}
@@ -1262,7 +1261,7 @@ struct pollfd
&Network::getPollFD(int index)
{
// GNASH_REPORT_FUNCTION;
- boost::mutex::scoped_lock lock(_poll_mutex);
+ std::lock_guard<std::mutex> lock(_poll_mutex);
return _pollfds[index];
}
@@ -1270,7 +1269,7 @@ struct pollfd *
Network::getPollFDPtr()
{
// GNASH_REPORT_FUNCTION;
- boost::mutex::scoped_lock lock(_poll_mutex);
+ std::lock_guard<std::mutex> lock(_poll_mutex);
return &_pollfds[0];
}
@@ -1279,7 +1278,7 @@ Network::erasePollFD(int fd)
{
// GNASH_REPORT_FUNCTION;
log_debug(_("%s: erasing fd #%d from pollfds"), __PRETTY_FUNCTION__, fd);
- boost::mutex::scoped_lock lock(_poll_mutex);
+ std::lock_guard<std::mutex> lock(_poll_mutex);
if (_pollfds.size() > 0) {
vector<struct pollfd>::iterator it;
for (it=_pollfds.begin(); it<_pollfds.end(); ++it) {
@@ -1295,7 +1294,7 @@ void
Network::erasePollFD(vector<struct pollfd>::iterator &itt)
{
// GNASH_REPORT_FUNCTION;
- boost::mutex::scoped_lock lock(_poll_mutex);
+ std::lock_guard<std::mutex> lock(_poll_mutex);
if (_pollfds.size() == 1) {
_pollfds.clear();
} else {
@@ -1307,7 +1306,7 @@ void
Network::addEntry(int fd, Network::entry_t *func)
{
// GNASH_REPORT_FUNCTION;
- boost::mutex::scoped_lock lock(_poll_mutex);
+ std::lock_guard<std::mutex> lock(_poll_mutex);
_handlers[fd] = func;
}
@@ -1315,20 +1314,20 @@ Network::entry_t *
Network::getEntry(int fd)
{
// GNASH_REPORT_FUNCTION;
- boost::mutex::scoped_lock lock(_poll_mutex);
+ std::lock_guard<std::mutex> lock(_poll_mutex);
return _handlers[fd];
}
-boost::shared_ptr<std::vector<struct pollfd> >
+std::shared_ptr<std::vector<struct pollfd> >
Network::waitForNetData(int limit, struct pollfd *fds)
{
// GNASH_REPORT_FUNCTION;
- boost::shared_ptr<vector<struct pollfd> > hits(new vector<struct pollfd>);
+ std::shared_ptr<vector<struct pollfd> > hits(new vector<struct pollfd>);
log_debug(_("%s: waiting for %d fds"), __FUNCTION__, limit);
- if ((fds == 0) || (limit == 0)) {
+ if ((fds == nullptr) || (limit == 0)) {
return hits;
}
@@ -1342,7 +1341,7 @@ Network::waitForNetData(int limit, struct pollfd *fds)
sigemptyset(&blockset); /* Block SIGINT */
// sigaddset(&blockset, SIGINT);
// sigaddset(&blockset, SIGPIPE);
- sigprocmask(SIG_BLOCK, &blockset, NULL);
+ sigprocmask(SIG_BLOCK, &blockset, nullptr);
tval.tv_sec = 5; // FIXME: was _timeout;
tval.tv_nsec = 0;
@@ -1492,7 +1491,7 @@ Network::waitForNetData(int limit, fd_set files)
struct timeval tval;
tval.tv_sec = 0;
tval.tv_usec = timeout * 1000; // was 1000000
- int ret = select(limit+1, &fdset, NULL, NULL, &tval);
+ int ret = select(limit+1, &fdset, nullptr, nullptr, &tval);
#endif
// If interrupted by a system call, try again
if (ret == -1 && errno == EINTR) {
@@ -1657,7 +1656,7 @@ Network::sniffBytesReady(int fd)
struct timeval tval;
tval.tv_sec = 0;
tval.tv_usec = 10;
- if (select(fd+1, &fdset, NULL, NULL, &tval)) {
+ if (select(fd+1, &fdset, nullptr, nullptr, &tval)) {
if (FD_ISSET(fd, &fdset)) {
#ifndef _WIN32
ioctl(fd, FIONREAD, &bytes);
@@ -1673,10 +1672,10 @@ Network::sniffBytesReady(int fd)
}
// Return the string representation of the IPV4 or IPV6 number
-boost::shared_ptr<char>
+std::shared_ptr<char>
Network::getIPString(struct addrinfo *ai)
{
- boost::shared_ptr<char> straddr(new char[INET6_ADDRSTRLEN]);
+ std::shared_ptr<char> straddr(new char[INET6_ADDRSTRLEN]);
std::memset(straddr.get(), 0, INET6_ADDRSTRLEN);
if (ai->ai_family == AF_INET6) {
struct sockaddr_in6 *sock6 = reinterpret_cast<struct sockaddr_in6 *>(ai->ai_addr);
diff --git a/cygnal/libnet/network.h b/cygnal/libnet/network.h
index 1e0ecc8..3727c73 100644
--- a/cygnal/libnet/network.h
+++ b/cygnal/libnet/network.h
@@ -45,10 +45,9 @@
# include <io.h>
#endif
-#include <boost/shared_ptr.hpp>
-#include <boost/scoped_ptr.hpp>
-#include <boost/cstdint.hpp>
-#include <boost/thread/mutex.hpp>
+#include <memory>
+#include <cstdint>
+#include <mutex>
#include <vector>
#include <cassert>
#include <string>
@@ -133,7 +132,7 @@ public:
RTMPS,
DTN
} protocols_supported_e;
- // This is used to pass parameters to a thread using boost::bind
+ // This is used to pass parameters to a thread using std::bind
typedef struct {
int tid;
int port;
@@ -145,7 +144,7 @@ public:
std::string hostname;
protocols_supported_e protocol;
} thread_params_t;
- typedef boost::uint8_t byte_t;
+ typedef std::uint8_t byte_t;
typedef bool entry_t (thread_params_t *);
Network();
@@ -208,7 +207,7 @@ public:
/// @param nbytes The number of bytes to try to read.
///
/// @return The number of bytes read.
- boost::shared_ptr<cygnal::Buffer> readNet();
+ std::shared_ptr<cygnal::Buffer> readNet();
int readNet(cygnal::Buffer &buffer);
int readNet(int fd, cygnal::Buffer &buffer);
int readNet(int fd, cygnal::Buffer *buffer);
@@ -245,7 +244,7 @@ public:
/// @param limit The max number of file descriptors to wait for.
///
/// @return A vector of the file descriptors that have activity.
- boost::shared_ptr<std::vector<struct pollfd> > waitForNetData(int limit, struct pollfd *fds);
+ std::shared_ptr<std::vector<struct pollfd> > waitForNetData(int limit, struct pollfd *fds);
fd_set waitForNetData(int limit, fd_set data);
fd_set waitForNetData(std::vector<int> &data);
@@ -333,7 +332,7 @@ public:
protected:
// Return the string representation of the IPV4 or IPV6 number
- boost::shared_ptr<char> getIPString(struct addrinfo *ai);
+ std::shared_ptr<char> getIPString(struct addrinfo *ai);
in_addr_t _ipaddr;
int _sockfd; // the file descriptor used for reading and writing
@@ -353,13 +352,13 @@ public:
std::map<int, entry_t *> _handlers;
std::vector<struct pollfd> _pollfds;
// This is the mutex that controls access to the que.
- boost::mutex _poll_mutex;
- boost::mutex _net_mutex;
+ std::mutex _poll_mutex;
+ std::mutex _net_mutex;
#ifdef USE_SSL
- boost::scoped_ptr<SSLClient> _ssl;
+ std::unique_ptr<SSLClient> _ssl;
#endif
#ifdef USE_SSH
- boost::scoped_ptr<SSHClient> _ssh;
+ std::unique_ptr<SSHClient> _ssh;
#endif
};
diff --git a/cygnal/libnet/rtmp.cpp b/cygnal/libnet/rtmp.cpp
index aa29b1d..5c87fda 100644
--- a/cygnal/libnet/rtmp.cpp
+++ b/cygnal/libnet/rtmp.cpp
@@ -28,7 +28,6 @@
#include <vector>
#include <cerrno>
#include <boost/detail/endian.hpp>
-#include <boost/shared_ptr.hpp>
#include <boost/format.hpp>
#if ! (defined(_WIN32) || defined(WIN32))
@@ -167,7 +166,7 @@ const char *response_str[] = {
};
int
-RTMP::headerSize(boost::uint8_t header)
+RTMP::headerSize(std::uint8_t header)
{
// GNASH_REPORT_FUNCTION;
int headersize = header & RTMP_HEADSIZE_MASK;
@@ -190,7 +189,7 @@ RTMP::headerSize(boost::uint8_t header)
}
RTMP::RTMP()
- : _handshake(0),
+ : _handshake(nullptr),
_packet_size(0),
_mystery_word(0),
_timeout(1)
@@ -253,20 +252,20 @@ RTMP::getProperty(const std::string &name)
return it->second;
}
-boost::shared_ptr<RTMP::rtmp_head_t>
+std::shared_ptr<RTMP::rtmp_head_t>
RTMP::decodeHeader(cygnal::Buffer &buf)
{
// GNASH_REPORT_FUNCTION;
return decodeHeader(buf.reference());
}
-boost::shared_ptr<RTMP::rtmp_head_t>
-RTMP::decodeHeader(boost::uint8_t *in)
+std::shared_ptr<RTMP::rtmp_head_t>
+RTMP::decodeHeader(std::uint8_t *in)
{
// GNASH_REPORT_FUNCTION;
- boost::shared_ptr<RTMP::rtmp_head_t> head(new RTMP::rtmp_head_t);
- boost::uint8_t *tmpptr = in;
+ std::shared_ptr<RTMP::rtmp_head_t> head(new RTMP::rtmp_head_t);
+ std::uint8_t *tmpptr = in;
head->channel = *tmpptr & RTMP_INDEX_MASK;
// log_network (_("The AMF channel index is %d"), head->channel);
@@ -332,7 +331,7 @@ RTMP::decodeHeader(boost::uint8_t *in)
}
if (head->head_size >= 8) {
- boost::uint8_t byte = *tmpptr;
+ std::uint8_t byte = *tmpptr;
head->type = (content_types_e)byte;
_type[head->channel] = head->type;
tmpptr++;
@@ -374,13 +373,13 @@ RTMP::decodeHeader(boost::uint8_t *in)
/// * Routing - The source/destination of the message
//
-boost::shared_ptr<cygnal::Buffer>
+std::shared_ptr<cygnal::Buffer>
RTMP::encodeHeader(int amf_index, rtmp_headersize_e head_size)
{
// GNASH_REPORT_FUNCTION;
- boost::shared_ptr<cygnal::Buffer> buf(new cygnal::Buffer(1));
+ std::shared_ptr<cygnal::Buffer> buf(new cygnal::Buffer(1));
buf->clear();
- boost::uint8_t *ptr = buf->reference();
+ std::uint8_t *ptr = buf->reference();
// Make the channel index & header size byte
*ptr = head_size & RTMP_HEADSIZE_MASK;
@@ -390,14 +389,14 @@ RTMP::encodeHeader(int amf_index, rtmp_headersize_e head_size)
}
// There are 3 size of RTMP headers, 1, 4, 8, and 12.
-boost::shared_ptr<cygnal::Buffer>
+std::shared_ptr<cygnal::Buffer>
RTMP::encodeHeader(int amf_index, rtmp_headersize_e head_size,
size_t total_size, content_types_e type,
RTMPMsg::rtmp_source_e routing)
{
// GNASH_REPORT_FUNCTION;
- boost::shared_ptr<cygnal::Buffer> buf;
+ std::shared_ptr<cygnal::Buffer> buf;
switch(head_size) {
case HEADER_1:
buf.reset(new cygnal::Buffer(1));
@@ -412,7 +411,7 @@ RTMP::encodeHeader(int amf_index, rtmp_headersize_e head_size,
buf.reset(new cygnal::Buffer(12));
break;
}
- boost::uint8_t *ptr = buf->reference();
+ std::uint8_t *ptr = buf->reference();
// Make the channel index & header size byte
// *ptr = head_size & RTMP_HEADSIZE_MASK;
@@ -442,13 +441,13 @@ RTMP::encodeHeader(int amf_index, rtmp_headersize_e head_size,
if (head_size == HEADER_12 && type != RTMP::USER) {
if (type != RTMP::AUDIO_DATA && type != RTMP::VIDEO_DATA) {
// log_network(_("The routing is: 0x%x"), routing);
- boost::uint32_t swapped = htonl(routing);
+ std::uint32_t swapped = htonl(routing);
memcpy(ptr, &swapped, 4);
} else {
// FIXME: I have no idea why these two empty messages
// don't handle the routing field for 12 byte headers
// the same as all the other types.
- boost::uint8_t swapped = 0x1;
+ std::uint8_t swapped = 0x1;
*ptr = swapped;
}
ptr += 4;
@@ -471,8 +470,8 @@ RTMP::packetRead(cygnal::Buffer &buf)
// int packetsize = 0;
size_t amf_index, headersize;
- boost::uint8_t *ptr = buf.reference();
- boost::uint8_t *tooFar = ptr+buf.size();
+ std::uint8_t *ptr = buf.reference();
+ std::uint8_t *tooFar = ptr+buf.size();
AMF amf;
ptr += 1; // skip past the RTMP header byte
@@ -493,9 +492,9 @@ RTMP::packetRead(cygnal::Buffer &buf)
}
#if 1
- boost::uint8_t *end = buf.remove(0xc3);
+ std::uint8_t *end = buf.remove(0xc3);
#else
- boost::uint8_t *end = buf.find(0xc3);
+ std::uint8_t *end = buf.find(0xc3);
log_network(_("END is %x"), (void *)end);
*end = '*';
#endif
@@ -503,14 +502,14 @@ RTMP::packetRead(cygnal::Buffer &buf)
// ptr = decodeHeader(ptr);
// ptr += headersize;
- boost::shared_ptr<cygnal::Element> el = amf.extractAMF(ptr, tooFar);
+ std::shared_ptr<cygnal::Element> el = amf.extractAMF(ptr, tooFar);
// el->dump();
el = amf.extractAMF(ptr, tooFar); // @@strk@@ : what's the +1 for ?
// el->dump();
log_network(_("Reading AMF packets till we're done..."));
// buf->dump();
while (ptr < end) {
- boost::shared_ptr<cygnal::Element> el = amf.extractProperty(ptr, tooFar);
+ std::shared_ptr<cygnal::Element> el = amf.extractProperty(ptr, tooFar);
addProperty(el);
// el->dump();
}
@@ -524,16 +523,16 @@ RTMP::packetRead(cygnal::Buffer &buf)
// buf = _handler->merge(buf); FIXME needs to use shared_ptr
}
while ((ptr - buf.begin()) < static_cast<int>(actual_size)) {
- boost::shared_ptr<cygnal::Element> el = amf.extractProperty(ptr, tooFar);
+ std::shared_ptr<cygnal::Element> el = amf.extractProperty(ptr, tooFar);
addProperty(el);
// el->dump(); // FIXME: dump the AMF objects as they are read in
}
// dump();
- boost::shared_ptr<cygnal::Element> url = getProperty("tcUrl");
- boost::shared_ptr<cygnal::Element> file = getProperty("swfUrl");
- boost::shared_ptr<cygnal::Element> app = getProperty("app");
+ std::shared_ptr<cygnal::Element> url = getProperty("tcUrl");
+ std::shared_ptr<cygnal::Element> file = getProperty("swfUrl");
+ std::shared_ptr<cygnal::Element> app = getProperty("app");
if (file) {
log_network(_("SWF file %s"), file->to_string());
@@ -591,61 +590,61 @@ RTMP::dump()
// are required. This seems to be a ping message, 12 byte header,
// system channel 2
// 02 00 00 00 00 00 06 04 00 00 00 00 00 00 00 00 00 00
-boost::shared_ptr<RTMP::rtmp_ping_t>
-RTMP::decodePing(boost::uint8_t *data)
+std::shared_ptr<RTMP::rtmp_ping_t>
+RTMP::decodePing(std::uint8_t *data)
{
// GNASH_REPORT_FUNCTION;
- boost::uint8_t *ptr = reinterpret_cast<boost::uint8_t *>(data);
- boost::shared_ptr<rtmp_ping_t> ping(new rtmp_ping_t);
+ std::uint8_t *ptr = reinterpret_cast<std::uint8_t *>(data);
+ std::shared_ptr<rtmp_ping_t> ping(new rtmp_ping_t);
// All the data fields in a ping message are 2 bytes long.
- boost::uint16_t type = ntohs(*reinterpret_cast<boost::uint16_t *>(ptr));
+ std::uint16_t type = ntohs(*reinterpret_cast<std::uint16_t *>(ptr));
ping->type = static_cast<rtmp_ping_e>(type);
- ptr += sizeof(boost::uint16_t);
+ ptr += sizeof(std::uint16_t);
- ping->target = ntohs(*reinterpret_cast<boost::uint16_t *>(ptr));
- ptr += sizeof(boost::uint16_t);
+ ping->target = ntohs(*reinterpret_cast<std::uint16_t *>(ptr));
+ ptr += sizeof(std::uint16_t);
- ping->param1 = ntohs(*reinterpret_cast<boost::uint16_t *>(ptr));
- ptr += sizeof(boost::uint16_t);
+ ping->param1 = ntohs(*reinterpret_cast<std::uint16_t *>(ptr));
+ ptr += sizeof(std::uint16_t);
-// ping->param2 = ntohs(*reinterpret_cast<boost::uint16_t *>(ptr));
-// ptr += sizeof(boost::uint16_t);
+// ping->param2 = ntohs(*reinterpret_cast<std::uint16_t *>(ptr));
+// ptr += sizeof(std::uint16_t);
-// ping->param3 = ntohs(*reinterpret_cast<boost::uint16_t *>(ptr));
+// ping->param3 = ntohs(*reinterpret_cast<std::uint16_t *>(ptr));
ping->param3 = 0;
return ping;
}
-boost::shared_ptr<RTMP::rtmp_ping_t>
+std::shared_ptr<RTMP::rtmp_ping_t>
RTMP::decodePing(cygnal::Buffer &buf)
{
// GNASH_REPORT_FUNCTION;
return decodePing(buf.reference());
}
-boost::shared_ptr<RTMP::user_event_t>
+std::shared_ptr<RTMP::user_event_t>
RTMP::decodeUserControl(cygnal::Buffer &buf)
{
// GNASH_REPORT_FUNCTION;
return decodeUserControl(buf.reference());
}
-boost::shared_ptr<RTMP::user_event_t>
-RTMP::decodeUserControl(boost::uint8_t *data)
+std::shared_ptr<RTMP::user_event_t>
+RTMP::decodeUserControl(std::uint8_t *data)
{
// GNASH_REPORT_FUNCTION;
- boost::uint8_t *ptr = reinterpret_cast<boost::uint8_t *>(data);
- boost::shared_ptr<user_event_t> user(new RTMP::user_event_t);
+ std::uint8_t *ptr = reinterpret_cast<std::uint8_t *>(data);
+ std::shared_ptr<user_event_t> user(new RTMP::user_event_t);
- boost::uint16_t type = ntohs(*reinterpret_cast<boost::uint16_t *>(ptr));
- boost::uint16_t eventid = static_cast<user_control_e>(type);
- ptr += sizeof(boost::uint16_t);
+ std::uint16_t type = ntohs(*reinterpret_cast<std::uint16_t *>(ptr));
+ std::uint16_t eventid = static_cast<user_control_e>(type);
+ ptr += sizeof(std::uint16_t);
- boost::uint32_t param1 = ntohl(*reinterpret_cast<boost::uint32_t *>(ptr));
- ptr += sizeof(boost::uint32_t);
+ std::uint32_t param1 = ntohl(*reinterpret_cast<std::uint32_t *>(ptr));
+ ptr += sizeof(std::uint32_t);
user->type = static_cast<user_control_e>(type);
user->param1 = param1;
@@ -661,8 +660,8 @@ RTMP::decodeUserControl(boost::uint8_t *data)
case STREAM_NODATA:
case STREAM_BUFFER:
{
- boost::uint32_t param2 = ntohl(*reinterpret_cast<boost::uint32_t *>(ptr));
- ptr += sizeof(boost::uint32_t);
+ std::uint32_t param2 = ntohl(*reinterpret_cast<std::uint32_t *>(ptr));
+ ptr += sizeof(std::uint32_t);
user->param2 = param2;
break;
}
@@ -682,21 +681,21 @@ RTMP::decodeUserControl(boost::uint8_t *data)
// 02 00 00 00 00 00 06 04 00 00 00 00 00 04 00 00 00 01
// Stream Start -
// 02 00 00 00 00 00 06 04 00 00 00 00 00 00 00 00 00 01
-boost::shared_ptr<cygnal::Buffer>
-RTMP::encodeUserControl(user_control_e eventid, boost::uint32_t data)
+std::shared_ptr<cygnal::Buffer>
+RTMP::encodeUserControl(user_control_e eventid, std::uint32_t data)
{
// GNASH_REPORT_FUNCTION;
- boost::uint32_t swapped = 0;
- boost::shared_ptr<cygnal::Buffer> buf;
+ std::uint32_t swapped = 0;
+ std::shared_ptr<cygnal::Buffer> buf;
if (eventid == STREAM_BUFFER) {
- buf.reset(new cygnal::Buffer(sizeof(boost::uint16_t) * 5));
+ buf.reset(new cygnal::Buffer(sizeof(std::uint16_t) * 5));
} else {
- buf.reset(new cygnal::Buffer(sizeof(boost::uint16_t) * 3));
+ buf.reset(new cygnal::Buffer(sizeof(std::uint16_t) * 3));
}
// Set the type of this ping message
- boost::uint16_t typefield = htons(eventid);
+ std::uint16_t typefield = htons(eventid);
*buf = typefield;
// All events have only 4 bytes of data, except Set Buffer, which
@@ -708,17 +707,17 @@ RTMP::encodeUserControl(user_control_e eventid, boost::uint32_t data)
case STREAM_EOF:
case STREAM_NODATA:
swapped = data;
- cygnal::swapBytes(&swapped, sizeof(boost::uint32_t));
+ cygnal::swapBytes(&swapped, sizeof(std::uint32_t));
*buf += swapped;
break;
case STREAM_BUFFER:
- buf.reset(new cygnal::Buffer(sizeof(boost::uint16_t) * 5));
+ buf.reset(new cygnal::Buffer(sizeof(std::uint16_t) * 5));
break;
case STREAM_LIVE:
case STREAM_PING:
case STREAM_PONG:
swapped = data;
- cygnal::swapBytes(&swapped, sizeof(boost::uint32_t));
+ cygnal::swapBytes(&swapped, sizeof(std::uint32_t));
*buf += swapped;
break;
default:
@@ -728,18 +727,18 @@ RTMP::encodeUserControl(user_control_e eventid, boost::uint32_t data)
return buf;
}
-boost::shared_ptr<RTMPMsg>
-RTMP::decodeMsgBody(boost::uint8_t *data, size_t size)
+std::shared_ptr<RTMPMsg>
+RTMP::decodeMsgBody(std::uint8_t *data, size_t size)
{
// GNASH_REPORT_FUNCTION;
cygnal::AMF amf_obj;
- boost::uint8_t *ptr = data;
- boost::uint8_t* tooFar = data + size;
+ std::uint8_t *ptr = data;
+ std::uint8_t* tooFar = data + size;
bool status = false;
- boost::shared_ptr<RTMPMsg> msg(new RTMPMsg);
+ std::shared_ptr<RTMPMsg> msg(new RTMPMsg);
// The first data object is the method name of this object.
- boost::shared_ptr<cygnal::Element> name = amf_obj.extractAMF(ptr, tooFar);
+ std::shared_ptr<cygnal::Element> name = amf_obj.extractAMF(ptr, tooFar);
if (name) {
ptr += name->getDataSize() + cygnal::AMF_HEADER_SIZE; // skip the length bytes too
} else {
@@ -750,7 +749,7 @@ RTMP::decodeMsgBody(boost::uint8_t *data, size_t size)
// The stream ID is the second data object. All messages have
// these two objects at the minimum.
- boost::shared_ptr<cygnal::Element> streamid = amf_obj.extractAMF(ptr, tooFar);
+ std::shared_ptr<cygnal::Element> streamid = amf_obj.extractAMF(ptr, tooFar);
if (streamid) {
// Most onStatus messages have the stream ID, but the Data
// Start onStatus message is basically just a marker that an
@@ -764,7 +763,7 @@ RTMP::decodeMsgBody(boost::uint8_t *data, size_t size)
return msg;
}
- if (name->to_string() != 0) {
+ if (name->to_string() != nullptr) {
msg->setMethodName(name->to_string());
}
@@ -781,9 +780,9 @@ RTMP::decodeMsgBody(boost::uint8_t *data, size_t size)
while (ptr < tooFar) {
// These pointers get deleted automatically when the msg
// object is deleted
- boost::shared_ptr<cygnal::Element> el = amf_obj.extractAMF(ptr, tooFar);
+ std::shared_ptr<cygnal::Element> el = amf_obj.extractAMF(ptr, tooFar);
ptr += amf_obj.totalsize();
- if (el == 0) {
+ if (el == nullptr) {
break;
}
msg->addObject(el);
@@ -795,7 +794,7 @@ RTMP::decodeMsgBody(boost::uint8_t *data, size_t size)
return msg;
}
-boost::shared_ptr<RTMPMsg>
+std::shared_ptr<RTMPMsg>
RTMP::decodeMsgBody(cygnal::Buffer &buf)
{
// GNASH_REPORT_FUNCTION;
@@ -805,13 +804,13 @@ RTMP::decodeMsgBody(cygnal::Buffer &buf)
// 02 00 00 00 00 00 04 01 00 00 00 00 00 00 10 00
// id=2 timestamp=0 body_size=4 content_type=0x01 dest=0
// Set chunk size 4096
-boost::shared_ptr<cygnal::Buffer>
+std::shared_ptr<cygnal::Buffer>
RTMP::encodeChunkSize(int size)
{
GNASH_REPORT_FUNCTION;
- boost::uint32_t swapped = htonl(size);
- boost::shared_ptr<cygnal::Buffer> buf(new cygnal::Buffer(sizeof(boost::uint32_t)));
+ std::uint32_t swapped = htonl(size);
+ std::shared_ptr<cygnal::Buffer> buf(new cygnal::Buffer(sizeof(std::uint32_t)));
*buf += swapped;
return buf;
@@ -821,17 +820,17 @@ void
RTMP::decodeChunkSize()
{
GNASH_REPORT_FUNCTION;
- // _chunksize[rthead->channel] = ntohl(*reinterpret_cast<boost::uint32_t *>(ptr + rthead->head_size));
+ // _chunksize[rthead->channel] = ntohl(*reinterpret_cast<std::uint32_t *>(ptr + rthead->head_size));
// log_network("Setting packet chunk size to %d.", _chunksize);
log_unimpl(__PRETTY_FUNCTION__);
}
-boost::shared_ptr<cygnal::Buffer>
+std::shared_ptr<cygnal::Buffer>
RTMP::encodeBytesRead()
{
GNASH_REPORT_FUNCTION;
log_unimpl(__PRETTY_FUNCTION__);
- return boost::shared_ptr<cygnal::Buffer>((cygnal::Buffer*)0);
+ return std::shared_ptr<cygnal::Buffer>((cygnal::Buffer*)nullptr);
}
void
@@ -841,12 +840,12 @@ RTMP::decodeBytesRead()
log_unimpl(__PRETTY_FUNCTION__);
}
-boost::shared_ptr<cygnal::Buffer>
+std::shared_ptr<cygnal::Buffer>
RTMP::encodeServer()
{
GNASH_REPORT_FUNCTION;
log_unimpl(__PRETTY_FUNCTION__);
- return boost::shared_ptr<cygnal::Buffer>((cygnal::Buffer*)0);
+ return std::shared_ptr<cygnal::Buffer>((cygnal::Buffer*)nullptr);
}
void
@@ -856,12 +855,12 @@ RTMP::decodeServer()
log_unimpl(__PRETTY_FUNCTION__);
}
-boost::shared_ptr<cygnal::Buffer>
+std::shared_ptr<cygnal::Buffer>
RTMP::encodeClient()
{
GNASH_REPORT_FUNCTION;
log_unimpl(__PRETTY_FUNCTION__);
- return boost::shared_ptr<cygnal::Buffer>((cygnal::Buffer*)0);
+ return std::shared_ptr<cygnal::Buffer>((cygnal::Buffer*)nullptr);
}
void
@@ -871,12 +870,12 @@ RTMP::decodeClient()
log_unimpl(__PRETTY_FUNCTION__);
}
-boost::shared_ptr<cygnal::Buffer>
+std::shared_ptr<cygnal::Buffer>
RTMP::encodeAudioData()
{
GNASH_REPORT_FUNCTION;
log_unimpl(__PRETTY_FUNCTION__);
- return boost::shared_ptr<cygnal::Buffer>((cygnal::Buffer*)0);
+ return std::shared_ptr<cygnal::Buffer>((cygnal::Buffer*)nullptr);
}
void
@@ -886,12 +885,12 @@ RTMP::decodeAudioData()
log_unimpl(__PRETTY_FUNCTION__);
}
-boost::shared_ptr<cygnal::Buffer>
+std::shared_ptr<cygnal::Buffer>
RTMP::encodeVideoData()
{
GNASH_REPORT_FUNCTION;
log_unimpl(__PRETTY_FUNCTION__);
- return boost::shared_ptr<cygnal::Buffer>((cygnal::Buffer*)0);
+ return std::shared_ptr<cygnal::Buffer>((cygnal::Buffer*)nullptr);
}
void
@@ -901,12 +900,12 @@ RTMP::decodeVideoData()
log_unimpl(__PRETTY_FUNCTION__);
}
-boost::shared_ptr<cygnal::Buffer>
+std::shared_ptr<cygnal::Buffer>
RTMP::encodeNotify()
{
GNASH_REPORT_FUNCTION;
log_unimpl(__PRETTY_FUNCTION__);
- return boost::shared_ptr<cygnal::Buffer>((cygnal::Buffer*)0);
+ return std::shared_ptr<cygnal::Buffer>((cygnal::Buffer*)nullptr);
}
void
@@ -916,12 +915,12 @@ RTMP::decodeNotify()
log_unimpl(__PRETTY_FUNCTION__);
}
-boost::shared_ptr<cygnal::Buffer>
+std::shared_ptr<cygnal::Buffer>
RTMP::encodeSharedObj()
{
GNASH_REPORT_FUNCTION;
log_unimpl(__PRETTY_FUNCTION__);
- return boost::shared_ptr<cygnal::Buffer>((cygnal::Buffer*)0);
+ return std::shared_ptr<cygnal::Buffer>((cygnal::Buffer*)nullptr);
}
void
@@ -931,12 +930,12 @@ RTMP::decodeSharedObj()
log_unimpl(__PRETTY_FUNCTION__);
}
-boost::shared_ptr<cygnal::Buffer>
+std::shared_ptr<cygnal::Buffer>
RTMP::encodeInvoke()
{
GNASH_REPORT_FUNCTION;
log_unimpl(__PRETTY_FUNCTION__);
- return boost::shared_ptr<cygnal::Buffer>((cygnal::Buffer*)0);
+ return std::shared_ptr<cygnal::Buffer>((cygnal::Buffer*)nullptr);
}
void
RTMP::decodeInvoke()
@@ -971,7 +970,7 @@ RTMP::sendMsg(int fd, int channel, rtmp_headersize_e head_size,
bool
RTMP::sendMsg(int channel, rtmp_headersize_e head_size,
size_t total_size, content_types_e type,
- RTMPMsg::rtmp_source_e routing, boost::uint8_t *data, size_t size)
+ RTMPMsg::rtmp_source_e routing, std::uint8_t *data, size_t size)
{
// GNASH_REPORT_FUNCTION;
return sendMsg(getFileFd(), channel, head_size, total_size, type, routing, data, size);
@@ -980,7 +979,7 @@ RTMP::sendMsg(int channel, rtmp_headersize_e head_size,
bool
RTMP::sendMsg(int fd, int channel, rtmp_headersize_e head_size,
size_t total_size, content_types_e type,
- RTMPMsg::rtmp_source_e routing, boost::uint8_t *data, size_t size)
+ RTMPMsg::rtmp_source_e routing, std::uint8_t *data, size_t size)
{
// GNASH_REPORT_FUNCTION;
int ret = 0;
@@ -1000,20 +999,20 @@ RTMP::sendMsg(int fd, int channel, rtmp_headersize_e head_size,
// Figure out how many packets it'll take to send this data.
int pkts = size/_chunksize[channel];
- boost::shared_ptr<cygnal::Buffer> bigbuf(new cygnal::Buffer(size+pkts+100));
+ std::shared_ptr<cygnal::Buffer> bigbuf(new cygnal::Buffer(size+pkts+100));
// This builds the full header, which is required as the first part
// of the packet.
- boost::shared_ptr<cygnal::Buffer> head = encodeHeader(channel, head_size,
+ std::shared_ptr<cygnal::Buffer> head = encodeHeader(channel, head_size,
total_size, type, routing);
// When more data is sent than fits in the chunksize for this
// channel, it gets broken into chunksize pieces, and each piece
// after the first packet is sent gets a one byte header instead.
#if 0
- boost::shared_ptr<cygnal::Buffer> cont_head = encodeHeader(channel, RTMP::HEADER_1);
+ std::shared_ptr<cygnal::Buffer> cont_head = encodeHeader(channel, RTMP::HEADER_1);
#else
- boost::shared_ptr<cygnal::Buffer> cont_head(new cygnal::Buffer(1));
- boost::uint8_t foo = 0xc3;
+ std::shared_ptr<cygnal::Buffer> cont_head(new cygnal::Buffer(1));
+ std::uint8_t foo = 0xc3;
*cont_head = foo;
#endif
@@ -1070,7 +1069,7 @@ RTMP::sendMsg(int fd, int channel, rtmp_headersize_e head_size,
ret, size-nbytes);
}
#else
- if (data != 0) {
+ if (data != nullptr) {
bigbuf->append(data + nbytes, partial);
}
#endif
@@ -1100,7 +1099,7 @@ RTMP::sendRecvMsg(cygnal::Buffer &bufin)
{
GNASH_REPORT_FUNCTION;
// size_t total_size = buf2->size() - 6; // FIXME: why drop 6 bytes ?
- boost::shared_ptr<cygnal::Buffer> head = encodeHeader(amf_index, head_size, total_size,
+ std::shared_ptr<cygnal::Buffer> head = encodeHeader(amf_index, head_size, total_size,
type, routing);
// int ret = 0;
int ret = writeNet(head->reference(), head->size()); // send the header first
@@ -1112,8 +1111,8 @@ RTMP::sendRecvMsg(cygnal::Buffer &bufin)
RTMP::rtmp_head_t *rthead = 0;
RTMPMsg *msg = 0;
- boost::shared_ptr<cygnal::Buffer> buf;
- boost::uint8_t *ptr = 0;
+ std::shared_ptr<cygnal::Buffer> buf;
+ std::uint8_t *ptr = 0;
buf = recvMsg(1); // use a 1 second timeout
@@ -1145,7 +1144,7 @@ RTMP::sendRecvMsg(cygnal::Buffer &bufin)
switch (rthead->type) {
case CHUNK_SIZE:
log_networ(_("Got CHUNK_SIZE packet!!!"));
- _chunksize[rthead->channel] = ntohl(*reinterpret_cast<boost::uint32_t *>(ptr + rthead->head_size));
+ _chunksize[rthead->channel] = ntohl(*reinterpret_cast<std::uint32_t *>(ptr + rthead->head_size));
log_network(_("Setting packet chunk size to %d."), _chunksize);
// decodeChunkSize();
break;
@@ -1195,7 +1194,7 @@ RTMP::sendRecvMsg(cygnal::Buffer &bufin)
case VIDEO_DATA:
{
log_network(_("Got VIDEO packets!!!"));
- boost::shared_ptr<cygnal::Buffer> frame;
+ std::shared_ptr<cygnal::Buffer> frame;
do {
frame = recvMsg(1); // use a 1 second timeout
if (frame) {
@@ -1251,7 +1250,7 @@ RTMP::sendRecvMsg(cygnal::Buffer &bufin)
// Receive a message, which is a series of AMF elements, seperated
// by a one byte header at regular byte intervals. (128 bytes for
// video data by default). Each message main contain multiple packets.
-boost::shared_ptr<cygnal::Buffer>
+std::shared_ptr<cygnal::Buffer>
RTMP::recvMsg()
{
// GNASH_REPORT_FUNCTION;
@@ -1262,7 +1261,7 @@ RTMP::recvMsg()
// more efficient. As these reads may cross packet boundaries, and they may
// also include the RTMP header every _chunksize bytes, this raw data will
// need to be processed later on.
-boost::shared_ptr<cygnal::Buffer>
+std::shared_ptr<cygnal::Buffer>
RTMP::recvMsg(int fd)
{
// GNASH_REPORT_FUNCTION;
@@ -1271,7 +1270,7 @@ RTMP::recvMsg(int fd)
//bool nopacket = true;
// Read really big packets, they get split into the smaller ones when 'split'
- boost::shared_ptr<cygnal::Buffer> buf(new cygnal::Buffer(3074));
+ std::shared_ptr<cygnal::Buffer> buf(new cygnal::Buffer(3074));
do {
ret = readNet(fd, buf->reference()+ret, buf->size()-ret, _timeout);
// We got data. Resize the buffer if necessary.
@@ -1313,32 +1312,32 @@ RTMP::recvMsg(int fd)
// but RTMP uses a weird scheme of a standard header, and then every chunksize
// bytes another 1 byte RTMP header. The header itself is not part of the byte
// count.
-boost::shared_ptr<RTMP::queues_t>
+std::shared_ptr<RTMP::queues_t>
RTMP::split(cygnal::Buffer &buf)
{
// GNASH_REPORT_FUNCTION;
return split(buf.reference(), buf.allocated());
}
-boost::shared_ptr<RTMP::queues_t>
-RTMP::split(boost::uint8_t *data, size_t size)
+std::shared_ptr<RTMP::queues_t>
+RTMP::split(std::uint8_t *data, size_t size)
{
// GNASH_REPORT_FUNCTION;
- if (data == 0) {
+ if (data == nullptr) {
log_error(_("Buffer pointer is invalid."));
}
- boost::shared_ptr<RTMP::queues_t> channels(new RTMP::queues_t);
+ std::shared_ptr<RTMP::queues_t> channels(new RTMP::queues_t);
// split the buffer at the chunksize boundary
- boost::uint8_t *ptr = 0;
- boost::shared_ptr<rtmp_head_t> rthead(new rtmp_head_t);
+ std::uint8_t *ptr = nullptr;
+ std::shared_ptr<rtmp_head_t> rthead(new rtmp_head_t);
size_t pktsize = 0;
//size_t nbytes = 0;
ptr = data;
- boost::shared_ptr<cygnal::Buffer> chunk;
+ std::shared_ptr<cygnal::Buffer> chunk;
// There may be multiple messages in this Buffer, so we walk a
// temp pointer through the contents of the Buffer.
while ((ptr - data) < static_cast<int>(size)) {
@@ -1386,7 +1385,7 @@ RTMP::split(boost::uint8_t *data, size_t size)
#if 1
// Red5 version 5 sends out PING messages with a 1 byte header. I think this
// may be a bug in Red5, but we should handle it anyway.
- if (chunk == 0) {
+ if (chunk == nullptr) {
cerr << "Chunk wasn't allocated! " << (rthead->bodysize + rthead->head_size)
<< std::endl;
chunk.reset(new cygnal::Buffer(rthead->bodysize + rthead->head_size));
diff --git a/cygnal/libnet/rtmp.h b/cygnal/libnet/rtmp.h
index 8e44027..f8f816a 100644
--- a/cygnal/libnet/rtmp.h
+++ b/cygnal/libnet/rtmp.h
@@ -20,9 +20,8 @@
#define GNASH_LIBNET_RTMP_H
#include <deque>
-#include <boost/cstdint.hpp>
-#include <boost/shared_ptr.hpp>
-#include <boost/scoped_ptr.hpp>
+#include <cstdint>
+#include <memory>
#include <boost/lexical_cast.hpp>
#include <string>
#include <vector>
@@ -70,7 +69,7 @@ namespace gnash
const int RTMP_HANDSHAKE_VERSION_SIZE = 1;
/// \var RTMP_VERSION
/// The RTMP version number for now is always a 3.
-const boost::uint8_t RTMP_VERSION = 0x3;
+const std::uint8_t RTMP_VERSION = 0x3;
/// \var
/// This is the total size of an RTMP packet, not including the
/// version field.
@@ -129,9 +128,9 @@ const char TERMINATOR = 0x09;
// The third and fourth bytes form an integer value that specifies the
// number of headers.
typedef struct {
- boost::uint8_t version;
- boost::uint8_t source;
- boost::uint32_t count;
+ std::uint8_t version;
+ std::uint8_t source;
+ std::uint32_t count;
} amfpacket_t;
typedef enum {
@@ -243,15 +242,15 @@ public:
} rtmp_op_e;
typedef struct {
rtmp_ping_e type; // the type of the ping message
- boost::uint16_t target; // all Ping message data fields
- boost::uint16_t param1; // are 2 bytes long
- boost::uint16_t param2;
- boost::uint16_t param3;
+ std::uint16_t target; // all Ping message data fields
+ std::uint16_t param1; // are 2 bytes long
+ std::uint16_t param2;
+ std::uint16_t param3;
} rtmp_ping_t;
typedef struct {
user_control_e type;
- boost::uint32_t param1;
- boost::uint32_t param2; // only used by
+ std::uint32_t param1;
+ std::uint32_t param2; // only used by
} user_event_t;
typedef enum {
RTMP_STATE_HANDSHAKE_SEND,
@@ -267,7 +266,7 @@ public:
// rtmp_status_e status;
// std::string method;
// double streamid;
-// std::vector<boost::shared_ptr<cygnal::Element> > objs;
+// std::vector<std::shared_ptr<cygnal::Element> > objs;
// } rtmp_msg_t;
typedef enum {
RTMP_ERR_UNDEF,
@@ -296,8 +295,8 @@ public:
content_types_e type;
} rtmp_head_t;
typedef struct {
- boost::uint32_t uptime;
- boost::uint8_t version[4];
+ std::uint32_t uptime;
+ std::uint8_t version[4];
} rtmp_handshake_head_t;
typedef enum {
HEADER_12 = 0x0,
@@ -315,7 +314,7 @@ public:
// typedef struct {
// amf::amfutf8_t target;
// amf::amfutf8_t response;
-// boost::uint32_t length;
+// std::uint32_t length;
// void *data;
// } rtmp_body_t;
@@ -323,14 +322,14 @@ public:
virtual ~RTMP();
// Decode
- boost::shared_ptr<rtmp_head_t> decodeHeader(boost::uint8_t *header);
- boost::shared_ptr<rtmp_head_t> decodeHeader(cygnal::Buffer &data);
+ std::shared_ptr<rtmp_head_t> decodeHeader(std::uint8_t *header);
+ std::shared_ptr<rtmp_head_t> decodeHeader(cygnal::Buffer &data);
- boost::shared_ptr<cygnal::Buffer> encodeHeader(int amf_index,
+ std::shared_ptr<cygnal::Buffer> encodeHeader(int amf_index,
rtmp_headersize_e head_size,
size_t total_size, content_types_e type,
RTMPMsg::rtmp_source_e routing);
- boost::shared_ptr<cygnal::Buffer> encodeHeader(int amf_index,
+ std::shared_ptr<cygnal::Buffer> encodeHeader(int amf_index,
rtmp_headersize_e head_size);
void addProperty(cygnal::Element &el);
@@ -338,7 +337,7 @@ public:
void addProperty(std::string &name, cygnal::Element &el);
cygnal::Element &getProperty(const std::string &name);
// void setHandler(Handler *hand) { _handler = hand; };
- int headerSize(boost::uint8_t header);
+ int headerSize(std::uint8_t header);
rtmp_head_t *getHeader() { return &_header; };
int getHeaderSize() { return _header.head_size; };
@@ -349,49 +348,49 @@ public:
int getMysteryWord() { return _mystery_word; };
// Decode an RTMP message
- boost::shared_ptr<RTMPMsg> decodeMsgBody(boost::uint8_t *data, size_t size);
- boost::shared_ptr<RTMPMsg> decodeMsgBody(cygnal::Buffer &buf);
+ std::shared_ptr<RTMPMsg> decodeMsgBody(std::uint8_t *data, size_t size);
+ std::shared_ptr<RTMPMsg> decodeMsgBody(cygnal::Buffer &buf);
- virtual boost::shared_ptr<rtmp_ping_t> decodePing(boost::uint8_t *data);
- boost::shared_ptr<rtmp_ping_t> decodePing(cygnal::Buffer &buf);
+ virtual std::shared_ptr<rtmp_ping_t> decodePing(std::uint8_t *data);
+ std::shared_ptr<rtmp_ping_t> decodePing(cygnal::Buffer &buf);
- virtual boost::shared_ptr<user_event_t> decodeUserControl(boost::uint8_t *data);
- boost::shared_ptr<user_event_t> decodeUserControl(cygnal::Buffer &buf);
- virtual boost::shared_ptr<cygnal::Buffer> encodeUserControl(user_control_e, boost::uint32_t data);
+ virtual std::shared_ptr<user_event_t> decodeUserControl(std::uint8_t *data);
+ std::shared_ptr<user_event_t> decodeUserControl(cygnal::Buffer &buf);
+ virtual std::shared_ptr<cygnal::Buffer> encodeUserControl(user_control_e, std::uint32_t data);
// These are handlers for the various types
- virtual boost::shared_ptr<cygnal::Buffer> encodeChunkSize(int size);
+ virtual std::shared_ptr<cygnal::Buffer> encodeChunkSize(int size);
virtual void decodeChunkSize();
- virtual boost::shared_ptr<cygnal::Buffer> encodeBytesRead();
+ virtual std::shared_ptr<cygnal::Buffer> encodeBytesRead();
virtual void decodeBytesRead();
- virtual boost::shared_ptr<cygnal::Buffer> encodeServer();
+ virtual std::shared_ptr<cygnal::Buffer> encodeServer();
virtual void decodeServer();
- virtual boost::shared_ptr<cygnal::Buffer> encodeClient();
+ virtual std::shared_ptr<cygnal::Buffer> encodeClient();
virtual void decodeClient();
- virtual boost::shared_ptr<cygnal::Buffer> encodeAudioData();
+ virtual std::shared_ptr<cygnal::Buffer> encodeAudioData();
virtual void decodeAudioData();
- virtual boost::shared_ptr<cygnal::Buffer> encodeVideoData();
+ virtual std::shared_ptr<cygnal::Buffer> encodeVideoData();
virtual void decodeVideoData();
- virtual boost::shared_ptr<cygnal::Buffer> encodeNotify();
+ virtual std::shared_ptr<cygnal::Buffer> encodeNotify();
virtual void decodeNotify();
- virtual boost::shared_ptr<cygnal::Buffer> encodeSharedObj();
+ virtual std::shared_ptr<cygnal::Buffer> encodeSharedObj();
virtual void decodeSharedObj();
- virtual boost::shared_ptr<cygnal::Buffer> encodeInvoke();
+ virtual std::shared_ptr<cygnal::Buffer> encodeInvoke();
virtual void decodeInvoke();
// Receive a message, which is a series of AMF elements, seperated
// by a one byte header at regular byte intervals. (128 bytes for
// video data by default). Each message may contain multiple packets.
- boost::shared_ptr<cygnal::Buffer> recvMsg();
- boost::shared_ptr<cygnal::Buffer> recvMsg(int fd);
+ std::shared_ptr<cygnal::Buffer> recvMsg();
+ std::shared_ptr<cygnal::Buffer> recvMsg(int fd);
// Send a message, usually a single ActionScript object. This message
// may be broken down into a series of packets on a regular byte
@@ -406,10 +405,10 @@ public:
RTMPMsg::rtmp_source_e routing, cygnal::Buffer &data);
bool sendMsg(int channel, rtmp_headersize_e head_size,
size_t total_size, content_types_e type,
- RTMPMsg::rtmp_source_e routing, boost::uint8_t *data, size_t size);
+ RTMPMsg::rtmp_source_e routing, std::uint8_t *data, size_t size);
bool sendMsg(int fd, int channel, rtmp_headersize_e head_size,
size_t total_size, content_types_e type,
- RTMPMsg::rtmp_source_e routing, boost::uint8_t *data, size_t size);
+ RTMPMsg::rtmp_source_e routing, std::uint8_t *data, size_t size);
#if 0
// Send a Msg, and expect a response back of some kind.
@@ -422,8 +421,8 @@ public:
// but RTMP uses a weird scheme of a standard header, and then every chunksize
// bytes another 1 byte RTMP header. The header itself is not part of the byte
// count.
- boost::shared_ptr<queues_t> split(cygnal::Buffer &buf);
- boost::shared_ptr<queues_t> split(boost::uint8_t *data, size_t size);
+ std::shared_ptr<queues_t> split(cygnal::Buffer &buf);
+ std::shared_ptr<queues_t> split(std::uint8_t *data, size_t size);
CQue &operator[] (size_t x) { return _queues[x]; }
@@ -431,10 +430,10 @@ public:
/// The time on most systems these days is a 64 bit long, but swf
/// is old, so it only uses a 32 bit integer instead. We know casting
/// looses precision, but that's just the way it is in RTMP.
- boost::uint32_t getTime() {
+ std::uint32_t getTime() {
time_t t;
time(&t);
- return boost::lexical_cast<boost::uint32_t>(t);
+ return boost::lexical_cast<std::uint32_t>(t);
};
void dump();
diff --git a/cygnal/libnet/rtmp_client.cpp b/cygnal/libnet/rtmp_client.cpp
index 7b3f693..99e3d72 100644
--- a/cygnal/libnet/rtmp_client.cpp
+++ b/cygnal/libnet/rtmp_client.cpp
@@ -31,7 +31,6 @@
# include <netinet/in.h>
#endif
-#include <boost/shared_ptr.hpp>
#include <boost/lexical_cast.hpp>
#include "log.h"
#include "rc.h"
@@ -46,7 +45,7 @@
#include "GnashSleep.h"
#include "URL.h"
-typedef boost::shared_ptr<cygnal::Element> ElementSharedPtr;
+typedef std::shared_ptr<cygnal::Element> ElementSharedPtr;
namespace gnash
{
@@ -79,7 +78,7 @@ RTMPClient::~RTMPClient()
// Make the NetConnection object that is used to connect to the
// server.
-boost::shared_ptr<cygnal::Buffer>
+std::shared_ptr<cygnal::Buffer>
RTMPClient::encodeConnect()
{
// GNASH_REPORT_FUNCTION;
@@ -87,7 +86,7 @@ RTMPClient::encodeConnect()
return encodeConnect(_path.c_str());
}
-boost::shared_ptr<cygnal::Buffer>
+std::shared_ptr<cygnal::Buffer>
RTMPClient::encodeConnect(const char *uri)
{
// GNASH_REPORT_FUNCTION;
@@ -97,7 +96,7 @@ RTMPClient::encodeConnect(const char *uri)
RTMPClient::SEEK);
}
-boost::shared_ptr<cygnal::Buffer>
+std::shared_ptr<cygnal::Buffer>
RTMPClient::encodeConnect(const char *uri,
double audioCodecs, double videoCodecs,
double videoFunction)
@@ -133,7 +132,7 @@ RTMPClient::encodeConnect(const char *uri,
port = RTMP_PORT;
}
} else {
- port = strtol(portstr.c_str(), NULL, 0) & 0xffff;
+ port = strtol(portstr.c_str(), nullptr, 0) & 0xffff;
}
@@ -166,7 +165,7 @@ RTMPClient::encodeConnect(const char *uri,
pageUrl.c_str());
}
-boost::shared_ptr<cygnal::Buffer>
+std::shared_ptr<cygnal::Buffer>
RTMPClient::encodeConnect(const char *app, const char *swfUrl, const char *tcUrl,
double audioCodecs, double videoCodecs, double videoFunction,
const char *pageUrl)
@@ -192,7 +191,7 @@ RTMPClient::encodeConnect(const char *app, const char *swfUrl, const char *tcUrl
appnode->makeString("app", app);
obj->addProperty(appnode);
- const char *version = 0;
+ const char *version = nullptr;
if (rcfile.getFlashVersionString().size() > 0) {
version = rcfile.getFlashVersionString().c_str();
} else {
@@ -247,11 +246,11 @@ RTMPClient::encodeConnect(const char *app, const char *swfUrl, const char *tcUrl
// RTMP::INVOKE, RTMP::FROM_CLIENT);
// const char *rtmpStr = "03 00 00 04 00 01 1f 14 00 00 00 00";
// Buffer *rtmpBuf = hex2mem(rtmpStr);
- boost::shared_ptr<cygnal::Buffer> conobj = connect->encode();
- boost::shared_ptr<cygnal::Buffer> numobj = connum->encode();
- boost::shared_ptr<cygnal::Buffer> encobj = obj->encode();
+ std::shared_ptr<cygnal::Buffer> conobj = connect->encode();
+ std::shared_ptr<cygnal::Buffer> numobj = connum->encode();
+ std::shared_ptr<cygnal::Buffer> encobj = obj->encode();
- boost::shared_ptr<cygnal::Buffer> buf(new cygnal::Buffer(conobj->size() + numobj->size() + encobj->size()));
+ std::shared_ptr<cygnal::Buffer> buf(new cygnal::Buffer(conobj->size() + numobj->size() + encobj->size()));
*buf += conobj;
*buf += numobj;
*buf += encobj;
@@ -269,7 +268,7 @@ RTMPClient::connectToServer(const std::string &url)
// If we're currently not connected, build and send the
// initial handshake packet.
if (connected() == false) {
- short port = strtol(uri.port().c_str(), NULL, 0) & 0xffff;
+ short port = strtol(uri.port().c_str(), nullptr, 0) & 0xffff;
if (!createClient(uri.hostname(), port)) {
return false;
}
@@ -278,7 +277,7 @@ RTMPClient::connectToServer(const std::string &url)
// to be on the end of the second block of handshake data.
// We build this here so we can get the total encoded
// size of the object.
- boost::shared_ptr<cygnal::Buffer> ncbuf = encodeConnect();
+ std::shared_ptr<cygnal::Buffer> ncbuf = encodeConnect();
// As at this point we don't have an RTMP connection,
// we can't use the regular sendMsg(), that handles the RTMP
@@ -286,7 +285,7 @@ RTMPClient::connectToServer(const std::string &url)
// always one by, so we just add it by hand. It doesn't matter
// as long as the channel number matches the one used to
// create the initial RTMP packet header.
- boost::scoped_ptr<cygnal::Buffer> newbuf(new cygnal::Buffer(ncbuf->size() + 5));
+ std::unique_ptr<cygnal::Buffer> newbuf(new cygnal::Buffer(ncbuf->size() + 5));
size_t nbytes = 0;
size_t chunk = RTMP_VIDEO_PACKET_SIZE;
do {
@@ -297,24 +296,24 @@ RTMPClient::connectToServer(const std::string &url)
newbuf->append(ncbuf->reference() + nbytes, chunk);
nbytes += chunk;
if (chunk == static_cast<size_t>(RTMP_VIDEO_PACKET_SIZE)) {
- boost::uint8_t headone = 0xc3;
+ std::uint8_t headone = 0xc3;
*newbuf += headone;
}
} while (nbytes < ncbuf->allocated());
- boost::shared_ptr<cygnal::Buffer> head = encodeHeader(0x3,
+ std::shared_ptr<cygnal::Buffer> head = encodeHeader(0x3,
RTMP::HEADER_12, ncbuf->allocated(),
RTMP::INVOKE, RTMPMsg::FROM_CLIENT);
// Build the first handshake packet, and send it to the
// server.
- boost::shared_ptr<cygnal::Buffer> handshake1 = handShakeRequest();
+ std::shared_ptr<cygnal::Buffer> handshake1 = handShakeRequest();
if (!handshake1) {
log_error(_("RTMP handshake request failed"));
return false;
}
- boost::scoped_ptr<cygnal::Buffer> handshake2(new cygnal::Buffer
+ std::unique_ptr<cygnal::Buffer> handshake2(new cygnal::Buffer
((RTMP_HANDSHAKE_SIZE * 2) + newbuf->allocated()
+ RTMP_MAX_HEADER_SIZE));
@@ -338,13 +337,13 @@ RTMPClient::connectToServer(const std::string &url)
}
// give the server time to process our NetConnection::connect() request
- boost::shared_ptr<cygnal::Buffer> response;
- boost::shared_ptr<RTMP::rtmp_head_t> rthead;
- boost::shared_ptr<RTMP::queues_t> que;
+ std::shared_ptr<cygnal::Buffer> response;
+ std::shared_ptr<RTMP::rtmp_head_t> rthead;
+ std::shared_ptr<RTMP::queues_t> que;
RTMPClient::msgque_t msgque = recvResponse();
while (msgque.size()) {
- boost::shared_ptr<RTMPMsg> msg = msgque.front();
+ std::shared_ptr<RTMPMsg> msg = msgque.front();
msgque.pop_front();
if (msg->getStatus() == RTMPMsg::NC_CONNECT_SUCCESS) {
log_network(_("Sent NetConnection Connect message successfully"));
@@ -358,29 +357,29 @@ RTMPClient::connectToServer(const std::string &url)
return true;
}
-boost::shared_ptr<cygnal::Buffer>
+std::shared_ptr<cygnal::Buffer>
RTMPClient::encodeEchoRequest(const std::string &method, double id, cygnal::Element &el)
{
// GNASH_REPORT_FUNCTION;
- boost::shared_ptr<cygnal::Element> str(new cygnal::Element);
+ std::shared_ptr<cygnal::Element> str(new cygnal::Element);
str->makeString(method);
- boost::shared_ptr<cygnal::Buffer> strobj = str->encode();
+ std::shared_ptr<cygnal::Buffer> strobj = str->encode();
// Encod ethe stream ID
- boost::shared_ptr<cygnal::Element> num(new cygnal::Element);
+ std::shared_ptr<cygnal::Element> num(new cygnal::Element);
num->makeNumber(id);
- boost::shared_ptr<cygnal::Buffer> numobj = num->encode();
+ std::shared_ptr<cygnal::Buffer> numobj = num->encode();
// Set the NULL object element that follows the stream ID
- boost::shared_ptr<cygnal::Element> null(new cygnal::Element);
+ std::shared_ptr<cygnal::Element> null(new cygnal::Element);
null->makeNull();
- boost::shared_ptr<cygnal::Buffer> nullobj = null->encode();
+ std::shared_ptr<cygnal::Buffer> nullobj = null->encode();
- boost::shared_ptr<cygnal::Buffer> elobj = el.encode();
+ std::shared_ptr<cygnal::Buffer> elobj = el.encode();
size_t totalsize = strobj->size() + numobj->size() + nullobj->size() + elobj->size();
- boost::shared_ptr<cygnal::Buffer> buf(new cygnal::Buffer(totalsize));
+ std::shared_ptr<cygnal::Buffer> buf(new cygnal::Buffer(totalsize));
*buf += strobj;
*buf += numobj;
@@ -393,7 +392,7 @@ RTMPClient::encodeEchoRequest(const std::string &method, double id, cygnal::Elem
// 43 00 1a 21 00 00 19 14 02 00 0c 63 72 65 61 74 C..!.......creat
// 65 53 74 72 65 61 6d 00 40 08 00 00 00 00 00 00 eStream. at .......
// 05 .
-boost::shared_ptr<cygnal::Buffer>
+std::shared_ptr<cygnal::Buffer>
RTMPClient::encodeStream(double id)
{
// GNASH_REPORT_FUNCTION;
@@ -401,22 +400,22 @@ RTMPClient::encodeStream(double id)
struct timespec now;
clock_gettime (CLOCK_REALTIME, &now);
- boost::shared_ptr<cygnal::Element> str(new cygnal::Element);
+ std::shared_ptr<cygnal::Element> str(new cygnal::Element);
str->makeString("createStream");
- boost::shared_ptr<cygnal::Buffer> strobj = str->encode();
+ std::shared_ptr<cygnal::Buffer> strobj = str->encode();
- boost::shared_ptr<cygnal::Element> num(new cygnal::Element);
+ std::shared_ptr<cygnal::Element> num(new cygnal::Element);
num->makeNumber(id);
- boost::shared_ptr<cygnal::Buffer> numobj = num->encode();
+ std::shared_ptr<cygnal::Buffer> numobj = num->encode();
// Set the NULL object element that follows the stream ID
- boost::shared_ptr<cygnal::Element> null(new cygnal::Element);
+ std::shared_ptr<cygnal::Element> null(new cygnal::Element);
null->makeNull();
- boost::shared_ptr<cygnal::Buffer> nullobj = null->encode();
+ std::shared_ptr<cygnal::Buffer> nullobj = null->encode();
size_t totalsize = strobj->size() + numobj->size() + nullobj->size();
- boost::shared_ptr<cygnal::Buffer> buf(new cygnal::Buffer(totalsize));
+ std::shared_ptr<cygnal::Buffer> buf(new cygnal::Buffer(totalsize));
*buf += strobj;
*buf += numobj;
@@ -431,21 +430,21 @@ RTMPClient::encodeStream(double id)
// 6f 6e 32 5f 66 6c 61 73 68 38 5f 77 5f 61 75 64 on2_flash8_w_aud
// 69 6f 2e 66 6c 76 c2 00 03 00 00 00 01 00 00 27 io.flv.........'
// 10
-boost::shared_ptr<cygnal::Buffer>
+std::shared_ptr<cygnal::Buffer>
RTMPClient::encodeStreamOp(double id, rtmp_op_e op, bool flag)
{
// GNASH_REPORT_FUNCTION;
return encodeStreamOp(id, op, flag, "", 0);
}
-boost::shared_ptr<cygnal::Buffer>
+std::shared_ptr<cygnal::Buffer>
RTMPClient::encodeStreamOp(double id, rtmp_op_e op, bool flag, double pos)
{
// GNASH_REPORT_FUNCTION;
return encodeStreamOp(id, op, flag, "", pos);
}
-boost::shared_ptr<cygnal::Buffer>
+std::shared_ptr<cygnal::Buffer>
RTMPClient::encodeStreamOp(double id, rtmp_op_e op, bool flag, const std::string &name)
{
// GNASH_REPORT_FUNCTION;
@@ -458,7 +457,7 @@ RTMPClient::encodeStreamOp(double id, rtmp_op_e op, bool flag, const std::string
// A pause packet is the operation name "pause", followed by the stream ID,
// then a NULL object, a boolean (always true from what I can tell), and then
// a location, which appears to always be 0.
-boost::shared_ptr<cygnal::Buffer>
+std::shared_ptr<cygnal::Buffer>
RTMPClient::encodeStreamOp(double id, rtmp_op_e op, bool flag, const std::string &name, double pos)
{
// GNASH_REPORT_FUNCTION;
@@ -482,25 +481,25 @@ RTMPClient::encodeStreamOp(double id, rtmp_op_e op, bool flag, const std::string
str.makeString("seek");
break;
default:
- boost::shared_ptr<cygnal::Buffer> foo;
+ std::shared_ptr<cygnal::Buffer> foo;
return foo;
};
- boost::shared_ptr<cygnal::Buffer> strobj = str.encode();
+ std::shared_ptr<cygnal::Buffer> strobj = str.encode();
// Set the stream ID, which follows the command
cygnal::Element strid;
strid.makeNumber(id);
- boost::shared_ptr<cygnal::Buffer> stridobj = strid.encode();
+ std::shared_ptr<cygnal::Buffer> stridobj = strid.encode();
// Set the NULL object element that follows the stream ID
cygnal::Element null;
null.makeNull();
- boost::shared_ptr<cygnal::Buffer> nullobj = null.encode();
+ std::shared_ptr<cygnal::Buffer> nullobj = null.encode();
// Set the BOOLEAN object element that is the last field in the packet
// (SEEK and PLAY don't use the boolean flag)
- boost::shared_ptr<cygnal::Buffer> boolobj;
+ std::shared_ptr<cygnal::Buffer> boolobj;
if ((op != STREAM_SEEK) && (op != STREAM_PLAY)) {
cygnal::Element boolean;
boolean.makeBoolean(flag);
@@ -508,7 +507,7 @@ RTMPClient::encodeStreamOp(double id, rtmp_op_e op, bool flag, const std::string
}
// The seek command also may have an optional location to seek to
- boost::shared_ptr<cygnal::Buffer> posobj;
+ std::shared_ptr<cygnal::Buffer> posobj;
if ((op == STREAM_PAUSE) || (op == STREAM_SEEK)) {
cygnal::Element seek;
seek.makeNumber(pos);
@@ -518,7 +517,7 @@ RTMPClient::encodeStreamOp(double id, rtmp_op_e op, bool flag, const std::string
// The play command has an optional field, which is the name of the file
// used for the stream. A Play command without this name set play an
// existing stream that is already open.
- boost::shared_ptr<cygnal::Buffer> fileobj;
+ std::shared_ptr<cygnal::Buffer> fileobj;
if (!name.empty()) {
cygnal::Element filespec;
filespec.makeString(name);
@@ -533,7 +532,7 @@ RTMPClient::encodeStreamOp(double id, rtmp_op_e op, bool flag, const std::string
if ( fileobj ) pktsize += fileobj->size();
if ( posobj ) pktsize += posobj->size();
- boost::shared_ptr<cygnal::Buffer> buf(new cygnal::Buffer(pktsize));
+ std::shared_ptr<cygnal::Buffer> buf(new cygnal::Buffer(pktsize));
*buf += strobj;
*buf += stridobj;
*buf += nullobj;
@@ -546,14 +545,14 @@ RTMPClient::encodeStreamOp(double id, rtmp_op_e op, bool flag, const std::string
// A request for a handshake is initiated by sending a byte with a
// value of 0x3, followed by a message body of unknown format.
-boost::shared_ptr<cygnal::Buffer>
+std::shared_ptr<cygnal::Buffer>
RTMPClient::handShakeRequest()
{
GNASH_REPORT_FUNCTION;
- boost::uint32_t zero = 0;
+ std::uint32_t zero = 0;
// Make a buffer to hold the handshake data.
- boost::shared_ptr<cygnal::Buffer> handshake(new cygnal::Buffer(RTMP_HANDSHAKE_SIZE+1));
+ std::shared_ptr<cygnal::Buffer> handshake(new cygnal::Buffer(RTMP_HANDSHAKE_SIZE+1));
if (!handshake) {
return handshake;
}
@@ -569,7 +568,7 @@ RTMPClient::handShakeRequest()
// The handshake contains random data after the initial header
for (int i=0; i<RTMP_RANDOM_SIZE; i++) {
- boost::uint8_t pad = i^256;
+ std::uint8_t pad = i^256;
*handshake += pad;
}
@@ -584,7 +583,7 @@ RTMPClient::handShakeRequest()
// The client finishes the handshake process by sending the second
// data block we get from the server as the response
-boost::shared_ptr<cygnal::Buffer>
+std::shared_ptr<cygnal::Buffer>
RTMPClient::clientFinish()
{
// GNASH_REPORT_FUNCTION;
@@ -593,7 +592,7 @@ RTMPClient::clientFinish()
return clientFinish(data);
}
-boost::shared_ptr<cygnal::Buffer>
+std::shared_ptr<cygnal::Buffer>
RTMPClient::clientFinish(cygnal::Buffer &data)
{
GNASH_REPORT_FUNCTION;
@@ -607,7 +606,7 @@ RTMPClient::clientFinish(cygnal::Buffer &data)
// The handhake for this phase is twice the size of the initial handshake
// we sent previously, plus one byte for the RTMP version header.
int max_size = (RTMP_HANDSHAKE_SIZE*2) + 1;
- boost::shared_ptr<cygnal::Buffer> handshake1(new cygnal::Buffer(
+ std::shared_ptr<cygnal::Buffer> handshake1(new cygnal::Buffer(
max_size + data.allocated()));
do {
ret = readNet(handshake1->end(), max_size - offset);
@@ -639,7 +638,7 @@ RTMPClient::clientFinish(cygnal::Buffer &data)
handshake1->allocated());
}
- _handshake_header.uptime = ntohl(*reinterpret_cast<boost::uint32_t *>
+ _handshake_header.uptime = ntohl(*reinterpret_cast<std::uint32_t *>
(handshake1->reference() + 1));
log_network(_("RTMP Handshake header: Uptime: %u"),
@@ -656,29 +655,29 @@ RTMPClient::clientFinish(cygnal::Buffer &data)
#endif
// Make a new buffer big enough to hold the handshake, data, and header byte
- boost::shared_ptr<cygnal::Buffer> handshake2(new cygnal::Buffer(
+ std::shared_ptr<cygnal::Buffer> handshake2(new cygnal::Buffer(
RTMP_HANDSHAKE_SIZE + data.allocated()));
// Copy the timestamp from the message we just received.
- handshake2->copy(handshake1->reference()+1, sizeof(boost::uint32_t));
+ handshake2->copy(handshake1->reference()+1, sizeof(std::uint32_t));
#if 1
// The next timestamp is the one we just received bumped up a tiny bit.
// I have no clue if this is correct, but fom hex dumps the previous
// timestamp should be the baseline, and this is just that time plus
// whatever it took to get the message. The 7 is a bit randomly chosen.
- boost::uint32_t tt = htonl(_handshake_header.uptime + 7);
+ std::uint32_t tt = htonl(_handshake_header.uptime + 7);
#else
// Get the uptime for the header
// yes, we loose precision here but it's only a 4 byte field
time_t t;
time(&t);
- boost::uint32_t tt = t;
+ std::uint32_t tt = t;
#endif
*handshake2 += tt;
// Add the handshake data
- boost::uint8_t *start = handshake1->reference() + RTMP_HANDSHAKE_SIZE
+ std::uint8_t *start = handshake1->reference() + RTMP_HANDSHAKE_SIZE
+ 1 + 8;
handshake2->append(start, RTMP_RANDOM_SIZE);
// Add the NetConnection::connect() packet
@@ -724,7 +723,7 @@ RTMPClient::recvResponse()
// Read the responses back from the server. This is usually a series of system
// messages on channel 2, and the response message on channel 3 from our request.
- boost::shared_ptr<cygnal::Buffer> response = recvMsg();
+ std::shared_ptr<cygnal::Buffer> response = recvMsg();
if (!response) {
log_error(_("Got no response from the RTMP server"));
return msgque;
@@ -732,7 +731,7 @@ RTMPClient::recvResponse()
// when doing remoting calls I don't see this problem with an empty packet from Red5,
// but when I do streaming, it's always there, so we need to remove it.
- boost::uint8_t *pktstart = response->reference();
+ std::uint8_t *pktstart = response->reference();
if (*pktstart == 0xff) {
log_network(_("Got empty packet in buffer."));
pktstart++;
@@ -740,8 +739,8 @@ RTMPClient::recvResponse()
// The response packet contains multiple messages for multiple channels, so we
// we have to split the Buffer into seperate messages on a chunksize boundary.
- boost::shared_ptr<RTMP::rtmp_head_t> rthead;
- boost::shared_ptr<RTMP::queues_t> que = split(pktstart, response->allocated()-1);
+ std::shared_ptr<RTMP::rtmp_head_t> rthead;
+ std::shared_ptr<RTMP::queues_t> que = split(pktstart, response->allocated()-1);
// If we got no responses, something obviously went wrong.
if (!que->size()) {
@@ -760,7 +759,7 @@ RTMPClient::recvResponse()
while (channel_q->size()) {
// Get the first message in the channel queue
- boost::shared_ptr<cygnal::Buffer> ptr = channel_q->pop();
+ std::shared_ptr<cygnal::Buffer> ptr = channel_q->pop();
ptr->dump();
if (ptr) { // If there is legit data
rthead = decodeHeader(ptr->reference());
@@ -785,7 +784,7 @@ RTMPClient::recvResponse()
break;
case RTMP::USER:
{
- boost::shared_ptr<RTMP::rtmp_ping_t> ping = decodePing(ptr->reference() + rthead->head_size);
+ std::shared_ptr<RTMP::rtmp_ping_t> ping = decodePing(ptr->reference() + rthead->head_size);
log_network(_("Got a Ping type %s"), ping_str[ping->type]);
break;
}
@@ -800,7 +799,7 @@ RTMPClient::recvResponse()
break;
case RTMP::AUDIO_DATA:
{
- boost::shared_ptr<RTMPMsg> msg = decodeMsgBody(ptr->reference() + rthead->head_size, rthead->bodysize);
+ std::shared_ptr<RTMPMsg> msg = decodeMsgBody(ptr->reference() + rthead->head_size, rthead->bodysize);
if (msg) {
msgque.push_back(msg);
}
@@ -808,7 +807,7 @@ RTMPClient::recvResponse()
}
case RTMP::VIDEO_DATA:
{
- boost::shared_ptr<RTMPMsg> msg = decodeMsgBody(ptr->reference() + rthead->head_size, rthead->bodysize);
+ std::shared_ptr<RTMPMsg> msg = decodeMsgBody(ptr->reference() + rthead->head_size, rthead->bodysize);
if (msg) {
msgque.push_back(msg);
}
@@ -831,7 +830,7 @@ RTMPClient::recvResponse()
break;
case RTMP::INVOKE:
{
- boost::shared_ptr<RTMPMsg> msg = decodeMsgBody(ptr->reference() + rthead->head_size, rthead->bodysize);
+ std::shared_ptr<RTMPMsg> msg = decodeMsgBody(ptr->reference() + rthead->head_size, rthead->bodysize);
if (msg) {
msgque.push_back(msg);
}
diff --git a/cygnal/libnet/rtmp_client.h b/cygnal/libnet/rtmp_client.h
index 6378149..d09377b 100644
--- a/cygnal/libnet/rtmp_client.h
+++ b/cygnal/libnet/rtmp_client.h
@@ -19,8 +19,7 @@
#define _RTMP_CLIENT_H_
#include <deque>
-#include <boost/cstdint.hpp>
-#include <boost/shared_ptr.hpp>
+#include <cstdint>
#include <string>
#include <time.h>
@@ -45,18 +44,18 @@ public:
bool handShakeWait();
// bool handShakeResponse();
- boost::shared_ptr<cygnal::Buffer> clientFinish();
- DSOEXPORT boost::shared_ptr<cygnal::Buffer> clientFinish(cygnal::Buffer &data);
- DSOEXPORT boost::shared_ptr<cygnal::Buffer> handShakeRequest();
+ std::shared_ptr<cygnal::Buffer> clientFinish();
+ DSOEXPORT std::shared_ptr<cygnal::Buffer> clientFinish(cygnal::Buffer &data);
+ DSOEXPORT std::shared_ptr<cygnal::Buffer> handShakeRequest();
// These are used for creating the primary objects
// Create the initial object sent to the server, which
// is NetConnection::connect()
- DSOEXPORT boost::shared_ptr<cygnal::Buffer> encodeConnect();
- DSOEXPORT boost::shared_ptr<cygnal::Buffer> encodeConnect(const char *uri);
- DSOEXPORT boost::shared_ptr<cygnal::Buffer> encodeConnect(const char *uri, double audioCodecs, double videoCodecs,
+ DSOEXPORT std::shared_ptr<cygnal::Buffer> encodeConnect();
+ DSOEXPORT std::shared_ptr<cygnal::Buffer> encodeConnect(const char *uri);
+ DSOEXPORT std::shared_ptr<cygnal::Buffer> encodeConnect(const char *uri, double audioCodecs, double videoCodecs,
double videoFunction);
- DSOEXPORT boost::shared_ptr<cygnal::Buffer> encodeConnect(const char *app,
+ DSOEXPORT std::shared_ptr<cygnal::Buffer> encodeConnect(const char *app,
const char *swfUrl, const char *tcUrl,
double audioCodecs, double videoCodecs, double videoFunction,
const char *pageUrl);
@@ -64,20 +63,20 @@ public:
DSOEXPORT bool connectToServer(const std::string &url);
// Create the second object sent to the server, which is NetStream():;NetStream()
- DSOEXPORT boost::shared_ptr<cygnal::Buffer> encodeStream(double id);
- boost::shared_ptr<cygnal::Buffer> encodeStreamOp(double id, rtmp_op_e op, bool flag);
- boost::shared_ptr<cygnal::Buffer> encodeStreamOp(double id, rtmp_op_e op, bool flag, double pos);
- DSOEXPORT boost::shared_ptr<cygnal::Buffer> encodeStreamOp(double id, rtmp_op_e op, bool flag, const std::string &name);
- boost::shared_ptr<cygnal::Buffer> encodeStreamOp(double id, rtmp_op_e op, bool flag, const std::string &name, double pos);
+ DSOEXPORT std::shared_ptr<cygnal::Buffer> encodeStream(double id);
+ std::shared_ptr<cygnal::Buffer> encodeStreamOp(double id, rtmp_op_e op, bool flag);
+ std::shared_ptr<cygnal::Buffer> encodeStreamOp(double id, rtmp_op_e op, bool flag, double pos);
+ DSOEXPORT std::shared_ptr<cygnal::Buffer> encodeStreamOp(double id, rtmp_op_e op, bool flag, const std::string &name);
+ std::shared_ptr<cygnal::Buffer> encodeStreamOp(double id, rtmp_op_e op, bool flag, const std::string &name, double pos);
bool isConnected() { return _connected; };
std::string &getPath() { return _path; };
void setPath(std::string &x) { _path = x; };
- DSOEXPORT boost::shared_ptr<cygnal::Buffer> encodeEchoRequest(const std::string &method, double id, cygnal::Element &el);
+ DSOEXPORT std::shared_ptr<cygnal::Buffer> encodeEchoRequest(const std::string &method, double id, cygnal::Element &el);
- typedef std::deque<boost::shared_ptr<RTMPMsg> > msgque_t;
+ typedef std::deque<std::shared_ptr<RTMPMsg> > msgque_t;
msgque_t recvResponse();
void dump();
diff --git a/cygnal/libnet/rtmp_msg.cpp b/cygnal/libnet/rtmp_msg.cpp
index 5ed624c..2f7f3dc 100644
--- a/cygnal/libnet/rtmp_msg.cpp
+++ b/cygnal/libnet/rtmp_msg.cpp
@@ -114,7 +114,7 @@ static RTMPStatusMsgCode rtmp_msg_code_list[] = {
{ "SharedObject.No.Read.Access", RTMPMsg::SO_NO_READ_ACCESS },
{ "SharedObject.No.Write.Access", RTMPMsg::SO_NO_WRITE_ACCESS },
{ "SharedObject.Persistence.Mismatch", RTMPMsg::SO_PERSISTENCE_MISMATCH },
- { 0, RTMPMsg::NC_CONNECT_FAILED }
+ { nullptr, RTMPMsg::NC_CONNECT_FAILED }
};
// All the result messages from the server are ASCII text, so they have to be parsed to
@@ -122,21 +122,21 @@ static RTMPStatusMsgCode rtmp_msg_code_list[] = {
// error, or onStatus message, the actual data can be obtained from the Element.
//
RTMPMsg::rtmp_status_e
-RTMPMsg::checkStatus(boost::shared_ptr<cygnal::Element> /* el */)
+RTMPMsg::checkStatus(std::shared_ptr<cygnal::Element> /* el */)
{
// GNASH_REPORT_FUNCTION;
if (_amfobjs.size() > 0) {
- vector<boost::shared_ptr<cygnal::Element> >::iterator pit;
- vector<boost::shared_ptr<cygnal::Element> >::iterator cit;
+ vector<std::shared_ptr<cygnal::Element> >::iterator pit;
+ vector<std::shared_ptr<cygnal::Element> >::iterator cit;
// cerr << "# of Properties in object" << _amfobjs.size() << endl;
for (pit = _amfobjs.begin(); pit != _amfobjs.end(); ++pit) {
- boost::shared_ptr<cygnal::Element> el = (*(pit));
- std::vector<boost::shared_ptr<cygnal::Element> > props = el->getProperties();
+ std::shared_ptr<cygnal::Element> el = (*(pit));
+ std::vector<std::shared_ptr<cygnal::Element> > props = el->getProperties();
// printf("FIXME2: %d, %s:%s\n", props.size(),
// props[2]->getName(), props[2]->to_string());
if (el->getType() == Element::OBJECT_AMF0) {
for (cit = props.begin(); cit != props.end(); ++cit) {
- boost::shared_ptr<cygnal::Element> child = (*(cit));
+ std::shared_ptr<cygnal::Element> child = (*(cit));
// child->dump();
std::string name = child->getName();
std::string value;
@@ -165,7 +165,7 @@ RTMPMsg::checkStatus(boost::shared_ptr<cygnal::Element> /* el */)
// }
-boost::shared_ptr<cygnal::Element>
+std::shared_ptr<cygnal::Element>
RTMPMsg::operator[](size_t index)
{
// GNASH_REPORT_FUNCTION;
@@ -173,7 +173,7 @@ RTMPMsg::operator[](size_t index)
return _amfobjs[index];
}
- boost::shared_ptr<cygnal::Element> el;
+ std::shared_ptr<cygnal::Element> el;
return el;
}
@@ -183,21 +183,21 @@ RTMPMsg::operator[](size_t index)
/// search for.
///
/// @return A smart pointer to the Element for this property.
-boost::shared_ptr<cygnal::Element>
+std::shared_ptr<cygnal::Element>
RTMPMsg::findProperty(const std::string &name)
{
if (_amfobjs.size() > 0) {
- vector<boost::shared_ptr<Element> >::iterator ait;
+ vector<std::shared_ptr<Element> >::iterator ait;
// cerr << "# of Properties in object: " << _properties.size() << endl;
for (ait = _amfobjs.begin(); ait != _amfobjs.end(); ++ait) {
- boost::shared_ptr<cygnal::Element> el = (*(ait));
- boost::shared_ptr<cygnal::Element> prop = el->findProperty(name);
+ std::shared_ptr<cygnal::Element> el = (*(ait));
+ std::shared_ptr<cygnal::Element> prop = el->findProperty(name);
if (prop) {
return prop;
}
}
}
- boost::shared_ptr<Element> el;
+ std::shared_ptr<Element> el;
return el;
}
@@ -215,10 +215,10 @@ RTMPMsg::dump()
// cerr << "Transaction ID:\t" << hexify((const unsigned char *)&_transid, 8, false) << endl;
cerr << "Transaction ID:\t" << _transid << endl;
- vector<boost::shared_ptr<cygnal::Element> >::iterator ait;
+ vector<std::shared_ptr<cygnal::Element> >::iterator ait;
cerr << "# of Elements in file: " << _amfobjs.size() << endl;
for (ait = _amfobjs.begin(); ait != _amfobjs.end(); ++ait) {
- boost::shared_ptr<cygnal::Element> el = (*(ait));
+ std::shared_ptr<cygnal::Element> el = (*(ait));
el->dump();
}
}
diff --git a/cygnal/libnet/rtmp_msg.h b/cygnal/libnet/rtmp_msg.h
index fb8c5f6..8cac71a 100644
--- a/cygnal/libnet/rtmp_msg.h
+++ b/cygnal/libnet/rtmp_msg.h
@@ -19,7 +19,7 @@
#ifndef _RTMPMSG_H_
#define _RTMPMSG_H_
-#include <boost/cstdint.hpp>
+#include <cstdint>
#include <string>
#include <vector>
@@ -92,9 +92,9 @@ public:
RTMPMsg();
~RTMPMsg();
- void addObject(boost::shared_ptr<cygnal::Element> el) { _amfobjs.push_back(el); };
+ void addObject(std::shared_ptr<cygnal::Element> el) { _amfobjs.push_back(el); };
size_t size() { return _amfobjs.size(); };
- std::vector<boost::shared_ptr<cygnal::Element> > getElements() { return _amfobjs; };
+ std::vector<std::shared_ptr<cygnal::Element> > getElements() { return _amfobjs; };
void setMethodName(const std::string &name) { _method = name; } ;
std::string &getMethodName() { return _method; };
@@ -102,15 +102,15 @@ public:
void setTransactionID(double num) { _transid = num; };
double getTransactionID() { return _transid; };
- rtmp_status_e checkStatus(boost::shared_ptr<cygnal::Element> el);
+ rtmp_status_e checkStatus(std::shared_ptr<cygnal::Element> el);
void setStatus(rtmp_status_e st) { _status = st; };
rtmp_status_e getStatus() { return _status; };
- void setChannel(boost::uint8_t num) { _channel = num; };
- boost::uint8_t getChannel() { return _channel; } ;
+ void setChannel(std::uint8_t num) { _channel = num; };
+ std::uint8_t getChannel() { return _channel; } ;
- boost::shared_ptr<cygnal::Element> operator[](size_t x);
- boost::shared_ptr<cygnal::Element> at(size_t x) { return _amfobjs[x]; };
+ std::shared_ptr<cygnal::Element> operator[](size_t x);
+ std::shared_ptr<cygnal::Element> at(size_t x) { return _amfobjs[x]; };
/// \brief Find the named property for this Object.
///
@@ -118,7 +118,7 @@ public:
/// search for.
///
/// @return A smart pointer to the Element for this property.
- DSOEXPORT boost::shared_ptr<cygnal::Element> findProperty(const std::string &name);
+ DSOEXPORT std::shared_ptr<cygnal::Element> findProperty(const std::string &name);
// void setHeaderData(RTMP::rtmp_head_t &qhead);
@@ -130,8 +130,8 @@ public:
rtmp_status_e _status;
std::string _method;
double _transid;
- std::vector<boost::shared_ptr<cygnal::Element> > _amfobjs;
- boost::uint8_t _channel;
+ std::vector<std::shared_ptr<cygnal::Element> > _amfobjs;
+ std::uint8_t _channel;
};
} // end of gnash namespace
diff --git a/cygnal/libnet/sshclient.cpp b/cygnal/libnet/sshclient.cpp
index fa6cdca..a091c7f 100644
--- a/cygnal/libnet/sshclient.cpp
+++ b/cygnal/libnet/sshclient.cpp
@@ -17,12 +17,8 @@
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
//
-#include <boost/thread/mutex.hpp>
-#include <boost/shared_ptr.hpp>
-#include <boost/shared_array.hpp>
-#include <boost/scoped_array.hpp>
-#include <boost/cstdint.hpp>
-#include <boost/array.hpp>
+#include <mutex>
+#include <cstdint>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
@@ -65,7 +61,7 @@ extern "C" {
using namespace gnash;
using namespace std;
-static boost::mutex stl_mutex;
+static std::mutex stl_mutex;
namespace gnash
{
@@ -111,7 +107,7 @@ SSHClient::sshRead(cygnal::Buffer &buf)
}
int
-SSHClient::sshRead(boost::uint8_t *buf, size_t size)
+SSHClient::sshRead(std::uint8_t *buf, size_t size)
{
GNASH_REPORT_FUNCTION;
@@ -133,7 +129,7 @@ SSHClient::sshWrite(cygnal::Buffer &buf)
}
int
-SSHClient::sshWrite(const boost::uint8_t *buf, size_t size)
+SSHClient::sshWrite(const std::uint8_t *buf, size_t size)
{
GNASH_REPORT_FUNCTION;
@@ -454,7 +450,7 @@ void
SSHClient::dump() {
// GNASH_REPORT_FUNCTION;
- boost::mutex::scoped_lock lock(stl_mutex);
+ std::lock_guard<std::mutex> lock(stl_mutex);
log_debug (_("==== The SSH header breaks down as follows: ===="));
diff --git a/cygnal/libnet/sshclient.h b/cygnal/libnet/sshclient.h
index 4908bfc..4c0f5e7 100644
--- a/cygnal/libnet/sshclient.h
+++ b/cygnal/libnet/sshclient.h
@@ -20,11 +20,7 @@
#define GNASH_SSH_CLIENT_H
#include <string>
-#include <boost/array.hpp>
-#include <boost/shared_ptr.hpp>
-#include <boost/shared_array.hpp>
-#include <boost/scoped_array.hpp>
-#include <boost/cstdint.hpp>
+#include <cstdint>
#include <sstream>
extern "C" {
@@ -57,12 +53,12 @@ public:
// Read bytes from the already opened SSH connection
int sshRead(cygnal::Buffer &buf);
- int sshRead(boost::uint8_t *buf, size_t length);
+ int sshRead(std::uint8_t *buf, size_t length);
int sshRead(std::string &buf);
// Write bytes to the already opened SSH connection
int sshWrite(cygnal::Buffer &buf);
- int sshWrite(const boost::uint8_t *buf, size_t length);
+ int sshWrite(const std::uint8_t *buf, size_t length);
int sshWrite(std::string &buf);
// Shutdown the Context for this connection
@@ -104,7 +100,7 @@ public:
// Accessors
ssh_channel getChannel() { return _channel; };
ssh_session getSession() { return _session; };
- boost::shared_ptr<cygnal::Buffer> &getBuffer() { return _buffer; };
+ std::shared_ptr<cygnal::Buffer> &getBuffer() { return _buffer; };
// Dump internal data to the screen for debugging
void dump();
@@ -120,13 +116,13 @@ public:
transport_type_t _transporttype;
int _state;
#if 0
- boost::shared_ptr<ssh_session> _session;
- boost::shared_ptr<SSH_OPTIONS> _options;
+ std::shared_ptr<ssh_session> _session;
+ std::shared_ptr<SSH_OPTIONS> _options;
#else
ssh_session _session;
ssh_channel _channel;
#endif
- boost::shared_ptr<cygnal::Buffer> _buffer;
+ std::shared_ptr<cygnal::Buffer> _buffer;
};
} // end of gnash namespace
diff --git a/cygnal/libnet/sshserver.cpp b/cygnal/libnet/sshserver.cpp
index d9df04f..2fdd847 100644
--- a/cygnal/libnet/sshserver.cpp
+++ b/cygnal/libnet/sshserver.cpp
@@ -17,12 +17,8 @@
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
//
-#include <boost/thread/mutex.hpp>
-#include <boost/shared_ptr.hpp>
-#include <boost/shared_array.hpp>
-#include <boost/scoped_array.hpp>
-#include <boost/cstdint.hpp>
-#include <boost/array.hpp>
+#include <mutex>
+#include <cstdint>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
@@ -67,7 +63,7 @@ extern "C" {
using namespace gnash;
using namespace std;
-static boost::mutex stl_mutex;
+static std::mutex stl_mutex;
namespace gnash
{
@@ -195,7 +191,7 @@ void
SSHServer::dump() {
// GNASH_REPORT_FUNCTION;
- boost::mutex::scoped_lock lock(stl_mutex);
+ std::lock_guard<std::mutex> lock(stl_mutex);
log_debug (_("==== The SSH header breaks down as follows: ===="));
diff --git a/cygnal/libnet/sshserver.h b/cygnal/libnet/sshserver.h
index 9b226c5..a58d4cf 100644
--- a/cygnal/libnet/sshserver.h
+++ b/cygnal/libnet/sshserver.h
@@ -20,11 +20,7 @@
#define GNASH_SSH_SERVER_H
#include <string>
-#include <boost/array.hpp>
-#include <boost/shared_ptr.hpp>
-#include <boost/shared_array.hpp>
-#include <boost/scoped_array.hpp>
-#include <boost/cstdint.hpp>
+#include <cstdint>
#include <sstream>
extern "C" {
diff --git a/cygnal/libnet/sslclient.cpp b/cygnal/libnet/sslclient.cpp
index 8f41b6e..e23138a 100644
--- a/cygnal/libnet/sslclient.cpp
+++ b/cygnal/libnet/sslclient.cpp
@@ -21,12 +21,8 @@
#include "gnashconfig.h"
#endif
-#include <boost/thread/mutex.hpp>
-#include <boost/shared_ptr.hpp>
-#include <boost/shared_array.hpp>
-#include <boost/scoped_array.hpp>
-#include <boost/cstdint.hpp>
-#include <boost/array.hpp>
+#include <mutex>
+#include <cstdint>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
@@ -69,7 +65,7 @@
using namespace gnash;
using namespace std;
-static boost::mutex stl_mutex;
+static std::mutex stl_mutex;
// The debug log used by all the gnash libraries.
static LogFile& dbglogfile = LogFile::getDefaultInstance();
@@ -127,7 +123,7 @@ SSLClient::sslRead(cygnal::Buffer &buf)
}
int
-SSLClient::sslRead(boost::uint8_t *buf, size_t size)
+SSLClient::sslRead(std::uint8_t *buf, size_t size)
{
GNASH_REPORT_FUNCTION;
@@ -151,7 +147,7 @@ SSLClient::sslWrite(cygnal::Buffer &buf)
}
int
-SSLClient::sslWrite(const boost::uint8_t *buf, size_t length)
+SSLClient::sslWrite(const std::uint8_t *buf, size_t length)
{
GNASH_REPORT_FUNCTION;
@@ -381,7 +377,7 @@ void
SSLClient::dump() {
// GNASH_REPORT_FUNCTION;
- boost::mutex::scoped_lock lock(stl_mutex);
+ std::lock_guard<std::mutex> lock(stl_mutex);
log_debug(_("==== The SSL header breaks down as follows: ===="));
}
diff --git a/cygnal/libnet/sslclient.h b/cygnal/libnet/sslclient.h
index 3c3b6f5..2d071ba 100644
--- a/cygnal/libnet/sslclient.h
+++ b/cygnal/libnet/sslclient.h
@@ -24,11 +24,7 @@
#endif
#include <string>
-#include <boost/array.hpp>
-#include <boost/shared_ptr.hpp>
-#include <boost/shared_array.hpp>
-#include <boost/scoped_array.hpp>
-#include <boost/cstdint.hpp>
+#include <cstdint>
#include <sstream>
#ifdef HAVE_OPENSSL_SSL_H
@@ -60,12 +56,12 @@ public:
// Read bytes from the already opened SSL connection
int sslRead(cygnal::Buffer &buf);
- int sslRead(boost::uint8_t *buf, size_t length);
+ int sslRead(std::uint8_t *buf, size_t length);
int sslRead(std::string &buf);
// Write bytes to the already opened SSL connection
int sslWrite(cygnal::Buffer &buf);
- int sslWrite(const boost::uint8_t *buf, size_t length);
+ int sslWrite(const std::uint8_t *buf, size_t length);
int sslWrite(std::string &buf);
// Setup the Context for this connection
@@ -109,10 +105,10 @@ public:
void dump();
protected:
- boost::scoped_ptr<SSL> _ssl;
- boost::scoped_ptr<SSL_CTX> _ctx;
- boost::scoped_ptr<BIO> _bio;
- boost::scoped_ptr<BIO> _bio_error;
+ std::unique_ptr<SSL> _ssl;
+ std::unique_ptr<SSL_CTX> _ctx;
+ std::unique_ptr<BIO> _bio;
+ std::unique_ptr<BIO> _bio_error;
std::string _hostname;
std::string _calist;
std::string _keyfile;
diff --git a/cygnal/libnet/sslserver.cpp b/cygnal/libnet/sslserver.cpp
index 6a37acb..c773db3 100644
--- a/cygnal/libnet/sslserver.cpp
+++ b/cygnal/libnet/sslserver.cpp
@@ -21,12 +21,8 @@
#include "gnashconfig.h"
#endif
-#include <boost/thread/mutex.hpp>
-#include <boost/shared_ptr.hpp>
-#include <boost/shared_array.hpp>
-#include <boost/scoped_array.hpp>
-#include <boost/cstdint.hpp>
-#include <boost/array.hpp>
+#include <mutex>
+#include <cstdint>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
@@ -72,7 +68,7 @@
using namespace gnash;
using namespace std;
-static boost::mutex stl_mutex;
+static std::mutex stl_mutex;
namespace gnash
{
@@ -133,7 +129,7 @@ SSLServer::loadDhParams(SSL_CTX *ctx, char *file)
if (dh && ctx) {
if (SSL_CTX_set_tmp_dh(ctx, dh) < 0) {
- log_error(_("SSL!!", "Couldn't set DH parameters: %s "),
+ log_error(_("Couldn't set DH parameters: %s "),
ERR_reason_error_string(ERR_get_error()));
return false;
}
@@ -177,7 +173,7 @@ void
SSLServer::dump() {
// GNASH_REPORT_FUNCTION;
- boost::mutex::scoped_lock lock(stl_mutex);
+ std::lock_guard<std::mutex> lock(stl_mutex);
log_debug (_("==== The SSL header breaks down as follows: ===="));
}
diff --git a/cygnal/libnet/sslserver.h b/cygnal/libnet/sslserver.h
index edf7d80..548ae1a 100644
--- a/cygnal/libnet/sslserver.h
+++ b/cygnal/libnet/sslserver.h
@@ -23,11 +23,7 @@
#include "gnashconfig.h"
#endif
-#include <boost/array.hpp>
-#include <boost/shared_ptr.hpp>
-#include <boost/shared_array.hpp>
-#include <boost/scoped_array.hpp>
-#include <boost/cstdint.hpp>
+#include <cstdint>
#include <sstream>
#ifdef HAVE_OPENSSL_SSL_H
diff --git a/cygnal/libnet/statistics.cpp b/cygnal/libnet/statistics.cpp
index 58b6a94..acc685d 100644
--- a/cygnal/libnet/statistics.cpp
+++ b/cygnal/libnet/statistics.cpp
@@ -18,7 +18,7 @@
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
//
-#include <boost/thread/mutex.hpp>
+#include <mutex>
#include <string>
#include <list>
#include <iostream>
@@ -27,7 +27,7 @@
#include "netstats.h"
#include "statistics.h"
-static boost::mutex io_mutex;
+static std::mutex io_mutex;
// The string versions of the codec, used for debugging. If you add
// another enum type to codec_e, you have to add the string
@@ -96,7 +96,7 @@ Statistics::addStats() {
st->setBytes(getBytes());
st->setFileType(getFileType());
- boost::mutex::scoped_lock lock(io_mutex);
+ std::lock_guard<std::mutex> lock(io_mutex);
_netstats.push_back(st);
return _netstats.size();
@@ -104,7 +104,7 @@ Statistics::addStats() {
void
Statistics::dump() {
- boost::mutex::scoped_lock lock(io_mutex);
+ std::lock_guard<std::mutex> lock(io_mutex);
std::list<NetStats *>::iterator it;
for (it = _netstats.begin(); it != _netstats.end(); ++it) {
diff --git a/cygnal/libnet/statistics.h b/cygnal/libnet/statistics.h
index 9030437..42a7658 100644
--- a/cygnal/libnet/statistics.h
+++ b/cygnal/libnet/statistics.h
@@ -79,7 +79,7 @@ private:
browser_e _browser;
ostype_e _os;
std::list<NetStats *> _netstats;
- boost::uint32_t _msg_count;
+ std::uint32_t _msg_count;
std::vector<std::string> _filespec;
};
diff --git a/cygnal/proc.cpp b/cygnal/proc.cpp
index f36fa43..5372744 100644
--- a/cygnal/proc.cpp
+++ b/cygnal/proc.cpp
@@ -70,7 +70,7 @@ Proc::getDefaultInstance()
bool
-Proc::startCGI(const string &filespec, boost::uint16_t port)
+Proc::startCGI(const string &filespec, std::uint16_t port)
{
// GNASH_REPORT_FUNCTION;
return startCGI(filespec, false, port);
@@ -91,7 +91,7 @@ Proc::startCGI(const string &filespec, bool outflag)
}
bool
-Proc::startCGI(const string &filespec, bool outflag, boost::uint16_t port)
+Proc::startCGI(const string &filespec, bool outflag, std::uint16_t port)
{
// GNASH_REPORT_FUNCTION;
struct stat procstats;
@@ -131,7 +131,7 @@ Proc::startCGI(const string &filespec, bool outflag, boost::uint16_t port)
strcpy(cmd_line[1], "-n");
cmd_line[2] = new char[4];
strcpy(cmd_line[2], "-vv");
- cmd_line[3] = 0;
+ cmd_line[3] = nullptr;
// }
// When running multiple cgis, we prefer to specify the port it's using.
@@ -140,14 +140,14 @@ Proc::startCGI(const string &filespec, bool outflag, boost::uint16_t port)
strcpy(cmd_line[3], "-p");
cmd_line[4] = new char[10];
sprintf(cmd_line[4], "%d", port);
- cmd_line[5] = 0;
+ cmd_line[5] = nullptr;
}
// fork ourselves silly
childpid = fork();
-// boost::mutex::scoped_lock lock(_mutex);
+// std::lock_guard<std::mutex> lock(_mutex);
// childpid is a positive integer, if we are the parent, and fork() worked
if (childpid > 0) {
@@ -185,7 +185,7 @@ Proc::findCGI(const string &filespec)
{
// GNASH_REPORT_FUNCTION;
log_debug("Finding \"%s\"", filespec);
- boost::mutex::scoped_lock lock(_mutex);
+ std::lock_guard<std::mutex> lock(_mutex);
return _pids[filespec];
}
@@ -195,7 +195,7 @@ Proc::stopCGI(void)
{
// GNASH_REPORT_FUNCTION;
log_unimpl(__PRETTY_FUNCTION__);
- boost::mutex::scoped_lock lock(_mutex);
+ std::lock_guard<std::mutex> lock(_mutex);
return false;
}
@@ -206,7 +206,7 @@ Proc::stopCGI(const string &filespec)
// GNASH_REPORT_FUNCTION;
log_debug("Stopping \"%s\"", filespec);
- boost::mutex::scoped_lock lock(_mutex);
+ std::lock_guard<std::mutex> lock(_mutex);
pid_t pid = _pids[filespec];
if (kill (pid, SIGQUIT) == -1) {
@@ -220,7 +220,7 @@ bool
Proc::setOutput(const string &filespec, bool outflag)
{
// GNASH_REPORT_FUNCTION;
- boost::mutex::scoped_lock lock(_mutex);
+ std::lock_guard<std::mutex> lock(_mutex);
_output[filespec] = outflag;
return (true);
@@ -230,13 +230,13 @@ bool
Proc::getOutput(const string &filespec)
{
// GNASH_REPORT_FUNCTION;
- boost::mutex::scoped_lock lock(_mutex);
+ std::lock_guard<std::mutex> lock(_mutex);
return _output[filespec];
}
bool
-Proc::connectCGI (const string &host, boost::uint16_t port)
+Proc::connectCGI (const string &host, std::uint16_t port)
{
// GNASH_REPORT_FUNCTION;
return createClient(host, port);
diff --git a/cygnal/proc.h b/cygnal/proc.h
index 1cd2105..5799f6b 100644
--- a/cygnal/proc.h
+++ b/cygnal/proc.h
@@ -23,8 +23,7 @@
#include <string>
#include <map>
-#include <boost/thread/mutex.hpp>
-#include <boost/thread/condition.hpp>
+#include <mutex>
#include "network.h"
#include "dsodefs.h"
@@ -45,15 +44,15 @@ public:
// This starts the process running via the usual fork() & exec()
bool startCGI (void);
bool startCGI (const std::string &filespec);
- bool startCGI (const std::string &filespec, boost::uint16_t port);
+ bool startCGI (const std::string &filespec, std::uint16_t port);
bool startCGI (const std::string &filespec, bool output);
- bool startCGI (const std::string &filespec, bool output, boost::uint16_t port);
+ bool startCGI (const std::string &filespec, bool output, std::uint16_t port);
void setDocroot(const std::string &path) { _docroot = path; } ;
std::string &getDocroot() { return _docroot; };
// This opens a network connection to the process
- bool connectCGI (const std::string &host, boost::uint16_t port);
+ bool connectCGI (const std::string &host, std::uint16_t port);
// This finds the process
int findCGI (const std::string &filespec);
@@ -67,7 +66,7 @@ private:
std::map<std::string, int> _cons;
std::string _docroot;
- boost::mutex _mutex;
+ std::mutex _mutex;
};
} // end of cygnal namespace
diff --git a/cygnal/rtmp_server.cpp b/cygnal/rtmp_server.cpp
index 553dcd8..3bf672f 100644
--- a/cygnal/rtmp_server.cpp
+++ b/cygnal/rtmp_server.cpp
@@ -28,8 +28,7 @@
#include <cstdlib>
#include <cstdio>
-#include <boost/cstdint.hpp>
-#include <boost/shared_ptr.hpp>
+#include <cstdint>
#include <boost/detail/endian.hpp>
#include <boost/random/uniform_real.hpp>
#include <boost/random/uniform_int.hpp>
@@ -91,7 +90,7 @@ RTMPServer::~RTMPServer()
}
-boost::shared_ptr<cygnal::Element>
+std::shared_ptr<cygnal::Element>
RTMPServer::processClientHandShake(int fd)
{
GNASH_REPORT_FUNCTION;
@@ -108,17 +107,17 @@ RTMPServer::processClientHandShake(int fd)
// These store the information we need from the initial
/// NetConnection object.
- boost::scoped_ptr<cygnal::Element> nc;
- boost::shared_ptr<cygnal::Buffer> pkt;
- boost::shared_ptr<cygnal::Element> tcurl;
- boost::shared_ptr<cygnal::Element> swfurl;
- boost::shared_ptr<cygnal::Element> encoding;
+ std::unique_ptr<cygnal::Element> nc;
+ std::shared_ptr<cygnal::Buffer> pkt;
+ std::shared_ptr<cygnal::Element> tcurl;
+ std::shared_ptr<cygnal::Element> swfurl;
+ std::shared_ptr<cygnal::Element> encoding;
// RTMP::rtmp_headersize_e response_head_size = RTMP::HEADER_12;
// Read the handshake bytes sent by the client when requesting
// a connection.
- boost::shared_ptr<cygnal::Buffer> handshake1 = RTMP::recvMsg(fd);
+ std::shared_ptr<cygnal::Buffer> handshake1 = RTMP::recvMsg(fd);
// See if we have data in the handshake, we should have 1537 bytes
if (!handshake1) {
log_error(_("Failed to read the handshake from the client."));
@@ -133,9 +132,9 @@ RTMPServer::processClientHandShake(int fd)
// Read the response from the client from the handshale reponse we
// just sent.
- boost::shared_ptr<cygnal::Buffer> handshake2 = RTMP::recvMsg(fd);
+ std::shared_ptr<cygnal::Buffer> handshake2 = RTMP::recvMsg(fd);
// See if we have data in the handshake, we should have 1536 bytes
- if (handshake2 == 0) {
+ if (handshake2 == nullptr) {
log_error(_("failed to read the handshake from the client."));
return tcurl; // nc is empty
} else {
@@ -154,7 +153,7 @@ RTMPServer::processClientHandShake(int fd)
// the packet is a raw RTMP message. Since the header can be a
// variety of sizes, and this effects the data size, we need to
// decode that first.
- boost::shared_ptr<RTMP::rtmp_head_t> qhead = RTMP::decodeHeader(pkt->reference());
+ std::shared_ptr<RTMP::rtmp_head_t> qhead = RTMP::decodeHeader(pkt->reference());
if (!qhead) {
log_error(_("RTMP header had parsing error!"));
@@ -169,7 +168,7 @@ RTMPServer::processClientHandShake(int fd)
}
// Get the actual start of the data
- boost::uint8_t *ptr = pkt->reference() + qhead->head_size;
+ std::uint8_t *ptr = pkt->reference() + qhead->head_size;
// See if we have enough data to go past the chunksize, which is
// probable. If so, all chunks are the default size of 128, the
@@ -180,7 +179,7 @@ RTMPServer::processClientHandShake(int fd)
// now build a copy of the data but skip over the RTMP header
// bytes every chunk size biundary. All RTMP headers at this stage
// are 1 byte ones.
- boost::scoped_ptr<cygnal::Buffer> newptr(new cygnal::Buffer(qhead->bodysize));
+ std::unique_ptr<cygnal::Buffer> newptr(new cygnal::Buffer(qhead->bodysize));
if (qhead->bodysize > RTMP_VIDEO_PACKET_SIZE) {
log_network("De chunkifying the NetConnection packet.");
int nbytes = 0;
@@ -226,7 +225,7 @@ RTMPServer::processClientHandShake(int fd)
// causes Async I/O errors in the client.
if (!encoding) {
// Send a onBWDone to the client to start the new NetConnection,
- boost::shared_ptr<cygnal::Buffer> bwdone = encodeBWDone(2.0);
+ std::shared_ptr<cygnal::Buffer> bwdone = encodeBWDone(2.0);
if (RTMP::sendMsg(fd, qhead->channel, RTMP::HEADER_8,
bwdone->size(), RTMP::INVOKE, RTMPMsg::FROM_SERVER, *bwdone)) {
log_network("Sent onBWDone to client");
@@ -238,9 +237,9 @@ RTMPServer::processClientHandShake(int fd)
}
// Send a Set Client Window Size to the client
- boost::shared_ptr<cygnal::Buffer> winsize(new cygnal::Buffer(sizeof(boost::uint32_t)));
- boost::uint32_t swapped = 0x20000;
- swapBytes(&swapped, sizeof(boost::uint32_t));
+ std::shared_ptr<cygnal::Buffer> winsize(new cygnal::Buffer(sizeof(std::uint32_t)));
+ std::uint32_t swapped = 0x20000;
+ swapBytes(&swapped, sizeof(std::uint32_t));
*winsize += swapped;
if (RTMP::sendMsg(fd, RTMP_SYSTEM_CHANNEL, RTMP::HEADER_12,
winsize->size(), RTMP::WINDOW_SIZE, RTMPMsg::FROM_CLIENT, *winsize)) {
@@ -252,7 +251,7 @@ RTMPServer::processClientHandShake(int fd)
}
// Send a ping to the client to reset the new NetConnection,
- boost::shared_ptr<cygnal::Buffer> ping_reset =
+ std::shared_ptr<cygnal::Buffer> ping_reset =
encodePing(RTMP::PING_RESET, 0);
if (RTMP::sendMsg(fd, RTMP_SYSTEM_CHANNEL, RTMP::HEADER_8,
ping_reset->size(), RTMP::USER, RTMPMsg::FROM_SERVER, *ping_reset)) {
@@ -266,7 +265,7 @@ RTMPServer::processClientHandShake(int fd)
// Send the packet to notify the client that the
// NetConnection::connect() was sucessful. After the client
// receives this, the handhsake is completed.
- boost::shared_ptr<cygnal::Buffer> response =
+ std::shared_ptr<cygnal::Buffer> response =
encodeResult(RTMPMsg::NC_CONNECT_SUCCESS);
if (RTMP::sendMsg(fd, 3, RTMP::HEADER_8, response->allocated(),
RTMP::INVOKE, RTMPMsg::FROM_SERVER, *response)) {
@@ -289,16 +288,16 @@ RTMPServer::handShakeResponse(int fd, cygnal::Buffer &handshake)
{
GNASH_REPORT_FUNCTION;
- // boost::uint8_t byte;
+ // std::uint8_t byte;
// byte = RTMP_VERSION;
// the response handshake is twice the size of the one we just
// received for a total of 3072 bytes, plus room for the version.
- boost::scoped_ptr<cygnal::Buffer> zeros(new cygnal::Buffer(RTMP_HANDSHAKE_SIZE*2
+ std::unique_ptr<cygnal::Buffer> zeros(new cygnal::Buffer(RTMP_HANDSHAKE_SIZE*2
+ RTMP_HANDSHAKE_VERSION_SIZE));
zeros->clear(); // set entire buffer to zeros
- boost::uint8_t *ptr = zeros->reference();
+ std::uint8_t *ptr = zeros->reference();
// the first byte of the handshake response is the RTMP version
// number.
@@ -314,13 +313,13 @@ RTMPServer::handShakeResponse(int fd, cygnal::Buffer &handshake)
// timestamp, followed by another field that appears to be another
// timestamp or version number, which is probably ignored.
// the first field of the header is the timestamp
- boost::uint32_t timestamp;
+ std::uint32_t timestamp;
// Get the timestamp of when this message was read
timestamp = RTMP::getTime();
*zeros += timestamp;
// the second field is always zero
- boost::uint32_t pad = 0;
+ std::uint32_t pad = 0;
*zeros += pad;
// the data starts after the vesion and header bytes
@@ -341,11 +340,11 @@ RTMPServer::handShakeResponse(int fd, cygnal::Buffer &handshake)
return true;
}
-boost::shared_ptr<cygnal::Buffer>
+std::shared_ptr<cygnal::Buffer>
RTMPServer::serverFinish(int fd, cygnal::Buffer &handshake1, cygnal::Buffer &handshake2)
{
GNASH_REPORT_FUNCTION;
- boost::shared_ptr<cygnal::Buffer> buf;
+ std::shared_ptr<cygnal::Buffer> buf;
// sanity check our input data. We do this seperately as an empty
// buffer means data wasn't read correctly from the network. We
@@ -362,13 +361,13 @@ RTMPServer::serverFinish(int fd, cygnal::Buffer &handshake1, cygnal::Buffer &han
// the first field of the header is the timestamp of the original
// packet sent by this server.
- boost::uint32_t timestamp1 = *reinterpret_cast<boost::uint32_t *>
+ std::uint32_t timestamp1 = *reinterpret_cast<std::uint32_t *>
(handshake1.reference() + RTMP_HANDSHAKE_VERSION_SIZE);
// the second field of the header is the timestamp of the previous
// packet sent by this server.
- boost::uint32_t timestamp2 = *reinterpret_cast<boost::uint32_t *>
- (handshake1.reference() + RTMP_HANDSHAKE_VERSION_SIZE + sizeof(boost::uint32_t));
+ std::uint32_t timestamp2 = *reinterpret_cast<std::uint32_t *>
+ (handshake1.reference() + RTMP_HANDSHAKE_VERSION_SIZE + sizeof(std::uint32_t));
log_network("The timestamp delta is %d", timestamp2 - timestamp1);
@@ -398,7 +397,7 @@ RTMPServer::serverFinish(int fd, cygnal::Buffer &handshake1, cygnal::Buffer &han
amf_size, fd);
buf.reset(new Buffer(amf_size));
// populate the buffer with the AMF data
- boost::uint8_t *ptr = handshake2.reference() + RTMP_HANDSHAKE_SIZE;
+ std::uint8_t *ptr = handshake2.reference() + RTMP_HANDSHAKE_SIZE;
buf->copy(ptr, amf_size);
}
@@ -418,11 +417,11 @@ RTMPServer::packetRead(cygnal::Buffer &buf)
{
GNASH_REPORT_FUNCTION;
- boost::uint8_t amf_index, headersize;
- boost::uint8_t *ptr = buf.reference();
+ std::uint8_t amf_index, headersize;
+ std::uint8_t *ptr = buf.reference();
AMF amf;
- if (ptr == 0) {
+ if (ptr == nullptr) {
return false;
}
@@ -446,28 +445,28 @@ RTMPServer::packetRead(cygnal::Buffer &buf)
// }
// #if 1
-// boost::uint8_t *end = buf->remove(0xc3);
+// std::uint8_t *end = buf->remove(0xc3);
// #else
-// boost::uint8_t *end = buf->find(0xc3);
+// std::uint8_t *end = buf->find(0xc3);
// log_network("END is %x", (void *)end);
// *end = '*';
// #endif
decodeHeader(ptr);
ptr += headersize;
- boost::uint8_t* tooFar = ptr+300+sizeof(int); // FIXME:
+ std::uint8_t* tooFar = ptr+300+sizeof(int); // FIXME:
AMF amf_obj;
- boost::shared_ptr<cygnal::Element> el1 = amf_obj.extractAMF(ptr, tooFar);
+ std::shared_ptr<cygnal::Element> el1 = amf_obj.extractAMF(ptr, tooFar);
ptr += amf_obj.totalsize();
- boost::shared_ptr<cygnal::Element> el2 = amf_obj.extractAMF(ptr, tooFar);
+ std::shared_ptr<cygnal::Element> el2 = amf_obj.extractAMF(ptr, tooFar);
int size = 0;
- boost::shared_ptr<cygnal::Element> el;
- while ( size < static_cast<boost::uint16_t>(_header.bodysize) - 24 ) {
+ std::shared_ptr<cygnal::Element> el;
+ while ( size < static_cast<std::uint16_t>(_header.bodysize) - 24 ) {
if (ptr) {
el = amf_obj.extractProperty(ptr, tooFar);
- if (el != 0) {
+ if (el != nullptr) {
size += amf_obj.totalsize();
ptr += amf_obj.totalsize();
// _properties[el->getName()] = el;
@@ -489,7 +488,7 @@ RTMPServer::packetRead(cygnal::Buffer &buf)
log_network("Reading AMF packets till we're done...");
// buf->dump();
while (ptr < end) {
- boost::shared_ptr<cygnal::Element> el(new cygnal::Element);
+ std::shared_ptr<cygnal::Element> el(new cygnal::Element);
ptr = amf.extractProperty(el, ptr);
addProperty(el);
// el->dump();
@@ -504,7 +503,7 @@ RTMPServer::packetRead(cygnal::Buffer &buf)
buf = _que->merge(buf);
}
while ((ptr - buf->begin()) < static_cast<int>(actual_size)) {
- boost::shared_ptr<cygnal::Element> el(new cygnal::Element);
+ std::shared_ptr<cygnal::Element> el(new cygnal::Element);
if (ptr) {
ptr = amf.extractProperty(el, ptr);
addProperty(el);
@@ -525,7 +524,7 @@ RTMPServer::packetRead(cygnal::Buffer &buf)
break;
case USER:
{
- boost::shared_ptr<rtmp_ping_t> ping = decodePing(ptr);
+ std::shared_ptr<rtmp_ping_t> ping = decodePing(ptr);
switch (ping->type) {
case PING_CLEAR:
break;
@@ -603,14 +602,14 @@ RTMPServer::packetRead(cygnal::Buffer &buf)
//
// _result(double ClientStream, NULL, double ServerStream)
// These are handlers for the various types
-boost::shared_ptr<Buffer>
+std::shared_ptr<Buffer>
RTMPServer::encodeResult(RTMPMsg::rtmp_status_e status)
{
// GNASH_REPORT_FUNCTION;
return encodeResult(status, _filespec, _streamid);
}
-boost::shared_ptr<cygnal::Buffer>
+std::shared_ptr<cygnal::Buffer>
RTMPServer::encodeResult(gnash::RTMPMsg::rtmp_status_e status, const std::string &filename)
{
// GNASH_REPORT_FUNCTION;
@@ -618,14 +617,14 @@ RTMPServer::encodeResult(gnash::RTMPMsg::rtmp_status_e status, const std::string
return encodeResult(status, filename, _streamid, clientid);
}
-boost::shared_ptr<cygnal::Buffer>
+std::shared_ptr<cygnal::Buffer>
RTMPServer::encodeResult(gnash::RTMPMsg::rtmp_status_e status, const std::string &filename, double &clientid)
{
// GNASH_REPORT_FUNCTION;
return encodeResult(status, filename, _streamid, clientid);
}
-boost::shared_ptr<cygnal::Buffer>
+std::shared_ptr<cygnal::Buffer>
RTMPServer::encodeResult(gnash::RTMPMsg::rtmp_status_e status, double &transid)
{
// GNASH_REPORT_FUNCTION;
@@ -633,14 +632,14 @@ RTMPServer::encodeResult(gnash::RTMPMsg::rtmp_status_e status, double &transid)
return encodeResult(status, "", transid, clientid);
}
-boost::shared_ptr<cygnal::Buffer>
+std::shared_ptr<cygnal::Buffer>
RTMPServer::encodeResult(gnash::RTMPMsg::rtmp_status_e status, const std::string &filename, double &transid, double &clientid)
{
// GNASH_REPORT_FUNCTION;
// Buffer *buf = new Buffer;
-// boost::uint8_t *ptr = buf->reference();
+// std::uint8_t *ptr = buf->reference();
// buf->clear(); // default everything to zeros, real data gets optionally added.
-// ptr += sizeof(boost::uint16_t); // go past the first short
+// ptr += sizeof(std::uint16_t); // go past the first short
// const char *capabilities = 0;
// const char *description = 0;
// const char *code = 0;
@@ -674,15 +673,15 @@ RTMPServer::encodeResult(gnash::RTMPMsg::rtmp_status_e status, const std::string
{
// errstr = new Element;
// errstr->makeString("error");
- boost::shared_ptr<cygnal::Element> level(new Element);
+ std::shared_ptr<cygnal::Element> level(new Element);
level->makeString("level", "error");
top.addProperty(level);
- boost::shared_ptr<cygnal::Element> description(new Element);
+ std::shared_ptr<cygnal::Element> description(new Element);
description->makeString("description", "Connection Failed.");
top.addProperty(description);
- boost::shared_ptr<cygnal::Element> code(new Element);
+ std::shared_ptr<cygnal::Element> code(new Element);
code->makeString("code", "Connection.Connect.Failed");
top.addProperty(code);
}
@@ -692,29 +691,29 @@ RTMPServer::encodeResult(gnash::RTMPMsg::rtmp_status_e status, const std::string
// delete str;
// str = new Element;
// str->makeString("error");
- boost::shared_ptr<cygnal::Element> level(new Element);
+ std::shared_ptr<cygnal::Element> level(new Element);
level->makeString("level", "error");
top.addProperty(level);
- boost::shared_ptr<cygnal::Element> description(new Element);
+ std::shared_ptr<cygnal::Element> description(new Element);
description->makeString("description", "Connection Rejected.");
top.addProperty(description);
- boost::shared_ptr<cygnal::Element> code(new Element);
+ std::shared_ptr<cygnal::Element> code(new Element);
code->makeString("code", "NetConnection.Connect.Rejected");
top.addProperty(code);
}
case RTMPMsg::NC_CONNECT_SUCCESS:
{
- boost::shared_ptr<cygnal::Element> level(new Element);
+ std::shared_ptr<cygnal::Element> level(new Element);
level->makeString("level", "status");
top.addProperty(level);
- boost::shared_ptr<cygnal::Element> code(new Element);
+ std::shared_ptr<cygnal::Element> code(new Element);
code->makeString("code", "NetConnection.Connect.Success");
top.addProperty(code);
- boost::shared_ptr<cygnal::Element> description(new Element);
+ std::shared_ptr<cygnal::Element> description(new Element);
description->makeString("description", "Connection succeeded.");
top.addProperty(description);
}
@@ -732,15 +731,15 @@ RTMPServer::encodeResult(gnash::RTMPMsg::rtmp_status_e status, const std::string
{
str->makeString("onStatus");
- boost::shared_ptr<cygnal::Element> level(new Element);
+ std::shared_ptr<cygnal::Element> level(new Element);
level->makeString("level", "status");
top.addProperty(level);
- boost::shared_ptr<cygnal::Element> code(new Element);
+ std::shared_ptr<cygnal::Element> code(new Element);
code->makeString("code", "NetStream.Pause.Notify");
top.addProperty(code);
- boost::shared_ptr<cygnal::Element> description(new Element);
+ std::shared_ptr<cygnal::Element> description(new Element);
string field = "Pausing ";
if (!filename.empty()) {
field += filename;
@@ -748,11 +747,11 @@ RTMPServer::encodeResult(gnash::RTMPMsg::rtmp_status_e status, const std::string
description->makeString("description", field);
top.addProperty(description);
- boost::shared_ptr<cygnal::Element> details(new Element);
+ std::shared_ptr<cygnal::Element> details(new Element);
details->makeString("details", filename);
top.addProperty(details);
- boost::shared_ptr<cygnal::Element> cid(new Element);
+ std::shared_ptr<cygnal::Element> cid(new Element);
cid->makeNumber("clientid", clientid);
top.addProperty(cid);
@@ -771,15 +770,15 @@ RTMPServer::encodeResult(gnash::RTMPMsg::rtmp_status_e status, const std::string
{
str->makeString("onStatus");
// "clientid"
- boost::shared_ptr<cygnal::Element> level(new Element);
+ std::shared_ptr<cygnal::Element> level(new Element);
level->makeString("level", "status");
top.addProperty(level);
- boost::shared_ptr<cygnal::Element> code(new Element);
+ std::shared_ptr<cygnal::Element> code(new Element);
code->makeString("code", "NetStream.Play.Reset");
top.addProperty(code);
- boost::shared_ptr<cygnal::Element> description(new Element);
+ std::shared_ptr<cygnal::Element> description(new Element);
string field = "Playing and resetting ";
if (!filename.empty()) {
field += filename;
@@ -787,11 +786,11 @@ RTMPServer::encodeResult(gnash::RTMPMsg::rtmp_status_e status, const std::string
description->makeString("description", field);
top.addProperty(description);
- boost::shared_ptr<cygnal::Element> details(new Element);
+ std::shared_ptr<cygnal::Element> details(new Element);
details->makeString("details", filename);
top.addProperty(details);
- boost::shared_ptr<cygnal::Element> cid(new Element);
+ std::shared_ptr<cygnal::Element> cid(new Element);
#ifdef CLIENT_ID_NUMERIC
double clientid = createClientID();
cid->makeNumber("clientid", clientid);
@@ -813,15 +812,15 @@ RTMPServer::encodeResult(gnash::RTMPMsg::rtmp_status_e status, const std::string
{
str->makeString("onStatus");
- boost::shared_ptr<cygnal::Element> level(new Element);
+ std::shared_ptr<cygnal::Element> level(new Element);
level->makeString("level", "status");
top.addProperty(level);
- boost::shared_ptr<cygnal::Element> code(new Element);
+ std::shared_ptr<cygnal::Element> code(new Element);
code->makeString("code", "NetStream.Play.Start");
top.addProperty(code);
- boost::shared_ptr<cygnal::Element> description(new Element);
+ std::shared_ptr<cygnal::Element> description(new Element);
string field = "Started playing ";
if (!filename.empty()) {
field += filename;
@@ -829,11 +828,11 @@ RTMPServer::encodeResult(gnash::RTMPMsg::rtmp_status_e status, const std::string
description->makeString("description", field);
top.addProperty(description);
- boost::shared_ptr<cygnal::Element> details(new Element);
+ std::shared_ptr<cygnal::Element> details(new Element);
details->makeString("details", filename);
top.addProperty(details);
- boost::shared_ptr<cygnal::Element> cid(new Element);
+ std::shared_ptr<cygnal::Element> cid(new Element);
#ifdef CLIENT_ID_NUMERIC
double clientid = createClientID();
cid->makeNumber("clientid", clientid);
@@ -854,15 +853,15 @@ RTMPServer::encodeResult(gnash::RTMPMsg::rtmp_status_e status, const std::string
case RTMPMsg::NS_PLAY_STOP:
case RTMPMsg::NS_PLAY_STREAMNOTFOUND:
{
- boost::shared_ptr<cygnal::Element> level(new Element);
+ std::shared_ptr<cygnal::Element> level(new Element);
level->makeString("level", "error");
top.addProperty(level);
- boost::shared_ptr<cygnal::Element> description(new Element);
+ std::shared_ptr<cygnal::Element> description(new Element);
description->makeString("description", "NetStream.Play.StreamNotFound.");
top.addProperty(description);
- boost::shared_ptr<cygnal::Element> code(new Element);
+ std::shared_ptr<cygnal::Element> code(new Element);
code->makeString("code", "NetStream.Play.StreamNotFound");
top.addProperty(code);
break;
@@ -898,7 +897,7 @@ RTMPServer::encodeResult(gnash::RTMPMsg::rtmp_status_e status, const std::string
// Don't encode as an object, just the properties
notobject = true;
- boost::shared_ptr<cygnal::Element> id2(new Element);
+ std::shared_ptr<cygnal::Element> id2(new Element);
double sid = createStreamID();
id2->makeNumber(sid);
@@ -912,14 +911,14 @@ RTMPServer::encodeResult(gnash::RTMPMsg::rtmp_status_e status, const std::string
break;
};
- boost::shared_ptr<cygnal::Buffer> strbuf = str->encode();
- boost::shared_ptr<cygnal::Buffer> numbuf = number->encode();
- boost::shared_ptr<cygnal::Buffer> topbuf = top.encode(notobject);
+ std::shared_ptr<cygnal::Buffer> strbuf = str->encode();
+ std::shared_ptr<cygnal::Buffer> numbuf = number->encode();
+ std::shared_ptr<cygnal::Buffer> topbuf = top.encode(notobject);
- boost::shared_ptr<cygnal::Buffer> buf(new Buffer(strbuf->size() + numbuf->size() + topbuf->size()));
+ std::shared_ptr<cygnal::Buffer> buf(new Buffer(strbuf->size() + numbuf->size() + topbuf->size()));
*buf += strbuf;
*buf += numbuf;
- boost::uint8_t byte = static_cast<boost::uint8_t>(RTMP::WINDOW_SIZE & 0x000000ff);
+ std::uint8_t byte = static_cast<std::uint8_t>(RTMP::WINDOW_SIZE & 0x000000ff);
*buf += byte;
*buf += topbuf;
@@ -948,30 +947,30 @@ RTMPServer::encodeResult(gnash::RTMPMsg::rtmp_status_e status, const std::string
// A RTMP Ping packet looks like this: "02 00 00 00 00 00 06 04 00 00 00 00 00 00 00 00 00 0",
// which is the Ping type byte, followed by two shorts that are the parameters. Only the first
// two paramters are required.
-boost::shared_ptr<Buffer>
+std::shared_ptr<Buffer>
RTMPServer::encodePing(rtmp_ping_e type)
{
// GNASH_REPORT_FUNCTION;
return encodePing(type, 0);
}
-boost::shared_ptr<Buffer>
-RTMPServer::encodePing(rtmp_ping_e type, boost::uint32_t milliseconds)
+std::shared_ptr<Buffer>
+RTMPServer::encodePing(rtmp_ping_e type, std::uint32_t milliseconds)
{
// GNASH_REPORT_FUNCTION;
// An encoded ping message
- boost::shared_ptr<cygnal::Buffer> buf(new Buffer(sizeof(boost::uint16_t) * 3));
-// boost::uint8_t *ptr = buf->reference();
+ std::shared_ptr<cygnal::Buffer> buf(new Buffer(sizeof(std::uint16_t) * 3));
+// std::uint8_t *ptr = buf->reference();
// Set the type of this ping message
- boost::uint16_t typefield = htons(type);
+ std::uint16_t typefield = htons(type);
*buf = typefield;
// // go past the first short, which is the type field
-// ptr += sizeof(boost::uint16_t);
+// ptr += sizeof(std::uint16_t);
- boost::uint32_t swapped = 0;
+ std::uint32_t swapped = 0;
switch (type) {
// These two don't appear to have any paramaters
case PING_CLEAR:
@@ -980,16 +979,16 @@ RTMPServer::encodePing(rtmp_ping_e type, boost::uint32_t milliseconds)
// the third parameter is the buffer time in milliseconds
case PING_TIME:
{
-// ptr += sizeof(boost::uint16_t); // go past the second short
+// ptr += sizeof(std::uint16_t); // go past the second short
swapped = milliseconds;
- swapBytes(&swapped, sizeof(boost::uint32_t));
+ swapBytes(&swapped, sizeof(std::uint32_t));
*buf += swapped;
break;
}
// reset doesn't have any parameters but zeros
case PING_RESET:
{
- boost::uint16_t zero = 0;
+ std::uint16_t zero = 0;
*buf += zero;
*buf += zero;
break;
@@ -1000,7 +999,7 @@ RTMPServer::encodePing(rtmp_ping_e type, boost::uint32_t milliseconds)
{
// swapped = htonl(milliseconds);
swapped = milliseconds;
- swapBytes(&swapped, sizeof(boost::uint32_t));
+ swapBytes(&swapped, sizeof(std::uint32_t));
*buf += swapped;
break;
}
@@ -1017,7 +1016,7 @@ RTMPServer::encodePing(rtmp_ping_e type, boost::uint32_t milliseconds)
}
// Encode a onBWDone message for the client. These are of a fixed size.
-boost::shared_ptr<cygnal::Buffer>
+std::shared_ptr<cygnal::Buffer>
RTMPServer::encodeBWDone(double id)
{
// GNASH_REPORT_FUNCTION;
@@ -1032,11 +1031,11 @@ RTMPServer::encodeBWDone(double id)
Element null;
null.makeNull();
- boost::shared_ptr<cygnal::Buffer> enccmd = cmd.encode();
- boost::shared_ptr<cygnal::Buffer> encnum = num.encode();
- boost::shared_ptr<cygnal::Buffer> encnull = null.encode();
+ std::shared_ptr<cygnal::Buffer> enccmd = cmd.encode();
+ std::shared_ptr<cygnal::Buffer> encnum = num.encode();
+ std::shared_ptr<cygnal::Buffer> encnull = null.encode();
- boost::shared_ptr<cygnal::Buffer> buf(new cygnal::Buffer(enccmd->size()
+ std::shared_ptr<cygnal::Buffer> buf(new cygnal::Buffer(enccmd->size()
+ encnum->size()
+ encnull->size()));
@@ -1047,12 +1046,12 @@ RTMPServer::encodeBWDone(double id)
return buf;
}
-boost::shared_ptr<cygnal::Buffer>
-RTMPServer::encodeAudio(boost::uint8_t *data, size_t size)
+std::shared_ptr<cygnal::Buffer>
+RTMPServer::encodeAudio(std::uint8_t *data, size_t size)
{
GNASH_REPORT_FUNCTION;
- boost::shared_ptr<cygnal::Buffer> buf;
+ std::shared_ptr<cygnal::Buffer> buf;
if (size) {
if (data) {
@@ -1064,12 +1063,12 @@ RTMPServer::encodeAudio(boost::uint8_t *data, size_t size)
return buf;
}
-boost::shared_ptr<cygnal::Buffer>
-RTMPServer::encodeVideo(boost::uint8_t * /* data */, size_t /* size */)
+std::shared_ptr<cygnal::Buffer>
+RTMPServer::encodeVideo(std::uint8_t * /* data */, size_t /* size */)
{
GNASH_REPORT_FUNCTION;
- boost::shared_ptr<cygnal::Buffer> buf;
+ std::shared_ptr<cygnal::Buffer> buf;
return buf;
}
@@ -1077,30 +1076,30 @@ RTMPServer::encodeVideo(boost::uint8_t * /* data */, size_t /* size */)
#if 0
// Parse an Echo Request message coming from the Red5 echo_test. This
// method should only be used for testing purposes.
-vector<boost::shared_ptr<cygnal::Element > >
-RTMPServer::parseEchoRequest(boost::uint8_t *ptr, size_t size)
+vector<std::shared_ptr<cygnal::Element > >
+RTMPServer::parseEchoRequest(std::uint8_t *ptr, size_t size)
{
// GNASH_REPORT_FUNCTION;
AMF amf;
- vector<boost::shared_ptr<cygnal::Element > > headers;
+ vector<std::shared_ptr<cygnal::Element > > headers;
// The first element is the name of the test, 'echo'
- boost::shared_ptr<cygnal::Element> el1 = amf.extractAMF(ptr, ptr+size);
+ std::shared_ptr<cygnal::Element> el1 = amf.extractAMF(ptr, ptr+size);
ptr += amf.totalsize();
headers.push_back(el1);
// The second element is the number of the test,
- boost::shared_ptr<cygnal::Element> el2 = amf.extractAMF(ptr, ptr+size);
+ std::shared_ptr<cygnal::Element> el2 = amf.extractAMF(ptr, ptr+size);
ptr += amf.totalsize();
headers.push_back(el2);
// This one has always been a NULL object from my tests
- boost::shared_ptr<cygnal::Element> el3 = amf.extractAMF(ptr, ptr+size);
+ std::shared_ptr<cygnal::Element> el3 = amf.extractAMF(ptr, ptr+size);
ptr += amf.totalsize();
headers.push_back(el3);
// This one has always been an NULL or Undefined object from my tests
- boost::shared_ptr<cygnal::Element> el4 = amf.extractAMF(ptr, ptr+size);
+ std::shared_ptr<cygnal::Element> el4 = amf.extractAMF(ptr, ptr+size);
if (!el4) {
log_error(_("Couldn't reliably extract the echo data!"));
}
@@ -1114,23 +1113,23 @@ RTMPServer::parseEchoRequest(boost::uint8_t *ptr, size_t size)
// is only used for testing by developers. The format appears to be
// a string '_result', followed by the number of the test, and then two
// NULL objects.
-boost::shared_ptr<cygnal::Buffer>
+std::shared_ptr<cygnal::Buffer>
RTMPServer::formatEchoResponse(double num, cygnal::Element &el)
{
// GNASH_REPORT_FUNCTION;
- boost::shared_ptr<cygnal::Buffer> data = amf::AMF::encodeElement(el);
+ std::shared_ptr<cygnal::Buffer> data = amf::AMF::encodeElement(el);
return formatEchoResponse(num, data->reference(), data->allocated());
}
-boost::shared_ptr<cygnal::Buffer>
+std::shared_ptr<cygnal::Buffer>
RTMPServer::formatEchoResponse(double num, cygnal::Buffer &data)
{
// GNASH_REPORT_FUNCTION;
return formatEchoResponse(num, data.reference(), data.allocated());
}
-boost::shared_ptr<cygnal::Buffer>
-RTMPServer::formatEchoResponse(double num, boost::uint8_t *data, size_t size)
+std::shared_ptr<cygnal::Buffer>
+RTMPServer::formatEchoResponse(double num, std::uint8_t *data, size_t size)
{
// GNASH_REPORT_FUNCTION;
@@ -1144,11 +1143,11 @@ RTMPServer::formatEchoResponse(double num, boost::uint8_t *data, size_t size)
Element null;
null.makeNull();
- boost::shared_ptr<cygnal::Buffer> encecho = echo.encode();
- boost::shared_ptr<cygnal::Buffer> encidx = index.encode();
- boost::shared_ptr<cygnal::Buffer> encnull = null.encode();
+ std::shared_ptr<cygnal::Buffer> encecho = echo.encode();
+ std::shared_ptr<cygnal::Buffer> encidx = index.encode();
+ std::shared_ptr<cygnal::Buffer> encnull = null.encode();
- boost::shared_ptr<cygnal::Buffer> buf(new cygnal::Buffer(encecho->size()
+ std::shared_ptr<cygnal::Buffer> buf(new cygnal::Buffer(encecho->size()
+ encidx->size()
+ encnull->size() + size));
@@ -1197,17 +1196,17 @@ RTMPServer::createClientID()
#else
char letters[] =
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
- boost::uint64_t random_time_bits = 0;
- boost::uint64_t value = 0;
+ std::uint64_t random_time_bits = 0;
+ std::uint64_t value = 0;
# ifdef HAVE_GETTIMEOFDAY
timeval tv;
- gettimeofday(&tv, NULL);
+ gettimeofday(&tv, nullptr);
random_time_bits = ((uint64_t)tv.tv_usec << 16) ^ tv.tv_sec;
# else
random_time_bits = time(NULL);
# endif
value += random_time_bits ^ getpid();
- boost::uint64_t v = value;
+ std::uint64_t v = value;
id = letters[v % 62];
v /= 62;
id += letters[v % 62];
@@ -1241,7 +1240,7 @@ RTMPServer::sendFile(int fd, const std::string &filespec)
{
GNASH_REPORT_FUNCTION;
// See if the file is in the cache and already opened.
- boost::shared_ptr<DiskStream> filestream(cache.findFile(filespec));
+ std::shared_ptr<DiskStream> filestream(cache.findFile(filespec));
if (filestream) {
cerr << "FIXME: found file in cache!" << endl;
} else {
@@ -1329,7 +1328,7 @@ RTMPServer::sendToClient(std::vector<int> &fds, cygnal::Buffer &data)
}
size_t
-RTMPServer::sendToClient(std::vector<int> &fds, boost::uint8_t *data,
+RTMPServer::sendToClient(std::vector<int> &fds, std::uint8_t *data,
size_t size)
{
// GNASH_REPORT_FUNCTION;
@@ -1357,7 +1356,7 @@ rtmp_handler(Network::thread_params_t *args)
string url, filespec;
url = docroot;
bool done = false;
- boost::shared_ptr<RTMPMsg> body;
+ std::shared_ptr<RTMPMsg> body;
// static bool initialize = true;
// bool sendfile = false;
log_network("Starting RTMP Handler for fd #%d, cgi-bin is \"%s\"",
@@ -1371,10 +1370,10 @@ rtmp_handler(Network::thread_params_t *args)
// Adjust the timeout
rtmp->setTimeout(10);
- boost::shared_ptr<cygnal::Buffer> pkt;
- boost::shared_ptr<cygnal::Element> tcurl;
- boost::shared_ptr<cygnal::Element> swfurl;
- boost::shared_ptr<cygnal::Buffer> response;
+ std::shared_ptr<cygnal::Buffer> pkt;
+ std::shared_ptr<cygnal::Element> tcurl;
+ std::shared_ptr<cygnal::Element> swfurl;
+ std::shared_ptr<cygnal::Buffer> response;
// Keep track of the network statistics
// See if we have any messages waiting. After the initial connect, this is
@@ -1382,7 +1381,7 @@ rtmp_handler(Network::thread_params_t *args)
// Adjust the timeout
rtmp->setTimeout(30);
-// boost::shared_ptr<cygnal::Buffer> buf;
+// std::shared_ptr<cygnal::Buffer> buf;
// If we have active disk streams, send those packets first.
// 0 is a reserved stream, so we start with 1, as the reserved
@@ -1391,7 +1390,7 @@ rtmp_handler(Network::thread_params_t *args)
for (int i=1; i <= hand->getActiveDiskStreams(); i++) {
hand->getDiskStream(i)->dump();
if (hand->getDiskStream(i)->getState() == DiskStream::PLAY) {
- boost::uint8_t *ptr = hand->getDiskStream(i)->get();
+ std::uint8_t *ptr = hand->getDiskStream(i)->get();
if (ptr) {
if (rtmp->sendMsg(hand->getClient(i), 8,
RTMP::HEADER_8, 4096,
@@ -1409,23 +1408,23 @@ rtmp_handler(Network::thread_params_t *args)
do {
// If there is no data left from the previous chunk, process
// that before reading more data.
- if (pkt != 0) {
+ if (pkt != nullptr) {
log_network("data left from previous packet");
} else {
pkt = rtmp->recvMsg(args->netfd);
}
- if (pkt != 0) {
- boost::uint8_t *tmpptr = 0;
+ if (pkt != nullptr) {
+ std::uint8_t *tmpptr = nullptr;
if (pkt->allocated()) {
- boost::shared_ptr<RTMP::queues_t> que = rtmp->split(*pkt);
+ std::shared_ptr<RTMP::queues_t> que = rtmp->split(*pkt);
if (!que) {
// FIXME: send _error result
return false;
}
- boost::shared_ptr<RTMP::rtmp_head_t> qhead;
+ std::shared_ptr<RTMP::rtmp_head_t> qhead;
for (size_t i=0; i<que->size(); i++) {
- boost::shared_ptr<cygnal::Buffer> bufptr = que->at(i)->pop();
+ std::shared_ptr<cygnal::Buffer> bufptr = que->at(i)->pop();
// que->at(i)->dump();
if (bufptr) {
// bufptr->dump();
@@ -1437,7 +1436,7 @@ rtmp_handler(Network::thread_params_t *args)
tmpptr = bufptr->reference() + qhead->head_size;
if (qhead->channel == RTMP_SYSTEM_CHANNEL) {
if (qhead->type == RTMP::USER) {
- boost::shared_ptr<RTMP::user_event_t> user
+ std::shared_ptr<RTMP::user_event_t> user
= rtmp->decodeUserControl(tmpptr);
switch (user->type) {
case RTMP::STREAM_START:
@@ -1457,7 +1456,7 @@ rtmp_handler(Network::thread_params_t *args)
break;
case RTMP::STREAM_PING:
{
- boost::shared_ptr<RTMP::rtmp_ping_t> ping
+ std::shared_ptr<RTMP::rtmp_ping_t> ping
= rtmp->decodePing(tmpptr);
log_network("Processed Ping message from client, type %d",
ping->type);
@@ -1547,8 +1546,8 @@ rtmp_handler(Network::thread_params_t *args)
}
} else if (body->getMethodName() == "play") {
string filespec;
- boost::shared_ptr<gnash::RTMPMsg> nc = rtmp->getNetConnection();
- boost::shared_ptr<cygnal::Element> tcurl = nc->findProperty("tcUrl");
+ std::shared_ptr<gnash::RTMPMsg> nc = rtmp->getNetConnection();
+ std::shared_ptr<cygnal::Element> tcurl = nc->findProperty("tcUrl");
URL url(tcurl->to_string());
filespec += url.hostname() + url.path();
filespec += '/';
@@ -1600,14 +1599,14 @@ rtmp_handler(Network::thread_params_t *args)
if (rtmp->sendMsg(args->netfd, 6,
RTMP::HEADER_12, 0,
RTMP::AUDIO_DATA, RTMPMsg::FROM_SERVER,
- 0, 0)) {
+ nullptr, 0)) {
}
// Send an empty Video packet to get
// things started.
if (rtmp->sendMsg(args->netfd, 5,
RTMP::HEADER_12, 0,
RTMP::VIDEO_DATA, RTMPMsg::FROM_SERVER,
- 0, 0)) {
+ nullptr, 0)) {
}
sleep(1); // FIXME: debugging crap
// Send the User Control - Stream Start
@@ -1618,7 +1617,7 @@ rtmp_handler(Network::thread_params_t *args)
*response)) {
}
int active_stream = hand->getActiveDiskStreams();
- boost::uint8_t *ptr = hand->getDiskStream(active_stream)->get();
+ std::uint8_t *ptr = hand->getDiskStream(active_stream)->get();
if (ptr) {
log_network("Sending %s to client",
hand->getDiskStream(active_stream)->getFilespec());
@@ -1650,7 +1649,7 @@ rtmp_handler(Network::thread_params_t *args)
log_error(_("Received an _error message from the client!"));
} else {
/* size_t ret = */ hand->writeToPlugin(tmpptr, qhead->bodysize);
- boost::shared_ptr<cygnal::Buffer> result = hand->readFromPlugin();
+ std::shared_ptr<cygnal::Buffer> result = hand->readFromPlugin();
if (result) {
if (rtmp->sendMsg(args->netfd, qhead->channel,
RTMP::HEADER_8, result->allocated(),
@@ -1675,7 +1674,7 @@ rtmp_handler(Network::thread_params_t *args)
// size_t ret = hand->writeToPlugin(tmpptr, qhead->bodysize);
#if 0
- boost::shared_ptr<cygnal::Buffer> result = hand->readFromPlugin();
+ std::shared_ptr<cygnal::Buffer> result = hand->readFromPlugin();
if (result) { // FIXME: this needs a real channel number
if (rtmp->sendMsg(args->netfd, 0x3, RTMP::HEADER_8, ret,
RTMP::INVOKE, RTMPMsg::FROM_SERVER, *result)) {
@@ -1694,7 +1693,7 @@ rtmp_handler(Network::thread_params_t *args)
log_network("Never read any data from fd #%d", args->netfd);
#if 0
// Send a ping to reset the new stream
- boost::shared_ptr<cygnal::Buffer> ping_reset =
+ std::shared_ptr<cygnal::Buffer> ping_reset =
rtmp->encodePing(RTMP::PING_CLEAR, 0);
if (rtmp->sendMsg(args->netfd, RTMP_SYSTEM_CHANNEL,
RTMP::HEADER_12, ping_reset->size(),
diff --git a/cygnal/rtmp_server.h b/cygnal/rtmp_server.h
index 362c1e9..647d0a3 100644
--- a/cygnal/rtmp_server.h
+++ b/cygnal/rtmp_server.h
@@ -20,9 +20,8 @@
#define _RTMP_SERVER_H_
#include <vector>
-#include <boost/cstdint.hpp>
-#include <boost/shared_ptr.hpp>
-#include <boost/array.hpp>
+#include <cstdint>
+#include <array>
#include <string>
#include <map>
@@ -56,37 +55,37 @@ public:
/// INVOKE operation of ::connect(). serverFinish() is
/// actually used to extract the AMF data from the packet, and
/// handShakeResponse() is used to construct the response packet.
- boost::shared_ptr<cygnal::Element> processClientHandShake(int fd);
+ std::shared_ptr<cygnal::Element> processClientHandShake(int fd);
bool packetSend(cygnal::Buffer &buf);
bool packetRead(cygnal::Buffer &buf);
// These are handlers for the various types
- boost::shared_ptr<cygnal::Buffer> encodeResult(gnash::RTMPMsg::rtmp_status_e status);
- boost::shared_ptr<cygnal::Buffer> encodeResult(gnash::RTMPMsg::rtmp_status_e status, const std::string &filename);
- boost::shared_ptr<cygnal::Buffer> encodeResult(gnash::RTMPMsg::rtmp_status_e status, const std::string &filename, double &transid);
- boost::shared_ptr<cygnal::Buffer> encodeResult(gnash::RTMPMsg::rtmp_status_e status, double &transid);
- boost::shared_ptr<cygnal::Buffer> encodeResult(gnash::RTMPMsg::rtmp_status_e status, const std::string &filename, double &transid, double &clientid);
+ std::shared_ptr<cygnal::Buffer> encodeResult(gnash::RTMPMsg::rtmp_status_e status);
+ std::shared_ptr<cygnal::Buffer> encodeResult(gnash::RTMPMsg::rtmp_status_e status, const std::string &filename);
+ std::shared_ptr<cygnal::Buffer> encodeResult(gnash::RTMPMsg::rtmp_status_e status, const std::string &filename, double &transid);
+ std::shared_ptr<cygnal::Buffer> encodeResult(gnash::RTMPMsg::rtmp_status_e status, double &transid);
+ std::shared_ptr<cygnal::Buffer> encodeResult(gnash::RTMPMsg::rtmp_status_e status, const std::string &filename, double &transid, double &clientid);
// Encode a Ping for the client
- boost::shared_ptr<cygnal::Buffer> encodePing(rtmp_ping_e type, boost::uint32_t milliseconds);
- boost::shared_ptr<cygnal::Buffer> encodePing(rtmp_ping_e type);
- // boost::shared_ptr<cygnal::Buffer> encodeUser(user_control_e type, boost::uint32_t milliseconds);
- boost::shared_ptr<cygnal::Buffer> encodeAudio(boost::uint8_t *data, size_t size);
- boost::shared_ptr<cygnal::Buffer> encodeVideo(boost::uint8_t *data, size_t size);
+ std::shared_ptr<cygnal::Buffer> encodePing(rtmp_ping_e type, std::uint32_t milliseconds);
+ std::shared_ptr<cygnal::Buffer> encodePing(rtmp_ping_e type);
+ // std::shared_ptr<cygnal::Buffer> encodeUser(user_control_e type, std::uint32_t milliseconds);
+ std::shared_ptr<cygnal::Buffer> encodeAudio(std::uint8_t *data, size_t size);
+ std::shared_ptr<cygnal::Buffer> encodeVideo(std::uint8_t *data, size_t size);
// Encode a onBWDone message for the client
- boost::shared_ptr<cygnal::Buffer> encodeBWDone(double id);
+ std::shared_ptr<cygnal::Buffer> encodeBWDone(double id);
// Parse an Echo Request message coming from the Red5 echo_test.
- std::vector<boost::shared_ptr<cygnal::Element > > parseEchoRequest(cygnal::Buffer &buf) { return parseEchoRequest(buf.reference(), buf.size()); };
- std::vector<boost::shared_ptr<cygnal::Element > > parseEchoRequest(boost::uint8_t *buf, size_t size);
+ std::vector<std::shared_ptr<cygnal::Element > > parseEchoRequest(cygnal::Buffer &buf) { return parseEchoRequest(buf.reference(), buf.size()); };
+ std::vector<std::shared_ptr<cygnal::Element > > parseEchoRequest(std::uint8_t *buf, size_t size);
// format a response to the 'echo' test used for testing Gnash.
- boost::shared_ptr<cygnal::Buffer> formatEchoResponse(double num, cygnal::Element &el);
- boost::shared_ptr<cygnal::Buffer> formatEchoResponse(double num, cygnal::Buffer &data);
- boost::shared_ptr<cygnal::Buffer> formatEchoResponse(double num, boost::uint8_t *data, size_t size);
- void addReference(boost::uint16_t index, cygnal::Element &el) { _references[index] = el; };
- cygnal::Element &getReference(boost::uint16_t index) { return _references[index]; };
+ std::shared_ptr<cygnal::Buffer> formatEchoResponse(double num, cygnal::Element &el);
+ std::shared_ptr<cygnal::Buffer> formatEchoResponse(double num, cygnal::Buffer &data);
+ std::shared_ptr<cygnal::Buffer> formatEchoResponse(double num, std::uint8_t *data, size_t size);
+ void addReference(std::uint16_t index, cygnal::Element &el) { _references[index] = el; };
+ cygnal::Element &getReference(std::uint16_t index) { return _references[index]; };
bool sendFile(int fd, const std::string &filespec);
@@ -103,13 +102,13 @@ public:
void setStreamID(double id) { _streamid = id; };
double getStreamID() { return _streamid; };
- size_t sendToClient(std::vector<int> &fds, boost::uint8_t *data,
+ size_t sendToClient(std::vector<int> &fds, std::uint8_t *data,
size_t size);
size_t sendToClient(std::vector<int> &fds,cygnal::Buffer &data);
void setNetConnection(gnash::RTMPMsg *msg) { _netconnect.reset(msg); };
- void setNetConnection(boost::shared_ptr<gnash::RTMPMsg> msg) { _netconnect = msg; };
- boost::shared_ptr<gnash::RTMPMsg> getNetConnection() { return _netconnect;};
+ void setNetConnection(std::shared_ptr<gnash::RTMPMsg> msg) { _netconnect = msg; };
+ std::shared_ptr<gnash::RTMPMsg> getNetConnection() { return _netconnect;};
void dump();
private:
@@ -117,7 +116,7 @@ private:
/// This is only called by processClientHandshake() to compare
/// the handshakes to make sure they match, and to extract the
/// initial AMF data from packet.
- boost::shared_ptr<cygnal::Buffer> serverFinish(int fd,
+ std::shared_ptr<cygnal::Buffer> serverFinish(int fd,
cygnal::Buffer &handshake1, cygnal::Buffer &handshake2);
/// \method handShakeResponse
/// This is only called by processClientHandshake() to
@@ -133,12 +132,12 @@ private:
gnash::DiskStream::filetype_e _filetype;
std::string _docroot;
std::string _filespec;
- boost::uint32_t _filesize;
- std::map<boost::uint16_t, cygnal::Element> _references;
+ std::uint32_t _filesize;
+ std::map<std::uint16_t, cygnal::Element> _references;
#ifdef CLIENT_ID_NUMERIC
std::array<double> _clientids;
#else
- boost::array<std::string, 1000> _clientids;
+ std::array<std::string, 1000> _clientids;
#endif
double _streamid;
/// \var _netconnect
@@ -146,7 +145,7 @@ private:
/// object we get as the final part of the handshake process
/// that is used to set up the connection. This has all the
/// file paths and other information needed by the server.
- boost::shared_ptr<gnash::RTMPMsg> _netconnect;
+ std::shared_ptr<gnash::RTMPMsg> _netconnect;
};
// This is the thread for all incoming RTMP connections
diff --git a/cygnal/serverSO.cpp b/cygnal/serverSO.cpp
index ff3c48d..53b8ba5 100644
--- a/cygnal/serverSO.cpp
+++ b/cygnal/serverSO.cpp
@@ -32,7 +32,7 @@
#endif
#include <sys/types.h>
-#include <boost/cstdint.hpp>
+#include <cstdint>
#include <cctype> // for toupper
#include <string>
diff --git a/cygnal/testsuite/cygnal.all/Makefile.am b/cygnal/testsuite/cygnal.all/Makefile.am
index 3950d6c..a6d1dd5 100644
--- a/cygnal/testsuite/cygnal.all/Makefile.am
+++ b/cygnal/testsuite/cygnal.all/Makefile.am
@@ -28,8 +28,6 @@ libcygnal_la_SOURCES = \
libcygnal_la_LDFLAGS = \
$(top_builddir)/cygnal/libamf/libgnashamf.la
-AM_CPPFLAGS = # -Wall
-
AM_LDFLAGS = \
$(top_builddir)/libbase/libgnashbase.la \
$(top_builddir)/cygnal/libamf/libgnashamf.la \
@@ -40,7 +38,7 @@ AM_LDFLAGS = \
localedir = $(datadir)/locale
-INCLUDES = \
+AM_CPPFLAGS = \
-I$(top_srcdir)/cygnal/libamf \
-I$(top_srcdir)/cygnal/libnet \
-I$(top_srcdir)/libbase \
diff --git a/cygnal/testsuite/libamf.all/Makefile.am b/cygnal/testsuite/libamf.all/Makefile.am
index 2318ad2..2a0dd9e 100644
--- a/cygnal/testsuite/libamf.all/Makefile.am
+++ b/cygnal/testsuite/libamf.all/Makefile.am
@@ -30,14 +30,13 @@ AM_LDFLAGS = \
$(DEJAGNU_CFLAGS) \
$(NULL)
-AM_CPPFLAGS = -DSRCDIR=\"$(srcdir)\"
-
-INCLUDES = \
+AM_CPPFLAGS = \
-I$(top_srcdir)/cygnal/libamf \
-I$(top_srcdir)/cygnal/libnet \
-I$(top_srcdir)/libbase \
-I$(top_srcdir)/libcore \
-I$(top_srcdir)/testsuite \
+ -DSRCDIR=\"$(srcdir)\" \
$(CURL_CFLAGS) \
$(BOOST_CFLAGS) \
$(DEJAGNU_CFLAGS) \
diff --git a/cygnal/testsuite/libamf.all/test_amf.cpp b/cygnal/testsuite/libamf.all/test_amf.cpp
index 7ebf1be..5dea56f 100644
--- a/cygnal/testsuite/libamf.all/test_amf.cpp
+++ b/cygnal/testsuite/libamf.all/test_amf.cpp
@@ -31,7 +31,6 @@
#include <log.h>
#include <iostream>
#include <string>
-#include <boost/shared_ptr.hpp>
#include "GnashException.h"
#include "check.h"
//#include "dejagnu.h"
@@ -161,7 +160,7 @@ void
test_encoding()
{
// This is a 8 byte wide double data type in hex
- boost::shared_ptr<Buffer> buf1(new Buffer("40 83 38 00 00 00 00 00"));
+ std::shared_ptr<Buffer> buf1(new Buffer("40 83 38 00 00 00 00 00"));
double num = *(reinterpret_cast<double *>(buf1->reference()));
swapBytes(&num, cygnal::AMF0_NUMBER_SIZE); // we always encode in big endian format
@@ -170,7 +169,7 @@ test_encoding()
mem->addStats(__LINE__); // take a sample
}
#endif
- boost::shared_ptr<Buffer> encnum = cygnal::AMF::encodeNumber(num);
+ std::shared_ptr<Buffer> encnum = cygnal::AMF::encodeNumber(num);
// A number cygnal::AMF object has only one header byte, which is the type field.
#if defined(HAVE_MALLINFO) && defined(USE_STATS_MEMORY)
if (memdebug) {
@@ -188,15 +187,15 @@ test_encoding()
// it's actually a two byte short instead.
{
bool flag = true;
- boost::shared_ptr<Buffer> buf2(new Buffer("01 01"));
- boost::uint16_t sht = *(boost::uint16_t *)buf2->reference();
- swapBytes(&sht, sizeof(boost::uint16_t)); // we always encode in big endian format
+ std::shared_ptr<Buffer> buf2(new Buffer("01 01"));
+ std::uint16_t sht = *(std::uint16_t *)buf2->reference();
+ swapBytes(&sht, sizeof(std::uint16_t)); // we always encode in big endian format
#if defined(HAVE_MALLINFO) && defined(USE_STATS_MEMORY)
if (memdebug) {
mem->addStats(__LINE__); // take a sample
}
#endif
- boost::shared_ptr<Buffer> encbool = cygnal::AMF::encodeBoolean(flag);
+ std::shared_ptr<Buffer> encbool = cygnal::AMF::encodeBoolean(flag);
#if defined(HAVE_MALLINFO) && defined(USE_STATS_MEMORY)
if (memdebug) {
mem->addStats(__LINE__); // take a sample
@@ -208,7 +207,7 @@ test_encoding()
// which are finally only one byte apiece.
if ((*encbool->reference() == Element::BOOLEAN_AMF0) &&
(encbool->size() == 2) &&
- (memcmp(buf2->reference(), encbool->reference(), sizeof(boost::uint16_t)) == 0)) {
+ (memcmp(buf2->reference(), encbool->reference(), sizeof(std::uint16_t)) == 0)) {
runtest.pass("Encoded cygnal::AMF Boolean");
} else {
runtest.fail("Encoded cygnal::AMF Boolean");
@@ -223,7 +222,7 @@ test_encoding()
mem->addStats(__LINE__); // take a sample
}
#endif
- boost::shared_ptr<Buffer> buf = cygnal::AMF::encodeString(str);
+ std::shared_ptr<Buffer> buf = cygnal::AMF::encodeString(str);
#if defined(HAVE_MALLINFO) && defined(USE_STATS_MEMORY)
if (memdebug) {
mem->addStats(__LINE__); // take a sample
@@ -250,13 +249,13 @@ test_encoding()
mem->addStats(__LINE__); // take a sample
}
#endif
- boost::shared_ptr<Buffer> buf = cygnal::AMF::encodeNullString();
+ std::shared_ptr<Buffer> buf = cygnal::AMF::encodeNullString();
#if defined(HAVE_MALLINFO) && defined(USE_STATS_MEMORY)
if (memdebug) {
mem->addStats(__LINE__); // take a sample
}
#endif
- boost::uint16_t len = *(boost::uint16_t *)(buf->reference() + 1);
+ std::uint16_t len = *(std::uint16_t *)(buf->reference() + 1);
// A NULL String cygnal::AMF object has just 3 bytes, the type, and a two byte length, which is zero.
check_equals(*buf->reference(), Element::STRING_AMF0);
@@ -266,7 +265,7 @@ test_encoding()
Element el;
el.makeNullString();
buf = cygnal::AMF::encodeElement(el);
- len = *(boost::uint16_t *)(buf->reference() + 1);
+ len = *(std::uint16_t *)(buf->reference() + 1);
// A NULL String cygnal::AMF object has just 3 bytes, the type, and a two byte length, which is zero.
check_equals(*buf->reference(), Element::STRING_AMF0);
@@ -276,7 +275,7 @@ test_encoding()
cygnal::AMF amf;
Element el1;
- boost::uint16_t index = 1;
+ std::uint16_t index = 1;
el1.makeReference(index);
if (el1.to_short() == 1) {
runtest.pass("Made Reference");
@@ -284,7 +283,7 @@ test_encoding()
runtest.fail("Made Reference");
}
- boost::shared_ptr<cygnal::Buffer> buf2 = amf.encodeElement(el1);
+ std::shared_ptr<cygnal::Buffer> buf2 = amf.encodeElement(el1);
if ((*buf2->reference() == Element::REFERENCE_AMF0)
&& (*(buf2->reference() + 1) == 0)
&& (*(buf2->reference() + 2) == 1)) {
@@ -293,8 +292,8 @@ test_encoding()
runtest.fail("Encoded Reference");
}
- boost::shared_ptr<Buffer> buf3(new Buffer("07 00 01"));
- boost::shared_ptr<cygnal::Element> el3 = amf.extractAMF(buf3);
+ std::shared_ptr<Buffer> buf3(new Buffer("07 00 01"));
+ std::shared_ptr<cygnal::Element> el3 = amf.extractAMF(buf3);
if ((el3->getType() == Element::REFERENCE_AMF0)
&& (el3->to_short() == 1)) {
runtest.pass("Extracted Reference");
@@ -311,8 +310,8 @@ test_array()
cygnal::AMF amf;
top.makeObject();
- boost::shared_ptr<Buffer> hex1(new Buffer("08 00 00 00 0a 00 08 64 75 72 61 74 69 6f 6e 00 40 ad 04 14 7a e1 47 ae 00 05 77 69 64 74 68 00 40 74 00 00 00 00 00 00 00 06 68 65 69 67 68 74 00 40 6e 00 00 00 00 00 00 00 0d 76 69 64 65 6f 64 61 74 61 72 61 74 65 00 40 72 c0 00 00 00 00 00 00 09 66 72 61 6d 65 72 61 74 65 00 40 39 00 00 00 00 00 00 00 0c 76 69 64 65 6f 63 6f 64 65 63 69 64 00 40 10 00 00 00 00 00 00 00 0d 61 75 64 69 6f 64 61 74 61 72 61 74 65 00 40 58 00 00 00 00 00 00 00 0a 61 75 64 69 6f 64 65 6c 61 79 00 3f a3 74 bc 6a 7e f9 db 00 0c 61 75 64 69 6f 63 6f 64 65 63 69 64 00 40 00 00 00 00 00 00 00 00 0c 63 61 6e 53 65 65 6b 54 6f 45 6e 64 01 01 00 00 09"));
- boost::shared_ptr<cygnal::Element> el1 = amf.extractAMF(hex1);
+ std::shared_ptr<Buffer> hex1(new Buffer("08 00 00 00 0a 00 08 64 75 72 61 74 69 6f 6e 00 40 ad 04 14 7a e1 47 ae 00 05 77 69 64 74 68 00 40 74 00 00 00 00 00 00 00 06 68 65 69 67 68 74 00 40 6e 00 00 00 00 00 00 00 0d 76 69 64 65 6f 64 61 74 61 72 61 74 65 00 40 72 c0 00 00 00 00 00 00 09 66 72 61 6d 65 72 61 74 65 00 40 39 00 00 00 00 00 00 00 0c 76 69 64 65 6f 63 6f 64 65 63 69 64 00 40 10 00 00 00 00 00 00 00 0d 61 75 64 69 6f 64 61 74 61 72 61 74 65 00 40 58 00 00 00 00 00 00 00 0a 61 75 64 69 6f 64 65 6c 61 79 00 3f a3 74 bc 6a 7e f9 db 00 0c 61 75 64 69 6f 63 6f 64 65 63 69 64 00 40 00 00 00 00 00 00 00 00 0c 63 61 6e 53 65 65 6b 54 6f 45 6e 64 01 01 00 00 09"));
+ std::shared_ptr<cygnal::Element> el1 = amf.extractAMF(hex1);
if ((el1->getType() == Element::ECMA_ARRAY_AMF0)
&& (el1->propertySize() == 10)) {
runtest.pass("Extracted ECMA Array");
@@ -320,8 +319,8 @@ test_array()
runtest.fail("Extracted ECMA Array");
}
- boost::shared_ptr<Buffer> hex2(new Buffer("0a 00 00 00 c8 00 3f a4 7a e1 47 ae 14 7b 00 40 03 d7 0a 3d 70 a3 d7 00 40 13 85 1e b8 51 eb 85 00 40 1d 1e b8 51 eb 85 1f 00 40 23 5c 28 f5 c2 8f 5c 00 40 28 28 f5 c2 8f 5c 29 00 40 2c f5 c2 8f 5c 28 f6 00 40 30 e1 47 ae 14 7a e1 00 40 33 47 ae 14 7a e1 48 00 40 35 ae 14 7a e1 47 ae 00 40 38 14 7a e1 47 ae 14 00 40 3a 7a e1 47 ae 14 7b 00 40 3c e1 47 ae 14 7a e1 00 40 3f 47 ae 14 7a e1 48 00 40 40 d7 0a 3d 70 a3 d7 00 40 42 0a 3d 70 a3 d7 0a 00 40 43 3d 70 a3 d7 0a 3d 00 40 44 70 a3 d7 0a 3d 71 00 40 45 a3 d7 0a 3d 70 a4 00 40 46 d7 0a 3d 70 a3 d7 00 40 48 0a 3d 70 a3 d7 0a 00 40 49 3d 70 a3 d7 0a 3d 00 40 4a 70 a3 d7 0a 3d 71 00 40 4b a3 d7 0a 3d 70 a4 00 40 4c d7 0a 3d 70 a3 d7 00 40 4e 0a 3d 70 a3 d7 0a 00 40 4f 3d 70 a3 d7 0a 3d 00 40 50 38 51 eb 85 1e b8 00 40 50 d1 eb 85 1e b8 52 00 40 51 6b 85 1e b8 51 ec 00 40 52 05 1e b8 51 eb 85 00 40 52 9e b8 51 eb 85 1f 00 40 53 38 51 eb 85 1e b8 00 40 53 d1 eb 85 1e b8 52 00 40 54 6b 85 1e b8 51 ec 00 40 55 05 1e b8 51 eb 85 00 40 55 9e b8 51 eb 85 1f 00 40 56 38 51 eb 85 1e b8 00 40 56 d1 eb 85 1e b8 52 00 40 57 6b 85 1e b8 51 ec 00 40 58 05 1e b8 51 eb 85 00 40 58 9e b8 51 eb 85 1f 00 40 59 38 51 eb 85 1e b8 00 40 59 d1 eb 85 1e b8 52 00 40 5a 6b 85 1e b8 51 ec 00 40 5b 05 1e b8 51 eb 85 00 40 5b 9e b8 51 eb 85 1f 00 40 5c 38 51 eb 85 1e b8 00 40 5c d1 eb 85 1e b8 52 00 40 5d 6b 85 1e b8 51 ec 00 40 5e 05 1e b8 51 eb 85 00 40 5e 9e b8 51 eb 85 1f 00 40 5f 38 51 eb 85 1e b8 00 40 5f d1 eb 85 1e b8 52 00 40 60 35 c2 8f 5c 28 f6 00 40 60 82 8f 5c 28 f5 c3 00 40 60 cf 5c 28 f5 c2 8f 00 40 61 1c 28 f5 c2 8f 5c 00 40 61 68 f5 c2 8f 5c 29 00 40 61 b5 c2 8f 5c 28 f6 00 40 62 02 8f 5c 28 f5 c3 00 40 62 4f 5c 28 f5 c2 8f 00 40 62 9c 28 f5 c2 8f 5c 00 40 62 e8 f5 c2 8f 5c 29 00 40 63 35 c2 8f 5c 28 f6 00 40 63 82 8f 5c 28 f5 c3 00 40 63 cf 5c 28 f5 c2 8f 00 40 64 1c 28 f5 c2 8f 5c 00 40 64 68 f5 c2 8f 5c 29 00 40 64 b5 c2 8f 5c 28 f6 00 40 65 02 8f 5c 28 f5 c3 00 40 65 4f 5c 28 f5 c2 8f 00 40 65 9c 28 f5 c2 8f 5c 00 40 65 e8 f5 c2 8f 5c 29 00 40 66 35 c2 8f 5c 28 f6 00 40 66 82 8f 5c 28 f5 c3 00 40 66 cf 5c 28 f5 c2 8f 00 40 67 1c 28 f5 c2 8f 5c 00 40 67 68 f5 c2 8f 5c 29 00 40 67 b5 c2 8f 5c 28 f6 00 40 68 02 8f 5c 28 f5 c3 00 40 68 4f 5c 28 f5 c2 8f 00 40 68 9c 28 f5 c2 8f 5c 00 40 68 e8 f5 c2 8f 5c 29 00 40 69 35 c2 8f 5c 28 f6 00 40 69 82 8f 5c 28 f5 c3 00 40 69 cf 5c 28 f5 c2 8f 00 40 6a 1c 28 f5 c2 8f 5c 00 40 6a 68 f5 c2 8f 5c 29 00 40 6a b5 c2 8f 5c 28 f6 00 40 6b 02 8f 5c 28 f5 c3 00 40 6b 4f 5c 28 f5 c2 8f 00 40 6b 9c 28 f5 c2 8f 5c 00 40 6b e8 f5 c2 8f 5c 29 00 40 6c 35 c2 8f 5c 28 f6 00 40 6c 82 8f 5c 28 f5 c3 00 40 6c cf 5c 28 f5 c2 8f 00 40 6d 1c 28 f5 c2 8f 5c 00 40 6d 68 f5 c2 8f 5c 29 00 40 6d b5 c2 8f 5c 28 f6 00 40 6e 02 8f 5c 28 f5 c3 00 40 6e 4f 5c 28 f5 c2 8f 00 40 6e 9c 28 f5 c2 8f 5c 00 40 6e e8 f5 c2 8f 5c 29 00 40 6f 35 c2 8f 5c 28 f6 00 40 6f 82 8f 5c 28 f5 c3 00 40 6f cf 5c 28 f5 c2 8f 00 40 70 0e 14 7a e1 47 ae 00 40 70 34 7a e1 47 ae 14 00 40 70 5a e1 47 ae 14 7b 00 40 70 81 47 ae 14 7a e1 00 40 70 a7 ae 14 7a e1 48 00 40 70 ce 14 7a e1 47 ae 00 40 70 f4 7a e1 47 ae 14 00 40 71 1a e1 47 ae 14 7b 00 40 71 41 47 ae 14 7a e1 00 40 71 67 ae 14 7a e1 48 00 40 71 8e 14 7a e1 47 ae 00 40 71 b4 7a e1 47 ae 14 00 40 71 da e1 47 ae 14 7b 00 40 72 01 47 ae 14 7a e1 00 40 72 27 ae 14 7a e1 48 00 40 72 4e 14 7a e1 47 ae 00 40 72 74 7a e1 47 ae 14 00 40 72 9a e1 47 ae 14 7b 00 40 72 c1 47 ae 14 7a e1 00 40 72 e7 ae 14 7a e1 48 00 40 73 0e 14 7a e1 47 ae 00 40 73 34 7a e1 47 ae 14 00 40 73 5a e1 47 ae 14 7b 00 40 73 81 47 ae 14 7a e1 00 40 73 a7 ae 14 7a e1 48 00 40 73 ce 14 7a e1 47 ae 00 40 73 f4 7a e1 47 ae 14 00 40 74 1a e1 47 ae 14 7b 00 40 74 41 47 ae 14 7a e1 00 40 74 67 ae 14 7a e1 48 00 40 74 8e 14 7a e1 47 ae 00 40 74 b4 7a e1 47 ae 14 00 40 74 da e1 47 ae 14 7b 00 40 75 01 47 ae 14 7a e1 00 40 75 27 ae 14 7a e1 48 00 40 75 4e 14 7a e1 47 ae 00 40 75 74 7a e1 47 ae 14 00 40 75 9a e1 47 ae 14 7b 00 40 75 c1 47 ae 14 7a e1 00 40 75 e7 ae 14 7a e1 48 00 40 76 0e 14 7a e1 47 ae 00 40 76 34 7a e1 47 ae 14 00 40 76 5a e1 47 ae 14 7b 00 40 76 81 47 ae 14 7a e1 00 40 76 a7 ae 14 7a e1 48 00 40 76 ce 14 7a e1 47 ae 00 40 76 f4 7a e1 47 ae 14 00 40 77 1a e1 47 ae 14 7b 00 40 77 41 47 ae 14 7a e1 00 40 77 67 ae 14 7a e1 48 00 40 77 8e 14 7a e1 47 ae 00 40 77 b4 7a e1 47 ae 14 00 40 77 da e1 47 ae 14 7b 00 40 78 01 47 ae 14 7a e1 00 40 78 27 ae 14 7a e1 48 00 40 78 4e 14 7a e1 47 ae 00 40 78 74 7a e1 47 ae 14 00 40 78 9a e1 47 ae 14 7b 00 40 78 c1 47 ae 14 7a e1 00 40 78 e7 ae 14 7a e1 48 00 40 79 0e 14 7a e1 47 ae 00 40 79 34 7a e1 47 ae 14 00 40 79 5a e1 47 ae 14 7b 00 40 79 81 47 ae 14 7a e1 00 40 79 a7 ae 14 7a e1 48 00 40 79 ce 14 7a e1 47 ae 00 40 79 f4 7a e1 47 ae 14 00 40 7a 1a e1 47 ae 14 7b 00 40 7a 41 47 ae 14 7a e1 00 40 7a 67 ae 14 7a e1 48 00 40 7a 8e 14 7a e1 47 ae 00 40 7a b4 7a e1 47 ae 14 00 40 7a da e1 47 ae 14 7b 00 40 7b 01 47 ae 14 7a e1 00 40 7b 27 ae 14 7a e1 48 00 40 7b 4e 14 7a e1 47 ae 00 40 7b 74 7a e1 47 ae 14 00 40 7b 9a e1 47 ae 14 7b 00 40 7b c1 47 ae 14 7a e1 00 40 7b e7 ae 14 7a e1 48 00 40 7c 0e 14 7a e1 47 ae 00 40 7c 34 7a e1 47 ae 14 00 40 7c 5a e1 47 ae 14 7b 00 40 7c 81 47 ae 14 7a e1 00 40 7c a7 ae 14 7a e1 48 00 40 7c ce 14 7a e1 47 ae 00 40 7c f4 7a e1 47 ae 14 00 40 7d 1a e1 47 ae 14 7b 00 40 7d 41 47 ae 14 7a e1 00 40 7d 67 ae 14 7a e1 48 00 40 7d 82 8f 5c 28 f5 c3 00 40 7d 83 33 33 33 33 33 00 40 7d a9 99 99 99 99 9a"));
- boost::shared_ptr<cygnal::Element> el2 = amf.extractAMF(hex2);
+ std::shared_ptr<Buffer> hex2(new Buffer("0a 00 00 00 c8 00 3f a4 7a e1 47 ae 14 7b 00 40 03 d7 0a 3d 70 a3 d7 00 40 13 85 1e b8 51 eb 85 00 40 1d 1e b8 51 eb 85 1f 00 40 23 5c 28 f5 c2 8f 5c 00 40 28 28 f5 c2 8f 5c 29 00 40 2c f5 c2 8f 5c 28 f6 00 40 30 e1 47 ae 14 7a e1 00 40 33 47 ae 14 7a e1 48 00 40 35 ae 14 7a e1 47 ae 00 40 38 14 7a e1 47 ae 14 00 40 3a 7a e1 47 ae 14 7b 00 40 3c e1 47 ae 14 7a e1 00 40 3f 47 ae 14 7a e1 48 00 40 40 d7 0a 3d 70 a3 d7 00 40 42 0a 3d 70 a3 d7 0a 00 40 43 3d 70 a3 d7 0a 3d 00 40 44 70 a3 d7 0a 3d 71 00 40 45 a3 d7 0a 3d 70 a4 00 40 46 d7 0a 3d 70 a3 d7 00 40 48 0a 3d 70 a3 d7 0a 00 40 49 3d 70 a3 d7 0a 3d 00 40 4a 70 a3 d7 0a 3d 71 00 40 4b a3 d7 0a 3d 70 a4 00 40 4c d7 0a 3d 70 a3 d7 00 40 4e 0a 3d 70 a3 d7 0a 00 40 4f 3d 70 a3 d7 0a 3d 00 40 50 38 51 eb 85 1e b8 00 40 50 d1 eb 85 1e b8 52 00 40 51 6b 85 1e b8 51 ec 00 40 52 05 1e b8 51 eb 85 00 40 52 9e b8 51 eb 85 1f 00 40 53 38 51 eb 85 1e b8 00 40 53 d1 eb 85 1e b8 52 00 40 54 6b 85 1e b8 51 ec 00 40 55 05 1e b8 51 eb 85 00 40 55 9e b8 51 eb 85 1f 00 40 56 38 51 eb 85 1e b8 00 40 56 d1 eb 85 1e b8 52 00 40 57 6b 85 1e b8 51 ec 00 40 58 05 1e b8 51 eb 85 00 40 58 9e b8 51 eb 85 1f 00 40 59 38 51 eb 85 1e b8 00 40 59 d1 eb 85 1e b8 52 00 40 5a 6b 85 1e b8 51 ec 00 40 5b 05 1e b8 51 eb 85 00 40 5b 9e b8 51 eb 85 1f 00 40 5c 38 51 eb 85 1e b8 00 40 5c d1 eb 85 1e b8 52 00 40 5d 6b 85 1e b8 51 ec 00 40 5e 05 1e b8 51 eb 85 00 40 5e 9e b8 51 eb 85 1f 00 40 5f 38 51 eb 85 1e b8 00 40 5f d1 eb 85 1e b8 52 00 40 60 35 c2 8f 5c 28 f6 00 40 60 82 8f 5c 28 f5 c3 00 40 60 cf 5c 28 f5 c2 8f 00 40 61 1c 28 f5 c2 8f 5c 00 40 61 68 f5 c2 8f 5c 29 00 40 61 b5 c2 8f 5c 28 f6 00 40 62 02 8f 5c 28 f5 c3 00 40 62 4f 5c 28 f5 c2 8f 00 40 62 9c 28 f5 c2 8f 5c 00 40 62 e8 f5 c2 8f 5c 29 00 40 63 35 c2 8f 5c 28 f6 00 40 63 82 8f 5c 28 f5 c3 00 40 63 cf 5c 28 f5 c2 8f 00 40 64 1c 28 f5 c2 8f 5c 00 40 64 68 f5 c2 8f 5c 29 00 40 64 b5 c2 8f 5c 28 f6 00 40 65 02 8f 5c 28 f5 c3 00 40 65 4f 5c 28 f5 c2 8f 00 40 65 9c 28 f5 c2 8f 5c 00 40 65 e8 f5 c2 8f 5c 29 00 40 66 35 c2 8f 5c 28 f6 00 40 66 82 8f 5c 28 f5 c3 00 40 66 cf 5c 28 f5 c2 8f 00 40 67 1c 28 f5 c2 8f 5c 00 40 67 68 f5 c2 8f 5c 29 00 40 67 b5 c2 8f 5c 28 f6 00 40 68 02 8f 5c 28 f5 c3 00 40 68 4f 5c 28 f5 c2 8f 00 40 68 9c 28 f5 c2 8f 5c 00 40 68 e8 f5 c2 8f 5c 29 00 40 69 35 c2 8f 5c 28 f6 00 40 69 82 8f 5c 28 f5 c3 00 40 69 cf 5c 28 f5 c2 8f 00 40 6a 1c 28 f5 c2 8f 5c 00 40 6a 68 f5 c2 8f 5c 29 00 40 6a b5 c2 8f 5c 28 f6 00 40 6b 02 8f 5c 28 f5 c3 00 40 6b 4f 5c 28 f5 c2 8f 00 40 6b 9c 28 f5 c2 8f 5c 00 40 6b e8 f5 c2 8f 5c 29 00 40 6c 35 c2 8f 5c 28 f6 00 40 6c 82 8f 5c 28 f5 c3 00 40 6c cf 5c 28 f5 c2 8f 00 40 6d 1c 28 f5 c2 8f 5c 00 40 6d 68 f5 c2 8f 5c 29 00 40 6d b5 c2 8f 5c 28 f6 00 40 6e 02 8f 5c 28 f5 c3 00 40 6e 4f 5c 28 f5 c2 8f 00 40 6e 9c 28 f5 c2 8f 5c 00 40 6e e8 f5 c2 8f 5c 29 00 40 6f 35 c2 8f 5c 28 f6 00 40 6f 82 8f 5c 28 f5 c3 00 40 6f cf 5c 28 f5 c2 8f 00 40 70 0e 14 7a e1 47 ae 00 40 70 34 7a e1 47 ae 14 00 40 70 5a e1 47 ae 14 7b 00 40 70 81 47 ae 14 7a e1 00 40 70 a7 ae 14 7a e1 48 00 40 70 ce 14 7a e1 47 ae 00 40 70 f4 7a e1 47 ae 14 00 40 71 1a e1 47 ae 14 7b 00 40 71 41 47 ae 14 7a e1 00 40 71 67 ae 14 7a e1 48 00 40 71 8e 14 7a e1 47 ae 00 40 71 b4 7a e1 47 ae 14 00 40 71 da e1 47 ae 14 7b 00 40 72 01 47 ae 14 7a e1 00 40 72 27 ae 14 7a e1 48 00 40 72 4e 14 7a e1 47 ae 00 40 72 74 7a e1 47 ae 14 00 40 72 9a e1 47 ae 14 7b 00 40 72 c1 47 ae 14 7a e1 00 40 72 e7 ae 14 7a e1 48 00 40 73 0e 14 7a e1 47 ae 00 40 73 34 7a e1 47 ae 14 00 40 73 5a e1 47 ae 14 7b 00 40 73 81 47 ae 14 7a e1 00 40 73 a7 ae 14 7a e1 48 00 40 73 ce 14 7a e1 47 ae 00 40 73 f4 7a e1 47 ae 14 00 40 74 1a e1 47 ae 14 7b 00 40 74 41 47 ae 14 7a e1 00 40 74 67 ae 14 7a e1 48 00 40 74 8e 14 7a e1 47 ae 00 40 74 b4 7a e1 47 ae 14 00 40 74 da e1 47 ae 14 7b 00 40 75 01 47 ae 14 7a e1 00 40 75 27 ae 14 7a e1 48 00 40 75 4e 14 7a e1 47 ae 00 40 75 74 7a e1 47 ae 14 00 40 75 9a e1 47 ae 14 7b 00 40 75 c1 47 ae 14 7a e1 00 40 75 e7 ae 14 7a e1 48 00 40 76 0e 14 7a e1 47 ae 00 40 76 34 7a e1 47 ae 14 00 40 76 5a e1 47 ae 14 7b 00 40 76 81 47 ae 14 7a e1 00 40 76 a7 ae 14 7a e1 48 00 40 76 ce 14 7a e1 47 ae 00 40 76 f4 7a e1 47 ae 14 00 40 77 1a e1 47 ae 14 7b 00 40 77 41 47 ae 14 7a e1 00 40 77 67 ae 14 7a e1 48 00 40 77 8e 14 7a e1 47 ae 00 40 77 b4 7a e1 47 ae 14 00 40 77 da e1 47 ae 14 7b 00 40 78 01 47 ae 14 7a e1 00 40 78 27 ae 14 7a e1 48 00 40 78 4e 14 7a e1 47 ae 00 40 78 74 7a e1 47 ae 14 00 40 78 9a e1 47 ae 14 7b 00 40 78 c1 47 ae 14 7a e1 00 40 78 e7 ae 14 7a e1 48 00 40 79 0e 14 7a e1 47 ae 00 40 79 34 7a e1 47 ae 14 00 40 79 5a e1 47 ae 14 7b 00 40 79 81 47 ae 14 7a e1 00 40 79 a7 ae 14 7a e1 48 00 40 79 ce 14 7a e1 47 ae 00 40 79 f4 7a e1 47 ae 14 00 40 7a 1a e1 47 ae 14 7b 00 40 7a 41 47 ae 14 7a e1 00 40 7a 67 ae 14 7a e1 48 00 40 7a 8e 14 7a e1 47 ae 00 40 7a b4 7a e1 47 ae 14 00 40 7a da e1 47 ae 14 7b 00 40 7b 01 47 ae 14 7a e1 00 40 7b 27 ae 14 7a e1 48 00 40 7b 4e 14 7a e1 47 ae 00 40 7b 74 7a e1 47 ae 14 00 40 7b 9a e1 47 ae 14 7b 00 40 7b c1 47 ae 14 7a e1 00 40 7b e7 ae 14 7a e1 48 00 40 7c 0e 14 7a e1 47 ae 00 40 7c 34 7a e1 47 ae 14 00 40 7c 5a e1 47 ae 14 7b 00 40 7c 81 47 ae 14 7a e1 00 40 7c a7 ae 14 7a e1 48 00 40 7c ce 14 7a e1 47 ae 00 40 7c f4 7a e1 47 ae 14 00 40 7d 1a e1 47 ae 14 7b 00 40 7d 41 47 ae 14 7a e1 00 40 7d 67 ae 14 7a e1 48 00 40 7d 82 8f 5c 28 f5 c3 00 40 7d 83 33 33 33 33 33 00 40 7d a9 99 99 99 99 9a"));
+ std::shared_ptr<cygnal::Element> el2 = amf.extractAMF(hex2);
if ((el2->getType() == Element::STRICT_ARRAY_AMF0)
&& (el2->propertySize() == 200)) {
runtest.pass("Extracted Strict Array");
@@ -337,15 +336,15 @@ test_object()
Element top;
top.makeObject();
- boost::shared_ptr<cygnal::Element> prop1(new Element);
+ std::shared_ptr<cygnal::Element> prop1(new Element);
prop1->makeString("app", "oflaDemo");
top.addProperty(prop1);
- boost::shared_ptr<cygnal::Element> prop2(new Element);
+ std::shared_ptr<cygnal::Element> prop2(new Element);
prop2->makeString("flashVer", "LNX 9,0,31,0");
top.addProperty(prop2);
- boost::shared_ptr<cygnal::Element> prop3(new Element);
+ std::shared_ptr<cygnal::Element> prop3(new Element);
prop3->makeString("swfUrl", "http://www.red5.nl/tools/publisher/publisher.swf");
top.addProperty(prop3);
@@ -361,8 +360,8 @@ test_object()
mem->addStats(__LINE__); // take a sample
}
#endif
- boost::shared_ptr<Buffer> encobj = top.encode();
-// boost::shared_ptr<Buffer> encobj;
+ std::shared_ptr<Buffer> encobj = top.encode();
+// std::shared_ptr<Buffer> encobj;
#if defined(HAVE_MALLINFO) && defined(USE_STATS_MEMORY)
if (memdebug) {
mem->addStats(__LINE__); // take a sample
@@ -374,7 +373,7 @@ test_object()
}
// encobj->dump();
- boost::shared_ptr<Buffer> buf1(new Buffer("03 00 03 61 70 70 02 00 08 6f 66 6c 61 44 65 6d 6f 00 08 66 6c 61 73 68 56 65 72 02 00 0c 4c 4e 58 20 39 2c 30 2c 33 31 2c 30 00 06 73 77 66 55 72 6c 02 00 30 68 74 74 70 3a 2f 2f 77 77 77 2e 72 65 64 35 2e 6e 6c 2f 74 6f 6f 6c 73 2f 70 75 62 6c 69 73 68 65 72 2f 70 75 62 6c 69 73 68 65 72 2e 73 77 66 00 00 09"));
+ std::shared_ptr<Buffer> buf1(new Buffer("03 00 03 61 70 70 02 00 08 6f 66 6c 61 44 65 6d 6f 00 08 66 6c 61 73 68 56 65 72 02 00 0c 4c 4e 58 20 39 2c 30 2c 33 31 2c 30 00 06 73 77 66 55 72 6c 02 00 30 68 74 74 70 3a 2f 2f 77 77 77 2e 72 65 64 35 2e 6e 6c 2f 74 6f 6f 6c 73 2f 70 75 62 6c 69 73 68 65 72 2f 70 75 62 6c 69 73 68 65 72 2e 73 77 66 00 00 09"));
if ((*encobj->reference() == Element::OBJECT_AMF0) &&
(memcmp(buf1->reference(), encobj->reference(), 101) == 0)) {
runtest.pass("Encoded Object");
@@ -390,7 +389,7 @@ test_object()
mem->addStats(__LINE__); // take a sample
}
#endif
- boost::shared_ptr<cygnal::Element> newtop = amf_obj.extractAMF(buf1);
+ std::shared_ptr<cygnal::Element> newtop = amf_obj.extractAMF(buf1);
#if defined(HAVE_MALLINFO) && defined(USE_STATS_MEMORY)
if (memdebug) {
mem->addStats(__LINE__); // take a sample
diff --git a/cygnal/testsuite/libamf.all/test_amfmsg.cpp b/cygnal/testsuite/libamf.all/test_amfmsg.cpp
index a037da2..f08a1eb 100644
--- a/cygnal/testsuite/libamf.all/test_amfmsg.cpp
+++ b/cygnal/testsuite/libamf.all/test_amfmsg.cpp
@@ -31,7 +31,6 @@
#include <log.h>
#include <iostream>
#include <string>
-#include <boost/shared_ptr.hpp>
#include "GnashException.h"
#include "check.h"
@@ -152,12 +151,12 @@ test_encoding()
// 00 00 00 0e <- byte length of message
// 0a 00 00 00 01 <- array, 1 item
// 00 41 70 43 ac e0 00 00 00
- boost::shared_ptr<Buffer> buf1(new Buffer("00 00 00 00 00 03 00 06 67 65 74 77 61 79 00 04 2f 32 32 39 00 00 00 0e 0a 00 00 00 01 00 41 70 43 87 20 00 00 00 00 06 67 65 74 77 61 79 00 04 2f 32 33 30 00 00 00 0e 0a 00 00 00 01 00 41 70 43 ba 00 00 00 00 00 06 67 65 74 77 61 79 00 04 2f 32 33 31 00 00 00 0e 0a 00 00 00 01 00 41 70 43 ac e0 00 00 00"));
+ std::shared_ptr<Buffer> buf1(new Buffer("00 00 00 00 00 03 00 06 67 65 74 77 61 79 00 04 2f 32 32 39 00 00 00 0e 0a 00 00 00 01 00 41 70 43 87 20 00 00 00 00 06 67 65 74 77 61 79 00 04 2f 32 33 30 00 00 00 0e 0a 00 00 00 01 00 41 70 43 ba 00 00 00 00 00 06 67 65 74 77 61 79 00 04 2f 32 33 31 00 00 00 0e 0a 00 00 00 01 00 41 70 43 ac e0 00 00 00"));
double num = *(reinterpret_cast<double *>(buf1->reference()));
swapBytes(&num, cygnal::AMF0_NUMBER_SIZE); // we always encode in big endian format
AMF_msg amsg;
- boost::shared_ptr<AMF_msg::context_header_t> head1 =
+ std::shared_ptr<AMF_msg::context_header_t> head1 =
amsg.parseAMFPacket(buf1->reference(), buf1->size());
// amsg.dump(*head1);
@@ -180,44 +179,44 @@ test_encoding()
// Build a new message packet from scratch and make sure it matches the real one
AMF_msg top;
- boost::shared_ptr<cygnal::Element> getway1(new Element);
+ std::shared_ptr<cygnal::Element> getway1(new Element);
getway1->makeStrictArray();
- boost::shared_ptr<cygnal::Element> data1(new Element);
+ std::shared_ptr<cygnal::Element> data1(new Element);
data1->makeNumber(dub1);
getway1->addProperty(data1);
- boost::shared_ptr<AMF_msg::amf_message_t> msg1(new AMF_msg::amf_message_t);
+ std::shared_ptr<AMF_msg::amf_message_t> msg1(new AMF_msg::amf_message_t);
msg1->header.target = "getway";
msg1->header.response = "/229";
msg1->header.size = 14;
msg1->data = getway1;
top.addMessage(msg1);
- boost::shared_ptr<cygnal::Element> getway2(new Element);
+ std::shared_ptr<cygnal::Element> getway2(new Element);
getway2->makeStrictArray();
- boost::shared_ptr<cygnal::Element> data2(new Element);
+ std::shared_ptr<cygnal::Element> data2(new Element);
data2->makeNumber(dub2);
getway2->addProperty(data2);
- boost::shared_ptr<AMF_msg::amf_message_t> msg2(new AMF_msg::amf_message_t);
+ std::shared_ptr<AMF_msg::amf_message_t> msg2(new AMF_msg::amf_message_t);
msg2->header.target = "getway";
msg2->header.response = "/230";
msg2->header.size = 14;
msg2->data = getway2;
top.addMessage(msg2);
- boost::shared_ptr<cygnal::Element> getway3(new Element);
+ std::shared_ptr<cygnal::Element> getway3(new Element);
getway3->makeStrictArray();
- boost::shared_ptr<cygnal::Element> data3(new Element);
+ std::shared_ptr<cygnal::Element> data3(new Element);
data3->makeNumber(dub3);
getway3->addProperty(data3);
- boost::shared_ptr<AMF_msg::amf_message_t> msg3(new AMF_msg::amf_message_t);
+ std::shared_ptr<AMF_msg::amf_message_t> msg3(new AMF_msg::amf_message_t);
msg3->header.target = "getway";
msg3->header.response = "/231";
msg3->header.size = 14;
msg3->data = getway3;
top.addMessage(msg3);
- boost::shared_ptr<cygnal::Buffer> buf2 = top.encodeMsgHeader("getway", "/229", 14);
- boost::uint8_t *ptr1 = buf1->reference() + sizeof(AMF_msg::context_header_t);
+ std::shared_ptr<cygnal::Buffer> buf2 = top.encodeMsgHeader("getway", "/229", 14);
+ std::uint8_t *ptr1 = buf1->reference() + sizeof(AMF_msg::context_header_t);
if (memcmp(ptr1, buf2->reference(), buf2->size()) == 0) {
@@ -226,7 +225,7 @@ test_encoding()
runtest.fail("AMF_msg::encodeMsgHeader()");
}
- boost::shared_ptr<cygnal::Buffer> buf3 = top.encodeAMFPacket();
+ std::shared_ptr<cygnal::Buffer> buf3 = top.encodeAMFPacket();
if (memcmp(buf1->reference(), buf3->reference(), buf3->allocated()) == 0) {
runtest.pass("AMF_msg::encodeAMFPacket()");
} else {
diff --git a/cygnal/testsuite/libamf.all/test_buffer.cpp b/cygnal/testsuite/libamf.all/test_buffer.cpp
index e7f013d..8a9704b 100644
--- a/cygnal/testsuite/libamf.all/test_buffer.cpp
+++ b/cygnal/testsuite/libamf.all/test_buffer.cpp
@@ -29,7 +29,7 @@
#include <fstream>
#include <cstring>
#include <vector>
-#include <boost/cstdint.hpp>
+#include <cstdint>
#include "dejagnu.h"
#include "log.h"
@@ -255,15 +255,15 @@ test_copy()
runtest.fail ("Buffer::operator=(const char *)");
}
- boost::uint16_t length = 12;
+ std::uint16_t length = 12;
Buffer buf3;
buf3 = length;
Network::byte_t *ptr3 = buf3.reference();
- boost::uint16_t newlen = *(reinterpret_cast<boost::uint16_t *>(ptr3));
+ std::uint16_t newlen = *(reinterpret_cast<std::uint16_t *>(ptr3));
if (length == newlen) {
- runtest.pass ("Buffer::operator=(boost::uint16_t)");
+ runtest.pass ("Buffer::operator=(std::uint16_t)");
} else {
- runtest.fail ("Buffer::operator=(boost::uint16_t)");
+ runtest.fail ("Buffer::operator=(std::uint16_t)");
}
double num = 1.2345;
@@ -423,20 +423,20 @@ test_append()
runtest.fail ("Buffer::operator+=(const string &)");
}
- boost::uint16_t length = 1047;
+ std::uint16_t length = 1047;
Buffer buf7(70);
buf7.copy(data1, 10);
buf7 += length;
- if (memcmp(buf7.reference() + 10, &length, sizeof(boost::uint16_t)) == 0) {
- runtest.pass ("Buffer::operator+=(boost::uint16_t)");
+ if (memcmp(buf7.reference() + 10, &length, sizeof(std::uint16_t)) == 0) {
+ runtest.pass ("Buffer::operator+=(std::uint16_t)");
} else {
- runtest.fail ("Buffer::operator+=(boost::uint16_t)");
+ runtest.fail ("Buffer::operator+=(std::uint16_t)");
}
buf7 += buf6;
- // Network::byte_t *ptr1 = buf7.reference() + 10 + sizeof(boost::uint16_t);
+ // Network::byte_t *ptr1 = buf7.reference() + 10 + sizeof(std::uint16_t);
// Network::byte_t *ptr2 = buf6.reference();
- if (memcmp(buf7.reference() + 10 + sizeof(boost::uint16_t), buf6.reference(), 30) == 0) {
+ if (memcmp(buf7.reference() + 10 + sizeof(std::uint16_t), buf6.reference(), 30) == 0) {
runtest.pass ("Buffer::operator+=(Buffer &)");
} else {
runtest.fail ("Buffer::operator+=(Buffer &)");
@@ -613,7 +613,7 @@ test_operators()
buf1.clear();
buf2.clear();
- boost::uint8_t *ptr1 = buf1.reference();
+ std::uint8_t *ptr1 = buf1.reference();
for (size_t i=1; i< buf1.size(); i++) {
ptr1[i] = i;
}
@@ -638,7 +638,7 @@ test_operators()
Buffer *buf3, *buf4;
buf3 = new Buffer;
- boost::uint8_t *ptr2 = buf3->reference();
+ std::uint8_t *ptr2 = buf3->reference();
for (size_t i=1; i< buf3->size(); i++) {
ptr2[i] = i + 'a';
}
@@ -662,7 +662,7 @@ test_operators()
Buffer buf5(10);
buf5.clear();
- boost::uint8_t *ptr3 = buf5.reference();
+ std::uint8_t *ptr3 = buf5.reference();
buf5 += 'a';
buf5 += 'b';
buf5 += 'c';
diff --git a/cygnal/testsuite/libamf.all/test_el.cpp b/cygnal/testsuite/libamf.all/test_el.cpp
index febb831..d900c89 100644
--- a/cygnal/testsuite/libamf.all/test_el.cpp
+++ b/cygnal/testsuite/libamf.all/test_el.cpp
@@ -119,21 +119,21 @@ main(int argc, char *argv[])
void
test_properties()
{
- std::vector<boost::shared_ptr<cygnal::Element> > data1;
+ std::vector<std::shared_ptr<cygnal::Element> > data1;
const char *str1 = "property one";
- boost::shared_ptr<cygnal::Element> prop1(new Element(str1));
+ std::shared_ptr<cygnal::Element> prop1(new Element(str1));
data1.push_back(prop1);
string str2 = "property two";
- boost::shared_ptr<cygnal::Element> prop2(new Element(str2));
+ std::shared_ptr<cygnal::Element> prop2(new Element(str2));
data1.push_back(prop2);
- boost::shared_ptr<cygnal::Element> prop3(new Element("property three"));
+ std::shared_ptr<cygnal::Element> prop3(new Element("property three"));
data1.push_back(prop3);
double num = 123.456;
- boost::shared_ptr<cygnal::Element> prop4(new Element(num));
+ std::shared_ptr<cygnal::Element> prop4(new Element(num));
data1.push_back(prop4);
Element top;
diff --git a/cygnal/testsuite/libamf.all/test_flv.cpp b/cygnal/testsuite/libamf.all/test_flv.cpp
index a60bed2..88a18fc 100644
--- a/cygnal/testsuite/libamf.all/test_flv.cpp
+++ b/cygnal/testsuite/libamf.all/test_flv.cpp
@@ -132,8 +132,8 @@ test_headers()
// 00 0c 63 72 65 61 74 69 6f 6e 64 61 74 65 creationdate
// 02 00 18 54 75 65 20 4a 75 6e 20 32 34 20 30 38 3a 30 33 3a 34 38 20 32 30 30 38
// 00 00 09 Tue Jun 24 08:03:48 2008
- boost::shared_ptr<cygnal::Buffer> hex1(new Buffer("46 4c 56 01 0d 00 00 00 09 00 00 00 00"));
- boost::shared_ptr<Flv::flv_header_t> head = flv.decodeHeader(hex1);
+ std::shared_ptr<cygnal::Buffer> hex1(new Buffer("46 4c 56 01 0d 00 00 00 09 00 00 00 00"));
+ std::shared_ptr<Flv::flv_header_t> head = flv.decodeHeader(hex1);
if (!head) {
notest = true;
}
@@ -141,7 +141,7 @@ test_headers()
if (notest) {
runtest.untested("Decoded FLV header");
} else {
- boost::uint32_t size = *(reinterpret_cast<boost::uint32_t *>(head->head_size));
+ std::uint32_t size = *(reinterpret_cast<std::uint32_t *>(head->head_size));
if ((memcmp(head->sig, "FLV", 3) == 0)
&& (head->version == 1)
&& (size == 9)) {
@@ -151,7 +151,7 @@ test_headers()
}
}
- boost::shared_ptr<cygnal::Buffer> enc1 = flv.encodeHeader(Flv::FLV_AUDIO | Flv::FLV_VIDEO);
+ std::shared_ptr<cygnal::Buffer> enc1 = flv.encodeHeader(Flv::FLV_AUDIO | Flv::FLV_VIDEO);
Network::byte_t *ptr = enc1->reference();
if ((enc1->size() == sizeof(Flv::flv_header_t))
&& (ptr[3] == 0x1)
@@ -164,8 +164,8 @@ test_headers()
// Test converting 3 byte "integers" to a real 4 byte one. The
// 0xf on each end should be ignore to be correct.
- boost::shared_ptr<cygnal::Buffer> hex2(new Buffer("0f 00 00 a4 0f"));
- boost::uint32_t num = flv.convert24(hex2->reference()+1);
+ std::shared_ptr<cygnal::Buffer> hex2(new Buffer("0f 00 00 a4 0f"));
+ std::uint32_t num = flv.convert24(hex2->reference()+1);
if (num == 0xa4) {
runtest.pass("Flv::convert24()");
} else {
@@ -173,9 +173,9 @@ test_headers()
notest = true;
}
- boost::shared_ptr<cygnal::Buffer> hex3(new Buffer("12 00 00 a4 00 00 00 00 00 00 00"));
+ std::shared_ptr<cygnal::Buffer> hex3(new Buffer("12 00 00 a4 00 00 00 00 00 00 00"));
- boost::shared_ptr<Flv::flv_tag_t> tag3 = flv.decodeTagHeader(hex3);
+ std::shared_ptr<Flv::flv_tag_t> tag3 = flv.decodeTagHeader(hex3);
if ((tag3->type == Flv::TAG_METADATA)
&& (flv.convert24(tag3->bodysize) == 0xa40000)) {
runtest.pass("Decoded FLV MetaData Tag header");
@@ -190,8 +190,8 @@ test_tags()
Flv flv;
bool notest = false;
- boost::shared_ptr<cygnal::Buffer> hex1(new Buffer("02 00 0a 6f 6e 4d 65 74 61 44 61 74 61 08 00 00 00 00 00 08 64 75 72 61 74 69 6f 6e 00 40 6d 6e 24 dd 2f 1a a0 00 0c 76 69 64 65 6f 63 6f 64 65 63 69 64 00 40 00 00 00 00 00 00 00 00 0c 61 75 64 69 6f 63 6f 64 65 63 69 64 00 40 00 00 00 00 00 00 00 00 0c 63 61 6e 53 65 65 6b 54 6f 45 6e 64 01 00 00 09 63 72 65 61 74 65 64 62 79 02 00 07 46 4d 53 20 33 2e 30 00 0c 63 72 65 61 74 69 6f 6e 64 61 74 65 02 00 18 54 75 65 20 4a 75 6e 20 32 34 20 30 38 3a 30 33 3a 34 38 20 32 30 30 38 00 00 09"));
- boost::shared_ptr<cygnal::Element> el1 = flv.decodeMetaData(hex1);
+ std::shared_ptr<cygnal::Buffer> hex1(new Buffer("02 00 0a 6f 6e 4d 65 74 61 44 61 74 61 08 00 00 00 00 00 08 64 75 72 61 74 69 6f 6e 00 40 6d 6e 24 dd 2f 1a a0 00 0c 76 69 64 65 6f 63 6f 64 65 63 69 64 00 40 00 00 00 00 00 00 00 00 0c 61 75 64 69 6f 63 6f 64 65 63 69 64 00 40 00 00 00 00 00 00 00 00 0c 63 61 6e 53 65 65 6b 54 6f 45 6e 64 01 00 00 09 63 72 65 61 74 65 64 62 79 02 00 07 46 4d 53 20 33 2e 30 00 0c 63 72 65 61 74 69 6f 6e 64 61 74 65 02 00 18 54 75 65 20 4a 75 6e 20 32 34 20 30 38 3a 30 33 3a 34 38 20 32 30 30 38 00 00 09"));
+ std::shared_ptr<cygnal::Element> el1 = flv.decodeMetaData(hex1);
el1->dump();
if (!el1) {
notest = true;
@@ -209,9 +209,9 @@ test_tags()
}
// Test decoding Audio tags
- boost::shared_ptr<cygnal::Buffer> hex2(new Buffer("09 00 00 00 00 00 00 00 00 00 00 00"));
- boost::shared_ptr<Flv::flv_tag_t> tag2 = flv.decodeTagHeader(hex2);
- boost::shared_ptr<Flv::flv_audio_t> data2 = flv.decodeAudioData(*(hex2->reference() + 11));
+ std::shared_ptr<cygnal::Buffer> hex2(new Buffer("09 00 00 00 00 00 00 00 00 00 00 00"));
+ std::shared_ptr<Flv::flv_tag_t> tag2 = flv.decodeTagHeader(hex2);
+ std::shared_ptr<Flv::flv_audio_t> data2 = flv.decodeAudioData(*(hex2->reference() + 11));
if ((tag2->type && Flv::TAG_AUDIO)
&& (data2->type == Flv::AUDIO_MONO)
&& (data2->size == Flv::AUDIO_8BIT)
@@ -222,9 +222,9 @@ test_tags()
runtest.fail("Decoded FLV Audio Data flags");
}
- boost::shared_ptr<cygnal::Buffer> hex3(new Buffer("08 00 00 1b 00 00 00 00 00 00 00 2a"));
- boost::shared_ptr<Flv::flv_tag_t> tag3 = flv.decodeTagHeader(hex3);
- boost::shared_ptr<Flv::flv_video_t> data3 = flv.decodeVideoData(*(hex3->reference() + 11));
+ std::shared_ptr<cygnal::Buffer> hex3(new Buffer("08 00 00 1b 00 00 00 00 00 00 00 2a"));
+ std::shared_ptr<Flv::flv_tag_t> tag3 = flv.decodeTagHeader(hex3);
+ std::shared_ptr<Flv::flv_video_t> data3 = flv.decodeVideoData(*(hex3->reference() + 11));
if ((tag3->type && Flv::TAG_VIDEO)
&& (data3->codecID == Flv::VIDEO_H263)
&& (data3->type == Flv::KEYFRAME)) {
@@ -233,8 +233,8 @@ test_tags()
runtest.fail("Decoded FLV Video Data flags");
}
- boost::shared_ptr<cygnal::Buffer> hex4(new Buffer("00 0a 6f 6e 4d 65 74 61 44 61 74 61 08 00 00 00 00 00 08 64 75 72 61 74 69 6f 6e 00 40 6d 6e 24 dd 2f 1a a0 00 0c 76 69 64 65 6f 63 6f 64 65 63 69 64 00 40 00 00 00 00 00 00 00 00 0c 61 75 64 69 6f 63 6f 64 65 63 69 64 00 40 00 00 00 00 00 00 00 00 0c 63 61 6e 53 65 65 6b 54 6f 45 6e 64 01 00 00 09 63 72 65 61 74 65 64 62 79 02 00 07 46 4d 53 20 33 2e 30 00 0c 63 72 65 61 74 69 6f 6e 64 61 74 65 02 00 18 54 75 65 20 4a 75 6e 20 32 34 20 30 38 3a 30 33 3a 34 38 20 32 30 30 38 00 00 09"));
- boost::shared_ptr<cygnal::Element> el4 = flv.decodeMetaData(hex4);
+ std::shared_ptr<cygnal::Buffer> hex4(new Buffer("00 0a 6f 6e 4d 65 74 61 44 61 74 61 08 00 00 00 00 00 08 64 75 72 61 74 69 6f 6e 00 40 6d 6e 24 dd 2f 1a a0 00 0c 76 69 64 65 6f 63 6f 64 65 63 69 64 00 40 00 00 00 00 00 00 00 00 0c 61 75 64 69 6f 63 6f 64 65 63 69 64 00 40 00 00 00 00 00 00 00 00 0c 63 61 6e 53 65 65 6b 54 6f 45 6e 64 01 00 00 09 63 72 65 61 74 65 64 62 79 02 00 07 46 4d 53 20 33 2e 30 00 0c 63 72 65 61 74 69 6f 6e 64 61 74 65 02 00 18 54 75 65 20 4a 75 6e 20 32 34 20 30 38 3a 30 33 3a 34 38 20 32 30 30 38 00 00 09"));
+ std::shared_ptr<cygnal::Element> el4 = flv.decodeMetaData(hex4);
if (!el4) {
notest = true;
}
@@ -252,8 +252,8 @@ test_tags()
#if 0
// These are the packets as FLVParser handes them off
- boost::shared_ptr<cygnal::Buffer> hex5(new Buffer("00 0a 6f 6e 4d 65 74 61 44 61 74 61 08 00 00 00 0a 00 08 64 75 72 61 74 69 6f 6e 00 40 82 5c fd f3 b6 45 a2 00 0d 76 69 64 65 6f 64 61 74 61 72 61 74 65 00 40 74 8a 51 f7 27 8d c5 00 15 6c 61 73 74 6b 65 79 66 72 61 6d 65 74 69 6d 65 73 74 61 6d 70 00 40 82 53 5a 1c ac 08 31 00 14 6c 61 73 74 6b 65 79 66 72 61 6d 65 6c 6f 63 61 74 69 6f 6e 00 41 77 01 7f 10 00 00 00 00 07 63 72 65 61 74 6f 72 02 00 0d 59 6f 75 54 75 62 65 2c 20 49 6e 63 2e 00 0f 6d 65 74 61 64 61 74 61 63 72 65 61 74 6f 72 02 00 1a 59 6f 75 54 75 62 65 20 4d 65 74 61 64 61 74 61 20 49 6e 6a 65 63 74 6f 72 2e 00 09 66 6c 76 73 6f 75 72 63 65 02 00 04 63 64 62 70 00 0c 68 61 73 6b 65 79 66 72 61 6d 65 73 01 01 00 0b 68 61 73 6d 65 74 61 64 61 74 61 01 01 00 09 6b 65 79 66 72 61 6d 65 73 03 00 05 74 69 6d 65 73 0a 00 00 01 33 00 00 00 00 00 00 00 00 00 00 3f ff 5c 28 f5 c2 8f 5c 00 40 0f 5e 35 3f 7c ed 91 00 40 17 86 24 dd 2f 1a a0 00 40 1f 5d 2f 1a 9f be 77 00 40 23 9a 1c ac 08 31 27 00 40 26 1b 22 d0 e5 60 42 00 40 26 30 20 c4 9b a5 e3 00 40 2a 1c 28 f5 c2 8f 5c 00 40 2e 07 ae 14 7a e1 48 00 40 30 f9 99 99 99 99 9a 00 40 32 ef 9d b2 2d 0e 56 00 40 34 e5 60 41 89 37 4c 00 40 36 db 22 d0 e5 60 42 00 40 38 d0 e5 60 41 89 37 00 40 3a c6 e9 78 d4 fd f4 00 40 3c bc ac 08 31 26 e9 00 40 3e b2 6e 97 8d 4f df 00 40 40 54 39 58 10 62 4e 00 40 41 4f 1a 9f be 76 c9 00 40 42 49 fb e7 6c 8b 44 00 40 43 44 dd 2f 1a 9f be 00 40 44 3f df 3b 64 5a 1d 00 40 45 3a c0 83 12 6e 98 00 40 46 35 a1 ca c0 83 12 00 40 47 30 a3 d7 0a 3d 71 00 40 48 2b 85 1e b8 51 ec 00 40 49 26 66 66 66 66 66 00 40 4a 21 68 72 b0 20 c5 00 40 4b 1c 49 ba 5e 35 3f 00 40 4c 17 2b 02 0c 49 ba 00 40 4d 12 0c 49 ba 5e 35 00 40 4e 0d 0e 56 04 18 93 00 40 4f 07 ef 9d b2 2d 0e 00 40 50 01 68 72 b0 20 c5 00 40 50 7e e9 78 d4 fd f4 00 40 50 fc 5a 1c ac 08 31 00 40 51 79 ca c0 83 12 6f 00 40 51 f7 3b 64 5a 1c ac 00 40 52 74 bc 6a 7e f9 db 00 40 52 f2 2d 0e 56 04 19 00 40 53 6f 9d b2 2d 0e 56 00 40 53 ed 1e b8 51 eb 85 00 40 54 6a 8f 5c 28 f5 c3 00 40 54 ea b0 20 c4 9b a6 00 40 55 68 20 c4 9b a5 e3 00 40 55 e5 a1 ca c0 83 12 00 40 56 63 12 6e 97 8d 50 00 40 56 e0 83 12 6e 97 8d 00 40 57 5d f3 b6 45 a1 cb 00 40 57 db 74 bc 6a 7e fa 00 40 58 58 e5 60 41 89 37 00 40 58 d6 56 04 18 93 75 00 40 59 53 d7 0a 3d 70 a4 00 40 59 d1 47 ae 14 7a e1 00 40 5a 4e b8 51 eb 85 1f 00 40 5a cc 28 f5 c2 8f 5c 00 40 5b 49 a9 fb e7 6c 8b 00 40 5b c7 1a 9f be 76 c9 00 40 5c 44 8b 43 95 81 06 00 40 5c c2 0c 49 ba 5e 35 00 40 5d 3f 7c ed 91 68 73 00 40 5d bc ed 91 68 72 b0 00 40 5e 3a 5e 35 3f 7c ee 00 40 5e b7 df 3b 64 5a 1d 00 40 5f 35 4f df 3b 64 5a 00 40 5f b2 c0 83 12 6e 98 00 40 60 18 20 c4 9b a5 e3 00 40 60 56 d9 16 87 2b 02 00 40 60 95 91 68 72 b0 21 00 40 60 d4 51 eb 85 1e b8 00 40 61 13 0a 3d 70 a3 d7 00 40 61 51 c2 8f 5c 28 f6 00 40 61 90 7a e1 47 ae 14 00 40 61 cf 3b 64 5a 1c ac 00 40 62 0d f3 b6 45 a1 cb 00 40 62 4c ac 08 31 26 e9 00 40 62 8b 6c 8b 43 95 81 00 40 62 ca 24 dd 2f 1a a0 00 40 63 08 dd 2f 1a 9f be 00 40 63 47 95 81 06 24 dd 00 40 63 86 56 04 18 93 75 00 40 63 c5 0e 56 04 18 93 00 40 64 03 c6 a7 ef 9d b2 00 40 64 42 87 2b 02 0c 4a 00 40 64 81 3f 7c ed 91 68 00 40 64 bf f7 ce d9 16 87 00 40 64 fe b0 20 c4 9b a6 00 40 65 3d 70 a3 d7 0a 3d 00 40 65 7c 28 f5 c2 8f 5c 00 40 65 ba e1 47 ae 14 7b 00 40 65 f9 a1 ca c0 83 12 00 40 66 38 5a 1c ac 08 31 00 40 66 77 12 6e 97 8d 50 00 40 66 b5 ca c0 83 12 6f 00 40 66 f4 8b 43 95 81 06 00 40 67 33 43 95 81 06 25 00 40 67 71 fb e7 6c 8b 44 00 40 67 b0 bc 6a 7e f9 db 00 40 67 ef 74 bc 6a 7e fa 00 40 68 2e 2d 0e 56 04 19 00 40 68 6c ed 91 68 72 b0 00 40 68 ab a5 e3 53 f7 cf 00 40 68 ea 5e 35 3f 7c ee 00 40 69 29 16 87 2b 02 0c 00 40 69 67 d7 0a 3d 70 a4 00 40 69 a6 8f 5c 28 f5 c3 00 40 69 e5 47 ae 14 7a e1 00 40 6a 24 08 31 26 e9 79 00 40 6a 62 c0 83 12 6e 98 00 40 6a a1 78 d4 fd f3 b6 00 40 6a e0 31 26 e9 78 d5 00 40 6b 15 99 99 99 99 9a 00 40 6b 24 49 ba 5e 35 3f 00 40 6b 63 02 0c 49 ba 5e 00 40 6b a1 ba 5e 35 3f 7d 00 40 6b e0 72 b0 20 c4 9c 00 40 6c 1f 33 33 33 33 33 00 40 6c 5d eb 85 1e b8 52 00 40 6c 9c a3 d7 0a 3d 71 00 40 6c db 64 5a 1c ac 08 00 40 6d 12 1c ac 08 31 27 00 40 6d 50 d4 fd f3 b6 46 00 40 6d 8f 8d 4f df 3b 64 00 40 6d ce 4d d2 f1 a9 fc 00 40 6e 0b ae 14 7a e1 48 00 40 6e 4a 66 66 66 66 66 00 40 6e 89 26 e9 78 d4 fe 00 40 6e c7 df 3b 64 5a 1d 00 40 6f 06 97 8d 4f df 3b 00 40 6f 39 4f df 3b 64 5a 00 40 6f 78 08 31 26 e9 79 00 40 6f b6 c8 b4 39 58 10 00 40 6f bc 20 c4 9b a5 e3 00 40 6f bd 70 a3 d7 0a 3d 00 40 6f fc 31 26 e9 78 d5 00 40 70 1d 74 bc 6a 7e fa 00 40 70 3c d0 e5 60 41 89 00 40 70 5c 31 26 e9 78 d5 00 40 70 7b 8d 4f df 3b 64 00 40 70 96 e9 78 d4 fd f4 00 40 70 98 3d 70 a3 d7 0a 00 40 70 b6 45 a1 ca c0 83 00 40 70 d5 a1 ca c0 83 12 00 40 70 f5 02 0c 49 ba 5e 00 40 71 14 5e 35 3f 7c ee 00 40 71 33 ba 5e 35 3f 7d 00 40 71 53 1a 9f be 76 c9 00 40 71 72 76 c8 b4 39 58 00 40 71 91 d2 f1 a9 fb e7 00 40 71 b1 2f 1a 9f be 77 00 40 71 d0 8f 5c 28 f5 c3 00 40 71 ef eb 85 1e b8 52 00 40 72 0f 47 ae 14 7a e1 00 40 72 2e a7 ef 9d b2 2d 00 40 72 4e 04 18 93 74 bc 00 40 72 6d 60 41 89 37 4c 00 40 72 8c bc 6a 7e f9 db 00 40 72 ac 1c ac 08 31 27 00 40 72 cb 78 d4 fd f3 b6 00 40 72 ea d4 fd f3 b6 46 00 40 73 0a 35 3f 7c ed 91 00 40 73 29 91 68 72 b0 21 00 40 73 48 ed 91 68 72 b0 00 40 73 68 4d d2 f1 a9 fc 00 40 73 87 a9 fb e7 6c 8b 00 40 73 a7 06 24 dd 2f 1b 00 40 73 c6 62 4d d2 f1 aa 00 40 73 e5 c2 8f 5c 28 f6 00 40 74 05 1e b8 51 eb 85 00 40 74 24 7a e1 47 ae 14 00 40 74 43 db 22 d0 e5 60 00 40 74 63 37 4b c6 a7 f0 00 40 74 82 93 74 bc 6a 7f 00 40 74 a1 ef 9d b2 2d 0e 00 40 74 c1 4f df 3b 64 5a 00 40 74 e0 ac 08 31 26 e9 00 40 75 00 08 31 26 e9 79 00 40 75 1f 68 72 b0 20 c5 00 40 75 3e c4 9b a5 e3 54 00 40 75 5e 20 c4 9b a5 e3 00 40 75 7d 81 06 24 dd 2f 00 40 75 9c dd 2f 1a 9f be 00 40 75 bc 39 58 10 62 4e 00 40 75 db 95 81 06 24 dd 00 40 75 fa f5 c2 8f 5c 29 00 40 76 1a 51 eb 85 1e b8 00 40 76 39 ae 14 7a e1 48 00 40 76 59 0e 56 04 18 93 00 40 76 78 6a 7e f9 db 23 00 40 76 97 c6 a7 ef 9d b2 00 40 76 b7 22 d0 e5 60 42 00 40 76 d6 83 12 6e 97 8d 00 40 76 f5 df 3b 64 5a 1d 00 40 77 15 3b 64 5a 1c ac 00 40 77 34 9b a5 e3 53 f8 00 40 77 53 f7 ce d9 16 87 00 40 77 73 53 f7 ce d9 17 00 40 77 92 b0 20 c4 9b a6 00 40 77 b2 10 62 4d d2 f2 00 40 77 d1 6c 8b 43 95 81 00 40 77 f0 c8 b4 39 58 10 00 40 78 10 28 f5 c2 8f 5c 00 40 78 2f 85 1e b8 51 ec 00 40 78 4e e1 47 ae 14 7b 00 40 78 6e 3d 70 a3 d7 0a 00 40 78 8d 9d b2 2d 0e 56 00 40 78 ac f9 db 22 d0 e5 00 40 78 cc 56 04 18 93 75 00 40 78 eb b6 45 a1 ca c1 00 40 79 0b 12 6e 97 8d 50 00 40 79 2a 6e 97 8d 4f df 00 40 79 49 ce d9 16 87 2b 00 40 79 69 2b 02 0c 49 ba 00 40 79 88 87 2b 02 0c 4a 00 40 79 a7 e3 53 f7 ce d9 00 40 79 c7 43 95 81 06 25 00 40 79 e6 9f be 76 c8 b4 00 40 7a 05 fb e7 6c 8b 44 00 40 7a 25 5c 28 f5 c2 8f 00 40 7a 44 b8 51 eb 85 1f 00 40 7a 64 14 7a e1 47 ae 00 40 7a 83 70 a3 d7 0a 3d 00 40 7a a2 d0 e5 60 41 89 00 40 7a c2 2d 0e 56 04 19 00 40 7a e1 89 37 4b c6 a8 00 40 7b 00 e9 78 d4 fd f4 00 40 7b 20 45 a1 ca c0 83 00 40 7b 3f a1 ca c0 83 12 00 40 7b 5f 02 0c 49 ba 5e 00 40 7b 7e 5e 35 3f 7c ee 00 40 7b 9d ba 5e 35 3f 7d 00 40 7b bd 16 87 2b 02 0c 00 40 7b dc 76 c8 b4 39 58 00 40 7b fb d2 f1 a9 fb e7 00 40 7c 1b 2f 1a 9f be 77 00 40 7c 3a 8f 5c 28 f5 c3 00 40 7c 59 eb 85 1e b8 52 00 40 7c 79 47 ae 14 7a e1 00 40 7c 98 a3 d7 0a 3d 71 00 40 7c b8 04 18 93 74 bc 00 40 7c d7 60 41 89 37 4c 00 40 7c f6 bc 6a 7e f9 db 00 40 7d 16 1c ac 08 31 27 00 40 7d 35 78 d4 fd f3 b6 00 40 7d 54 d4 fd f3 b6 46 00 40 7d 74 31 26 e9 78 d5 00 40 7d 93 91 68 72 b0 21 00 40 7d b2 ed 91 68 72 b0 00 40 7d d2 49 ba 5e 35 3f 00 40 7d f1 a9 fb e7 6c 8b 00 40 7e 11 06 24 dd 2f 1b 00 40 7e 30 62 4d d2 f1 aa 00 40 7e 4f c2 8f 5c 28 f6 00 40 7e 55 16 87 2b 02 0c 00 40 7e 74 72 b0 20 c4 9c 00 40 7e 93 d2 f1 a9 fb e7 00 40 7e b3 2f 1a 9f be 77 00 40 7e d2 8b 43 95 81 06 00 40 7e f1 eb 85 1e b8 52 00 40 7f 11 47 ae 14 7a e1 00 40 7f 30 a3 d7 0a 3d 71 00 40 7f 50 00 00 00 00 00 00 40 7f 6f 60 41 89 37 4c 00 40 7f 8e bc 6a 7e f9 db 00 40 7f ae 18 93 74 bc 6a 00 40 7f cd 78 d4 fd f3 b6 00 40 7f ec d4 fd f3 b6 46 00 40 80 06 18 93 74 bc 6a 00 40 80 15 c8 b4 39 58 10 00 40 80 25 76 c8 b4 39 58 00 40 80 35 24 dd 2f 1a a0 00 40 80 44 d2 f1 a9 fb e7 00 40 80 54 83 12 6e 97 8d 00 40 80 64 31 26 e9 78 d5 00 40 80 73 df 3b 64 5a 1d 00 40 80 83 8f 5c 28 f5 c3 00 40 80 93 3d 70 a3 d7 0a 00 40 80 a2 eb 85 1e b8 52 00 40 80 b2 99 99 99 99 9a 00 40 80 c2 49 ba 5e 35 3f 00 40 80 d1 f7 ce d9 16 87 00 40 80 e1 a5 e3 53 f7 cf 00 40 80 f1 56 04 18 93 75 00 40 81 01 04 18 93 74 bc 00 40 81 10 b2 2d 0e 56 04 00 40 81 20 62 4d d2 f1 aa 00 40 81 30 10 62 4d d2 f2 00 40 81 3f be 76 c8 b4 39 00 40 81 4f 6c 8b 43 95 81 00 40 81 5f 1c ac 08 31 27 00 40 81 6e ca c0 83 12 6f 00 40 81 7e 78 d4 fd f3 b6 00 40 81 8e 28 f5 c2 8f 5c 00 40 81 9d d7 0a 3d 70 a4 00 40 81 ad 85 1e b8 51 ec 00 40 81 bd 33 33 33 33 33 00 40 81 cc e3 53 f7 ce d9 00 40 81 dc 91 68 72 b0 21 00 40 81 ec 3f 7c ed 91 68 00 40 81 fb ef 9d b2 2d 0e 00 40 82 0b 9d b2 2d 0e 56 00 40 82 1b 4b c6 a7 ef 9e 00 40 82 2a f9 db 22 d0 e5 00 40 82 33 fd f3 b6 45 a2 00 40 82 43 ac 08 31 26 e9 00 40 82 53 5a 1c ac 08 31 00 0d 66 69 6c 65 70 6f 73 69 74 69 6f 6e 73 0a 00 00 01 33 00 40 b6 d2 00 00 00 00 00 00 40 db 4f 80 00 00 00 00 00 40 f0 67 e0 00 00 00 00 00 40 f8 41 50 00 00 00 00 00 41 00 30 98 00 00 00 00 00 41 04 fd 28 00 00 00 00 00 41 07 a2 10 00 00 00 00 00 41 07 e6 68 00 00 00 00 00 41 11 da 7c 00 00 00 00 00 41 16 a7 dc 00 00 00 00 00 41 1b 35 6c 00 00 00 00 00 41 1f d4 bc 00 00 00 00 00 41 22 4b 5e 00 00 00 00 00 41 24 ab 78 00 00 00 00 00 41 27 20 e8 00 00 00 00 00 41 29 a7 04 00 00 00 00 00 41 2c 14 f6 00 00 00 00 00 41 2e 82 f8 00 00 00 00 00 41 30 a9 29 00 00 00 00 00 41 32 1f e6 00 00 00 00 00 41 33 69 a0 00 00 00 00 00 41 34 cb df 00 00 00 00 00 41 36 33 96 00 00 00 00 00 41 37 94 db 00 00 00 00 00 41 38 e2 54 00 00 00 00 00 41 3a 4d 10 00 00 00 00 00 41 3b a4 1e 00 00 00 00 00 41 3d 31 ba 00 00 00 00 00 41 3e b3 75 00 00 00 00 00 41 40 09 72 80 00 00 00 00 41 40 a7 34 00 00 00 00 00 41 41 1f bf 80 00 00 00 00 41 41 a1 79 80 00 00 00 00 41 42 27 3c 80 00 00 00 00 41 42 b0 11 00 00 00 00 00 41 43 3c 27 80 00 00 00 00 41 43 c6 d7 80 00 00 00 00 41 44 4e 36 80 00 00 00 00 41 44 d9 50 80 00 00 00 00 41 45 60 9f 00 00 00 00 00 41 45 c5 39 80 00 00 00 00 41 46 00 9d 00 00 00 00 00 41 46 32 5e 00 00 00 00 00 41 46 64 c6 00 00 00 00 00 41 46 c3 cc 00 00 00 00 00 41 47 5a 90 80 00 00 00 00 41 48 00 08 80 00 00 00 00 41 48 cd 6d 80 00 00 00 00 41 49 98 39 80 00 00 00 00 41 4a 5b 8b 80 00 00 00 00 41 4b 2c db 00 00 00 00 00 41 4c 0f 67 00 00 00 00 00 41 4c ed c9 80 00 00 00 00 41 4d c9 d3 80 00 00 00 00 41 4e a7 83 80 00 00 00 00 41 4f 82 e1 00 00 00 00 00 41 50 2a 2b 00 00 00 00 00 41 50 89 39 c0 00 00 00 00 41 50 df 38 40 00 00 00 00 41 51 37 93 40 00 00 00 00 41 51 9c 32 80 00 00 00 00 41 52 0b 0b c0 00 00 00 00 41 52 68 52 80 00 00 00 00 41 52 bb 21 80 00 00 00 00 41 53 08 7d c0 00 00 00 00 41 53 5a 6b c0 00 00 00 00 41 53 ab e1 00 00 00 00 00 41 53 fc d3 c0 00 00 00 00 41 54 4b b2 40 00 00 00 00 41 54 97 2d 40 00 00 00 00 41 54 dd d1 40 00 00 00 00 41 55 28 c8 40 00 00 00 00 41 55 74 d6 c0 00 00 00 00 41 55 c6 28 40 00 00 00 00 41 56 11 3a 40 00 00 00 00 41 56 5b a7 40 00 00 00 00 41 56 c2 97 80 00 00 00 00 41 57 18 d0 00 00 00 00 00 41 57 6f 38 00 00 00 00 00 41 57 c1 05 80 00 00 00 00 41 58 0e f9 40 00 00 00 00 41 58 61 d9 40 00 00 00 00 41 58 be 21 c0 00 00 00 00 41 59 1b a3 00 00 00 00 00 41 59 7d b7 80 00 00 00 00 41 59 de c4 80 00 00 00 00 41 5a 38 6f c0 00 00 00 00 41 5a 97 be 40 00 00 00 00 41 5b 06 5f 00 00 00 00 00 41 5b 7b 62 80 00 00 00 00 41 5b e8 4c c0 00 00 00 00 41 5c 59 4c 40 00 00 00 00 41 5c c6 99 00 00 00 00 00 41 5d 37 eb 00 00 00 00 00 41 5d a1 4a 00 00 00 00 00 41 5e 05 00 00 00 00 00 00 41 5e 69 d8 00 00 00 00 00 41 5e d1 e9 80 00 00 00 00 41 5f 35 61 80 00 00 00 00 41 5f 99 a3 80 00 00 00 00 41 5f f8 ea 40 00 00 00 00 41 60 2a b8 c0 00 00 00 00 41 60 5c 12 40 00 00 00 00 41 60 90 a9 60 00 00 00 00 41 60 c6 b7 c0 00 00 00 00 41 60 fe 01 00 00 00 00 00 41 61 31 40 00 00 00 00 00 41 61 5e 86 00 00 00 00 00 41 61 8a fc a0 00 00 00 00 41 61 b9 43 00 00 00 00 00 41 61 e7 16 80 00 00 00 00 41 62 17 b3 80 00 00 00 00 41 62 40 7d 40 00 00 00 00 41 62 44 d4 60 00 00 00 00 41 62 72 5d 00 00 00 00 00 41 62 a4 b7 00 00 00 00 00 41 62 e2 3d a0 00 00 00 00 41 63 1c b5 a0 00 00 00 00 41 63 59 85 c0 00 00 00 00 41 63 91 80 00 00 00 00 00 41 63 c4 75 c0 00 00 00 00 41 63 f6 d6 20 00 00 00 00 41 64 1a 9d 80 00 00 00 00 41 64 42 0c e0 00 00 00 00 41 64 66 c9 a0 00 00 00 00 41 64 86 97 80 00 00 00 00 41 64 a7 b3 e0 00 00 00 00 41 64 ca 51 a0 00 00 00 00 41 64 ed 31 60 00 00 00 00 41 65 18 18 60 00 00 00 00 41 65 42 43 00 00 00 00 00 41 65 70 d6 00 00 00 00 00 41 65 a0 a8 00 00 00 00 00 41 65 a5 0d 40 00 00 00 00 41 65 a6 30 a0 00 00 00 00 41 65 c8 96 40 00 00 00 00 41 65 e5 8e 80 00 00 00 00 41 66 05 ed 20 00 00 00 00 41 66 24 bc 40 00 00 00 00 41 66 3f a7 00 00 00 00 00 41 66 5d 8e c0 00 00 00 00 41 66 5f 95 40 00 00 00 00 41 66 85 5a c0 00 00 00 00 41 66 ac 52 20 00 00 00 00 41 66 d3 8b e0 00 00 00 00 41 66 fa e4 00 00 00 00 00 41 67 24 d0 c0 00 00 00 00 41 67 4e d9 c0 00 00 00 00 41 67 7a 55 a0 00 00 00 00 41 67 a3 1d e0 00 00 00 00 41 67 cb f9 40 00 00 00 00 41 67 f7 24 e0 00 00 00 00 41 68 23 ce a0 00 00 00 00 41 68 3c fb 00 00 00 00 00 41 68 5d f1 00 00 00 00 00 41 68 7d 50 40 00 00 00 00 41 68 9a 37 40 00 00 00 00 41 68 b6 4b a0 00 00 00 00 41 68 d6 08 c0 00 00 00 00 41 68 f7 fd e0 00 00 00 00 41 69 1a 44 c0 00 00 00 00 41 69 3a 2a 80 00 00 00 00 41 69 5c 07 20 00 00 00 00 41 69 7e ec 20 00 00 00 00 41 69 9e 44 20 00 00 00 00 41 69 b8 f3 c0 00 00 00 00 41 69 d5 ec 40 00 00 00 00 41 69 f3 d9 00 00 00 00 00 41 6a 10 74 e0 00 00 00 00 41 6a 2d 33 00 00 00 00 00 41 6a 4b 9e a0 00 00 00 00 41 6a 72 eb 00 00 00 00 00 41 6a 9b fd 40 00 00 00 00 41 6a cd 8e e0 00 00 00 00 41 6b 01 aa 60 00 00 00 00 41 6b 33 d5 a0 00 00 00 00 41 6b 64 ca a0 00 00 00 00 41 6b 8f 90 00 00 00 00 00 41 6b bf f1 00 00 00 00 00 41 6b f0 4f 20 00 00 00 00 41 6c 1d 1f c0 00 00 00 00 41 6c 47 b7 00 00 00 00 00 41 6c 72 ee e0 00 00 00 00 41 6c 9a dc 60 00 00 00 00 41 6c c0 04 a0 00 00 00 00 41 6c e1 5a a0 00 00 00 00 41 6d 03 4f e0 00 00 00 00 41 6d 28 24 60 00 00 00 00 41 6d 4c da e0 00 00 00 00 41 6d 71 93 80 00 00 00 00 41 6d 99 50 00 00 00 00 00 41 6d c0 4f e0 00 00 00 00 41 6d e5 c9 40 00 00 00 00 41 6e 08 fe c0 00 00 00 00 41 6e 2d 90 c0 00 00 00 00 41 6e 48 6a 40 00 00 00 00 41 6e 7b 65 40 00 00 00 00 41 6e ab 11 c0 00 00 00 00 41 6e e1 0e 00 00 00 00 00 41 6f 18 8b 00 00 00 00 00 41 6f 4c 1d 60 00 00 00 00 41 6f 7c 8f 00 00 00 00 00 41 6f ad 1e 20 00 00 00 00 41 6f dd 1e 60 00 00 00 00 41 70 06 b0 60 00 00 00 00 41 70 1d 3c 70 00 00 00 00 41 70 33 e5 60 00 00 00 00 41 70 49 a9 00 00 00 00 00 41 70 5d 8d f0 00 00 00 00 41 70 71 9c 80 00 00 00 00 41 70 84 c4 c0 00 00 00 00 41 70 99 79 30 00 00 00 00 41 70 ac ec 30 00 00 00 00 41 70 c0 bd f0 00 00 00 00 41 70 d5 bb 00 00 00 00 00 41 70 ea c4 a0 00 00 00 00 41 70 ff 77 10 00 00 00 00 41 71 13 be 30 00 00 00 00 41 71 28 10 40 00 00 00 00 41 71 3c e0 10 00 00 00 00 41 71 52 e4 b0 00 00 00 00 41 71 6a 7f 70 00 00 00 00 41 71 81 b6 20 00 00 00 00 41 71 97 a1 d0 00 00 00 00 41 71 ae 53 b0 00 00 00 00 41 71 c4 2a 50 00 00 00 00 41 71 d9 b0 30 00 00 00 00 41 71 ef 51 20 00 00 00 00 41 72 05 34 90 00 00 00 00 41 72 1b 83 f0 00 00 00 00 41 72 30 d1 e0 00 00 00 00 41 72 45 bc 00 00 00 00 00 41 72 5d 36 00 00 00 00 00 41 72 73 aa 30 00 00 00 00 41 72 89 37 20 00 00 00 00 41 72 9d b9 50 00 00 00 00 41 72 b1 3c 50 00 00 00 00 41 72 c6 08 40 00 00 00 00 41 72 da dc 60 00 00 00 00 41 72 ef 73 a0 00 00 00 00 41 73 05 1b c0 00 00 00 00 41 73 1a bc 80 00 00 00 00 41 73 2f fb c0 00 00 00 00 41 73 46 ff 30 00 00 00 00 41 73 5d 18 00 00 00 00 00 41 73 75 51 60 00 00 00 00 41 73 8a df 80 00 00 00 00 41 73 a0 69 d0 00 00 00 00 41 73 b6 e4 b0 00 00 00 00 41 73 ce 66 50 00 00 00 00 41 73 e5 91 b0 00 00 00 00 41 73 fa 77 50 00 00 00 00 41 74 0f 1a f0 00 00 00 00 41 74 24 e8 10 00 00 00 00 41 74 29 e9 a0 00 00 00 00 41 74 37 50 10 00 00 00 00 41 74 40 3f b0 00 00 00 00 41 74 49 41 40 00 00 00 00 41 74 53 1b 60 00 00 00 00 41 74 5e 1c 30 00 00 00 00 41 74 68 73 80 00 00 00 00 41 74 72 4d d0 00 00 00 00 41 74 7c 61 40 00 00 00 00 41 74 87 63 20 00 00 00 00 41 74 92 10 e0 00 00 00 00 41 74 9b 9a d0 00 00 00 00 41 74 a7 96 70 00 00 00 00 41 74 b0 93 20 00 00 00 00 41 74 be 44 70 00 00 00 00 41 74 c5 96 e0 00 00 00 00 41 74 d2 f4 70 00 00 00 00 41 74 e3 19 00 00 00 00 00 41 74 f3 c5 30 00 00 00 00 41 75 04 72 d0 00 00 00 00 41 75 15 c5 00 00 00 00 00 41 75 28 b8 30 00 00 00 00 41 75 3b eb 10 00 00 00 00 41 75 4f 45 40 00 00 00 00 41 75 63 1e b0 00 00 00 00 41 75 77 6e e0 00 00 00 00 41 75 8b af 50 00 00 00 00 41 75 9e ed 40 00 00 00 00 41 75 b2 1d 80 00 00 00 00 41 75 c5 66 90 00 00 00 00 41 75 d9 14 c0 00 00 00 00 41 75 ec aa 20 00 00 00 00 41 75 ff 1d 90 00 00 00 00 41 76 10 ed 90 00 00 00 00 41 76 23 32 20 00 00 00 00 41 76 38 3d 20 00 00 00 00 41 76 50 26 60 00 00 00 00 41 76 68 93 f0 00 00 00 00 41 76 7b eb d0 00 00 00 00 41 76 83 d6 d0 00 00 00 00 41 76 8f 6a 90 00 00 00 00 41 76 97 5c 00 00 00 00 00 41 76 9f 4a 40 00 00 00 00 41 76 a7 37 00 00 00 00 00 41 76 af 9f f0 00 00 00 00 41 76 c2 85 f0 00 00 00 00 41 76 cb f1 70 00 00 00 00 41 76 d5 56 00 00 00 00 00 41 76 de b9 30 00 00 00 00 41 76 e8 17 90 00 00 00 00 41 76 f4 57 c0 00 00 00 00 41 76 fb 87 20 00 00 00 00 41 77 01 7f 10 00 00 00 00"));
-// boost::shared_ptr<cygnal::Buffer> hex5 = hex2mem("00 0a 6f 6e 4d 65 74 61 44 61 74 61 08 00 00 00 0a 00 08 64 75 72 61 74 69 6f 6e 00 40 6e 47 74 bc 6a 7e fa 00 0d 76 69 64 65 6f 64 61 74 61 72 61 74 65 00 40 67 28 32 e3 7f 02 e6 00 15 6c 61 73 74 6b 65 79 66 72 61 6d 65 74 69 6d 65 73 74 61 6d 70 00 40 6e 03 2b 02 0c 49 ba 00 14 6c 61 73 74 6b 65 79 66 72 61 6d 65 6c 6f 63 61 74 69 6f 6e 00 41 55 41 92 80 00 00 00 00 07 63 72 65 61 74 6f 72 02 00 0d 59 6f 75 54 75 62 65 2c 20 49 6e 63 2e 00 0f 6d 65 74 61 64 61 74 61 63 72 65 61 74 6f 72 02 00 1a 59 6f 75 54 75 62 65 20 4d 65 74 61 64 61 74 61 20 49 6e 6a 65 63 74 6f 72 2e 00 09 66 6c 76 73 6f 75 72 63 65 02 00 04 63 64 62 70 00 0c 68 61 73 6b 65 79 66 72 61 6d 65 73 01 01 00 0b 68 61 73 6d 65 74 61 64 61 74 61 01 01 00 09 6b 65 79 66 72 61 6d 65 73 03 00 05 74 69 6d 65 73 0a 00 00 00 7a 00 00 00 00 00 00 00 00 00 00 40 00 16 87 2b 02 0c 4a 00 40 0c be 76 c8 b4 39 58 00 40 14 92 6e 97 8d 4f df 00 40 1b 8f 5c 28 f5 c2 8f 00 40 20 49 37 4b c6 a7 f0 00 40 23 d8 93 74 bc 6a 7f 00 40 27 57 0a 3d 70 a3 d7 00 40 2a a3 53 f7 ce d9 17 00 40 2d de 35 3f 7c ed 91 00 40 30 9d 70 a3 d7 0a 3d 00 40 32 b1 26 e9 78 d4 fe 00 40 34 13 b6 45 a1 ca c1 00 40 36 05 a1 ca c0 83 12 00 40 37 ab 85 1e b8 51 ec 00 40 39 05 a1 ca c0 83 12 00 40 3a cd 4f df 3b 64 5a 00 40 3c 5a 1c ac 08 31 27 00 40 3e 21 ca c0 83 12 6f 00 40 3f c7 ae 14 7a e1 48 00 40 40 9d 91 68 72 b0 21 00 40 41 8e 14 7a e1 47 ae 00 40 42 82 d0 e5 60 41 89 00 40 43 62 6e 97 8d 4f df 00 40 44 4e b8 51 eb 85 1f 00 40 44 ef 1a 9f be 76 c9 00 40 45 ec 49 ba 5e 35 3f 00 40 46 ed b2 2d 0e 56 04 00 40 47 a7 6c 8b 43 95 81 00 40 48 8f 7c ed 91 68 73 00 40 49 80 00 00 00 00 00 00 40 4a 78 f5 c2 8f 5c 29 00 40 4b 61 06 24 dd 2f 1b 00 40 4c 99 58 10 62 4d d3 00 40 4d 5f 9d b2 2d 0e 56 00 40 4e 54 5a 1c ac 08 31 00 40 4f 44 dd 2f 1a 9f be 00 40 50 1e f9 db 22 d0 e5 00 40 50 8a 8f 5c 28 f5 c3 00 40 50 f1 eb 85 1e b8 52 00 40 51 7d 2f 1a 9f be 77 00 40 51 e0 51 eb 85 1e b8 00 40 52 84 ed 91 68 72 b0 00 40 53 01 68 72 b0 20 c5 00 40 53 82 1c ac 08 31 27 00 40 53 fa 5e 35 3f 7c ee 00 40 54 70 83 12 6e 97 8d 00 40 54 d3 b6 45 a1 ca c1 00 40 55 3d 2f 1a 9f be 77 00 40 55 ce c8 b4 39 58 10 00 40 56 3e 97 8d 4f df 3b 00 40 56 bb 12 6e 97 8d 50 00 40 57 2f 1a 9f be 76 c9 00 40 57 af ce d9 16 87 2b 00 40 58 28 10 62 4d d2 f2 00 40 58 af 1a 9f be 76 c9 00 40 59 1a c0 83 12 6e 98 00 40 59 95 1e b8 51 eb 85 00 40 5a 07 0a 3d 70 a3 d7 00 40 5a 96 87 2b 02 0c 4a 00 40 5b 21 ba 5e 35 3f 7d 00 40 5b 93 b6 45 a1 ca c1 00 40 5b ff 4b c6 a7 ef 9e 00 40 5c 88 72 b0 20 c4 9c 00 40 5c fa 5e 35 3f 7c ee 00 40 5d 76 d9 16 87 2b 02 00 40 5d e4 8b 43 95 81 06 00 40 5e 6b 95 81 06 24 dd 00 40 5e f8 f5 c2 8f 5c 29 00 40 5f 8e c8 b4 39 58 10 00 40 60 0a e9 78 d4 fd f4 00 40 60 47 0a 3d 70 a3 d7 00 40 60 89 81 06 24 dd 2f 00 40 60 c8 cc cc cc cc cd 00 40 61 00 b4 39 58 10 62 00 40 61 49 81 06 24 dd 2f 00 40 61 91 37 4b c6 a7 f0 00 40 61 e3 85 1e b8 51 ec 00 40 62 43 85 1e b8 51 ec 00 40 62 7d 89 37 4b c6 a8 00 40 62 c9 81 06 24 dd 2f 00 40 63 12 45 a1 ca c0 83 00 40 63 5c 20 c4 9b a5 e3 00 40 63 9b 6c 8b 43 95 81 00 40 63 db c6 a7 ef 9d b2 00 40 64 16 d9 16 87 2b 02 00 40 64 55 16 87 2b 02 0c 00 40 64 8e 14 7a e1 47 ae 00 40 64 d7 e7 6c 8b 43 96 00 40 65 18 41 89 37 4b c7 00 40 65 51 37 4b c6 a7 f0 00 40 65 9e 3d 70 a3 d7 0a 00 40 65 e2 d0 e5 60 41 89 00 40 66 14 62 4d d2 f1 aa 00 40 66 60 5a 1c ac 08 31 00 40 66 a1 c2 8f 5c 28 f6 00 40 66 d9 a9 fb e7 6c 8b 00 40 67 1e 3d 70 a3 d7 0a 00 40 67 67 0a 3d 70 a3 d7 00 40 67 a9 81 06 24 dd 2f 00 40 67 f7 8d 4f df 3b 64 00 40 68 43 85 1e b8 51 ec 00 40 68 89 26 e9 78 d4 fe 00 40 68 d9 4f df 3b 64 5a 00 40 69 29 81 06 24 dd 2f 00 40 69 68 cc cc cc cc cd 00 40 69 aa 35 3f 7c ed 91 00 40 69 fc 7a e1 47 ae 14 00 40 6a 31 37 4b c6 a7 f0 00 40 6a 7c 20 c4 9b a5 e3 00 40 6a d0 83 12 6e 97 8d 00 40 6b 1e 97 8d 4f df 3b 00 40 6b 70 dd 2f 1a 9f be 00 40 6b aa e9 78 d4 fd f4 00 40 6b f6 d9 16 87 2b 02 00 40 6c 40 b4 39 58 10 62 00 40 6c 80 00 00 00 00 00 00 40 6c d2 45 a1 ca c0 83 00 40 6d 20 5a 1c ac 08 31 00 40 6d 68 18 93 74 bc 6a 00 40 6d b6 24 dd 2f 1a a0 00 40 6e 03 2b 02 0c 49 ba 00 0d 66 69 6c 65 70 6f 73 69 74 69 6f 6e 73 0a 00 00 00 7a 00 40 a3 a0 00 00 00 00 00 00 40 e6 1a 40 00 00 00 00 00 40 f4 b9 40 00 00 00 00 00 40 fe 2a 10 00 00 00 00 00 41 04 6d b8 00 00 00 00 00 41 09 13 30 00 00 00 00 00 41 0e 65 48 00 00 00 00 00 41 11 ac 10 00 00 00 00 00 41 14 60 bc 00 00 00 00 00 41 17 09 38 00 00 00 00 00 41 19 ce f4 00 00 00 00 00 41 1c 7a 90 00 00 00 00 00 41 1e e9 4c 00 00 00 00 00 41 21 0d 16 00 00 00 00 00 41 22 84 dc 00 00 00 00 00 41 23 bb be 00 00 00 00 00 41 25 2d b6 00 00 00 00 00 41 26 76 5e 00 00 00 00 00 41 27 d8 50 00 00 00 00 00 41 29 44 e6 00 00 00 00 00 41 2a 90 6e 00 00 00 00 00 41 2b e5 2c 00 00 00 00 00 41 2d 27 36 00 00 00 00 00 41 2e 65 fe 00 00 00 00 00 41 2f c3 02 00 00 00 00 00 41 30 73 07 00 00 00 00 00 41 31 26 69 00 00 00 00 00 41 31 d5 84 00 00 00 00 00 41 32 67 fc 00 00 00 00 00 41 33 0f c8 00 00 00 00 00 41 33 c3 ec 00 00 00 00 00 41 34 75 9c 00 00 00 00 00 41 35 29 c6 00 00 00 00 00 41 35 f8 37 00 00 00 00 00 41 36 99 17 00 00 00 00 00 41 37 4d 7f 00 00 00 00 00 41 37 fb e3 00 00 00 00 00 41 38 a0 fc 00 00 00 00 00 41 39 46 90 00 00 00 00 00 41 39 e7 17 00 00 00 00 00 41 3a 9c dc 00 00 00 00 00 41 3b 40 c0 00 00 00 00 00 41 3c 0e ff 00 00 00 00 00 41 3c bb e0 00 00 00 00 00 41 3d 77 91 00 00 00 00 00 41 3e 26 48 00 00 00 00 00 41 3e d2 57 00 00 00 00 00 41 3f 79 f2 00 00 00 00 00 41 40 13 eb 80 00 00 00 00 41 40 6e 58 00 00 00 00 00 41 40 c1 2d 80 00 00 00 00 41 41 17 c0 80 00 00 00 00 41 41 6b 52 80 00 00 00 00 41 41 c5 2e 00 00 00 00 00 41 42 17 da 80 00 00 00 00 41 42 76 36 00 00 00 00 00 41 42 c7 be 00 00 00 00 00 41 43 25 e5 80 00 00 00 00 41 43 7a b1 00 00 00 00 00 41 43 d4 07 80 00 00 00 00 41 44 2c e0 00 00 00 00 00 41 44 7d fe 00 00 00 00 00 41 44 d0 61 80 00 00 00 00 41 45 27 55 00 00 00 00 00 41 45 7c c3 80 00 00 00 00 41 45 d4 0a 00 00 00 00 00 41 46 24 09 80 00 00 00 00 41 46 7a 64 80 00 00 00 00 41 46 d8 6d 00 00 00 00 00 41 47 39 0a 80 00 00 00 00 41 47 94 d5 00 00 00 00 00 41 47 e8 6d 00 00 00 00 00 41 48 3f f1 80 00 00 00 00 41 48 a0 5e 80 00 00 00 00 41 48 f4 7d 00 00 00 00 00 41 49 52 36 00 00 00 00 00 41 49 b4 80 00 00 00 00 00 41 4a 1b 96 80 00 00 00 00 41 4a 86 8c 00 00 00 00 00 41 4a d6 96 00 00 00 00 00 41 4b 34 06 80 00 00 00 00 41 4b 8d 4b 80 00 00 00 00 41 4b ee 20 00 00 00 00 00 41 4c 45 14 80 00 00 00 00 41 4c 9e 5b 00 00 00 00 00 41 4c fc a7 00 00 00 00 00 41 4d 56 b1 80 00 00 00 00 41 4d ac f2 00 00 00 00 00 41 4e 12 de 80 00 00 00 00 41 4e 6b 88 80 00 00 00 00 41 4e bf 7b 00 00 00 00 00 41 4f 21 e4 00 00 00 00 00 41 4f 82 04 80 00 00 00 00 41 4f d4 10 80 00 00 00 00 41 50 1a 94 80 00 00 00 00 41 50 48 ce 40 00 00 00 00 41 50 70 de 80 00 00 00 00 41 50 9f 3a 40 00 00 00 00 41 50 cf 1d 80 00 00 00 00 41 50 fc a0 80 00 00 00 00 41 51 2b a4 80 00 00 00 00 41 51 58 7d 80 00 00 00 00 41 51 86 45 40 00 00 00 00 41 51 b6 0f 80 00 00 00 00 41 51 e6 71 40 00 00 00 00 41 52 10 8d 00 00 00 00 00 41 52 3c e0 40 00 00 00 00 41 52 6d 33 c0 00 00 00 00 41 52 96 68 40 00 00 00 00 41 52 c5 8a 40 00 00 00 00 41 52 f6 6a c0 00 00 00 00 41 53 25 4e 40 00 00 00 00 41 53 58 7d 80 00 00 00 00 41 53 85 b4 00 00 00 00 00 41 53 ba 0c 40 00 00 00 00 41 53 f4 6f c0 00 00 00 00 41 54 2d 9d c0 00 00 00 00 41 54 70 96 80 00 00 00 00 41 54 a7 13 80 00 00 00 00 41 54 d8 8f 00 00 00 00 00 41 55 0f ae 80 00 00 00 00 41 55 41 92 80 00 00 00 00");
+ std::shared_ptr<cygnal::Buffer> hex5(new Buffer("00 0a 6f 6e 4d 65 74 61 44 61 74 61 08 00 00 00 0a 00 08 64 75 72 61 74 69 6f 6e 00 40 82 5c fd f3 b6 45 a2 00 0d 76 69 64 65 6f 64 61 74 61 72 61 74 65 00 40 74 8a 51 f7 27 8d c5 00 15 6c 61 73 74 6b 65 79 66 72 61 6d 65 74 69 6d 65 73 74 61 6d 70 00 40 82 53 5a 1c ac 08 31 00 14 6c 61 73 74 6b 65 79 66 72 61 6d 65 6c 6f 63 61 74 69 6f 6e 00 41 77 01 7f 10 00 00 00 00 07 63 72 65 61 74 6f 72 02 00 0d 59 6f 75 54 75 62 65 2c 20 49 6e 63 2e 00 0f 6d 65 74 61 64 61 74 61 63 72 65 61 74 6f 72 02 00 1a 59 6f 75 54 75 62 65 20 4d 65 74 61 64 61 74 61 20 49 6e 6a 65 63 74 6f 72 2e 00 09 66 6c 76 73 6f 75 72 63 65 02 00 04 63 64 62 70 00 0c 68 61 73 6b 65 79 66 72 61 6d 65 73 01 01 00 0b 68 61 73 6d 65 74 61 64 61 74 61 01 01 00 09 6b 65 79 66 72 61 6d 65 73 03 00 05 74 69 6d 65 73 0a 00 00 01 33 00 00 00 00 00 00 00 00 00 00 3f ff 5c 28 f5 c2 8f 5c 00 40 0f 5e 35 3f 7c ed 91 00 40 17 86 24 dd 2f 1a a0 00 40 1f 5d 2f 1a 9f be 77 00 40 23 9a 1c ac 08 31 27 00 40 26 1b 22 d0 e5 60 42 00 40 26 30 20 c4 9b a5 e3 00 40 2a 1c 28 f5 c2 8f 5c 00 40 2e 07 ae 14 7a e1 48 00 40 30 f9 99 99 99 99 9a 00 40 32 ef 9d b2 2d 0e 56 00 40 34 e5 60 41 89 37 4c 00 40 36 db 22 d0 e5 60 42 00 40 38 d0 e5 60 41 89 37 00 40 3a c6 e9 78 d4 fd f4 00 40 3c bc ac 08 31 26 e9 00 40 3e b2 6e 97 8d 4f df 00 40 40 54 39 58 10 62 4e 00 40 41 4f 1a 9f be 76 c9 00 40 42 49 fb e7 6c 8b 44 00 40 43 44 dd 2f 1a 9f be 00 40 44 3f df 3b 64 5a 1d 00 40 45 3a c0 83 12 6e 98 00 40 46 35 a1 ca c0 83 12 00 40 47 30 a3 d7 0a 3d 71 00 40 48 2b 85 1e b8 51 ec 00 40 49 26 66 66 66 66 66 00 40 4a 21 68 72 b0 20 c5 00 40 4b 1c 49 ba 5e 35 3f 00 40 4c 17 2b 02 0c 49 ba 00 40 4d 12 0c 49 ba 5e 35 00 40 4e 0d 0e 56 04 18 93 00 40 4f 07 ef 9d b2 2d 0e 00 40 50 01 68 72 b0 20 c5 00 40 50 7e e9 78 d4 fd f4 00 40 50 fc 5a 1c ac 08 31 00 40 51 79 ca c0 83 12 6f 00 40 51 f7 3b 64 5a 1c ac 00 40 52 74 bc 6a 7e f9 db 00 40 52 f2 2d 0e 56 04 19 00 40 53 6f 9d b2 2d 0e 56 00 40 53 ed 1e b8 51 eb 85 00 40 54 6a 8f 5c 28 f5 c3 00 40 54 ea b0 20 c4 9b a6 00 40 55 68 20 c4 9b a5 e3 00 40 55 e5 a1 ca c0 83 12 00 40 56 63 12 6e 97 8d 50 00 40 56 e0 83 12 6e 97 8d 00 40 57 5d f3 b6 45 a1 cb 00 40 57 db 74 bc 6a 7e fa 00 40 58 58 e5 60 41 89 37 00 40 58 d6 56 04 18 93 75 00 40 59 53 d7 0a 3d 70 a4 00 40 59 d1 47 ae 14 7a e1 00 40 5a 4e b8 51 eb 85 1f 00 40 5a cc 28 f5 c2 8f 5c 00 40 5b 49 a9 fb e7 6c 8b 00 40 5b c7 1a 9f be 76 c9 00 40 5c 44 8b 43 95 81 06 00 40 5c c2 0c 49 ba 5e 35 00 40 5d 3f 7c ed 91 68 73 00 40 5d bc ed 91 68 72 b0 00 40 5e 3a 5e 35 3f 7c ee 00 40 5e b7 df 3b 64 5a 1d 00 40 5f 35 4f df 3b 64 5a 00 40 5f b2 c0 83 12 6e 98 00 40 60 18 20 c4 9b a5 e3 00 40 60 56 d9 16 87 2b 02 00 40 60 95 91 68 72 b0 21 00 40 60 d4 51 eb 85 1e b8 00 40 61 13 0a 3d 70 a3 d7 00 40 61 51 c2 8f 5c 28 f6 00 40 61 90 7a e1 47 ae 14 00 40 61 cf 3b 64 5a 1c ac 00 40 62 0d f3 b6 45 a1 cb 00 40 62 4c ac 08 31 26 e9 00 40 62 8b 6c 8b 43 95 81 00 40 62 ca 24 dd 2f 1a a0 00 40 63 08 dd 2f 1a 9f be 00 40 63 47 95 81 06 24 dd 00 40 63 86 56 04 18 93 75 00 40 63 c5 0e 56 04 18 93 00 40 64 03 c6 a7 ef 9d b2 00 40 64 42 87 2b 02 0c 4a 00 40 64 81 3f 7c ed 91 68 00 40 64 bf f7 ce d9 16 87 00 40 64 fe b0 20 c4 9b a6 00 40 65 3d 70 a3 d7 0a 3d 00 40 65 7c 28 f5 c2 8f 5c 00 40 65 ba e1 47 ae 14 7b 00 40 65 f9 a1 ca c0 83 12 00 40 66 38 5a 1c ac 08 31 00 40 66 77 12 6e 97 8d 50 00 40 66 b5 ca c0 83 12 6f 00 40 66 f4 8b 43 95 81 06 00 40 67 33 43 95 81 06 25 00 40 67 71 fb e7 6c 8b 44 00 40 67 b0 bc 6a 7e f9 db 00 40 67 ef 74 bc 6a 7e fa 00 40 68 2e 2d 0e 56 04 19 00 40 68 6c ed 91 68 72 b0 00 40 68 ab a5 e3 53 f7 cf 00 40 68 ea 5e 35 3f 7c ee 00 40 69 29 16 87 2b 02 0c 00 40 69 67 d7 0a 3d 70 a4 00 40 69 a6 8f 5c 28 f5 c3 00 40 69 e5 47 ae 14 7a e1 00 40 6a 24 08 31 26 e9 79 00 40 6a 62 c0 83 12 6e 98 00 40 6a a1 78 d4 fd f3 b6 00 40 6a e0 31 26 e9 78 d5 00 40 6b 15 99 99 99 99 9a 00 40 6b 24 49 ba 5e 35 3f 00 40 6b 63 02 0c 49 ba 5e 00 40 6b a1 ba 5e 35 3f 7d 00 40 6b e0 72 b0 20 c4 9c 00 40 6c 1f 33 33 33 33 33 00 40 6c 5d eb 85 1e b8 52 00 40 6c 9c a3 d7 0a 3d 71 00 40 6c db 64 5a 1c ac 08 00 40 6d 12 1c ac 08 31 27 00 40 6d 50 d4 fd f3 b6 46 00 40 6d 8f 8d 4f df 3b 64 00 40 6d ce 4d d2 f1 a9 fc 00 40 6e 0b ae 14 7a e1 48 00 40 6e 4a 66 66 66 66 66 00 40 6e 89 26 e9 78 d4 fe 00 40 6e c7 df 3b 64 5a 1d 00 40 6f 06 97 8d 4f df 3b 00 40 6f 39 4f df 3b 64 5a 00 40 6f 78 08 31 26 e9 79 00 40 6f b6 c8 b4 39 58 10 00 40 6f bc 20 c4 9b a5 e3 00 40 6f bd 70 a3 d7 0a 3d 00 40 6f fc 31 26 e9 78 d5 00 40 70 1d 74 bc 6a 7e fa 00 40 70 3c d0 e5 60 41 89 00 40 70 5c 31 26 e9 78 d5 00 40 70 7b 8d 4f df 3b 64 00 40 70 96 e9 78 d4 fd f4 00 40 70 98 3d 70 a3 d7 0a 00 40 70 b6 45 a1 ca c0 83 00 40 70 d5 a1 ca c0 83 12 00 40 70 f5 02 0c 49 ba 5e 00 40 71 14 5e 35 3f 7c ee 00 40 71 33 ba 5e 35 3f 7d 00 40 71 53 1a 9f be 76 c9 00 40 71 72 76 c8 b4 39 58 00 40 71 91 d2 f1 a9 fb e7 00 40 71 b1 2f 1a 9f be 77 00 40 71 d0 8f 5c 28 f5 c3 00 40 71 ef eb 85 1e b8 52 00 40 72 0f 47 ae 14 7a e1 00 40 72 2e a7 ef 9d b2 2d 00 40 72 4e 04 18 93 74 bc 00 40 72 6d 60 41 89 37 4c 00 40 72 8c bc 6a 7e f9 db 00 40 72 ac 1c ac 08 31 27 00 40 72 cb 78 d4 fd f3 b6 00 40 72 ea d4 fd f3 b6 46 00 40 73 0a 35 3f 7c ed 91 00 40 73 29 91 68 72 b0 21 00 40 73 48 ed 91 68 72 b0 00 40 73 68 4d d2 f1 a9 fc 00 40 73 87 a9 fb e7 6c 8b 00 40 73 a7 06 24 dd 2f 1b 00 40 73 c6 62 4d d2 f1 aa 00 40 73 e5 c2 8f 5c 28 f6 00 40 74 05 1e b8 51 eb 85 00 40 74 24 7a e1 47 ae 14 00 40 74 43 db 22 d0 e5 60 00 40 74 63 37 4b c6 a7 f0 00 40 74 82 93 74 bc 6a 7f 00 40 74 a1 ef 9d b2 2d 0e 00 40 74 c1 4f df 3b 64 5a 00 40 74 e0 ac 08 31 26 e9 00 40 75 00 08 31 26 e9 79 00 40 75 1f 68 72 b0 20 c5 00 40 75 3e c4 9b a5 e3 54 00 40 75 5e 20 c4 9b a5 e3 00 40 75 7d 81 06 24 dd 2f 00 40 75 9c dd 2f 1a 9f be 00 40 75 bc 39 58 10 62 4e 00 40 75 db 95 81 06 24 dd 00 40 75 fa f5 c2 8f 5c 29 00 40 76 1a 51 eb 85 1e b8 00 40 76 39 ae 14 7a e1 48 00 40 76 59 0e 56 04 18 93 00 40 76 78 6a 7e f9 db 23 00 40 76 97 c6 a7 ef 9d b2 00 40 76 b7 22 d0 e5 60 42 00 40 76 d6 83 12 6e 97 8d 00 40 76 f5 df 3b 64 5a 1d 00 40 77 15 3b 64 5a 1c ac 00 40 77 34 9b a5 e3 53 f8 00 40 77 53 f7 ce d9 16 87 00 40 77 73 53 f7 ce d9 17 00 40 77 92 b0 20 c4 9b a6 00 40 77 b2 10 62 4d d2 f2 00 40 77 d1 6c 8b 43 95 81 00 40 77 f0 c8 b4 39 58 10 00 40 78 10 28 f5 c2 8f 5c 00 40 78 2f 85 1e b8 51 ec 00 40 78 4e e1 47 ae 14 7b 00 40 78 6e 3d 70 a3 d7 0a 00 40 78 8d 9d b2 2d 0e 56 00 40 78 ac f9 db 22 d0 e5 00 40 78 cc 56 04 18 93 75 00 40 78 eb b6 45 a1 ca c1 00 40 79 0b 12 6e 97 8d 50 00 40 79 2a 6e 97 8d 4f df 00 40 79 49 ce d9 16 87 2b 00 40 79 69 2b 02 0c 49 ba 00 40 79 88 87 2b 02 0c 4a 00 40 79 a7 e3 53 f7 ce d9 00 40 79 c7 43 95 81 06 25 00 40 79 e6 9f be 76 c8 b4 00 40 7a 05 fb e7 6c 8b 44 00 40 7a 25 5c 28 f5 c2 8f 00 40 7a 44 b8 51 eb 85 1f 00 40 7a 64 14 7a e1 47 ae 00 40 7a 83 70 a3 d7 0a 3d 00 40 7a a2 d0 e5 60 41 89 00 40 7a c2 2d 0e 56 04 19 00 40 7a e1 89 37 4b c6 a8 00 40 7b 00 e9 78 d4 fd f4 00 40 7b 20 45 a1 ca c0 83 00 40 7b 3f a1 ca c0 83 12 00 40 7b 5f 02 0c 49 ba 5e 00 40 7b 7e 5e 35 3f 7c ee 00 40 7b 9d ba 5e 35 3f 7d 00 40 7b bd 16 87 2b 02 0c 00 40 7b dc 76 c8 b4 39 58 00 40 7b fb d2 f1 a9 fb e7 00 40 7c 1b 2f 1a 9f be 77 00 40 7c 3a 8f 5c 28 f5 c3 00 40 7c 59 eb 85 1e b8 52 00 40 7c 79 47 ae 14 7a e1 00 40 7c 98 a3 d7 0a 3d 71 00 40 7c b8 04 18 93 74 bc 00 40 7c d7 60 41 89 37 4c 00 40 7c f6 bc 6a 7e f9 db 00 40 7d 16 1c ac 08 31 27 00 40 7d 35 78 d4 fd f3 b6 00 40 7d 54 d4 fd f3 b6 46 00 40 7d 74 31 26 e9 78 d5 00 40 7d 93 91 68 72 b0 21 00 40 7d b2 ed 91 68 72 b0 00 40 7d d2 49 ba 5e 35 3f 00 40 7d f1 a9 fb e7 6c 8b 00 40 7e 11 06 24 dd 2f 1b 00 40 7e 30 62 4d d2 f1 aa 00 40 7e 4f c2 8f 5c 28 f6 00 40 7e 55 16 87 2b 02 0c 00 40 7e 74 72 b0 20 c4 9c 00 40 7e 93 d2 f1 a9 fb e7 00 40 7e b3 2f 1a 9f be 77 00 40 7e d2 8b 43 95 81 06 00 40 7e f1 eb 85 1e b8 52 00 40 7f 11 47 ae 14 7a e1 00 40 7f 30 a3 d7 0a 3d 71 00 40 7f 50 00 00 00 00 00 00 40 7f 6f 60 41 89 37 4c 00 40 7f 8e bc 6a 7e f9 db 00 40 7f ae 18 93 74 bc 6a 00 40 7f cd 78 d4 fd f3 b6 00 40 7f ec d4 fd f3 b6 46 00 40 80 06 18 93 74 bc 6a 00 40 80 15 c8 b4 39 58 10 00 40 80 25 76 c8 b4 39 58 00 40 80 35 24 dd 2f 1a a0 00 40 80 44 d2 f1 a9 fb e7 00 40 80 54 83 12 6e 97 8d 00 40 80 64 31 26 e9 78 d5 00 40 80 73 df 3b 64 5a 1d 00 40 80 83 8f 5c 28 f5 c3 00 40 80 93 3d 70 a3 d7 0a 00 40 80 a2 eb 85 1e b8 52 00 40 80 b2 99 99 99 99 9a 00 40 80 c2 49 ba 5e 35 3f 00 40 80 d1 f7 ce d9 16 87 00 40 80 e1 a5 e3 53 f7 cf 00 40 80 f1 56 04 18 93 75 00 40 81 01 04 18 93 74 bc 00 40 81 10 b2 2d 0e 56 04 00 40 81 20 62 4d d2 f1 aa 00 40 81 30 10 62 4d d2 f2 00 40 81 3f be 76 c8 b4 39 00 40 81 4f 6c 8b 43 95 81 00 40 81 5f 1c ac 08 31 27 00 40 81 6e ca c0 83 12 6f 00 40 81 7e 78 d4 fd f3 b6 00 40 81 8e 28 f5 c2 8f 5c 00 40 81 9d d7 0a 3d 70 a4 00 40 81 ad 85 1e b8 51 ec 00 40 81 bd 33 33 33 33 33 00 40 81 cc e3 53 f7 ce d9 00 40 81 dc 91 68 72 b0 21 00 40 81 ec 3f 7c ed 91 68 00 40 81 fb ef 9d b2 2d 0e 00 40 82 0b 9d b2 2d 0e 56 00 40 82 1b 4b c6 a7 ef 9e 00 40 82 2a f9 db 22 d0 e5 00 40 82 33 fd f3 b6 45 a2 00 40 82 43 ac 08 31 26 e9 00 40 82 53 5a 1c ac 08 31 00 0d 66 69 6c 65 70 6f 73 69 74 69 6f 6e 73 0a 00 00 01 33 00 40 b6 d2 00 00 00 00 00 00 40 db 4f 80 00 00 00 00 00 40 f0 67 e0 00 00 00 00 00 40 f8 41 50 00 00 00 00 00 41 00 30 98 00 00 00 00 00 41 04 fd 28 00 00 00 00 00 41 07 a2 10 00 00 00 00 00 41 07 e6 68 00 00 00 00 00 41 11 da 7c 00 00 00 00 00 41 16 a7 dc 00 00 00 00 00 41 1b 35 6c 00 00 00 00 00 41 1f d4 bc 00 00 00 00 00 41 22 4b 5e 00 00 00 00 00 41 24 ab 78 00 00 00 00 00 41 27 20 e8 00 00 00 00 00 41 29 a7 04 00 00 00 00 00 41 2c 14 f6 00 00 00 00 00 41 2e 82 f8 00 00 00 00 00 41 30 a9 29 00 00 00 00 00 41 32 1f e6 00 00 00 00 00 41 33 69 a0 00 00 00 00 00 41 34 cb df 00 00 00 00 00 41 36 33 96 00 00 00 00 00 41 37 94 db 00 00 00 00 00 41 38 e2 54 00 00 00 00 00 41 3a 4d 10 00 00 00 00 00 41 3b a4 1e 00 00 00 00 00 41 3d 31 ba 00 00 00 00 00 41 3e b3 75 00 00 00 00 00 41 40 09 72 80 00 00 00 00 41 40 a7 34 00 00 00 00 00 41 41 1f bf 80 00 00 00 00 41 41 a1 79 80 00 00 00 00 41 42 27 3c 80 00 00 00 00 41 42 b0 11 00 00 00 00 00 41 43 3c 27 80 00 00 00 00 41 43 c6 d7 80 00 00 00 00 41 44 4e 36 80 00 00 00 00 41 44 d9 50 80 00 00 00 00 41 45 60 9f 00 00 00 00 00 41 45 c5 39 80 00 00 00 00 41 46 00 9d 00 00 00 00 00 41 46 32 5e 00 00 00 00 00 41 46 64 c6 00 00 00 00 00 41 46 c3 cc 00 00 00 00 00 41 47 5a 90 80 00 00 00 00 41 48 00 08 80 00 00 00 00 41 48 cd 6d 80 00 00 00 00 41 49 98 39 80 00 00 00 00 41 4a 5b 8b 80 00 00 00 00 41 4b 2c db 00 00 00 00 00 41 4c 0f 67 00 00 00 00 00 41 4c ed c9 80 00 00 00 00 41 4d c9 d3 80 00 00 00 00 41 4e a7 83 80 00 00 00 00 41 4f 82 e1 00 00 00 00 00 41 50 2a 2b 00 00 00 00 00 41 50 89 39 c0 00 00 00 00 41 50 df 38 40 00 00 00 00 41 51 37 93 40 00 00 00 00 41 51 9c 32 80 00 00 00 00 41 52 0b 0b c0 00 00 00 00 41 52 68 52 80 00 00 00 00 41 52 bb 21 80 00 00 00 00 41 53 08 7d c0 00 00 00 00 41 53 5a 6b c0 00 00 00 00 41 53 ab e1 00 00 00 00 00 41 53 fc d3 c0 00 00 00 00 41 54 4b b2 40 00 00 00 00 41 54 97 2d 40 00 00 00 00 41 54 dd d1 40 00 00 00 00 41 55 28 c8 40 00 00 00 00 41 55 74 d6 c0 00 00 00 00 41 55 c6 28 40 00 00 00 00 41 56 11 3a 40 00 00 00 00 41 56 5b a7 40 00 00 00 00 41 56 c2 97 80 00 00 00 00 41 57 18 d0 00 00 00 00 00 41 57 6f 38 00 00 00 00 00 41 57 c1 05 80 00 00 00 00 41 58 0e f9 40 00 00 00 00 41 58 61 d9 40 00 00 00 00 41 58 be 21 c0 00 00 00 00 41 59 1b a3 00 00 00 00 00 41 59 7d b7 80 00 00 00 00 41 59 de c4 80 00 00 00 00 41 5a 38 6f c0 00 00 00 00 41 5a 97 be 40 00 00 00 00 41 5b 06 5f 00 00 00 00 00 41 5b 7b 62 80 00 00 00 00 41 5b e8 4c c0 00 00 00 00 41 5c 59 4c 40 00 00 00 00 41 5c c6 99 00 00 00 00 00 41 5d 37 eb 00 00 00 00 00 41 5d a1 4a 00 00 00 00 00 41 5e 05 00 00 00 00 00 00 41 5e 69 d8 00 00 00 00 00 41 5e d1 e9 80 00 00 00 00 41 5f 35 61 80 00 00 00 00 41 5f 99 a3 80 00 00 00 00 41 5f f8 ea 40 00 00 00 00 41 60 2a b8 c0 00 00 00 00 41 60 5c 12 40 00 00 00 00 41 60 90 a9 60 00 00 00 00 41 60 c6 b7 c0 00 00 00 00 41 60 fe 01 00 00 00 00 00 41 61 31 40 00 00 00 00 00 41 61 5e 86 00 00 00 00 00 41 61 8a fc a0 00 00 00 00 41 61 b9 43 00 00 00 00 00 41 61 e7 16 80 00 00 00 00 41 62 17 b3 80 00 00 00 00 41 62 40 7d 40 00 00 00 00 41 62 44 d4 60 00 00 00 00 41 62 72 5d 00 00 00 00 00 41 62 a4 b7 00 00 00 00 00 41 62 e2 3d a0 00 00 00 00 41 63 1c b5 a0 00 00 00 00 41 63 59 85 c0 00 00 00 00 41 63 91 80 00 00 00 00 00 41 63 c4 75 c0 00 00 00 00 41 63 f6 d6 20 00 00 00 00 41 64 1a 9d 80 00 00 00 00 41 64 42 0c e0 00 00 00 00 41 64 66 c9 a0 00 00 00 00 41 64 86 97 80 00 00 00 00 41 64 a7 b3 e0 00 00 00 00 41 64 ca 51 a0 00 00 00 00 41 64 ed 31 60 00 00 00 00 41 65 18 18 60 00 00 00 00 41 65 42 43 00 00 00 00 00 41 65 70 d6 00 00 00 00 00 41 65 a0 a8 00 00 00 00 00 41 65 a5 0d 40 00 00 00 00 41 65 a6 30 a0 00 00 00 00 41 65 c8 96 40 00 00 00 00 41 65 e5 8e 80 00 00 00 00 41 66 05 ed 20 00 00 00 00 41 66 24 bc 40 00 00 00 00 41 66 3f a7 00 00 00 00 00 41 66 5d 8e c0 00 00 00 00 41 66 5f 95 40 00 00 00 00 41 66 85 5a c0 00 00 00 00 41 66 ac 52 20 00 00 00 00 41 66 d3 8b e0 00 00 00 00 41 66 fa e4 00 00 00 00 00 41 67 24 d0 c0 00 00 00 00 41 67 4e d9 c0 00 00 00 00 41 67 7a 55 a0 00 00 00 00 41 67 a3 1d e0 00 00 00 00 41 67 cb f9 40 00 00 00 00 41 67 f7 24 e0 00 00 00 00 41 68 23 ce a0 00 00 00 00 41 68 3c fb 00 00 00 00 00 41 68 5d f1 00 00 00 00 00 41 68 7d 50 40 00 00 00 00 41 68 9a 37 40 00 00 00 00 41 68 b6 4b a0 00 00 00 00 41 68 d6 08 c0 00 00 00 00 41 68 f7 fd e0 00 00 00 00 41 69 1a 44 c0 00 00 00 00 41 69 3a 2a 80 00 00 00 00 41 69 5c 07 20 00 00 00 00 41 69 7e ec 20 00 00 00 00 41 69 9e 44 20 00 00 00 00 41 69 b8 f3 c0 00 00 00 00 41 69 d5 ec 40 00 00 00 00 41 69 f3 d9 00 00 00 00 00 41 6a 10 74 e0 00 00 00 00 41 6a 2d 33 00 00 00 00 00 41 6a 4b 9e a0 00 00 00 00 41 6a 72 eb 00 00 00 00 00 41 6a 9b fd 40 00 00 00 00 41 6a cd 8e e0 00 00 00 00 41 6b 01 aa 60 00 00 00 00 41 6b 33 d5 a0 00 00 00 00 41 6b 64 ca a0 00 00 00 00 41 6b 8f 90 00 00 00 00 00 41 6b bf f1 00 00 00 00 00 41 6b f0 4f 20 00 00 00 00 41 6c 1d 1f c0 00 00 00 00 41 6c 47 b7 00 00 00 00 00 41 6c 72 ee e0 00 00 00 00 41 6c 9a dc 60 00 00 00 00 41 6c c0 04 a0 00 00 00 00 41 6c e1 5a a0 00 00 00 00 41 6d 03 4f e0 00 00 00 00 41 6d 28 24 60 00 00 00 00 41 6d 4c da e0 00 00 00 00 41 6d 71 93 80 00 00 00 00 41 6d 99 50 00 00 00 00 00 41 6d c0 4f e0 00 00 00 00 41 6d e5 c9 40 00 00 00 00 41 6e 08 fe c0 00 00 00 00 41 6e 2d 90 c0 00 00 00 00 41 6e 48 6a 40 00 00 00 00 41 6e 7b 65 40 00 00 00 00 41 6e ab 11 c0 00 00 00 00 41 6e e1 0e 00 00 00 00 00 41 6f 18 8b 00 00 00 00 00 41 6f 4c 1d 60 00 00 00 00 41 6f 7c 8f 00 00 00 00 00 41 6f ad 1e 20 00 00 00 00 41 6f dd 1e 60 00 00 00 00 41 70 06 b0 60 00 00 00 00 41 70 1d 3c 70 00 00 00 00 41 70 33 e5 60 00 00 00 00 41 70 49 a9 00 00 00 00 00 41 70 5d 8d f0 00 00 00 00 41 70 71 9c 80 00 00 00 00 41 70 84 c4 c0 00 00 00 00 41 70 99 79 30 00 00 00 00 41 70 ac ec 30 00 00 00 00 41 70 c0 bd f0 00 00 00 00 41 70 d5 bb 00 00 00 00 00 41 70 ea c4 a0 00 00 00 00 41 70 ff 77 10 00 00 00 00 41 71 13 be 30 00 00 00 00 41 71 28 10 40 00 00 00 00 41 71 3c e0 10 00 00 00 00 41 71 52 e4 b0 00 00 00 00 41 71 6a 7f 70 00 00 00 00 41 71 81 b6 20 00 00 00 00 41 71 97 a1 d0 00 00 00 00 41 71 ae 53 b0 00 00 00 00 41 71 c4 2a 50 00 00 00 00 41 71 d9 b0 30 00 00 00 00 41 71 ef 51 20 00 00 00 00 41 72 05 34 90 00 00 00 00 41 72 1b 83 f0 00 00 00 00 41 72 30 d1 e0 00 00 00 00 41 72 45 bc 00 00 00 00 00 41 72 5d 36 00 00 00 00 00 41 72 73 aa 30 00 00 00 00 41 72 89 37 20 00 00 00 00 41 72 9d b9 50 00 00 00 00 41 72 b1 3c 50 00 00 00 00 41 72 c6 08 40 00 00 00 00 41 72 da dc 60 00 00 00 00 41 72 ef 73 a0 00 00 00 00 41 73 05 1b c0 00 00 00 00 41 73 1a bc 80 00 00 00 00 41 73 2f fb c0 00 00 00 00 41 73 46 ff 30 00 00 00 00 41 73 5d 18 00 00 00 00 00 41 73 75 51 60 00 00 00 00 41 73 8a df 80 00 00 00 00 41 73 a0 69 d0 00 00 00 00 41 73 b6 e4 b0 00 00 00 00 41 73 ce 66 50 00 00 00 00 41 73 e5 91 b0 00 00 00 00 41 73 fa 77 50 00 00 00 00 41 74 0f 1a f0 00 00 00 00 41 74 24 e8 10 00 00 00 00 41 74 29 e9 a0 00 00 00 00 41 74 37 50 10 00 00 00 00 41 74 40 3f b0 00 00 00 00 41 74 49 41 40 00 00 00 00 41 74 53 1b 60 00 00 00 00 41 74 5e 1c 30 00 00 00 00 41 74 68 73 80 00 00 00 00 41 74 72 4d d0 00 00 00 00 41 74 7c 61 40 00 00 00 00 41 74 87 63 20 00 00 00 00 41 74 92 10 e0 00 00 00 00 41 74 9b 9a d0 00 00 00 00 41 74 a7 96 70 00 00 00 00 41 74 b0 93 20 00 00 00 00 41 74 be 44 70 00 00 00 00 41 74 c5 96 e0 00 00 00 00 41 74 d2 f4 70 00 00 00 00 41 74 e3 19 00 00 00 00 00 41 74 f3 c5 30 00 00 00 00 41 75 04 72 d0 00 00 00 00 41 75 15 c5 00 00 00 00 00 41 75 28 b8 30 00 00 00 00 41 75 3b eb 10 00 00 00 00 41 75 4f 45 40 00 00 00 00 41 75 63 1e b0 00 00 00 00 41 75 77 6e e0 00 00 00 00 41 75 8b af 50 00 00 00 00 41 75 9e ed 40 00 00 00 00 41 75 b2 1d 80 00 00 00 00 41 75 c5 66 90 00 00 00 00 41 75 d9 14 c0 00 00 00 00 41 75 ec aa 20 00 00 00 00 41 75 ff 1d 90 00 00 00 00 41 76 10 ed 90 00 00 00 00 41 76 23 32 20 00 00 00 00 41 76 38 3d 20 00 00 00 00 41 76 50 26 60 00 00 00 00 41 76 68 93 f0 00 00 00 00 41 76 7b eb d0 00 00 00 00 41 76 83 d6 d0 00 00 00 00 41 76 8f 6a 90 00 00 00 00 41 76 97 5c 00 00 00 00 00 41 76 9f 4a 40 00 00 00 00 41 76 a7 37 00 00 00 00 00 41 76 af 9f f0 00 00 00 00 41 76 c2 85 f0 00 00 00 00 41 76 cb f1 70 00 00 00 00 41 76 d5 56 00 00 00 00 00 41 76 de b9 30 00 00 00 00 41 76 e8 17 90 00 00 00 00 41 76 f4 57 c0 00 00 00 00 41 76 fb 87 20 00 00 00 00 41 77 01 7f 10 00 00 00 00"));
+// std::shared_ptr<cygnal::Buffer> hex5 = hex2mem("00 0a 6f 6e 4d 65 74 61 44 61 74 61 08 00 00 00 0a 00 08 64 75 72 61 74 69 6f 6e 00 40 6e 47 74 bc 6a 7e fa 00 0d 76 69 64 65 6f 64 61 74 61 72 61 74 65 00 40 67 28 32 e3 7f 02 e6 00 15 6c 61 73 74 6b 65 79 66 72 61 6d 65 74 69 6d 65 73 74 61 6d 70 00 40 6e 03 2b 02 0c 49 ba 00 14 6c 61 73 74 6b 65 79 66 72 61 6d 65 6c 6f 63 61 74 69 6f 6e 00 41 55 41 92 80 00 00 00 00 07 63 72 65 61 74 6f 72 02 00 0d 59 6f 75 54 75 62 65 2c 20 49 6e 63 2e 00 0f 6d 65 74 61 64 61 74 61 63 72 65 61 74 6f 72 02 00 1a 59 6f 75 54 75 62 65 20 4d 65 74 61 64 61 74 61 20 49 6e 6a 65 63 74 6f 72 2e 00 09 66 6c 76 73 6f 75 72 63 65 02 00 04 63 64 62 70 00 0c 68 61 73 6b 65 79 66 72 61 6d 65 73 01 01 00 0b 68 61 73 6d 65 74 61 64 61 74 61 01 01 00 09 6b 65 79 66 72 61 6d 65 73 03 00 05 74 69 6d 65 73 0a 00 00 00 7a 00 00 00 00 00 00 00 00 00 00 40 00 16 87 2b 02 0c 4a 00 40 0c be 76 c8 b4 39 58 00 40 14 92 6e 97 8d 4f df 00 40 1b 8f 5c 28 f5 c2 8f 00 40 20 49 37 4b c6 a7 f0 00 40 23 d8 93 74 bc 6a 7f 00 40 27 57 0a 3d 70 a3 d7 00 40 2a a3 53 f7 ce d9 17 00 40 2d de 35 3f 7c ed 91 00 40 30 9d 70 a3 d7 0a 3d 00 40 32 b1 26 e9 78 d4 fe 00 40 34 13 b6 45 a1 ca c1 00 40 36 05 a1 ca c0 83 12 00 40 37 ab 85 1e b8 51 ec 00 40 39 05 a1 ca c0 83 12 00 40 3a cd 4f df 3b 64 5a 00 40 3c 5a 1c ac 08 31 27 00 40 3e 21 ca c0 83 12 6f 00 40 3f c7 ae 14 7a e1 48 00 40 40 9d 91 68 72 b0 21 00 40 41 8e 14 7a e1 47 ae 00 40 42 82 d0 e5 60 41 89 00 40 43 62 6e 97 8d 4f df 00 40 44 4e b8 51 eb 85 1f 00 40 44 ef 1a 9f be 76 c9 00 40 45 ec 49 ba 5e 35 3f 00 40 46 ed b2 2d 0e 56 04 00 40 47 a7 6c 8b 43 95 81 00 40 48 8f 7c ed 91 68 73 00 40 49 80 00 00 00 00 00 00 40 4a 78 f5 c2 8f 5c 29 00 40 4b 61 06 24 dd 2f 1b 00 40 4c 99 58 10 62 4d d3 00 40 4d 5f 9d b2 2d 0e 56 00 40 4e 54 5a 1c ac 08 31 00 40 4f 44 dd 2f 1a 9f be 00 40 50 1e f9 db 22 d0 e5 00 40 50 8a 8f 5c 28 f5 c3 00 40 50 f1 eb 85 1e b8 52 00 40 51 7d 2f 1a 9f be 77 00 40 51 e0 51 eb 85 1e b8 00 40 52 84 ed 91 68 72 b0 00 40 53 01 68 72 b0 20 c5 00 40 53 82 1c ac 08 31 27 00 40 53 fa 5e 35 3f 7c ee 00 40 54 70 83 12 6e 97 8d 00 40 54 d3 b6 45 a1 ca c1 00 40 55 3d 2f 1a 9f be 77 00 40 55 ce c8 b4 39 58 10 00 40 56 3e 97 8d 4f df 3b 00 40 56 bb 12 6e 97 8d 50 00 40 57 2f 1a 9f be 76 c9 00 40 57 af ce d9 16 87 2b 00 40 58 28 10 62 4d d2 f2 00 40 58 af 1a 9f be 76 c9 00 40 59 1a c0 83 12 6e 98 00 40 59 95 1e b8 51 eb 85 00 40 5a 07 0a 3d 70 a3 d7 00 40 5a 96 87 2b 02 0c 4a 00 40 5b 21 ba 5e 35 3f 7d 00 40 5b 93 b6 45 a1 ca c1 00 40 5b ff 4b c6 a7 ef 9e 00 40 5c 88 72 b0 20 c4 9c 00 40 5c fa 5e 35 3f 7c ee 00 40 5d 76 d9 16 87 2b 02 00 40 5d e4 8b 43 95 81 06 00 40 5e 6b 95 81 06 24 dd 00 40 5e f8 f5 c2 8f 5c 29 00 40 5f 8e c8 b4 39 58 10 00 40 60 0a e9 78 d4 fd f4 00 40 60 47 0a 3d 70 a3 d7 00 40 60 89 81 06 24 dd 2f 00 40 60 c8 cc cc cc cc cd 00 40 61 00 b4 39 58 10 62 00 40 61 49 81 06 24 dd 2f 00 40 61 91 37 4b c6 a7 f0 00 40 61 e3 85 1e b8 51 ec 00 40 62 43 85 1e b8 51 ec 00 40 62 7d 89 37 4b c6 a8 00 40 62 c9 81 06 24 dd 2f 00 40 63 12 45 a1 ca c0 83 00 40 63 5c 20 c4 9b a5 e3 00 40 63 9b 6c 8b 43 95 81 00 40 63 db c6 a7 ef 9d b2 00 40 64 16 d9 16 87 2b 02 00 40 64 55 16 87 2b 02 0c 00 40 64 8e 14 7a e1 47 ae 00 40 64 d7 e7 6c 8b 43 96 00 40 65 18 41 89 37 4b c7 00 40 65 51 37 4b c6 a7 f0 00 40 65 9e 3d 70 a3 d7 0a 00 40 65 e2 d0 e5 60 41 89 00 40 66 14 62 4d d2 f1 aa 00 40 66 60 5a 1c ac 08 31 00 40 66 a1 c2 8f 5c 28 f6 00 40 66 d9 a9 fb e7 6c 8b 00 40 67 1e 3d 70 a3 d7 0a 00 40 67 67 0a 3d 70 a3 d7 00 40 67 a9 81 06 24 dd 2f 00 40 67 f7 8d 4f df 3b 64 00 40 68 43 85 1e b8 51 ec 00 40 68 89 26 e9 78 d4 fe 00 40 68 d9 4f df 3b 64 5a 00 40 69 29 81 06 24 dd 2f 00 40 69 68 cc cc cc cc cd 00 40 69 aa 35 3f 7c ed 91 00 40 69 fc 7a e1 47 ae 14 00 40 6a 31 37 4b c6 a7 f0 00 40 6a 7c 20 c4 9b a5 e3 00 40 6a d0 83 12 6e 97 8d 00 40 6b 1e 97 8d 4f df 3b 00 40 6b 70 dd 2f 1a 9f be 00 40 6b aa e9 78 d4 fd f4 00 40 6b f6 d9 16 87 2b 02 00 40 6c 40 b4 39 58 10 62 00 40 6c 80 00 00 00 00 00 00 40 6c d2 45 a1 ca c0 83 00 40 6d 20 5a 1c ac 08 31 00 40 6d 68 18 93 74 bc 6a 00 40 6d b6 24 dd 2f 1a a0 00 40 6e 03 2b 02 0c 49 ba 00 0d 66 69 6c 65 70 6f 73 69 74 69 6f 6e 73 0a 00 00 00 7a 00 40 a3 a0 00 00 00 00 00 00 40 e6 1a 40 00 00 00 00 00 40 f4 b9 40 00 00 00 00 00 40 fe 2a 10 00 00 00 00 00 41 04 6d b8 00 00 00 00 00 41 09 13 30 00 00 00 00 00 41 0e 65 48 00 00 00 00 00 41 11 ac 10 00 00 00 00 00 41 14 60 bc 00 00 00 00 00 41 17 09 38 00 00 00 00 00 41 19 ce f4 00 00 00 00 00 41 1c 7a 90 00 00 00 00 00 41 1e e9 4c 00 00 00 00 00 41 21 0d 16 00 00 00 00 00 41 22 84 dc 00 00 00 00 00 41 23 bb be 00 00 00 00 00 41 25 2d b6 00 00 00 00 00 41 26 76 5e 00 00 00 00 00 41 27 d8 50 00 00 00 00 00 41 29 44 e6 00 00 00 00 00 41 2a 90 6e 00 00 00 00 00 41 2b e5 2c 00 00 00 00 00 41 2d 27 36 00 00 00 00 00 41 2e 65 fe 00 00 00 00 00 41 2f c3 02 00 00 00 00 00 41 30 73 07 00 00 00 00 00 41 31 26 69 00 00 00 00 00 41 31 d5 84 00 00 00 00 00 41 32 67 fc 00 00 00 00 00 41 33 0f c8 00 00 00 00 00 41 33 c3 ec 00 00 00 00 00 41 34 75 9c 00 00 00 00 00 41 35 29 c6 00 00 00 00 00 41 35 f8 37 00 00 00 00 00 41 36 99 17 00 00 00 00 00 41 37 4d 7f 00 00 00 00 00 41 37 fb e3 00 00 00 00 00 41 38 a0 fc 00 00 00 00 00 41 39 46 90 00 00 00 00 00 41 39 e7 17 00 00 00 00 00 41 3a 9c dc 00 00 00 00 00 41 3b 40 c0 00 00 00 00 00 41 3c 0e ff 00 00 00 00 00 41 3c bb e0 00 00 00 00 00 41 3d 77 91 00 00 00 00 00 41 3e 26 48 00 00 00 00 00 41 3e d2 57 00 00 00 00 00 41 3f 79 f2 00 00 00 00 00 41 40 13 eb 80 00 00 00 00 41 40 6e 58 00 00 00 00 00 41 40 c1 2d 80 00 00 00 00 41 41 17 c0 80 00 00 00 00 41 41 6b 52 80 00 00 00 00 41 41 c5 2e 00 00 00 00 00 41 42 17 da 80 00 00 00 00 41 42 76 36 00 00 00 00 00 41 42 c7 be 00 00 00 00 00 41 43 25 e5 80 00 00 00 00 41 43 7a b1 00 00 00 00 00 41 43 d4 07 80 00 00 00 00 41 44 2c e0 00 00 00 00 00 41 44 7d fe 00 00 00 00 00 41 44 d0 61 80 00 00 00 00 41 45 27 55 00 00 00 00 00 41 45 7c c3 80 00 00 00 00 41 45 d4 0a 00 00 00 00 00 41 46 24 09 80 00 00 00 00 41 46 7a 64 80 00 00 00 00 41 46 d8 6d 00 00 00 00 00 41 47 39 0a 80 00 00 00 00 41 47 94 d5 00 00 00 00 00 41 47 e8 6d 00 00 00 00 00 41 48 3f f1 80 00 00 00 00 41 48 a0 5e 80 00 00 00 00 41 48 f4 7d 00 00 00 00 00 41 49 52 36 00 00 00 00 00 41 49 b4 80 00 00 00 00 00 41 4a 1b 96 80 00 00 00 00 41 4a 86 8c 00 00 00 00 00 41 4a d6 96 00 00 00 00 00 41 4b 34 06 80 00 00 00 00 41 4b 8d 4b 80 00 00 00 00 41 4b ee 20 00 00 00 00 00 41 4c 45 14 80 00 00 00 00 41 4c 9e 5b 00 00 00 00 00 41 4c fc a7 00 00 00 00 00 41 4d 56 b1 80 00 00 00 00 41 4d ac f2 00 00 00 00 00 41 4e 12 de 80 00 00 00 00 41 4e 6b 88 80 00 00 00 00 41 4e bf 7b 00 00 00 00 00 41 4f 21 e4 00 00 00 00 00 41 4f 82 04 80 00 00 00 00 41 4f d4 10 80 00 00 00 00 41 50 1a 94 80 00 00 00 00 41 50 48 ce 40 00 00 00 00 41 50 70 de 80 00 00 00 00 41 50 9f 3a 40 00 00 00 00 41 50 cf 1d 80 00 00 00 00 41 50 fc a0 80 00 00 00 00 41 51 2b a4 80 00 00 00 00 41 51 58 7d 80 00 00 00 00 41 51 86 45 40 00 00 00 00 41 51 b6 0f 80 00 00 00 00 41 51 e6 71 40 00 00 00 00 41 52 10 8d 00 00 00 00 00 41 52 3c e0 40 00 00 00 00 41 52 6d 33 c0 00 00 00 00 41 52 96 68 40 00 00 00 00 41 52 c5 8a 40 00 00 00 00 41 52 f6 6a c0 00 00 00 00 41 53 25 4e 40 00 00 00 00 41 53 58 7d 80 00 00 00 00 41 53 85 b4 00 00 00 00 00 41 53 ba 0c 40 00 00 00 00 41 53 f4 6f c0 00 00 00 00 41 54 2d 9d c0 00 00 00 00 41 54 70 96 80 00 00 00 00 41 54 a7 13 80 00 00 00 00 41 54 d8 8f 00 00 00 00 00 41 55 0f ae 80 00 00 00 00 41 55 41 92 80 00 00 00 00");
Element *el5 = flv.decodeMetaData(hex5);
if (el5 == 0) {
notest = true;
diff --git a/cygnal/testsuite/libamf.all/test_lc.cpp b/cygnal/testsuite/libamf.all/test_lc.cpp
index 8079bc9..ed1e740 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 {
@@ -363,7 +363,7 @@ test_read()
}
}
-// boost::uint8_t *ptr = lc.parseHeader(reinterpret_cast<boost::uint8_t *>(shmaddr));
+// std::uint8_t *ptr = lc.parseHeader(reinterpret_cast<std::uint8_t *>(shmaddr));
// vector<cygnal::Element *> ellist = lc.parseBody(ptr);
// cout << "# of AMF Elements in file: " << ellist.size() << endl;
// lc.dump();
@@ -397,7 +397,7 @@ test_write()
runtest.fail("gain set");
}
- boost::uint8_t *foo = amf_obj.encodeVariable(el);
+ std::uint8_t *foo = amf_obj.encodeVariable(el);
char *ptr = (char *)amf_obj.extractVariable(&newel, foo);
if ((el.name == newel.name) &&
(el.length == newel.length) &&
@@ -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/cygnal/testsuite/libamf.all/test_number.cpp b/cygnal/testsuite/libamf.all/test_number.cpp
index dc39824..f9cbecc 100644
--- a/cygnal/testsuite/libamf.all/test_number.cpp
+++ b/cygnal/testsuite/libamf.all/test_number.cpp
@@ -91,7 +91,7 @@ test_amf()
int fd, ret;
double num;
Element el;
- boost::uint8_t *ptr;
+ std::uint8_t *ptr;
char *buf[AMF_NUMBER_SIZE+1];
memset(buf, 0, AMF_NUMBER_SIZE+1);
@@ -102,7 +102,7 @@ test_amf()
close(fd);
// num = amf_obj.extractNumber(buf);
- ptr = amf_obj.extractVariable(&el, reinterpret_cast<boost::uint8_t *>(buf));
+ ptr = amf_obj.extractVariable(&el, reinterpret_cast<std::uint8_t *>(buf));
if (el.getType() == Element::NUMBER) {
runtest.pass("Extracted Number AMF object");
diff --git a/cygnal/testsuite/libamf.all/test_sol.cpp b/cygnal/testsuite/libamf.all/test_sol.cpp
index 9b146c7..7932ec8 100644
--- a/cygnal/testsuite/libamf.all/test_sol.cpp
+++ b/cygnal/testsuite/libamf.all/test_sol.cpp
@@ -22,7 +22,6 @@
#ifdef HAVE_DEJAGNU_H
//#include <netinet/in.h>
-#include <boost/shared_ptr.hpp>
#include <string>
#include <sys/types.h>
#include <sys/stat.h>
@@ -142,12 +141,12 @@ test_read(std::string &filespec)
GNASH_REPORT_FUNCTION;
struct stat st;
- boost::shared_ptr<Buffer> hex1(new Buffer("00 bf 00 00 01 28 54 43 53 4f 00 04 00 00 00 00 00 08 73 65 74 74 69 6e 67 73 00 00 00 00 00 04 67 61 69 6e 00 40 49 00 00 00 00 00 00 00 00 0f 65 63 68 6f 73 75 70 70 72 65 73 73 69 6f 6e 01 00 00 00 11 64 65 66 61 75 6c 74 6d 69 63 72 6f 70 68 6f 6e 65 02 00 0e 2f 64 65 76 2f 69 6e 70 75 74 2f 6d 69 63 00 00 0d 64 65 66 61 75 6c 74 63 61 6d 65 72 61 02 00 00 00 00 0d 64 65 66 61 75 6c 74 6b 6c 69 6d 69 74 00 40 59 00 00 00 00 00 00 00 00 0d 64 65 66 61 75 6c 74 61 6c 77 61 79 73 01 00 00 00 10 63 72 6f 73 73 64 6f 6d 61 69 6e 41 6c 6c 6f 77 01 01 00 00 11 63 72 6f 73 73 64 6f 6d 61 69 6e 41 6c 77 61 79 73 01 01 00 00 18 61 6c 6c 6f 77 54 68 69 72 64 50 61 72 74 79 4c 53 4f 41 63 63 65 73 73 01 01 00 00 0c 74 72 75 73 74 65 64 50 61 74 68 73 03 00 00 09 00 00 0c 6c 6f 63 61 6c 53 65 63 50 61 74 68 02 00 00 00 00 10 6c 6f 63 61 6c 53 65 63 50 61 74 68 54 69 6d 65 00 42 71 6d 14 10 22 e0 00 00"));
+ std::shared_ptr<Buffer> hex1(new Buffer("00 bf 00 00 01 28 54 43 53 4f 00 04 00 00 00 00 00 08 73 65 74 74 69 6e 67 73 00 00 00 00 00 04 67 61 69 6e 00 40 49 00 00 00 00 00 00 00 00 0f 65 63 68 6f 73 75 70 70 72 65 73 73 69 6f 6e 01 00 00 00 11 64 65 66 61 75 6c 74 6d 69 63 72 6f 70 68 6f 6e 65 02 00 0e 2f 64 65 76 2f 69 6e 70 75 74 2f 6d 69 63 00 00 0d 64 65 66 61 75 6c 74 63 61 6d 65 72 61 02 00 00 00 00 0d 64 65 66 61 75 6c 74 6b 6c 69 6d 69 74 00 40 59 00 00 00 00 00 00 00 00 0d 64 65 66 61 75 6c 74 61 6c 77 61 79 73 01 00 00 00 10 63 72 6f 73 73 64 6f 6d 61 69 6e 41 6c 6c 6f 77 01 01 00 00 11 63 72 6f 73 73 64 6f 6d 61 69 6e 41 6c 77 61 79 73 01 01 00 00 18 61 6c 6c 6f 77 54 68 69 72 64 50 61 72 74 79 4c 53 4f 41 63 63 65 73 73 01 01 00 00 0c 74 72 75 73 74 65 64 50 61 74 68 73 03 00 00 09 00 00 0c 6c 6f 63 61 6c 53 65 63 50 61 74 68 02 00 00 00 00 10 6c 6f 63 61 6c 53 65 63 50 61 74 68 54 69 6d 65 00 42 71 6d 14 10 22 e0 00 00"));
if (stat(filespec.c_str(), &st) == 0) {
SOL sol;
sol.readFile(filespec);
- vector<boost::shared_ptr<cygnal::Element> > els = sol.getElements();
+ vector<std::shared_ptr<cygnal::Element> > els = sol.getElements();
if (els.size() > 1) {
string str = els[2]->to_string();
diff --git a/cygnal/testsuite/libnet.all/Makefile.am b/cygnal/testsuite/libnet.all/Makefile.am
index b767294..c60e1fa 100644
--- a/cygnal/testsuite/libnet.all/Makefile.am
+++ b/cygnal/testsuite/libnet.all/Makefile.am
@@ -21,8 +21,6 @@
AUTOMAKE_OPTIONS = dejagnu
-AM_CPPFLAGS = # -Wall
-
AM_LDFLAGS = \
$(top_builddir)/libbase/libgnashbase.la \
$(top_builddir)/cygnal/libamf/libgnashamf.la \
@@ -35,7 +33,7 @@ AM_LDFLAGS = \
localedir = $(datadir)/locale
-INCLUDES = \
+AM_CPPFLAGS = \
-I$(top_srcdir)/testsuite \
-I$(top_srcdir)/cygnal/libnet \
-I$(top_srcdir)/cygnal/libamf \
diff --git a/cygnal/testsuite/libnet.all/generate_amfbins.cpp b/cygnal/testsuite/libnet.all/generate_amfbins.cpp
index 6c07818..d7dca57 100644
--- a/cygnal/testsuite/libnet.all/generate_amfbins.cpp
+++ b/cygnal/testsuite/libnet.all/generate_amfbins.cpp
@@ -114,21 +114,21 @@ main(int argc, char *argv[])
}
#if 0
- std::vector<boost::shared_ptr<amf::Element> > data1;
+ std::vector<std::shared_ptr<amf::Element> > data1;
const char *str1 = "property one";
- boost::shared_ptr<amf::Element> prop1(new Element(str1));
+ std::shared_ptr<amf::Element> prop1(new Element(str1));
data1.push_back(prop1);
string str2 = "property two";
- boost::shared_ptr<amf::Element> prop2(new Element(str2));
+ std::shared_ptr<amf::Element> prop2(new Element(str2));
data1.push_back(prop2);
- boost::shared_ptr<amf::Element> prop3(new Element("property three"));
+ std::shared_ptr<amf::Element> prop3(new Element("property three"));
data1.push_back(prop3);
double num = 123.456;
- boost::shared_ptr<amf::Element> prop4(new Element(num));
+ std::shared_ptr<amf::Element> prop4(new Element(num));
data1.push_back(prop4);
Element top;
@@ -178,46 +178,46 @@ main(int argc, char *argv[])
string str = "Guten Tag";
Element elnum1(dub);
- boost::shared_ptr<Buffer> bnum1 = cygnal::AMF::encodeElement(elnum1);
+ std::shared_ptr<Buffer> bnum1 = cygnal::AMF::encodeElement(elnum1);
int fd = ::open("amf0-number.bin" ,O_WRONLY|O_CREAT, S_IRWXU);
::write(fd, bnum1->reference(), bnum1->allocated()); ::close(fd);
flag = true;
Element elbool1(flag);
- boost::shared_ptr<Buffer> bbool1 = cygnal::AMF::encodeElement(elbool1);
+ std::shared_ptr<Buffer> bbool1 = cygnal::AMF::encodeElement(elbool1);
fd = ::open("amf0-boolean.bin" ,O_WRONLY|O_CREAT, S_IRWXU);
::write(fd, bbool1->reference(), bbool1->allocated()); ::close(fd);
Element elstr1(str);
- boost::shared_ptr<Buffer> bstr1 = cygnal::AMF::encodeElement(elstr1);
+ std::shared_ptr<Buffer> bstr1 = cygnal::AMF::encodeElement(elstr1);
fd = ::open("amf0-string.bin" ,O_WRONLY|O_CREAT, S_IRWXU);
::write(fd, bstr1->reference(), bstr1->allocated()); ::close(fd);
Element el3;
el3.clear();
el3.makeNull();
- boost::shared_ptr<Buffer> bel3 = cygnal::AMF::encodeElement(el3);
+ std::shared_ptr<Buffer> bel3 = cygnal::AMF::encodeElement(el3);
fd = ::open("amf0-null-object.bin" ,O_WRONLY|O_CREAT, S_IRWXU);
::write(fd, bel3->reference(), bel3->allocated()); ::close(fd);
Element el4;
el4.makeUndefined();
- boost::shared_ptr<Buffer> bel4 = cygnal::AMF::encodeElement(el4);
+ std::shared_ptr<Buffer> bel4 = cygnal::AMF::encodeElement(el4);
fd = ::open("amf0-undefined-object.bin" ,O_WRONLY|O_CREAT, S_IRWXU);
::write(fd, bel4->reference(), bel4->allocated()); ::close(fd);
Element el6;
el6.clear();
el6.makeNullString();
- boost::shared_ptr<Buffer> bel6 = cygnal::AMF::encodeElement(el6);
+ std::shared_ptr<Buffer> bel6 = cygnal::AMF::encodeElement(el6);
fd = ::open("amf0-null-string.bin" ,O_WRONLY|O_CREAT, S_IRWXU);
::write(fd, bel6->reference(), bel6->allocated()); ::close(fd);
Element el15;
el15.clear();
el15.makeUnsupported();
- boost::shared_ptr<Buffer> bel15 = cygnal::AMF::encodeElement(el15);
+ std::shared_ptr<Buffer> bel15 = cygnal::AMF::encodeElement(el15);
fd = ::open("amf0-unsupported-object.bin" ,O_WRONLY|O_CREAT, S_IRWXU);
::write(fd, bel15->reference(), bel15->allocated()); ::close(fd);
diff --git a/cygnal/testsuite/libnet.all/test_cache.cpp b/cygnal/testsuite/libnet.all/test_cache.cpp
index da67fbf..c83dc74 100644
--- a/cygnal/testsuite/libnet.all/test_cache.cpp
+++ b/cygnal/testsuite/libnet.all/test_cache.cpp
@@ -154,19 +154,19 @@ test (void)
runtest.fail("addResponse()/findResponse()");
}
- boost::shared_ptr<DiskStream> file1(new DiskStream);
+ std::shared_ptr<DiskStream> file1(new DiskStream);
create_file("outbuf1.raw", 100);
file1->open("outbuf1.raw");
- boost::shared_ptr<DiskStream> file2(new DiskStream);
+ std::shared_ptr<DiskStream> file2(new DiskStream);
create_file("outbuf2.raw", 200);
file1->open("outbuf2.raw");
- boost::shared_ptr<DiskStream> file3(new DiskStream);
+ std::shared_ptr<DiskStream> file3(new DiskStream);
create_file("outbuf3.raw", 300);
file1->open("outbuf3.raw");
- boost::shared_ptr<DiskStream> file4(new DiskStream);
+ std::shared_ptr<DiskStream> file4(new DiskStream);
create_file("outbuf4.raw", 400);
file1->open("outbuf4.raw");
@@ -175,8 +175,8 @@ test (void)
cache.addFile("barfoo", file3);
cache.addFile("foobar", file4);
- boost::shared_ptr<DiskStream> ds1 = cache.findFile("foo");
- boost::shared_ptr<DiskStream> ds2 = cache.findFile("bar");
+ std::shared_ptr<DiskStream> ds1 = cache.findFile("foo");
+ std::shared_ptr<DiskStream> ds2 = cache.findFile("bar");
if (ds1 && ds2) {
if ((ds1->getFileSize() == file1->getFileSize())
&& (ds2->getFileSize() == file2->getFileSize())) {
@@ -239,19 +239,19 @@ test_remove(void)
runtest.fail("Cache::removeResponse()");
}
- boost::shared_ptr<DiskStream> file1(new DiskStream);
+ std::shared_ptr<DiskStream> file1(new DiskStream);
create_file("outbuf1.raw", 100);
file1->open("outbuf1.raw");
- boost::shared_ptr<DiskStream> file2(new DiskStream);
+ std::shared_ptr<DiskStream> file2(new DiskStream);
create_file("outbuf2.raw", 200);
file2->open("outbuf2.raw");
- boost::shared_ptr<DiskStream> file3(new DiskStream);
+ std::shared_ptr<DiskStream> file3(new DiskStream);
create_file("outbuf3.raw", 300);
file3->open("outbuf3.raw");
- boost::shared_ptr<DiskStream> file4(new DiskStream);
+ std::shared_ptr<DiskStream> file4(new DiskStream);
create_file("outbuf4.raw", 400);
file4->open("outbuf4.raw");
@@ -261,8 +261,8 @@ test_remove(void)
cache.addFile("foobar", file4);
cache.removeFile("barfoo");
- boost::shared_ptr<DiskStream> ds1 = cache.findFile("foo");
- boost::shared_ptr<DiskStream> ds2 = cache.findFile("bar");
+ std::shared_ptr<DiskStream> ds1 = cache.findFile("foo");
+ std::shared_ptr<DiskStream> ds2 = cache.findFile("bar");
if (ds1 && ds2) {
if ((cache.findFile("foo")->getFileSize() == file1->getFileSize())
&& (cache.findFile("barfoo") == 0)
@@ -307,7 +307,7 @@ test_errors (void)
runtest.fail("Cache::findResponse()");
}
- boost::shared_ptr<DiskStream> file1(new DiskStream);
+ std::shared_ptr<DiskStream> file1(new DiskStream);
// create_file("outbuf1.raw", 100); it's created aleady in test().
file1->open("outbuf1.raw");
diff --git a/cygnal/testsuite/libnet.all/test_cque.cpp b/cygnal/testsuite/libnet.all/test_cque.cpp
index 1272c96..d789133 100644
--- a/cygnal/testsuite/libnet.all/test_cque.cpp
+++ b/cygnal/testsuite/libnet.all/test_cque.cpp
@@ -36,7 +36,7 @@
#include <fstream>
#include <cstring>
#include <vector>
-#include <boost/cstdint.hpp>
+#include <cstdint>
#ifdef HAVE_DEJAGNU_H
#include "dejagnu.h"
@@ -65,34 +65,34 @@ main (int /*argc*/, char** /*argv*/) {
CQue que;
- boost::shared_ptr<cygnal::Buffer> buf(new Buffer(50));
+ std::shared_ptr<cygnal::Buffer> buf(new Buffer(50));
// populate the buffer
- boost::uint8_t *ptr = buf->reference();
+ std::uint8_t *ptr = buf->reference();
for (Network::byte_t i=1; i< buf->size(); i++) {
*buf += i;
*buf += ' ';
}
-// boost::uint8_t *test = new uint8_t[6];
+// std::uint8_t *test = new uint8_t[6];
// memcpy(test, "hell", 4);
// Push one buffer on the fifo. The default is the incoming fifo,
// which is the one where data flows from the network to the queue.
que.push(buf);
if (que.size() == 1) {
- runtest.pass ("CQue::push(boost::shared_ptr<cygnal::Buffer> )");
+ runtest.pass ("CQue::push(std::shared_ptr<cygnal::Buffer> )");
} else {
- runtest.fail ("CQue::push(boost::shared_ptr<cygnal::Buffer> )");
+ runtest.fail ("CQue::push(std::shared_ptr<cygnal::Buffer> )");
}
// Test push. When dumpimg, the second address should be different than the first,
// as well as the size. The outgoing queue should be uneffected.
- boost::shared_ptr<cygnal::Buffer> buf1(new Buffer(112));
+ std::shared_ptr<cygnal::Buffer> buf1(new Buffer(112));
que.push(buf1);
if (que.size() == 2) {
- runtest.pass ("CQue::pushin(boost::shared_ptr<cygnal::Buffer> )");
+ runtest.pass ("CQue::pushin(std::shared_ptr<cygnal::Buffer> )");
} else {
- runtest.fail ("CQue::pushin(boost::shared_ptr<cygnal::Buffer> )");
+ runtest.fail ("CQue::pushin(std::shared_ptr<cygnal::Buffer> )");
}
// Nuke the array
@@ -105,14 +105,14 @@ main (int /*argc*/, char** /*argv*/) {
que.push(buf);
- boost::shared_ptr<cygnal::Buffer> buf2 = que.peek();
+ std::shared_ptr<cygnal::Buffer> buf2 = que.peek();
if ((buf2 == buf) && (que.size() == 1)) {
runtest.pass ("CQue::peek()");
} else {
runtest.fail ("CQue::peek()");
}
- boost::shared_ptr<cygnal::Buffer> buf3 = que.peek();
+ std::shared_ptr<cygnal::Buffer> buf3 = que.peek();
if ((buf3 == buf) && (que.size() == 1)) {
runtest.pass ("CQue::pop()");
} else {
@@ -130,9 +130,9 @@ main (int /*argc*/, char** /*argv*/) {
}
// Make some test buffers
- boost::shared_ptr<cygnal::Buffer> merge1(new Buffer);
- boost::shared_ptr<cygnal::Buffer> merge2(new Buffer);
- boost::shared_ptr<cygnal::Buffer> merge3(new Buffer);
+ std::shared_ptr<cygnal::Buffer> merge1(new Buffer);
+ std::shared_ptr<cygnal::Buffer> merge2(new Buffer);
+ std::shared_ptr<cygnal::Buffer> merge3(new Buffer);
size_t i;
ptr = merge1->reference();
for (i=0; i<cygnal::NETBUFSIZE; i++) {
@@ -155,7 +155,7 @@ main (int /*argc*/, char** /*argv*/) {
// que.dump();
// A merge gives us one big buffer where there were several buffers
- boost::shared_ptr<cygnal::Buffer> foo = que.merge(merge1);
+ std::shared_ptr<cygnal::Buffer> foo = que.merge(merge1);
if (foo == 0) {
runtest.unresolved("CQue::merge()");
} else {
diff --git a/cygnal/testsuite/libnet.all/test_diskstream.cpp b/cygnal/testsuite/libnet.all/test_diskstream.cpp
index 9f7ae89..29d5369 100644
--- a/cygnal/testsuite/libnet.all/test_diskstream.cpp
+++ b/cygnal/testsuite/libnet.all/test_diskstream.cpp
@@ -123,8 +123,8 @@ test()
ds1.open("outbuf.raw");
// ptr should be the base address of the memory plus the offset
- boost::uint8_t *ptr = ds1.loadToMem(48);
-// boost::uint8_t *dsptr = ds1.get(); // cache the initial base address
+ std::uint8_t *ptr = ds1.loadToMem(48);
+// std::uint8_t *dsptr = ds1.get(); // cache the initial base address
if ((ds1.get() == MAP_FAILED) || (ds1.get() == 0)) {
runtest.unresolved("loadToMem(48)");
@@ -203,7 +203,7 @@ test()
void
test_mem()
{
- boost::shared_ptr<cygnal::Buffer> buf1(new cygnal::Buffer(12));
+ std::shared_ptr<cygnal::Buffer> buf1(new cygnal::Buffer(12));
*buf1 = "Hello World";
// drop the null terminator byte we inherit when using a simnple
// string for testing
diff --git a/cygnal/testsuite/libnet.all/test_handler.cpp b/cygnal/testsuite/libnet.all/test_handler.cpp
index 7a1f524..a7903d4 100644
--- a/cygnal/testsuite/libnet.all/test_handler.cpp
+++ b/cygnal/testsuite/libnet.all/test_handler.cpp
@@ -36,7 +36,7 @@
#include <fstream>
#include <cstring>
#include <vector>
-#include <boost/cstdint.hpp>
+#include <cstdint>
#ifdef HAVE_POLL
# include <sys/poll.h>
@@ -192,17 +192,17 @@ test_que()
{
Handler que;
- boost::shared_ptr<amf::Buffer> buf(new Buffer);
-// boost::uint8_t *test = new uint8_t[6];
+ std::shared_ptr<amf::Buffer> buf(new Buffer);
+// std::uint8_t *test = new uint8_t[6];
// memcpy(test, "hell", 4);
// Push one buffer on the fifo. The default is the incoming fifo,
// which is the one where data flows from the network to the queue.
que.push(buf);
if ((que.size() == 1) && (que.outsize() == 0)) {
- runtest.pass ("Handler::push(boost::shared_ptr<amf::Buffer> )");
+ runtest.pass ("Handler::push(std::shared_ptr<amf::Buffer> )");
} else {
- runtest.fail ("Handler::push(boost::shared_ptr<amf::Buffer> )");
+ runtest.fail ("Handler::push(std::shared_ptr<amf::Buffer> )");
}
// Push one buffer on the outgoing fifo. The default is the incoming fifo,
@@ -210,20 +210,20 @@ test_que()
// we can explicitly specufy which queue we write to, we test that here.
que.pushout(buf);
if ((que.size() == 1) && (que.outsize() == 1)) {
- runtest.pass ("Handler::pushout(boost::shared_ptr<amf::Buffer> )");
+ runtest.pass ("Handler::pushout(std::shared_ptr<amf::Buffer> )");
} else {
- runtest.fail ("Handler::pushout(boost::shared_ptr<amf::Buffer> )");
+ runtest.fail ("Handler::pushout(std::shared_ptr<amf::Buffer> )");
}
// Test pushin. When dumpimg, the second address should be different than the first,
// as well as the size. The outgoing queue should be uneffected.
- boost::shared_ptr<amf::Buffer> buf1(new Buffer);
+ std::shared_ptr<amf::Buffer> buf1(new Buffer);
buf1->resize(112);
que.pushin(buf1);
if ((que.size() == 2) && (que.outsize() == 1)) {
- runtest.pass ("Handler::pushin(boost::shared_ptr<amf::Buffer> )");
+ runtest.pass ("Handler::pushin(std::shared_ptr<amf::Buffer> )");
} else {
- runtest.fail ("Handler::pushin(boost::shared_ptr<amf::Buffer> )");
+ runtest.fail ("Handler::pushin(std::shared_ptr<amf::Buffer> )");
}
// Nuke the array
@@ -235,20 +235,20 @@ test_que()
}
// populate the buffer
- boost::uint8_t *ptr = buf->reference();
+ std::uint8_t *ptr = buf->reference();
for (size_t i=1; i< buf->size(); i++) {
ptr[i] = i;
}
que.push(buf);
- boost::shared_ptr<amf::Buffer> buf2 = que.peek();
+ std::shared_ptr<amf::Buffer> buf2 = que.peek();
if ((buf2 == buf) && (que.size() == 1)) {
runtest.pass ("Handler::peek()");
} else {
runtest.fail ("Handler::peek()");
}
- boost::shared_ptr<amf::Buffer> buf3 = que.peek();
+ std::shared_ptr<amf::Buffer> buf3 = que.peek();
if ((buf3 == buf) && (que.size() == 1)) {
runtest.pass ("Handler::pop()");
} else {
diff --git a/cygnal/testsuite/libnet.all/test_http.cpp b/cygnal/testsuite/libnet.all/test_http.cpp
index 1735269..1503df8 100644
--- a/cygnal/testsuite/libnet.all/test_http.cpp
+++ b/cygnal/testsuite/libnet.all/test_http.cpp
@@ -351,7 +351,7 @@ tests()
//
http.clearHeader();
#if 0
- boost::uint8_t *buffer = (boost::uint8_t *)"GET /software/gnash/tests/flvplayer.swf?file=http://localhost/software/gnash/tests/Ouray_Ice_Festival_Climbing_Competition.flv HTTP/1.1\r\n"
+ std::uint8_t *buffer = (std::uint8_t *)"GET /software/gnash/tests/flvplayer.swf?file=http://localhost/software/gnash/tests/Ouray_Ice_Festival_Climbing_Competition.flv HTTP/1.1\r\n"
"User-Agent: Gnash/0.8.1-cvs (X11; Linux i686; U; en)\r\n"
"Host: localhost:4080\r\n"
"Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1\r\n"
@@ -384,7 +384,7 @@ tests()
// Check the Server field
Buffer field1;
field1 = "GET /index.html HTTP/1.1";
- // boost::uint8_t *field1 = (boost::uint8_t *)"GET /index.html HTTP/1.1";
+ // std::uint8_t *field1 = (std::uint8_t *)"GET /index.html HTTP/1.1";
HTTP http1;
// http1.extractCommand(field1);
http1.extractCommand(field1);
@@ -421,7 +421,7 @@ tests()
#endif
#if 0
- boost::uint8_t *field3 = (boost::uint8_t *) "Keep-Alive: 300";
+ std::uint8_t *field3 = (std::uint8_t *) "Keep-Alive: 300";
HTTP http3;
http3.extractKeepAlive(field3);
if ((http3.keepAlive() == true) && (http3.getMaxRequests() == 300)) {
@@ -430,7 +430,7 @@ tests()
runtest.fail ("HTTP::extractKeepAlive(300)");
}
- boost::uint8_t *field4 = (boost::uint8_t *) "Keep-Alive: On";
+ std::uint8_t *field4 = (std::uint8_t *) "Keep-Alive: On";
HTTP http4;
http4.extractKeepAlive(field4);
if (http4.keepAlive() == true) {
@@ -439,7 +439,7 @@ tests()
runtest.fail ("HTTP::extractKeepAlive(On)");
}
- boost::uint8_t *field5 = (boost::uint8_t *) "Keep-Alive: Off";
+ std::uint8_t *field5 = (std::uint8_t *) "Keep-Alive: Off";
HTTP http5;
http5.extractKeepAlive(field5);
if (http5.keepAlive() == false) {
@@ -450,7 +450,7 @@ tests()
// Some browsers have a different synatax, of course, to keep things
// interesting.
- boost::uint8_t *buffer2 = (boost::uint8_t *)"GET /software/gnash/tests/flvplayer.swf?file=http://localhost/software/gnash/tests/Ouray_Ice_Festival_Climbing_Competition.flv HTTP/1.1\r\n)"
+ std::uint8_t *buffer2 = (std::uint8_t *)"GET /software/gnash/tests/flvplayer.swf?file=http://localhost/software/gnash/tests/Ouray_Ice_Festival_Climbing_Competition.flv HTTP/1.1\r\n)"
"Content-Language: en-US,en;q=0.9\r\n"
"Content-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1\r\n"
"Content-Encoding: deflate, gzip, x-gzip, identity, *;q=0\r\n";
@@ -583,8 +583,8 @@ test_post()
HTTP http;
- boost::shared_ptr<cygnal::Buffer> encstr = AMF::encodeString("Hello World!");
- boost::shared_ptr<cygnal::Buffer> encnum = AMF::encodeNumber(1.2345);
+ std::shared_ptr<cygnal::Buffer> encstr = AMF::encodeString("Hello World!");
+ std::shared_ptr<cygnal::Buffer> encnum = AMF::encodeNumber(1.2345);
cygnal::Buffer ptr1;
ptr1 = "POST /echo/gateway HTTP/1.1\r\n";
@@ -604,8 +604,8 @@ test_post()
// FIXME: should be moved to server side only test case
// Check the Server field
AMF amf;
- boost::uint8_t *data1 = http.processHeaderFields(&ptr1);
- boost::shared_ptr<cygnal::Element> el1 = amf.extractAMF(data1, data1 + 15);
+ std::uint8_t *data1 = http.processHeaderFields(&ptr1);
+ std::shared_ptr<cygnal::Element> el1 = amf.extractAMF(data1, data1 + 15);
string str1 = el1->to_string();
if ((http.getField("host") == "localhost:4080")
@@ -633,8 +633,8 @@ test_post()
ptr2 += *encnum;
ptr2.resize(); // shrink the buffer to be the exact size of the data
- boost::uint8_t *data2 = http.processHeaderFields(&ptr2);
- boost::shared_ptr<cygnal::Element> el2 = amf.extractAMF(data2, data2 + 15);
+ std::uint8_t *data2 = http.processHeaderFields(&ptr2);
+ std::shared_ptr<cygnal::Element> el2 = amf.extractAMF(data2, data2 + 15);
if ((http.getField("host") == "localhost:5080")
&& (el2->to_number() == 1.2345)
&& (http.getField("content-length") == "9")) {
@@ -643,7 +643,7 @@ test_post()
runtest.fail("HTTP::processHeaderFields(POST) + NUMBER");
}
- boost::shared_ptr<std::vector<std::string> > item2 = http.getFieldItem("accept");
+ std::shared_ptr<std::vector<std::string> > item2 = http.getFieldItem("accept");
if (!item2) {
runtest.unresolved("HTTP::getFieldItem(Accept)");
} else {
@@ -654,7 +654,7 @@ test_post()
}
}
- boost::shared_ptr<std::vector<std::string> > item3 = http.getFieldItem("connection");
+ std::shared_ptr<std::vector<std::string> > item3 = http.getFieldItem("connection");
if (!item3) {
runtest.unresolved("HTTP::getFieldItem(POST)");
} else {
@@ -667,10 +667,10 @@ test_post()
#if 0
// Make sure we can parse the Red5 echo_test client messages.
- boost::shared_ptr<Buffer> hex1(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 02 2f 32 00 00 00 14 0a 00 00 00 01 02 00 0c 48 65 6c 6c 6f 20 77 6f 72 6c 64 21"));
- boost::shared_ptr<Buffer> hex2(new Buffer("00 00 00 00 00 01 00 0b 2f 32 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 02 00 0c 48 65 6c 6c 6f 20 77 6f 72 6c 64 21"));
+ std::shared_ptr<Buffer> hex1(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 02 2f 32 00 00 00 14 0a 00 00 00 01 02 00 0c 48 65 6c 6c 6f 20 77 6f 72 6c 64 21"));
+ std::shared_ptr<Buffer> hex2(new Buffer("00 00 00 00 00 01 00 0b 2f 32 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 02 00 0c 48 65 6c 6c 6f 20 77 6f 72 6c 64 21"));
// http.clearFields();
- vector<boost::shared_ptr<cygnal::Element> > headers = http.parseEchoRequest(*hex1);
+ vector<std::shared_ptr<cygnal::Element> > headers = http.parseEchoRequest(*hex1);
if ((strncmp(headers[0]->getName(), "echo", 4) == 0)
&& (strncmp(headers[1]->getName(), "/2", 2) == 0)
@@ -705,8 +705,8 @@ test_rtmpt (void)
HTTP http;
// Boolean True request
- boost::shared_ptr<Buffer> hex_req1(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 02 2f 31 00 00 00 07 0a 00 00 00 01 01 01"));
- vector<boost::shared_ptr<cygnal::Element> > headers1 = http.parseEchoRequest(*hex_req1);
+ std::shared_ptr<Buffer> hex_req1(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 02 2f 31 00 00 00 07 0a 00 00 00 01 01 01"));
+ vector<std::shared_ptr<cygnal::Element> > headers1 = http.parseEchoRequest(*hex_req1);
if ((strncmp(headers1[0]->getName(), "echo", 4) == 0)
&& (strncmp(headers1[1]->getName(), "/1", 2) == 0)
&& (headers1[3]->getType() == Element::BOOLEAN_AMF0)
@@ -718,7 +718,7 @@ test_rtmpt (void)
// hex_req1->corrupt();
// Boolean True response
- boost::shared_ptr<Buffer> hex_res1(new Buffer("00 00 00 00 00 01 00 0b 2f 31 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 01 01"));
+ std::shared_ptr<Buffer> hex_res1(new Buffer("00 00 00 00 00 01 00 0b 2f 31 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 01 01"));
cygnal::Buffer &buf1 = http.formatEchoResponse(headers1[1]->getName(), *headers1[3]);
string head1(reinterpret_cast<const char *>(buf1.reference()));
const char *ptr1a = reinterpret_cast<const char *>(hex_res1->reference());
@@ -731,8 +731,8 @@ test_rtmpt (void)
// Boolean false request
- boost::shared_ptr<Buffer> hex_req2(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 02 2f 32 00 00 00 07 0a 00 00 00 01 01 00"));
- vector<boost::shared_ptr<cygnal::Element> > headers2 = http.parseEchoRequest(*hex_req2);
+ std::shared_ptr<Buffer> hex_req2(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 02 2f 32 00 00 00 07 0a 00 00 00 01 01 00"));
+ vector<std::shared_ptr<cygnal::Element> > headers2 = http.parseEchoRequest(*hex_req2);
if ((strncmp(headers2[0]->getName(), "echo", 4) == 0)
&& (strncmp(headers2[1]->getName(), "/2", 2) == 0)
&& (headers2[3]->getType() == Element::BOOLEAN_AMF0)
@@ -742,7 +742,7 @@ test_rtmpt (void)
runtest.fail("HTTP::parseEchoRequest(Boolean FALSE)");
}
// Boolean False response
- boost::shared_ptr<Buffer> hex_res2(new Buffer("00 00 00 00 00 01 00 0b 2f 32 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 01 00"));
+ std::shared_ptr<Buffer> hex_res2(new Buffer("00 00 00 00 00 01 00 0b 2f 32 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 01 00"));
cygnal::Buffer &buf2 = http.formatEchoResponse(headers2[1]->getName(), *headers2[3]);
string head2(reinterpret_cast<const char *>(buf2.reference()));
const char *ptr2a = reinterpret_cast<const char *>(hex_res2->reference());
@@ -754,8 +754,8 @@ test_rtmpt (void)
}
// NULL Object request
- boost::shared_ptr<Buffer> hex_req3(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 02 2f 31 00 00 00 06 0a 00 00 00 01 05"));
- vector<boost::shared_ptr<cygnal::Element> > headers3 = http.parseEchoRequest(*hex_req3);
+ std::shared_ptr<Buffer> hex_req3(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 02 2f 31 00 00 00 06 0a 00 00 00 01 05"));
+ vector<std::shared_ptr<cygnal::Element> > headers3 = http.parseEchoRequest(*hex_req3);
if ((strncmp(headers3[0]->getName(), "echo", 4) == 0)
&& (strncmp(headers3[1]->getName(), "/1", 2) == 0)
&& (headers3[3]->getType() == Element::NULL_AMF0)) {
@@ -764,7 +764,7 @@ test_rtmpt (void)
runtest.fail("HTTP::parseEchoRequest(NULL Object)");
}
// NULL Object response
- boost::shared_ptr<Buffer> hex_res3(new Buffer("00 00 00 00 00 01 00 0b 2f 31 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 05"));
+ std::shared_ptr<Buffer> hex_res3(new Buffer("00 00 00 00 00 01 00 0b 2f 31 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 05"));
cygnal::Buffer &buf3 = http.formatEchoResponse(headers3[1]->getName(), *headers3[3]);
string head3(reinterpret_cast<const char *>(buf3.reference()));
const char *ptr3a = reinterpret_cast<const char *>(hex_res3->reference());
@@ -776,8 +776,8 @@ test_rtmpt (void)
}
// UNDEFINED Object request
- boost::shared_ptr<Buffer> hex_req4(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 02 2f 31 00 00 00 06 0a 00 00 00 01 06"));
- vector<boost::shared_ptr<cygnal::Element> > headers4 = http.parseEchoRequest(*hex_req4);
+ std::shared_ptr<Buffer> hex_req4(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 02 2f 31 00 00 00 06 0a 00 00 00 01 06"));
+ vector<std::shared_ptr<cygnal::Element> > headers4 = http.parseEchoRequest(*hex_req4);
if ((strncmp(headers4[0]->getName(), "echo", 4) == 0)
&& (strncmp(headers4[1]->getName(), "/1", 2) == 0)
&& (headers4[3]->getType() == Element::UNDEFINED_AMF0)) {
@@ -786,7 +786,7 @@ test_rtmpt (void)
runtest.fail("HTTP::parseEchoRequest(UNDEFINED Object)");
}
// UNDEFINED Object response
- boost::shared_ptr<Buffer> hex_res4(new Buffer("00 00 00 00 00 01 00 0b 2f 31 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 05"));
+ std::shared_ptr<Buffer> hex_res4(new Buffer("00 00 00 00 00 01 00 0b 2f 31 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 05"));
cygnal::Buffer &buf4 = http.formatEchoResponse(headers4[1]->getName(), *headers4[3]);
string head4(reinterpret_cast<const char *>(buf4.reference()));
const char *ptr4a = reinterpret_cast<const char *>(hex_res4->reference());
@@ -798,8 +798,8 @@ test_rtmpt (void)
}
// Date Object request
- boost::shared_ptr<Buffer> hex_req5(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 02 2f 31 00 00 00 10 0a 00 00 00 01 0b 42 71 e4 ca 4e 32 d0 00 01 a4"));
- vector<boost::shared_ptr<cygnal::Element> > headers5 = http.parseEchoRequest(*hex_req5);
+ std::shared_ptr<Buffer> hex_req5(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 02 2f 31 00 00 00 10 0a 00 00 00 01 0b 42 71 e4 ca 4e 32 d0 00 01 a4"));
+ vector<std::shared_ptr<cygnal::Element> > headers5 = http.parseEchoRequest(*hex_req5);
if (headers5[3] == 0) {
runtest.unresolved("HTTP::parseEchoRequest(DATE Object)");
} else {
@@ -816,7 +816,7 @@ test_rtmpt (void)
}
}
// Date Object response
- boost::shared_ptr<Buffer> hex_res5(new Buffer("00 00 00 00 00 01 00 0b 2f 31 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 0b 42 71 e4 ca 4e 32 d0 00 fe 5c"));
+ std::shared_ptr<Buffer> hex_res5(new Buffer("00 00 00 00 00 01 00 0b 2f 31 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 0b 42 71 e4 ca 4e 32 d0 00 fe 5c"));
if (headers5[3] == 0) {
runtest.unresolved("HTTP::formatEchoResponse(DATE Object)");
} else {
@@ -832,8 +832,8 @@ test_rtmpt (void)
}
// Date Array request
- boost::shared_ptr<Buffer> hex_req6(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 02 2f 32 00 00 00 18 0a 00 00 00 01 0a 00 00 00 02 0b 42 71 e4 ca 4e 32 d0 00 01 a4 07 00 01"));
- vector<boost::shared_ptr<cygnal::Element> > headers6 = http.parseEchoRequest(*hex_req6);
+ std::shared_ptr<Buffer> hex_req6(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 02 2f 32 00 00 00 18 0a 00 00 00 01 0a 00 00 00 02 0b 42 71 e4 ca 4e 32 d0 00 01 a4 07 00 01"));
+ vector<std::shared_ptr<cygnal::Element> > headers6 = http.parseEchoRequest(*hex_req6);
if (headers6[3] == 0) {
runtest.unresolved("HTTP::parseEchoRequest(DATE Array)");
} else {
@@ -846,11 +846,11 @@ test_rtmpt (void)
}
}
// Date Array response
- boost::shared_ptr<Buffer> hex_res6(new Buffer("00 00 00 00 00 01 00 0b 2f 32 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 0a 00 00 00 02 0b 42 71 e4 ca 4e 32 d0 00 fe 5c 0b 42 71 e4 ca 4e 32 d0 00 fe 5c"));
+ std::shared_ptr<Buffer> hex_res6(new Buffer("00 00 00 00 00 01 00 0b 2f 32 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 0a 00 00 00 02 0b 42 71 e4 ca 4e 32 d0 00 fe 5c 0b 42 71 e4 ca 4e 32 d0 00 fe 5c"));
// Undefined Array request
- boost::shared_ptr<Buffer> hex_req7(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 02 2f 31 00 00 00 0a 0a 00 00 00 01 0a 00 00 00 00"));
- vector<boost::shared_ptr<cygnal::Element> > headers7 = http.parseEchoRequest(*hex_req7);
+ std::shared_ptr<Buffer> hex_req7(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 02 2f 31 00 00 00 0a 0a 00 00 00 01 0a 00 00 00 00"));
+ vector<std::shared_ptr<cygnal::Element> > headers7 = http.parseEchoRequest(*hex_req7);
if ((strncmp(headers7[0]->getName(), "echo", 4) == 0)
&& (strncmp(headers7[1]->getName(), "/1", 2) == 0)
&& (headers7[3]->getType() == Element::STRICT_ARRAY_AMF0)) {
@@ -859,7 +859,7 @@ test_rtmpt (void)
runtest.fail("HTTP::parseEchoRequest(Undefined Strict Array)");
}
// Undefined Array response
- boost::shared_ptr<Buffer> hex_res7(new Buffer("00 00 00 00 00 01 00 0b 2f 31 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 0a 00 00 00 00"));
+ std::shared_ptr<Buffer> hex_res7(new Buffer("00 00 00 00 00 01 00 0b 2f 31 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 0a 00 00 00 00"));
cygnal::Buffer &buf7 = http.formatEchoResponse(headers7[1]->getName(), *headers7[3]);
// cerr << hexify(hex_res7->reference(), hex_res7->allocated(), false) << endl;
@@ -875,13 +875,13 @@ test_rtmpt (void)
// Number 1
// Array request
- boost::shared_ptr<Buffer> hex_req8(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 02 2f 32 00 00 00 13 0a 00 00 00 01 0a 00 00 00 01 00 3f f0 00 00 00 00 00 00"));
- vector<boost::shared_ptr<cygnal::Element> > headers8 = http.parseEchoRequest(*hex_req8);
+ std::shared_ptr<Buffer> hex_req8(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 02 2f 32 00 00 00 13 0a 00 00 00 01 0a 00 00 00 01 00 3f f0 00 00 00 00 00 00"));
+ vector<std::shared_ptr<cygnal::Element> > headers8 = http.parseEchoRequest(*hex_req8);
if (headers8[3] == 0) {
runtest.unresolved("HTTP::parseEchoRequest(Simple Strict Array of Numbers, 1 item)");
} else {
if (headers8[3]->propertySize() > 0) {
- std::vector<boost::shared_ptr<cygnal::Element> > props8 = headers8[3]->getProperties();
+ std::vector<std::shared_ptr<cygnal::Element> > props8 = headers8[3]->getProperties();
if ((strncmp(headers8[0]->getName(), "echo", 4) == 0)
&& (strncmp(headers8[1]->getName(), "/2", 2) == 0)
&& (headers8[3]->getType() == Element::STRICT_ARRAY_AMF0)
@@ -897,7 +897,7 @@ test_rtmpt (void)
}
}
// Undefined Array response
- boost::shared_ptr<Buffer> hex_res8(new Buffer("00 00 00 00 00 01 00 0b 2f 32 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 0a 00 00 00 01 00 3f f0 00 00 00 00 00 00"));
+ std::shared_ptr<Buffer> hex_res8(new Buffer("00 00 00 00 00 01 00 0b 2f 32 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 0a 00 00 00 01 00 3f f0 00 00 00 00 00 00"));
cygnal::Buffer &buf8 = http.formatEchoResponse(headers8[1]->getName(), *headers8[3]);
// cerr << hexify(hex_res8->reference()+30, amf::AMF0_NUMBER_SIZE, false) << endl;
// cerr << hexify(buf8.reference() + 124, amf::AMF0_NUMBER_SIZE, false) << endl;
@@ -912,8 +912,8 @@ test_rtmpt (void)
// Number 1,2
// Array request
- boost::shared_ptr<Buffer> hex_req9(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 02 2f 33 00 00 00 1c 0a 00 00 00 01 0a 00 00 00 02 00 3f f0 00 00 00 00 00 00 00 40 00 00 00 00 00 00 00"));
- vector<boost::shared_ptr<cygnal::Element> > headers9 = http.parseEchoRequest(*hex_req9);
+ std::shared_ptr<Buffer> hex_req9(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 02 2f 33 00 00 00 1c 0a 00 00 00 01 0a 00 00 00 02 00 3f f0 00 00 00 00 00 00 00 40 00 00 00 00 00 00 00"));
+ vector<std::shared_ptr<cygnal::Element> > headers9 = http.parseEchoRequest(*hex_req9);
if ((strncmp(headers9[0]->getName(), "echo", 4) == 0)
&& (strncmp(headers9[1]->getName(), "/3", 2) == 0)
&& (headers9[3]->getType() == Element::STRICT_ARRAY_AMF0)) {
@@ -923,7 +923,7 @@ test_rtmpt (void)
runtest.fail("HTTP::parseEchoRequest(Simple Strict Array of Numbers, 2 items)");
}
// Undefined Array response
- boost::shared_ptr<Buffer> hex_res9(new Buffer("00 00 00 00 00 01 00 0b 2f 33 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 0a 00 00 00 02 00 3f f0 00 00 00 00 00 00 00 40 00 00 00 00 00 00 00"));
+ std::shared_ptr<Buffer> hex_res9(new Buffer("00 00 00 00 00 01 00 0b 2f 33 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 0a 00 00 00 02 00 3f f0 00 00 00 00 00 00 00 40 00 00 00 00 00 00 00"));
cygnal::Buffer &buf9 = http.formatEchoResponse(headers9[1]->getName(), *headers9[3]);
string head9(reinterpret_cast<const char *>(buf9.reference()));
const char *ptr9a = reinterpret_cast<const char *>(hex_res9->reference());
@@ -936,8 +936,8 @@ test_rtmpt (void)
// Number 1,2,3
// Array request
- boost::shared_ptr<Buffer> hex_req10(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 02 2f 34 00 00 00 25 0a 00 00 00 01 0a 00 00 00 03 00 3f f0 00 00 00 00 00 00 00 40 00 00 00 00 00 00 00 00 40 08 00 00 00 00 00 00"));
- vector<boost::shared_ptr<cygnal::Element> > headers10 = http.parseEchoRequest(*hex_req10);
+ std::shared_ptr<Buffer> hex_req10(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 02 2f 34 00 00 00 25 0a 00 00 00 01 0a 00 00 00 03 00 3f f0 00 00 00 00 00 00 00 40 00 00 00 00 00 00 00 00 40 08 00 00 00 00 00 00"));
+ vector<std::shared_ptr<cygnal::Element> > headers10 = http.parseEchoRequest(*hex_req10);
if ((strncmp(headers10[0]->getName(), "echo", 4) == 0)
&& (strncmp(headers10[1]->getName(), "/4", 2) == 0)
&& (headers10[3]->getType() == Element::STRICT_ARRAY_AMF0)) {
@@ -947,7 +947,7 @@ test_rtmpt (void)
runtest.fail("HTTP::parseEchoRequest(Simple Strict Array of Numbers, 3 items)");
}
// Undefined Array response
- boost::shared_ptr<Buffer> hex_res10(new Buffer("00 00 00 00 00 01 00 0b 2f 34 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 0a 00 00 00 03 00 3f f0 00 00 00 00 00 00 00 40 00 00 00 00 00 00 00 00 40 08 00 00 00 00 00 00"));
+ std::shared_ptr<Buffer> hex_res10(new Buffer("00 00 00 00 00 01 00 0b 2f 34 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 0a 00 00 00 03 00 3f f0 00 00 00 00 00 00 00 40 00 00 00 00 00 00 00 00 40 08 00 00 00 00 00 00"));
cygnal::Buffer &buf10 = http.formatEchoResponse(headers10[1]->getName(), *headers10[3]);
string head10(reinterpret_cast<const char *>(buf10.reference()));
const char *ptr10a = reinterpret_cast<const char *>(hex_res10->reference());
@@ -959,8 +959,8 @@ test_rtmpt (void)
}
// Number 0 Request
- boost::shared_ptr<Buffer> hex_req11(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 02 2f 31 00 00 00 0e 0a 00 00 00 01 00 00 00 00 00 00 00 00 00"));
- vector<boost::shared_ptr<cygnal::Element> > headers11 = http.parseEchoRequest(*hex_req11);
+ std::shared_ptr<Buffer> hex_req11(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 02 2f 31 00 00 00 0e 0a 00 00 00 01 00 00 00 00 00 00 00 00 00"));
+ vector<std::shared_ptr<cygnal::Element> > headers11 = http.parseEchoRequest(*hex_req11);
if ((strncmp(headers11[0]->getName(), "echo", 4) == 0)
&& (strncmp(headers11[1]->getName(), "/1", 2) == 0)
&& (headers11[3]->getType() == Element::NUMBER_AMF0)
@@ -970,7 +970,7 @@ test_rtmpt (void)
runtest.fail("HTTP::parseEchoRequest(Number 0)");
}
// Number 0 Response
- boost::shared_ptr<Buffer> hex_res11(new Buffer("00 00 00 00 00 01 00 0b 2f 31 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 00 00 00 00 00 00 00 00 00"));
+ std::shared_ptr<Buffer> hex_res11(new Buffer("00 00 00 00 00 01 00 0b 2f 31 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 00 00 00 00 00 00 00 00 00"));
cygnal::Buffer &buf11 = http.formatEchoResponse(headers11[1]->getName(), *headers11[3]);
string head11(reinterpret_cast<const char *>(buf11.reference()));
const char *ptr11a = reinterpret_cast<const char *>(hex_res11->reference());
@@ -982,8 +982,8 @@ test_rtmpt (void)
}
// Number 1 Request
- boost::shared_ptr<Buffer> hex_req12(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 02 2f 32 00 00 00 0e 0a 00 00 00 01 00 3f f0 00 00 00 00 00 00"));
- vector<boost::shared_ptr<cygnal::Element> > headers12 = http.parseEchoRequest(*hex_req12);
+ std::shared_ptr<Buffer> hex_req12(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 02 2f 32 00 00 00 0e 0a 00 00 00 01 00 3f f0 00 00 00 00 00 00"));
+ vector<std::shared_ptr<cygnal::Element> > headers12 = http.parseEchoRequest(*hex_req12);
if ((strncmp(headers12[0]->getName(), "echo", 4) == 0)
&& (strncmp(headers12[1]->getName(), "/2", 2) == 0)
&& (headers12[3]->getType() == Element::NUMBER_AMF0)
@@ -993,7 +993,7 @@ test_rtmpt (void)
runtest.fail("HTTP::parseEchoRequest(Number 1)");
}
// Number 1 Response
- boost::shared_ptr<Buffer> hex_res12(new Buffer("00 00 00 00 00 01 00 0b 2f 32 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 00 3f f0 00 00 00 00 00 00"));
+ std::shared_ptr<Buffer> hex_res12(new Buffer("00 00 00 00 00 01 00 0b 2f 32 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 00 3f f0 00 00 00 00 00 00"));
cygnal::Buffer &buf12 = http.formatEchoResponse(headers12[1]->getName(), *headers12[3]);
string head12(reinterpret_cast<const char *>(buf12.reference()));
const char *ptr12a = reinterpret_cast<const char *>(hex_res12->reference());
@@ -1005,8 +1005,8 @@ test_rtmpt (void)
}
// Number -1 Request
- boost::shared_ptr<Buffer> hex_req13(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 02 2f 33 00 00 00 0e 0a 00 00 00 01 00 bf f0 00 00 00 00 00 00"));
- vector<boost::shared_ptr<cygnal::Element> > headers13 = http.parseEchoRequest(*hex_req13);
+ std::shared_ptr<Buffer> hex_req13(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 02 2f 33 00 00 00 0e 0a 00 00 00 01 00 bf f0 00 00 00 00 00 00"));
+ vector<std::shared_ptr<cygnal::Element> > headers13 = http.parseEchoRequest(*hex_req13);
if ((strncmp(headers13[0]->getName(), "echo", 4) == 0)
&& (strncmp(headers13[1]->getName(), "/3", 2) == 0)
&& (headers13[3]->getType() == Element::NUMBER_AMF0)
@@ -1016,7 +1016,7 @@ test_rtmpt (void)
runtest.fail("HTTP::parseEchoRequest(Number -1)");
}
// Number -1 Response
- boost::shared_ptr<Buffer> hex_res13(new Buffer("00 00 00 00 00 01 00 0b 2f 33 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 00 bf f0 00 00 00 00 00 00"));
+ std::shared_ptr<Buffer> hex_res13(new Buffer("00 00 00 00 00 01 00 0b 2f 33 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 00 bf f0 00 00 00 00 00 00"));
cygnal::Buffer &buf13 = http.formatEchoResponse(headers13[1]->getName(), *headers13[3]);
string head13(reinterpret_cast<const char *>(buf13.reference()));
const char *ptr13a = reinterpret_cast<const char *>(hex_res13->reference());
@@ -1028,8 +1028,8 @@ test_rtmpt (void)
}
// Number 256 Request
- boost::shared_ptr<Buffer> hex_req14(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 02 2f 34 00 00 00 0e 0a 00 00 00 01 00 40 70 00 00 00 00 00 00"));
- vector<boost::shared_ptr<cygnal::Element> > headers14 = http.parseEchoRequest(*hex_req14);
+ std::shared_ptr<Buffer> hex_req14(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 02 2f 34 00 00 00 0e 0a 00 00 00 01 00 40 70 00 00 00 00 00 00"));
+ vector<std::shared_ptr<cygnal::Element> > headers14 = http.parseEchoRequest(*hex_req14);
if ((strncmp(headers14[0]->getName(), "echo", 4) == 0)
&& (strncmp(headers14[1]->getName(), "/4", 2) == 0)
&& (headers14[3]->getType() == Element::NUMBER_AMF0)
@@ -1039,7 +1039,7 @@ test_rtmpt (void)
runtest.fail("HTTP::parseEchoRequest(Number 256)");
}
// Number 256 Response
- boost::shared_ptr<Buffer> hex_res14(new Buffer("00 00 00 00 00 01 00 0b 2f 34 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 00 40 70 00 00 00 00 00 00"));
+ std::shared_ptr<Buffer> hex_res14(new Buffer("00 00 00 00 00 01 00 0b 2f 34 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 00 40 70 00 00 00 00 00 00"));
cygnal::Buffer &buf14 = http.formatEchoResponse(headers14[1]->getName(), *headers14[3]);
string head14(reinterpret_cast<const char *>(buf14.reference()));
const char *ptr14a = reinterpret_cast<const char *>(hex_res14->reference());
@@ -1051,8 +1051,8 @@ test_rtmpt (void)
}
// Number -256 Request
- boost::shared_ptr<Buffer> hex_req15(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 02 2f 35 00 00 00 0e 0a 00 00 00 01 00 c0 70 00 00 00 00 00 00"));
- vector<boost::shared_ptr<cygnal::Element> > headers15 = http.parseEchoRequest(*hex_req15);
+ std::shared_ptr<Buffer> hex_req15(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 02 2f 35 00 00 00 0e 0a 00 00 00 01 00 c0 70 00 00 00 00 00 00"));
+ vector<std::shared_ptr<cygnal::Element> > headers15 = http.parseEchoRequest(*hex_req15);
if ((strncmp(headers15[0]->getName(), "echo", 4) == 0)
&& (strncmp(headers15[1]->getName(), "/5", 2) == 0)
&& (headers15[3]->getType() == Element::NUMBER_AMF0)
@@ -1062,7 +1062,7 @@ test_rtmpt (void)
runtest.fail("HTTP::parseEchoRequest(Number -256)");
}
// Number -256 Response
- boost::shared_ptr<Buffer> hex_res15(new Buffer("00 00 00 00 00 01 00 0b 2f 35 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 00 c0 70 00 00 00 00 00 00"));
+ std::shared_ptr<Buffer> hex_res15(new Buffer("00 00 00 00 00 01 00 0b 2f 35 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 00 c0 70 00 00 00 00 00 00"));
cygnal::Buffer &buf15 = http.formatEchoResponse(headers15[1]->getName(), *headers15[3]);
string head15(reinterpret_cast<const char *>(buf15.reference()));
const char *ptr15a = reinterpret_cast<const char *>(hex_res15->reference());
@@ -1074,8 +1074,8 @@ test_rtmpt (void)
}
// Number 65536 Request
- boost::shared_ptr<Buffer> hex_req16(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 02 2f 36 00 00 00 0e 0a 00 00 00 01 00 40 f0 00 00 00 00 00 00"));
- vector<boost::shared_ptr<cygnal::Element> > headers16 = http.parseEchoRequest(*hex_req16);
+ std::shared_ptr<Buffer> hex_req16(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 02 2f 36 00 00 00 0e 0a 00 00 00 01 00 40 f0 00 00 00 00 00 00"));
+ vector<std::shared_ptr<cygnal::Element> > headers16 = http.parseEchoRequest(*hex_req16);
if ((strncmp(headers16[0]->getName(), "echo", 4) == 0)
&& (strncmp(headers16[1]->getName(), "/6", 2) == 0)
&& (headers16[3]->getType() == Element::NUMBER_AMF0)
@@ -1085,7 +1085,7 @@ test_rtmpt (void)
runtest.fail("HTTP::parseEchoRequest(Number 65536)");
}
// Number 65536 Response
- boost::shared_ptr<Buffer> hex_res16(new Buffer("00 00 00 00 00 01 00 0b 2f 36 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 00 40 f0 00 00 00 00 00 00"));
+ std::shared_ptr<Buffer> hex_res16(new Buffer("00 00 00 00 00 01 00 0b 2f 36 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 00 40 f0 00 00 00 00 00 00"));
cygnal::Buffer &buf16 = http.formatEchoResponse(headers16[1]->getName(), *headers16[3]);
string head16(reinterpret_cast<const char *>(buf16.reference()));
const char *ptr16a = reinterpret_cast<const char *>(hex_res16->reference());
@@ -1097,8 +1097,8 @@ test_rtmpt (void)
}
// Number -655536 Request
- boost::shared_ptr<Buffer> hex_req16x(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 02 2f 37 00 00 00 0e 0a 00 00 00 01 00 c0 f0 00 00 00 00 00 00"));
- vector<boost::shared_ptr<cygnal::Element> > headers16x = http.parseEchoRequest(*hex_req16x);
+ std::shared_ptr<Buffer> hex_req16x(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 02 2f 37 00 00 00 0e 0a 00 00 00 01 00 c0 f0 00 00 00 00 00 00"));
+ vector<std::shared_ptr<cygnal::Element> > headers16x = http.parseEchoRequest(*hex_req16x);
if ((strncmp(headers16x[0]->getName(), "echo", 4) == 0)
&& (strncmp(headers16x[1]->getName(), "/7", 2) == 0)
&& (headers16x[3]->getType() == Element::NUMBER_AMF0)
@@ -1108,7 +1108,7 @@ test_rtmpt (void)
runtest.fail("HTTP::parseEchoRequest(Number -65536)");
}
// Number -655536 Response
- boost::shared_ptr<Buffer> hex_res17(new Buffer("00 00 00 00 00 01 00 0b 2f 37 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 00 c0 f0 00 00 00 00 00 00"));
+ std::shared_ptr<Buffer> hex_res17(new Buffer("00 00 00 00 00 01 00 0b 2f 37 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 00 c0 f0 00 00 00 00 00 00"));
cygnal::Buffer &buf17 = http.formatEchoResponse(headers16x[1]->getName(), *headers16x[3]);
string head17(reinterpret_cast<const char *>(buf17.reference()));
const char *ptr17a = reinterpret_cast<const char *>(hex_res17->reference());
@@ -1120,8 +1120,8 @@ test_rtmpt (void)
}
// Number 0 Request
- boost::shared_ptr<Buffer> hex_req18(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 02 2f 38 00 00 00 0e 0a 00 00 00 01 00 00 00 00 00 00 00 00 00"));
- vector<boost::shared_ptr<cygnal::Element> > headers18 = http.parseEchoRequest(*hex_req18);
+ std::shared_ptr<Buffer> hex_req18(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 02 2f 38 00 00 00 0e 0a 00 00 00 01 00 00 00 00 00 00 00 00 00"));
+ vector<std::shared_ptr<cygnal::Element> > headers18 = http.parseEchoRequest(*hex_req18);
if ((strncmp(headers18[0]->getName(), "echo", 4) == 0)
&& (strncmp(headers18[1]->getName(), "/8", 2) == 0)
&& (headers18[3]->getType() == Element::NUMBER_AMF0)
@@ -1131,7 +1131,7 @@ test_rtmpt (void)
runtest.fail("HTTP::parseEchoRequest(Number 0)");
}
// Number 0 Response
- boost::shared_ptr<Buffer> hex_res18(new Buffer("00 00 00 00 00 01 00 0b 2f 38 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 00 00 00 00 00 00 00 00 00"));
+ std::shared_ptr<Buffer> hex_res18(new Buffer("00 00 00 00 00 01 00 0b 2f 38 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 00 00 00 00 00 00 00 00 00"));
cygnal::Buffer &buf18 = http.formatEchoResponse(headers18[1]->getName(), *headers18[3]);
string head18(reinterpret_cast<const char *>(buf18.reference()));
const char *ptr18a = reinterpret_cast<const char *>(hex_res18->reference());
@@ -1143,8 +1143,8 @@ test_rtmpt (void)
}
// Number 1.5 Request
- boost::shared_ptr<Buffer> hex_req19(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 02 2f 39 00 00 00 0e 0a 00 00 00 01 00 3f f8 00 00 00 00 00 00"));
- vector<boost::shared_ptr<cygnal::Element> > headers19 = http.parseEchoRequest(*hex_req19);
+ std::shared_ptr<Buffer> hex_req19(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 02 2f 39 00 00 00 0e 0a 00 00 00 01 00 3f f8 00 00 00 00 00 00"));
+ vector<std::shared_ptr<cygnal::Element> > headers19 = http.parseEchoRequest(*hex_req19);
if ((strncmp(headers19[0]->getName(), "echo", 4) == 0)
&& (strncmp(headers19[1]->getName(), "/9", 2) == 0)
&& (headers19[3]->getType() == Element::NUMBER_AMF0)
@@ -1154,7 +1154,7 @@ test_rtmpt (void)
runtest.fail("HTTP::parseEchoRequest(Number 1.5)");
}
// Number 1.5 Response
- boost::shared_ptr<Buffer> hex_res19(new Buffer("00 00 00 00 00 01 00 0b 2f 39 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 00 3f f8 00 00 00 00 00 00"));
+ std::shared_ptr<Buffer> hex_res19(new Buffer("00 00 00 00 00 01 00 0b 2f 39 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 00 3f f8 00 00 00 00 00 00"));
cygnal::Buffer &buf19 = http.formatEchoResponse(headers19[1]->getName(), *headers19[3]);
string head19(reinterpret_cast<const char *>(buf19.reference()));
const char *ptr19a = reinterpret_cast<const char *>(hex_res19->reference());
@@ -1166,8 +1166,8 @@ test_rtmpt (void)
}
// Number -1.5 Request
- boost::shared_ptr<Buffer> hex_req20(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 03 2f 31 30 00 00 00 0e 0a 00 00 00 01 00 bf f8 00 00 00 00 00 00"));
- vector<boost::shared_ptr<cygnal::Element> > headers20 = http.parseEchoRequest(*hex_req20);
+ std::shared_ptr<Buffer> hex_req20(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 03 2f 31 30 00 00 00 0e 0a 00 00 00 01 00 bf f8 00 00 00 00 00 00"));
+ vector<std::shared_ptr<cygnal::Element> > headers20 = http.parseEchoRequest(*hex_req20);
if ((strncmp(headers20[0]->getName(), "echo", 4) == 0)
&& (strncmp(headers20[1]->getName(), "/10", 2) == 0)
&& (headers20[3]->getType() == Element::NUMBER_AMF0)
@@ -1177,7 +1177,7 @@ test_rtmpt (void)
runtest.fail("HTTP::parseEchoRequest(Number -1.5)");
}
// Number -1.5 Response
- boost::shared_ptr<Buffer> hex_res20(new Buffer("00 00 00 00 00 01 00 0c 2f 31 30 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 00 bf f8 00 00 00 00 00 00"));
+ std::shared_ptr<Buffer> hex_res20(new Buffer("00 00 00 00 00 01 00 0c 2f 31 30 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 00 bf f8 00 00 00 00 00 00"));
cygnal::Buffer &buf20 = http.formatEchoResponse(headers20[1]->getName(), *headers20[3]);
string head20(reinterpret_cast<const char *>(buf20.reference()));
const char *ptr20a = reinterpret_cast<const char *>(hex_res20->reference());
@@ -1189,8 +1189,8 @@ test_rtmpt (void)
}
// Number NaN Request
- boost::shared_ptr<Buffer> hex_req21(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 03 2f 31 31 00 00 00 0e 0a 00 00 00 01 00 ff f8 00 00 00 00 00 00"));
- vector<boost::shared_ptr<cygnal::Element> > headers21 = http.parseEchoRequest(*hex_req21);
+ std::shared_ptr<Buffer> hex_req21(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 03 2f 31 31 00 00 00 0e 0a 00 00 00 01 00 ff f8 00 00 00 00 00 00"));
+ vector<std::shared_ptr<cygnal::Element> > headers21 = http.parseEchoRequest(*hex_req21);
if ((strncmp(headers21[0]->getName(), "echo", 4) == 0)
&& (strncmp(headers21[1]->getName(), "/11", 2) == 0)
&& (headers21[3]->getType() == Element::NUMBER_AMF0)
@@ -1200,7 +1200,7 @@ test_rtmpt (void)
runtest.fail("HTTP::parseEchoRequest(Number Nan)");
}
// Number NaN Response
- boost::shared_ptr<Buffer> hex_res21(new Buffer("00 00 00 00 00 01 00 0c 2f 31 31 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 00 ff f8 00 00 00 00 00 00"));
+ std::shared_ptr<Buffer> hex_res21(new Buffer("00 00 00 00 00 01 00 0c 2f 31 31 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 00 ff f8 00 00 00 00 00 00"));
cygnal::Buffer &buf21 = http.formatEchoResponse(headers21[1]->getName(), *headers21[3]);
string head21(reinterpret_cast<const char *>(buf21.reference()));
const char *ptr21a = reinterpret_cast<const char *>(hex_res21->reference());
@@ -1212,11 +1212,11 @@ test_rtmpt (void)
}
// Number -Infinity Request
- boost::shared_ptr<Buffer> hex_req22(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 03 2f 31 32 00 00 00 0e 0a 00 00 00 01 00 ff f0 00 00 00 00 00 00"));
+ std::shared_ptr<Buffer> hex_req22(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 03 2f 31 32 00 00 00 0e 0a 00 00 00 01 00 ff f0 00 00 00 00 00 00"));
// Number Infinity Request
- boost::shared_ptr<Buffer> hex_req22x(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 03 2f 31 34 00 00 00 0e 0a 00 00 00 01 00 7f ef ff ff ff ff ff ff"));
- vector<boost::shared_ptr<cygnal::Element> > headers22x = http.parseEchoRequest(*hex_req22x);
+ std::shared_ptr<Buffer> hex_req22x(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 03 2f 31 34 00 00 00 0e 0a 00 00 00 01 00 7f ef ff ff ff ff ff ff"));
+ vector<std::shared_ptr<cygnal::Element> > headers22x = http.parseEchoRequest(*hex_req22x);
if ((strncmp(headers22x[0]->getName(), "echo", 4) == 0)
&& (strncmp(headers22x[1]->getName(), "/14", 2) == 0)
&& (headers22x[3]->getType() == Element::NUMBER_AMF0)
@@ -1226,7 +1226,7 @@ test_rtmpt (void)
runtest.fail("HTTP::parseEchoRequest(Number Infinity)");
}
// Number Infinity Response
- boost::shared_ptr<Buffer> hex_res23(new Buffer("00 00 00 00 00 01 00 0c 2f 31 33 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 00 7f f0 00 00 00 00 00 00"));
+ std::shared_ptr<Buffer> hex_res23(new Buffer("00 00 00 00 00 01 00 0c 2f 31 33 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 00 7f f0 00 00 00 00 00 00"));
#if 0
cygnal::Buffer &buf23 = http.formatEchoResponse(headers22x[1]->getName(), *headers22x[3]);
string head23(reinterpret_cast<const char *>(buf23.reference()));
@@ -1240,21 +1240,21 @@ test_rtmpt (void)
#endif
// Number 1.79769313486231e+308 Request
- boost::shared_ptr<Buffer> hex_req24(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 03 2f 31 35 00 00 00 0e 0a 00 00 00 01 00 00 00 00 00 00 00 00 01"));
+ std::shared_ptr<Buffer> hex_req24(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 03 2f 31 35 00 00 00 0e 0a 00 00 00 01 00 00 00 00 00 00 00 00 01"));
// Number 1.79769313486231e+308 Response
- boost::shared_ptr<Buffer> hex_res24(new Buffer("00 00 00 00 00 01 00 0c 2f 31 34 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 00 7f ef ff ff ff ff ff ff"));
+ std::shared_ptr<Buffer> hex_res24(new Buffer("00 00 00 00 00 01 00 0c 2f 31 34 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 00 7f ef ff ff ff ff ff ff"));
// Number 4.940656484124654e-324 Request
- boost::shared_ptr<Buffer> hex_req25(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 03 2f 31 36 00 00 00 0e 0a 00 00 00 01 00 00 00 00 00 00 00 00 00"));
+ std::shared_ptr<Buffer> hex_req25(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 03 2f 31 36 00 00 00 0e 0a 00 00 00 01 00 00 00 00 00 00 00 00 00"));
// Number 4.940656484124654e-324 Response
- boost::shared_ptr<Buffer> hex_res25(new Buffer("00 00 00 00 00 01 00 0c 2f 31 35 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 00 00 00 00 00 00 00 00 01"));
+ std::shared_ptr<Buffer> hex_res25(new Buffer("00 00 00 00 00 01 00 0c 2f 31 35 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 00 00 00 00 00 00 00 00 01"));
// Number 1,2,1,2
// Array request
- boost::shared_ptr<Buffer> hex_req26(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 02 2f 35 00 00 00 33 0a 00 00 00 01 0a 00 00 00 03 00 3f f0 00 00 00 00 00 00 00 40 00 00 00 00 00 00 00 0a 00 00 00 02 00 3f f0 00 00 00 00 00 00 00 40 00 00 00 00 00 00 00"));
- vector<boost::shared_ptr<cygnal::Element> > headers26 = http.parseEchoRequest(*hex_req26);
- std::vector<boost::shared_ptr<cygnal::Element> > props26 = headers26[3]->getProperties();
- std::vector<boost::shared_ptr<cygnal::Element> > props26a = props26[2]->getProperties();
+ std::shared_ptr<Buffer> hex_req26(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 02 2f 35 00 00 00 33 0a 00 00 00 01 0a 00 00 00 03 00 3f f0 00 00 00 00 00 00 00 40 00 00 00 00 00 00 00 0a 00 00 00 02 00 3f f0 00 00 00 00 00 00 00 40 00 00 00 00 00 00 00"));
+ vector<std::shared_ptr<cygnal::Element> > headers26 = http.parseEchoRequest(*hex_req26);
+ std::vector<std::shared_ptr<cygnal::Element> > props26 = headers26[3]->getProperties();
+ std::vector<std::shared_ptr<cygnal::Element> > props26a = props26[2]->getProperties();
if ((strncmp(headers26[0]->getName(), "echo", 4) == 0)
&& (strncmp(headers26[1]->getName(), "/5", 2) == 0)
&& (headers26[3]->getType() == Element::STRICT_ARRAY_AMF0)
@@ -1269,7 +1269,7 @@ test_rtmpt (void)
runtest.fail("HTTP::parseEchoRequest(Strict Array of Numbers, 3 items)");
}
// Undefined Array response
- boost::shared_ptr<Buffer> hex_res26(new Buffer("00 00 00 00 00 01 00 0b 2f 35 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 0a 00 00 00 03 00 3f f0 00 00 00 00 00 00 00 40 00 00 00 00 00 00 00 0a 00 00 00 02 00 3f f0 00 00 00 00 00 00 00 40 00 00 00 00 00 00 00"));
+ std::shared_ptr<Buffer> hex_res26(new Buffer("00 00 00 00 00 01 00 0b 2f 35 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 0a 00 00 00 03 00 3f f0 00 00 00 00 00 00 00 40 00 00 00 00 00 00 00 0a 00 00 00 02 00 3f f0 00 00 00 00 00 00 00 40 00 00 00 00 00 00 00"));
cygnal::Buffer &buf26 = http.formatEchoResponse(headers26[1]->getName(), *headers26[3]);
string head26(reinterpret_cast<const char *>(buf26.reference()));
// cerr << hexify(hex_res26->reference()+30, amf::AMF0_NUMBER_SIZE, false) << endl;
@@ -1284,9 +1284,9 @@ test_rtmpt (void)
// Number 1,,,,,,,100
// Array request
- boost::shared_ptr<Buffer> hex_req27(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 02 2f 36 00 00 00 7f 0a 00 00 00 01 0a 00 00 00 65 00 3f f0 00 00 00 00 00 00 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 00 40 59 00 00 00 00 00 00"));
- vector<boost::shared_ptr<cygnal::Element> > headers27 = http.parseEchoRequest(*hex_req27);
- std::vector<boost::shared_ptr<cygnal::Element> > props27 = headers27[3]->getProperties();
+ std::shared_ptr<Buffer> hex_req27(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 02 2f 36 00 00 00 7f 0a 00 00 00 01 0a 00 00 00 65 00 3f f0 00 00 00 00 00 00 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 00 40 59 00 00 00 00 00 00"));
+ vector<std::shared_ptr<cygnal::Element> > headers27 = http.parseEchoRequest(*hex_req27);
+ std::vector<std::shared_ptr<cygnal::Element> > props27 = headers27[3]->getProperties();
if ((strncmp(headers27[0]->getName(), "echo", 4) == 0)
&& (strncmp(headers27[1]->getName(), "/6", 2) == 0)
&& (headers27[3]->getType() == Element::STRICT_ARRAY_AMF0)
@@ -1301,7 +1301,7 @@ test_rtmpt (void)
runtest.fail("HTTP::parseEchoRequest(Strict Array - Number, undefines, Number)");
}
// Undefined Array response
- boost::shared_ptr<Buffer> hex_res27(new Buffer("00 00 00 00 00 01 00 0b 2f 36 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 08 00 00 00 66 00 01 30 00 3f f0 00 00 00 00 00 00 00 03 31 30 30 00 40 59 00 00 00 00 00 00 00 06 6c 65 6e 67 74 68 00 40 59 80 00 00 00 00 00 00 00 09"));
+ std::shared_ptr<Buffer> hex_res27(new Buffer("00 00 00 00 00 01 00 0b 2f 36 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 08 00 00 00 66 00 01 30 00 3f f0 00 00 00 00 00 00 00 03 31 30 30 00 40 59 00 00 00 00 00 00 00 06 6c 65 6e 67 74 68 00 40 59 80 00 00 00 00 00 00 00 09"));
#if 0
cygnal::Buffer &buf27 = http.formatEchoResponse(headers27[1]->getName(), *headers27[3]);
string head27(reinterpret_cast<const char *>(buf27.reference()));
@@ -1318,9 +1318,9 @@ test_rtmpt (void)
#if 0
// Array request
- boost::shared_ptr<Buffer> hex_req28(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 02 2f 37 00 00 00 38 0a 00 00 00 01 08 00 00 00 01 00 06 6c 65 6e 67 74 68 00 3f f0 00 00 00 00 00 00 00 01 30 00 3f f0 00 00 00 00 00 00 00 03 6f 6e 65 00 3f f0 00 00 00 00 00 00 00 00 09"));
- vector<boost::shared_ptr<cygnal::Element> > headers28 = http.parseEchoRequest(*hex_req28);
- std::vector<boost::shared_ptr<cygnal::Element> > props28 = headers28[3]->getProperties();
+ std::shared_ptr<Buffer> hex_req28(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 02 2f 37 00 00 00 38 0a 00 00 00 01 08 00 00 00 01 00 06 6c 65 6e 67 74 68 00 3f f0 00 00 00 00 00 00 00 01 30 00 3f f0 00 00 00 00 00 00 00 03 6f 6e 65 00 3f f0 00 00 00 00 00 00 00 00 09"));
+ vector<std::shared_ptr<cygnal::Element> > headers28 = http.parseEchoRequest(*hex_req28);
+ std::vector<std::shared_ptr<cygnal::Element> > props28 = headers28[3]->getProperties();
if ((strncmp(headers28[0]->getName(), "echo", 4) == 0)
&& (strncmp(headers28[1]->getName(), "/7", 2) == 0)
&& (headers28[3]->getType() == Element::ECMA_ARRAY_AMF0)
@@ -1337,7 +1337,7 @@ test_rtmpt (void)
}
// Undefined Array response
- boost::shared_ptr<Buffer> hex_res28(new Buffer("00 00 00 00 00 01 00 0b 2f 37 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 08 00 00 00 01 00 03 6f 6e 65 00 3f f0 00 00 00 00 00 00 00 01 30 00 3f f0 00 00 00 00 00 00 00 06 6c 65 6e 67 74 68 00 3f f0 00 00 00 00 00 00 00 00 09"));
+ std::shared_ptr<Buffer> hex_res28(new Buffer("00 00 00 00 00 01 00 0b 2f 37 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 08 00 00 00 01 00 03 6f 6e 65 00 3f f0 00 00 00 00 00 00 00 01 30 00 3f f0 00 00 00 00 00 00 00 06 6c 65 6e 67 74 68 00 3f f0 00 00 00 00 00 00 00 00 09"));
cygnal::Buffer &buf28 = http.formatEchoResponse(headers28[1]->getName(), *headers28[3]);
// cerr << hexify(hex_res28->reference()+30, hex_res28->allocated()-30, false) << endl;
// cerr << hexify(buf28.reference() + 124, buf28.allocated() - 124, false) << endl;
@@ -1352,8 +1352,8 @@ test_rtmpt (void)
#endif
// NULL String request, ie.. no data
- boost::shared_ptr<Buffer> hex_req29(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 02 2f 31 00 00 00 08 0a 00 00 00 01 02 00 00"));
- vector<boost::shared_ptr<cygnal::Element> > headers29 = http.parseEchoRequest(*hex_req29);
+ std::shared_ptr<Buffer> hex_req29(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 02 2f 31 00 00 00 08 0a 00 00 00 01 02 00 00"));
+ vector<std::shared_ptr<cygnal::Element> > headers29 = http.parseEchoRequest(*hex_req29);
if ((strncmp(headers29[0]->getName(), "echo", 4) == 0)
&& (strncmp(headers29[1]->getName(), "/1", 2) == 0)
&& (headers29[3]->getType() == Element::STRING_AMF0)
@@ -1363,7 +1363,7 @@ test_rtmpt (void)
runtest.fail("HTTP::parseEchoRequest(NULL String)");
}
// NULL String response
- boost::shared_ptr<Buffer> hex_res29(new Buffer("00 00 00 00 00 01 00 0b 2f 31 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 02 00 00"));
+ std::shared_ptr<Buffer> hex_res29(new Buffer("00 00 00 00 00 01 00 0b 2f 31 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 02 00 00"));
#if 0 // FIXME: why does this core dump ?
cygnal::Buffer &buf29 = http.formatEchoResponse(headers29[1]->getName(), *headers29[3]);
string head29(reinterpret_cast<const char *>(buf29.reference()));
@@ -1378,8 +1378,8 @@ test_rtmpt (void)
// String request
// "Hello world!"
- boost::shared_ptr<Buffer> hex_req30(new Buffer(" 00 00 00 00 00 01 00 04 65 63 68 6f 00 02 2f 32 00 00 00 14 0a 00 00 00 01 02 00 0c 48 65 6c 6c 6f 20 77 6f 72 6c 64 21"));
- vector<boost::shared_ptr<cygnal::Element> > headers30 = http.parseEchoRequest(*hex_req30);
+ std::shared_ptr<Buffer> hex_req30(new Buffer(" 00 00 00 00 00 01 00 04 65 63 68 6f 00 02 2f 32 00 00 00 14 0a 00 00 00 01 02 00 0c 48 65 6c 6c 6f 20 77 6f 72 6c 64 21"));
+ vector<std::shared_ptr<cygnal::Element> > headers30 = http.parseEchoRequest(*hex_req30);
if ((strncmp(headers30[0]->getName(), "echo", 4) == 0)
&& (strncmp(headers30[1]->getName(), "/2", 2) == 0)
&& (headers30[3]->getType() == Element::STRING_AMF0)
@@ -1389,7 +1389,7 @@ test_rtmpt (void)
runtest.fail("HTTP::parseEchoRequest(Simple String)");
}
// String response
- boost::shared_ptr<Buffer> hex_res30(new Buffer("00 00 00 00 00 01 00 0b 2f 32 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 02 00 0c 48 65 6c 6c 6f 20 77 6f 72 6c 64 21"));
+ std::shared_ptr<Buffer> hex_res30(new Buffer("00 00 00 00 00 01 00 0b 2f 32 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 02 00 0c 48 65 6c 6c 6f 20 77 6f 72 6c 64 21"));
cygnal::Buffer &buf30 = http.formatEchoResponse(headers30[1]->getName(), *headers30[3]);
string head30(reinterpret_cast<const char *>(buf30.reference()));
const char *ptr30a = reinterpret_cast<const char *>(hex_res30->reference());
@@ -1402,13 +1402,13 @@ test_rtmpt (void)
// Array of Strings request
// test1,test2,test3,test4
- boost::shared_ptr<Buffer> hex_req31(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 02 2f 33 00 00 00 2a 0a 00 00 00 01 0a 00 00 00 04 02 00 05 74 65 73 74 31 02 00 05 74 65 73 74 32 02 00 05 74 65 73 74 33 02 00 05 74 65 73 74 34"));
- vector<boost::shared_ptr<cygnal::Element> > headers31 = http.parseEchoRequest(*hex_req31);
+ std::shared_ptr<Buffer> hex_req31(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 02 2f 33 00 00 00 2a 0a 00 00 00 01 0a 00 00 00 04 02 00 05 74 65 73 74 31 02 00 05 74 65 73 74 32 02 00 05 74 65 73 74 33 02 00 05 74 65 73 74 34"));
+ vector<std::shared_ptr<cygnal::Element> > headers31 = http.parseEchoRequest(*hex_req31);
if (headers31.size() == 0) {
runtest.unresolved("HTTP::parseEchoRequest(Simple String Array)");
} else {
- std::vector<boost::shared_ptr<cygnal::Element> > props31 = headers31[3]->getProperties();
+ std::vector<std::shared_ptr<cygnal::Element> > props31 = headers31[3]->getProperties();
if ((strncmp(headers31[0]->getName(), "echo", 4) == 0)
&& (strncmp(headers31[1]->getName(), "/3", 2) == 0)
&& (headers31[3]->getType() == Element::STRICT_ARRAY_AMF0)
@@ -1424,7 +1424,7 @@ test_rtmpt (void)
}
// Array of Strings response
- boost::shared_ptr<Buffer> hex_res31(new Buffer("00 00 00 00 00 01 00 0b 2f 33 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 0a 00 00 00 04 02 00 05 74 65 73 74 31 02 00 05 74 65 73 74 32 02 00 05 74 65 73 74 33 02 00 05 74 65 73 74 34"));
+ std::shared_ptr<Buffer> hex_res31(new Buffer("00 00 00 00 00 01 00 0b 2f 33 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 0a 00 00 00 04 02 00 05 74 65 73 74 31 02 00 05 74 65 73 74 32 02 00 05 74 65 73 74 33 02 00 05 74 65 73 74 34"));
cygnal::Buffer &buf31 = http.formatEchoResponse(headers31[1]->getName(), *headers31[3]);
string head31(reinterpret_cast<const char *>(buf31.reference()));
const char *ptr31a = reinterpret_cast<const char *>(hex_res31->reference());
@@ -1437,12 +1437,12 @@ test_rtmpt (void)
// Custom class Request
// [object EchoClass] [object.Object]
- boost::shared_ptr<Buffer> hex_req40(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 02 2f 31 00 00 00 26 0a 00 00 00 01 03 00 05 61 74 74 72 32 00 3f f0 00 00 00 00 00 00 00 05 61 74 74 72 31 02 00 03 6f 6e 65 00 00 09"));
- vector<boost::shared_ptr<cygnal::Element> > headers40 = http.parseEchoRequest(*hex_req40);
+ std::shared_ptr<Buffer> hex_req40(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 02 2f 31 00 00 00 26 0a 00 00 00 01 03 00 05 61 74 74 72 32 00 3f f0 00 00 00 00 00 00 00 05 61 74 74 72 31 02 00 03 6f 6e 65 00 00 09"));
+ vector<std::shared_ptr<cygnal::Element> > headers40 = http.parseEchoRequest(*hex_req40);
if (headers40[3] == 0) {
runtest.unresolved("HTTP::parseEchoRequest(object CustomClass)");
} else {
- std::vector<boost::shared_ptr<cygnal::Element> > props40 = headers40[3]->getProperties();
+ std::vector<std::shared_ptr<cygnal::Element> > props40 = headers40[3]->getProperties();
if ((strncmp(headers40[0]->getName(), "echo", 4) == 0)
&& (strncmp(headers40[1]->getName(), "/1", 2) == 0)
&& (headers40[3]->getType() == Element::OBJECT_AMF0)
@@ -1455,7 +1455,7 @@ test_rtmpt (void)
runtest.fail("HTTP::parseEchoRequest(object CustomClass)");
}
}
- boost::shared_ptr<Buffer> hex_res40(new Buffer("00 00 00 00 00 01 00 0b 2f 31 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 03 00 05 61 74 74 72 32 00 3f f0 00 00 00 00 00 00 00 05 61 74 74 72 31 02 00 03 6f 6e 65 00 00 09"));
+ std::shared_ptr<Buffer> hex_res40(new Buffer("00 00 00 00 00 01 00 0b 2f 31 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 03 00 05 61 74 74 72 32 00 3f f0 00 00 00 00 00 00 00 05 61 74 74 72 31 02 00 03 6f 6e 65 00 00 09"));
cygnal::Buffer &buf40 = http.formatEchoResponse(headers40[1]->getName(), *headers40[3]);
string head40(reinterpret_cast<const char *>(buf40.reference()));
@@ -1468,8 +1468,8 @@ test_rtmpt (void)
}
// [object EchoClass],[object EchoClass] [object.Object],[object.Object]
- boost::shared_ptr<Buffer> hex_req41(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 02 2f 32 00 00 00 2e 0a 00 00 00 01 0a 00 00 00 02 03 00 05 61 74 74 72 32 00 3f f0 00 00 00 00 00 00 00 05 61 74 74 72 31 02 00 03 6f 6e 65 00 00 09 07 00 01"));
- vector<boost::shared_ptr<cygnal::Element> > headers41 = http.parseEchoRequest(*hex_req41);
+ std::shared_ptr<Buffer> hex_req41(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 02 2f 32 00 00 00 2e 0a 00 00 00 01 0a 00 00 00 02 03 00 05 61 74 74 72 32 00 3f f0 00 00 00 00 00 00 00 05 61 74 74 72 31 02 00 03 6f 6e 65 00 00 09 07 00 01"));
+ vector<std::shared_ptr<cygnal::Element> > headers41 = http.parseEchoRequest(*hex_req41);
if (headers41[3] == 0) {
runtest.unresolved("HTTP::parseEchoRequest(object CustomClass Array)");
} else {
@@ -1480,7 +1480,7 @@ test_rtmpt (void)
runtest.fail("HTTP::parseEchoRequest(object CustomClass Array)");
}
}
- boost::shared_ptr<Buffer> hex_res41(new Buffer("00 00 00 00 00 01 00 0b 2f 32 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 0a 00 00 00 02 03 00 05 61 74 74 72 32 00 3f f0 00 00 00 00 00 00 00 05 61 74 74 72 31 02 00 03 6f 6e 65 00 00 09 07 00 01"));
+ std::shared_ptr<Buffer> hex_res41(new Buffer("00 00 00 00 00 01 00 0b 2f 32 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 0a 00 00 00 02 03 00 05 61 74 74 72 32 00 3f f0 00 00 00 00 00 00 00 05 61 74 74 72 31 02 00 03 6f 6e 65 00 00 09 07 00 01"));
cygnal::Buffer &buf41 = http.formatEchoResponse(headers41[1]->getName(), *headers41[3]);
string head41(reinterpret_cast<const char *>(buf41.reference()));
const char *ptr41a = reinterpret_cast<const char *>(hex_res41->reference());
@@ -1493,8 +1493,8 @@ test_rtmpt (void)
// Remote Class
// [object RemoteClass] [object RemoteClass]
- boost::shared_ptr<Buffer> hex_req42(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 02 2f 31 00 00 00 59 0a 00 00 00 01 10 00 27 6f 72 67 2e 72 65 64 35 2e 73 65 72 76 65 72 2e 77 65 62 61 70 70 2e 65 63 68 6f 2e 52 65 6d 6f 74 65 43 6c 61 73 73 00 0a 61 74 74 72 69 62 75 74 65 32 00 40 00 00 00 00 00 00 00 00 0a 61 74 74 72 69 62 75 74 65 31 02 00 03 6f 6e 65 00 00 09"));
- vector<boost::shared_ptr<cygnal::Element> > headers42 = http.parseEchoRequest(*hex_req42);
+ std::shared_ptr<Buffer> hex_req42(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 02 2f 31 00 00 00 59 0a 00 00 00 01 10 00 27 6f 72 67 2e 72 65 64 35 2e 73 65 72 76 65 72 2e 77 65 62 61 70 70 2e 65 63 68 6f 2e 52 65 6d 6f 74 65 43 6c 61 73 73 00 0a 61 74 74 72 69 62 75 74 65 32 00 40 00 00 00 00 00 00 00 00 0a 61 74 74 72 69 62 75 74 65 31 02 00 03 6f 6e 65 00 00 09"));
+ vector<std::shared_ptr<cygnal::Element> > headers42 = http.parseEchoRequest(*hex_req42);
if (headers42[3] == 0) {
runtest.unresolved("HTTP::parseEchoRequest(Remote Class)");
} else {
@@ -1508,7 +1508,7 @@ test_rtmpt (void)
}
}
- boost::shared_ptr<Buffer> hex_res42(new Buffer("00 00 00 00 00 01 00 0b 2f 31 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 10 00 27 6f 72 67 2e 72 65 64 35 2e 73 65 72 76 65 72 2e 77 65 62 61 70 70 2e 65 63 68 6f 2e 52 65 6d 6f 74 65 43 6c 61 73 73 00 0a 61 74 74 72 69 62 75 74 65 31 02 00 03 6f 6e 65 00 0a 61 74 74 72 69 62 75 74 65 32 00 40 00 00 00 00 00 00 00 00 00 09"));
+ std::shared_ptr<Buffer> hex_res42(new Buffer("00 00 00 00 00 01 00 0b 2f 31 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 10 00 27 6f 72 67 2e 72 65 64 35 2e 73 65 72 76 65 72 2e 77 65 62 61 70 70 2e 65 63 68 6f 2e 52 65 6d 6f 74 65 43 6c 61 73 73 00 0a 61 74 74 72 69 62 75 74 65 31 02 00 03 6f 6e 65 00 0a 61 74 74 72 69 62 75 74 65 32 00 40 00 00 00 00 00 00 00 00 00 09"));
cygnal::Buffer &buf42 = http.formatEchoResponse(headers42[1]->getName(), *headers42[3]);
string head42(reinterpret_cast<const char *>(buf42.reference()));
const char *ptr42a = reinterpret_cast<const char *>(hex_res42->reference());
@@ -1522,14 +1522,14 @@ test_rtmpt (void)
// An array of RemoteClass objects
// org.red5.server.webapp.echo.RemoteClass
// [object RemoteClass],[object RemoteClass] [object RemoteClass],[object RemoteClass]
- boost::shared_ptr<Buffer> hex_req43(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 02 2f 32 00 00 00 b2 0a 00 00 00 01 0a 00 00 00 02 10 00 27 6f 72 67 2e 72 65 64 35 2e 73 65 72 76 65 72 2e 77 65 62 61 70 70 2e 65 63 68 6f 2e 52 65 6d 6f 74 65 43 6c 61 73 73 00 0a 61 74 74 72 69 62 75 74 65 32 00 3f f0 00 00 00 00 00 00 00 0a 61 74 74 72 69 62 75 74 65 31 02 00 03 6f 6e 65 00 00 09 10 00 27 6f 72 67 2e 72 65 64 35 2e 73 65 72 76 65 72 2e 77 65 62 61 70 70 2e 65 63 68 6f 2e 52 65 6d 6f 74 65 43 6c 61 73 73 00 0a 61 74 74 72 69 62 75 74 65 32 00 40 00 00 00 00 00 00 00 00 0a 61 74 74 72 69 62 75 74 65 31 02 00 03 74 77 6f 00 00 09"));
- vector<boost::shared_ptr<cygnal::Element> > headers43 = http.parseEchoRequest(*hex_req43);
+ std::shared_ptr<Buffer> hex_req43(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 02 2f 32 00 00 00 b2 0a 00 00 00 01 0a 00 00 00 02 10 00 27 6f 72 67 2e 72 65 64 35 2e 73 65 72 76 65 72 2e 77 65 62 61 70 70 2e 65 63 68 6f 2e 52 65 6d 6f 74 65 43 6c 61 73 73 00 0a 61 74 74 72 69 62 75 74 65 32 00 3f f0 00 00 00 00 00 00 00 0a 61 74 74 72 69 62 75 74 65 31 02 00 03 6f 6e 65 00 00 09 10 00 27 6f 72 67 2e 72 65 64 35 2e 73 65 72 76 65 72 2e 77 65 62 61 70 70 2e 65 63 68 6f 2e 52 65 6d 6f 74 65 43 6c 61 73 73 00 0a 61 74 74 72 69 62 75 74 65 32 00 40 00 00 00 00 00 00 00 00 0a 61 74 74 72 69 62 75 74 65 31 02 00 03 74 77 6f 00 00 09"));
+ vector<std::shared_ptr<cygnal::Element> > headers43 = http.parseEchoRequest(*hex_req43);
if (headers43[3] == 0) {
runtest.unresolved("HTTP::parseEchoRequest(object RemoteClass Array, 2 items)");
} else {
- std::vector<boost::shared_ptr<cygnal::Element> > props43 = headers43[3]->getProperties();
- std::vector<boost::shared_ptr<cygnal::Element> > props43a = props43[0]->getProperties();
- std::vector<boost::shared_ptr<cygnal::Element> > props43b = props43[1]->getProperties();
+ std::vector<std::shared_ptr<cygnal::Element> > props43 = headers43[3]->getProperties();
+ std::vector<std::shared_ptr<cygnal::Element> > props43a = props43[0]->getProperties();
+ std::vector<std::shared_ptr<cygnal::Element> > props43b = props43[1]->getProperties();
if ((strncmp(headers43[0]->getName(), "echo", 4) == 0)
&& (strncmp(headers43[1]->getName(), "/2", 2) == 0)
&& (headers43[3]->getType() == Element::STRICT_ARRAY_AMF0)
@@ -1551,10 +1551,10 @@ test_rtmpt (void)
runtest.fail("HTTP::parseEchoRequest(object RemoteClass Array, 2 items)");
}
}
- boost::shared_ptr<Buffer> hex_res43(new Buffer("00 00 00 00 00 01 00 0b 2f 32 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 0a 00 00 00 02 10 00 27 6f 72 67 2e 72 65 64 35 2e 73 65 72 76 65 72 2e 77 65 62 61 70 70 2e 65 63 68 6f 2e 52 65 6d 6f 74 65 43 6c 61 73 73 00 0a 61 74 74 72 69 62 75 74 65 31 02 00 03 6f 6e 65 00 0a 61 74 74 72 69 62 75 74 65 32 00 3f f0 00 00 00 00 00 00 00 00 09 10 00 27 6f 72 67 2e 72 65 64 35 2e 73 65 72 76 65 72 2e 77 65 62 61 70 70 2e 65 63 68 6f 2e 52 65 6d 6f 74 65 43 6c 61 73 73 00 0a 61 74 74 72 69 62 75 74 65 31 02 00 03 74 77 6f 00 0a 61 74 74 72 69 62 75 74 65 32 00 40 00 00 00 00 00 00 00 00 00 09"));
+ std::shared_ptr<Buffer> hex_res43(new Buffer("00 00 00 00 00 01 00 0b 2f 32 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 0a 00 00 00 02 10 00 27 6f 72 67 2e 72 65 64 35 2e 73 65 72 76 65 72 2e 77 65 62 61 70 70 2e 65 63 68 6f 2e 52 65 6d 6f 74 65 43 6c 61 73 73 00 0a 61 74 74 72 69 62 75 74 65 31 02 00 03 6f 6e 65 00 0a 61 74 74 72 69 62 75 74 65 32 00 3f f0 00 00 00 00 00 00 00 00 09 10 00 27 6f 72 67 2e 72 65 64 35 2e 73 65 72 76 65 72 2e 77 65 62 61 70 70 2e 65 63 68 6f 2e 52 65 6d 6f 74 65 43 6c 61 73 73 00 0a 61 74 74 72 69 62 75 74 65 31 02 00 03 74 77 6f 00 0a 61 74 74 72 69 62 75 74 65 32 00 40 00 00 00 00 00 00 00 00 00 09"));
cygnal::Buffer &buf43 = http.formatEchoResponse(headers43[1]->getName(), *headers43[3]);
- std::vector<boost::shared_ptr<cygnal::Element> > props43 = headers43[3]->getProperties();
- // std::vector<boost::shared_ptr<cygnal::Element> > props43a = props43[0]->getProperties();
+ std::vector<std::shared_ptr<cygnal::Element> > props43 = headers43[3]->getProperties();
+ // std::vector<std::shared_ptr<cygnal::Element> > props43a = props43[0]->getProperties();
// cerr << hexify(hex_res43->reference()+29, hex_res43->allocated()-29 , false) << endl;
// cerr << hexify(buf43.reference(), buf43.allocated(), true) << endl;
// cerr << hexify(buf43.reference() + 124, buf43.allocated()-124, false) << endl;
@@ -1570,8 +1570,8 @@ test_rtmpt (void)
#endif
// [object RemoteClass] [object RemoteClass]
- boost::shared_ptr<Buffer> hex_req44(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 02 2f 33 00 00 00 5b 0a 00 00 00 01 10 00 27 6f 72 67 2e 72 65 64 35 2e 73 65 72 76 65 72 2e 77 65 62 61 70 70 2e 65 63 68 6f 2e 52 65 6d 6f 74 65 43 6c 61 73 73 00 0a 61 74 74 72 69 62 75 74 65 32 00 41 d2 65 80 b4 80 00 00 00 0a 61 74 74 72 69 62 75 74 65 31 02 00 05 74 68 72 65 65 00 00 09"));
- vector<boost::shared_ptr<cygnal::Element> > headers44 = http.parseEchoRequest(*hex_req44);
+ std::shared_ptr<Buffer> hex_req44(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 02 2f 33 00 00 00 5b 0a 00 00 00 01 10 00 27 6f 72 67 2e 72 65 64 35 2e 73 65 72 76 65 72 2e 77 65 62 61 70 70 2e 65 63 68 6f 2e 52 65 6d 6f 74 65 43 6c 61 73 73 00 0a 61 74 74 72 69 62 75 74 65 32 00 41 d2 65 80 b4 80 00 00 00 0a 61 74 74 72 69 62 75 74 65 31 02 00 05 74 68 72 65 65 00 00 09"));
+ vector<std::shared_ptr<cygnal::Element> > headers44 = http.parseEchoRequest(*hex_req44);
if (headers44[3] == 0) {
runtest.unresolved("HTTP::parseEchoRequest(object RemoteClass Array)");
} else {
@@ -1583,7 +1583,7 @@ test_rtmpt (void)
runtest.fail("HTTP::parseEchoRequest(object RemoteClass Array, 2 items)");
}
}
- boost::shared_ptr<Buffer> hex_res44(new Buffer("00 00 00 00 00 01 00 0b 2f 33 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 10 00 27 6f 72 67 2e 72 65 64 35 2e 73 65 72 76 65 72 2e 77 65 62 61 70 70 2e 65 63 68 6f 2e 52 65 6d 6f 74 65 43 6c 61 73 73 00 0a 61 74 74 72 69 62 75 74 65 31 02 00 05 74 68 72 65 65 00 0a 61 74 74 72 69 62 75 74 65 32 00 41 d2 65 80 b4 80 00 00 00 00 09"));
+ std::shared_ptr<Buffer> hex_res44(new Buffer("00 00 00 00 00 01 00 0b 2f 33 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 10 00 27 6f 72 67 2e 72 65 64 35 2e 73 65 72 76 65 72 2e 77 65 62 61 70 70 2e 65 63 68 6f 2e 52 65 6d 6f 74 65 43 6c 61 73 73 00 0a 61 74 74 72 69 62 75 74 65 31 02 00 05 74 68 72 65 65 00 0a 61 74 74 72 69 62 75 74 65 32 00 41 d2 65 80 b4 80 00 00 00 00 09"));
cygnal::Buffer &buf44 = http.formatEchoResponse(headers44[1]->getName(), *headers44[3]);
string head44(reinterpret_cast<const char *>(buf44.reference()));
const char *ptr44a = reinterpret_cast<const char *>(hex_res44->reference());
@@ -1596,12 +1596,12 @@ test_rtmpt (void)
#if 0
// [object RemoteClass] [object RemoteClass]
- boost::shared_ptr<Buffer> hex_req45(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 02 2f 34 00 00 00 5a 0a 00 00 00 01 10 00 27 6f 72 67 2e 72 65 64 35 2e 73 65 72 76 65 72 2e 77 65 62 61 70 70 2e 65 63 68 6f 2e 52 65 6d 6f 74 65 43 6c 61 73 73 00 0a 61 74 74 72 69 62 75 74 65 32 00 42 71 3f 8f 4d 00 00 00 00 0a 61 74 74 72 69 62 75 74 65 31 02 00 04 66 6f 75 72 00 00 09"));
- vector<boost::shared_ptr<cygnal::Element> > headers45 = http.parseEchoRequest(*hex_req45);
+ std::shared_ptr<Buffer> hex_req45(new Buffer("00 00 00 00 00 01 00 04 65 63 68 6f 00 02 2f 34 00 00 00 5a 0a 00 00 00 01 10 00 27 6f 72 67 2e 72 65 64 35 2e 73 65 72 76 65 72 2e 77 65 62 61 70 70 2e 65 63 68 6f 2e 52 65 6d 6f 74 65 43 6c 61 73 73 00 0a 61 74 74 72 69 62 75 74 65 32 00 42 71 3f 8f 4d 00 00 00 00 0a 61 74 74 72 69 62 75 74 65 31 02 00 04 66 6f 75 72 00 00 09"));
+ vector<std::shared_ptr<cygnal::Element> > headers45 = http.parseEchoRequest(*hex_req45);
if (headers45[3] == 0) {
runtest.unresolved("HTTP::parseEchoRequest(object RemoteClass Array)");
} else {
- std::vector<boost::shared_ptr<cygnal::Element> > props45 = headers45[3]->getProperties();
+ std::vector<std::shared_ptr<cygnal::Element> > props45 = headers45[3]->getProperties();
if (props45.size() == 2) {
if ((strncmp(headers45[0]->getName(), "echo", 4) == 0)
&& (strncmp(headers45[1]->getName(), "/4", 2) == 0)
@@ -1622,7 +1622,7 @@ test_rtmpt (void)
}
}
- boost::shared_ptr<Buffer> hex_res45(new Buffer("00 00 00 00 00 01 00 0b 2f 34 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 10 00 27 6f 72 67 2e 72 65 64 35 2e 73 65 72 76 65 72 2e 77 65 62 61 70 70 2e 65 63 68 6f 2e 52 65 6d 6f 74 65 43 6c 61 73 73 00 0a 61 74 74 72 69 62 75 74 65 31 02 00 04 66 6f 75 72 00 0a 61 74 74 72 69 62 75 74 65 32 00 c1 9c 2c c0 00 00 00 00 00 00 09"));
+ std::shared_ptr<Buffer> hex_res45(new Buffer("00 00 00 00 00 01 00 0b 2f 34 2f 6f 6e 52 65 73 75 6c 74 00 04 6e 75 6c 6c ff ff ff ff 10 00 27 6f 72 67 2e 72 65 64 35 2e 73 65 72 76 65 72 2e 77 65 62 61 70 70 2e 65 63 68 6f 2e 52 65 6d 6f 74 65 43 6c 61 73 73 00 0a 61 74 74 72 69 62 75 74 65 31 02 00 04 66 6f 75 72 00 0a 61 74 74 72 69 62 75 74 65 32 00 c1 9c 2c c0 00 00 00 00 00 00 09"));
cygnal::Buffer &buf45 = http.formatEchoResponse(headers45[1]->getName(), *headers45[3]);
string head45(reinterpret_cast<const char *>(buf45.reference()));
const char *ptr45a = reinterpret_cast<const char *>(hex_res45->reference());
@@ -1648,7 +1648,7 @@ test_rtmpt (void)
// cerr << hexify(hex_req1->reference(), hex_req1->allocated(), false) << endl;
hex_req1->corrupt(6);
// cerr << hexify(hex_req1->reference(), hex_req1->allocated(), false) << endl;
- vector<boost::shared_ptr<cygnal::Element> > corrupt1 = http.parseEchoRequest(*hex_req1);
+ vector<std::shared_ptr<cygnal::Element> > corrupt1 = http.parseEchoRequest(*hex_req1);
if (corrupt1.size()) {
runtest.pass("Corrupted HTTP::parseEchoRequest(Boolean TRUE)");
} else {
@@ -1658,7 +1658,7 @@ test_rtmpt (void)
// cerr << hexify(hex_req2->reference(), hex_req2->allocated(), false) << endl;
hex_req2->corrupt(4);
// cerr << hexify(hex_req2->reference(), hex_req2->allocated(), false) << endl;
- vector<boost::shared_ptr<cygnal::Element> > corrupt2 = http.parseEchoRequest(*hex_req2);
+ vector<std::shared_ptr<cygnal::Element> > corrupt2 = http.parseEchoRequest(*hex_req2);
if (corrupt2.size()) {
runtest.pass("Corrupted HTTP::parseEchoRequest(Boolean FALSE)");
} else {
@@ -1668,7 +1668,7 @@ test_rtmpt (void)
// cerr << hexify(hex_req3->reference(), hex_req3->allocated(), false) << endl;
hex_req3->corrupt(3);
// cerr << hexify(hex_req3->reference(), hex_req3->allocated(), false) << endl;
- vector<boost::shared_ptr<cygnal::Element> > corrupt3 = http.parseEchoRequest(*hex_req3);
+ vector<std::shared_ptr<cygnal::Element> > corrupt3 = http.parseEchoRequest(*hex_req3);
if (corrupt3.size()) {
runtest.pass("Corrupted HTTP::parseEchoRequest(NULL Object)");
} else {
@@ -1678,7 +1678,7 @@ test_rtmpt (void)
// cerr << hexify(hex_req4->reference(), hex_req4->allocated(), false) << endl;
hex_req4->corrupt(7);
// cerr << hexify(hex_req4->reference(), hex_req4->allocated(), false) << endl;
- vector<boost::shared_ptr<cygnal::Element> > corrupt4 = http.parseEchoRequest(*hex_req4);
+ vector<std::shared_ptr<cygnal::Element> > corrupt4 = http.parseEchoRequest(*hex_req4);
if (corrupt4.size()) {
runtest.pass("Corrupted HTTP::parseEchoRequest(UNDEFINED Object)");
} else {
@@ -1688,7 +1688,7 @@ test_rtmpt (void)
cerr << hexify(hex_req5->reference(), hex_req5->allocated(), false) << endl;
hex_req5->corrupt(5);
cerr << hexify(hex_req5->reference(), hex_req5->allocated(), false) << endl;
- vector<boost::shared_ptr<cygnal::Element> > corrupt5 = http.parseEchoRequest(*hex_req5);
+ vector<std::shared_ptr<cygnal::Element> > corrupt5 = http.parseEchoRequest(*hex_req5);
if (corrupt5.size()) {
runtest.pass("Corrupted HTTP::parseEchoRequest(DATE Object)");
} else {
@@ -1698,7 +1698,7 @@ test_rtmpt (void)
// cerr << hexify(hex_req6->reference(), hex_req6->allocated(), false) << endl;
hex_req6->corrupt(7);
// cerr << hexify(hex_req6->reference(), hex_req6->allocated(), false) << endl;
- vector<boost::shared_ptr<cygnal::Element> > corrupt6 = http.parseEchoRequest(*hex_req6);
+ vector<std::shared_ptr<cygnal::Element> > corrupt6 = http.parseEchoRequest(*hex_req6);
if (corrupt6.size()) {
runtest.pass("Corrupted HTTP::parseEchoRequest(DATE Array)");
} else {
@@ -1708,7 +1708,7 @@ test_rtmpt (void)
// cerr << hexify(hex_req7->reference(), hex_req7->allocated(), false) << endl;
hex_req7->corrupt(5);
// cerr << hexify(hex_req7->reference(), hex_req7->allocated(), false) << endl;
- vector<boost::shared_ptr<cygnal::Element> > corrupt7 = http.parseEchoRequest(*hex_req7);
+ vector<std::shared_ptr<cygnal::Element> > corrupt7 = http.parseEchoRequest(*hex_req7);
if (corrupt7.size()) {
runtest.pass("Corrupted HTTP::parseEchoRequest(Undefined Strict Array)");
} else {
@@ -1718,7 +1718,7 @@ test_rtmpt (void)
// cerr << hexify(hex_req8->reference(), hex_req8->allocated(), false) << endl;
hex_req8->corrupt(2);
// cerr << hexify(hex_req8->reference(), hex_req8->allocated(), false) << endl;
- vector<boost::shared_ptr<cygnal::Element> > corrupt8 = http.parseEchoRequest(*hex_req8);
+ vector<std::shared_ptr<cygnal::Element> > corrupt8 = http.parseEchoRequest(*hex_req8);
if (corrupt8.size()) {
runtest.pass("Corrupted HTTP::parseEchoRequest(Simple Strict Array of Numbers. 1 item)");
} else {
@@ -1728,7 +1728,7 @@ test_rtmpt (void)
// cerr << hexify(hex_req9->reference(), hex_req9->allocated(), false) << endl;
hex_req9->corrupt(3);
// cerr << hexify(hex_req9->reference(), hex_req9->allocated(), false) << endl;
- vector<boost::shared_ptr<cygnal::Element> > corrupt9 = http.parseEchoRequest(*hex_req9);
+ vector<std::shared_ptr<cygnal::Element> > corrupt9 = http.parseEchoRequest(*hex_req9);
if (corrupt9.size()) {
runtest.pass("Corrupted HTTP::parseEchoRequest(Simple Strict Array of Numbers. 2 items)");
} else {
@@ -1738,7 +1738,7 @@ test_rtmpt (void)
// cerr << hexify(hex_req10->reference(), hex_req10->allocated(), false) << endl;
hex_req10->corrupt(2);
// cerr << hexify(hex_req10->reference(), hex_req10->allocated(), false) << endl;
- vector<boost::shared_ptr<cygnal::Element> > corrupt10 = http.parseEchoRequest(*hex_req10);
+ vector<std::shared_ptr<cygnal::Element> > corrupt10 = http.parseEchoRequest(*hex_req10);
if (corrupt10.size()) {
runtest.pass("Corrupted HTTP::parseEchoRequest(Simple Strict Array of Numbers. 3 items)");
} else {
@@ -1748,7 +1748,7 @@ test_rtmpt (void)
// cerr << hexify(hex_req11->reference(), hex_req11->allocated(), false) << endl;
hex_req11->corrupt(2);
// cerr << hexify(hex_req11->reference(), hex_req11->allocated(), false) << endl;
- vector<boost::shared_ptr<cygnal::Element> > corrupt11 = http.parseEchoRequest(*hex_req11);
+ vector<std::shared_ptr<cygnal::Element> > corrupt11 = http.parseEchoRequest(*hex_req11);
if (corrupt11.size()) {
runtest.pass("Corrupted HTTP::parseEchoRequest(Number 0)");
} else {
@@ -1758,7 +1758,7 @@ test_rtmpt (void)
// cerr << hexify(hex_req12->reference(), hex_req12->allocated(), false) << endl;
hex_req12->corrupt(4);
// cerr << hexify(hex_req12->reference(), hex_req12->allocated(), false) << endl;
- vector<boost::shared_ptr<cygnal::Element> > corrupt12 = http.parseEchoRequest(*hex_req12);
+ vector<std::shared_ptr<cygnal::Element> > corrupt12 = http.parseEchoRequest(*hex_req12);
if (corrupt12.size()) {
runtest.pass("Corrupted HTTP::parseEchoRequest(Number 1)");
} else {
@@ -1768,7 +1768,7 @@ test_rtmpt (void)
// cerr << hexify(hex_req13->reference(), hex_req13->allocated(), false) << endl;
hex_req13->corrupt(1);
// cerr << hexify(hex_req13->reference(), hex_req13->allocated(), false) << endl;
- vector<boost::shared_ptr<cygnal::Element> > corrupt13 = http.parseEchoRequest(*hex_req13);
+ vector<std::shared_ptr<cygnal::Element> > corrupt13 = http.parseEchoRequest(*hex_req13);
if (corrupt13.size()) {
runtest.pass("Corrupted HTTP::parseEchoRequest(Number -1)");
} else {
@@ -1778,7 +1778,7 @@ test_rtmpt (void)
// cerr << hexify(hex_req14->reference(), hex_req14->allocated(), false) << endl;
hex_req14->corrupt(5);
// cerr << hexify(hex_req14->reference(), hex_req14->allocated(), false) << endl;
- vector<boost::shared_ptr<cygnal::Element> > corrupt14 = http.parseEchoRequest(*hex_req14);
+ vector<std::shared_ptr<cygnal::Element> > corrupt14 = http.parseEchoRequest(*hex_req14);
if (corrupt14.size()) {
runtest.pass("Corrupted HTTP::parseEchoRequest(Number 256)");
} else {
@@ -1788,7 +1788,7 @@ test_rtmpt (void)
// cerr << hexify(hex_req15->reference(), hex_req15->allocated(), false) << endl;
hex_req15->corrupt(5);
// cerr << hexify(hex_req15->reference(), hex_req15->allocated(), false) << endl;
- vector<boost::shared_ptr<cygnal::Element> > corrupt15 = http.parseEchoRequest(*hex_req15);
+ vector<std::shared_ptr<cygnal::Element> > corrupt15 = http.parseEchoRequest(*hex_req15);
if (corrupt15.size()) {
runtest.pass("Corrupted HTTP::parseEchoRequest(Number -256)");
} else {
@@ -1798,7 +1798,7 @@ test_rtmpt (void)
// cerr << hexify(hex_req16->reference(), hex_req16->allocated(), false) << endl;
hex_req16->corrupt(2);
// cerr << hexify(hex_req16->reference(), hex_req16->allocated(), false) << endl;
- vector<boost::shared_ptr<cygnal::Element> > corrupt16 = http.parseEchoRequest(*hex_req16);
+ vector<std::shared_ptr<cygnal::Element> > corrupt16 = http.parseEchoRequest(*hex_req16);
if (corrupt16.size()) {
runtest.pass("Corrupted HTTP::parseEchoRequest(Number 65536)");
} else {
@@ -1808,7 +1808,7 @@ test_rtmpt (void)
// cerr << hexify(hex_req17->reference(), hex_req17->allocated(), false) << endl;
hex_req16x->corrupt(6);
// cerr << hexify(hex_req17->reference(), hex_req17->allocated(), false) << endl;
- vector<boost::shared_ptr<cygnal::Element> > corrupt17 = http.parseEchoRequest(*hex_req16x);
+ vector<std::shared_ptr<cygnal::Element> > corrupt17 = http.parseEchoRequest(*hex_req16x);
if (corrupt17.size()) {
runtest.pass("Corrupted HTTP::parseEchoRequest(Number -65536)");
} else {
@@ -1818,7 +1818,7 @@ test_rtmpt (void)
// cerr << hexify(hex_req19->reference(), hex_req19->allocated(), false) << endl;
hex_req19->corrupt(1);
// cerr << hexify(hex_req19->reference(), hex_req19->allocated(), false) << endl;
- vector<boost::shared_ptr<cygnal::Element> > corrupt19 = http.parseEchoRequest(*hex_req19);
+ vector<std::shared_ptr<cygnal::Element> > corrupt19 = http.parseEchoRequest(*hex_req19);
if (corrupt19.size()) {
runtest.pass("Corrupted HTTP::parseEchoRequest(Number 1.5)");
} else {
@@ -1828,7 +1828,7 @@ test_rtmpt (void)
// cerr << hexify(hex_req20->reference(), hex_req20->allocated(), false) << endl;
hex_req20->corrupt(4);
// cerr << hexify(hex_req20->reference(), hex_req20->allocated(), false) << endl;
- vector<boost::shared_ptr<cygnal::Element> > corrupt20 = http.parseEchoRequest(*hex_req20);
+ vector<std::shared_ptr<cygnal::Element> > corrupt20 = http.parseEchoRequest(*hex_req20);
if (corrupt20.size()) {
runtest.pass("Corrupted HTTP::parseEchoRequest(Number -1.5)");
} else {
@@ -1838,7 +1838,7 @@ test_rtmpt (void)
// cerr << hexify(hex_req21->reference(), hex_req21->allocated(), false) << endl;
hex_req21->corrupt(8);
// cerr << hexify(hex_req21->reference(), hex_req21->allocated(), false) << endl;
- vector<boost::shared_ptr<cygnal::Element> > corrupt21 = http.parseEchoRequest(*hex_req21);
+ vector<std::shared_ptr<cygnal::Element> > corrupt21 = http.parseEchoRequest(*hex_req21);
if (corrupt21.size()) {
runtest.pass("Corrupted HTTP::parseEchoRequest(Number NaN)");
} else {
@@ -1848,7 +1848,7 @@ test_rtmpt (void)
// cerr << hexify(hex_req22->reference(), hex_req22->allocated(), false) << endl;
hex_req22->corrupt(1);
// cerr << hexify(hex_req22->reference(), hex_req22->allocated(), false) << endl;
- vector<boost::shared_ptr<cygnal::Element> > corrupt22 = http.parseEchoRequest(*hex_req22);
+ vector<std::shared_ptr<cygnal::Element> > corrupt22 = http.parseEchoRequest(*hex_req22);
if (corrupt22.size()) {
runtest.pass("Corrupted HTTP::parseEchoRequest(Number Infinity)");
} else {
@@ -1858,7 +1858,7 @@ test_rtmpt (void)
// cerr << hexify(hex_req26->reference(), hex_req26->allocated(), false) << endl;
hex_req26->corrupt(5);
// cerr << hexify(hex_req26->reference(), hex_req26->allocated(), false) << endl;
- vector<boost::shared_ptr<cygnal::Element> > corrupt26 = http.parseEchoRequest(*hex_req26);
+ vector<std::shared_ptr<cygnal::Element> > corrupt26 = http.parseEchoRequest(*hex_req26);
if (corrupt26.size()) {
runtest.pass("Corrupted HTTP::parseEchoRequest(Strict Array of Numbers, 3 items)");
} else {
@@ -1868,7 +1868,7 @@ test_rtmpt (void)
// cerr << hexify(hex_req27->reference(), hex_req27->allocated(), false) << endl;
hex_req27->corrupt(3);
// cerr << hexify(hex_req27->reference(), hex_req27->allocated(), false) << endl;
- vector<boost::shared_ptr<cygnal::Element> > corrupt27 = http.parseEchoRequest(*hex_req27);
+ vector<std::shared_ptr<cygnal::Element> > corrupt27 = http.parseEchoRequest(*hex_req27);
if (corrupt27.size()) {
runtest.pass("Corrupted HTTP::parseEchoRequest(Strict Array - Number, undefines, Number)");
} else {
@@ -1878,7 +1878,7 @@ test_rtmpt (void)
// cerr << hexify(hex_req29->reference(), hex_req29->allocated(), false) << endl;
hex_req29->corrupt(8);
// cerr << hexify(hex_req29->reference(), hex_req29->allocated(), false) << endl;
- vector<boost::shared_ptr<cygnal::Element> > corrupt29 = http.parseEchoRequest(*hex_req29);
+ vector<std::shared_ptr<cygnal::Element> > corrupt29 = http.parseEchoRequest(*hex_req29);
if (corrupt29.size()) {
runtest.pass("Corrupted HTTP::parseEchoRequest(NULL String)");
} else {
@@ -1888,7 +1888,7 @@ test_rtmpt (void)
// cerr << hexify(hex_req30->reference(), hex_req30->allocated(), false) << endl;
hex_req30->corrupt(7);
// cerr << hexify(hex_req30->reference(), hex_req30->allocated(), false) << endl;
- vector<boost::shared_ptr<cygnal::Element> > corrupt30 = http.parseEchoRequest(*hex_req30);
+ vector<std::shared_ptr<cygnal::Element> > corrupt30 = http.parseEchoRequest(*hex_req30);
if (corrupt30.size()) {
runtest.pass("Corrupted HTTP::parseEchoRequest(Simple String)");
} else {
@@ -1898,7 +1898,7 @@ test_rtmpt (void)
// cerr << hexify(hex_req31->reference(), hex_req31->allocated(), false) << endl;
hex_req31->corrupt(2);
// cerr << hexify(hex_req31->reference(), hex_req31->allocated(), false) << endl;
- vector<boost::shared_ptr<cygnal::Element> > corrupt31 = http.parseEchoRequest(*hex_req31);
+ vector<std::shared_ptr<cygnal::Element> > corrupt31 = http.parseEchoRequest(*hex_req31);
if (corrupt31.size()) {
runtest.pass("Corrupted HTTP::parseEchoRequest(Simple String Array)");
} else {
@@ -1908,7 +1908,7 @@ test_rtmpt (void)
// cerr << hexify(hex_req40->reference(), hex_req40->allocated(), false) << endl;
hex_req40->corrupt(6);
// cerr << hexify(hex_req40->reference(), hex_req40->allocated(), false) << endl;
- vector<boost::shared_ptr<cygnal::Element> > corrupt40 = http.parseEchoRequest(*hex_req40);
+ vector<std::shared_ptr<cygnal::Element> > corrupt40 = http.parseEchoRequest(*hex_req40);
if (corrupt40.size()) {
runtest.pass("Corrupted HTTP::parseEchoRequest(object CustomClass)");
} else {
@@ -1918,7 +1918,7 @@ test_rtmpt (void)
// cerr << hexify(hex_req41->reference(), hex_req41->allocated(), false) << endl;
hex_req41->corrupt(1);
// cerr << hexify(hex_req41->reference(), hex_req41->allocated(), false) << endl;
- vector<boost::shared_ptr<cygnal::Element> > corrupt41 = http.parseEchoRequest(*hex_req41);
+ vector<std::shared_ptr<cygnal::Element> > corrupt41 = http.parseEchoRequest(*hex_req41);
if (corrupt41.size()) {
runtest.pass("Corrupted HTTP::parseEchoRequest(object CustomClass Array)");
} else {
@@ -1928,7 +1928,7 @@ test_rtmpt (void)
// cerr << hexify(hex_req42->reference(), hex_req42->allocated(), false) << endl;
hex_req42->corrupt(2);
// cerr << hexify(hex_req42->reference(), hex_req42->allocated(), false) << endl;
- vector<boost::shared_ptr<cygnal::Element> > corrupt42 = http.parseEchoRequest(*hex_req42);
+ vector<std::shared_ptr<cygnal::Element> > corrupt42 = http.parseEchoRequest(*hex_req42);
if (corrupt42.size()) {
runtest.pass("Corrupted HTTP::parseEchoRequest(object RemoteClass)");
} else {
@@ -1938,7 +1938,7 @@ test_rtmpt (void)
// cerr << hexify(hex_req43->reference(), hex_req43->allocated(), false) << endl;
hex_req43->corrupt(4);
// cerr << hexify(hex_req43->reference(), hex_req43->allocated(), false) << endl;
- vector<boost::shared_ptr<cygnal::Element> > corrupt43 = http.parseEchoRequest(*hex_req43);
+ vector<std::shared_ptr<cygnal::Element> > corrupt43 = http.parseEchoRequest(*hex_req43);
if (corrupt43.size()) {
runtest.pass("Corrupted HTTP::parseEchoRequest(object RemoteClass Array, 2 items)");
} else {
@@ -1948,7 +1948,7 @@ test_rtmpt (void)
// cerr << hexify(hex_req44->reference(), hex_req44->allocated(), false) << endl;
hex_req44->corrupt(3);
// cerr << hexify(hex_req44->reference(), hex_req44->allocated(), false) << endl;
- vector<boost::shared_ptr<cygnal::Element> > corrupt44 = http.parseEchoRequest(*hex_req44);
+ vector<std::shared_ptr<cygnal::Element> > corrupt44 = http.parseEchoRequest(*hex_req44);
if (corrupt44.size()) {
runtest.pass("Corrupted HTTP::parseEchoRequest(object RemoteClass");
} else {
@@ -1960,7 +1960,7 @@ test_rtmpt (void)
#if 0
hex_req45->corrupt(6);
// cerr << hexify(hex_req45->reference(), hex_req45->allocated(), false) << endl;
- vector<boost::shared_ptr<cygnal::Element> > corrupt45 = http.parseEchoRequest(*hex_req45);
+ vector<std::shared_ptr<cygnal::Element> > corrupt45 = http.parseEchoRequest(*hex_req45);
if (corrupt45.size()) {
runtest.pass("Corrupted HTTP::parseEchoRequest(object RemoteClass");
} else {
diff --git a/cygnal/testsuite/libnet.all/test_rtmp.cpp b/cygnal/testsuite/libnet.all/test_rtmp.cpp
index fcd7d67..80134e1 100644
--- a/cygnal/testsuite/libnet.all/test_rtmp.cpp
+++ b/cygnal/testsuite/libnet.all/test_rtmp.cpp
@@ -23,7 +23,6 @@
#ifdef HAVE_DEJAGNU_H
//#include <netinet/in.h>
-#include <boost/shared_ptr.hpp>
#include <string>
#include <sys/types.h>
#include <sys/stat.h>
@@ -149,11 +148,11 @@ test_split()
RTMPClient client;
bool notest = false;
- boost::shared_ptr<RTMP::rtmp_head_t> rthead;
+ std::shared_ptr<RTMP::rtmp_head_t> rthead;
CQue *que;
- boost::shared_ptr<Buffer> buf1(new Buffer("04 00 00 00 00 00 b8 14 01 00 00 00 02 00 08 6f 6e 53 74 61 74 75 73 00 00 00 00 00 00 00 00 00 05 03 00 05 6c 65 76 65 6c 02 00 06 73 74 61 74 75 73 00 04 63 6f 64 65 02 00 14 4e 65 74 53 74 72 65 61 6d 2e 50 6c 61 79 2e 52 65 73 65 74 00 0b 64 65 73 63 72 69 70 74 69 6f 6e 02 00 2d 50 6c 61 79 69 6e 67 20 61 6e 64 20 72 65 73 65 74 74 69 6e 67 20 67 61 74 65 30 36 5f 74 61 62 6c 61 6e 5f 62 63 75 65 75 5f 30 31 2e c4 00 07 64 65 74 61 69 6c 73 02 00 16 67 61 74 65 30 36 5f 74 61 62 6c 61 6e 5f 62 63 75 65 75 5f 30 31 00 08 63 6c 69 65 6e 74 69 64 00 41 bf e4 78 30 00 00 00 00 00 09"));
- boost::shared_ptr<RTMP::queues_t> queues1 = client.split(*buf1);
+ std::shared_ptr<Buffer> buf1(new Buffer("04 00 00 00 00 00 b8 14 01 00 00 00 02 00 08 6f 6e 53 74 61 74 75 73 00 00 00 00 00 00 00 00 00 05 03 00 05 6c 65 76 65 6c 02 00 06 73 74 61 74 75 73 00 04 63 6f 64 65 02 00 14 4e 65 74 53 74 72 65 61 6d 2e 50 6c 61 79 2e 52 65 73 65 74 00 0b 64 65 73 63 72 69 70 74 69 6f 6e 02 00 2d 50 6c 61 79 69 6e 67 20 61 6e 64 20 72 65 73 65 74 74 69 6e 67 20 67 61 74 65 30 36 5f 74 61 62 6c 61 6e 5f 62 63 75 65 75 5f 30 31 2e c4 00 07 64 65 74 61 69 6c 73 02 00 16 67 61 74 65 30 36 5f 74 61 62 6c 61 6e 5f 62 63 75 65 75 5f 30 31 00 08 63 6c 69 65 6e 74 69 64 00 41 bf e4 78 30 00 00 00 00 00 09"));
+ std::shared_ptr<RTMP::queues_t> queues1 = client.split(*buf1);
if (!queues1) {
notest = true;
@@ -174,9 +173,9 @@ test_split()
}
}
-// boost::shared_ptr<cygnal::Buffer> tmpbuf = que1.front();
+// std::shared_ptr<cygnal::Buffer> tmpbuf = que1.front();
// que1.pop_front();
- boost::shared_ptr<cygnal::Buffer> tmpbuf(new Buffer);
+ std::shared_ptr<cygnal::Buffer> tmpbuf(new Buffer);
if (notest) {
runtest.untested("RTMP::split(1st packet header) of 2");
} else {
@@ -216,8 +215,8 @@ test_split()
// delete queues1;
- boost::shared_ptr<Buffer> buf2(new Buffer("02 00 00 00 00 00 04 01 00 00 00 00 00 00 00 80 02 00 00 00 00 00 06 04 00 00 00 00 00 04 00 00 00 01 04 00 00 00 00 00 b8 14 01 00 00 00 02 00 08 6f 6e 53 74 61 74 75 73 00 00 00 00 00 00 00 00 00 05 03 00 05 6c 65 76 65 6c 02 00 06 73 74 61 74 75 73 00 04 63 6f 64 65 02 00 14 4e 65 74 53 74 72 65 61 6d 2e 50 6c 61 79 2e 52 65 73 65 74 00 0b 64 65 73 63 72 69 70 74 69 6f 6e 02 00 2d 50 6c 61 79 69 6e 67 20 61 6e 64 20 72 65 73 65 74 74 69 6e 67 20 67 61 74 65 30 36 5f 74 61 62 6c 61 6e 5f 62 63 75 65 75 5f 30 31 2e 02 00 00 00 00 00 06 04 00 00 00 00 00 00 00 00 00 01 c4 00 07 64 65 74 61 69 6c 73 02 00 16 67 61 74 65 30 36 5f 74 61 62 6c 61 6e 5f 62 63 75 65 75 5f 30 31 00 08 63 6c 69 65 6e 74 69 64 00 41 d8 fb 78 56 00 00 00 00 00 09"));
- boost::shared_ptr<RTMP::queues_t> queues2 = client.split(*buf2);
+ std::shared_ptr<Buffer> buf2(new Buffer("02 00 00 00 00 00 04 01 00 00 00 00 00 00 00 80 02 00 00 00 00 00 06 04 00 00 00 00 00 04 00 00 00 01 04 00 00 00 00 00 b8 14 01 00 00 00 02 00 08 6f 6e 53 74 61 74 75 73 00 00 00 00 00 00 00 00 00 05 03 00 05 6c 65 76 65 6c 02 00 06 73 74 61 74 75 73 00 04 63 6f 64 65 02 00 14 4e 65 74 53 74 72 65 61 6d 2e 50 6c 61 79 2e 52 65 73 65 74 00 0b 64 65 73 63 72 69 70 74 69 6f 6e 02 00 2d 50 6c 61 79 69 6e 67 20 61 6e 64 20 72 65 73 65 74 74 69 6e 67 20 67 61 74 65 30 36 5f 74 61 62 6c 61 6e 5f 62 63 75 65 75 5f 30 31 2e 02 00 00 00 00 00 06 04 00 00 00 00 00 00 00 00 00 01 c4 00 07 64 65 74 61 69 6c 73 02 00 16 67 61 74 65 30 36 5f 74 61 62 6c 61 6e 5f 62 63 75 65 75 5f 30 31 00 08 63 6c 69 65 6e 74 69 64 00 41 d8 fb 78 56 00 00 00 00 00 09"));
+ std::shared_ptr<RTMP::queues_t> queues2 = client.split(*buf2);
if (queues2) {
if (queues2->size() == 0) {
notest = true;
@@ -316,8 +315,8 @@ test_split()
// Try a much more complex packet, similar to the previous one, but with more intermixed packets
// for other channels.
// ...............onStatus.............level...status..code...NetStream.Play.Start..description..'Started playing gate06_tablan_bcueu_01...clie......'.......xF....?j..... at ....?..O.]...............................;...../..rP.....K.......m......,......%......................B........M.<.$.....`.......i..9..C..J..........%..........G....2Np.".1`@................;.ntid.A..xV.....
- boost::shared_ptr<Buffer> buf3(new Buffer("05 00 00 00 00 00 90 14 01 00 00 00 02 00 08 6f 6e 53 74 61 74 75 73 00 00 00 00 00 00 00 00 00 05 03 00 05 6c 65 76 65 6c 02 00 06 73 74 61 74 75 73 00 04 63 6f 64 65 02 00 14 4e 65 74 53 74 72 65 61 6d 2e 50 6c 61 79 2e 53 74 61 72 74 00 0b 64 65 73 63 72 69 70 74 69 6f 6e 02 00 27 53 74 61 72 74 65 64 20 70 6c 61 79 69 6e 67 20 67 61 74 65 30 36 5f 74 61 62 6c 61 6e 5f 62 63 75 65 75 5f 30 31 2e 00 08 63 6c 69 65 07 00 00 00 00 00 27 09 01 00 00 00 14 00 78 46 0f 14 0f 14 3f 6a ff ff 00 08 9f 40 10 9f f8 8b 3f fd b2 4f fb 5d c0 00 00 00 00 00 00 00 00 00 00 00 00 08 00 00 00 00 00 00 08 01 00 00 00 08 00 00 00 00 01 3b 08 01 00 00 00 2f ff fb 72 50 00 00 00 00 00 4b 00 00 00 00 07 e0 09 6d 00 00 00 00 00 01 2c 00 00 00 00 1f 80 25 b4 00 00 00 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff fc 0c 87 42 80 ec c8 b0 0e 90 c2 12 4d 90 3c 18 24 16 01 88 03 e1 60 1a 1a a0 1a 09 9c 1a 69 a1 10 39 06 8d 43 02 c3 4a 12 0b 00 c8 1f 0b 00 d8 16 00 25 9f ff ff fe c1 a0 00 00 ff 8a 47 80 80 0e 1e 32 4e 70 f1 22 ed 31 60 40 f8 02 00 00 00 00 00 04 01 00 00 00 00 00 00 01 3b c5 6e 74 69 64 00 41 d8 fb 78 56 00 00 00 00 00 09"));
- boost::shared_ptr<RTMP::queues_t> queues3 = client.split(*buf3);
+ std::shared_ptr<Buffer> buf3(new Buffer("05 00 00 00 00 00 90 14 01 00 00 00 02 00 08 6f 6e 53 74 61 74 75 73 00 00 00 00 00 00 00 00 00 05 03 00 05 6c 65 76 65 6c 02 00 06 73 74 61 74 75 73 00 04 63 6f 64 65 02 00 14 4e 65 74 53 74 72 65 61 6d 2e 50 6c 61 79 2e 53 74 61 72 74 00 0b 64 65 73 63 72 69 70 74 69 6f 6e 02 00 27 53 74 61 72 74 65 64 20 70 6c 61 79 69 6e 67 20 67 61 74 65 30 36 5f 74 61 62 6c 61 6e 5f 62 63 75 65 75 5f 30 31 2e 00 08 63 6c 69 65 07 00 00 00 00 00 27 09 01 00 00 00 14 00 78 46 0f 14 0f 14 3f 6a ff ff 00 08 9f 40 10 9f f8 8b 3f fd b2 4f fb 5d c0 00 00 00 00 00 00 00 00 00 00 00 00 08 00 00 00 00 00 00 08 01 00 00 00 08 00 00 00 00 01 3b 08 01 00 00 00 2f ff fb 72 50 00 00 00 00 00 4b 00 00 00 00 07 e0 09 6d 00 00 00 00 00 01 2c 00 00 00 00 1f 80 25 b4 00 00 00 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff fc 0c 87 42 80 ec c8 b0 0e 90 c2 12 4d 90 3c 18 24 16 01 88 03 e1 60 1a 1a a0 1a 09 9c 1a 69 a1 10 39 06 8d 43 02 c3 4a 12 0b 00 c8 1f 0b 00 d8 16 00 25 9f ff ff fe c1 a0 00 00 ff 8a 47 80 80 0e 1e 32 4e 70 f1 22 ed 31 60 40 f8 02 00 00 00 00 00 04 01 00 00 00 00 00 00 01 3b c5 6e 74 69 64 00 41 d8 fb 78 56 00 00 00 00 00 09"));
+ std::shared_ptr<RTMP::queues_t> queues3 = client.split(*buf3);
if (queues3) {
if (queues3->size() == 0) {
notest = true;
@@ -414,10 +413,10 @@ test_split()
// the oflaDemo connect packet, which currently core dumps
notest = false;
- boost::shared_ptr<Buffer> buf4(new Buffer("03 00 00 00 00 01 0b 14 00 00 00 00 02 00 07 63 6f 6e 6e 65 63 74 00 3f f0 00 00 00 00 00 00 03 00 03 61 70 70 02 00 08 6f 66 6c 61 44 65 6d 6f 00 08 66 6c 61 73 68 56 65 72 02 00 0e 4c 4e 58 20 31 30 2c 30 2c 31 32 2c 33 36 00 06 73 77 66 55 72 6c 02 00 29 68 74 74 70 3a 2f 2f 6c 6f 63 61 6c 68 6f 73 74 3a 35 30 38 30 2f 64 65 6d 6f 73 2f 6f 66 6c 61 5f 64 65 6d 6f 2e 73 77 66 00 05 74 63 55 72 6c 02 00 1e 72 74 6d c3 70 3a 2f 2f 6c 6f 63 61 6c 68 6f 73 74 3a 35 39 33 35 2f 6f 66 6c 61 44 65 6d 6f 00 04 66 70 61 64 01 00 00 0c 63 61 70 61 62 69 6c 69 74 69 65 73 00 40 2e 00 00 00 00 00 00 00 0b 61 75 64 69 6f 43 6f 64 65 63 73 00 40 a8 ee 00 00 00 00 00 00 0b 76 69 64 65 6f 43 6f 64 65 63 73 00 40 6f 80 00 00 00 00 00 00 0d 76 69 64 65 6f 46 75 6e 63 74 69 6f 6e 00 3f f0 00 00 00 00 00 00 00 07 c3 70 61 67 65 55 72 6c 06 00 00 09"));
+ std::shared_ptr<Buffer> buf4(new Buffer("03 00 00 00 00 01 0b 14 00 00 00 00 02 00 07 63 6f 6e 6e 65 63 74 00 3f f0 00 00 00 00 00 00 03 00 03 61 70 70 02 00 08 6f 66 6c 61 44 65 6d 6f 00 08 66 6c 61 73 68 56 65 72 02 00 0e 4c 4e 58 20 31 30 2c 30 2c 31 32 2c 33 36 00 06 73 77 66 55 72 6c 02 00 29 68 74 74 70 3a 2f 2f 6c 6f 63 61 6c 68 6f 73 74 3a 35 30 38 30 2f 64 65 6d 6f 73 2f 6f 66 6c 61 5f 64 65 6d 6f 2e 73 77 66 00 05 74 63 55 72 6c 02 00 1e 72 74 6d c3 70 3a 2f 2f 6c 6f 63 61 6c 68 6f 73 74 3a 35 39 33 35 2f 6f 66 6c 61 44 65 6d 6f 00 04 66 70 61 64 01 00 00 0c 63 61 70 61 62 69 6c 69 74 69 65 73 00 40 2e 00 00 00 00 00 00 00 0b 61 75 64 69 6f 43 6f 64 65 63 73 00 40 a8 ee 00 00 00 00 00 00 0b 76 69 64 65 6f 43 6f 64 65 63 73 00 40 6f 80 00 00 00 00 00 00 0d 76 69 64 65 6f 46 75 6e 63 74 69 6f 6e 00 3f f0 00 00 00 00 00 00 00 07 c3 70 61 67 65 55 72 6c 06 00 00 09"));
// buf4->dump();
- boost::shared_ptr<RTMP::queues_t> queues4 = client.split(*buf4);
+ std::shared_ptr<RTMP::queues_t> queues4 = client.split(*buf4);
if (queues4) {
if (queues4->size() == 0) {
notest = true;
@@ -447,12 +446,12 @@ test_system()
RTMPClient client;
- boost::shared_ptr<cygnal::Buffer> buf1(new cygnal::Buffer("00 00 00 00 00 00")); // clear buffer message
- boost::shared_ptr<cygnal::Buffer> buf2(new cygnal::Buffer("00 06 cf 03 04 c3")); // ping client from server
- boost::shared_ptr<cygnal::Buffer> buf3(new cygnal::Buffer("00 07 cf 03 04 c3")); // Pong, reply from client
- boost::shared_ptr<cygnal::Buffer> buf4(new cygnal::Buffer("00 00 00 00 00 01")); // clear buffer message
+ std::shared_ptr<cygnal::Buffer> buf1(new cygnal::Buffer("00 00 00 00 00 00")); // clear buffer message
+ std::shared_ptr<cygnal::Buffer> buf2(new cygnal::Buffer("00 06 cf 03 04 c3")); // ping client from server
+ std::shared_ptr<cygnal::Buffer> buf3(new cygnal::Buffer("00 07 cf 03 04 c3")); // Pong, reply from client
+ std::shared_ptr<cygnal::Buffer> buf4(new cygnal::Buffer("00 00 00 00 00 01")); // clear buffer message
- boost::shared_ptr<RTMP::rtmp_ping_t> ping1 = client.decodePing(*buf1);
+ std::shared_ptr<RTMP::rtmp_ping_t> ping1 = client.decodePing(*buf1);
if (ping1->type == RTMP::PING_CLEAR) {
runtest.pass("Decoded RTMP Ping message");
} else {
@@ -461,15 +460,15 @@ test_system()
#if 0
RTMPServer server;
- boost::shared_ptr<cygnal::Buffer> enc1 = server.encodePing(RTMP::PING_CLEAR);
+ std::shared_ptr<cygnal::Buffer> enc1 = server.encodePing(RTMP::PING_CLEAR);
if ((memcmp(buf1->reference(), enc1->reference(), 6) == 0)) {
runtest.pass("Encoded RTMP Ping Clear message");
} else {
runtest.fail("Encoded RTMP Ping Clear message");
}
- boost::uint32_t time = *(reinterpret_cast<boost::uint32_t *>(buf2->reference() + 2));
- boost::shared_ptr<cygnal::Buffer> enc2 = server.encodePing(RTMP::PING_CLIENT, htonl(time));
+ std::uint32_t time = *(reinterpret_cast<std::uint32_t *>(buf2->reference() + 2));
+ std::shared_ptr<cygnal::Buffer> enc2 = server.encodePing(RTMP::PING_CLIENT, htonl(time));
// cerr << hexify(buf2->begin(), buf2->size(), false) << endl;
// cerr << hexify(enc2->begin(), enc2->size(), false) << endl;
if ((memcmp(buf2->reference(), enc2->reference(), 6) == 0)) {
@@ -479,7 +478,7 @@ test_system()
}
#endif
- boost::shared_ptr<RTMP::rtmp_ping_t> ping2 = client.decodePing(*buf2);
+ std::shared_ptr<RTMP::rtmp_ping_t> ping2 = client.decodePing(*buf2);
if ((ping2->type == RTMP::PING_CLIENT)
&& (ping2->target == 0xcf03)
&& (ping2->param1 == 0x4c3)) {
@@ -489,20 +488,20 @@ test_system()
}
// SERVER message
-// boost::shared_ptr<cygnal::Buffer> hex1 = hex2mem("02 00 00 00 00 00 04 05 00 00 00 00 00 13 12 d0");
-// boost::shared_ptr<cygnal::Buffer> hex1 = hex2mem("00 13 12 d0");
+// std::shared_ptr<cygnal::Buffer> hex1 = hex2mem("02 00 00 00 00 00 04 05 00 00 00 00 00 13 12 d0");
+// std::shared_ptr<cygnal::Buffer> hex1 = hex2mem("00 13 12 d0");
// RTMPMsg *msg1 = client.decodeMsgBody(hex1);
// Client message
-// boost::shared_ptr<cygnal::Buffer> hex2 = hex2mem("02 00 00 00 00 00 05 06 00 00 00 00 00 13 12 d0 02");
-// boost::shared_ptr<cygnal::Buffer> hex2 = hex2mem("00 13 12 d0 02");
+// std::shared_ptr<cygnal::Buffer> hex2 = hex2mem("02 00 00 00 00 00 05 06 00 00 00 00 00 13 12 d0 02");
+// std::shared_ptr<cygnal::Buffer> hex2 = hex2mem("00 13 12 d0 02");
// RTMPMsg *msg2 = client.decodeMsgBody(hex2);
#if 0
for (double dub=0; dub<=200; dub ++) {
Element el11;
el11.makeNumber(dub);
- boost::shared_ptr<cygnal::Buffer> buf11 = el11.getBuffer();
+ std::shared_ptr<cygnal::Buffer> buf11 = el11.getBuffer();
cerr << "FIXME: " << el11.to_number() << ": ";
swapBytes(buf11->begin(), 8);
cerr << hexify(buf11->begin(), buf11->size(), false) << endl;
@@ -522,8 +521,8 @@ test_header()
// this is a sample 12 bytes RTMP header
// const char *x1 = "03 00 00 00 00 01 1f 14 00 00 00 00";
- boost::shared_ptr<cygnal::Buffer> buf1(new Buffer("03 00 00 00 00 01 1f 14 00 00 00 00"));
- boost::shared_ptr<cygnal::Buffer> head1 = client.encodeHeader(0x3, RTMP::HEADER_12, 287,
+ std::shared_ptr<cygnal::Buffer> buf1(new Buffer("03 00 00 00 00 01 1f 14 00 00 00 00"));
+ std::shared_ptr<cygnal::Buffer> head1 = client.encodeHeader(0x3, RTMP::HEADER_12, 287,
RTMP::INVOKE, RTMPMsg::FROM_CLIENT);
// cerr << hexify(buf1->begin(), RTMP_MAX_HEADER_SIZE, false) << endl;
// cerr << hexify(head1->begin(), RTMP_MAX_HEADER_SIZE, false) << endl;
@@ -533,7 +532,7 @@ test_header()
} else {
runtest.fail("Encoded RTMP header(Invoke)");
}
- boost::shared_ptr<RTMP::rtmp_head_t> header1 = client.decodeHeader(buf1->reference());
+ std::shared_ptr<RTMP::rtmp_head_t> header1 = client.decodeHeader(buf1->reference());
if ((header1->channel == 0x3) && (header1->head_size == RTMP_MAX_HEADER_SIZE)
&& (header1->bodysize == 287) && (header1->type == RTMP::INVOKE)) {
runtest.pass("Decoded RTMP header(Invoke)");
@@ -541,8 +540,8 @@ test_header()
runtest.fail("Decoded RTMP header(Invoke)");
}
- boost::shared_ptr<cygnal::Buffer> buf2(new Buffer("02 00 00 00 00 00 06 04 00 00 00 00"));
- boost::shared_ptr<cygnal::Buffer> head2 = client.encodeHeader(0x2, RTMP::HEADER_12, PING_MSG_SIZE,
+ std::shared_ptr<cygnal::Buffer> buf2(new Buffer("02 00 00 00 00 00 06 04 00 00 00 00"));
+ std::shared_ptr<cygnal::Buffer> head2 = client.encodeHeader(0x2, RTMP::HEADER_12, PING_MSG_SIZE,
RTMP::USER, RTMPMsg::FROM_SERVER);
// cerr << hexify(head2->begin(), RTMP_MAX_HEADER_SIZE, false) << endl;
if ((memcmp(buf2->reference(), head2->reference(), 8) == 0)) {
@@ -551,8 +550,8 @@ test_header()
runtest.fail("Encoded RTMP header(Ping 0)");
}
- boost::shared_ptr<cygnal::Buffer> buf3(new Buffer("02 ff e3 6c 00 00 06 04 00 00 00 00"));
- boost::shared_ptr<cygnal::Buffer> head3 = client.encodeHeader(0x2, RTMP::HEADER_12, PING_MSG_SIZE,
+ std::shared_ptr<cygnal::Buffer> buf3(new Buffer("02 ff e3 6c 00 00 06 04 00 00 00 00"));
+ std::shared_ptr<cygnal::Buffer> head3 = client.encodeHeader(0x2, RTMP::HEADER_12, PING_MSG_SIZE,
RTMP::USER, RTMPMsg::FROM_SERVER);
// cerr << hexify(head3->begin(), RTMP_MAX_HEADER_SIZE, false) << endl;
if ((memcmp(buf2->reference(), head3->reference(), 8) == 0)) {
@@ -561,7 +560,7 @@ test_header()
runtest.fail("Encoded RTMP header(Ping 1)");
}
- boost::shared_ptr<RTMP::rtmp_head_t> header2 = client.decodeHeader(*buf3);
+ std::shared_ptr<RTMP::rtmp_head_t> header2 = client.decodeHeader(*buf3);
if ((header2->channel == 0x2) && (header2->head_size == RTMP_MAX_HEADER_SIZE)
&& (header2->bodysize == 6) && (header2->type == RTMP::USER)) {
runtest.pass("Decoded RTMP header(Ping)");
@@ -569,8 +568,8 @@ test_header()
runtest.fail("Decoded RTMP header(Ping)");
}
- boost::shared_ptr<cygnal::Buffer> buf4(new Buffer("c2"));
- boost::shared_ptr<cygnal::Buffer> head4 = client.encodeHeader(0x2, RTMP::HEADER_1);
+ std::shared_ptr<cygnal::Buffer> buf4(new Buffer("c2"));
+ std::shared_ptr<cygnal::Buffer> head4 = client.encodeHeader(0x2, RTMP::HEADER_1);
// cerr << hexify(head4->begin(), RTMP_MAX_HEADER_SIZE, false) << endl;
if ((memcmp(buf4->reference(), head4->reference(), 1) == 0)) {
runtest.pass("Encoded RTMP header(size 1)");
@@ -581,8 +580,8 @@ test_header()
// 43 00 00 00 00 00 15 14 02 00 08 6f 6e 42 57 44 onBWDone
// 6f 6e 65 00 40 00 00 00 00 00 00 00 05
- boost::shared_ptr<cygnal::Buffer> buf5(new Buffer("43 00 00 00 00 00 19 14"));
- boost::shared_ptr<cygnal::Buffer> head5 = client.encodeHeader(0x3, RTMP::HEADER_8, 0x19, RTMP::INVOKE,
+ std::shared_ptr<cygnal::Buffer> buf5(new Buffer("43 00 00 00 00 00 19 14"));
+ std::shared_ptr<cygnal::Buffer> head5 = client.encodeHeader(0x3, RTMP::HEADER_8, 0x19, RTMP::INVOKE,
RTMPMsg::FROM_CLIENT);
// head5->dump();
// cerr << hexify(head5->begin(), 8, false) << endl;
@@ -592,7 +591,7 @@ test_header()
runtest.fail("Encoded RTMP header(size 8)");
}
- boost::shared_ptr<RTMP::rtmp_head_t> header3 = client.decodeHeader(*buf5);
+ std::shared_ptr<RTMP::rtmp_head_t> header3 = client.decodeHeader(*buf5);
if ((header3->channel == 0x3) && (header3->head_size == 8)
&& (header3->bodysize == 0x19) && (header3->type == RTMP::INVOKE)) {
runtest.pass("Decoded RTMP header(size 8)");
@@ -601,8 +600,8 @@ test_header()
}
// 4 byte header
- boost::shared_ptr<cygnal::Buffer> buf6(new Buffer("83 00 00 00"));
- boost::shared_ptr<cygnal::Buffer> head6 = client.encodeHeader(0x3, RTMP::HEADER_4, 0x19, RTMP::INVOKE,
+ std::shared_ptr<cygnal::Buffer> buf6(new Buffer("83 00 00 00"));
+ std::shared_ptr<cygnal::Buffer> head6 = client.encodeHeader(0x3, RTMP::HEADER_4, 0x19, RTMP::INVOKE,
RTMPMsg::FROM_CLIENT);
if ((memcmp(buf6->reference(), head6->reference(), 4) == 0)) {
runtest.pass("Encoded RTMP header(size 4)");
@@ -626,12 +625,12 @@ test_results()
// 64 65 64 2e 00 04 63 6f 64 65 02 00 1d 4e 65 74 ded...code...Net
// 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 Connection.Conne
// 63 74 2e 53 75 63 63 65 73 73 00 00 c3 09 ct.Success....
- boost::shared_ptr<cygnal::Buffer> hex2(new Buffer("02 00 07 5f 72 65 73 75 6c 74 00 3f f0 00 00 00 00 00 00 05 03 00 0b 61 70 70 6c 69 63 61 74 69 6f 6e 05 00 05 6c 65 76 65 6c 02 00 06 73 74 61 74 75 73 00 0b 64 65 73 63 72 69 70 74 69 6f 6e 02 00 15 43 6f 6e 6e 65 63 74 69 6f 6e 20 73 75 63 63 65 65 64 65 64 2e 00 04 63 6f 64 65 02 00 1d 4e 65 74 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 2e 53 75 63 63 65 73 73 00 00 09"));
+ std::shared_ptr<cygnal::Buffer> hex2(new Buffer("02 00 07 5f 72 65 73 75 6c 74 00 3f f0 00 00 00 00 00 00 05 03 00 0b 61 70 70 6c 69 63 61 74 69 6f 6e 05 00 05 6c 65 76 65 6c 02 00 06 73 74 61 74 75 73 00 0b 64 65 73 63 72 69 70 74 69 6f 6e 02 00 15 43 6f 6e 6e 65 63 74 69 6f 6e 20 73 75 63 63 65 65 64 65 64 2e 00 04 63 6f 64 65 02 00 1d 4e 65 74 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 2e 53 75 63 63 65 73 73 00 00 09"));
- boost::shared_ptr<RTMPMsg> msg1 = rtmp.decodeMsgBody(*hex2);
+ std::shared_ptr<RTMPMsg> msg1 = rtmp.decodeMsgBody(*hex2);
if (msg1) {
- std::vector<boost::shared_ptr<cygnal::Element> > hell = msg1->getElements();
- std::vector<boost::shared_ptr<cygnal::Element> > props = hell[0]->getProperties();
+ std::vector<std::shared_ptr<cygnal::Element> > hell = msg1->getElements();
+ std::vector<std::shared_ptr<cygnal::Element> > props = hell[0]->getProperties();
// printf("FIXME: %d, %d, %s:%s\n", props.size(), msg1->getStatus(),
// props[3]->getName(), props[3]->to_string());
if ((msg1->getStatus() == RTMPMsg::NC_CONNECT_SUCCESS)
@@ -647,7 +646,7 @@ test_results()
#if 0
RTMPServer rtmpserv;
- boost::shared_ptr<cygnal::Buffer> buf2 = rtmpserv.encodeResult(RTMPMsg::NC_CONNECT_SUCCESS);
+ std::shared_ptr<cygnal::Buffer> buf2 = rtmpserv.encodeResult(RTMPMsg::NC_CONNECT_SUCCESS);
// cerr << hexify(buf2->begin(), 122, true) << endl;
if ((memcmp(hex2->reference(), buf2->reference(), 122) == 0)) {
runtest.pass("Encoded RTMP result(NC_CONNECT_SUCCESS)");
@@ -657,10 +656,10 @@ test_results()
delete buf2;
#endif
- boost::shared_ptr<cygnal::Buffer> hex3(new Buffer("02 00 07 5f 72 65 73 75 6c 74 00 3f f0 00 00 00 00 00 00 05 03 00 0b 61 70 70 6c 69 63 61 74 69 6f 6e 05 00 05 6c 65 76 65 6c 02 00 05 65 72 72 6f 72 00 0b 64 65 73 63 72 69 70 74 69 6f 6e 02 00 00 00 04 63 6f 64 65 02 00 1c 4e 65 74 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 2e 46 61 69 6c 65 64 00 00 09"));
- boost::shared_ptr<RTMPMsg> msg2 = rtmp.decodeMsgBody(*hex3);
- std::vector<boost::shared_ptr<cygnal::Element> > hell = msg2->getElements();
- std::vector<boost::shared_ptr<cygnal::Element> > props = hell[0]->getProperties();
+ std::shared_ptr<cygnal::Buffer> hex3(new Buffer("02 00 07 5f 72 65 73 75 6c 74 00 3f f0 00 00 00 00 00 00 05 03 00 0b 61 70 70 6c 69 63 61 74 69 6f 6e 05 00 05 6c 65 76 65 6c 02 00 05 65 72 72 6f 72 00 0b 64 65 73 63 72 69 70 74 69 6f 6e 02 00 00 00 04 63 6f 64 65 02 00 1c 4e 65 74 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 2e 46 61 69 6c 65 64 00 00 09"));
+ std::shared_ptr<RTMPMsg> msg2 = rtmp.decodeMsgBody(*hex3);
+ std::vector<std::shared_ptr<cygnal::Element> > hell = msg2->getElements();
+ std::vector<std::shared_ptr<cygnal::Element> > props = hell[0]->getProperties();
// printf("FIXME: %d, %d, %s:%s\n", props.size(), msg1->getStatus(),
// props[3]->getName(), props[3]->to_string());
if (msg2) {
@@ -694,8 +693,8 @@ test_results()
// PD_English_Low at 2001
// clientid
// dsLgYohb
- boost::shared_ptr<cygnal::Buffer> hex4(new Buffer("02 00 08 6f 6e 53 74 61 74 75 73 00 00 00 00 00 00 00 00 00 05 03 00 05 6c 65 76 65 6c 02 00 06 73 74 61 74 75 73 00 04 63 6f 64 65 02 00 14 4e 65 74 53 74 72 65 61 6d 2e 50 6c 61 79 2e 52 65 73 65 74 00 0b 64 65 73 63 72 69 70 74 69 6f 6e 02 00 2a 50 6c 61 79 69 6e 67 20 61 6e 64 20 72 65 73 65 74 74 69 6e 67 20 50 44 5f 45 6e 67 6c 69 73 68 5f 4c 6f 77 40 32 30 30 31 2e 00 07 64 65 74 61 69 6c 73 02 00 13 50 44 5f 45 6e 67 6c 69 73 68 5f 4c 6f 77 40 32 30 30 31 00 08 63 6c 69 65 6e 74 69 64 02 00 08 64 73 4c 67 59 6f 68 62 00 00 09"));
- boost::shared_ptr<RTMPMsg> msg4 = rtmp.decodeMsgBody(*hex4);
+ std::shared_ptr<cygnal::Buffer> hex4(new Buffer("02 00 08 6f 6e 53 74 61 74 75 73 00 00 00 00 00 00 00 00 00 05 03 00 05 6c 65 76 65 6c 02 00 06 73 74 61 74 75 73 00 04 63 6f 64 65 02 00 14 4e 65 74 53 74 72 65 61 6d 2e 50 6c 61 79 2e 52 65 73 65 74 00 0b 64 65 73 63 72 69 70 74 69 6f 6e 02 00 2a 50 6c 61 79 69 6e 67 20 61 6e 64 20 72 65 73 65 74 74 69 6e 67 20 50 44 5f 45 6e 67 6c 69 73 68 5f 4c 6f 77 40 32 30 30 31 2e 00 07 64 65 74 61 69 6c 73 02 00 13 50 44 5f 45 6e 67 6c 69 73 68 5f 4c 6f 77 40 32 30 30 31 00 08 63 6c 69 65 6e 74 69 64 02 00 08 64 73 4c 67 59 6f 68 62 00 00 09"));
+ std::shared_ptr<RTMPMsg> msg4 = rtmp.decodeMsgBody(*hex4);
// std::vector<cygnal::Element *> hell4 = msg4->getElements();
if ((msg4->getStatus() == RTMPMsg::NS_PLAY_RESET)
&& (msg4->getMethodName() == "onStatus")
@@ -709,8 +708,8 @@ test_results()
// code
// NetStream
// Data.Start
- boost::shared_ptr<cygnal::Buffer> hex5(new Buffer("02 00 08 6f 6e 53 74 61 74 75 73 03 00 04 63 6f 64 65 02 00 14 4e 65 74 53 74 72 65 61 6d 2e 44 61 74 61 2e 53 74 61 72 74 00 00 09"));
- boost::shared_ptr<RTMPMsg> msg5 = rtmp.decodeMsgBody(*hex5);
+ std::shared_ptr<cygnal::Buffer> hex5(new Buffer("02 00 08 6f 6e 53 74 61 74 75 73 03 00 04 63 6f 64 65 02 00 14 4e 65 74 53 74 72 65 61 6d 2e 44 61 74 61 2e 53 74 61 72 74 00 00 09"));
+ std::shared_ptr<RTMPMsg> msg5 = rtmp.decodeMsgBody(*hex5);
if ((msg5->getStatus() == RTMPMsg::NS_DATA_START)
&& (msg5->getMethodName() == "onStatus")
&& (msg5->size() == 1)) {
@@ -728,8 +727,8 @@ test_results()
// Started playing PD_English_Low at 2001
// details
// PD_English_Low at 20..clientid...dsLgYohb.
- boost::shared_ptr<cygnal::Buffer> hex6(new Buffer("02 00 08 6f 6e 53 74 61 74 75 73 00 00 00 00 00 00 00 00 00 05 03 00 05 6c 65 76 65 6c 02 00 06 73 74 61 74 75 73 00 04 63 6f 64 65 02 00 14 4e 65 74 53 74 72 65 61 6d 2e 50 6c 61 79 2e 53 74 61 72 74 00 0b 64 65 73 63 72 69 70 74 69 6f 6e 02 00 24 53 74 61 72 74 65 64 20 70 6c 61 79 69 6e 67 20 50 44 5f 45 6e 67 6c 69 73 68 5f 4c 6f 77 40 32 30 30 31 2e 00 07 64 65 74 61 69 6c 73 02 00 13 50 44 5f 45 6e 67 6c 69 73 68 5f 4c 6f 77 40 32 30 30 31 00 08 63 6c 69 65 6e 74 69 64 02 00 08 64 73 4c 67 59 6f 68 62 00 00 09"));
- boost::shared_ptr<RTMPMsg> msg6 = rtmp.decodeMsgBody(*hex6);
+ std::shared_ptr<cygnal::Buffer> hex6(new Buffer("02 00 08 6f 6e 53 74 61 74 75 73 00 00 00 00 00 00 00 00 00 05 03 00 05 6c 65 76 65 6c 02 00 06 73 74 61 74 75 73 00 04 63 6f 64 65 02 00 14 4e 65 74 53 74 72 65 61 6d 2e 50 6c 61 79 2e 53 74 61 72 74 00 0b 64 65 73 63 72 69 70 74 69 6f 6e 02 00 24 53 74 61 72 74 65 64 20 70 6c 61 79 69 6e 67 20 50 44 5f 45 6e 67 6c 69 73 68 5f 4c 6f 77 40 32 30 30 31 2e 00 07 64 65 74 61 69 6c 73 02 00 13 50 44 5f 45 6e 67 6c 69 73 68 5f 4c 6f 77 40 32 30 30 31 00 08 63 6c 69 65 6e 74 69 64 02 00 08 64 73 4c 67 59 6f 68 62 00 00 09"));
+ std::shared_ptr<RTMPMsg> msg6 = rtmp.decodeMsgBody(*hex6);
if ((msg6->getStatus() == RTMPMsg::NS_PLAY_START)
&& (msg6->getMethodName() == "onStatus")
&& (msg6->size() >= 1)) {
@@ -743,8 +742,8 @@ test_results()
// errors when using GCC 3.4 ?
// ..............._error.?......... ..level...error..code...NetConnection.Connect.Rejected..description..A[ Server.Reject ] : Virtual host _defa.ultVHost_ is not available....
- boost::shared_ptr<cygnal::Buffer> hex7(new Buffer("02 00 06 5f 65 72 72 6f 72 00 3f f0 00 00 00 00 00 00 05 03 00 05 6c 65 76 65 6c 02 00 05 65 72 72 6f 72 00 04 63 6f 64 65 02 00 1e 4e 65 74 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 2e 52 65 6a 65 63 74 65 64 00 0b 64 65 73 63 72 69 70 74 69 6f 6e 02 00 41 5b 20 53 65 72 76 65 72 2e 52 65 6a 65 63 74 20 5d 20 3a 20 56 69 72 74 75 61 6c 20 68 6f 73 74 20 5f 64 65 66 61 c3 75 6c 74 56 48 6f 73 74 5f 20 69 73 20 6e 6f 74 20 61 76 61 69 6c 61 62 6c 65 2e 00 00 09"));
- boost::shared_ptr<RTMPMsg> msg7 = rtmp.decodeMsgBody(*hex7);
+ std::shared_ptr<cygnal::Buffer> hex7(new Buffer("02 00 06 5f 65 72 72 6f 72 00 3f f0 00 00 00 00 00 00 05 03 00 05 6c 65 76 65 6c 02 00 05 65 72 72 6f 72 00 04 63 6f 64 65 02 00 1e 4e 65 74 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e 65 63 74 2e 52 65 6a 65 63 74 65 64 00 0b 64 65 73 63 72 69 70 74 69 6f 6e 02 00 41 5b 20 53 65 72 76 65 72 2e 52 65 6a 65 63 74 20 5d 20 3a 20 56 69 72 74 75 61 6c 20 68 6f 73 74 20 5f 64 65 66 61 c3 75 6c 74 56 48 6f 73 74 5f 20 69 73 20 6e 6f 74 20 61 76 61 69 6c 61 62 6c 65 2e 00 00 09"));
+ std::shared_ptr<RTMPMsg> msg7 = rtmp.decodeMsgBody(*hex7);
if ((msg7->getStatus() == RTMPMsg::NC_CONNECT_REJECTED)
&& (msg7->getMethodName() == "_error")
&& (msg7->size() >= 1)) {
@@ -754,8 +753,8 @@ test_results()
}
//.onStatus.............level...error..code...NetStream.Play.StreamNotFound..description..6Failed to play gate06_tablan_bcueu_; .stream not found...details...gate06_tablan_bcueu_..clientid.A.;..
- boost::shared_ptr<cygnal::Buffer> hex8(new Buffer("02 00 08 6f 6e 53 74 61 74 75 73 00 00 00 00 00 00 00 00 00 05 03 00 05 6c 65 76 65 6c 02 00 05 65 72 72 6f 72 00 04 63 6f 64 65 02 00 1d 4e 65 74 53 74 72 65 61 6d 2e 50 6c 61 79 2e 53 74 72 65 61 6d 4e 6f 74 46 6f 75 6e 64 00 0b 64 65 73 63 72 69 70 74 69 6f 6e 02 00 36 46 61 69 6c 65 64 20 74 6f 20 70 6c 61 79 20 67 61 74 65 30 36 5f 74 61 62 6c 61 6e 5f 62 63 75 65 75 5f 3b 20 c4 73 74 72 65 61 6d 20 6e 6f 74 20 66 6f 75 6e 64 2e 00 07 64 65 74 61 69 6c 73 02 00 14 67 61 74 65 30 36 5f 74 61 62 6c 61 6e 5f 62 63 75 65 75 5f 00 08 63 6c 69 65 6e 74 69 64 00 41 d8 3b b4 e4 00 00 00 00 00 09"));
- boost::shared_ptr<RTMPMsg> msg8 = rtmp.decodeMsgBody(*hex8);
+ std::shared_ptr<cygnal::Buffer> hex8(new Buffer("02 00 08 6f 6e 53 74 61 74 75 73 00 00 00 00 00 00 00 00 00 05 03 00 05 6c 65 76 65 6c 02 00 05 65 72 72 6f 72 00 04 63 6f 64 65 02 00 1d 4e 65 74 53 74 72 65 61 6d 2e 50 6c 61 79 2e 53 74 72 65 61 6d 4e 6f 74 46 6f 75 6e 64 00 0b 64 65 73 63 72 69 70 74 69 6f 6e 02 00 36 46 61 69 6c 65 64 20 74 6f 20 70 6c 61 79 20 67 61 74 65 30 36 5f 74 61 62 6c 61 6e 5f 62 63 75 65 75 5f 3b 20 c4 73 74 72 65 61 6d 20 6e 6f 74 20 66 6f 75 6e 64 2e 00 07 64 65 74 61 69 6c 73 02 00 14 67 61 74 65 30 36 5f 74 61 62 6c 61 6e 5f 62 63 75 65 75 5f 00 08 63 6c 69 65 6e 74 69 64 00 41 d8 3b b4 e4 00 00 00 00 00 09"));
+ std::shared_ptr<RTMPMsg> msg8 = rtmp.decodeMsgBody(*hex8);
// msg4->dump();
// std::vector<cygnal::Element *> hell4 = msg4->getElements();
if ((msg8->getStatus() == RTMPMsg::NS_PLAY_STREAMNOTFOUND)
@@ -769,8 +768,8 @@ test_results()
#endif
//.....onStatus.............level...status..code...NetStream.Play.Stop..description..%Stopped playing gate06_tablan_bcueu_...details....gate06_tablan_bcueu_..clientid.A.;.......reason......
- boost::shared_ptr<cygnal::Buffer> hex9(new Buffer("02 00 08 6f 6e 53 74 61 74 75 73 00 00 00 00 00 00 00 00 00 05 03 00 05 6c 65 76 65 6c 02 00 06 73 74 61 74 75 73 00 04 63 6f 64 65 02 00 13 4e 65 74 53 74 72 65 61 6d 2e 50 6c 61 79 2e 53 74 6f 70 00 0b 64 65 73 63 72 69 70 74 69 6f 6e 02 00 25 53 74 6f 70 70 65 64 20 70 6c 61 79 69 6e 67 20 67 61 74 65 30 36 5f 74 61 62 6c 61 6e 5f 62 63 75 65 75 5f 2e 00 07 64 65 74 61 69 6c 73 c4 02 00 14 67 61 74 65 30 36 5f 74 61 62 6c 61 6e 5f 62 63 75 65 75 5f 00 08 63 6c 69 65 6e 74 69 64 00 41 d8 3b b4 e4 00 00 00 00 06 72 65 61 73 6f 6e 02 00 00 00 00 09"));
- boost::shared_ptr<RTMPMsg> msg9 = rtmp.decodeMsgBody(*hex9);
+ std::shared_ptr<cygnal::Buffer> hex9(new Buffer("02 00 08 6f 6e 53 74 61 74 75 73 00 00 00 00 00 00 00 00 00 05 03 00 05 6c 65 76 65 6c 02 00 06 73 74 61 74 75 73 00 04 63 6f 64 65 02 00 13 4e 65 74 53 74 72 65 61 6d 2e 50 6c 61 79 2e 53 74 6f 70 00 0b 64 65 73 63 72 69 70 74 69 6f 6e 02 00 25 53 74 6f 70 70 65 64 20 70 6c 61 79 69 6e 67 20 67 61 74 65 30 36 5f 74 61 62 6c 61 6e 5f 62 63 75 65 75 5f 2e 00 07 64 65 74 61 69 6c 73 c4 02 00 14 67 61 74 65 30 36 5f 74 61 62 6c 61 6e 5f 62 63 75 65 75 5f 00 08 63 6c 69 65 6e 74 69 64 00 41 d8 3b b4 e4 00 00 00 00 06 72 65 61 73 6f 6e 02 00 00 00 00 09"));
+ std::shared_ptr<RTMPMsg> msg9 = rtmp.decodeMsgBody(*hex9);
// msg4->dump();
// std::vector<cygnal::Element *> hell4 = msg4->getElements();
if ((msg9->getStatus() == RTMPMsg::NS_PLAY_STOP)
@@ -788,7 +787,7 @@ test_types()
GNASH_REPORT_FUNCTION;
RTMP rtmp;
- boost::shared_ptr<cygnal::Buffer> buf1(new Buffer("06 00 d2 04 00 00 00 00"));
+ std::shared_ptr<cygnal::Buffer> buf1(new Buffer("06 00 d2 04 00 00 00 00"));
}
void
@@ -797,8 +796,8 @@ test_client()
GNASH_REPORT_FUNCTION;
RTMPClient rtmp;
- boost::shared_ptr<cygnal::Buffer> buf1(new Buffer("02 00 07 63 6f 6e 6e 65 63 74 00 3f f0 00 00 00 00 00 00 03 00 03 61 70 70 02 00 0f 6d 70 33 5f 61 70 70 2f 69 64 33 74 65 73 74 00 08 66 6c 61 73 68 56 65 72 02 00 0c 4c 4e 58 20 39 2c 30 2c 33 31 2c 30 00 06 73 77 66 55 72 6c 02 00 29 68 74 74 70 3a 2f 2f 72 65 6e 61 75 6e 2e 63 6f 6d 2f 66 6c 65 78 32 2f 70 6f 73 74 73 2f 4d 50 33 54 65 73 74 2e 73 77 66 00 05 74 63 55 72 6c 02 00 21 72 74 6d 70 3a 2f 2f 72 65 6e 61 75 6e 2e 63 6f 6d 2f 6d 70 33 5f 61 70 70 2f 69 64 33 74 65 73 74 00 04 66 70 61 64 01 00 00 0b 61 75 64 69 6f 43 6f 64 65 63 73 00 40 83 38 00 00 00 00 00 00 0b 76 69 64 65 6f 43 6f 64 65 63 73 00 40 5f 00 00 00 00 00 00 00 0d 76 69 64 65 6f 46 75 6e 63 74 69 6f 6e 00 3f f0 00 00 00 00 00 00 00 07 70 61 67 65 55 72 6c 02 00 2a 68 74 74 70 3a 2f 2f 72 65 6e 61 75 6e 2e 63 6f 6d 2f 66 6c 65 78 32 2f 70 6f 73 74 73 2f 4d 50 33 54 65 73 74 2e 68 74 6d 6c 00 0e 6f 62 6a 65 63 74 45 6e 63 6f 64 69 6e 67 00 00 00 00 00 00 00 00 00 00 00 09"));
- boost::shared_ptr<cygnal::Buffer> buf2 = rtmp.encodeConnect("mp3_app/id3test", "http://renaun.com/flex2/posts/MP3Test.swf", "rtmp://renaun.com/mp3_app/id3test", 615, 124, 1, "http://renaun.com/flex2/posts/MP3Test.html");
+ std::shared_ptr<cygnal::Buffer> buf1(new Buffer("02 00 07 63 6f 6e 6e 65 63 74 00 3f f0 00 00 00 00 00 00 03 00 03 61 70 70 02 00 0f 6d 70 33 5f 61 70 70 2f 69 64 33 74 65 73 74 00 08 66 6c 61 73 68 56 65 72 02 00 0c 4c 4e 58 20 39 2c 30 2c 33 31 2c 30 00 06 73 77 66 55 72 6c 02 00 29 68 74 74 70 3a 2f 2f 72 65 6e 61 75 6e 2e 63 6f 6d 2f 66 6c 65 78 32 2f 70 6f 73 74 73 2f 4d 50 33 54 65 73 74 2e 73 77 66 00 05 74 63 55 72 6c 02 00 21 72 74 6d 70 3a 2f 2f 72 65 6e 61 75 6e 2e 63 6f 6d 2f 6d 70 33 5f 61 70 70 2f 69 64 33 74 65 73 74 00 04 66 70 61 64 01 00 00 0b 61 75 64 69 6f 43 6f 64 65 63 73 00 40 83 38 00 00 00 00 00 00 0b 76 69 64 65 6f 43 6f 64 65 63 73 00 40 5f 00 00 00 00 00 00 00 0d 76 69 64 65 6f 46 75 6e 63 74 69 6f 6e 00 3f f0 00 00 00 00 00 00 00 07 70 61 67 65 55 72 6c 02 00 2a 68 74 74 70 3a 2f 2f 72 65 6e 61 75 6e 2e 63 6f 6d 2f 66 6c 65 78 32 2f 70 6f 73 74 73 2f 4d 50 33 54 65 73 74 2e 68 74 6d 6c 00 0e 6f 62 6a 65 63 74 45 6e 63 6f 64 69 6e 67 00 00 00 00 00 00 00 00 00 00 00 09"));
+ std::shared_ptr<cygnal::Buffer> buf2 = rtmp.encodeConnect("mp3_app/id3test", "http://renaun.com/flex2/posts/MP3Test.swf", "rtmp://renaun.com/mp3_app/id3test", 615, 124, 1, "http://renaun.com/flex2/posts/MP3Test.html");
// cerr << hexify(buf1->begin(), buf1->size(), false) << endl;
// cerr << hexify(buf2->begin(), buf1->size(), false) << endl;
if ((memcmp(buf1->reference(), buf2->reference(), 50) == 0)) {
diff --git a/extensions/dejagnu/Makefile.am b/extensions/dejagnu/Makefile.am
index a9dab7f..124c9c7 100644
--- a/extensions/dejagnu/Makefile.am
+++ b/extensions/dejagnu/Makefile.am
@@ -23,7 +23,7 @@ pluginsdir = $(libdir)/gnash/plugins
plugins_LTLIBRARIES = dejagnu.la
-INCLUDES = \
+AM_CPPFLAGS = \
-I$(top_srcdir)/libbase \
-I$(top_srcdir)/libcore \
-I$(top_srcdir)/libcore/abc \
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/fileio/Makefile.am b/extensions/fileio/Makefile.am
index f6fbf40..02a8866 100644
--- a/extensions/fileio/Makefile.am
+++ b/extensions/fileio/Makefile.am
@@ -27,7 +27,7 @@ plugins_LTLIBRARIES = fileio.la
DEF_MAKESWF_FLAGS = -I $(top_builddir) -I $(top_srcdir)/testsuite/actionscript.all
-INCLUDES = \
+AM_CPPFLAGS = \
-I$(top_srcdir)/libbase \
-I$(top_srcdir)/libcore \
-I$(top_srcdir)/libcore/abc \
diff --git a/extensions/fileio/fileio.cpp b/extensions/fileio/fileio.cpp
index cf1cadd..23ca635 100644
--- a/extensions/fileio/fileio.cpp
+++ b/extensions/fileio/fileio.cpp
@@ -155,7 +155,7 @@ fileio_ctor(const fn_call& fn)
FileIO::FileIO()
:
- _stream(0)
+ _stream(nullptr)
{
}
@@ -340,7 +340,7 @@ FileIO::fclose()
// GNASH_REPORT_FUNCTION;
if (_stream) {
int ret = ::fclose(_stream);
- _stream = 0;
+ _stream = nullptr;
return ret;
}
return -1;
@@ -576,7 +576,7 @@ fileio_scandir(const fn_call& fn)
struct dirent **namelist;
- const int n = ::scandir(dir.c_str(), &namelist, 0, alphasort);
+ const int n = ::scandir(dir.c_str(), &namelist, nullptr, alphasort);
if (n < 0) {
return as_value(false);
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/extensions/mysql/mysql_db.cpp b/extensions/mysql/mysql_db.cpp
index f33637c..840bcae 100644
--- a/extensions/mysql/mysql_db.cpp
+++ b/extensions/mysql/mysql_db.cpp
@@ -102,9 +102,9 @@ mysql_ctor(const fn_call& fn)
MySQL::MySQL() :
- _db(NULL),
- _result(NULL),
- _row(NULL)
+ _db(nullptr),
+ _result(nullptr),
+ _row(nullptr)
{
}
@@ -134,7 +134,7 @@ MySQL::fetch_row()
if (_result) {
return fetch_row(_result);
}
- return NULL;
+ return nullptr;
}
MYSQL_ROW
@@ -163,7 +163,7 @@ MySQL::store_result()
if (_db) {
return store_result(_db);
}
- return NULL;
+ return nullptr;
}
MYSQL_RES *
@@ -182,12 +182,12 @@ MySQL::connect(const char* host, const char* dbname, const char* user, const cha
// also deallocates the connection handle
disconnect();
- if ((_db = mysql_init(NULL)) == NULL ) {
+ if ((_db = mysql_init(nullptr)) == nullptr ) {
log_error(_("Couldn't initialize database"));
return false;
}
- if (mysql_real_connect(_db, host, user, passwd, dbname, 0, NULL, 0) == NULL) {
+ if (mysql_real_connect(_db, host, user, passwd, dbname, 0, nullptr, 0) == nullptr) {
log_error(_("Couldn't connect to database"));
return false;
}
@@ -285,9 +285,9 @@ bool
MySQL::disconnect()
{
// GNASH_REPORT_FUNCTION;
- if (_db != NULL) {
+ if (_db != nullptr) {
mysql_close(_db);
- _db = NULL;
+ _db = nullptr;
}
return true;
}
diff --git a/gui/Player.cpp b/gui/Player.cpp
index 38d445f..8934598 100644
--- a/gui/Player.cpp
+++ b/gui/Player.cpp
@@ -57,6 +57,9 @@
#include "log.h"
#include "HostInterface.h"
#include "RunResources.h"
+#include "IOChannel.h"
+#include "MediaHandler.h"
+#include "GnashFactory.h"
using namespace gnash;
@@ -204,7 +207,7 @@ Player::Player()
_doRender(true),
_doSound(true),
_exitTimeout(0),
- _movieDef(0),
+ _movieDef(nullptr),
_maxAdvances(0),
#ifdef GNASH_FPS_DEBUG
_fpsDebugTime(0.0),
@@ -335,9 +338,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);
@@ -361,12 +364,12 @@ Player::load_movie()
}
catch (const GnashException& er) {
std::cerr << er.what() << std::endl;
- md = NULL;
+ md = nullptr;
}
if (!md) {
fprintf(stderr, "Could not load movie '%s'\n", _infile.c_str());
- return NULL;
+ return nullptr;
}
return md;
@@ -412,14 +415,16 @@ Player::run(int argc, char* argv[], const std::string& infile,
/// The RunResources should be populated before parsing.
_runResources.reset(new RunResources());
- boost::shared_ptr<SWF::TagLoadersTable> loaders(new SWF::TagLoadersTable());
+ std::shared_ptr<SWF::TagLoadersTable> loaders(
+ std::make_shared<SWF::TagLoadersTable>());
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));
+ std::shared_ptr<StreamProvider> sp(
+ std::make_shared<StreamProvider>(_url, baseURL, std::move(np)));
_runResources->setStreamProvider(sp);
// Set the Hardware video decoding resources. none, vaapi, omap
@@ -649,11 +654,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();
@@ -782,7 +787,7 @@ Player::CallbacksHandler::notify(const std::string& command,
//log_debug("allowscale: %s", args);
if (noCaseCompare(args, "true")) _gui.allowScale(true);
else {
- if (strtol(args.c_str(), NULL, 0)) _gui.allowScale(true);
+ if (strtol(args.c_str(), nullptr, 0)) _gui.allowScale(true);
else _gui.allowScale(false);
}
return;
@@ -803,7 +808,7 @@ Player::CallbacksHandler::notify(const std::string& command,
// private
-std::auto_ptr<Gui>
+std::unique_ptr<Gui>
Player::getGui()
{
#ifdef GUI_GTK
@@ -850,7 +855,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..23df7f7 100644
--- a/gui/Player.h
+++ b/gui/Player.h
@@ -31,7 +31,6 @@
#include <boost/intrusive_ptr.hpp>
#include <string>
-#include <boost/shared_ptr.hpp>
#include <map>
#include <memory>
@@ -250,7 +249,7 @@ private:
const Player& _player;
};
- std::auto_ptr<CallbacksHandler> _callbacksHandler;
+ std::shared_ptr<CallbacksHandler> _callbacksHandler;
void init();
@@ -268,7 +267,7 @@ private:
/// @return always the len parameter value (silent stream never ends
/// and is always available)
///
- static unsigned int silentStream(void* udata, boost::int16_t* stream,
+ static unsigned int silentStream(void* udata, std::int16_t* stream,
unsigned int len, bool& atEOF);
void init_sound();
@@ -281,7 +280,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);
@@ -319,18 +318,18 @@ private:
/// @todo This is hairy, and the core should be sorted out so that
/// sound_sample knows about its sound::sound_handler without
/// needing a RunResources.
- boost::shared_ptr<sound::sound_handler> _soundHandler;
+ std::shared_ptr<sound::sound_handler> _soundHandler;
- boost::shared_ptr<media::MediaHandler> _mediaHandler;
+ std::shared_ptr<media::MediaHandler> _mediaHandler;
/// Handlers (for sound etc) for a libcore run.
//
/// 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..587b9bd 100644
--- a/gui/ScreenShotter.cpp
+++ b/gui/ScreenShotter.cpp
@@ -47,12 +47,12 @@ typeFromFileName(const std::string& filename)
{ ".jpeg", GNASH_FILETYPE_JPEG }
};
- for (size_t i = 0; i < 3; ++i) {
- const char* ext = matches[i].ext;
+ for (const auto& match : matches) {
+ const char* ext = match.ext;
const std::string::size_type pos = filename.rfind(ext);
if (pos != std::string::npos &&
pos + std::strlen(ext) == filename.size()) {
- return matches[i].type;
+ return match.type;
}
}
return GNASH_FILETYPE_PNG;
@@ -68,11 +68,11 @@ ScreenShotter::ScreenShotter(const std::string& fileName, int quality)
{
}
-ScreenShotter::ScreenShotter(const std::string& fileName, FileType type,
+ScreenShotter::ScreenShotter(std::string fileName, FileType type,
int quality)
:
_immediate(false),
- _fileName(fileName),
+ _fileName(std::move(fileName)),
_last(false),
_type(type),
_quality(quality)
@@ -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/ScreenShotter.h b/gui/ScreenShotter.h
index 5545bf8..19100f0 100644
--- a/gui/ScreenShotter.h
+++ b/gui/ScreenShotter.h
@@ -21,10 +21,8 @@
#include <vector>
#include <string>
-#include <boost/shared_ptr.hpp>
#include <set>
#include <algorithm>
-#include <boost/lexical_cast.hpp>
#include "GnashEnums.h"
@@ -45,7 +43,7 @@ public:
ScreenShotter(const std::string& fileName, int quality = 100);
/// Create a ScreenShotter, specifying the output type.
- ScreenShotter(const std::string& fileName, FileType f, int quality = 100);
+ ScreenShotter(std::string fileName, FileType f, int quality = 100);
~ScreenShotter();
@@ -127,7 +125,7 @@ public:
if (t) (*t)();
_done.insert(frameAdvance);
- saveImage(r, boost::lexical_cast<std::string>(frameAdvance));
+ saveImage(r, std::to_string(frameAdvance));
_immediate = false;
}
diff --git a/gui/aos4/aos4.cpp b/gui/aos4/aos4.cpp
index fab9dd3..48a2602 100644
--- a/gui/aos4/aos4.cpp
+++ b/gui/aos4/aos4.cpp
@@ -630,7 +630,7 @@ AOS4Gui::createWindow(const char *title, int width, int height, int xPosition, i
_glue.prepDrawingArea(_width, _height);
//set_Renderer(_renderer);
- _runResources.setRenderer(boost::shared_ptr<Renderer>(_renderer));
+ _runResources.setRenderer(std::shared_ptr<Renderer>(_renderer));
struct Window *_window = _glue.getWindow();
diff --git a/gui/aos4/aos4_agg_glue.h b/gui/aos4/aos4_agg_glue.h
index a5999d2..9041ee5 100644
--- a/gui/aos4/aos4_agg_glue.h
+++ b/gui/aos4/aos4_agg_glue.h
@@ -29,7 +29,7 @@
#include <proto/dos.h>
#include <proto/gadtools.h>
-#include <boost/cstdint.hpp> // for boost::?int??_t
+#include <cstdint> // for boost::?int??_t
#include <vector>
namespace gnash
diff --git a/gui/aos4/aos4_cairo_glue.h b/gui/aos4/aos4_cairo_glue.h
index a7df590..3e1e794 100644
--- a/gui/aos4/aos4_cairo_glue.h
+++ b/gui/aos4/aos4_cairo_glue.h
@@ -31,7 +31,7 @@
#include <cairo.h>
-#include <boost/cstdint.hpp> // for boost::?int??_t
+#include <cstdint> // for boost::?int??_t
#include <vector>
namespace gnash
diff --git a/gui/aos4/aos4_glue.h b/gui/aos4/aos4_glue.h
index 07abe8f..788f4b6 100644
--- a/gui/aos4/aos4_glue.h
+++ b/gui/aos4/aos4_glue.h
@@ -18,7 +18,7 @@
#ifndef __AOS4_GLUE_H__
#define __AOS4_GLUE_H__
-#include <boost/cstdint.hpp> // for boost::?int??_t
+#include <cstdint> // for boost::?int??_t
#include "Renderer.h"
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/aqua.cpp b/gui/aqua/aqua.cpp
index 59ba0cf..5b78622 100644
--- a/gui/aqua/aqua.cpp
+++ b/gui/aqua/aqua.cpp
@@ -126,7 +126,7 @@ bool AquaGui::init(int argc, char **argv[]) /* Self-explainatory */
_renderer.reset(_glue.createRenderHandler());
if(!_renderer)return false;
- _runResources.setRenderer(boost::shared_ptr<Renderer>(_renderer));
+ _runResources.setRenderer(std::shared_ptr<Renderer>(_renderer));
return true;
}
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/dump.cpp b/gui/dump/dump.cpp
index 729f8df..b361803 100644
--- a/gui/dump/dump.cpp
+++ b/gui/dump/dump.cpp
@@ -81,8 +81,7 @@ void terminate_signal(int /*signo*/)
DumpGui::DumpGui(unsigned long xid, float scale, bool loop, RunResources& r)
:
Gui(xid, scale, loop, r),
- _agg_renderer(0),
- _offscreenbuf(NULL),
+ _agg_renderer(nullptr),
_offscreenbuf_size(-1),
_timeout(0),
_framecount(0),
@@ -91,6 +90,7 @@ DumpGui::DumpGui(unsigned long xid, float scale, bool loop, RunResources& r)
_pixelformat("BGRA32"),
_fileOutput(),
_fileOutputFPS(0), // dump at every heart-beat by default
+ _fileOutputAdvance(0),
_lastVideoFrameDump(0), // this will be computed
_sleepUS(0),
_started(false),
@@ -120,7 +120,7 @@ DumpGui::init(int argc, char **argv[])
optind = 0;
opterr = 0;
- char c;
+ int c;
while ((c = getopt(argc, *argv, "D:S:T:")) != -1) {
if (c == 'D') {
// Terminate if no filename is given.
@@ -172,10 +172,12 @@ DumpGui::init(int argc, char **argv[])
_renderer.reset(create_Renderer_agg(_pixelformat.c_str()));
_runResources.setRenderer(_renderer);
+#ifdef USE_SOUND
sound::sound_handler* mixer = _runResources.soundHandler();
media::MediaHandler* mh = _runResources.mediaHandler();
_soundHandler.reset(new sound::NullSoundHandler(mh, mixer));
_runResources.setSoundHandler(_soundHandler);
+#endif
// We know what type of renderer it is.
_agg_renderer = static_cast<Renderer_agg_base*>(_renderer.get());
@@ -257,7 +259,7 @@ DumpGui::run()
}
}
- const boost::uint32_t total_time = _clock.elapsed() - _startTime;
+ const std::uint32_t total_time = _clock.elapsed() - _startTime;
std::cout << "TIME=" << total_time << std::endl;
std::cout << "FPS_ACTUAL=" << _fileOutputFPS << std::endl;
@@ -306,6 +308,7 @@ DumpGui::writeFrame()
void
DumpGui::writeSamples()
{
+#ifdef USE_SOUND
sound::sound_handler* sh = _runResources.soundHandler();
unsigned int ms = _clock.elapsed() - _startTime;
@@ -327,13 +330,14 @@ DumpGui::writeSamples()
// And update _samplesFetched..
_samplesFetched += toFetch;
- boost::int16_t samples[1024];
+ std::int16_t samples[1024];
while (toFetch) {
unsigned int n = std::min(toFetch, 1024u);
// Fetching samples should trigger writing to file
sh->fetchSamples(samples, n);
toFetch -= n;
}
+#endif
}
diff --git a/gui/dump/dump.h b/gui/dump/dump.h
index 29abea9..1e44aea 100644
--- a/gui/dump/dump.h
+++ b/gui/dump/dump.h
@@ -29,8 +29,6 @@
#include <string>
#include <fstream>
-#include <boost/scoped_array.hpp>
-#include <boost/shared_ptr.hpp>
namespace gnash {
namespace sound {
@@ -85,7 +83,7 @@ private:
// is destroyed on reset and when it goes out of scope (including on
// stack unwinding after an exception), so there is no need to delete
// it.
- boost::scoped_array<unsigned char> _offscreenbuf;
+ std::unique_ptr<unsigned char[]> _offscreenbuf;
int _offscreenbuf_size; /* size of window (bytes) */
@@ -103,14 +101,12 @@ private:
std::ofstream _fileStream; /* stream for output file */
void init_dumpfile(); /* convenience method to create dump file */
- boost::shared_ptr<sound::sound_handler> _soundHandler;
+ std::shared_ptr<sound::sound_handler> _soundHandler;
ManualClock _clock;
unsigned long _sleepUS; // micro-seconds sleep between iterations
- unsigned int _videoDumpFPS;
-
std::string _startTrigger;
bool _started;
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 cdbeef5..5e9a155 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
@@ -273,7 +273,7 @@ FBGui::init(int argc, char *** argv)
// Initialize all the input devices
// Look for Mice that use the PS/2 mouse protocol
- std::vector<boost::shared_ptr<InputDevice> > possibles
+ std::vector<std::shared_ptr<InputDevice> > possibles
= InputDevice::scanForDevices();
if (possibles.empty()) {
log_error(_("Found no accessible input event devices"));
@@ -281,7 +281,7 @@ FBGui::init(int argc, char *** argv)
log_debug("Found %d input event devices.", possibles.size());
}
- std::vector<boost::shared_ptr<InputDevice> >::iterator it;
+ std::vector<std::shared_ptr<InputDevice> >::iterator it;
for (it=possibles.begin(); it!=possibles.end(); ++it) {
// Set the screen size, which is used for calculating absolute
// mouse locations from relative ones.
@@ -535,7 +535,7 @@ FBGui::find_accessible_tty(int no)
if (fn) return fn;
}
- return NULL;
+ return nullptr;
}
char *
@@ -549,7 +549,7 @@ FBGui::find_accessible_tty(const char* format, int no)
return fname;
}
- return NULL;
+ return nullptr;
}
bool
@@ -563,19 +563,17 @@ FBGui::disable_terminal()
char* tty = find_accessible_tty(0);
- log_debug("Disabling terminal %s", tty);
-
- int fd;
-
if (!tty) {
- log_error(_("Could not detect controlling TTY"));
+ log_error(_("Could not detect controlling TTY when trying to disable terminal"));
return false;
}
+ log_debug("Disabling terminal %s", tty);
+
// Detect the currently active virtual terminal (so we can switch back to
// it later)
- fd = open(tty, O_RDWR);
+ int fd = open(tty, O_RDWR);
if (fd < 0) {
log_error(_("Could not open %s"), tty);
return false;
@@ -694,13 +692,14 @@ FBGui::enable_terminal()
// log_debug("Restoring terminal...");
char* tty = find_accessible_tty(_own_vt);
- log_debug("Enabling terminal %s", tty);
if (!tty) {
- log_error(_("Could not find device for VT number %d"), _own_vt);
+ log_error(_("Could not find device for VT number %d when enabling terminal"), _own_vt);
return false;
}
+ log_debug("Enabling terminal %s", tty);
+
int fd = open(tty, O_RDWR);
if (fd < 0) {
log_error(_("Could not open %s"), tty);
@@ -740,11 +739,11 @@ FBGui::checkForData()
{
// GNASH_REPORT_FUNCTION;
- std::vector<boost::shared_ptr<InputDevice> >::iterator it;
+ std::vector<std::shared_ptr<InputDevice> >::iterator it;
for (it=_inputs.begin(); it!=_inputs.end(); ++it) {
(*it)->check();
- boost::shared_ptr<InputDevice::input_data_t> ie = (*it)->popData();
+ std::shared_ptr<InputDevice::input_data_t> ie = (*it)->popData();
if (ie) {
// notifyMouseMove(ie->x, ie->y);
#if 0
@@ -756,7 +755,7 @@ FBGui::checkForData()
#endif
// Range check and convert the position from relative to
// absolute
- boost::shared_array<int> coords =
+ std::unique_ptr<int[]> coords =
InputDevice::convertAbsCoords(ie->x, ie->y,
getStage()->getStageWidth(),
getStage()->getStageHeight());
diff --git a/gui/fb/fb_glue.h b/gui/fb/fb_glue.h
index fd38de0..f387361 100644
--- a/gui/fb/fb_glue.h
+++ b/gui/fb/fb_glue.h
@@ -76,7 +76,7 @@ public:
virtual void beforeRendering(movie_root *) {};
protected:
- boost::scoped_ptr<Renderer> _renderer;
+ std::unique_ptr<Renderer> _renderer;
};
} // end of namespace gui
diff --git a/gui/fb/fb_glue_agg.cpp b/gui/fb/fb_glue_agg.cpp
index 6fb60fd..7dc8224 100644
--- a/gui/fb/fb_glue_agg.cpp
+++ b/gui/fb/fb_glue_agg.cpp
@@ -23,8 +23,7 @@
#include <sys/ioctl.h>
#include <sys/mman.h>
#include <cstring>
-#include <boost/cstdint.hpp>
-#include <boost/shared_ptr.hpp>
+#include <cstdint>
#include <fcntl.h>
#include "log.h"
@@ -44,15 +43,17 @@ namespace gui {
//---------------------------------------------
FBAggGlue::FBAggGlue()
- : _fd(-1)
+ : _fd(-1),
+ _fixinfo(),
+ _varinfo()
{
// GNASH_REPORT_FUNCTION;
- memset(&_varinfo, 0, sizeof(fb_var_screeninfo));
- memset(&_fixinfo, 0, sizeof(fb_fix_screeninfo));
}
FBAggGlue::FBAggGlue(int fd)
- : _fd(fd)
+ : _fd(fd),
+ _fixinfo(),
+ _varinfo()
{
// GNASH_REPORT_FUNCTION;
}
@@ -149,7 +150,7 @@ FBAggGlue::createRenderHandler()
if (!_device) {
log_error(_("No Device layer initialized yet!"));
- return 0;
+ return nullptr;
}
const int width = _device->getWidth();
@@ -175,18 +176,18 @@ FBAggGlue::createRenderHandler()
rawfb->getBlueOffset(), rawfb->getBlueSize(),
rawfb->getDepth());
- Renderer_agg_base *agg_handler = 0;
+ Renderer_agg_base *agg_handler = nullptr;
if (pixelformat) {
agg_handler = create_Renderer_agg(pixelformat);
} else {
log_error(_("The pixel format of your framebuffer could not be detected."));
- return 0;
+ return nullptr;
}
- assert(agg_handler != NULL);
+ assert(agg_handler != nullptr);
// Get the memory buffer to have AGG render into.
- boost::uint8_t *mem = 0;
+ std::uint8_t *mem = nullptr;
if (rawfb->isSingleBuffered()) {
log_debug(_("Double buffering disabled"));
mem = rawfb->getFBMemory();
diff --git a/gui/fb/fb_glue_agg.h b/gui/fb/fb_glue_agg.h
index 068b1a5..443fe12 100644
--- a/gui/fb/fb_glue_agg.h
+++ b/gui/fb/fb_glue_agg.h
@@ -23,8 +23,7 @@
#include "gnashconfig.h"
#endif
-#include <boost/cstdint.hpp>
-#include <boost/shared_ptr.hpp>
+#include <cstdint>
#include "Renderer.h"
#include "fbsup.h"
@@ -105,7 +104,7 @@ protected:
struct fb_fix_screeninfo _fixinfo;
struct fb_var_screeninfo _varinfo;
- boost::scoped_ptr<Renderer> _renderer;
+ std::unique_ptr<Renderer> _renderer;
geometry::Range2d<int> _validbounds;
std::vector< geometry::Range2d<int> > _drawbounds;
diff --git a/gui/fb/fb_glue_gles1.h b/gui/fb/fb_glue_gles1.h
index b7e7daa..ca80682 100644
--- a/gui/fb/fb_glue_gles1.h
+++ b/gui/fb/fb_glue_gles1.h
@@ -50,7 +50,7 @@
# include "egl/eglDevice.h"
#endif
-#include <boost/scoped_ptr.hpp>
+#include <memory>
#include "fbsup.h"
@@ -89,7 +89,7 @@ protected:
int _fd;
private:
- boost::scoped_ptr<Renderer> _renderer;
+ std::unique_ptr<Renderer> _renderer;
EGLDisplay _display;
EGLConfig _config;
EGLContext _context;
diff --git a/gui/fb/fb_glue_ovg.cpp b/gui/fb/fb_glue_ovg.cpp
index 42e1c0e..ea1dbe1 100644
--- a/gui/fb/fb_glue_ovg.cpp
+++ b/gui/fb/fb_glue_ovg.cpp
@@ -64,7 +64,7 @@ FBOvgGlue::init(int argc, char **argv[])
bool dfb = false;
bool x11 = false;
// Probe to see what display devices we have that could be used.
- boost::shared_array<renderer::GnashDevice::dtype_t> devs = probeDevices();
+ std::unique_ptr<renderer::GnashDevice::dtype_t[]> devs = probeDevices();
if (devs) {
int i = 0;
while (devs[i] != renderer::GnashDevice::GNASH_NODEV) {
diff --git a/gui/fb/fb_glue_ovg.h b/gui/fb/fb_glue_ovg.h
index 84de344..0c2cef1 100644
--- a/gui/fb/fb_glue_ovg.h
+++ b/gui/fb/fb_glue_ovg.h
@@ -23,7 +23,7 @@
#include "gnashconfig.h"
#endif
-#include <boost/cstdint.hpp>
+#include <cstdint>
#include "openvg/OpenVGRenderer.h"
#include "fbsup.h"
#include "fb_glue.h"
diff --git a/gui/fb/fbsup.h b/gui/fb/fbsup.h
index 9e78908..23f409b 100644
--- a/gui/fb/fbsup.h
+++ b/gui/fb/fbsup.h
@@ -23,9 +23,7 @@
#include "gnashconfig.h"
#endif
-#include <boost/scoped_array.hpp>
-#include <boost/shared_ptr.hpp>
-#include <boost/cstdint.hpp>
+#include <cstdint>
#include <vector>
#include <linux/fb.h>
@@ -196,12 +194,12 @@ private:
size_t _timeout; // timeout period for the event loop
bool _fullscreen;
- boost::shared_ptr<FBGlue> _glue;
+ std::shared_ptr<FBGlue> _glue;
/// This is the array of functioning input devices.
- std::vector<boost::shared_ptr<InputDevice> > _inputs;
+ std::vector<std::shared_ptr<InputDevice> > _inputs;
- boost::shared_ptr<Renderer> _renderer;
+ std::shared_ptr<Renderer> _renderer;
#ifdef HAVE_LINUX_UINPUT_H
UinputDevice _uinput;
#endif
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/fltk_glue_cairo.cpp b/gui/fltk/fltk_glue_cairo.cpp
index 2957ce3..c105dc0 100644
--- a/gui/fltk/fltk_glue_cairo.cpp
+++ b/gui/fltk/fltk_glue_cairo.cpp
@@ -109,7 +109,7 @@ FltkCairoGlue::initBuffer(int width, int height)
if (firstTime) {
//set_Renderer(_renderer);
- _runResources.setRenderer(boost::shared_ptr<Renderer>(_renderer));
+ _runResources.setRenderer(std::shared_ptr<Renderer>(_renderer));
firstTime = false;
}
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 94ed3b0..7fccecd 100644
--- a/gui/gnash.cpp
+++ b/gui/gnash.cpp
@@ -1,7 +1,7 @@
// gnash.cpp: Main routine for top-level SWF player, for Gnash.
//
// Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010,
-// 2011 Free Software Foundation, Inc
+// 2011, 2014 Free Software Foundation, Inc
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
@@ -31,12 +31,11 @@
#include <boost/algorithm/string/join.hpp>
#include <boost/algorithm/string/split.hpp>
#include <boost/algorithm/string/classification.hpp>
-#include <boost/function.hpp>
-#include <boost/bind.hpp>
#include <algorithm>
#include <cstdlib>
#include <utility>
#include <functional>
+
#ifdef ENABLE_NLS
# include <clocale>
#endif
@@ -48,6 +47,7 @@
#include "GnashException.h"
#include "revno.h"
#include "MediaHandler.h"
+#include "GnashFactory.h"
#include "utility.h"
#include "accumulator.h"
#include "GnashFileUtilities.h"
@@ -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);
}
@@ -100,7 +100,7 @@ main(int argc, char *argv[])
// Enable native language support, i.e. internationalization
#ifdef ENABLE_NLS
- std::setlocale (LC_ALL, "");
+ setlocale (LC_ALL, "");
bindtextdomain (PACKAGE, LOCALEDIR);
textdomain (PACKAGE);
#endif
@@ -173,7 +173,7 @@ main(int argc, char *argv[])
// We only expect GnashExceptions here. No others should be thrown!
try {
std::for_each(infiles.begin(), infiles.end(),
- boost::bind(&playFile, boost::ref(player), argc, argv, _1));
+ std::bind(&playFile, std::ref(player), argc, argv, std::placeholders::_1));
}
catch (const gnash::GnashException& ex) {
std::cerr << "Error: " << ex.what() << "\n";
@@ -205,9 +205,9 @@ void
setupFDs(gnash::Player& p, const std::string& fds)
{
int hostfd = 0, controlfd = 0;
- hostfd = std::strtol(fds.substr(0, fds.find(":")).c_str(), NULL, 0);
+ hostfd = std::strtol(fds.substr(0, fds.find(":")).c_str(), nullptr, 0);
std::string csub = fds.substr(fds.find(":")+1, fds.size());
- controlfd = strtol(csub.c_str(), 0, 0);
+ controlfd = strtol(csub.c_str(), nullptr, 0);
// gnash::log_debug("Host FD #%d, Control FD #%d\n", hostfd, controlfd);
if (hostfd < 0) {
@@ -283,31 +283,31 @@ getDebuggingOptions(gnash::Player& p)
desc.add_options()
("verbose,v", accumulator<int>()
- ->notifier(boost::bind(&LogFile::setVerbosity, &dbglogfile, _1)),
+ ->notifier(std::bind((void(LogFile::*)(int))&LogFile::setVerbosity, &dbglogfile, std::placeholders::_1)),
_("Produce verbose output"))
// NB: if we use a bool_switch(), the default will be false. TODO:
// make a sensible process for handling command-line and rcfile options.
("writelog,w", po::value<bool>()
->zero_tokens()
- ->notifier(boost::bind(&RcInitFile::useWriteLog, &rcfile, _1)),
+ ->notifier(std::bind((void(RcInitFile::*)(bool))&RcInitFile::useWriteLog, &rcfile, std::placeholders::_1)),
_("Produce the disk based debug log"))
#if VERBOSE_ACTION
("verbose-actions,a", po::bool_switch()
- ->notifier(boost::bind(&LogFile::setActionDump, &dbglogfile, _1)),
+ ->notifier(std::bind(&LogFile::setActionDump, &dbglogfile, std::placeholders::_1)),
_("Be (very) verbose about action execution"))
#endif
#if VERBOSE_PARSE
("verbose-parsing,p", po::bool_switch()
- ->notifier(boost::bind(&LogFile::setParserDump, &dbglogfile, _1)),
+ ->notifier(std::bind(&LogFile::setParserDump, &dbglogfile, std::placeholders::_1)),
_("Be (very) verbose about parsing"))
#endif
#ifdef GNASH_FPS_DEBUG
("debug-fps,f", po::value<float>()
- ->notifier(boost::bind(&Player::setFpsPrintTime, &p, _1)),
+ ->notifier(std::bind(&Player::setFpsPrintTime, &p, std::placeholders::_1)),
_("Print FPS every num seconds"))
#endif
@@ -343,52 +343,52 @@ getSupportedOptions(gnash::Player& p)
_("Print version information and exit"))
("scale,s", po::value<float>()
- ->notifier(boost::bind(&Player::setScale, &p,
- boost::bind(gnash::clamp<float>, _1, 0.01f, 100.f))),
+ ->notifier(std::bind(&Player::setScale, &p,
+ std::bind(gnash::clamp<float>, std::placeholders::_1, 0.01f, 100.f))),
_("Scale the movie by the specified factor"))
("delay,d", po::value<int>()
- ->notifier(boost::bind(&Player::setDelay, &p, _1)),
+ ->notifier(std::bind(&Player::setDelay, &p, std::placeholders::_1)),
_("Number of milliseconds to delay in main loop"))
("audio-dump,A", po::value<string>()
- ->notifier(boost::bind(&Player::setAudioDumpfile, &p, _1)),
+ ->notifier(std::bind(&Player::setAudioDumpfile, &p, std::placeholders::_1)),
_("Audio dump file (wave format)"))
("hwaccel", po::value<string>()
->default_value("none")
- ->notifier(boost::bind(&Player::setHWAccel, &p, _1)),
+ ->notifier(std::bind(&Player::setHWAccel, &p, std::placeholders::_1)),
(string(_("Hardware Video Accelerator to use"))
+ string("\nnone|vaapi")). c_str())
("xid,x", po::value<long>()
- ->notifier(boost::bind(&Player::setWindowId, &p, _1)),
+ ->notifier(std::bind(&Player::setWindowId, &p, std::placeholders::_1)),
_("X11 Window ID for display"))
("width,j", po::value<int>()
- ->notifier(boost::bind(&Player::setWidth, &p, _1)),
+ ->notifier(std::bind(&Player::setWidth, &p, std::placeholders::_1)),
_("Set window width"))
("height,k", po::value<int>()
- ->notifier(boost::bind(&Player::setHeight, &p, _1)),
+ ->notifier(std::bind(&Player::setHeight, &p, std::placeholders::_1)),
_("Set window height"))
("x-pos,X", po::value<int>()
- ->notifier(boost::bind(&Player::setXPosition, &p, _1)),
+ ->notifier(std::bind(&Player::setXPosition, &p, std::placeholders::_1)),
_("Set window x position"))
("y-pos,Y", po::value<int>()
- ->notifier(boost::bind(&Player::setYPosition, &p, _1)),
+ ->notifier(std::bind(&Player::setYPosition, &p, std::placeholders::_1)),
_("Set window y position"))
("once,1", po::bool_switch()
- ->notifier(boost::bind(&Player::setDoLoop, &p,
- boost::bind(std::logical_not<bool>(), _1))),
+ ->notifier(std::bind(&Player::setDoLoop, &p,
+ std::bind(std::logical_not<bool>(), std::placeholders::_1))),
_("Exit when/if movie reaches the last frame"))
("render-mode,r", po::value<int>()
->default_value(3)
- ->notifier(boost::bind(&setupSoundAndRendering, boost::ref(p), _1)),
+ ->notifier(std::bind(&setupSoundAndRendering, std::ref(p), std::placeholders::_1)),
(string("0 ")
+ string(_("disable rendering and sound"))
+ string("\n1 ")
@@ -403,7 +403,7 @@ getSupportedOptions(gnash::Player& p)
->default_value(rcfile.getMediaHandler().empty() ?
( handlers.empty() ? "" : handlers.front() )
: rcfile.getMediaHandler() )
- ->notifier(boost::bind(&Player::setMedia, &p, _1)),
+ ->notifier(std::bind(&Player::setMedia, &p, std::placeholders::_1)),
(string(_("The media handler to use"))
+ string("\n") + boost::join(handlers, "|")
).c_str())
@@ -411,61 +411,61 @@ getSupportedOptions(gnash::Player& p)
("renderer,R", po::value<string>()
->default_value(rcfile.getRenderer().empty() ? renderers.front()
: rcfile.getRenderer())
- ->notifier(boost::bind(&Player::setRenderer, &p, _1)),
+ ->notifier(std::bind(&Player::setRenderer, &p, std::placeholders::_1)),
(string(_("The renderer to use"))
+ string("\n") + boost::join(renderers, "|")
).c_str())
("timeout,t", po::value<float>()
- ->notifier(boost::bind(&Player::setExitTimeout, &p, _1)),
+ ->notifier(std::bind(&Player::setExitTimeout, &p, std::placeholders::_1)),
_("Exit after the specified number of seconds"))
("real-url,u", po::value<string>(&url),
_("Set \"real\" URL of the movie"))
("base-url,U", po::value<string>()
- ->notifier(boost::bind(&Player::setBaseUrl, &p, _1)),
+ ->notifier(std::bind(&Player::setBaseUrl, &p, std::placeholders::_1)),
_("Set \"base\" URL for resolving relative URLs"))
("param,P", po::value<std::vector<std::string> >()
->composing()
- ->notifier(boost::bind(&setupFlashVars, boost::ref(p), _1)),
+ ->notifier(std::bind(&setupFlashVars, std::ref(p), std::placeholders::_1)),
_("Set parameter (e.g. \"FlashVars=A=1&b=2\")"))
("fd,F", po::value<string>()
- ->notifier(boost::bind(&setupFDs, boost::ref(p), _1)),
+ ->notifier(std::bind(&setupFDs, std::ref(p), std::placeholders::_1)),
(string(_("Filedescriptor to use for external communications"))
+ string(" <fd>:<fd>")
).c_str())
("cookie-file,C", po::value<string>()
- ->notifier(boost::bind(&setupCookiesIn, boost::ref(p), _1)),
+ ->notifier(std::bind(&setupCookiesIn, std::ref(p), std::placeholders::_1)),
_("Cookiefile to use"))
("max-advances", po::value<size_t>()
- ->notifier(boost::bind(&Player::setMaxAdvances, &p, _1)),
+ ->notifier(std::bind(&Player::setMaxAdvances, &p, std::placeholders::_1)),
_("Exit after specified number of frame advances"))
("fullscreen", po::bool_switch()
- ->notifier(boost::bind(&Player::setStartFullscreen, &p, _1)),
+ ->notifier(std::bind(&Player::setStartFullscreen, &p, std::placeholders::_1)),
_("Start in fullscreen mode"))
// TODO: move to GUIs actually implementing this
("hide-menubar", po::bool_switch()
- ->notifier(boost::bind(&Player::hideMenu, &p, _1)),
+ ->notifier(std::bind(&Player::hideMenu, &p, std::placeholders::_1)),
_("Start without displaying the menu bar"))
// TODO: do this in ScreenShotter class.
("screenshot", po::value<string>()
- ->notifier(boost::bind(&Player::setScreenShots, &p, _1)),
+ ->notifier(std::bind(&Player::setScreenShots, &p, std::placeholders::_1)),
_("List of frames to save as screenshots"))
("screenshot-file", po::value<string>()
- ->notifier(boost::bind(&Player::setScreenShotFile, &p, _1)),
+ ->notifier(std::bind(&Player::setScreenShotFile, &p, std::placeholders::_1)),
_("Filename pattern for screenshot images"))
("screenshot-quality", po::value<size_t>()
- ->notifier(boost::bind(&Player::setScreenShotQuality, &p, _1)),
+ ->notifier(std::bind(&Player::setScreenShotQuality, &p, std::placeholders::_1)),
_("Quality for screenshot output (not all formats)"))
("input-file", po::value<std::vector<std::string> >(&infiles),
diff --git a/gui/gtk/gtk.cpp b/gui/gtk/gtk.cpp
index 0db93c0..6f6d828 100644
--- a/gui/gtk/gtk.cpp
+++ b/gui/gtk/gtk.cpp
@@ -52,6 +52,7 @@
#include "RunResources.h"
#include "VM.h"
#include "GnashEnums.h"
+#include "MediaHandler.h"
#include "gtk_canvas.h"
#ifdef HAVE_VA_VA_H
@@ -278,7 +279,7 @@ GtkGui::error(const std::string& msg)
GtkWidget* popup = gtk_dialog_new_with_buttons("Gnash Error",
GTK_WINDOW(_window),
static_cast<GtkDialogFlags>(GTK_DIALOG_DESTROY_WITH_PARENT),
- GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, NULL);
+ GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, nullptr);
g_signal_connect_swapped(popup, "response", G_CALLBACK(gtk_widget_destroy),
popup);
@@ -402,7 +403,7 @@ GtkGui::setCursor(gnash_cursor_type newcursor)
cursortype = GDK_LAST_CURSOR;
}
- GdkCursor* gdkcursor = NULL;
+ GdkCursor* gdkcursor = nullptr;
if (cursortype != GDK_LAST_CURSOR) {
gdkcursor = gdk_cursor_new(cursortype);
@@ -441,7 +442,7 @@ GtkGui::showMouse(bool show)
GdkColor *color;
color = g_new0(GdkColor, 1);
- pixmap = gdk_pixmap_new(NULL, 1, 1, 1);
+ pixmap = gdk_pixmap_new(nullptr, 1, 1, 1);
GdkCursor* cursor = gdk_cursor_new_from_pixmap(pixmap, pixmap,
color, color, 0, 0);
@@ -565,7 +566,7 @@ GtkGui::setupEvents()
G_CALLBACK(visibilityNotifyEvent), this);
g_signal_connect_after(_canvas, "realize",
- G_CALLBACK (realizeEvent), NULL);
+ G_CALLBACK (realizeEvent), nullptr);
// connect_after because we are going to cause a rendering and the canvas
// widget should have had a chance to update the size of the render area
@@ -584,6 +585,11 @@ GtkGui::grabFocus()
void
GtkGui::quitUI()
{
+ stopAdvanceTimer();
+ // Unregister the callback registered by setTimeout, if any. This also
+ // removes other callbacks, but we're about to go away anyway.
+ while (g_source_remove_by_user_data(this)) {}
+ gtk_widget_destroy(_window);
gtk_main_quit();
}
@@ -594,7 +600,7 @@ GtkGui::startAdvanceTimer()
stopAdvanceTimer();
_advanceSourceTimer = g_timeout_add_full(G_PRIORITY_LOW, _interval,
- (GSourceFunc)advance_movie, this, NULL);
+ (GSourceFunc)advance_movie, this, nullptr);
log_debug(_("Advance interval timer set to %d ms (~ %d FPS)"),
_interval, _interval ? 1000/_interval : 1000);
@@ -763,7 +769,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;
@@ -778,9 +784,9 @@ GtkGui::makeTreeModel(std::auto_ptr<movie_root::InfoTree> treepointer)
GtkTreeStore *model = gtk_tree_store_new (NUM_COLUMNS,
G_TYPE_STRING, G_TYPE_STRING);
- GtkTreeIter iter;
- GtkTreeIter child_iter;
- GtkTreeIter parent_iter;
+ GtkTreeIter iter = {0, 0, 0, 0};
+ GtkTreeIter child_iter = {0, 0, 0, 0};
+ GtkTreeIter parent_iter = {0, 0, 0, 0};
// Depth within the *GTK* tree.
int depth = 0;
@@ -813,7 +819,7 @@ GtkGui::makeTreeModel(std::auto_ptr<movie_root::InfoTree> treepointer)
}
//Read in data from present node
- if (depth == 0) gtk_tree_store_append(model, &child_iter, NULL);
+ if (depth == 0) gtk_tree_store_append(model, &child_iter, nullptr);
else gtk_tree_store_append(model, &child_iter, &iter);
gtk_tree_store_set(model, &child_iter,
@@ -1232,7 +1238,7 @@ PreferencesDialog::PreferencesDialog(GtkWidget* window)
// The buttons and their response codes:
GTK_STOCK_OK, GTK_RESPONSE_OK,
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
- NULL);
+ nullptr);
// Add Gnash icon
addGnashIcon(GTK_WINDOW(_prefsDialog));
@@ -1700,7 +1706,7 @@ GtkGui::showPropertiesDialog()
GTK_DIALOG_DESTROY_WITH_PARENT),
// Just a 'close' button
GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE,
- NULL);
+ nullptr);
// Not too small... But I'd rather not have to specify
// a size in pixels.
@@ -1715,7 +1721,7 @@ GtkGui::showPropertiesDialog()
// Destroy the window when a button is clicked.
g_signal_connect (propsDialog, "response",
- G_CALLBACK(gtk_widget_destroy), NULL);
+ G_CALLBACK(gtk_widget_destroy), nullptr);
GtkWidget *propsvbox = gtk_vbox_new (FALSE, 1);
gtk_container_add(GTK_CONTAINER(
@@ -1723,7 +1729,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),
@@ -1765,19 +1771,19 @@ GtkGui::showPropertiesDialog()
-1, _("Variable"),
renderer, "text",
STRING1_COLUMN,
- NULL);
+ nullptr);
// 'Value' column:
// Set to be 'editable' so that the data can be selected and
// copied; it can't actually be edited, though.
renderer = gtk_cell_renderer_text_new ();
- g_object_set (renderer, "xalign", 0.0, "editable", TRUE, NULL);
+ g_object_set (renderer, "xalign", 0.0, "editable", TRUE, nullptr);
gtk_tree_view_insert_column_with_attributes(
GTK_TREE_VIEW(treeview),
-1, _("Value"),
renderer, "text",
STRING2_COLUMN,
- NULL);
+ nullptr);
//Add tree to scrollwindow.
gtk_container_add(GTK_CONTAINER(scrollwindow1), treeview);
@@ -1796,12 +1802,12 @@ GtkGui::showAboutDialog()
"Rob Savoye",
"Sandro Santilli",
"Ann Barcomb",
- NULL
+ nullptr
};
const gchar *artists[] = {
"Jason Savoye",
- NULL
+ nullptr
};
const gchar *authors[] = {
@@ -1823,7 +1829,7 @@ GtkGui::showAboutDialog()
"Bob Naugle",
"Si Liu",
"Sharad Desai",
- NULL
+ nullptr
};
const std::string license =
@@ -2232,7 +2238,7 @@ GtkGui::yesno(const std::string& question)
/// Anonymous namespace for callbacks, local functions, event handlers etc.
namespace {
-static GList *pixmaps_directories = NULL;
+static GList *pixmaps_directories = nullptr;
// Adds the Gnash icon to a window.
void
@@ -2249,19 +2255,19 @@ addGnashIcon(GtkWindow* window)
GdkPixbuf*
createPixbuf (const gchar *filename)
{
- gchar *pathname = NULL;
+ gchar *pathname = nullptr;
GdkPixbuf *pixbuf;
- GError *error = NULL;
+ GError *error = nullptr;
if (!filename || !filename[0])
- return NULL;
+ return nullptr;
pathname = findPixmapFile (filename);
if (!pathname) {
log_error (_("Couldn't find pixmap file: %s"), filename);
g_warning(_("Couldn't find pixmap file: %s"), filename);
- return NULL;
+ return nullptr;
}
pixbuf = gdk_pixbuf_new_from_file (pathname, &error);
@@ -2391,7 +2397,7 @@ findPixmapFile(const gchar* filename)
g_free (pathname);
elem = elem->next;
}
- return NULL;
+ return nullptr;
}
@@ -2593,11 +2599,11 @@ menuOpenFile(GtkMenuItem* /*menuitem*/, gpointer data)
#if GTK_CHECK_VERSION(2,4,0)
dialog = gtk_file_chooser_dialog_new (_("Open file"),
- NULL,
+ nullptr,
GTK_FILE_CHOOSER_ACTION_OPEN,
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
- NULL);
+ nullptr);
if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) {
openFile(dialog, gui);
@@ -2658,7 +2664,7 @@ popupHandler(GtkWidget *widget, GdkEvent *event)
GdkEventButton* event_button =
reinterpret_cast<GdkEventButton*>(event);
if (event_button->button == 3) {
- gtk_menu_popup(menu, NULL, NULL, NULL, NULL,
+ gtk_menu_popup(menu, nullptr, nullptr, nullptr, nullptr,
event_button->button, event_button->time);
return TRUE;
}
@@ -2680,7 +2686,7 @@ popupHandlerAlt(GtkWidget *widget, GdkEvent *event)
GdkEventButton* event_button =
reinterpret_cast<GdkEventButton*>(event);
if (event_button->button == 3) {
- gtk_menu_popup(menu, NULL, NULL, NULL, NULL,
+ gtk_menu_popup(menu, nullptr, nullptr, nullptr, nullptr,
event_button->button, event_button->time);
return TRUE;
}
diff --git a/gui/gtk/gtk_canvas.cpp b/gui/gtk/gtk_canvas.cpp
index aeeae3a..b834c39 100644
--- a/gui/gtk/gtk_canvas.cpp
+++ b/gui/gtk/gtk_canvas.cpp
@@ -60,13 +60,13 @@
struct _GnashCanvas
{
GtkDrawingArea base_instance;
- std::auto_ptr<gnash::GtkGlue> glue;
- boost::shared_ptr<gnash::Renderer> renderer;
+ std::unique_ptr<gnash::GtkGlue> glue;
+ std::shared_ptr<gnash::Renderer> renderer;
};
G_DEFINE_TYPE(GnashCanvas, gnash_canvas, GTK_TYPE_DRAWING_AREA)
-static GObjectClass *parent_class = NULL;
+static GObjectClass *parent_class = nullptr;
static void gnash_canvas_class_init(GnashCanvasClass *gnash_canvas_class);
static void gnash_canvas_init(GnashCanvas *canvas);
@@ -83,7 +83,7 @@ namespace {
GtkWidget *
gnash_canvas_new ()
{
- return GTK_WIDGET(g_object_new (GNASH_TYPE_CANVAS, NULL));
+ return GTK_WIDGET(g_object_new (GNASH_TYPE_CANVAS, nullptr));
}
static void
@@ -177,6 +177,9 @@ gnash_canvas_realize(GtkWidget *widget)
&attributes, attributes_mask);
gdk_window_set_user_data (widget->window, widget);
+ widget->style = gtk_style_attach (widget->style, widget->window);
+ gtk_style_set_background (widget->style, widget->window, GTK_STATE_NORMAL);
+
#if defined(RENDERER_CAIRO) || defined(RENDERER_AGG)
GnashCanvas *canvas = GNASH_CANVAS(widget);
// cairo needs the _drawingArea.window to prepare it ..
@@ -320,7 +323,7 @@ gnash_canvas_before_rendering(GnashCanvas *canvas, gnash::movie_root* stage)
canvas->glue->beforeRendering(stage);
}
-boost::shared_ptr<gnash::Renderer>
+std::shared_ptr<gnash::Renderer>
gnash_canvas_get_renderer(GnashCanvas *canvas)
{
return canvas->renderer;
diff --git a/gui/gtk/gtk_canvas.h b/gui/gtk/gtk_canvas.h
index 13d5bc9..3a43030 100644
--- a/gui/gtk/gtk_canvas.h
+++ b/gui/gtk/gtk_canvas.h
@@ -20,9 +20,9 @@
#ifndef GNASH_GTK_CANVAS_H
#define GNASH_GTK_CANVAS_H
+#include <memory>
#include <string>
#include <gtk/gtkdrawingarea.h>
-#include <boost/shared_ptr.hpp>
// Forward declarations.
namespace gnash {
@@ -60,7 +60,7 @@ void gnash_canvas_before_rendering (GnashCanvas *canvas, gnash::movie_root* stag
G_END_DECLS
/// Get the Renderer for this canvas
-boost::shared_ptr<gnash::Renderer> gnash_canvas_get_renderer(GnashCanvas *canvas);
+std::shared_ptr<gnash::Renderer> gnash_canvas_get_renderer(GnashCanvas *canvas);
#endif
diff --git a/gui/gtk/gtk_glue.h b/gui/gtk/gtk_glue.h
index 721e2b5..36ce777 100644
--- a/gui/gtk/gtk_glue.h
+++ b/gui/gtk/gtk_glue.h
@@ -40,7 +40,7 @@ namespace gnash {
class GtkGlue : public DeviceGlue
{
public:
- GtkGlue() : _drawing_area(0), _needs_area(false) { }
+ GtkGlue() : _drawing_area(nullptr), _needs_area(false) { }
virtual ~GtkGlue() { }
virtual bool init(int argc, char **argv[]) = 0;
diff --git a/gui/gtk/gtk_glue_agg.cpp b/gui/gtk/gtk_glue_agg.cpp
index b4b3223..9db9bf8 100644
--- a/gui/gtk/gtk_glue_agg.cpp
+++ b/gui/gtk/gtk_glue_agg.cpp
@@ -39,8 +39,8 @@ namespace gnash
{
GtkAggGlue::GtkAggGlue()
-: _offscreenbuf(NULL),
- _agg_renderer(NULL)
+: _offscreenbuf(nullptr),
+ _agg_renderer(nullptr)
{
GNASH_REPORT_FUNCTION;
}
@@ -108,7 +108,7 @@ GtkAggGlue::setRenderHandlerSize(int width, int height)
assert(width > 0);
assert(height > 0);
- assert(_agg_renderer != NULL);
+ assert(_agg_renderer != nullptr);
if (_offscreenbuf && _offscreenbuf->width == width &&
_offscreenbuf->height == height) {
diff --git a/gui/gtk/gtk_glue_agg.h b/gui/gtk/gtk_glue_agg.h
index fd86558..9b14000 100644
--- a/gui/gtk/gtk_glue_agg.h
+++ b/gui/gtk/gtk_glue_agg.h
@@ -25,7 +25,6 @@
#include <gtk/gtk.h>
#include <gdk/gdk.h>
-#include <boost/scoped_array.hpp>
namespace gnash
{
diff --git a/gui/gtk/gtk_glue_agg_vaapi.cpp b/gui/gtk/gtk_glue_agg_vaapi.cpp
index c3d02d3..1eda283 100644
--- a/gui/gtk/gtk_glue_agg_vaapi.cpp
+++ b/gui/gtk/gtk_glue_agg_vaapi.cpp
@@ -292,7 +292,7 @@ GtkAggVaapiGlue::beforeRendering(movie_root* stage)
}
VaapiVideoWindow *
-GtkAggVaapiGlue::getVideoWindow(boost::shared_ptr<VaapiSurface> surface,
+GtkAggVaapiGlue::getVideoWindow(std::shared_ptr<VaapiSurface> surface,
GdkWindow *parent_window,
VaapiRectangle const & rect)
{
@@ -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;
@@ -349,7 +349,7 @@ GtkAggVaapiGlue::render()
if (first_img != last_img) {
for (img = first_img; img != last_img; ++img) {
- boost::shared_ptr<VaapiSurface> surface = (*img)->surface();
+ std::shared_ptr<VaapiSurface> surface = (*img)->surface();
VaapiRectangle src_rect;
src_rect.x = (*img)->x();
@@ -393,7 +393,7 @@ GtkAggVaapiGlue::render()
}
for (img = first_img; img != last_img; ++img) {
- boost::shared_ptr<VaapiSurface> surface = (*img)->surface();
+ std::shared_ptr<VaapiSurface> surface = (*img)->surface();
status = vaSyncSurface(gvactx->display(), surface->get());
if (!vaapi_check_status(status, "vaSyncSurface() video"))
diff --git a/gui/gtk/gtk_glue_agg_vaapi.h b/gui/gtk/gtk_glue_agg_vaapi.h
index b0a52a1..c77e040 100644
--- a/gui/gtk/gtk_glue_agg_vaapi.h
+++ b/gui/gtk/gtk_glue_agg_vaapi.h
@@ -25,8 +25,6 @@
#include <gtk/gtk.h>
#include <gdk/gdk.h>
-#include <boost/shared_ptr.hpp>
-#include <boost/scoped_array.hpp>
#include <memory>
#include "vaapi/VaapiImageFormat.h"
@@ -58,7 +56,7 @@ public:
void configure(GtkWidget *const widget, GdkEventConfigure *const event);
private:
- VaapiVideoWindow *getVideoWindow(boost::shared_ptr<VaapiSurface> surface,
+ VaapiVideoWindow *getVideoWindow(std::shared_ptr<VaapiSurface> surface,
GdkWindow *parent_window,
VaapiRectangle const & rect);
@@ -67,11 +65,11 @@ private:
private:
Renderer_agg_base *_agg_renderer;
VaapiImageFormat _vaapi_image_format;
- boost::shared_ptr<VaapiImage> _vaapi_image;
+ std::shared_ptr<VaapiImage> _vaapi_image;
unsigned int _vaapi_image_width;
unsigned int _vaapi_image_height;
- boost::shared_ptr<VaapiSubpicture> _vaapi_subpicture;
- std::auto_ptr<VaapiSurface> _vaapi_surface;
+ std::shared_ptr<VaapiSubpicture> _vaapi_subpicture;
+ std::unique_ptr<VaapiSurface> _vaapi_surface;
unsigned int _window_width;
unsigned int _window_height;
bool _window_is_setup;
diff --git a/gui/gtk/gtk_glue_cairo.cpp b/gui/gtk/gtk_glue_cairo.cpp
index b46693f..133e6fb 100644
--- a/gui/gtk/gtk_glue_cairo.cpp
+++ b/gui/gtk/gtk_glue_cairo.cpp
@@ -29,9 +29,10 @@ namespace gnash
{
GtkCairoGlue::GtkCairoGlue()
- : _cairo_handle(0),
- _cairo_offscreen(0),
- _image(0)
+ : _cairo_handle(nullptr),
+ _cairo_offscreen(nullptr),
+ _renderer(nullptr),
+ _image(nullptr)
{
GNASH_REPORT_FUNCTION;
}
@@ -128,7 +129,7 @@ cairoFormatFromVisual(const GdkVisual* visual, cairo_format_t* format /*out*/)
*format = CAIRO_FORMAT_ARGB32;
break;
default:
- format = NULL;
+ format = nullptr;
return false;
}
return true;
@@ -143,12 +144,12 @@ GtkCairoGlue::createGdkImageSurface(const int& width, const int& height)
cairo_format_t format;
if (!cairoFormatFromVisual(visual, &format)) {
- return NULL;
+ return nullptr;
}
_image = gdk_image_new (GDK_IMAGE_FASTEST, visual, width, height);
if (!_image) {
- return NULL;
+ return nullptr;
}
cairo_surface_t* surface =
@@ -158,8 +159,8 @@ GtkCairoGlue::createGdkImageSurface(const int& width, const int& height)
if (cairo_surface_status(surface) != CAIRO_STATUS_SUCCESS) {
cairo_surface_destroy(surface);
gdk_image_destroy(_image);
- _image = 0;
- return NULL;
+ _image = nullptr;
+ return nullptr;
}
return surface;
@@ -175,7 +176,7 @@ GtkCairoGlue::createSimilarSurface(const int& width, const int& height)
if (cairo_surface_status(surface) != CAIRO_STATUS_SUCCESS) {
cairo_surface_destroy(surface);
- return NULL;
+ return nullptr;
}
return surface;
}
@@ -188,7 +189,7 @@ GtkCairoGlue::createMemorySurface(const int& width, const int& height)
if (cairo_surface_status(surface) != CAIRO_STATUS_SUCCESS) {
cairo_surface_destroy(surface);
- return NULL;
+ return nullptr;
}
return surface;
}
@@ -201,7 +202,7 @@ GtkCairoGlue::configure(GtkWidget *const /*widget*/,
if (_image) {
gdk_image_destroy(_image);
- _image = 0;
+ _image = nullptr;
}
cairo_surface_t* surface = createGdkImageSurface(event->width, event->height);
diff --git a/gui/gtk/gtk_glue_gtkglext.cpp b/gui/gtk/gtk_glue_gtkglext.cpp
index fc94fb0..848ec71 100644
--- a/gui/gtk/gtk_glue_gtkglext.cpp
+++ b/gui/gtk/gtk_glue_gtkglext.cpp
@@ -41,13 +41,13 @@ GtkGlExtGlue::~GtkGlExtGlue()
// GNASH_REPORT_FUNCTION;
if (_glconfig) {
g_object_unref (G_OBJECT (_glconfig));
- _glconfig = NULL;
+ _glconfig = nullptr;
}
GdkGLContext *glcontext = gtk_widget_get_gl_context (_drawing_area);
if (glcontext) {
g_object_unref (G_OBJECT (glcontext));
- glcontext = NULL;
+ glcontext = nullptr;
}
}
@@ -94,7 +94,7 @@ GtkGlExtGlue::prepDrawingArea(GtkWidget *drawing_area)
// GNASH_REPORT_FUNCTION;
_drawing_area = drawing_area;
gtk_widget_set_gl_capability(_drawing_area, _glconfig,
- NULL, TRUE, GDK_GL_RGBA_TYPE);
+ nullptr, TRUE, GDK_GL_RGBA_TYPE);
}
Renderer*
diff --git a/gui/gtk/gtk_glue_gtkglext.h b/gui/gtk/gtk_glue_gtkglext.h
index cb65726..3a41131 100644
--- a/gui/gtk/gtk_glue_gtkglext.h
+++ b/gui/gtk/gtk_glue_gtkglext.h
@@ -25,7 +25,6 @@
#include <gtk/gtk.h>
#include <gdk/gdk.h>
-#include <boost/scoped_array.hpp>
#include <gtk/gtkgl.h>
diff --git a/gui/gtk/gtk_glue_ovg.cpp b/gui/gtk/gtk_glue_ovg.cpp
index df4b4e1..657f995 100644
--- a/gui/gtk/gtk_glue_ovg.cpp
+++ b/gui/gtk/gtk_glue_ovg.cpp
@@ -79,7 +79,7 @@ GtkOvgGlue::init(int /*argc*/, char ** /*argv*/[])
bool x11 = false;
// Probe to see what display devices we have that could be used.
- boost::shared_array<renderer::GnashDevice::dtype_t> devs = probeDevices();
+ std::unique_ptr<renderer::GnashDevice::dtype_t[]> devs = probeDevices();
if (devs) {
int i = 0;
while (devs[i] != renderer::GnashDevice::GNASH_NODEV) {
diff --git a/gui/gtk/gtk_glue_ovg.h b/gui/gtk/gtk_glue_ovg.h
index f8c1a1d..08f7aba 100644
--- a/gui/gtk/gtk_glue_ovg.h
+++ b/gui/gtk/gtk_glue_ovg.h
@@ -25,8 +25,7 @@
#include <gtk/gtk.h>
#include <gdk/gdk.h>
-#include <boost/scoped_array.hpp>
-#include <boost/scoped_ptr.hpp>
+#include <memory>
#include "openvg/OpenVGRenderer.h"
#ifdef HAVE_VG_OPENVG_H
@@ -75,7 +74,7 @@ class GtkOvgGlue : public GtkGlue
unsigned int _width;
unsigned int _height;
- boost::shared_ptr<renderer::openvg::Renderer_ovg> _renderer;
+ std::shared_ptr<renderer::openvg::Renderer_ovg> _renderer;
};
} // namespace gui
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..b248926 100644
--- a/gui/gui.cpp
+++ b/gui/gui.cpp
@@ -26,7 +26,6 @@
#include <vector>
#include <algorithm>
-#include <boost/assign/list_of.hpp>
#include "MovieClip.h"
#include "Renderer.h"
@@ -61,7 +60,7 @@
#ifndef DISABLE_REGION_UPDATES_DEBUGGING
// a runtime check would make the { x; } block conditionally executed
-#define IF_DEBUG_REGION_UPDATES(x) { if (_showUpdatedRegions) { x } }
+#define IF_DEBUG_REGION_UPDATES(...) do { if (_showUpdatedRegions) { __VA_ARGS__; } } while(0);
#else
#define IF_DEBUG_REGION_UPDATES(x)
#endif
@@ -111,8 +110,8 @@ Gui::Gui(RunResources& r) :
,fps_timer_interval(0.0)
,frames_dropped(0)
#endif
- ,_movieDef(0)
- ,_stage(0)
+ ,_movieDef(nullptr)
+ ,_stage(nullptr)
,_stopped(false)
,_started(false)
,_showUpdatedRegions(false)
@@ -155,8 +154,8 @@ Gui::Gui(unsigned long xid, float scale, bool loop, RunResources& r)
,fps_timer_interval(0.0)
,frames_dropped(0)
#endif
- ,_movieDef(0)
- ,_stage(0)
+ ,_movieDef(nullptr)
+ ,_stage(nullptr)
,_stopped(false)
,_started(false)
,_showUpdatedRegions(false)
@@ -476,10 +475,10 @@ Gui::notifyMouseMove(int ux, int uy)
if ( _stopped ) return;
// A stage pseudopixel is user pixel / _xscale wide
- boost::int32_t x = (ux-_xoffset) / _xscale;
+ std::int32_t x = (ux-_xoffset) / _xscale;
// A stage pseudopixel is user pixel / _xscale high
- boost::int32_t y = (uy-_yoffset) / _yscale;
+ std::int32_t y = (uy-_yoffset) / _yscale;
#ifdef DEBUG_MOUSE_COORDINATES
log_debug("mouse @ %d,%d", x, y);
@@ -806,18 +805,19 @@ Gui::display(movie_root* m)
float ymin = bounds.getMinY();
float ymax = bounds.getMaxY();
- const std::vector<point> box = boost::assign::list_of
- (point(xmin, ymin))
- (point(xmax, ymin))
- (point(xmax, ymax))
- (point(xmin, ymax));
+ const std::vector<point> box = {
+ point(xmin, ymin),
+ point(xmax, ymin),
+ point(xmax, ymax),
+ point(xmin, ymax)
+ };
_renderer->draw_poly(box, rgba(0,0,0,0), rgba(255,0,0,255),
SWFMatrix(), false);
}
}
- );
+ );
// show frame on screen
renderBuffer();
@@ -984,7 +984,7 @@ Gui::advanceMovie(bool doDisplay)
}
if (_screenShotter.get() && _renderer.get()) {
- _screenShotter->screenShot(*_renderer, _advances, doDisplay ? 0 : &dis);
+ _screenShotter->screenShot(*_renderer, _advances, doDisplay ? nullptr : &dis);
}
// Only increment advances and check for exit condition when we've
@@ -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;
@@ -1148,10 +1148,10 @@ Gui::getMovieInfo() const
_stage->gc().countCollectables(cc);
const std::string lbl = "GC managed ";
- for (GC::CollectablesCount::iterator i=cc.begin(), e=cc.end(); i!=e; ++i) {
- const std::string& typ = i->first;
+ for (auto& countinfo : cc) {
+ const std::string& typ = countinfo.first;
std::ostringstream ss;
- ss << i->second;
+ ss << countinfo.second;
firstLevelIter = tr->append_child(topIter,
std::make_pair(lbl + typ, ss.str()));
}
@@ -1176,11 +1176,11 @@ Gui::fpsCounterTick()
return;
}
- boost::uint64_t current_timer = clocktime::getTicks();
+ std::uint64_t current_timer = clocktime::getTicks();
// TODO: keep fps_timer_interval in milliseconds to avoid the multiplication
// at each fpsCounterTick call...
- boost::uint64_t interval_ms = (boost::uint64_t)(fps_timer_interval * 1000.0);
+ std::uint64_t interval_ms = (std::uint64_t)(fps_timer_interval * 1000.0);
if (fps_counter_total==1) {
fps_timer = current_timer;
@@ -1240,8 +1240,8 @@ Gui::fpsCounterTick()
void
Gui::addFlashVars(Gui::VariableMap& from)
{
- for (VariableMap::iterator i=from.begin(), ie=from.end(); i!=ie; ++i) {
- _flashVars[i->first] = i->second;
+ for (auto& variable : from) {
+ _flashVars[variable.first] = variable.second;
}
}
diff --git a/gui/gui.h b/gui/gui.h
index 69ec79e..1bef998 100644
--- a/gui/gui.h
+++ b/gui/gui.h
@@ -24,10 +24,11 @@
#endif
#include <boost/intrusive_ptr.hpp>
-#include <boost/scoped_ptr.hpp>
+#include <memory>
#include <string>
#include <map>
#include <utility>
+#include <functional>
#include "snappingrange.h" // for InvalidatedRanges
#include "GnashKey.h"
@@ -113,7 +114,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 +384,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;
@@ -502,7 +503,7 @@ protected:
unsigned int _interval;
/// The handler which is called to update the client area of our window.
- boost::shared_ptr<Renderer> _renderer;
+ std::shared_ptr<Renderer> _renderer;
/// Signals that the next frame must be re-rendered completely because the
/// window size did change.
@@ -536,7 +537,7 @@ private:
struct Display;
- std::map<int /* fd */, boost::function<void ()> > _fd_callbacks;
+ std::map<int /* fd */, std::function<void ()> > _fd_callbacks;
/// Width of a window pixel, in stage pseudopixel units.
float _xscale;
@@ -545,10 +546,10 @@ private:
float _yscale;
/// Window pixel X offset of stage origin
- boost::int32_t _xoffset;
+ std::int32_t _xoffset;
/// Window pixel Y offset of stage origin
- boost::int32_t _yoffset;
+ std::int32_t _yoffset;
bool display(movie_root* m);
@@ -561,7 +562,7 @@ private:
// the number of calls to movie_advance()
unsigned int fps_counter_total;
- boost::uint64_t fps_timer, fps_start_timer;
+ std::uint64_t fps_timer, fps_start_timer;
/// The time, in seconds, between prints (which also resets the fps counter).
//
@@ -602,7 +603,7 @@ private:
InterruptableVirtualClock _virtualClock;
/// Checked on each advance for screenshot activity if it exists.
- boost::scoped_ptr<ScreenShotter> _screenShotter;
+ std::unique_ptr<ScreenShotter> _screenShotter;
#ifdef ENABLE_KEYBOARD_MOUSE_MOVEMENTS
int _xpointer;
@@ -614,18 +615,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/haiku/haiku_agg_glue.cpp b/gui/haiku/haiku_agg_glue.cpp
index bbc2b8b..ad546fc 100644
--- a/gui/haiku/haiku_agg_glue.cpp
+++ b/gui/haiku/haiku_agg_glue.cpp
@@ -326,7 +326,7 @@ HaikuAggGlue::ViewNeeded()
}
bool
-HaikuAggGlue::prepDrawingArea(int width, int height, boost::uint32_t sdl_flags)
+HaikuAggGlue::prepDrawingArea(int width, int height, std::uint32_t sdl_flags)
{
(void) sdl_flags;
@@ -340,7 +340,7 @@ HaikuAggGlue::prepDrawingArea(int width, int height, boost::uint32_t sdl_flags)
assert(_bpp % 8 == 0);
- boost::uint32_t rmask, gmask, bmask, amask;
+ std::uint32_t rmask, gmask, bmask, amask;
switch(_bpp) {
case 32: // RGBA32
diff --git a/gui/haiku/haiku_agg_glue.h b/gui/haiku/haiku_agg_glue.h
index b813686..c52c373 100644
--- a/gui/haiku/haiku_agg_glue.h
+++ b/gui/haiku/haiku_agg_glue.h
@@ -20,7 +20,7 @@
#define HAIKU_AGG_GLUE_H
#include <vector>
-#include <boost/cstdint.hpp> // for boost::?int??_t
+#include <cstdint> // for boost::?int??_t
#include <Renderer.h>
#include <SupportDefs.h>
@@ -56,8 +56,8 @@ class HaikuAggGlue
void setInvalidatedRegions(const InvalidatedRanges& ranges);
void ViewNoMore();
void ViewNeeded();
- bool prepDrawingArea(int width, int height, boost::uint32_t sdl_flags);
- boost::uint32_t maskFlags(boost::uint32_t sdl_flags);
+ bool prepDrawingArea(int width, int height, std::uint32_t sdl_flags);
+ std::uint32_t maskFlags(std::uint32_t sdl_flags);
void render();
void render(int minx, int miny, int maxx, int maxy);
void Shown();
diff --git a/gui/pythonmod/Makefile.am b/gui/pythonmod/Makefile.am
index 0b86da1..4cb6750 100644
--- a/gui/pythonmod/Makefile.am
+++ b/gui/pythonmod/Makefile.am
@@ -38,7 +38,7 @@ GNASH_INCLUDES = \
-I$(top_srcdir)/libdevice/vaapi \
-I$(top_srcdir)/libsound
-INCLUDES = \
+AM_CPPFLAGS = \
$(PYTHON_CFLAGS) \
$(PYGTK_CFLAGS) \
$(GTK2_CFLAGS) \
@@ -47,12 +47,18 @@ INCLUDES = \
pkgpyexec_LTLIBRARIES = gnash.la
GNASH_LIBS = \
- $(top_builddir)/libmedia/libgnashmedia.la \
$(top_builddir)/librender/libgnashrender.la \
- $(top_builddir)/libsound/libgnashsound.la \
$(top_builddir)/libcore/libgnashcore.la \
- $(top_builddir)/libbase/libgnashbase.la \
- $(RENDERER_LIBS)
+ $(top_builddir)/libbase/libgnashbase.la
+
+if BUILD_LIBMEDIA
+GNASH_LIBS += $(top_builddir)/libmedia/libgnashmedia.la
+endif
+if BUILD_LIBSOUND
+GNASH_LIBS += $(top_builddir)/libsound/libgnashsound.la
+endif
+
+GNASH_LIBS += $(RENDERER_LIBS)
gnash_la_LDFLAGS = -module -avoid-version initgnash -export-dynamic #-no-undefined
gnash_la_LIBADD = \
@@ -67,7 +73,7 @@ inst_HEADERS = gnash-view.h
RENDERER_GLUE =
if BUILD_OGL_RENDERER
RENDERER_GLUE += $(top_srcdir)/gui/gtk/gtk_glue_gtkglext.cpp
-INCLUDES += $(GLEXT_CFLAGS)
+AM_CPPFLAGS += $(GLEXT_CFLAGS)
gnash_la_LIBADD += $(GLEXT_LIBS)
endif
if BUILD_AGG_RENDERER
@@ -84,7 +90,7 @@ BUILT_SOURCES =
endif
nodist_gnash_la_SOURCES = $(BUILT_SOURCES)
-gnash_la_CPPFLAGS = $(INCLUDES) $(GNASH_INCLUDES)
+gnash_la_CPPFLAGS = $(AM_CPPFLAGS) $(GNASH_INCLUDES)
gnash_la_SOURCES = \
gnashmodule.c \
gnash-view.cpp \
diff --git a/gui/pythonmod/gnash-view.cpp b/gui/pythonmod/gnash-view.cpp
index f1d23e5..2084839 100644
--- a/gui/pythonmod/gnash-view.cpp
+++ b/gui/pythonmod/gnash-view.cpp
@@ -41,6 +41,7 @@
#include "Global_as.h"
#include "NamingPolicy.h"
#include "StreamProvider.h"
+#include "GnashFactory.h"
enum
{
@@ -55,25 +56,25 @@ struct _GnashView {
const gchar *uri;
guint advance_timer;
- boost::shared_ptr<gnash::media::MediaHandler> media_handler;
- boost::shared_ptr<gnash::sound::sound_handler> sound_handler;
+ std::shared_ptr<gnash::media::MediaHandler> media_handler;
+ std::shared_ptr<gnash::sound::sound_handler> sound_handler;
/// Handlers (for sound etc) for a libcore run.
//
/// 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)
-static GObjectClass *parent_class = NULL;
+static GObjectClass *parent_class = nullptr;
static void gnash_view_class_init(GnashViewClass *gnash_view_class);
static void gnash_view_init(GnashView *view);
@@ -97,7 +98,7 @@ static void gnash_view_load_movie(GnashView *view, const gchar *path);
GtkWidget *
gnash_view_new (void)
{
- return GTK_WIDGET(g_object_new (GNASH_TYPE_VIEW, NULL));
+ return GTK_WIDGET(g_object_new (GNASH_TYPE_VIEW, nullptr));
}
const gchar *
@@ -109,7 +110,7 @@ gnash_view_call (GnashView *view, const gchar *func_name, const gchar *input_dat
gnash::as_value func = getMember(*getObject(view->movie), getURI(vm, func_name));
if( !func.is_function() ) {
- return NULL;
+ return nullptr;
}
gnash::as_value result;
@@ -120,7 +121,7 @@ gnash_view_call (GnashView *view, const gchar *func_name, const gchar *input_dat
result = callMethod(getObject(view->movie), getURI(vm, func_name));
}
if( !result.is_string() ) {
- return NULL;
+ return nullptr;
}
return result.to_string().c_str();
@@ -147,7 +148,7 @@ gnash_view_class_init(GnashViewClass *gnash_view_class)
g_param_spec_string ("uri",
"URI to movie",
"URI to the SWF movie to display",
- NULL,
+ nullptr,
(GParamFlags)G_PARAM_READWRITE));
}
@@ -162,7 +163,7 @@ gnash_view_set_property (GObject *object,
switch (prop_id)
{
case PROP_URI:
- if(view->movie_definition.get() != NULL) {
+ if(view->movie_definition.get() != nullptr) {
g_warning("Cannot change the movie URI once the view has been initialized.");
return;
}
@@ -196,7 +197,7 @@ gnash_view_init(GnashView *view)
{
GNASH_REPORT_FUNCTION;
- view->uri = NULL;
+ view->uri = nullptr;
view->advance_timer = 0;
g_signal_connect (GTK_WIDGET(view), "realize",
@@ -225,7 +226,7 @@ gnash_view_init(GnashView *view)
view->canvas = GNASH_CANVAS(gnash_canvas_new());
std::string nullstr;
- gnash_canvas_setup(view->canvas, nullstr, nullstr, 0, NULL);
+ gnash_canvas_setup(view->canvas, nullstr, nullstr, 0, nullptr);
gtk_container_add (GTK_CONTAINER (view), GTK_WIDGET(view->canvas));
gtk_widget_show (GTK_WIDGET(view->canvas));
@@ -254,10 +255,10 @@ gnash_view_size_allocate (GtkWidget *widget, GtkAllocation *allocation)
widget->allocation = *allocation;
gtk_widget_size_allocate (GTK_BIN(widget)->child, allocation);
- if( view->stage.get() != NULL) {
+ if( view->stage.get() != nullptr) {
view->stage->setDimensions(allocation->width, allocation->height);
- boost::shared_ptr<gnash::Renderer> renderer = gnash_canvas_get_renderer(view->canvas);
+ std::shared_ptr<gnash::Renderer> renderer = gnash_canvas_get_renderer(view->canvas);
float xscale = allocation->width / view->movie_definition->get_width_pixels();
float yscale = allocation->height / view->movie_definition->get_height_pixels();
renderer->set_scale(xscale, yscale);
@@ -268,7 +269,7 @@ static void
gnash_view_size_request (GtkWidget *widget, GtkRequisition *requisition)
{
GnashView *view = GNASH_VIEW(widget);
- if( view->movie_definition.get() == NULL ) {
+ if( view->movie_definition.get() == nullptr ) {
requisition->width = 0;
requisition->height = 0;
} else {
@@ -284,7 +285,7 @@ gnash_view_realize_cb(GtkWidget *widget, gpointer /*user_data*/)
GnashView *view = GNASH_VIEW(widget);
// Some initializations need to happen after the widget has been realized.
- if(view->movie_definition.get() == NULL) {
+ if(view->movie_definition.get() == nullptr) {
gtk_widget_realize(GTK_WIDGET(view->canvas));
gnash_view_load_movie(view, view->uri);
}
@@ -295,7 +296,7 @@ key_press_event_cb(GtkWidget */*widget*/, GdkEventKey *event, gpointer data)
{
GNASH_REPORT_FUNCTION;
GnashView *view = GNASH_VIEW(data);
- if (view->stage.get() == NULL)
+ if (view->stage.get() == nullptr)
return FALSE;
gnash::key::code c = gdk_to_gnash_key(event->keyval);
@@ -314,7 +315,7 @@ key_release_event_cb(GtkWidget */*widget*/, GdkEventKey *event, gpointer data)
{
GNASH_REPORT_FUNCTION;
GnashView *view = GNASH_VIEW(data);
- if (view->stage.get() == NULL)
+ if (view->stage.get() == nullptr)
return FALSE;
gnash::key::code c = gdk_to_gnash_key(event->keyval);
@@ -333,7 +334,7 @@ button_press_event_cb(GtkWidget */*widget*/, GdkEventButton *event, gpointer dat
{
GNASH_REPORT_FUNCTION;
GnashView *view = GNASH_VIEW(data);
- if (view->stage.get() == NULL)
+ if (view->stage.get() == nullptr)
return FALSE;
/// Double- and triple-clicks should not send an extra event!
@@ -353,7 +354,7 @@ button_release_event_cb(GtkWidget* /*widget*/, GdkEventButton* /*event*/,
{
GNASH_REPORT_FUNCTION;
GnashView *view = GNASH_VIEW(data);
- if (view->stage.get() == NULL)
+ if (view->stage.get() == nullptr)
return FALSE;
view->stage->mouseClick(false);
@@ -372,10 +373,10 @@ motion_notify_event_cb(GtkWidget */*widget*/, GdkEventMotion *event, gpointer da
float yscale = widget->allocation.height / view->movie_definition->get_height_pixels();
// A stage pseudopixel is user pixel / _xscale wide
- boost::int32_t x = event->x / xscale;
+ std::int32_t x = event->x / xscale;
// A stage pseudopixel is user pixel / _yscale high
- boost::int32_t y = event->y / yscale;
+ std::int32_t y = event->y / yscale;
if ( view->stage->mouseMoved(x, y) )
{
@@ -390,23 +391,23 @@ motion_notify_event_cb(GtkWidget */*widget*/, GdkEventMotion *event, gpointer da
if ( activeEntity->isSelectableTextField() )
{
GdkCursor *gdkcursor = gdk_cursor_new(GDK_XTERM);
- gdk_window_set_cursor (widget->window, NULL);
+ gdk_window_set_cursor (widget->window, nullptr);
gdk_cursor_unref(gdkcursor);
}
else if ( activeEntity->allowHandCursor() )
{
GdkCursor *gdkcursor = gdk_cursor_new(GDK_HAND2);
- gdk_window_set_cursor (widget->window, NULL);
+ gdk_window_set_cursor (widget->window, nullptr);
gdk_cursor_unref(gdkcursor);
}
else
{
- gdk_window_set_cursor (widget->window, NULL);
+ gdk_window_set_cursor (widget->window, nullptr);
}
}
else
{
- gdk_window_set_cursor (widget->window, NULL);
+ gdk_window_set_cursor (widget->window, nullptr);
}
return TRUE;
@@ -422,9 +423,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));
- boost::shared_ptr<gnash::StreamProvider> sp(
- new gnash::StreamProvider(url, url, np));
+ std::unique_ptr<gnash::NamingPolicy> np(new gnash::IncrementalRename(url));
+ std::shared_ptr<gnash::StreamProvider> sp(
+ new gnash::StreamProvider(url, url, std::move(np)));
view->run_info->setStreamProvider(sp);
gnash::RcInitFile& rcfile = gnash::RcInitFile::getDefaultInstance();
@@ -445,7 +446,7 @@ gnash_view_load_movie(GnashView *view, const gchar *uri)
view->movie_definition = gnash::MovieFactory::makeMovie(url,
*view->run_info, url.str().c_str(), false);
- g_return_if_fail(view->movie_definition.get() != NULL);
+ g_return_if_fail(view->movie_definition.get() != nullptr);
// NOTE: it's important that _systemClock is constructed
// before and destroyed after _virtualClock !
@@ -456,7 +457,7 @@ gnash_view_load_movie(GnashView *view, const gchar *uri)
view->movie_definition->completeLoad();
view->advance_timer = g_timeout_add_full(G_PRIORITY_LOW, 10,
- (GSourceFunc)gnash_view_advance_movie, view, NULL);
+ (GSourceFunc)gnash_view_advance_movie, view, nullptr);
gtk_widget_queue_resize (GTK_WIDGET(view));
@@ -497,9 +498,9 @@ gnash_view_display(GnashView *view)
gnash::InvalidatedRanges changed_ranges;
changed_ranges.setWorld();
- boost::shared_ptr<gnash::Renderer> renderer = gnash_canvas_get_renderer(view->canvas);
+ std::shared_ptr<gnash::Renderer> renderer = gnash_canvas_get_renderer(view->canvas);
renderer->set_invalidated_regions(changed_ranges);
- gdk_window_invalidate_rect(GTK_WIDGET(view->canvas)->window, NULL, false);
+ gdk_window_invalidate_rect(GTK_WIDGET(view->canvas)->window, nullptr, false);
gnash_canvas_before_rendering(view->canvas, view->stage.get());
view->stage->display();
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/Qt4Glue.h b/gui/qt/Qt4Glue.h
index cd08bea..13d8145 100644
--- a/gui/qt/Qt4Glue.h
+++ b/gui/qt/Qt4Glue.h
@@ -82,7 +82,7 @@ private:
class Qt4Glue
{
public:
- Qt4Glue() : _drawing_area(NULL) {}
+ Qt4Glue() : _drawing_area(nullptr) {}
virtual ~Qt4Glue() { }
virtual bool init(int argc, char **argv[]) = 0;
diff --git a/gui/qt/Qt4GlueAgg.cpp b/gui/qt/Qt4GlueAgg.cpp
index cc0348e..54ecddf 100644
--- a/gui/qt/Qt4GlueAgg.cpp
+++ b/gui/qt/Qt4GlueAgg.cpp
@@ -36,7 +36,7 @@ Qt4AggGlue::Qt4AggGlue()
:
_width(0),
_height(0),
- _renderer(0)
+ _renderer(nullptr)
{
}
diff --git a/gui/qt/Qt4GlueAgg.h b/gui/qt/Qt4GlueAgg.h
index 688f799..92832bf 100644
--- a/gui/qt/Qt4GlueAgg.h
+++ b/gui/qt/Qt4GlueAgg.h
@@ -28,7 +28,6 @@
#include <memory>
#include <QImage>
-#include <boost/scoped_array.hpp>
#include <QPainter>
#include "snappingrange.h"
@@ -54,10 +53,10 @@ class Qt4AggGlue : public Qt4Glue
private:
int _width;
int _height;
- boost::scoped_array<unsigned char> _offscreenbuf;
+ std::unique_ptr<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.cpp b/gui/qt/Qt4GlueCairo.cpp
index ea43be4..47edffa 100644
--- a/gui/qt/Qt4GlueCairo.cpp
+++ b/gui/qt/Qt4GlueCairo.cpp
@@ -35,10 +35,9 @@ Qt4CairoGlue::Qt4CairoGlue()
:
_width(0),
_height(0),
- _offscreenbuf(0),
- _renderer(0),
- _cairo_handle(0),
- _cairo_surface(0)
+ _renderer(nullptr),
+ _cairo_handle(nullptr),
+ _cairo_surface(nullptr)
{
}
diff --git a/gui/qt/Qt4GlueCairo.h b/gui/qt/Qt4GlueCairo.h
index 825b537..4121b98 100644
--- a/gui/qt/Qt4GlueCairo.h
+++ b/gui/qt/Qt4GlueCairo.h
@@ -26,9 +26,8 @@
#include "Qt4Glue.h"
-#include <memory> // for auto_ptr
+#include <memory> // for unique_ptr
#include <QImage>
-#include <boost/scoped_array.hpp>
#include <QPainter>
#include "snappingrange.h"
@@ -56,10 +55,10 @@ class Qt4CairoGlue : public Qt4Glue
private:
int _width;
int _height;
- boost::scoped_array<unsigned char> _offscreenbuf;
+ std::unique_ptr<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/Qt4GlueOgl.cpp b/gui/qt/Qt4GlueOgl.cpp
index eeb0a2f..6cf375b 100644
--- a/gui/qt/Qt4GlueOgl.cpp
+++ b/gui/qt/Qt4GlueOgl.cpp
@@ -35,10 +35,7 @@ namespace gnash
{
Qt4OglGlue::Qt4OglGlue()
-:
- _width(0),
- _height(0),
- _renderer(0)
+: _renderer(nullptr)
{
}
diff --git a/gui/qt/Qt4GlueOgl.h b/gui/qt/Qt4GlueOgl.h
index 2e7c1f6..3421fe9 100644
--- a/gui/qt/Qt4GlueOgl.h
+++ b/gui/qt/Qt4GlueOgl.h
@@ -26,7 +26,6 @@
#include "Qt4Glue.h"
-#include <boost/scoped_array.hpp>
#include "snappingrange.h"
class QRect;
@@ -48,8 +47,6 @@ class Qt4OglGlue : public Qt4Glue
void render(const QRect& updateRect);
private:
- int _width;
- int _height;
Renderer* _renderer; // We don't own this pointer.
};
diff --git a/gui/qt/Qt4Gui.cpp b/gui/qt/Qt4Gui.cpp
index b90dc4d..8c94882 100644
--- a/gui/qt/Qt4Gui.cpp
+++ b/gui/qt/Qt4Gui.cpp
@@ -23,7 +23,6 @@
#endif
#include <map>
-#include <boost/assign/list_inserter.hpp>
#include <QMainWindow>
#include <QX11Info>
@@ -83,8 +82,23 @@ Qt4Gui::Qt4Gui(unsigned long xid, float scale, bool loop, RunResources& r)
:
Gui(xid, scale, loop, r),
_numArgs(0),
+ _embedWidget(NULL),
+ _drawingWidget(NULL),
_interval(0),
_advanceTimer(0)
+ , fileMenu(NULL)
+ , propertiesAction(NULL)
+ , quitAction(NULL)
+ , editMenu(NULL)
+ , preferencesAction(NULL)
+ , movieControlMenu(NULL)
+ , playAction(NULL)
+ , pauseAction(NULL)
+ , stopAction(NULL)
+ , restartAction(NULL)
+ , viewMenu(NULL)
+ , refreshAction(NULL)
+ , fullscreenAction(NULL)
{
}
@@ -478,7 +492,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();
@@ -663,7 +677,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);
@@ -684,38 +698,38 @@ Qt4Gui::setupKeyMap()
// be harmful to do it more.
assert (_keyMap.empty());
- boost::assign::insert(_keyMap)
- (Qt::Key_Backspace, gnash::key::BACKSPACE)
- (Qt::Key_Tab, gnash::key::TAB)
- (Qt::Key_Clear, gnash::key::CLEAR)
- (Qt::Key_Return, gnash::key::ENTER)
- (Qt::Key_Enter, gnash::key::ENTER)
- (Qt::Key_Shift, gnash::key::SHIFT)
- (Qt::Key_Control, gnash::key::CONTROL)
- (Qt::Key_Alt, gnash::key::ALT)
- (Qt::Key_CapsLock, gnash::key::CAPSLOCK)
- (Qt::Key_Escape, gnash::key::ESCAPE)
- (Qt::Key_Space, gnash::key::SPACE)
- (Qt::Key_PageDown, gnash::key::PGDN)
- (Qt::Key_PageUp, gnash::key::PGUP)
- (Qt::Key_Home, gnash::key::HOME)
- (Qt::Key_End, gnash::key::END)
- (Qt::Key_Left, gnash::key::LEFT)
- (Qt::Key_Up, gnash::key::UP)
- (Qt::Key_Right, gnash::key::RIGHT)
- (Qt::Key_Down, gnash::key::DOWN)
- (Qt::Key_Insert, gnash::key::INSERT)
- (Qt::Key_Delete, gnash::key::DELETEKEY)
- (Qt::Key_Help, gnash::key::HELP)
- (Qt::Key_NumLock, gnash::key::NUM_LOCK)
- (Qt::Key_Semicolon, gnash::key::SEMICOLON)
- (Qt::Key_Equal, gnash::key::EQUALS)
- (Qt::Key_Minus, gnash::key::MINUS)
- (Qt::Key_Slash, gnash::key::SLASH)
- (Qt::Key_BracketLeft, gnash::key::LEFT_BRACKET)
- (Qt::Key_Backslash, gnash::key::BACKSLASH)
- (Qt::Key_BracketRight, gnash::key::RIGHT_BRACKET)
- (Qt::Key_QuoteDbl, gnash::key::DOUBLE_QUOTE);
+ _keyMap = {
+ {Qt::Key_Backspace, gnash::key::BACKSPACE},
+ {Qt::Key_Tab, gnash::key::TAB},
+ {Qt::Key_Clear, gnash::key::CLEAR},
+ {Qt::Key_Return, gnash::key::ENTER},
+ {Qt::Key_Enter, gnash::key::ENTER},
+ {Qt::Key_Shift, gnash::key::SHIFT},
+ {Qt::Key_Control, gnash::key::CONTROL},
+ {Qt::Key_Alt, gnash::key::ALT},
+ {Qt::Key_CapsLock, gnash::key::CAPSLOCK},
+ {Qt::Key_Escape, gnash::key::ESCAPE},
+ {Qt::Key_Space, gnash::key::SPACE},
+ {Qt::Key_PageDown, gnash::key::PGDN},
+ {Qt::Key_PageUp, gnash::key::PGUP},
+ {Qt::Key_Home, gnash::key::HOME},
+ {Qt::Key_End, gnash::key::END},
+ {Qt::Key_Left, gnash::key::LEFT},
+ {Qt::Key_Up, gnash::key::UP},
+ {Qt::Key_Right, gnash::key::RIGHT},
+ {Qt::Key_Down, gnash::key::DOWN},
+ {Qt::Key_Insert, gnash::key::INSERT},
+ {Qt::Key_Delete, gnash::key::DELETEKEY},
+ {Qt::Key_Help, gnash::key::HELP},
+ {Qt::Key_NumLock, gnash::key::NUM_LOCK},
+ {Qt::Key_Semicolon, gnash::key::SEMICOLON},
+ {Qt::Key_Equal, gnash::key::EQUALS},
+ {Qt::Key_Minus, gnash::key::MINUS},
+ {Qt::Key_Slash, gnash::key::SLASH},
+ {Qt::Key_BracketLeft, gnash::key::LEFT_BRACKET},
+ {Qt::Key_Backslash, gnash::key::BACKSLASH},
+ {Qt::Key_BracketRight, gnash::key::RIGHT_BRACKET},
+ {Qt::Key_QuoteDbl, gnash::key::DOUBLE_QUOTE} };
}
void
diff --git a/gui/qt/Qt4Gui.h b/gui/qt/Qt4Gui.h
index 6d18017..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.
@@ -222,7 +222,6 @@ private:
QCheckBox* _actionDumpToggle;
QCheckBox* _malformedSWFToggle;
QCheckBox* _ASCodingErrorToggle;
- QCheckBox* _lcTraceToggle;
// Security tab widgets
QCheckBox* _localHostToggle;
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..65727ce 100644
--- a/gui/qt/kde_glue_agg.h
+++ b/gui/qt/kde_glue_agg.h
@@ -29,7 +29,6 @@
#include "kde_glue.h"
#include <vector>
#include <memory>
-#include <boost/scoped_array.hpp>
namespace gnash
@@ -52,11 +51,11 @@ class KdeAggGlue : public KdeGlue
private:
int _width;
int _height;
- boost::scoped_array<unsigned char> _offscreenbuf;
+ std::unique_ptr<unsigned char[]> _offscreenbuf;
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/gui/sdl/sdl.cpp b/gui/sdl/sdl.cpp
index 309f599..78f66ed 100644
--- a/gui/sdl/sdl.cpp
+++ b/gui/sdl/sdl.cpp
@@ -177,7 +177,7 @@ SDLGui::createWindow(const char *title, int width, int height,
_width = width;
_height = height;
- boost::uint32_t sdl_flags = 0;
+ std::uint32_t sdl_flags = 0;
if (!_core_trap) {
sdl_flags |= SDL_INIT_NOPARACHUTE;
diff --git a/gui/sdl/sdl_agg_glue.cpp b/gui/sdl/sdl_agg_glue.cpp
index df37caa..0142cf1 100644
--- a/gui/sdl/sdl_agg_glue.cpp
+++ b/gui/sdl/sdl_agg_glue.cpp
@@ -32,10 +32,10 @@ namespace gnash
SdlAggGlue::SdlAggGlue()
:
-_sdl_surface(NULL),
-_offscreenbuf(NULL),
-_screen(NULL),
-_agg_renderer(NULL)
+_sdl_surface(nullptr),
+_offscreenbuf(nullptr),
+_screen(nullptr),
+_agg_renderer(nullptr)
{
// GNASH_REPORT_FUNCTION;
}
@@ -83,7 +83,7 @@ SdlAggGlue::createRenderHandler(int bpp)
bool
-SdlAggGlue::prepDrawingArea(int width, int height, boost::uint32_t sdl_flags)
+SdlAggGlue::prepDrawingArea(int width, int height, std::uint32_t sdl_flags)
{
int depth_bytes = _bpp / 8; // TODO: <Udo> is this correct? Gives 1 for 15 bit modes!
@@ -98,7 +98,7 @@ SdlAggGlue::prepDrawingArea(int width, int height, boost::uint32_t sdl_flags)
int stride = width * depth_bytes;
- boost::uint32_t rmask, gmask, bmask, amask;
+ std::uint32_t rmask, gmask, bmask, amask;
switch(_bpp) {
case 32: // RGBA32
@@ -191,7 +191,7 @@ SdlAggGlue::render(int minx, int miny, int maxx, int maxy)
static_cast<Uint16>(maxx - minx),
static_cast<Uint16>(maxy - miny)};
SDL_SetClipRect(_screen, &clip);
- SDL_BlitSurface(_sdl_surface, 0, _screen, 0);
+ SDL_BlitSurface(_sdl_surface, nullptr, _screen, nullptr);
SDL_UpdateRect(_screen, clip.x, clip.y, clip.w, clip.h);
}
diff --git a/gui/sdl/sdl_agg_glue.h b/gui/sdl/sdl_agg_glue.h
index ea2195a..8f2a745 100644
--- a/gui/sdl/sdl_agg_glue.h
+++ b/gui/sdl/sdl_agg_glue.h
@@ -20,7 +20,7 @@
#include <vector>
#include <SDL.h>
-#include <boost/cstdint.hpp> // for boost::?int??_t
+#include <cstdint> // for boost::?int??_t
namespace gnash
{
@@ -34,8 +34,8 @@ class SdlAggGlue : public SdlGlue
bool init(int argc, char **argv[]);
Renderer* createRenderHandler(int depth);
void setInvalidatedRegions(const InvalidatedRanges& ranges);
- bool prepDrawingArea(int width, int height, boost::uint32_t sdl_flags);
- boost::uint32_t maskFlags(boost::uint32_t sdl_flags);
+ bool prepDrawingArea(int width, int height, std::uint32_t sdl_flags);
+ std::uint32_t maskFlags(std::uint32_t sdl_flags);
void render();
void render(int minx, int miny, int maxx, int maxy);
private:
diff --git a/gui/sdl/sdl_cairo_glue.cpp b/gui/sdl/sdl_cairo_glue.cpp
index 5007bb7..332cea8 100644
--- a/gui/sdl/sdl_cairo_glue.cpp
+++ b/gui/sdl/sdl_cairo_glue.cpp
@@ -27,6 +27,12 @@ namespace gnash
{
SdlCairoGlue::SdlCairoGlue()
+: _cairo_surface(nullptr)
+ , _cairo_handle(nullptr)
+ , _sdl_surface(nullptr)
+ , _render_image(nullptr)
+ , _screen(nullptr)
+ , _renderer(nullptr)
{
// GNASH_REPORT_FUNCTION;
}
@@ -66,7 +72,7 @@ SdlCairoGlue::setInvalidatedRegions(const InvalidatedRanges& /*ranges*/)
}
bool
-SdlCairoGlue::prepDrawingArea(int width, int height, boost::uint32_t sdl_flags)
+SdlCairoGlue::prepDrawingArea(int width, int height, std::uint32_t sdl_flags)
{
_screen = SDL_SetVideoMode(width, height, _bpp, sdl_flags | SDL_SWSURFACE);
@@ -88,7 +94,7 @@ SdlCairoGlue::prepDrawingArea(int width, int height, boost::uint32_t sdl_flags)
renderer::cairo::set_context(_renderer, _cairo_handle);
- boost::uint32_t rmask, gmask, bmask, amask;
+ std::uint32_t rmask, gmask, bmask, amask;
rmask = 0x00ff0000;
gmask = 0x0000ff00;
@@ -110,7 +116,7 @@ SdlCairoGlue::render()
/*Fill the background in purple so we can see the alpha blend */
//SDL_FillRect (_screen, NULL, SDL_MapRGB(_screen->format,255,0,255));
- SDL_BlitSurface(_sdl_surface, NULL, _screen, NULL);
+ SDL_BlitSurface(_sdl_surface, nullptr, _screen, nullptr);
//cairo_surface_write_to_png (_cairo_surface, "/tmp/gnash.png");
diff --git a/gui/sdl/sdl_cairo_glue.h b/gui/sdl/sdl_cairo_glue.h
index ba46a82..ed267b7 100644
--- a/gui/sdl/sdl_cairo_glue.h
+++ b/gui/sdl/sdl_cairo_glue.h
@@ -38,8 +38,8 @@ class SdlCairoGlue : public SdlGlue
bool init(int argc, char **argv[]);
Renderer* createRenderHandler( int depth);
void setInvalidatedRegions(const InvalidatedRanges& ranges);
- bool prepDrawingArea(int width, int height, boost::uint32_t sdl_flags);
- boost::uint32_t maskFlags(boost::uint32_t sdl_flags);
+ bool prepDrawingArea(int width, int height, std::uint32_t sdl_flags);
+ std::uint32_t maskFlags(std::uint32_t sdl_flags);
void render();
private:
cairo_surface_t *_cairo_surface;
diff --git a/gui/sdl/sdl_glue.h b/gui/sdl/sdl_glue.h
index b842508..be6dc59 100644
--- a/gui/sdl/sdl_glue.h
+++ b/gui/sdl/sdl_glue.h
@@ -18,7 +18,7 @@
#include "gui.h"
-#include <boost/cstdint.hpp> // for boost::?int??_t
+#include <cstdint> // for boost::?int??_t
namespace gnash {
@@ -29,7 +29,7 @@ class SdlGlue
virtual bool init(int argc, char **argv[]) = 0;
virtual void setInvalidatedRegions(const InvalidatedRanges& ranges) = 0;
- virtual bool prepDrawingArea(int width, int height, boost::uint32_t sdl_flags) = 0;
+ virtual bool prepDrawingArea(int width, int height, std::uint32_t sdl_flags) = 0;
virtual Renderer* createRenderHandler(int depth) = 0;
virtual void render() = 0;
protected:
diff --git a/gui/sdl/sdl_ogl_glue.cpp b/gui/sdl/sdl_ogl_glue.cpp
index 9aad232..ab93b42 100644
--- a/gui/sdl/sdl_ogl_glue.cpp
+++ b/gui/sdl/sdl_ogl_glue.cpp
@@ -67,7 +67,7 @@ SdlOglGlue::setInvalidatedRegions(const InvalidatedRanges& /*ranges*/)
}
bool
-SdlOglGlue::prepDrawingArea(int width, int height, boost::uint32_t sdl_flags)
+SdlOglGlue::prepDrawingArea(int width, int height, std::uint32_t sdl_flags)
{
if (_bpp == 16) {
// 16-bit color, surface creation is likely to succeed.
diff --git a/gui/sdl/sdl_ogl_glue.h b/gui/sdl/sdl_ogl_glue.h
index 8fc2519..21733d8 100644
--- a/gui/sdl/sdl_ogl_glue.h
+++ b/gui/sdl/sdl_ogl_glue.h
@@ -31,7 +31,7 @@ class SdlOglGlue : public SdlGlue
bool init(int argc, char **argv[]);
Renderer* createRenderHandler( int depth);
void setInvalidatedRegions(const InvalidatedRanges& ranges);
- bool prepDrawingArea(int width, int height, boost::uint32_t sdl_flags);
+ bool prepDrawingArea(int width, int height, std::uint32_t sdl_flags);
void render();
};
diff --git a/libbase/AMF.cpp b/libbase/AMF.cpp
index 803969d..4d2bac4 100644
--- a/libbase/AMF.cpp
+++ b/libbase/AMF.cpp
@@ -47,7 +47,7 @@ namespace {
}
bool
-readBoolean(const boost::uint8_t*& pos, const boost::uint8_t* _end)
+readBoolean(const std::uint8_t*& pos, const std::uint8_t* _end)
{
if (pos == _end) {
throw AMFException("Read past _end of buffer for boolean type");
@@ -62,7 +62,7 @@ readBoolean(const boost::uint8_t*& pos, const boost::uint8_t* _end)
}
double
-readNumber(const boost::uint8_t*& pos, const boost::uint8_t* end)
+readNumber(const std::uint8_t*& pos, const std::uint8_t* end)
{
if (end - pos < 8) {
@@ -84,13 +84,13 @@ readNumber(const boost::uint8_t*& pos, const boost::uint8_t* end)
}
std::string
-readString(const boost::uint8_t*& pos, const boost::uint8_t* end)
+readString(const std::uint8_t*& pos, const std::uint8_t* end)
{
if (end - pos < 2) {
throw AMFException(_("Read past _end of buffer for string length"));
}
- const boost::uint16_t si = readNetworkShort(pos);
+ const std::uint16_t si = readNetworkShort(pos);
pos += 2;
if (end - pos < si) {
@@ -106,15 +106,15 @@ readString(const boost::uint8_t*& pos, const boost::uint8_t* end)
}
std::string
-readLongString(const boost::uint8_t*& pos, const boost::uint8_t* end)
+readLongString(const std::uint8_t*& pos, const std::uint8_t* end)
{
if (end - pos < 4) {
throw AMFException("Read past _end of buffer for long string length");
}
- const boost::uint32_t si = readNetworkLong(pos);
+ const std::uint32_t si = readNetworkLong(pos);
pos += 4;
- if (static_cast<boost::uint32_t>(end - pos) < si) {
+ if (static_cast<std::uint32_t>(end - pos) < si) {
throw AMFException("Read past _end of buffer for long string type");
}
@@ -185,10 +185,10 @@ void
swapBytes(void* word, size_t size)
{
union {
- boost::uint16_t s;
+ std::uint16_t s;
struct {
- boost::uint8_t c0;
- boost::uint8_t c1;
+ std::uint8_t c0;
+ std::uint8_t c1;
} c;
} u;
@@ -200,7 +200,7 @@ swapBytes(void* word, size_t size)
// Little-endian machine: byte-swap the word
// A conveniently-typed pointer to the source data
- boost::uint8_t *x = static_cast<boost::uint8_t *>(word);
+ std::uint8_t *x = static_cast<std::uint8_t *>(word);
// Handles odd as well as even counts of bytes
std::reverse(x, x + size);
diff --git a/libbase/AMF.h b/libbase/AMF.h
index e1ec5b2..616a690 100644
--- a/libbase/AMF.h
+++ b/libbase/AMF.h
@@ -24,7 +24,7 @@
#define GNASH_AMF_H
#include <string>
-#include <boost/cstdint.hpp>
+#include <cstdint>
#include "dsodefs.h"
#include "GnashException.h"
@@ -82,8 +82,8 @@ public:
/// be determined from the buffer.
//
/// This function will throw an AMFException if it encounters ill-formed AMF.
-DSOEXPORT double readNumber(const boost::uint8_t*& pos,
- const boost::uint8_t* end);
+DSOEXPORT double readNumber(const std::uint8_t*& pos,
+ const std::uint8_t* end);
/// Read a boolean value from the buffer.
//
@@ -91,8 +91,8 @@ DSOEXPORT double readNumber(const boost::uint8_t*& pos,
/// be determined from the buffer.
//
/// This function will throw an AMFException if it encounters ill-formed AMF.
-DSOEXPORT bool readBoolean(const boost::uint8_t*& pos,
- const boost::uint8_t* end);
+DSOEXPORT bool readBoolean(const std::uint8_t*& pos,
+ const std::uint8_t* end);
/// Read a string value from the buffer.
//
@@ -100,8 +100,8 @@ DSOEXPORT bool readBoolean(const boost::uint8_t*& pos,
/// be determined from the buffer.
//
/// This function will throw an AMFException if it encounters ill-formed AMF.
-DSOEXPORT std::string readString(const boost::uint8_t*& pos,
- const boost::uint8_t* end);
+DSOEXPORT std::string readString(const std::uint8_t*& pos,
+ const std::uint8_t* end);
/// Read a long string value from the buffer.
//
@@ -109,26 +109,26 @@ DSOEXPORT std::string readString(const boost::uint8_t*& pos,
/// be determined from the buffer.
//
/// This function will throw an AMFException if it encounters ill-formed AMF.
-DSOEXPORT std::string readLongString(const boost::uint8_t*& pos,
- const boost::uint8_t* end);
+DSOEXPORT std::string readLongString(const std::uint8_t*& pos,
+ const std::uint8_t* end);
/// Read an unsigned 16-bit value in network byte order.
//
/// You must ensure that the buffer contains at least 2 bytes!
-inline boost::uint16_t
-readNetworkShort(const boost::uint8_t* buf)
+inline std::uint16_t
+readNetworkShort(const std::uint8_t* buf)
{
- const boost::uint16_t s = buf[0] << 8 | buf[1];
+ const std::uint16_t s = buf[0] << 8 | buf[1];
return s;
}
/// Read an unsigned 32-bit value in network byte order.
//
/// You must ensure that the buffer contains at least 4 bytes!
-inline boost::uint32_t
-readNetworkLong(const boost::uint8_t* buf)
+inline std::uint32_t
+readNetworkLong(const std::uint8_t* buf)
{
- const boost::uint32_t s = buf[0] << 24 | buf[1] << 16 |
+ const std::uint32_t s = buf[0] << 24 | buf[1] << 16 |
buf[2] << 8 | buf[3];
return s;
}
diff --git a/libbase/BitsReader.cpp b/libbase/BitsReader.cpp
index 6bb8694..20cdb45 100644
--- a/libbase/BitsReader.cpp
+++ b/libbase/BitsReader.cpp
@@ -35,7 +35,7 @@ unsigned BitsReader::read_uint(unsigned short bitcount)
{
assert(bitcount <= 32);
- boost::uint32_t value = 0;
+ std::uint32_t value = 0;
unsigned short bits_needed = bitcount;
do
@@ -85,9 +85,9 @@ unsigned BitsReader::read_uint(unsigned short bitcount)
}
-boost::int32_t BitsReader::read_sint(unsigned short bitcount)
+std::int32_t BitsReader::read_sint(unsigned short bitcount)
{
- boost::int32_t value = boost::int32_t(read_uint(bitcount));
+ std::int32_t value = std::int32_t(read_uint(bitcount));
// Sign extend...
if (value & (1 << (bitcount - 1)))
diff --git a/libbase/BitsReader.h b/libbase/BitsReader.h
index 83c3391..da9834e 100644
--- a/libbase/BitsReader.h
+++ b/libbase/BitsReader.h
@@ -26,7 +26,7 @@
#include "log.h"
#include <cassert>
-#include <boost/cstdint.hpp> // for boost::uint32_t used in this file
+#include <cstdint> // for std::uint32_t used in this file
namespace gnash {
@@ -97,43 +97,43 @@ public:
/// Reads a bit-packed little-endian signed integer
/// from the stream. The given bitcount determines the
/// number of bits to read.
- boost::int32_t read_sint(unsigned short bitcount);
+ std::int32_t read_sint(unsigned short bitcount);
/// Read a byte as an unsigned int (aligned)
- boost::uint8_t read_u8()
+ std::uint8_t read_u8()
{
align();
return *ptr++;
}
/// Read one bytes as a signed int (aligned)
- boost::int8_t read_s8()
+ std::int8_t read_s8()
{
- return static_cast<boost::int8_t>(read_u8());
+ return static_cast<std::int8_t>(read_u8());
}
/// Read two bytes as an unsigned int (aligned)
- boost::uint16_t read_u16()
+ std::uint16_t read_u16()
{
align();
assert(ptr+2 < end);
- boost::uint16_t result = *ptr++;
+ std::uint16_t result = *ptr++;
result |= *ptr++ << 8;
return result ;
}
/// Read two bytes as a signed int (aligned)
- boost::int16_t read_s16()
+ std::int16_t read_s16()
{
- return static_cast<boost::int16_t>(read_u16());
+ return static_cast<std::int16_t>(read_u16());
}
/// Read four bytes as an unsigned int (aligned)
- boost::uint32_t read_u32()
+ std::uint32_t read_u32()
{
align();
assert(ptr+4 < end);
- boost::uint32_t result = *ptr++;
+ std::uint32_t result = *ptr++;
result |= *ptr++ << 8;
result |= *ptr++ << 16;
result |= *ptr++ << 24;
@@ -141,9 +141,9 @@ public:
}
/// Read four bytes as an signed int (aligned)
- boost::int32_t read_s32()
+ std::int32_t read_s32()
{
- return static_cast<boost::int32_t>(read_u32());
+ return static_cast<std::int32_t>(read_u32());
}
/// \brief
@@ -155,9 +155,9 @@ public:
}
/// Checks if the stream contains X bits
- bool gotBits(boost::uint32_t nbits) const
+ bool gotBits(std::uint32_t nbits) const
{
- boost::uint32_t gotbits = 8-usedBits +8*(end-ptr-1);
+ std::uint32_t gotbits = 8-usedBits +8*(end-ptr-1);
if (gotbits > nbits) return true;
else return false;
}
diff --git a/libbase/ClockTime.cpp b/libbase/ClockTime.cpp
index a17adaf..460ce6f 100644
--- a/libbase/ClockTime.cpp
+++ b/libbase/ClockTime.cpp
@@ -17,7 +17,7 @@
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-#include <boost/cstdint.hpp>
+#include <cstdint>
#include "ClockTime.h"
#include "log.h"
@@ -43,7 +43,7 @@ extern long timezone; // for tzset()/long timezone;
namespace gnash {
-boost::uint64_t
+std::uint64_t
clocktime::getTicks()
{
// This needs to return milliseconds. Does it?
@@ -57,20 +57,20 @@ clocktime::getTicks()
namespace gnash {
-boost::uint64_t
+std::uint64_t
clocktime::getTicks()
{
struct timeval tv;
- gettimeofday(&tv, 0);
+ gettimeofday(&tv, nullptr);
- boost::uint64_t result = static_cast<boost::uint64_t>(tv.tv_sec) * 1000000L;
+ std::uint64_t result = static_cast<std::uint64_t>(tv.tv_sec) * 1000000L;
// Time Unit: microsecond
result += tv.tv_usec;
- return static_cast<boost::uint64_t>(result / 1000.0);
+ return static_cast<std::uint64_t>(result / 1000.0);
}
}
@@ -95,7 +95,7 @@ namespace gnash {
/// It also gets things wrong for very high or low time values, when the
/// localtime implementation fills the gmtoff element with 53 minutes (on
/// at least one machine, anyway).
-boost::int32_t
+std::int32_t
clocktime::getTimeZoneOffset(double time)
{
diff --git a/libbase/ClockTime.h b/libbase/ClockTime.h
index da5f541..d3a79b0 100644
--- a/libbase/ClockTime.h
+++ b/libbase/ClockTime.h
@@ -21,19 +21,19 @@
#ifndef GNASH_TIME_H
#define GNASH_TIME_H
-#include <boost/cstdint.hpp>
+#include <cstdint>
#include "dsodefs.h"
namespace gnash {
namespace clocktime {
/// Wall clock timer, returns current POSIX time in milliseconds.
- DSOEXPORT boost::uint64_t getTicks();
+ DSOEXPORT std::uint64_t getTicks();
/// Returns the offset between actual clock time and UTC.
/// It relies on the system's time zone settings, so
/// cannot be regarded as reliable.
- DSOEXPORT boost::int32_t getTimeZoneOffset(double time);
+ DSOEXPORT std::int32_t getTimeZoneOffset(double time);
} // namespace clocktime
} // namespace gnash
diff --git a/libbase/GC.cpp b/libbase/GC.cpp
index 2a4afc0..e0ef530 100644
--- a/libbase/GC.cpp
+++ b/libbase/GC.cpp
@@ -47,7 +47,7 @@ GC::GC(GcRoot& root)
#endif
char* gcgap = std::getenv("GNASH_GC_TRIGGER_THRESHOLD");
if (gcgap) {
- const size_t gap = std::strtoul(gcgap, NULL, 0);
+ const size_t gap = std::strtoul(gcgap, nullptr, 0);
_maxNewCollectablesCount = gap;
}
}
@@ -73,8 +73,7 @@ GC::cleanUnreachable()
size_t deleted = 0;
- for (ResList::iterator i = _resList.begin(), e = _resList.end(); i != e;) {
- const GcResource* res = *i;
+ _resList.remove_if([&deleted](const GcResource* res) {
if (!res->isReachable()) {
#if GNASH_GC_DEBUG > 1
@@ -82,13 +81,13 @@ GC::cleanUnreachable()
#endif
++deleted;
delete res;
- i = _resList.erase(i); // _resListSize updated at end of loop
+ return true;
}
else {
res->clearReachable();
- ++i;
+ return false;
}
- }
+ });
_resListSize -= deleted;
@@ -131,9 +130,8 @@ GC::runCycle()
void
GC::countCollectables(CollectablesCount& count) const
{
- for (ResList::const_iterator i = _resList.begin(), e = _resList.end();
- i!=e; ++i) {
- ++count[typeName(**i)];
+ for (const GcResource* resource : _resList) {
+ ++count[typeName(*resource)];
}
}
diff --git a/libbase/GC.h b/libbase/GC.h
index ee4a26a..183891b 100644
--- a/libbase/GC.h
+++ b/libbase/GC.h
@@ -29,7 +29,7 @@
//
//#define GNASH_GC_DEBUG 1
-#include <list>
+#include <forward_list>
#include <map>
#include <string>
#include <cassert>
@@ -198,7 +198,7 @@ public:
assert(!item->isReachable());
#endif
- _resList.push_back(item); ++_resListSize;
+ _resList.emplace_front(item); ++_resListSize;
#if GNASH_GC_DEBUG > 1
log_debug(_("GC: collectable %p added, num collectables: %d"), item,
@@ -265,7 +265,7 @@ public:
private:
/// List of collectables
- typedef std::list<const GcResource*> ResList;
+ typedef std::forward_list<const GcResource*> ResList;
/// Mark all reachable resources
void markReachable() {
diff --git a/libbase/GnashAlgorithm.h b/libbase/GnashAlgorithm.h
index 6711937..2174832 100644
--- a/libbase/GnashAlgorithm.h
+++ b/libbase/GnashAlgorithm.h
@@ -22,7 +22,7 @@
#define GNASH_ALGORITHM_H
#include <algorithm>
-#include <boost/bind.hpp>
+#include <functional>
namespace gnash {
@@ -74,8 +74,8 @@ foreachSecond(T begin, T end, U op)
{
typedef typename std::iterator_traits<T>::value_type value_type;
- std::for_each(begin, end, boost::bind(op,
- boost::bind(&value_type::second, _1)));
+ std::for_each(begin, end, std::bind(op,
+ std::bind(&value_type::second, std::placeholders::_1)));
}
} // namespace gnash
diff --git a/libbase/GnashFactory.h b/libbase/GnashFactory.h
index 7e2ad1d..a9d1760 100644
--- a/libbase/GnashFactory.h
+++ b/libbase/GnashFactory.h
@@ -29,8 +29,7 @@
#include <string>
#include <algorithm>
#include <iterator>
-#include <boost/type_traits.hpp>
-#include <boost/utility/enable_if.hpp>
+#include <type_traits>
#include "dsodefs.h"
#include "GnashAlgorithm.h"
@@ -52,7 +51,7 @@ namespace gnash {
/// are registered. This helps avoid problems with
/// unpredictable static initialization.
/// @tparam Key The type to be used as a key.
-template<typename T, typename Init = void, typename Key = std::string>
+template<typename T, typename Init, typename Key>
class DSOEXPORT GnashFactory
{
public:
@@ -85,13 +84,14 @@ public:
//
/// Only usable with output iterators.
template<typename Iterator>
- void listKeys(Iterator i, typename boost::enable_if<boost::is_same<
- typename std::iterator_traits<Iterator>::iterator_category,
- std::output_iterator_tag> >::type* dummy = 0) {
+ void
+ listKeys(Iterator i) {
+ typedef typename std::iterator_traits<Iterator>::iterator_category cat;
+ static_assert(std::is_same<cat, std::output_iterator_tag>::value,
+ "i must be an output iterator.");
Init();
- static_cast<void>(dummy);
std::transform(_handlers.begin(), _handlers.end(), i,
- boost::bind(&Handlers::value_type::first, _1));
+ std::bind(&Handlers::value_type::first, std::placeholders::_1));
}
/// Return a Handler identified by a name.
@@ -103,11 +103,11 @@ public:
T* get(const Key& name) {
Init();
if (name.empty()) {
- return _handlers.empty() ? 0 : _handlers.begin()->second();
+ return _handlers.empty() ? nullptr : _handlers.begin()->second();
}
typename Handlers::const_iterator it = _handlers.find(name);
- if (it == _handlers.end()) return 0;
+ if (it == _handlers.end()) return nullptr;
return it->second();
}
diff --git a/libbase/GnashImage.cpp b/libbase/GnashImage.cpp
index e08071c..8d660f4 100644
--- a/libbase/GnashImage.cpp
+++ b/libbase/GnashImage.cpp
@@ -23,8 +23,6 @@
#include "GnashImage.h"
#include <memory>
-#include <boost/scoped_array.hpp>
-#include <boost/shared_ptr.hpp>
#include <algorithm>
#include <cassert>
@@ -51,7 +49,7 @@ namespace {
assert(channels > 0);
- boost::uint32_t maxSize = std::numeric_limits<boost::int32_t>::max();
+ std::uint32_t maxSize = std::numeric_limits<std::int32_t>::max();
if (width >= maxSize || height >= maxSize) return false;
maxSize /= channels;
@@ -175,7 +173,7 @@ mergeAlpha(ImageRGBA& im, GnashImage::const_iterator alphaData,
// Write the given image to the given out stream, in jpeg format.
void
Output::writeImageData(FileType type,
- boost::shared_ptr<IOChannel> out, const GnashImage& image, int quality)
+ std::shared_ptr<IOChannel> out, const GnashImage& image, int quality)
{
const size_t width = image.width();
@@ -183,7 +181,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 +211,11 @@ Output::writeImageData(FileType type,
}
// See GnashEnums.h for file types.
-std::auto_ptr<GnashImage>
-Input::readImageData(boost::shared_ptr<IOChannel> in, FileType type)
+std::unique_ptr<GnashImage>
+Input::readImageData(std::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 +279,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>
-Input::readSWFJpeg3(boost::shared_ptr<IOChannel> in)
+std::unique_ptr<ImageRGBA>
+Input::readSWFJpeg3(std::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.
@@ -307,7 +305,7 @@ Input::readSWFJpeg3(boost::shared_ptr<IOChannel> in)
j_in->readScanline(scanline(*im, y));
}
} else {
- boost::scoped_array<GnashImage::value_type> line(
+ std::unique_ptr<GnashImage::value_type[]> line(
new GnashImage::value_type[3 * width]);
for (size_t y = 0; y < height; ++y) {
diff --git a/libbase/GnashImage.h b/libbase/GnashImage.h
index cb7d17e..afec355 100644
--- a/libbase/GnashImage.h
+++ b/libbase/GnashImage.h
@@ -24,10 +24,8 @@
#ifndef GNASH_GNASHIMAGE_H
#define GNASH_GNASHIMAGE_H
-#include <boost/shared_ptr.hpp>
#include <boost/noncopyable.hpp>
-#include <boost/cstdint.hpp>
-#include <boost/scoped_array.hpp>
+#include <cstdint>
#include <memory>
#include "GnashEnums.h"
@@ -80,8 +78,8 @@ class DSOEXPORT GnashImage : boost::noncopyable
{
public:
- typedef boost::uint8_t value_type;
- typedef boost::scoped_array<value_type> container_type;
+ typedef std::uint8_t value_type;
+ typedef std::unique_ptr<value_type[]> container_type;
typedef value_type* iterator;
typedef const value_type* const_iterator;
@@ -186,7 +184,7 @@ protected:
/// Construct an empty GnashImage
//
- /// Note: there is an arbitrary limit of boost::int32_t::max bytes for the
+ /// Note: there is an arbitrary limit of std::int32_t::max bytes for the
/// total size of the bitmap constructed with this constructor.
//
/// @param width The width of the image in pixels.
@@ -267,7 +265,7 @@ public:
/// @param in The stream to read data from. Ownership is shared
/// between caller and Input, so it is freed
/// automatically when the last owner is destroyed.
- Input(boost::shared_ptr<IOChannel> in)
+ Input(std::shared_ptr<IOChannel> in)
:
_inStream(in),
_type(GNASH_IMAGE_INVALID)
@@ -308,8 +306,8 @@ 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(
- boost::shared_ptr<gnash::IOChannel> in);
+ DSOEXPORT static std::unique_ptr<ImageRGBA> readSWFJpeg3(
+ std::shared_ptr<gnash::IOChannel> in);
/// Read image data from an IOChannel into an GnashImage.
//
@@ -317,13 +315,13 @@ 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(
- boost::shared_ptr<gnash::IOChannel> in, FileType type);
+ /// a NULL unique_ptr is returned.
+ DSOEXPORT static std::unique_ptr<GnashImage> readImageData(
+ std::shared_ptr<gnash::IOChannel> in, FileType type);
protected:
- boost::shared_ptr<IOChannel> _inStream;
+ std::shared_ptr<IOChannel> _inStream;
ImageType _type;
@@ -341,7 +339,7 @@ public:
/// is shared.
/// @param width The width of the resulting image
/// @param height The height of the resulting image.
- Output(boost::shared_ptr<IOChannel> out, size_t width, size_t height)
+ Output(std::shared_ptr<IOChannel> out, size_t width, size_t height)
:
_width(width),
_height(height),
@@ -373,7 +371,7 @@ public:
/// maxium value. The quality is not used for all
/// formats.
DSOEXPORT static void writeImageData(FileType type,
- boost::shared_ptr<gnash::IOChannel> out, const GnashImage& image,
+ std::shared_ptr<gnash::IOChannel> out, const GnashImage& image,
int quality);
protected:
@@ -382,7 +380,7 @@ protected:
const size_t _height;
- boost::shared_ptr<IOChannel> _outStream;
+ std::shared_ptr<IOChannel> _outStream;
};
diff --git a/libbase/GnashImageGif.cpp b/libbase/GnashImageGif.cpp
index 26865c1..84b09ce 100644
--- a/libbase/GnashImageGif.cpp
+++ b/libbase/GnashImageGif.cpp
@@ -22,7 +22,6 @@
#include <sstream>
#include <algorithm>
-#include <boost/scoped_array.hpp>
extern "C" {
#include <gif_lib.h>
@@ -58,7 +57,7 @@ public:
/// @param in The stream to read GIF data from. Ownership is shared
/// between caller and GifInput, so it is freed
/// automatically when the last owner is destroyed.
- GifInput(boost::shared_ptr<IOChannel> in);
+ GifInput(std::shared_ptr<IOChannel> in);
~GifInput();
@@ -103,17 +102,17 @@ private:
// A counter for keeping track of the last row copied.
size_t _currentRow;
- typedef boost::scoped_array<GifPixelType> PixelRow;
+ typedef std::unique_ptr<GifPixelType[]> PixelRow;
// A 2-dimensional scoped array holding the unpacked pixel data.
- boost::scoped_array<PixelRow> _gifData;
+ std::unique_ptr<PixelRow[]> _gifData;
};
-GifInput::GifInput(boost::shared_ptr<IOChannel> in)
+GifInput::GifInput(std::shared_ptr<IOChannel> in)
:
Input(in),
- _gif(0),
+ _gif(nullptr),
_currentRow(0)
{
}
@@ -304,10 +303,10 @@ GifInput::read()
} // unnamed namespace
-std::auto_ptr<Input>
-createGifInput(boost::shared_ptr<IOChannel> in)
+std::unique_ptr<Input>
+createGifInput(std::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..e3b18d1 100644
--- a/libbase/GnashImageGif.h
+++ b/libbase/GnashImageGif.h
@@ -22,7 +22,6 @@
#define GNASH_IMAGE_GIF_H
#include <memory>
-#include <boost/shared_ptr.hpp>
// Forward declarations
namespace gnash {
@@ -39,7 +38,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(std::shared_ptr<IOChannel> in);
} // namespace image
} // namespace gnash
diff --git a/libbase/GnashImageJpeg.cpp b/libbase/GnashImageJpeg.cpp
index 8a6c0f3..f3365f5 100644
--- a/libbase/GnashImageJpeg.cpp
+++ b/libbase/GnashImageJpeg.cpp
@@ -81,7 +81,7 @@ public:
jpeg_source_mgr m_pub; /* public fields */
// Constructor.
- explicit rw_source_IOChannel(boost::shared_ptr<IOChannel> in)
+ explicit rw_source_IOChannel(std::shared_ptr<IOChannel> in)
:
m_in_stream(in),
m_start_of_file(true)
@@ -171,7 +171,7 @@ public:
{
// Discard existing bytes in our buffer.
m_pub.bytes_in_buffer = 0;
- m_pub.next_input_byte = NULL;
+ m_pub.next_input_byte = nullptr;
}
/// Set up the given decompress object to read from the given
@@ -181,7 +181,7 @@ public:
/// Stream to read from. Ownership always shared with caller.
///
static void setup(jpeg_decompress_struct* cinfo,
- boost::shared_ptr<IOChannel> instream)
+ std::shared_ptr<IOChannel> instream)
{
rw_source_IOChannel* source = new rw_source_IOChannel(instream);
cinfo->src = (jpeg_source_mgr*)source;
@@ -199,11 +199,11 @@ private:
m_pub.resync_to_restart = jpeg_resync_to_restart;
m_pub.term_source = term_source;
m_pub.bytes_in_buffer = 0;
- m_pub.next_input_byte = NULL;
+ m_pub.next_input_byte = nullptr;
}
// Source stream
- boost::shared_ptr<IOChannel> m_in_stream;
+ std::shared_ptr<IOChannel> m_in_stream;
bool m_start_of_file;
JOCTET m_buffer[IO_BUF_SIZE];
@@ -211,10 +211,11 @@ private:
} // unnamed namespace
-JpegInput::JpegInput(boost::shared_ptr<IOChannel> in)
+JpegInput::JpegInput(std::shared_ptr<IOChannel> in)
:
Input(in),
- _errorOccurred(0),
+ _errorOccurred(nullptr),
+ _jmpBuf(),
_compressorOpened(false)
{
setup_jpeg_err(&m_jerr);
@@ -234,7 +235,7 @@ JpegInput::~JpegInput()
reinterpret_cast<rw_source_IOChannel*>(m_cinfo.src);
delete src;
- m_cinfo.src = NULL;
+ m_cinfo.src = nullptr;
jpeg_destroy_decompress(&m_cinfo);
}
@@ -441,13 +442,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++) {
@@ -547,7 +548,7 @@ public:
// Clean ourselves up.
delete dest;
- cinfo->dest = NULL;
+ cinfo->dest = nullptr;
}
private:
@@ -560,7 +561,7 @@ private:
};
-JpegOutput::JpegOutput(boost::shared_ptr<IOChannel> out, size_t width,
+JpegOutput::JpegOutput(std::shared_ptr<IOChannel> out, size_t width,
size_t height, int quality)
:
Output(out, width, height)
@@ -608,7 +609,7 @@ JpegOutput::writeImageRGBA(const unsigned char* rgbaData)
const size_t components = 3;
const size_t size = _width * _height;
- boost::scoped_array<unsigned char> data(
+ std::unique_ptr<unsigned char[]> data(
new unsigned char[size * components]);
for (size_t pixel = 0; pixel < size; ++pixel) {
@@ -619,11 +620,11 @@ JpegOutput::writeImageRGBA(const unsigned char* rgbaData)
writeImageRGB(data.get());
}
-std::auto_ptr<Output>
-JpegOutput::create(boost::shared_ptr<IOChannel> o, size_t width, size_t height,
+std::unique_ptr<Output>
+JpegOutput::create(std::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..846ce8a 100644
--- a/libbase/GnashImageJpeg.h
+++ b/libbase/GnashImageJpeg.h
@@ -68,7 +68,7 @@ public:
/// @param in The stream to read JPEG data from. Ownership is shared
/// between caller and JpegInput, so it is freed
/// automatically when the last owner is destroyed.
- DSOEXPORT JpegInput(boost::shared_ptr<IOChannel> in);
+ DSOEXPORT JpegInput(std::shared_ptr<IOChannel> in);
/// Read the JPEG header information only.
//
@@ -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(std::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(
- boost::shared_ptr<IOChannel> in, unsigned int maxHeaderBytes)
+ static std::unique_ptr<JpegInput> createSWFJpeg2HeaderOnly(
+ std::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;
@@ -174,7 +174,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.
- JpegOutput(boost::shared_ptr<IOChannel> out, size_t width,
+ JpegOutput(std::shared_ptr<IOChannel> out, size_t width,
size_t height, int quality);
~JpegOutput();
@@ -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(std::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..907a8f0 100644
--- a/libbase/GnashImagePng.cpp
+++ b/libbase/GnashImagePng.cpp
@@ -25,7 +25,6 @@
#include "GnashImagePng.h"
#include <sstream>
-#include <boost/scoped_array.hpp>
extern "C" {
#ifdef HAVE_PNG_H
@@ -91,13 +90,11 @@ public:
/// @param in The stream to read PNG data from. Ownership is shared
/// between caller and JpegInput, so it is freed
/// automatically when the last owner is destroyed.
- PngInput(boost::shared_ptr<IOChannel> in)
+ PngInput(std::shared_ptr<IOChannel> in)
:
Input(in),
- _pngPtr(0),
- _infoPtr(0),
- _rowPtrs(0),
- _pixelData(0),
+ _pngPtr(nullptr),
+ _infoPtr(nullptr),
_currentRow(0)
{
init();
@@ -130,8 +127,8 @@ private:
// State needed for input.
png_structp _pngPtr;
png_infop _infoPtr;
- boost::scoped_array<png_bytep> _rowPtrs;
- boost::scoped_array<png_byte> _pixelData;
+ std::unique_ptr<png_bytep[]> _rowPtrs;
+ std::unique_ptr<png_byte[]> _pixelData;
// A counter for keeping track of the last row copied.
size_t _currentRow;
@@ -155,7 +152,7 @@ public:
/// @param out The IOChannel used for output. Must be kept alive
/// throughout
/// @param quality Unused in PNG output
- PngOutput(boost::shared_ptr<IOChannel> out, size_t width,
+ PngOutput(std::shared_ptr<IOChannel> out, size_t width,
size_t height, int quality);
~PngOutput();
@@ -177,7 +174,7 @@ private:
PngInput::~PngInput()
{
- png_destroy_read_struct(&_pngPtr, &_infoPtr, 0);
+ png_destroy_read_struct(&_pngPtr, &_infoPtr, nullptr);
}
size_t
@@ -219,7 +216,7 @@ void
PngInput::init()
{
// Initialize png library.
- _pngPtr = png_create_read_struct(PNG_LIBPNG_VER_STRING, 0, &error,
+ _pngPtr = png_create_read_struct(PNG_LIBPNG_VER_STRING, nullptr, &error,
&warning);
if (!_pngPtr) return;
@@ -227,7 +224,7 @@ PngInput::init()
_infoPtr = png_create_info_struct(_pngPtr);
if (!_infoPtr) {
- png_destroy_read_struct(&_pngPtr, 0, 0);
+ png_destroy_read_struct(&_pngPtr, nullptr, nullptr);
return;
}
}
@@ -318,12 +315,12 @@ PngInput::read()
/// PNG output
///
-PngOutput::PngOutput(boost::shared_ptr<IOChannel> out, size_t width,
+PngOutput::PngOutput(std::shared_ptr<IOChannel> out, size_t width,
size_t height, int /*quality*/)
:
Output(out, width, height),
- _pngPtr(0),
- _infoPtr(0)
+ _pngPtr(nullptr),
+ _infoPtr(nullptr)
{
init();
}
@@ -340,13 +337,13 @@ PngOutput::init()
{
// Initialize png library.
_pngPtr = png_create_write_struct(PNG_LIBPNG_VER_STRING,
- NULL, &error, &warning);
+ nullptr, &error, &warning);
if (!_pngPtr) return;
_infoPtr = png_create_info_struct(_pngPtr);
if (!_infoPtr) {
- png_destroy_write_struct(&_pngPtr, static_cast<png_infopp>(NULL));
+ png_destroy_write_struct(&_pngPtr, static_cast<png_infopp>(nullptr));
return;
}
}
@@ -356,7 +353,7 @@ PngOutput::writeImageRGBA(const unsigned char* rgbaData)
{
png_set_write_fn(_pngPtr, _outStream.get(), &writeData, &flushData);
- boost::scoped_array<const png_byte*> rows(new const png_byte*[_height]);
+ std::unique_ptr<const png_byte*[]> rows(new const png_byte*[_height]);
// RGBA
const size_t components = 4;
@@ -372,7 +369,7 @@ PngOutput::writeImageRGBA(const unsigned char* rgbaData)
8, PNG_COLOR_TYPE_RGBA, PNG_INTERLACE_NONE,
PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT);
- png_write_png(_pngPtr, _infoPtr, PNG_TRANSFORM_IDENTITY, NULL);
+ png_write_png(_pngPtr, _infoPtr, PNG_TRANSFORM_IDENTITY, nullptr);
}
@@ -381,7 +378,7 @@ PngOutput::writeImageRGB(const unsigned char* rgbData)
{
png_set_write_fn(_pngPtr, _outStream.get(), &writeData, &flushData);
- boost::scoped_array<const png_byte*> rows(new const png_byte*[_height]);
+ std::unique_ptr<const png_byte*[]> rows(new const png_byte*[_height]);
// RGB
const size_t components = 3;
@@ -397,24 +394,24 @@ PngOutput::writeImageRGB(const unsigned char* rgbData)
8, PNG_COLOR_TYPE_RGB, PNG_INTERLACE_NONE,
PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT);
- png_write_png(_pngPtr, _infoPtr, PNG_TRANSFORM_IDENTITY, NULL);
+ png_write_png(_pngPtr, _infoPtr, PNG_TRANSFORM_IDENTITY, nullptr);
}
} // unnamed namespace
-std::auto_ptr<Input>
-createPngInput(boost::shared_ptr<IOChannel> in)
+std::unique_ptr<Input>
+createPngInput(std::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>
-createPngOutput(boost::shared_ptr<IOChannel> o, size_t width,
+std::unique_ptr<Output>
+createPngOutput(std::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..a16f47c 100644
--- a/libbase/GnashImagePng.h
+++ b/libbase/GnashImagePng.h
@@ -22,7 +22,6 @@
#define GNASH_IMAGE_PNG_H
#include <memory>
-#include <boost/shared_ptr.hpp>
// Forward declarations
namespace gnash {
@@ -39,9 +38,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(std::shared_ptr<IOChannel> in);
-std::auto_ptr<Output> createPngOutput(boost::shared_ptr<IOChannel> out,
+std::unique_ptr<Output> createPngOutput(std::shared_ptr<IOChannel> out,
size_t width, size_t height, int quality);
} // namespace image
diff --git a/libbase/GnashNumeric.h b/libbase/GnashNumeric.h
index c92a2bd..34cca6d 100644
--- a/libbase/GnashNumeric.h
+++ b/libbase/GnashNumeric.h
@@ -32,10 +32,9 @@
#include <cassert>
#include <cmath>
#include <algorithm>
-#include <boost/cstdint.hpp>
+#include <cstdint>
#include <limits>
-#include <boost/utility/enable_if.hpp>
-#include <boost/type_traits/is_floating_point.hpp>
+#include <type_traits>
namespace gnash {
@@ -59,9 +58,11 @@ isFinite(double d)
template <typename T>
inline
-typename boost::enable_if<boost::is_floating_point<T>, bool>::type
+bool
isNaN(const T& num)
{
+ static_assert(std::is_floating_point<T>::value,
+ "isNaN() is only meaningful for floating point types.");
return num != num;
}
@@ -99,7 +100,7 @@ twipsToPixels(int i)
}
template<size_t Factor>
-boost::int32_t
+std::int32_t
truncateWithFactor(double a)
{
// If a is NaN, then this function would return -NAN, which when cast to
@@ -119,11 +120,11 @@ truncateWithFactor(double a)
// extremely rare, using this safe version has no implications for
// performance under normal circumstances.
static const double upperUnsignedLimit =
- std::numeric_limits<boost::uint32_t>::max() + 1.0;
+ std::numeric_limits<std::uint32_t>::max() + 1.0;
static const double upperSignedLimit =
- std::numeric_limits<boost::int32_t>::max() / factor;
+ std::numeric_limits<std::int32_t>::max() / factor;
static const double lowerSignedLimit =
- std::numeric_limits<boost::int32_t>::min() / factor;
+ std::numeric_limits<std::int32_t>::min() / factor;
if (a >= lowerSignedLimit && a <= upperSignedLimit) {
return a * Factor;
@@ -131,15 +132,15 @@ truncateWithFactor(double a)
// This slow truncation happens only in very unlikely cases.
return a >= 0 ?
- static_cast<boost::uint32_t>(
+ static_cast<std::uint32_t>(
std::fmod(a * factor, upperUnsignedLimit))
:
- -static_cast<boost::uint32_t>(
+ -static_cast<std::uint32_t>(
std::fmod(-a * factor, upperUnsignedLimit));
}
// truncate when overflow occurs.
-inline boost::int32_t
+inline std::int32_t
pixelsToTwips(double a)
{
return truncateWithFactor<20>(a);
diff --git a/libbase/GnashScopedPtr.h b/libbase/GnashScopedPtr.h
deleted file mode 100644
index f5fc813..0000000
--- a/libbase/GnashScopedPtr.h
+++ /dev/null
@@ -1,85 +0,0 @@
-// GnashSmartPtr.h: scoped pointer supporting deleters.
-//
-// Copyright (C) 2013
-// Free Software Foundation, Inc.
-//
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 3 of the License, or
-// (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-//
-
-#ifndef GNASH_SCOPED_PTR_H
-#define GNASH_SCOPED_PTR_H
-
-#include <boost/utility.hpp> // noncopyable
-#include <boost/function.hpp>
-
-namespace gnash {
-
-/// ScopedPtr is very similar to scoped_ptr, but includes the Deleter
-/// functionality from shared_ptr. ScopedPtr can be used to implement the RAII
-/// pattern for C APIs, which frequently have their own deallocation strategy,
-/// when shared_ptr semantics are not desirable.
-//
-/// ScopedPtr is similar to C++11's unique_ptr, but the deleter is not part of
-/// the type.
-template <typename T>
-class ScopedPtr : private boost::noncopyable
-{
-private:
- typedef boost::function<void(T* x)> DeleterT;
-public:
-
- /// Construct a ScopedPtr and provide a deleter.
- ///
- /// @ptr the pointer to exclusively manage.
- /// @deleter the deleter to call when this object goes out of scope.
- /// The expression d(ptr) must be well-formed.
- explicit ScopedPtr(T* ptr, DeleterT d)
- : _ptr(ptr),
- _deleter(d)
- {}
-
- /// Dereferences the managed pointer and returns a reference.
- T& operator*() const
- {
- return *_ptr;
- }
-
- /// Dereference the contained pointer.
- T* operator->() const
- {
- return _ptr;
- }
-
- /// Obtain the contained pointer.
- T* get() const
- {
- return _ptr;
- }
-
- ~ScopedPtr()
- {
- if (_ptr) {
- _deleter(_ptr);
- }
- }
-private:
-
- T* _ptr;
- DeleterT _deleter;
-};
-
-} // namespace gnash
-
-#endif
diff --git a/libbase/GnashSleep.h b/libbase/GnashSleep.h
index 46effce..dcce71c 100644
--- a/libbase/GnashSleep.h
+++ b/libbase/GnashSleep.h
@@ -39,7 +39,7 @@ inline void gnashSleep(time_t useconds)
#else
const time_t m = 1000000;
const struct timespec t = { useconds / m, (useconds % m) * 1000 };
- ::nanosleep(&t, 0);
+ ::nanosleep(&t, nullptr);
#endif
}
diff --git a/libbase/GnashVaapiImage.cpp b/libbase/GnashVaapiImage.cpp
index 72b040b..6cf00dd 100644
--- a/libbase/GnashVaapiImage.cpp
+++ b/libbase/GnashVaapiImage.cpp
@@ -27,20 +27,20 @@
namespace gnash {
/// Get current value of microsecond timer
-static boost::uint64_t get_ticks_usec(void)
+static std::uint64_t get_ticks_usec(void)
{
#ifdef HAVE_CLOCK_GETTIME
struct timespec t;
clock_gettime(CLOCK_REALTIME, &t);
- return (boost::uint64_t)t.tv_sec * 1000000 + t.tv_nsec / 1000;
+ return (std::uint64_t)t.tv_sec * 1000000 + t.tv_nsec / 1000;
#else
struct timeval t;
gettimeofday(&t, NULL);
- return (boost::uint64_t)t.tv_sec * 1000000 + t.tv_usec;
+ return (std::uint64_t)t.tv_sec * 1000000 + t.tv_usec;
#endif
}
-GnashVaapiImage::GnashVaapiImage(boost::shared_ptr<VaapiSurface> surface,
+GnashVaapiImage::GnashVaapiImage(std::shared_ptr<VaapiSurface> surface,
image::ImageType type)
:
image::GnashImage(NULL, surface->width(), surface->height(), type,
@@ -58,13 +58,13 @@ GnashVaapiImage::~GnashVaapiImage()
_surface->get());
}
-void GnashVaapiImage::update(boost::shared_ptr<VaapiSurface> surface)
+void GnashVaapiImage::update(std::shared_ptr<VaapiSurface> surface)
{
_surface = surface;
_creation_time = get_ticks_usec();
}
-void GnashVaapiImage::update(boost::uint8_t* data)
+void GnashVaapiImage::update(std::uint8_t* data)
{
log_debug(_("GnashVaapi::update(): data %p\n"), data);
@@ -80,7 +80,7 @@ void GnashVaapiImage::update(const image::GnashImage& from)
switch (from.location()) {
case image::GNASH_IMAGE_CPU:
- this->update(const_cast<boost::uint8_t*>(from.begin()));
+ this->update(const_cast<std::uint8_t*>(from.begin()));
break;
case image::GNASH_IMAGE_GPU:
this->update(static_cast<const GnashVaapiImage&>(from).surface());
@@ -111,7 +111,7 @@ GnashVaapiImage::begin()
{
log_debug(_("GnashVaapiImage::data(): surface 0x%08x\n"), _surface->get());
log_debug(_(" -> %u usec from creation\n"),
- (boost::uint32_t)(get_ticks_usec() - _creation_time));
+ (std::uint32_t)(get_ticks_usec() - _creation_time));
if (!transfer()) {
return NULL;
@@ -127,7 +127,7 @@ GnashVaapiImage::begin() const
log_debug(_("GnashVaapiImage::data() const: surface 0x%08x\n"),
_surface->get());
log_debug(_(" -> %u usec from creation\n"),
- (boost::uint32_t)(get_ticks_usec() - _creation_time));
+ (std::uint32_t)(get_ticks_usec() - _creation_time));
/* XXX: awful hack... */
if (!const_cast<GnashVaapiImage *>(this)->transfer()) {
diff --git a/libbase/GnashVaapiImage.h b/libbase/GnashVaapiImage.h
index 9b2558f..284ef5d 100644
--- a/libbase/GnashVaapiImage.h
+++ b/libbase/GnashVaapiImage.h
@@ -21,7 +21,6 @@
#ifndef GNASH_GNASHVAAPIIMAGE_H
#define GNASH_GNASHVAAPIIMAGE_H
-#include <boost/shared_ptr.hpp>
#include "GnashImage.h"
#include "dsodefs.h"
@@ -35,26 +34,26 @@ class VaapiSurfaceProxy;
/// GnashImage implementation using a VA surface
class DSOEXPORT GnashVaapiImage : public image::GnashImage
{
- boost::shared_ptr<VaapiSurface> _surface;
- boost::uint64_t _creation_time;
+ std::shared_ptr<VaapiSurface> _surface;
+ std::uint64_t _creation_time;
/// Transfer (and convert) VA surface to CPU image data
bool transfer();
public:
- GnashVaapiImage(boost::shared_ptr<VaapiSurface> surface,
+ GnashVaapiImage(std::shared_ptr<VaapiSurface> surface,
image::ImageType type);
GnashVaapiImage(const GnashVaapiImage& o);
~GnashVaapiImage();
- virtual void update(boost::shared_ptr<VaapiSurface> surface);
- virtual void update(boost::uint8_t* data);
+ virtual void update(std::shared_ptr<VaapiSurface> surface);
+ virtual void update(std::uint8_t* data);
virtual void update(const image::GnashImage& from);
/// Get access to the underlying surface
//
/// @return A pointer to the VA surface.
- boost::shared_ptr<VaapiSurface> surface() const
+ std::shared_ptr<VaapiSurface> surface() const
{ return _surface; }
/// Get access to the underlying data
diff --git a/libbase/GnashVaapiImageProxy.h b/libbase/GnashVaapiImageProxy.h
index fd3c389..9effad0 100644
--- a/libbase/GnashVaapiImageProxy.h
+++ b/libbase/GnashVaapiImageProxy.h
@@ -21,7 +21,6 @@
#ifndef GNASH_GNASHVAAPIIMAGEPROXY_H
#define GNASH_GNASHVAAPIIMAGEPROXY_H
-#include <boost/shared_ptr.hpp>
namespace gnash {
@@ -33,10 +32,10 @@ class VaapiSurface;
/// XXX: call it GnashRenderedVaapiImage instead?
class DSOEXPORT GnashVaapiImageProxy
{
- /* XXX: Should Renderers use boost::shared_ptr<> we could simple
+ /* XXX: Should Renderers use std::shared_ptr<> we could simple
derive from a GnashImageProxy base that would itself contain a
shared pointer to the image */
- boost::shared_ptr<VaapiSurface> _surface;
+ std::shared_ptr<VaapiSurface> _surface;
/// X-position of the rendered image, in pixels
const int _x;
@@ -63,7 +62,7 @@ public:
/// Get access to the underlying surface
//
/// @return A pointer to the VA surface.
- boost::shared_ptr<VaapiSurface> surface() const
+ std::shared_ptr<VaapiSurface> surface() const
{ return _surface; }
/// Get the rendered image's x position
diff --git a/libbase/GnashVaapiTexture.cpp b/libbase/GnashVaapiTexture.cpp
index 69ee528..52d7a51 100644
--- a/libbase/GnashVaapiTexture.cpp
+++ b/libbase/GnashVaapiTexture.cpp
@@ -39,7 +39,7 @@ GnashVaapiTexture::~GnashVaapiTexture()
{
}
-void GnashVaapiTexture::update(boost::shared_ptr<VaapiSurface> surface)
+void GnashVaapiTexture::update(std::shared_ptr<VaapiSurface> surface)
{
_surface->update(surface);
}
diff --git a/libbase/GnashVaapiTexture.h b/libbase/GnashVaapiTexture.h
index acef86b..26b6d4a 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,
@@ -44,7 +44,7 @@ public:
/// unexpected things will happen.
///
/// @param surface VA surface to copy data from.
- void update(boost::shared_ptr<VaapiSurface> surface);
+ void update(std::shared_ptr<VaapiSurface> surface);
};
} // gnash namespace
diff --git a/libbase/IOChannel.cpp b/libbase/IOChannel.cpp
index 1cf6278..d9ba0bb 100644
--- a/libbase/IOChannel.cpp
+++ b/libbase/IOChannel.cpp
@@ -21,27 +21,25 @@
#include "IOChannel.h"
-#include <boost/static_assert.hpp>
-
namespace gnash
{
-boost::uint32_t
+std::uint32_t
IOChannel::read_le32()
{
- // read_byte() is boost::uint8_t, so no masks with 0xff are required.
- boost::uint32_t result = static_cast<boost::uint32_t>(read_byte());
- result |= static_cast<boost::uint32_t>(read_byte()) << 8;
- result |= static_cast<boost::uint32_t>(read_byte()) << 16;
- result |= static_cast<boost::uint32_t>(read_byte()) << 24;
+ // read_byte() is std::uint8_t, so no masks with 0xff are required.
+ std::uint32_t result = static_cast<std::uint32_t>(read_byte());
+ result |= static_cast<std::uint32_t>(read_byte()) << 8;
+ result |= static_cast<std::uint32_t>(read_byte()) << 16;
+ result |= static_cast<std::uint32_t>(read_byte()) << 24;
return(result);
}
-boost::uint16_t
+std::uint16_t
IOChannel::read_le16()
{
- boost::uint16_t result = static_cast<boost::uint16_t>(read_byte());
- result |= static_cast<boost::uint16_t>(read_byte()) << 8;
+ std::uint16_t result = static_cast<std::uint16_t>(read_byte());
+ result |= static_cast<std::uint16_t>(read_byte()) << 8;
return(result);
}
@@ -61,24 +59,10 @@ IOChannel::read_string(char* dst, int max_length)
return -1;
}
-float
-IOChannel::read_float32()
-{
- union {
- float f;
- boost::uint32_t i;
- } u;
-
- BOOST_STATIC_ASSERT(sizeof(u) == sizeof(u.i)) __attribute__((unused));
-
- u.i = read_le32();
- return u.f;
-}
-
-boost::uint8_t
+std::uint8_t
IOChannel::read_byte()
{
- boost::uint8_t u;
+ std::uint8_t u;
if ( read(&u, 1) == -1 )
{
throw IOException("Could not read a single byte from input");
diff --git a/libbase/IOChannel.h b/libbase/IOChannel.h
index 50a76cd..a4cf468 100644
--- a/libbase/IOChannel.h
+++ b/libbase/IOChannel.h
@@ -22,7 +22,8 @@
#define GNASH_IOCHANNEL_H
#include <string>
-#include <boost/cstdint.hpp> // for boost int types
+#include <ios> // for std::streamsize
+#include <cstdint> // for boost int types
#include "dsodefs.h" // DSOEXPORT
#include "GnashException.h" // for IOException inheritance
@@ -49,19 +50,19 @@ public:
//
/// Throw IOException on error
///
- boost::uint32_t read_le32();
+ std::uint32_t read_le32();
/// Read a 16-bit word from a little-endian stream.
//
/// Throw IOException on error
///
- boost::uint16_t read_le16();
+ std::uint16_t read_le16();
/// Read a single byte from the stream
//
/// Throw IOException on error
///
- boost::uint8_t read_byte();
+ std::uint8_t read_byte();
/// Read the given number of bytes from the stream
//
@@ -109,15 +110,6 @@ public:
///
int read_string(char* dst, int max_length);
- /// Read a 32-bit float from a little-endian stream.
- //
- /// NOTE: this currently relies on host FP format being the
- /// same as the Flash one (presumably IEEE 754).
- ///
- /// Throw IOException on error
- ///
- float read_float32();
-
/// Return current stream position
//
/// Throw IOException on error
diff --git a/libbase/ImageIterators.h b/libbase/ImageIterators.h
index 01ff835..54c4111 100644
--- a/libbase/ImageIterators.h
+++ b/libbase/ImageIterators.h
@@ -75,7 +75,7 @@ public:
/// Writes a 32-bit unsigned value in ARGB byte order to the image
//
/// Take note of the different byte order!
- const ARGB& operator=(boost::uint32_t pixel) const {
+ const ARGB& operator=(std::uint32_t pixel) const {
switch (_t) {
case TYPE_RGBA:
// alpha
@@ -91,8 +91,8 @@ public:
}
/// Convert to uint32_t in ARGB order
- operator boost::uint32_t() const {
- boost::uint32_t ret = 0xff000000;
+ operator std::uint32_t() const {
+ std::uint32_t ret = 0xff000000;
switch (_t) {
case TYPE_RGBA:
// alpha
diff --git a/libbase/Makefile.am b/libbase/Makefile.am
index 92f168f..5e572c4 100644
--- a/libbase/Makefile.am
+++ b/libbase/Makefile.am
@@ -45,7 +45,6 @@ libgnashbase_la_SOURCES = \
GnashImageJpeg.cpp \
GnashImageJpeg.h \
GnashNumeric.h \
- GnashScopedPtr.h \
GnashSleep.h \
GnashSystemFDHeaders.h \
GnashSystemIOHeaders.h \
@@ -200,7 +199,6 @@ inst_HEADERS = \
tu_file.h \
IOChannel.h \
Socket.h \
- GnashScopedPtr.h \
GnashSystemFDHeaders.h \
GnashSystemNetHeaders.h \
GnashSystemIOHeaders.h \
diff --git a/libbase/NamingPolicy.cpp b/libbase/NamingPolicy.cpp
index baa20f9..c7b782a 100644
--- a/libbase/NamingPolicy.cpp
+++ b/libbase/NamingPolicy.cpp
@@ -52,9 +52,9 @@ OverwriteExisting::operator()(const URL& url) const
}
-IncrementalRename::IncrementalRename(const URL& baseURL)
+IncrementalRename::IncrementalRename(URL baseURL)
:
- _baseURL(baseURL)
+ _baseURL(std::move(baseURL))
{
}
diff --git a/libbase/NamingPolicy.h b/libbase/NamingPolicy.h
index 3d237a9..d23edd7 100644
--- a/libbase/NamingPolicy.h
+++ b/libbase/NamingPolicy.h
@@ -53,7 +53,7 @@ public:
class DSOEXPORT IncrementalRename : public NamingPolicy
{
public:
- IncrementalRename(const URL& baseURL);
+ IncrementalRename(URL baseURL);
virtual std::string operator()(const URL& url) const;
private:
diff --git a/libbase/NetworkAdapter.cpp b/libbase/NetworkAdapter.cpp
index 881f4f4..f7b060e 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*/,
@@ -88,14 +88,9 @@ extern "C" {
#include <cerrno>
#include <cstdio> // cached data uses a *FILE
#include <cstdlib> // std::getenv
+#include <mutex>
-#include <boost/version.hpp>
-#include <boost/assign/list_of.hpp>
-#include <boost/thread/mutex.hpp>
-
-#if BOOST_VERSION < 103500
-# include <boost/thread/detail/lock.hpp>
-#endif
+#include <boost/format.hpp>
//#define GNASH_CURL_VERBOSE 1
@@ -109,25 +104,15 @@ namespace gnash {
namespace {
inline
-void lock(boost::mutex& mut)
+void lock(std::mutex& mut)
{
-#if BOOST_VERSION < 103500
- // see https://savannah.gnu.org/bugs/index.php?32579#comment7
- boost::detail::thread::lock_ops<boost::mutex>::lock(mut);
-#else
mut.lock();
-#endif
}
inline
-void unlock(boost::mutex& mut)
+void unlock(std::mutex& mut)
{
-#if BOOST_VERSION < 103500
- // see https://savannah.gnu.org/bugs/index.php?32579#comment7
- boost::detail::thread::lock_ops<boost::mutex>::unlock(mut);
-#else
mut.unlock();
-#endif
}
@@ -173,13 +158,13 @@ private:
CURLSH* _shandle;
// mutex protecting share state
- boost::mutex _shareMutex;
+ std::mutex _shareMutex;
// mutex protecting shared cookies
- boost::mutex _cookieMutex;
+ std::mutex _cookieMutex;
// mutex protecting shared dns cache
- boost::mutex _dnscacheMutex;
+ std::mutex _dnscacheMutex;
/// Import cookies, if requested
//
@@ -252,13 +237,13 @@ CurlSession::~CurlSession()
curl_share_strerror(code));
gnashSleep(1000000);
}
- _shandle = 0;
+ _shandle = nullptr;
curl_global_cleanup();
}
CurlSession::CurlSession()
:
- _shandle(0),
+ _shandle(nullptr),
_shareMutex(),
_cookieMutex(),
_dnscacheMutex()
@@ -788,7 +773,7 @@ CurlStreamFile::processMessages()
void
CurlStreamFile::init(const std::string& url, const std::string& cachefile)
{
- _customHeaders = 0;
+ _customHeaders = nullptr;
_url = url;
_running = 1;
@@ -999,12 +984,11 @@ CurlStreamFile::CurlStreamFile(const std::string& url, const std::string& vars,
assert ( ! _customHeaders );
_customHeaders = curl_slist_append(_customHeaders, "Expect:");
- for (NetworkAdapter::RequestHeaders::const_iterator i = headers.begin(),
- e = headers.end(); i != e; ++i) {
+ for (const auto& header : headers) {
// Check here to see whether header name is allowed.
- if (!NetworkAdapter::isHeaderAllowed(i->first)) continue;
+ if (!NetworkAdapter::isHeaderAllowed(header.first)) continue;
std::ostringstream os;
- os << i->first << ": " << i->second;
+ os << header.first << ": " << header.second;
_customHeaders = curl_slist_append(_customHeaders, os.str().c_str());
}
@@ -1337,14 +1321,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 +1339,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 +1347,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 +1358,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));
@@ -1395,38 +1379,39 @@ NetworkAdapter::makeStream(const std::string& url, const std::string& postdata,
const NetworkAdapter::ReservedNames&
NetworkAdapter::reservedNames()
{
- static const ReservedNames names = boost::assign::list_of
- ("Accept-Ranges")
- ("Age")
- ("Allow")
- ("Allowed")
- ("Connection")
- ("Content-Length")
- ("Content-Location")
- ("Content-Range")
- ("ETag")
- ("GET")
- ("Host")
- ("HEAD")
- ("Last-Modified")
- ("Locations")
- ("Max-Forwards")
- ("POST")
- ("Proxy-Authenticate")
- ("Proxy-Authorization")
- ("Public")
- ("Range")
- ("Retry-After")
- ("Server")
- ("TE")
- ("Trailer")
- ("Transfer-Encoding")
- ("Upgrade")
- ("URI")
- ("Vary")
- ("Via")
- ("Warning")
- ("WWW-Authenticate");
+ static const ReservedNames names = {
+ "Accept-Ranges",
+ "Age",
+ "Allow",
+ "Allowed",
+ "Connection",
+ "Content-Length",
+ "Content-Location",
+ "Content-Range",
+ "ETag",
+ "GET",
+ "Host",
+ "HEAD",
+ "Last-Modified",
+ "Locations",
+ "Max-Forwards",
+ "POST",
+ "Proxy-Authenticate",
+ "Proxy-Authorization",
+ "Public",
+ "Range",
+ "Retry-After",
+ "Server",
+ "TE",
+ "Trailer",
+ "Transfer-Encoding",
+ "Upgrade",
+ "URI",
+ "Vary",
+ "Via",
+ "Warning",
+ "WWW-Authenticate"
+ };
return names;
}
diff --git a/libbase/NetworkAdapter.h b/libbase/NetworkAdapter.h
index 5e83afb..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);
@@ -108,7 +108,7 @@ public:
private:
/// \brief
/// Variable to pass cookiefile path from command line to curl.
- static std::string CookiesIn;
+ static DSOEXPORT std::string CookiesIn;
static const ReservedNames& reservedNames();
diff --git a/libbase/Point2d.h b/libbase/Point2d.h
index c8e535d..6630980 100644
--- a/libbase/Point2d.h
+++ b/libbase/Point2d.h
@@ -26,7 +26,7 @@
#include <ostream>
#include <cmath> // for sqrt()
-#include <boost/cstdint.hpp>
+#include <cstdint>
namespace gnash {
namespace geometry {
@@ -40,20 +40,20 @@ class Point2d
public:
/// The x coordinate
- boost::int32_t x; // TWIPS
+ std::int32_t x; // TWIPS
/// The y coordinate
- boost::int32_t y; // TWIPS
+ std::int32_t y; // TWIPS
/// Construct a Point2d with default x and y coordinates
- Point2d()
+ constexpr Point2d()
:
x(0), y(0)
{
}
/// Construct a Point2d with given x and y ordinates
- Point2d(boost::int32_t cx, boost::int32_t cy)
+ constexpr Point2d(std::int32_t cx, std::int32_t cy)
:
x(cx), y(cy)
{
@@ -67,8 +67,8 @@ public:
///
Point2d(const Point2d& p0, const Point2d& p1, float t)
:
- x( p0.x + (boost::int32_t)((p1.x - p0.x) * t)),
- y( p0.y + (boost::int32_t)((p1.y - p0.y) * t))
+ x( p0.x + (std::int32_t)((p1.x - p0.x) * t)),
+ y( p0.y + (std::int32_t)((p1.y - p0.y) * t))
{
}
@@ -76,7 +76,7 @@ public:
//
/// @return a reference to this instance
///
- Point2d& setTo(const boost::int32_t cx, const boost::int32_t cy)
+ Point2d& setTo(const std::int32_t cx, const std::int32_t cy)
{
x = cx;
y = cy;
@@ -93,31 +93,31 @@ public:
///
Point2d& setTo(const Point2d& p0, const Point2d& p1, float t)
{
- x = p0.x + (boost::int32_t)((p1.x - p0.x) * t);
- y = p0.y + (boost::int32_t)((p1.y - p0.y) * t);
+ x = p0.x + (std::int32_t)((p1.x - p0.x) * t);
+ y = p0.y + (std::int32_t)((p1.y - p0.y) * t);
return *this;
}
/// Return square distance between two given points.
static
- boost::int64_t squareDistance(const Point2d& p0, const Point2d& p1)
+ std::int64_t squareDistance(const Point2d& p0, const Point2d& p1)
{
- boost::int64_t hside = p1.x - p0.x;
- boost::int64_t vside = p1.y - p0.y;
+ std::int64_t hside = p1.x - p0.x;
+ std::int64_t vside = p1.y - p0.y;
return hside*hside + vside*vside;
}
/// Return square distance between this and the given point
- boost::int64_t squareDistance(const Point2d& p) const
+ std::int64_t squareDistance(const Point2d& p) const
{
return squareDistance(*this, p);
}
/// Return distance between this and the given point
- boost::int32_t distance(const Point2d& p) const
+ std::int32_t distance(const Point2d& p) const
{
- return (boost::int32_t)( std::sqrt( static_cast<double>(squareDistance(p)) ) );
+ return (std::int32_t)( std::sqrt( static_cast<double>(squareDistance(p)) ) );
}
bool operator== (const Point2d& p) const
diff --git a/libbase/RTMP.cpp b/libbase/RTMP.cpp
index 068fc11..a44c87b 100644
--- a/libbase/RTMP.cpp
+++ b/libbase/RTMP.cpp
@@ -45,7 +45,7 @@ namespace {
bool sendBytesReceived(RTMP* r);
- void handleMetadata(RTMP& r, const boost::uint8_t *payload,
+ void handleMetadata(RTMP& r, const std::uint8_t *payload,
unsigned int len);
void handleChangeChunkSize(RTMP& r, const RTMPPacket& packet);
void handleControl(RTMP& r, const RTMPPacket& packet);
@@ -53,16 +53,12 @@ namespace {
void handleClientBW(RTMP& r, const RTMPPacket& packet);
void setupInvokePacket(RTMPPacket& packet);
- boost::uint32_t getUptime();
-
- boost::int32_t decodeInt32LE(const boost::uint8_t* c);
- int encodeInt32LE(boost::uint8_t *output, int nVal);
- unsigned int decodeInt24(const boost::uint8_t* c);
- boost::uint8_t* encodeInt16(boost::uint8_t *output, boost::uint8_t *outend,
- short nVal);
- boost::uint8_t* encodeInt24(boost::uint8_t *output, boost::uint8_t *outend,
- int nVal);
- boost::uint8_t* encodeInt32(boost::uint8_t *output, boost::uint8_t *outend,
+ std::uint32_t getUptime();
+
+ std::int32_t decodeInt32LE(const std::uint8_t* c);
+ int encodeInt32LE(std::uint8_t *output, int nVal);
+ unsigned int decodeInt24(const std::uint8_t* c);
+ std::uint8_t* encodeInt24(std::uint8_t *output, std::uint8_t *outend,
int nVal);
static const int packetSize[] = { 12, 8, 4, 1 };
@@ -76,7 +72,7 @@ namespace {
/// TODO: do this properly (it's currently not very random).
struct RandomByte
{
- boost::uint8_t operator()() const {
+ std::uint8_t operator()() const {
return std::rand() % 256;
}
};
@@ -115,8 +111,8 @@ private:
bool stage3();
Socket _socket;
- std::vector<boost::uint8_t> _sendBuf;
- std::vector<boost::uint8_t> _recvBuf;
+ std::vector<std::uint8_t> _sendBuf;
+ std::vector<std::uint8_t> _recvBuf;
bool _error;
bool _complete;
size_t _stage;
@@ -209,10 +205,10 @@ RTMP::connect(const URL& url)
const std::string& p = url.port();
// Default port.
- boost::uint16_t port = 1935;
+ std::uint16_t port = 1935;
if (!p.empty()) {
try {
- port = boost::lexical_cast<boost::uint16_t>(p);
+ port = boost::lexical_cast<std::uint16_t>(p);
}
catch (const boost::bad_lexical_cast&) {}
}
@@ -360,7 +356,7 @@ RTMP::handlePacket(const RTMPPacket& packet)
}
int
-RTMP::readSocket(boost::uint8_t* buffer, int n)
+RTMP::readSocket(std::uint8_t* buffer, int n)
{
assert(n >= 0);
@@ -431,8 +427,8 @@ RTMP::readPacketHeader(RTMPPacket& packet)
RTMPHeader& hr = packet.header;
- boost::uint8_t hbuf[RTMPHeader::headerSize] = { 0 };
- boost::uint8_t* header = hbuf;
+ std::uint8_t hbuf[RTMPHeader::headerSize] = { 0 };
+ std::uint8_t* header = hbuf;
// The first read may fail, but otherwise we expect a complete header.
if (readSocket(hbuf, 1) == 0) {
@@ -465,7 +461,7 @@ RTMP::readPacketHeader(RTMPPacket& packet)
return false;
}
- const boost::uint32_t tmp = (hbuf[2] << 8) + hbuf[1];
+ const std::uint32_t tmp = (hbuf[2] << 8) + hbuf[1];
hr.channel = tmp + 64;
log_debug("%s, channel: %0x", __FUNCTION__, hr.channel);
header += 2;
@@ -497,12 +493,9 @@ RTMP::readPacketHeader(RTMPPacket& packet)
return false;
}
- // nSize is predicted size - 1. Add what we've read already.
- int hSize = nSize + (header - hbuf);
-
if (nSize >= 3) {
- const boost::uint32_t timestamp = decodeInt24(header);
+ const std::uint32_t timestamp = decodeInt24(header);
// Make our packet timestamp absolute. If the value is 0xffffff,
// the absolute value comes later.
@@ -542,8 +535,6 @@ RTMP::readPacketHeader(RTMPPacket& packet)
return false;
}
hr._timestamp = amf::readNetworkLong(header+nSize);
- hSize += 4;
-
}
const size_t bufSize = hr.dataSize + RTMPHeader::headerSize;
@@ -596,7 +587,7 @@ RTMP::sendPacket(RTMPPacket& packet)
hr.dataSize = payloadSize(packet);
// This is the timestamp for our message.
- const boost::uint32_t uptime = getUptime();
+ const std::uint32_t uptime = getUptime();
// Look at the previous packet on the channel.
bool prev = hasPacket(CHANNELS_OUT, hr.channel);
@@ -619,7 +610,7 @@ RTMP::sendPacket(RTMPPacket& packet)
const RTMPPacket& prevPacket = getPacket(CHANNELS_OUT, hr.channel);
const RTMPHeader& oldh = prevPacket.header;
- const boost::uint32_t prevTimestamp = oldh._timestamp;
+ const std::uint32_t prevTimestamp = oldh._timestamp;
// If this timestamp is later than the other and the difference fits
// in 3 bytes, encode a relative one.
@@ -653,10 +644,10 @@ RTMP::sendPacket(RTMPPacket& packet)
int nSize = packetSize[hr.headerType];
int hSize = nSize;
- boost::uint8_t* header;
- boost::uint8_t* hptr;
- boost::uint8_t* hend;
- boost::uint8_t c;
+ std::uint8_t* header;
+ std::uint8_t* hptr;
+ std::uint8_t* hend;
+ std::uint8_t c;
// If there is a payload, the same buffer is used to write the header.
// Otherwise a separate buffer is used. But as we write them separately
@@ -700,7 +691,7 @@ RTMP::sendPacket(RTMPPacket& packet)
if (hr.headerType == RTMP_PACKET_SIZE_LARGE && hr._timestamp >= 0xffffff) {
// Signify that the extended timestamp field is present.
- const boost::uint32_t t = 0xffffff;
+ const std::uint32_t t = 0xffffff;
hptr = encodeInt24(hptr, hend, t);
}
else if (hr.headerType != RTMP_PACKET_SIZE_MINIMUM) {
@@ -726,7 +717,7 @@ RTMP::sendPacket(RTMPPacket& packet)
}
nSize = hr.dataSize;
- boost::uint8_t *buffer = payloadData(packet);
+ std::uint8_t *buffer = payloadData(packet);
int nChunkSize = _outChunkSize;
std::string hx = hexify(header, payloadEnd(packet) - header, false);
@@ -741,7 +732,7 @@ RTMP::sendPacket(RTMPPacket& packet)
if (_socket.write(header, chunk) != chunk) {
return false;
}
- header = NULL;
+ header = nullptr;
hSize = 0;
}
@@ -776,8 +767,8 @@ RTMP::sendPacket(RTMPPacket& packet)
/* we invoked a remote method */
if (hr.packetType == PACKET_TYPE_INVOKE) {
assert(payloadData(packet)[0] == amf::STRING_AMF0);
- const boost::uint8_t* pos = payloadData(packet) + 1;
- const boost::uint8_t* end = payloadEnd(packet);
+ const std::uint8_t* pos = payloadData(packet) + 1;
+ const std::uint8_t* end = payloadEnd(packet);
const std::string& s = amf::readString(pos, end);
log_debug("Calling remote method %s", s);
}
@@ -823,9 +814,9 @@ HandShaker::HandShaker(Socket& s)
_sendBuf[0] = 0x03;
// TODO: do this properly.
- boost::uint32_t uptime = htonl(getUptime());
+ std::uint32_t uptime = htonl(getUptime());
- boost::uint8_t* ourSig = &_sendBuf.front() + 1;
+ std::uint8_t* ourSig = &_sendBuf.front() + 1;
std::memcpy(ourSig, &uptime, 4);
std::fill_n(ourSig + 4, 4, 0);
@@ -902,10 +893,10 @@ HandShaker::stage1()
_recvBuf[0], _sendBuf[0]);
}
- const boost::uint8_t* serverSig = &_recvBuf.front() + 1;
+ const std::uint8_t* serverSig = &_recvBuf.front() + 1;
// decode server response
- boost::uint32_t suptime;
+ std::uint32_t suptime;
std::memcpy(&suptime, serverSig, 4);
suptime = ntohl(suptime);
@@ -945,8 +936,8 @@ HandShaker::stage3()
assert(got == sigSize);
- const boost::uint8_t* serverSig = &_recvBuf.front();
- const boost::uint8_t* ourSig = &_sendBuf.front() + 1;
+ const std::uint8_t* serverSig = &_recvBuf.front();
+ const std::uint8_t* ourSig = &_sendBuf.front() + 1;
const bool match = std::equal(serverSig, serverSig + sigSize, ourSig);
@@ -1018,7 +1009,7 @@ sendBytesReceived(RTMP* r)
void
-handleMetadata(RTMP& /*r*/, const boost::uint8_t* /* payload*/,
+handleMetadata(RTMP& /*r*/, const std::uint8_t* /* payload*/,
unsigned int /*len*/)
{
return;
@@ -1095,7 +1086,7 @@ handleControl(RTMP& r, const RTMPPacket& packet)
void
handleServerBW(RTMP& r, const RTMPPacket& packet)
{
- const boost::uint32_t bw = amf::readNetworkLong(payloadData(packet));
+ const std::uint32_t bw = amf::readNetworkLong(payloadData(packet));
log_debug("Server bandwidth is %s", bw);
r.setServerBandwidth(bw);
}
@@ -1103,7 +1094,7 @@ handleServerBW(RTMP& r, const RTMPPacket& packet)
void
handleClientBW(RTMP& r, const RTMPPacket& packet)
{
- const boost::uint32_t bw = amf::readNetworkLong(payloadData(packet));
+ const std::uint32_t bw = amf::readNetworkLong(payloadData(packet));
r.setBandwidth(bw);
@@ -1115,14 +1106,14 @@ handleClientBW(RTMP& r, const RTMPPacket& packet)
-boost::int32_t
-decodeInt32LE(const boost::uint8_t* c)
+std::int32_t
+decodeInt32LE(const std::uint8_t* c)
{
return (c[3] << 24) | (c[2] << 16) | (c[1] << 8) | c[0];
}
int
-encodeInt32LE(boost::uint8_t *output, int nVal)
+encodeInt32LE(std::uint8_t *output, int nVal)
{
output[0] = nVal;
nVal >>= 8;
@@ -1145,27 +1136,17 @@ setupInvokePacket(RTMPPacket& packet)
}
unsigned int
-decodeInt24(const boost::uint8_t *c)
+decodeInt24(const std::uint8_t *c)
{
unsigned int val;
val = (c[0] << 16) | (c[1] << 8) | c[2];
return val;
}
-boost::uint8_t*
-encodeInt16(boost::uint8_t *output, boost::uint8_t *outend, short nVal)
+std::uint8_t*
+encodeInt24(std::uint8_t *output, std::uint8_t *outend, int nVal)
{
- if (output+2 > outend) return NULL;
-
- output[1] = nVal & 0xff;
- output[0] = nVal >> 8;
- return output + 2;
-}
-
-boost::uint8_t*
-encodeInt24(boost::uint8_t *output, boost::uint8_t *outend, int nVal)
-{
- if (output + 3 > outend) return NULL;
+ if (output + 3 > outend) return nullptr;
output[2] = nVal & 0xff;
output[1] = nVal >> 8;
@@ -1173,29 +1154,23 @@ encodeInt24(boost::uint8_t *output, boost::uint8_t *outend, int nVal)
return output+3;
}
-boost::uint8_t*
-encodeInt32(boost::uint8_t *output, boost::uint8_t *outend, int nVal)
-{
- if (output+4 > outend) return NULL;
-
- output[3] = nVal & 0xff;
- output[2] = nVal >> 8;
- output[1] = nVal >> 16;
- output[0] = nVal >> 24;
- return output + 4;
-}
-
-boost::uint32_t
+std::uint32_t
getUptime()
{
+ // This function returns the uptime in milliseconds, which necessarily
+ // overflows uint32_t after ~50 days. Because the result is used for
+ // timestamping this is not a big problem, assuming a single RTMP session
+ // won't last that long. We ensure the overflow happens in a manner
+ // avoiding undefined behaviour.
+
#if !defined(_WIN32) && !defined(__amigaos4__)
struct tms t;
- return times(&t) * 1000 / sysconf(_SC_CLK_TCK);
+ return times(&t) * (1000UL / sysconf(_SC_CLK_TCK));
#elif defined(__amigaos4__)
struct tms t;
- return times(&t) * 1000 / 50;
+ return times(&t) * (1000UL / 50);
#else
- return std::clock() * 100 / CLOCKS_PER_SEC;
+ return std::clock() * (100UL / CLOCKS_PER_SEC);
#endif
}
diff --git a/libbase/RTMP.h b/libbase/RTMP.h
index dc6c536..0eacf87 100644
--- a/libbase/RTMP.h
+++ b/libbase/RTMP.h
@@ -19,9 +19,8 @@
#ifndef GNASH_RTMP_H
#define GNASH_RTMP_H
-#include <boost/cstdint.hpp>
-#include <boost/shared_ptr.hpp>
-#include <boost/scoped_ptr.hpp>
+#include <cstdint>
+#include <memory>
#include <deque>
#include <map>
@@ -172,10 +171,10 @@ struct RTMPHeader
//
/// This is encoded either as in the 3-byte relative timestamp field or the
/// 4 byte extended (absolute) timestamp field.
- boost::uint32_t _timestamp;
+ std::uint32_t _timestamp;
/// This seems to be used for NetStream.play.
- boost::uint32_t _streamID;
+ std::uint32_t _streamID;
size_t channel;
@@ -217,7 +216,7 @@ struct RTMPPacket
//
/// This always includes at least the header. Storage for the message
/// payload is added as necessary.
- boost::shared_ptr<SimpleBuffer> buffer;
+ std::shared_ptr<SimpleBuffer> buffer;
size_t bytesRead;
};
@@ -259,7 +258,7 @@ payloadSize(const RTMPPacket& p)
}
/// Access the payload data section of the buffer.
-inline boost::uint8_t*
+inline std::uint8_t*
payloadData(RTMPPacket& p)
{
assert(hasPayload(p));
@@ -268,7 +267,7 @@ payloadData(RTMPPacket& p)
}
/// Access the payload data section of the buffer.
-inline const boost::uint8_t*
+inline const std::uint8_t*
payloadData(const RTMPPacket& p)
{
assert(hasPayload(p));
@@ -281,7 +280,7 @@ payloadData(const RTMPPacket& p)
/// Note that this is only valid for packets we create, and for packets
/// we have fully read. Stored packets that have not yet received all data
/// have allocated space that has not yet been written.
-inline const boost::uint8_t*
+inline const std::uint8_t*
payloadEnd(const RTMPPacket& p)
{
assert(hasPayload(p));
@@ -413,9 +412,9 @@ struct DSOEXPORT RTMP
/// TODO: this returns the whole RTMP message, which is ugly. And it
/// only returns one at time, and can return a null pointer. We need
/// a better way to retrieve the messages.
- boost::shared_ptr<SimpleBuffer> getMessage() {
- if (_messageQueue.empty()) return boost::shared_ptr<SimpleBuffer>();
- boost::shared_ptr<SimpleBuffer> b = _messageQueue.front();
+ std::shared_ptr<SimpleBuffer> getMessage() {
+ if (_messageQueue.empty()) return std::shared_ptr<SimpleBuffer>();
+ std::shared_ptr<SimpleBuffer> b = _messageQueue.front();
_messageQueue.pop_front();
return b;
}
@@ -425,9 +424,9 @@ struct DSOEXPORT RTMP
/// TODO: this returns the whole RTMP message, which is ugly. And it
/// only returns one at time, and can return a null pointer. We need
/// a better way to retrieve the frames.
- boost::shared_ptr<SimpleBuffer> getFLVFrame() {
- if (_flvQueue.empty()) return boost::shared_ptr<SimpleBuffer>();
- boost::shared_ptr<SimpleBuffer> b = _flvQueue.front();
+ std::shared_ptr<SimpleBuffer> getFLVFrame() {
+ if (_flvQueue.empty()) return std::shared_ptr<SimpleBuffer>();
+ std::shared_ptr<SimpleBuffer> b = _flvQueue.front();
_flvQueue.pop_front();
return b;
}
@@ -436,7 +435,7 @@ struct DSOEXPORT RTMP
void handlePacket(const RTMPPacket& packet);
/// Read from the socket.
- int readSocket(boost::uint8_t* dst, int num);
+ int readSocket(std::uint8_t* dst, int num);
/// Send an RTMPPacket on the connection.
bool sendPacket(RTMPPacket& packet);
@@ -444,28 +443,28 @@ struct DSOEXPORT RTMP
/// Store the server bandwidth
//
/// Not sure why we need this.
- void setServerBandwidth(boost::uint32_t bw) {
+ void setServerBandwidth(std::uint32_t bw) {
_serverBandwidth = bw;
}
/// Get the stored server bandwidth.
- boost::uint32_t serverBandwidth() const {
+ std::uint32_t serverBandwidth() const {
return _serverBandwidth;
}
/// Store our bandwidth
- void setBandwidth(boost::uint32_t bw) {
+ void setBandwidth(std::uint32_t bw) {
_bandwidth = bw;
}
/// Get our bandwidth.
- boost::uint32_t bandwidth() const {
+ std::uint32_t bandwidth() const {
return _bandwidth;
}
int _inChunkSize;
int m_mediaChannel;
- boost::uint8_t m_nClientBW2;
+ std::uint8_t m_nClientBW2;
size_t _bytesIn;
size_t _bytesInSent;
@@ -513,19 +512,19 @@ private:
/// A set of channels for sending packets.
ChannelSet _outChannels;
- std::deque<boost::shared_ptr<SimpleBuffer> > _messageQueue;
- std::deque<boost::shared_ptr<SimpleBuffer> > _flvQueue;
+ std::deque<std::shared_ptr<SimpleBuffer> > _messageQueue;
+ std::deque<std::shared_ptr<SimpleBuffer> > _flvQueue;
/// Stored server bandwidth (reported by server).
- boost::uint32_t _serverBandwidth;
+ std::uint32_t _serverBandwidth;
/// Stored client bandwidth (ours), reported by server.
- boost::uint32_t _bandwidth;
+ std::uint32_t _bandwidth;
/// Chunk size for sending.
size_t _outChunkSize;
- boost::scoped_ptr<HandShaker> _handShaker;
+ std::unique_ptr<HandShaker> _handShaker;
bool _connected;
@@ -535,7 +534,7 @@ private:
//
/// This is not the same as a non-ready packet. It applies only to packets
/// waiting for payload data.
- boost::scoped_ptr<RTMPPacket> _incompletePacket;
+ std::unique_ptr<RTMPPacket> _incompletePacket;
};
diff --git a/libbase/Range2d.h b/libbase/Range2d.h
index c1cac0b..5cffc7e 100644
--- a/libbase/Range2d.h
+++ b/libbase/Range2d.h
@@ -28,6 +28,7 @@
#include <algorithm>
#include <cassert> // for inlines
#include <cmath> // for floor / ceil
+#include <cstdint>
namespace gnash {
@@ -51,6 +52,13 @@ enum RangeKind {
worldRange
};
+namespace detail {
+ template <typename U> struct Promote { typedef U type; };
+ template <> struct Promote<float> { typedef double type; };
+ template <> struct Promote<int> { typedef std::int64_t type; };
+ template <> struct Promote<unsigned int> { typedef std::uint64_t type; };
+}
+
/// 2d Range template class
//
/// The class stores 4 values of the type specified
@@ -183,6 +191,8 @@ public:
{
_xmin = std::numeric_limits<T>::max();
_xmax = std::numeric_limits<T>::min();
+ _ymin = 0;
+ _ymax = 0;
return *this;
}
@@ -204,7 +214,7 @@ public:
/// Set the Range2d to the WORLD value
//
- /// This is implemented using the minimun and maximun
+ /// This is implemented using the minimum and maximum
/// values of the parameter type.
///
/// See RangeType::worldRange
@@ -215,6 +225,8 @@ public:
{
_xmin = std::numeric_limits<T>::min();
_xmax = std::numeric_limits<T>::max();
+ _ymin = 0;
+ _ymax = 0;
return *this;
}
@@ -509,7 +521,9 @@ public:
{
if ( isNull() || isWorld() || amount==0 ) return *this;
- // NOTE: triggers a compiler warning when T is an unsigned type
+ // NOTE: this trigger a compiler warning when T is an
+ // unsigned type (Coverity CID 1154656 -
+ // logically dead code)
if ( amount < 0 ) return shrinkBy(-amount);
T newxmin = _xmin - amount;
@@ -560,8 +574,9 @@ public:
{
if ( isNull() || isWorld() || amount==0 ) return *this;
- // NOTE: whith will likely trigger a compiler
- // warning when T is an unsigned type
+ // NOTE: this trigger a compiler warning when T is an
+ // unsigned type (Coverity CID 1154655 -
+ // logically dead code)
if ( amount < 0 ) return growBy(-amount);
// Turn this range into the NULL range
@@ -620,16 +635,19 @@ public:
assert ( isFinite() );
return _ymax;
}
-
- /// Get area (width*height)
- ///
- T getArea() const {
- assert ( !isWorld() );
- if ( isNull() ) return 0;
- return (_xmax - _xmin) * (_ymax - _ymin);
- // this implementation is for float types, see specialization below
- // for ints...
- }
+
+
+ /// Get area (width*height)
+ //
+ typename detail::Promote<T>::type
+ getArea() const {
+ assert ( !isWorld() );
+ if ( isNull() ) return 0;
+ return static_cast<typename detail::Promote<T>::type>(_xmax - _xmin)
+ * (_ymax - _ymin);
+ // this implementation is for float types, see specialization below
+ // for ints...
+ }
/// Expand this range to include the given Range2d
//
@@ -816,23 +834,27 @@ Range2d<unsigned int>::roundMax(float max) const
//
/// Add one.
///
-template<> inline int
+template<> inline
+detail::Promote<int>::type
Range2d<int>::getArea() const
{
assert ( !isWorld() );
if ( isNull() ) return 0;
- return (_xmax - _xmin + 1) * (_ymax - _ymin + 1);
+ return static_cast<detail::Promote<int>::type>(_xmax - _xmin + 1) *
+ (_ymax - _ymin + 1);
}
/// Specialization of area value for unsigned int type.
//
/// Add one.
///
-template<> inline unsigned int
+template<> inline
+detail::Promote<unsigned int>::type
Range2d<unsigned int>::getArea() const
{
assert ( isFinite() );
- return (_xmax - _xmin + 1) * (_ymax - _ymin + 1);
+ return static_cast<detail::Promote<unsigned int>::type>(_xmax - _xmin + 1) *
+ (_ymax - _ymin + 1);
}
diff --git a/libbase/SWFCtype.cpp b/libbase/SWFCtype.cpp
index b1e7104..0783f00 100644
--- a/libbase/SWFCtype.cpp
+++ b/libbase/SWFCtype.cpp
@@ -21,16 +21,15 @@
#include "SWFCtype.h"
#include <locale>
-#include <boost/assign/list_of.hpp>
#include <map>
-#include <boost/cstdint.hpp>
+#include <cstdint>
#include "log.h"
namespace gnash {
namespace {
- typedef std::map<boost::uint16_t, boost::uint16_t> CharMap;
+ typedef std::map<std::uint16_t, std::uint16_t> CharMap;
const CharMap& lowerMap();
const CharMap& upperMap();
}
@@ -177,90 +176,91 @@ namespace {
const CharMap&
upperMap()
{
- static const CharMap upper = boost::assign::map_list_of
- (181, 924)
- (255, 376)
- (305, 73)
- (383, 83)
- (392, 391)
- (396, 395)
- (402, 401)
- (405, 502)
- (409, 408)
- (424, 423)
- (429, 428)
- (432, 431)
- (441, 440)
- (445, 444)
- (447, 503)
- (453, 452)
- (454, 452)
- (456, 455)
- (457, 455)
- (459, 458)
- (460, 458)
- (477, 398)
- (498, 497)
- (499, 497)
- (501, 500)
- (595, 385)
- (596, 390)
- (598, 393)
- (599, 394)
- (601, 399)
- (603, 400)
- (608, 403)
- (611, 404)
- (616, 407)
- (617, 406)
- (623, 412)
- (626, 413)
- (629, 415)
- (640, 422)
- (643, 425)
- (648, 430)
- (650, 433)
- (651, 434)
- (658, 439)
- (837, 921)
- (940, 902)
- (962, 931)
- (972, 908)
- (973, 910)
- (974, 911)
- (976, 914)
- (977, 920)
- (981, 934)
- (982, 928)
- (1008, 922)
- (1009, 929)
- (1010, 931)
- (1013, 917)
- (1224, 1223)
- (1228, 1227)
- (1273, 1272)
- (7835, 7776)
- (8048, 8122)
- (8049, 8123)
- (8054, 8154)
- (8055, 8155)
- (8056, 8184)
- (8057, 8185)
- (8058, 8170)
- (8059, 8171)
- (8060, 8186)
- (8061, 8187)
- (8112, 8120)
- (8113, 8121)
- (8115, 8124)
- (8126, 921)
- (8131, 8140)
- (8144, 8152)
- (8145, 8153)
- (8160, 8168)
- (8161, 8169)
- (8165, 8172)
- (8179, 8188);
+ static const CharMap upper = {
+ {181, 924},
+ {255, 376},
+ {305, 73},
+ {383, 83},
+ {392, 391},
+ {396, 395},
+ {402, 401},
+ {405, 502},
+ {409, 408},
+ {424, 423},
+ {429, 428},
+ {432, 431},
+ {441, 440},
+ {445, 444},
+ {447, 503},
+ {453, 452},
+ {454, 452},
+ {456, 455},
+ {457, 455},
+ {459, 458},
+ {460, 458},
+ {477, 398},
+ {498, 497},
+ {499, 497},
+ {501, 500},
+ {595, 385},
+ {596, 390},
+ {598, 393},
+ {599, 394},
+ {601, 399},
+ {603, 400},
+ {608, 403},
+ {611, 404},
+ {616, 407},
+ {617, 406},
+ {623, 412},
+ {626, 413},
+ {629, 415},
+ {640, 422},
+ {643, 425},
+ {648, 430},
+ {650, 433},
+ {651, 434},
+ {658, 439},
+ {837, 921},
+ {940, 902},
+ {962, 931},
+ {972, 908},
+ {973, 910},
+ {974, 911},
+ {976, 914},
+ {977, 920},
+ {981, 934},
+ {982, 928},
+ {1008, 922},
+ {1009, 929},
+ {1010, 931},
+ {1013, 917},
+ {1224, 1223},
+ {1228, 1227},
+ {1273, 1272},
+ {7835, 7776},
+ {8048, 8122},
+ {8049, 8123},
+ {8054, 8154},
+ {8055, 8155},
+ {8056, 8184},
+ {8057, 8185},
+ {8058, 8170},
+ {8059, 8171},
+ {8060, 8186},
+ {8061, 8187},
+ {8112, 8120},
+ {8113, 8121},
+ {8115, 8124},
+ {8126, 921},
+ {8131, 8140},
+ {8144, 8152},
+ {8145, 8153},
+ {8160, 8168},
+ {8161, 8169},
+ {8165, 8172},
+ {8179, 8188}
+ };
return upper;
}
@@ -268,77 +268,78 @@ upperMap()
const CharMap&
lowerMap()
{
- static const CharMap lower = boost::assign::map_list_of
- (304, 105)
- (376, 255)
- (385, 595)
- (390, 596)
- (391, 392)
- (393, 598)
- (394, 599)
- (395, 396)
- (398, 477)
- (399, 601)
- (400, 603)
- (401, 402)
- (403, 608)
- (404, 611)
- (406, 617)
- (407, 616)
- (408, 409)
- (412, 623)
- (413, 626)
- (415, 629)
- (422, 640)
- (423, 424)
- (425, 643)
- (428, 429)
- (430, 648)
- (431, 432)
- (433, 650)
- (434, 651)
- (439, 658)
- (440, 441)
- (444, 445)
- (452, 454)
- (453, 454)
- (455, 457)
- (456, 457)
- (458, 460)
- (497, 499)
- (502, 405)
- (503, 447)
- (902, 940)
- (908, 972)
- (910, 973)
- (911, 974)
- (1012, 952)
- (1223, 1224)
- (1227, 1228)
- (1272, 1273)
- (8120, 8112)
- (8121, 8113)
- (8122, 8048)
- (8123, 8049)
- (8124, 8115)
- (8140, 8131)
- (8152, 8144)
- (8153, 8145)
- (8154, 8054)
- (8155, 8055)
- (8168, 8160)
- (8169, 8161)
- (8170, 8058)
- (8171, 8059)
- (8172, 8165)
- (8184, 8056)
- (8185, 8057)
- (8186, 8060)
- (8187, 8061)
- (8188, 8179)
- (8486, 969)
- (8490, 107)
- (8491, 229);
+ static const CharMap lower = {
+ {304, 105},
+ {376, 255},
+ {385, 595},
+ {390, 596},
+ {391, 392},
+ {393, 598},
+ {394, 599},
+ {395, 396},
+ {398, 477},
+ {399, 601},
+ {400, 603},
+ {401, 402},
+ {403, 608},
+ {404, 611},
+ {406, 617},
+ {407, 616},
+ {408, 409},
+ {412, 623},
+ {413, 626},
+ {415, 629},
+ {422, 640},
+ {423, 424},
+ {425, 643},
+ {428, 429},
+ {430, 648},
+ {431, 432},
+ {433, 650},
+ {434, 651},
+ {439, 658},
+ {440, 441},
+ {444, 445},
+ {452, 454},
+ {453, 454},
+ {455, 457},
+ {456, 457},
+ {458, 460},
+ {497, 499},
+ {502, 405},
+ {503, 447},
+ {902, 940},
+ {908, 972},
+ {910, 973},
+ {911, 974},
+ {1012, 952},
+ {1223, 1224},
+ {1227, 1228},
+ {1272, 1273},
+ {8120, 8112},
+ {8121, 8113},
+ {8122, 8048},
+ {8123, 8049},
+ {8124, 8115},
+ {8140, 8131},
+ {8152, 8144},
+ {8153, 8145},
+ {8154, 8054},
+ {8155, 8055},
+ {8168, 8160},
+ {8169, 8161},
+ {8170, 8058},
+ {8171, 8059},
+ {8172, 8165},
+ {8184, 8056},
+ {8185, 8057},
+ {8186, 8060},
+ {8187, 8061},
+ {8188, 8179},
+ {8486, 969},
+ {8490, 107},
+ {8491, 229}
+ };
return lower;
}
diff --git a/libbase/SharedMem.cpp b/libbase/SharedMem.cpp
index 8ad78af..88b2ab5 100644
--- a/libbase/SharedMem.cpp
+++ b/libbase/SharedMem.cpp
@@ -51,7 +51,7 @@ namespace gnash {
SharedMem::SharedMem(size_t size)
:
- _addr(0),
+ _addr(nullptr),
_size(size),
_semid(0),
_shmid(0),
@@ -82,7 +82,7 @@ SharedMem::~SharedMem()
// Note that this isn't completely reliable.
if (!ds.shm_nattch) {
log_debug(_("No shared memory users left. Removing segment and semaphore."));
- ::shmctl(_shmid, IPC_RMID, 0);
+ ::shmctl(_shmid, IPC_RMID, nullptr);
::semctl(_semid, IPC_RMID, 0);
}
}
@@ -219,7 +219,7 @@ SharedMem::attach()
return false;
}
- _addr = static_cast<iterator>(::shmat(_shmid, 0, 0));
+ _addr = static_cast<iterator>(::shmat(_shmid, nullptr, 0));
if (!_addr) {
log_error(_("Unable to attach shared memory: %s"),
diff --git a/libbase/SharedMem.h b/libbase/SharedMem.h
index 94672d9..eba821d 100644
--- a/libbase/SharedMem.h
+++ b/libbase/SharedMem.h
@@ -23,7 +23,7 @@
# include "gnashconfig.h"
#endif
-#include <boost/cstdint.hpp>
+#include <cstdint>
#if defined (WIN32)
// Include for HANDLE
@@ -46,7 +46,7 @@ class SharedMem
{
public:
- typedef boost::uint8_t* iterator;
+ typedef std::uint8_t* iterator;
/// The beginning of the SharedMem section.
//
diff --git a/libbase/SimpleBuffer.h b/libbase/SimpleBuffer.h
index 290382d..2757a5e 100644
--- a/libbase/SimpleBuffer.h
+++ b/libbase/SimpleBuffer.h
@@ -20,9 +20,9 @@
#define GNASH_SIMPLEBUFFER_H
-#include <boost/cstdint.hpp> // for boost::uint8_t
+#include <cstdint> // for std::uint8_t
#include <algorithm> // for std::copy
-#include <boost/scoped_array.hpp>
+#include <memory>
#include <cassert>
@@ -53,41 +53,31 @@ public:
{
if ( _capacity )
{
- _data.reset(new boost::uint8_t[_capacity]);
+ _data.reset(new std::uint8_t[_capacity]);
}
}
- /// Copy constructor
- //
- /// The copy ctor will set capacity to be
- /// as small as required to hold the size of the
- /// model buffer.
- ///
- SimpleBuffer(const SimpleBuffer& b)
- :
- _size(b._size),
- _capacity(b._size)
- {
- if ( _size )
- {
- _data.reset(new boost::uint8_t[_size]);
- std::copy(b.data(), b.data()+b.size(), _data.get());
- }
- }
+ /// Construct a SimpleBuffer by taking ownership of an existing buffer.
+ //
+ /// @param size the size of the buffer.
+ /// @param buffer a pointer a a new[]-allocated buffer.
+ SimpleBuffer(size_t size, std::uint8_t* buffer)
+ : _size(size),
+ _capacity(size),
+ _data(buffer)
+ {
+ }
+
+ /// Move constructor.
+ SimpleBuffer(SimpleBuffer&&) = default;
+
+ /// Copy (construction) not allowed.
+ SimpleBuffer(const SimpleBuffer& b) = delete;
+ SimpleBuffer& operator= (const SimpleBuffer& b) = delete;
+
+ /// Move assignment is okay.
+ SimpleBuffer& operator= (SimpleBuffer&&) = default;
- /// Assignment operator
- //
- /// The assignment op will not reset capacity
- ///
- SimpleBuffer& operator= (const SimpleBuffer& b)
- {
- if ( this != &b ) // don't waste time on self-assignment
- {
- resize(0); // shouldn't deallocate memory
- append(b);
- }
- return *this;
- }
/// Return true if buffer is empty
bool empty() const { return _size==0; }
@@ -99,10 +89,10 @@ public:
size_t capacity() const { return _capacity; }
/// Get a pointer to start of data. May be NULL if size==0.
- boost::uint8_t* data() { return _data.get(); }
+ std::uint8_t* data() { return _data.get(); }
/// Get a pointer to start of data. May be NULL if size==0.
- const boost::uint8_t* data() const { return _data.get(); }
+ const std::uint8_t* data() const { return _data.get(); }
/// Resize the buffer
void resize(size_t newSize)
@@ -119,10 +109,10 @@ public:
// TODO: use smalles power of 2 bigger then newCapacity
_capacity = std::max(newCapacity, _capacity*2);
- boost::scoped_array<boost::uint8_t> tmp;
+ std::unique_ptr<std::uint8_t[]> tmp;
tmp.swap(_data);
- _data.reset(new boost::uint8_t[_capacity]);
+ _data.reset(new std::uint8_t[_capacity]);
if ( tmp.get() )
{
@@ -143,8 +133,8 @@ public:
///
void append(const void* inData, size_t size)
{
- const boost::uint8_t* newData =
- reinterpret_cast<const boost::uint8_t*>(inData);
+ const std::uint8_t* newData =
+ reinterpret_cast<const std::uint8_t*>(inData);
size_t curSize = _size;
resize(curSize+size);
std::copy(newData, newData+size, _data.get()+curSize);
@@ -158,7 +148,7 @@ public:
/// @param b
/// Byte to append.
///
- void appendByte(const boost::uint8_t b)
+ void appendByte(const std::uint8_t b)
{
resize(_size + 1);
_data[_size - 1] = b;
@@ -172,7 +162,7 @@ public:
/// Short to append. Will be appended in network order. ie
/// with high order byte first.
///
- void appendNetworkShort(const boost::uint16_t s)
+ void appendNetworkShort(const std::uint16_t s)
{
resize(_size + 2);
_data[_size - 2] = s >> 8;
@@ -187,7 +177,7 @@ public:
/// Long to append. Will be appended in network order. ie
/// with high order bytes first.
///
- void appendNetworkLong(const boost::uint32_t l)
+ void appendNetworkLong(const std::uint32_t l)
{
resize(_size + 4);
_data[_size - 4] = l >> 24;
@@ -207,7 +197,7 @@ public:
void append(const SimpleBuffer& buf)
{
size_t incomingDataSize = buf.size();
- const boost::uint8_t* incomingData = buf.data();
+ const std::uint8_t* incomingData = buf.data();
append(incomingData, incomingDataSize);
}
@@ -215,7 +205,7 @@ private:
size_t _size;
size_t _capacity;
- boost::scoped_array<boost::uint8_t> _data;
+ std::unique_ptr<std::uint8_t[]> _data;
};
diff --git a/libbase/Socket.cpp b/libbase/Socket.cpp
index b23240a..43a10ac 100644
--- a/libbase/Socket.cpp
+++ b/libbase/Socket.cpp
@@ -26,8 +26,7 @@
#include <cerrno>
#include <csignal>
-#include <boost/lexical_cast.hpp>
-#include <boost/cstdint.hpp>
+#include <cstdint>
#include "GnashSystemNetHeaders.h"
#include "GnashSystemFDHeaders.h"
@@ -35,7 +34,6 @@
#include "utility.h"
#include "GnashAlgorithm.h"
#include "GnashSystemNetHeaders.h"
-#include "GnashScopedPtr.h"
namespace gnash {
@@ -70,7 +68,7 @@ Socket::connected() const
tval.tv_sec = 0;
tval.tv_usec = 103;
- const int ret = ::select(_socket + 1, NULL, &fdset, NULL, &tval);
+ const int ret = ::select(_socket + 1, nullptr, &fdset, nullptr, &tval);
// Select timeout
if (ret == 0) continue;
@@ -125,19 +123,19 @@ Socket::close()
namespace {
-addrinfo* getAddrInfo(const std::string& hostname, boost::uint16_t port)
+addrinfo* getAddrInfo(const std::string& hostname, std::uint16_t port)
{
- addrinfo req = addrinfo(), *ans = 0;
+ addrinfo req = addrinfo(), *ans = nullptr;
req.ai_family = AF_UNSPEC; // Allow IPv4 or IPv6
req.ai_socktype = SOCK_STREAM;
- std::string portNo = boost::lexical_cast<std::string>(port);
+ std::string portNo = std::to_string(port);
int code = getaddrinfo(hostname.c_str(), portNo.c_str(), &req, &ans);
if (code != 0) {
log_error(_("getaddrinfo() failed with code: #%d - %s"),
code, gai_strerror(code));
- return 0;
+ return nullptr;
}
return ans;
@@ -146,7 +144,7 @@ addrinfo* getAddrInfo(const std::string& hostname, boost::uint16_t port)
}
bool
-Socket::connect(const std::string& hostname, boost::uint16_t port)
+Socket::connect(const std::string& hostname, std::uint16_t port)
{
// We use _socket here because connected() or _connected might not
// be true if a connection attempt is underway but not completed.
@@ -164,8 +162,10 @@ Socket::connect(const std::string& hostname, boost::uint16_t port)
}
// This is used for ::connect()
- ScopedPtr<addrinfo> ans(getAddrInfo(hostname, port), freeaddrinfo);
- if (!ans.get()) {
+ std::unique_ptr<addrinfo, decltype(freeaddrinfo)*> ans(getAddrInfo(hostname, port),
+ freeaddrinfo);
+
+ if (!ans) {
return false;
}
@@ -176,7 +176,7 @@ Socket::connect(const std::string& hostname, boost::uint16_t port)
char clienthost [INET6_ADDRSTRLEN] = {};
int code = getnameinfo(ot->ai_addr, ot->ai_addrlen,
clienthost, sizeof(clienthost),
- NULL, 0, NI_NUMERICHOST);
+ nullptr, 0, NI_NUMERICHOST);
if (code != 0) {
log_error(_("getnameinfo() failed: %1%"), gai_strerror(code));
diff --git a/libbase/Socket.h b/libbase/Socket.h
index c2d3121..b7abc0e 100644
--- a/libbase/Socket.h
+++ b/libbase/Socket.h
@@ -22,7 +22,7 @@
#define GNASH_SOCKET_H
#include "dsodefs.h"
-#include <boost/cstdint.hpp>
+#include <cstdint>
#include "IOChannel.h"
namespace gnash {
@@ -56,7 +56,7 @@ public:
/// @return false if the connection fails. In this case, the
/// Socket is still in a closed state and is ready for
/// a new connection attempt. Otherwise true.
- bool connect(const std::string& hostname, boost::uint16_t port);
+ bool connect(const std::string& hostname, std::uint16_t port);
/// Close the Socket.
//
diff --git a/libbase/StreamProvider.cpp b/libbase/StreamProvider.cpp
index 0e3efb3..8700bc8 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
@@ -34,16 +35,15 @@
#include <map>
#include <string>
#include <vector>
-#include <boost/shared_ptr.hpp>
namespace gnash {
-StreamProvider::StreamProvider(const URL& orig, const URL& base,
- std::auto_ptr<NamingPolicy> np)
+StreamProvider::StreamProvider(URL orig, URL base,
+ std::unique_ptr<NamingPolicy> np)
:
- _namingPolicy(np),
- _base(base),
- _original(orig)
+ _namingPolicy(std::move(np)),
+ _base(std::move(base)),
+ _original(std::move(orig))
{
}
@@ -53,11 +53,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") {
@@ -69,10 +72,16 @@ StreamProvider::getStream(const URL& url, bool namedCacheFile) const
// Note also that the FB gui will use stdin
// for key events.
//
- FILE *newin = fdopen(dup(0), "rb");
+ int fd = dup(0);
+ if (0 > fd) {
+ log_error(_("Could not stdin (filename -): %2%"),
+ std::strerror(errno));
+ return nullptr;
+ }
+ FILE *newin = fdopen(fd, "rb");
// Close on destruction.
- stream = makeFileChannel(newin, true);
+ stream = std::move(makeFileChannel(newin, true));
return stream;
}
else {
@@ -86,22 +95,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
@@ -119,16 +128,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()) {
@@ -159,7 +168,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..8335105 100644
--- a/libbase/StreamProvider.h
+++ b/libbase/StreamProvider.h
@@ -56,9 +56,9 @@ public:
/// connections.
/// @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));
+ StreamProvider(URL original, URL base,
+ 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/URL.cpp b/libbase/URL.cpp
index 9455215..d74edbd 100644
--- a/libbase/URL.cpp
+++ b/libbase/URL.cpp
@@ -28,7 +28,6 @@
#include <algorithm>
#include <cerrno>
#include <boost/tokenizer.hpp>
-#include <boost/scoped_array.hpp>
#include <cctype>
// This is for getcwd(2)
@@ -78,7 +77,7 @@ URL::normalize_path(std::string& path)
}
}
// add last component
- components.push_back(std::string(prev+1, path.end()));
+ components.emplace_back(prev+1, path.end());
path = "";
for (std::vector<std::string>::const_iterator i=components.begin(),
@@ -155,8 +154,8 @@ URL::URL(const std::string& absolute_url)
// When does it get silly?
const size_t maxSize = 4096;
- boost::scoped_array<char> buf;
- char* dir = 0;
+ std::unique_ptr<char[]> buf;
+ char* dir = nullptr;
size_t bufSize = 0;
// This just assumes a failure in getcwd is a name-length error,
diff --git a/libbase/URLAccessManager.cpp b/libbase/URLAccessManager.cpp
index 43b58f1..a6c31d5 100644
--- a/libbase/URLAccessManager.cpp
+++ b/libbase/URLAccessManager.cpp
@@ -160,10 +160,8 @@ local_check(const std::string& path, const URL& baseUrl)
typedef RcInitFile::PathList PathList;
const PathList& sandbox = rcfile.getLocalSandboxPath();
- for (PathList::const_iterator i=sandbox.begin(), e=sandbox.end();
- i!=e; ++i)
+ for (const std::string& dir : sandbox)
{
- const std::string& dir = *i;
if ( pathIsUnderDir(path, dir) )
{
log_security(_("Load of file %s granted (under local sandbox %s)"),
diff --git a/libbase/WallClockTimer.cpp b/libbase/WallClockTimer.cpp
index ea29220..60454eb 100644
--- a/libbase/WallClockTimer.cpp
+++ b/libbase/WallClockTimer.cpp
@@ -35,10 +35,10 @@ WallClockTimer::restart()
startTimer = clocktime::getTicks();
}
-boost::uint32_t
+std::uint32_t
WallClockTimer::elapsed() const
{
- boost::uint64_t currTime = clocktime::getTicks();
+ std::uint64_t currTime = clocktime::getTicks();
// be aware of time glitches
if ( currTime <= startTimer ) return 0;
diff --git a/libbase/WallClockTimer.h b/libbase/WallClockTimer.h
index 2ef642a..ddf92c4 100644
--- a/libbase/WallClockTimer.h
+++ b/libbase/WallClockTimer.h
@@ -23,7 +23,7 @@
#include "dsodefs.h" // for DSOEXPORT
-#include <boost/cstdint.hpp>
+#include <cstdint>
namespace gnash {
@@ -39,14 +39,14 @@ public:
/// \brief
/// Return time elapsed in milliseconds since construction
/// or last call to ::restart()
- boost::uint32_t elapsed() const;
+ std::uint32_t elapsed() const;
/// Restart the timer
void restart();
private:
- boost::uint64_t startTimer;
+ std::uint64_t startTimer;
};
diff --git a/libbase/accumulator.h b/libbase/accumulator.h
index 532bf32..694cbd2 100644
--- a/libbase/accumulator.h
+++ b/libbase/accumulator.h
@@ -22,7 +22,7 @@
#include <boost/program_options/value_semantic.hpp>
#include <boost/any.hpp>
-#include <boost/function.hpp>
+#include <functional>
#include <vector>
#include <string>
@@ -35,7 +35,7 @@ public:
accumulator_type() : _interval(1), _default(0) {}
/// Set the notifier function.
- accumulator_type* notifier(boost::function1<void, const T&> f) {
+ accumulator_type* notifier(std::function<void(const T&)> f) {
_notifier = f;
return this;
}
@@ -93,7 +93,7 @@ public:
virtual ~accumulator_type() {}
private:
- boost::function1<void, const T&> _notifier;
+ std::function<void(const T&)> _notifier;
T _interval;
T _default;
};
diff --git a/libbase/arg_parser.cpp b/libbase/arg_parser.cpp
index 10695e1..3589553 100644
--- a/libbase/arg_parser.cpp
+++ b/libbase/arg_parser.cpp
@@ -137,7 +137,7 @@ Arg_parser::Arg_parser( const int argc, const char * const argv[],
if( ch1 == '-' && ch2 ) { // we found an option
const char * const opt = argv[argind];
- const char * const arg = (argind + 1 < argc) ? argv[argind+1] : 0;
+ const char * const arg = (argind + 1 < argc) ? argv[argind+1] : nullptr;
if( ch2 == '-' ) {
if( !argv[argind][2] ) { ++argind; break; } // we found "--"
else if( !parse_long_option( opt, arg, options, argind ) ) break;
@@ -154,9 +154,9 @@ Arg_parser::Arg_parser( const int argc, const char * const argv[],
if(! _error.empty() ) {
data.clear();
} else {
- for( unsigned int i = 0; i < non_options.size(); ++i ) {
+ for(auto& non_option : non_options) {
data.push_back( Record() );
- data.back().argument.swap( non_options[i] );
+ data.back().argument.swap( non_option );
}
while( argind < argc ) {
data.push_back( Record() );
diff --git a/libbase/arg_parser.h b/libbase/arg_parser.h
index 56cec35..c0f79e1 100644
--- a/libbase/arg_parser.h
+++ b/libbase/arg_parser.h
@@ -48,6 +48,7 @@
#include "dsodefs.h"
#include <vector>
#include <sstream>
+#include <utility>
class Arg_parser
{
@@ -64,9 +65,9 @@ public:
class ArgParserException : public std::exception
{
public:
- ArgParserException(const std::string& s)
+ ArgParserException(std::string s)
:
- _msg(s)
+ _msg(std::move(s))
{}
virtual ~ArgParserException() throw() {}
diff --git a/libbase/extension.cpp b/libbase/extension.cpp
index 3c2d70f..693c402 100644
--- a/libbase/extension.cpp
+++ b/libbase/extension.cpp
@@ -126,7 +126,7 @@ Extension::initModule(const std::string& module, as_object &where)
SharedLib *sl = _plugins[module];
- if (sl == 0) {
+ if (!sl) {
sl = _plugins[module] = new SharedLib(_pluginsdir + "/" + module);
if ( ! sl->openLib() ) return false;
}
@@ -155,7 +155,7 @@ Extension::initModuleWithFunc(const std::string& module,
SharedLib *sl = _plugins[module];
- if (sl == 0) {
+ if (!sl) {
sl = _plugins[module] = new SharedLib(module);
if ( ! sl->openLib() ) return false;
}
@@ -199,7 +199,7 @@ Extension::scanDir(const std::string& dirlist)
struct dirent *entry;
- while ((entry = readdir(libdir)) != NULL) {
+ while ((entry = readdir(libdir)) != nullptr) {
// We only want shared libraries that end with the suffix, otherwise
// we get all the duplicates.
std::string name(entry->d_name);
diff --git a/libbase/log.cpp b/libbase/log.cpp
index 2920bdd..c74cd5c 100644
--- a/libbase/log.cpp
+++ b/libbase/log.cpp
@@ -29,6 +29,8 @@
#include <fstream>
#include <iomanip>
#include <string>
+#include <thread>
+#include <mutex>
#include <boost/format.hpp>
#include <unistd.h> // for getpid
@@ -39,11 +41,6 @@
using std::cout;
using std::endl;
-namespace {
- // TODO: drop this and use boost::this_thread::id instead.
- inline unsigned long int /* pthread_t */ get_thread_id();
-}
-
namespace gnash {
// Convert each byte into its hex representation
@@ -58,18 +55,17 @@ hexify(const unsigned char *p, size_t length, bool ascii)
// For hex output, fill single-digit numbers with a leading 0.
if (!ascii) ss << std::hex << std::setfill('0');
- for (std::vector<unsigned char>::const_iterator i = bytes.begin(),
- e = bytes.end(); i != e; ++i)
+ for (const unsigned char& byte : bytes)
{
if (ascii) {
- if (std::isprint(*i) || *i == 0xd) {
- ss << *i;
+ if (std::isprint(byte) || byte == 0xd) {
+ ss << byte;
}
else ss << ".";
}
else {
// Not ascii
- ss << std::setw(2) << static_cast<int>(*i) << " ";
+ ss << std::setw(2) << static_cast<int>(byte) << " ";
}
}
@@ -90,21 +86,21 @@ namespace {
LogFile& dbglogfile = LogFile::getDefaultInstance();
struct Timestamp {
- boost::uint64_t startTicks;
- std::map<int, int> threadMap;
+ std::uint64_t startTicks;
+ std::map<std::thread::id, int> threadMap;
Timestamp() : startTicks(clocktime::getTicks()) {}
};
std::ostream& operator<< (std::ostream& o, Timestamp& t)
{
- int tid = get_thread_id();
+ std::thread::id tid = std::this_thread::get_id();
int& htid = t.threadMap[tid];
if (!htid) {
htid = t.threadMap.size();
// TODO: notify actual thread id for index
}
- boost::uint64_t diff = clocktime::getTicks() - t.startTicks;
+ std::uint64_t diff = clocktime::getTicks() - t.startTicks;
// should we split in seconds/ms ?
o << getpid() << ":" << htid << "] " << diff;
@@ -243,8 +239,7 @@ processLog_action(const boost::format& fmt)
void
LogFile::log(const std::string& msg)
{
-
- boost::mutex::scoped_lock lock(_ioMutex);
+ std::lock_guard<std::mutex> lock(_ioMutex);
if ( !_verbose ) return; // nothing to do if not verbose
@@ -294,11 +289,12 @@ LogFile::LogFile()
:
_verbose(0),
_actiondump(false),
+ _network(false),
_parserdump(false),
_state(CLOSED),
_stamp(true),
_write(false),
- _listener(NULL)
+ _listener(nullptr)
{
}
@@ -354,7 +350,8 @@ LogFile::openLog(const std::string& filespec)
bool
LogFile::closeLog()
{
- boost::mutex::scoped_lock lock(_ioMutex);
+ std::lock_guard<std::mutex> lock(_ioMutex);
+
if (_state == OPEN) {
_outstream.flush();
_outstream.close();
@@ -380,48 +377,6 @@ LogFile::removeLog()
} // end of gnash namespace
-/// Used in logging.
-#ifdef HAVE_PTHREADS
-#include <pthread.h>
-#else
-# ifdef _WIN32
-extern "C" unsigned long int /* DWORD WINAPI */ GetCurrentThreadId();
-# else
-#include <sys/types.h>
-#include <unistd.h>
-# endif
-#endif
-
-namespace {
-
-inline unsigned long int /* pthread_t */ get_thread_id(void)
-{
-#ifdef HAVE_PTHREADS
-# ifdef __APPLE_CC__
- return reinterpret_cast<unsigned long int>(pthread_self());
-# else
- // This isn't a proper style C++ cast, but FreeBSD has a problem with
- // static_cast for this as pthread_self() returns a pointer. We can
- // use that too, this ID is only used for the log file to keep output
- // from seperare threads clear.
-# ifdef _WIN32
- return GetCurrentThreadId();
-#else
- return (unsigned long int)pthread_self();
-#endif
-# endif
-#else
-# ifdef _WIN32
- return GetCurrentThreadId();
-# else
- return static_cast<unsigned long int>(getpid());
-# endif
-#endif
-
-}
-
-} // anonymous namespace
-
// Local Variables:
// mode: C++
// indent-tabs-mode: nil
diff --git a/libbase/log.h b/libbase/log.h
index 962d5bf..b56b1fc 100644
--- a/libbase/log.h
+++ b/libbase/log.h
@@ -27,7 +27,7 @@
#include "dsodefs.h" // for DSOEXPORT
#include <fstream>
-#include <boost/thread/mutex.hpp>
+#include <mutex>
#include <boost/format.hpp>
// This is needed so we can print to the Android log file, which can
@@ -51,12 +51,6 @@
if (!warned) { warned = true; x; } \
}
-# include <boost/preprocessor/arithmetic/inc.hpp>
-# include <boost/preprocessor/repetition/enum_params.hpp>
-# include <boost/preprocessor/repetition/repeat.hpp>
-# include <boost/preprocessor/repetition/repeat_from_to.hpp>
-# include <boost/preprocessor/seq/for_each.hpp>
-
// Mingw32 (win32 console) doesn't use the standard GCC defines that
// Gnash used for debug messages, so make it so...
#ifndef __FUNCDNAME__
@@ -207,7 +201,7 @@ private:
LogFile ();
/// Mutex for locking I/O during logfile access.
- boost::mutex _ioMutex;
+ std::mutex _ioMutex;
/// Stream to write to stdout.
std::ofstream _outstream;
@@ -252,78 +246,98 @@ DSOEXPORT void processLog_swferror(const boost::format& fmt);
DSOEXPORT void processLog_aserror(const boost::format& fmt);
DSOEXPORT void processLog_abc(const boost::format& fmt);
-/// This heap of steaming preprocessor code magically converts
-/// printf-style statements into boost::format messages using templates.
-//
-/// Macro to feed boost::format strings to the boost::format object,
-/// producing code like this: "% t1 % t2 % t3 ..."
-#define TOKENIZE_FORMAT(z, n, t) % t##n
-
-/// Macro to add a number of arguments to the templated function
-/// corresponding to the number of template arguments. Produces code
-/// like this: "const T0& t0, const T1& t1, const T2& t2 ..."
-#define TOKENIZE_ARGS(z, n, t) BOOST_PP_COMMA_IF(n) const T##n& t##n
-
-/// This is a sequence of different log message types to be used in
-/// the code. Append the name to log_ to call the function, e.g.
-/// log_error, log_unimpl.
-#define LOG_TYPES (error) (debug) (unimpl) (aserror) (swferror) \
- (security) (action) (parse) (trace) (abc) (network)
-
-/// This actually creates the template functions using the TOKENIZE
-/// functions above. The templates look like this:
-//
-/// template<typename T0 , typename T1 , typename T2>
-/// void log_error(const T0& t0 , const T1& t1 , const T2& t2)
-/// {
-/// if (LogFile::getDefaultInstance().getVerbosity() == 0) return;
-/// boost::format f(t0);
-/// using namespace boost::io;
-/// f.exceptions(all_error_bits ^ (too_many_args_bit |
-/// too_few_args_bit |
-/// bad_format_string_bit));
-/// processLog_error(f % t1 % t2);
-/// }
-///
-/// Only not as nicely indented.
-///
-/// Use "g++ -E log.h" or "cpp log.h" to check.
-#define LOG_TEMPLATES(z, n, data)\
-template<BOOST_PP_ENUM_PARAMS(BOOST_PP_INC(n), typename T)>\
-inline void log_##data(BOOST_PP_REPEAT(BOOST_PP_INC(n), TOKENIZE_ARGS, t)) \
-{\
- if (LogFile::getDefaultInstance().getVerbosity() == 0) return; \
- boost::format f(t0); \
- using namespace boost::io; \
- f.exceptions(all_error_bits ^ (too_many_args_bit | \
- too_few_args_bit | \
- bad_format_string_bit)); \
- processLog_##data(f BOOST_PP_REPEAT_FROM_TO(1, \
- BOOST_PP_INC(n), \
- TOKENIZE_FORMAT, t));\
+template <typename FuncType>
+inline void
+log_impl(boost::format& fmt, FuncType func)
+{
+ func(fmt);
}
-/// Defines the maximum number of template arguments
-//
-/// The preprocessor generates templates with 1..ARG_NUMBER
-/// arguments.
-#define ARG_NUMBER 10
-
-/// Calls the macro LOG_TEMPLATES an ARG_NUMBER number
-/// of times, each time adding an extra typename argument to the
-/// template.
-#define GENERATE_LOG_TYPES(r, _, t) \
- BOOST_PP_REPEAT(ARG_NUMBER, LOG_TEMPLATES, t)
-
-/// Calls the template generator for each log type in the
-/// sequence LOG_TYPES.
-BOOST_PP_SEQ_FOR_EACH(GENERATE_LOG_TYPES, _, LOG_TYPES)
-
-#undef TOKENIZE_ARGS
-#undef TOKENIZE_FORMAT
-#undef GENERATE_LOG_TYPES
-#undef LOG_TEMPLATES
-#undef ARG_NUMBER
+template<typename FuncType, typename Arg, typename... Args>
+inline void
+log_impl(boost::format& fmt, FuncType processFunc, Arg arg, Args... args)
+{
+ fmt % arg;
+ log_impl(fmt, processFunc, args...);
+}
+
+template<typename StringType, typename FuncType, typename... Args>
+inline void
+log_impl(StringType msg, FuncType func, Args... args)
+{
+ boost::format fmt(msg);
+ using namespace boost::io;
+ fmt.exceptions(all_error_bits ^ (too_many_args_bit |
+ too_few_args_bit |
+ bad_format_string_bit));
+ log_impl(fmt, func, args...);
+}
+
+template<typename StringType, typename... Args>
+inline void log_network(StringType msg, Args... args)
+{
+ log_impl(msg, processLog_network, args...);
+}
+
+template<typename StringType, typename... Args>
+inline void log_error(StringType msg, Args... args)
+{
+ log_impl(msg, processLog_error, args...);
+}
+
+template<typename StringType, typename... Args>
+inline void log_unimpl(StringType msg, Args... args)
+{
+ log_impl(msg, processLog_unimpl, args...);
+}
+
+template<typename StringType, typename... Args>
+inline void log_trace(StringType msg, Args... args)
+{
+ log_impl(msg, processLog_trace, args...);
+}
+
+template<typename StringType, typename... Args>
+inline void log_debug(StringType msg, Args... args)
+{
+ log_impl(msg, processLog_debug, args...);
+}
+
+template<typename StringType, typename... Args>
+inline void log_action(StringType msg, Args... args)
+{
+ log_impl(msg, processLog_action, args...);
+}
+
+template<typename StringType, typename... Args>
+inline void log_parse(StringType msg, Args... args)
+{
+ log_impl(msg, processLog_parse, args...);
+}
+
+template<typename StringType, typename... Args>
+inline void log_security(StringType msg, Args... args)
+{
+ log_impl(msg, processLog_security, args...);
+}
+
+template<typename StringType, typename... Args>
+inline void log_swferror(StringType msg, Args... args)
+{
+ log_impl(msg, processLog_swferror, args...);
+}
+
+template<typename StringType, typename... Args>
+inline void log_aserror(StringType msg, Args... args)
+{
+ log_impl(msg, processLog_aserror, args...);
+}
+
+template<typename StringType, typename... Args>
+inline void log_abc(StringType msg, Args... args)
+{
+ log_impl(msg, processLog_abc, args...);
+}
/// Convert a sequence of bytes to hex or ascii format.
//
@@ -397,7 +411,7 @@ class DSOEXPORT HostFunctionReport
public:
// Only print function tracing messages when multiple -v
// options have been supplied.
- HostFunctionReport() : _func(0) {
+ HostFunctionReport() : _func(nullptr) {
log_debug("entering");
}
@@ -420,7 +434,7 @@ private:
#ifndef HAVE_func
#define dummystr(x) # x
#define dummyestr(x) dummystr(x)
- #define __FUNCTION__ __FILE__":"dummyestr(__LINE__)
+ #define __FUNCTION__ __FILE__ ":" dummyestr(__LINE__)
#else
#define __FUNCTION__ __func__
#endif
diff --git a/libbase/memory.cpp b/libbase/memory.cpp
index 86a6832..aeaa00f 100644
--- a/libbase/memory.cpp
+++ b/libbase/memory.cpp
@@ -46,9 +46,10 @@ const int DATALOG_SIZE = 1024;
Memory::Memory()
: _collecting(false),
- _info(0),
+ _info(nullptr),
_size(DATALOG_SIZE),
_index(0)
+ , _checkpoint()
{
// GNASH_REPORT_FUNCTION;
}
@@ -56,6 +57,7 @@ Memory::Memory()
Memory::Memory(size_t size)
: _collecting(false)
+ , _checkpoint()
{
// GNASH_REPORT_FUNCTION;
_size = size;
@@ -90,7 +92,7 @@ Memory::startStats()
{
// GNASH_REPORT_FUNCTION;
_collecting = true;
- if (_info == 0) {
+ if (_info == nullptr) {
log_debug(_("Allocating buffer for %d data samples"), _size);
_info = new struct small_mallinfo[_size];
reset();
diff --git a/libbase/noseek_fd_adapter.cpp b/libbase/noseek_fd_adapter.cpp
index 7036b1b..b6fa3c1 100644
--- a/libbase/noseek_fd_adapter.cpp
+++ b/libbase/noseek_fd_adapter.cpp
@@ -18,7 +18,6 @@
#include "noseek_fd_adapter.h"
-#include <boost/scoped_array.hpp>
#include <cerrno>
#include <cstdio>
#include <string>
@@ -63,7 +62,7 @@ public:
/// would not be accessible after destruction of this
/// instance.
///
- NoSeekFile(int fd, const char* filename=NULL);
+ NoSeekFile(int fd, const char* filename=nullptr);
~NoSeekFile();
@@ -368,7 +367,7 @@ make_stream(int fd, const char* cachefilename)
std::cerr << boost::format("making NoSeekFile stream for fd %d") % fd << std::endl;
#endif
- NoSeekFile* stream = NULL;
+ NoSeekFile* stream = nullptr;
try {
stream = new NoSeekFile(fd, cachefilename);
@@ -376,7 +375,7 @@ make_stream(int fd, const char* cachefilename)
catch (const std::exception& ex) {
std::cerr << boost::format("NoSeekFile stream: %s") % ex.what() << std::endl;
delete stream;
- return NULL;
+ return nullptr;
}
return stream;
diff --git a/libbase/noseek_fd_adapter.h b/libbase/noseek_fd_adapter.h
index 78199df..064a35a 100644
--- a/libbase/noseek_fd_adapter.h
+++ b/libbase/noseek_fd_adapter.h
@@ -42,7 +42,7 @@ namespace noseek_fd_adapter {
/// Specify a cachefilename if you want to be able to access
/// the full cache after deletion of the returned IOChannel.
///
-DSOEXPORT IOChannel* make_stream(int fd, const char* cachefilename = 0);
+DSOEXPORT IOChannel* make_stream(int fd, const char* cachefilename = nullptr);
} // namespace gnash::noseek_fd_adapter
} // namespace gnash
diff --git a/libbase/rc.cpp b/libbase/rc.cpp
index 5192792..38ba3ed 100644
--- a/libbase/rc.cpp
+++ b/libbase/rc.cpp
@@ -25,7 +25,7 @@
#include "rc.h"
-#include <boost/cstdint.hpp>
+#include <cstdint>
#include <limits>
#include <cstdlib> // getenv
#include <string>
@@ -129,7 +129,7 @@ RcInitFile::RcInitFile()
#ifdef __OS2__x
_urlOpenerFormat = PrfQueryProfileString(HINI_USER, (PSZ)
"WPURLDEFAULTSETTINGS",
- (PSZ) "DefaultBrowserExe", NULL,
+ (PSZ) "DefaultBrowserExe", nullptr,
(PVOID) browserExe, (LONG)sizeof(browserExe));
_urlOpenerFormat += " -remote 'openurl(%u)'";
#endif
@@ -160,7 +160,7 @@ RcInitFile::loadFiles()
#endif
// Check the users home directory
- const char *home = 0;
+ const char *home = nullptr;
#if defined (__amigaos4__)
//on AmigaOS we have a GNASH: assign that point to program dir
home = "/gnash";
@@ -303,7 +303,7 @@ RcInitFile::expandPath (std::string& path)
else {
struct passwd *password = getpwuid(getuid());
const char *pwdhome = password->pw_dir;
- if (home) {
+ if (pwdhome) {
path.replace(0, 1, pwdhome);
}
//If all that fails, leave path alone
@@ -323,7 +323,7 @@ RcInitFile::expandPath (std::string& path)
else user = path.substr(1);
// find user using pwd
- const char *userhome = NULL;
+ const char *userhome = nullptr;
struct passwd *password = getpwnam(user.c_str());
if (password) {
userhome = password->pw_dir;
@@ -691,7 +691,7 @@ RcInitFile::updateFile()
}
} else {
// Check the users home directory
- const char *home = NULL;
+ const char *home = nullptr;
#if defined(__amigaos4__)
//on AmigaOS we have a GNASH: assign that point to program dir
home = "/gnash";
diff --git a/libbase/rc.h b/libbase/rc.h
index 89769fd..34b3ce1 100644
--- a/libbase/rc.h
+++ b/libbase/rc.h
@@ -25,7 +25,7 @@
#include <vector>
#include <iosfwd>
#include <sstream>
-#include <boost/cstdint.hpp>
+#include <cstdint>
#include <boost/tokenizer.hpp>
#include "StringPredicates.h"
@@ -34,7 +34,7 @@
#include <sys/shm.h>
#else
#ifdef _WIN32
- typedef boost::uint32_t key_t;
+ typedef std::uint32_t key_t;
#endif // _WIN32
#endif // _WIN32 and __HAIKU__
@@ -442,10 +442,10 @@ protected:
typedef boost::tokenizer< Sep > Tok;
/// The timer delay
- boost::uint32_t _delay;
+ std::uint32_t _delay;
/// Max number of movie clips to store in the library
- boost::uint32_t _movieLibraryLimit;
+ std::uint32_t _movieLibraryLimit;
/// Enable debugging of this class
bool _debug;
@@ -454,7 +454,7 @@ protected:
bool _debugger;
/// Level of debugging output
- boost::uint32_t _verbosity;
+ std::uint32_t _verbosity;
/// Command format to use to open urls
//
@@ -562,7 +562,7 @@ protected:
/// Shared memory segment key (can be set for
/// compatibility with other players.)
- boost::uint32_t _lcshmkey;
+ std::uint32_t _lcshmkey;
/// Whether the player should respond to fscommands
/// (showmenu, quit etc)
diff --git a/libbase/ref_counted.h b/libbase/ref_counted.h
index 85e6f3d..9e153d5 100644
--- a/libbase/ref_counted.h
+++ b/libbase/ref_counted.h
@@ -22,7 +22,7 @@
#include "dsodefs.h" // for DSOEXPORT
#include <cassert>
-#include <boost/detail/atomic_count.hpp>
+#include <atomic>
namespace gnash {
@@ -41,9 +41,7 @@ private:
// carefully designed for this to be effective
// (decrement & check in a single statement)
//
- typedef boost::detail::atomic_count Counter;
-
- mutable Counter m_ref_count;
+ mutable std::atomic<int> m_ref_count;
protected:
diff --git a/libbase/sharedlib.cpp b/libbase/sharedlib.cpp
index 918bf69..028eb55 100644
--- a/libbase/sharedlib.cpp
+++ b/libbase/sharedlib.cpp
@@ -43,7 +43,7 @@
#endif
#include <ltdl.h>
-#include <boost/thread/mutex.hpp>
+#include <mutex>
#if defined(WIN32) || defined(_WIN32)
int lt_dlsetsearchpath (const char *search_path);
@@ -58,6 +58,9 @@ lt_dlhandle lt_dlopenext (const char *filename);
namespace gnash {
SharedLib::SharedLib(const std::string& filespec)
+#ifdef HAVE_LTDL
+ : _dlhandle(nullptr)
+#endif
{
_filespec = filespec;
scoped_lock lock(_libMutex);
@@ -100,7 +103,7 @@ SharedLib::openLib (const std::string& filespec)
#ifdef HAVE_LTDL
_dlhandle = lt_dlopenext (filespec.c_str());
- if (_dlhandle == NULL) {
+ if (_dlhandle == nullptr) {
log_error("lt_dlopenext(\"%s\") failed: %s", filespec.c_str(), lt_dlerror());
return false;
}
@@ -120,16 +123,16 @@ SharedLib::initentry *
SharedLib::getInitEntry (const std::string& symbol)
{
// GNASH_REPORT_FUNCTION;
- lt_ptr run = NULL;
+ lt_ptr run = nullptr;
scoped_lock lock(_libMutex);
#ifdef HAVE_LTDL
run = lt_dlsym (_dlhandle, symbol.c_str());
- if (run == NULL) {
+ if (run == nullptr) {
log_error(_("Couldn't find symbol: %s"), symbol);
- return NULL;
+ return nullptr;
} else {
log_debug(_("Found symbol %s @ %p"), symbol, (void *)run);
}
@@ -145,7 +148,7 @@ SharedLib::getDllSymbol(const std::string& symbol)
{
GNASH_REPORT_FUNCTION;
- lt_ptr run = NULL;
+ lt_ptr run = nullptr;
scoped_lock lock(_libMutex);
@@ -157,9 +160,9 @@ SharedLib::getDllSymbol(const std::string& symbol)
Realistically, we should never get a valid pointer with a value of 0
Markus: 'Id est NULL.'
*/
- if (run == NULL) {
+ if (run == nullptr) {
log_error("Couldn't find symbol: %s", symbol);
- return NULL;
+ return nullptr;
} else {
log_debug("Found symbol %s @ %p", symbol, (void *)run);
}
diff --git a/libbase/sharedlib.h b/libbase/sharedlib.h
index 8c82371..7802d70 100644
--- a/libbase/sharedlib.h
+++ b/libbase/sharedlib.h
@@ -23,7 +23,7 @@
#include "gnashconfig.h"
#endif
-#include <boost/thread/mutex.hpp>
+#include <mutex>
#include <string>
#include "dsodefs.h" // DSOEXPORT
@@ -48,7 +48,7 @@ namespace gnash {
/// TODO: document this class
class SharedLib
{
- typedef boost::mutex::scoped_lock scoped_lock;
+ typedef std::lock_guard<std::mutex> scoped_lock;
public:
// Typedefs for function pointers to keep the code readable
@@ -68,9 +68,11 @@ private:
bool closeLib();
+#ifdef HAVE_LTDL
lt_dlhandle _dlhandle;
+#endif
std::string _filespec;
- boost::mutex _libMutex;
+ std::mutex _libMutex;
};
} // end of gnash namespace
diff --git a/libbase/snappingrange.h b/libbase/snappingrange.h
index 111ceaa..603a3e7 100644
--- a/libbase/snappingrange.h
+++ b/libbase/snappingrange.h
@@ -26,7 +26,7 @@
#include <iterator>
#include <algorithm>
#include <ostream>
-#include <boost/cstdint.hpp>
+#include <cstdint>
namespace gnash {
@@ -451,8 +451,8 @@ public:
// update ourselves with the union of the "list"
setNull();
- for (size_type lno=0, lcount=list.size(); lno<lcount; lno++) {
- add(list[lno]);
+ for (auto& range : list) {
+ add(range);
}
}
@@ -652,7 +652,7 @@ inline bool snaptest(const geometry::Range2d<T>& range1,
} // namespace geometry
/// Standard snapping 2d ranges type for invalidated bounds calculation
-typedef geometry::SnappingRanges2d<boost::int32_t> InvalidatedRanges;
+typedef geometry::SnappingRanges2d<std::int32_t> InvalidatedRanges;
} //namespace gnash
diff --git a/libbase/string_table.cpp b/libbase/string_table.cpp
index 5c64318..7477232 100644
--- a/libbase/string_table.cpp
+++ b/libbase/string_table.cpp
@@ -48,7 +48,7 @@ string_table::find(const std::string& t_f, bool insert_unfound)
if (insert_unfound) {
// First we lock.
- boost::mutex::scoped_lock aLock(_lock);
+ std::lock_guard<std::mutex> lock(_lock);
// Then we see if someone else managed to sneak past us.
i = _table.get<StringValue>().find(t_f);
// If they did, use that value.
@@ -65,14 +65,14 @@ string_table::find(const std::string& t_f, bool insert_unfound)
string_table::key
string_table::insert(const std::string& to_insert)
{
- boost::mutex::scoped_lock aLock(_lock);
+ std::lock_guard<std::mutex> lock(_lock);
return already_locked_insert(to_insert);
}
void
string_table::insert_group(const svt* l, std::size_t size)
{
- boost::mutex::scoped_lock aLock(_lock);
+ std::lock_guard<std::mutex> lock(_lock);
for (std::size_t i = 0; i < size; ++i) {
// Copy to avoid changing the original table.
const svt s = l[i];
diff --git a/libbase/string_table.h b/libbase/string_table.h
index cf77fd0..0ebdf5c 100644
--- a/libbase/string_table.h
+++ b/libbase/string_table.h
@@ -28,9 +28,9 @@
#include <boost/multi_index/hashed_index.hpp>
#include <boost/multi_index/identity.hpp>
#include <boost/multi_index/member.hpp>
-#include <boost/thread.hpp>
#include <string>
#include <map>
+#include <mutex>
#include "dsodefs.h"
namespace gnash {
@@ -45,9 +45,9 @@ public:
/// A little helper for indexing.
struct svt
{
- svt(const std::string& val, std::size_t i)
+ svt(std::string val, std::size_t i)
:
- value(val),
+ value(std::move(val)),
id(i)
{}
@@ -149,7 +149,7 @@ private:
table _table;
static const std::string _empty;
- boost::mutex _lock;
+ std::mutex _lock;
std::size_t _highestKey;
std::map<key, key> _caseTable;
diff --git a/libbase/tree.hh b/libbase/tree.hh
index f0bdc9e..f410d84 100644
--- a/libbase/tree.hh
+++ b/libbase/tree.hh
@@ -43,7 +43,7 @@ template<class T>
class tree_node_ { // size: 5*4=20 bytes (on 32 bit arch), can be reduced by 8.
public:
tree_node_();
- tree_node_(const T&);
+ tree_node_(T );
tree_node_<T> *parent;
tree_node_<T> *first_child, *last_child;
@@ -53,13 +53,13 @@ class tree_node_ { // size: 5*4=20 bytes (on 32 bit arch), can be reduced by 8.
template<class T>
tree_node_<T>::tree_node_()
- : parent(0), first_child(0), last_child(0), prev_sibling(0), next_sibling(0)
+ : parent(nullptr), first_child(nullptr), last_child(nullptr), prev_sibling(nullptr), next_sibling(nullptr)
{
}
template<class T>
-tree_node_<T>::tree_node_(const T& val)
- : parent(0), first_child(0), last_child(0), prev_sibling(0), next_sibling(0), data(val)
+tree_node_<T>::tree_node_(T val)
+ : parent(nullptr), first_child(nullptr), last_child(nullptr), prev_sibling(nullptr), next_sibling(nullptr), data(std::move(val))
{
}
@@ -420,7 +420,7 @@ class tree {
template<class StrictWeakOrdering>
class compare_nodes {
public:
- compare_nodes(StrictWeakOrdering comp) : comp_(comp) {};
+ compare_nodes(StrictWeakOrdering comp) : comp_(std::move(comp)) {};
bool operator()(const tree_node *a, const tree_node *b)
{
@@ -507,22 +507,22 @@ tree<T, tree_node_allocator>::~tree()
template <class T, class tree_node_allocator>
void tree<T, tree_node_allocator>::head_initialise_()
{
- head = alloc_.allocate(1,0); // MSVC does not have default second argument
- feet = alloc_.allocate(1,0);
+ head = alloc_.allocate(1,nullptr); // MSVC does not have default second argument
+ feet = alloc_.allocate(1,nullptr);
alloc_.construct(head, tree_node_<T>());
alloc_.construct(feet, tree_node_<T>());
- head->parent=0;
- head->first_child=0;
- head->last_child=0;
- head->prev_sibling=0; //head;
+ head->parent=nullptr;
+ head->first_child=nullptr;
+ head->last_child=nullptr;
+ head->prev_sibling=nullptr; //head;
head->next_sibling=feet; //head;
- feet->parent=0;
- feet->first_child=0;
- feet->last_child=0;
+ feet->parent=nullptr;
+ feet->first_child=nullptr;
+ feet->last_child=nullptr;
feet->prev_sibling=head;
- feet->next_sibling=0;
+ feet->next_sibling=nullptr;
}
template <class T, class tree_node_allocator>
@@ -573,12 +573,12 @@ template<class T, class tree_node_allocator>
void tree<T, tree_node_allocator>::erase_children(const iterator_base& it)
{
// std::cout << "erase_children " << it.node << std::endl;
- if(it.node==0) return;
+ if(it.node==nullptr) return;
tree_node *cur=it.node->first_child;
- tree_node *prev=0;
+ tree_node *prev=nullptr;
- while(cur!=0) {
+ while(cur!=nullptr) {
prev=cur;
cur=cur->next_sibling;
erase_children(pre_order_iterator(prev));
@@ -586,8 +586,8 @@ void tree<T, tree_node_allocator>::erase_children(const iterator_base& it)
alloc_.destroy(prev);
alloc_.deallocate(prev,1);
}
- it.node->first_child=0;
- it.node->last_child=0;
+ it.node->first_child=nullptr;
+ it.node->last_child=nullptr;
// std::cout << "exit" << std::endl;
}
@@ -601,13 +601,13 @@ iter tree<T, tree_node_allocator>::erase(iter it)
ret.skip_children();
++ret;
erase_children(it);
- if(cur->prev_sibling==0) {
+ if(cur->prev_sibling==nullptr) {
cur->parent->first_child=cur->next_sibling;
}
else {
cur->prev_sibling->next_sibling=cur->next_sibling;
}
- if(cur->next_sibling==0) {
+ if(cur->next_sibling==nullptr) {
cur->parent->last_child=cur->prev_sibling;
}
else {
@@ -713,8 +713,8 @@ typename tree<T, tree_node_allocator>::fixed_depth_iterator tree<T, tree_node_al
template <class T, class tree_node_allocator>
typename tree<T, tree_node_allocator>::sibling_iterator tree<T, tree_node_allocator>::begin(const iterator_base& pos) const
{
- assert(pos.node!=0);
- if(pos.node->first_child==0) {
+ assert(pos.node!=nullptr);
+ if(pos.node->first_child==nullptr) {
return end(pos);
}
return pos.node->first_child;
@@ -723,7 +723,7 @@ typename tree<T, tree_node_allocator>::sibling_iterator tree<T, tree_node_alloca
template <class T, class tree_node_allocator>
typename tree<T, tree_node_allocator>::sibling_iterator tree<T, tree_node_allocator>::end(const iterator_base& pos) const
{
- sibling_iterator ret(0);
+ sibling_iterator ret(nullptr);
ret.parent_=pos.node;
return ret;
}
@@ -764,7 +764,7 @@ template <class T, class tree_node_allocator>
template <typename iter>
iter tree<T, tree_node_allocator>::parent(iter position)
{
- assert(position.node!=0);
+ assert(position.node!=nullptr);
return iter(position.node->parent);
}
@@ -899,14 +899,14 @@ iter tree<T, tree_node_allocator>::append_child(iter position, const T& x)
assert(position.node!=feet);
assert(position.node);
- tree_node* tmp = alloc_.allocate(1,0);
+ tree_node* tmp = alloc_.allocate(1,nullptr);
alloc_.construct(tmp, x);
// kp::constructor(&tmp->data, x);
- tmp->first_child=0;
- tmp->last_child=0;
+ tmp->first_child=nullptr;
+ tmp->last_child=nullptr;
tmp->parent=position.node;
- if(position.node->last_child!=0) {
+ if(position.node->last_child!=nullptr) {
position.node->last_child->next_sibling=tmp;
}
else {
@@ -914,7 +914,7 @@ iter tree<T, tree_node_allocator>::append_child(iter position, const T& x)
}
tmp->prev_sibling=position.node->last_child;
position.node->last_child=tmp;
- tmp->next_sibling=0;
+ tmp->next_sibling=nullptr;
return tmp;
}
@@ -1014,22 +1014,22 @@ template <class T, class tree_node_allocator>
template <class iter>
iter tree<T, tree_node_allocator>::insert(iter position, const T& x)
{
- if(position.node==0) {
+ if(position.node==nullptr) {
position.node=feet; // Backward compatibility: when calling insert on a null node,
// insert before the feet.
}
- tree_node* tmp = alloc_.allocate(1,0);
+ tree_node* tmp = alloc_.allocate(1,nullptr);
alloc_.construct(tmp, x);
// kp::constructor(&tmp->data, x);
- tmp->first_child=0;
- tmp->last_child=0;
+ tmp->first_child=nullptr;
+ tmp->last_child=nullptr;
tmp->parent=position.node->parent;
tmp->next_sibling=position.node;
tmp->prev_sibling=position.node->prev_sibling;
position.node->prev_sibling=tmp;
- if(tmp->prev_sibling==0) {
+ if(tmp->prev_sibling==nullptr) {
if(tmp->parent) // when inserting nodes at the head, there is no parent
tmp->parent->first_child=tmp;
}
@@ -1148,21 +1148,21 @@ iter tree<T, tree_node_allocator>::replace(iter position, const iterator_base& f
// std::cout << "warning!" << position.node << std::endl;
erase_children(position);
// std::cout << "no warning!" << std::endl;
- tree_node* tmp = alloc_.allocate(1,0);
+ tree_node* tmp = alloc_.allocate(1,nullptr);
alloc_.construct(tmp, (*from));
// kp::constructor(&tmp->data, (*from));
- tmp->first_child=0;
- tmp->last_child=0;
- if(current_to->prev_sibling==0) {
- if(current_to->parent!=0)
+ tmp->first_child=nullptr;
+ tmp->last_child=nullptr;
+ if(current_to->prev_sibling==nullptr) {
+ if(current_to->parent!=nullptr)
current_to->parent->first_child=tmp;
}
else {
current_to->prev_sibling->next_sibling=tmp;
}
tmp->prev_sibling=current_to->prev_sibling;
- if(current_to->next_sibling==0) {
- if(current_to->parent!=0)
+ if(current_to->next_sibling==nullptr) {
+ if(current_to->parent!=nullptr)
current_to->parent->last_child=tmp;
}
else {
@@ -1181,16 +1181,16 @@ iter tree<T, tree_node_allocator>::replace(iter position, const iterator_base& f
pre_order_iterator toit=tmp;
// copy all children
do {
- assert(current_from!=0);
- if(current_from->first_child != 0) {
+ assert(current_from!=nullptr);
+ if(current_from->first_child != nullptr) {
current_from=current_from->first_child;
toit=append_child(toit, current_from->data);
}
else {
- while(current_from->next_sibling==0 && current_from!=start_from) {
+ while(current_from->next_sibling==nullptr && current_from!=start_from) {
current_from=current_from->parent;
toit=parent(toit);
- assert(current_from!=0);
+ assert(current_from!=nullptr);
}
current_from=current_from->next_sibling;
if(current_from!=last) {
@@ -1530,8 +1530,8 @@ void tree<T, tree_node_allocator>::sort(sibling_iterator from, sibling_iterator
tree_node *prev=from.node->prev_sibling;
tree_node *next=it2.node->next_sibling;
typename std::multiset<tree_node *, compare_nodes<StrictWeakOrdering> >::iterator nit=nodes.begin(), eit=nodes.end();
- if(prev==0) {
- if((*nit)->parent!=0) // to catch "sorting the head" situations, when there is no parent
+ if(prev==nullptr) {
+ if((*nit)->parent!=nullptr) // to catch "sorting the head" situations, when there is no parent
(*nit)->parent->first_child=(*nit);
}
else prev->next_sibling=(*nit);
@@ -1551,8 +1551,8 @@ void tree<T, tree_node_allocator>::sort(sibling_iterator from, sibling_iterator
// eit points to the last node in the sorted range.
(*eit)->next_sibling=next;
(*eit)->prev_sibling=prev; // missed in the loop above
- if(next==0) {
- if((*eit)->parent!=0) // to catch "sorting the head" situations, when there is no parent
+ if(next==nullptr) {
+ if((*eit)->parent!=nullptr) // to catch "sorting the head" situations, when there is no parent
(*eit)->parent->last_child=(*eit);
}
else next->prev_sibling=(*eit);
@@ -2038,7 +2038,7 @@ bool tree<T, tree_node_allocator>::leaf_iterator::operator==(const leaf_iterator
template <class T, class tree_node_allocator>
typename tree<T, tree_node_allocator>::sibling_iterator tree<T, tree_node_allocator>::iterator_base::begin() const
{
- if(node->first_child==0)
+ if(node->first_child==nullptr)
return end();
sibling_iterator ret(node->first_child);
@@ -2049,7 +2049,7 @@ typename tree<T, tree_node_allocator>::sibling_iterator tree<T, tree_node_alloca
template <class T, class tree_node_allocator>
typename tree<T, tree_node_allocator>::sibling_iterator tree<T, tree_node_allocator>::iterator_base::end() const
{
- sibling_iterator ret(0);
+ sibling_iterator ret(nullptr);
ret.parent_=node;
return ret;
}
@@ -2086,7 +2086,7 @@ unsigned int tree<T, tree_node_allocator>::iterator_base::number_of_children() c
template <class T, class tree_node_allocator>
tree<T, tree_node_allocator>::pre_order_iterator::pre_order_iterator()
- : iterator_base(0)
+ : iterator_base(nullptr)
{
}
@@ -2119,15 +2119,15 @@ tree<T, tree_node_allocator>::pre_order_iterator::pre_order_iterator(const sibli
template <class T, class tree_node_allocator>
typename tree<T, tree_node_allocator>::pre_order_iterator& tree<T, tree_node_allocator>::pre_order_iterator::operator++()
{
- assert(this->node!=0);
- if(!this->skip_current_children_ && this->node->first_child != 0) {
+ assert(this->node!=nullptr);
+ if(!this->skip_current_children_ && this->node->first_child != nullptr) {
this->node=this->node->first_child;
}
else {
this->skip_current_children_=false;
- while(this->node->next_sibling==0) {
+ while(this->node->next_sibling==nullptr) {
this->node=this->node->parent;
- if(this->node==0)
+ if(this->node==nullptr)
return *this;
}
this->node=this->node->next_sibling;
@@ -2599,9 +2599,9 @@ tree<T, tree_node_allocator>::sibling_iterator::sibling_iterator(const sibling_i
template <class T, class tree_node_allocator>
void tree<T, tree_node_allocator>::sibling_iterator::set_parent_()
{
- parent_=0;
- if(this->node==0) return;
- if(this->node->parent!=0)
+ parent_=nullptr;
+ if(this->node==nullptr) return;
+ if(this->node->parent!=nullptr)
parent_=this->node->parent;
}
diff --git a/libbase/tu_file.cpp b/libbase/tu_file.cpp
index f69e930..0091cb7 100644
--- a/libbase/tu_file.cpp
+++ b/libbase/tu_file.cpp
@@ -34,13 +34,13 @@ public:
/// TODO: define what happens when the stream
/// is in error condition.
///
- boost::uint32_t read_le32()
+ std::uint32_t read_le32()
{
- // read_byte() is boost::uint8_t, so no masks with 0xff are required.
- boost::uint32_t result = static_cast<boost::uint32_t>(read_byte());
- result |= static_cast<boost::uint32_t>(read_byte()) << 8;
- result |= static_cast<boost::uint32_t>(read_byte()) << 16;
- result |= static_cast<boost::uint32_t>(read_byte()) << 24;
+ // read_byte() is std::uint8_t, so no masks with 0xff are required.
+ std::uint32_t result = static_cast<std::uint32_t>(read_byte());
+ result |= static_cast<std::uint32_t>(read_byte()) << 8;
+ result |= static_cast<std::uint32_t>(read_byte()) << 16;
+ result |= static_cast<std::uint32_t>(read_byte()) << 24;
return(result);
}
@@ -49,10 +49,10 @@ public:
/// TODO: define what happens when the stream
/// is in error condition, see bad().
///
- boost::uint16_t read_le16()
+ std::uint16_t read_le16()
{
- boost::uint16_t result = static_cast<boost::uint16_t>(read_byte());
- result |= static_cast<boost::uint16_t>(read_byte()) << 8;
+ std::uint16_t result = static_cast<std::uint16_t>(read_byte());
+ result |= static_cast<std::uint16_t>(read_byte()) << 8;
return(result);
}
@@ -61,8 +61,8 @@ public:
/// TODO: define what happens when the stream
/// is in error condition, see bad().
///
- boost::uint8_t read_byte() {
- boost::uint8_t u;
+ std::uint8_t read_byte() {
+ std::uint8_t u;
read(&u, 1);
return u;
}
@@ -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 == nullptr ) { 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/utf8.cpp b/libbase/utf8.cpp
index 31f3c8e..7e4cf7f 100644
--- a/libbase/utf8.cpp
+++ b/libbase/utf8.cpp
@@ -23,7 +23,7 @@
#include "utf8.h"
#include <limits>
-#include <boost/cstdint.hpp>
+#include <cstdint>
#include <string>
#include <vector>
#include <cstdlib>
@@ -32,7 +32,7 @@ namespace gnash {
namespace utf8 {
namespace {
- const boost::uint32_t invalid = std::numeric_limits<boost::uint32_t>::max();
+ const std::uint32_t invalid = std::numeric_limits<std::uint32_t>::max();
}
std::wstring
@@ -44,7 +44,7 @@ decodeCanonicalString(const std::string& str, int version)
std::string::const_iterator it = str.begin(), e = str.end();
if (version > 5) {
- while (boost::uint32_t code = decodeNextUnicodeCharacter(it, e)) {
+ while (std::uint32_t code = decodeNextUnicodeCharacter(it, e)) {
if (code == invalid) {
continue;
}
@@ -81,7 +81,7 @@ encodeCanonicalString(const std::wstring& wstr, int version)
}
std::string
-encodeLatin1Character(boost::uint32_t ucsCharacter)
+encodeLatin1Character(std::uint32_t ucsCharacter)
{
std::string text;
text.push_back(static_cast<unsigned char>(ucsCharacter));
@@ -89,11 +89,11 @@ encodeLatin1Character(boost::uint32_t ucsCharacter)
}
-boost::uint32_t
+std::uint32_t
decodeNextUnicodeCharacter(std::string::const_iterator& it,
const std::string::const_iterator& e)
{
- boost::uint32_t uc;
+ std::uint32_t uc;
// Security considerations:
//
@@ -123,7 +123,7 @@ decodeNextUnicodeCharacter(std::string::const_iterator& it,
if (it == e || *it == 0) return 0; // End of buffer. Do not advance.
// Conventional 7-bit ASCII; return and increment iterator:
- if ((*it & 0x80) == 0) return static_cast<boost::uint32_t>(*it++);
+ if ((*it & 0x80) == 0) return static_cast<std::uint32_t>(*it++);
// Multi-byte sequences
if ((*it & 0xE0) == 0xC0) {
@@ -162,7 +162,7 @@ decodeNextUnicodeCharacter(std::string::const_iterator& it,
// TODO: buffer as std::string; index (iterator);
std::string
-encodeUnicodeCharacter(boost::uint32_t ucs_character)
+encodeUnicodeCharacter(std::uint32_t ucs_character)
{
std::string text;
@@ -204,14 +204,14 @@ encodeUnicodeCharacter(boost::uint32_t ucs_character)
#define ENC_UTF16BE 2
#define ENC_UTF16LE 3
-char*
-stripBOM(char* in, size_t& size, TextEncoding& encoding)
+const char*
+stripBOM(const char* in, size_t& size, TextEncoding& encoding)
{
encoding = encUNSPECIFIED;
if ( size > 2 )
{
// need *ptr to be unsigned or cast all 0xNN
- unsigned char* ptr = reinterpret_cast<unsigned char*>(in);
+ const unsigned char* ptr = reinterpret_cast<const unsigned char*>(in);
if (*ptr == 0xFF && *(ptr+1) == 0xFE) {
// Text is UTF-16 LE
@@ -295,7 +295,7 @@ guessEncoding(const std::string &str, int &length, std::vector<int>& offsets)
offsets.push_back(it - str.begin()); // current position
// Advances the iterator to point to the next
- boost::uint32_t c = utf8::decodeNextUnicodeCharacter(it, e);
+ std::uint32_t c = utf8::decodeNextUnicodeCharacter(it, e);
if (c == utf8::invalid) {
is_sought = false;
@@ -358,7 +358,7 @@ guessEncoding(const std::string &str, int &length, std::vector<int>& offsets)
#ifdef ANDROID
length = str.size();
#else
- length = std::mbstowcs(NULL, str.c_str(), 0);
+ length = std::mbstowcs(nullptr, str.c_str(), 0);
#endif
if (length == -1)
{
diff --git a/libbase/utf8.h b/libbase/utf8.h
index 2be2711..34e54eb 100644
--- a/libbase/utf8.h
+++ b/libbase/utf8.h
@@ -22,7 +22,7 @@
#define UTF8_H
#include <string>
-#include <boost/cstdint.hpp> // for C99 int types
+#include <cstdint> // for C99 int types
#include <vector>
#include "dsodefs.h" // For DSOEXPORT
@@ -98,18 +98,18 @@ namespace utf8 {
/// as output. Advances string iterator past the character
/// returned, unless the returned character is '\0', in which
/// case the iterator does not advance.
- DSOEXPORT boost::uint32_t decodeNextUnicodeCharacter(std::string::const_iterator& it,
+ DSOEXPORT std::uint32_t decodeNextUnicodeCharacter(std::string::const_iterator& it,
const std::string::const_iterator& e);
/// \brief Encodes the given wide character into a canonical
/// string, theoretically up to 6 chars in length.
- DSOEXPORT std::string encodeUnicodeCharacter(boost::uint32_t ucs_character);
+ DSOEXPORT std::string encodeUnicodeCharacter(std::uint32_t ucs_character);
/// Encodes the given wide character into an at least 8-bit character.
//
/// Allows storage of Latin1 (ISO-8859-1) characters. This
/// is the format of SWF5 and below.
- DSOEXPORT std::string encodeLatin1Character(boost::uint32_t ucsCharacter);
+ DSOEXPORT std::string encodeLatin1Character(std::uint32_t ucsCharacter);
enum TextEncoding {
encUNSPECIFIED,
@@ -148,7 +148,8 @@ namespace utf8 {
/// @returns
/// A pointer either equal to 'in' or some bytes inside it.
///
- DSOEXPORT char* stripBOM(char* in, size_t& size, TextEncoding& encoding);
+ DSOEXPORT const char* stripBOM(const char* in, size_t& size,
+ TextEncoding& encoding);
/// Return name of a text encoding
DSOEXPORT const char* textEncodingName(TextEncoding enc);
diff --git a/libbase/utility.h b/libbase/utility.h
index 8b9f48c..10f35aa 100644
--- a/libbase/utility.h
+++ b/libbase/utility.h
@@ -96,7 +96,7 @@ std::string typeName(const T& inst)
#if defined(__GNUC__) && __GNUC__ > 2
int status;
char* typeNameUnmangled =
- abi::__cxa_demangle (typeName.c_str(), NULL, NULL,
+ abi::__cxa_demangle (typeName.c_str(), nullptr, nullptr,
&status);
if (status == 0)
{
diff --git a/libbase/zlib_adapter.cpp b/libbase/zlib_adapter.cpp
index 1ef03d5..c5970ad 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;
@@ -144,10 +144,10 @@ InflaterIOChannel::reset()
return;
}
- m_zstream.next_in = 0;
+ m_zstream.next_in = nullptr;
m_zstream.avail_in = 0;
- m_zstream.next_out = 0;
+ m_zstream.next_out = nullptr;
m_zstream.avail_out = 0;
// Rewind the underlying stream.
@@ -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/AMFConverter.cpp b/libcore/AMFConverter.cpp
index da68fb6..0c2c155 100644
--- a/libcore/AMFConverter.cpp
+++ b/libcore/AMFConverter.cpp
@@ -159,7 +159,7 @@ Writer::writeObject(as_object* obj)
writePlainNumber(_buf, d);
// This should be timezone
- boost::uint16_t tz = 0;
+ std::uint16_t tz = 0;
_buf.appendNetworkShort(tz);
return true;
@@ -290,7 +290,7 @@ Writer::writeNull()
}
void
-Writer::writeData(const boost::uint8_t* data, size_t length)
+Writer::writeData(const std::uint8_t* data, size_t length)
{
_buf.append(data, length);
}
@@ -343,7 +343,7 @@ Reader::operator()(as_value& val, Type t)
return true;
case NULL_AMF0:
- val = static_cast<as_object*>(0);
+ val = static_cast<as_object*>(nullptr);
return true;
// Object types need access to Global_as to create objects.
@@ -407,7 +407,7 @@ Reader::readStrictArray()
throw AMFException(_("Read past _end of buffer for strict array length"));
}
- const boost::uint32_t li = readNetworkLong(_pos);
+ const std::uint32_t li = readNetworkLong(_pos);
_pos += 4;
#ifdef GNASH_DEBUG_AMF_DESERIALIZE
@@ -442,7 +442,7 @@ Reader::readArray()
throw AMFException(_("Read past _end of buffer for array length"));
}
- const boost::uint32_t li = readNetworkLong(_pos);
+ const std::uint32_t li = readNetworkLong(_pos);
_pos += 4;
as_object* array = _global.createArray();
@@ -469,7 +469,7 @@ Reader::readArray()
"block"));
break;
}
- const boost::uint16_t strlen = readNetworkShort(_pos);
+ const std::uint16_t strlen = readNetworkShort(_pos);
_pos += 2;
// _end of ECMA_ARRAY is signalled by an empty string
@@ -556,7 +556,7 @@ Reader::readReference()
if (_end - _pos < 2) {
throw AMFException("Read past _end of buffer for reference index");
}
- const boost::uint16_t si = readNetworkShort(_pos);
+ const std::uint16_t si = readNetworkShort(_pos);
_pos += 2;
#ifdef GNASH_DEBUG_AMF_DESERIALIZE
@@ -592,7 +592,7 @@ Reader::readDate()
throw AMFException("premature _end of input reading "
"timezone from Date type");
}
- const boost::uint16_t tz = readNetworkShort(_pos);
+ const std::uint16_t tz = readNetworkShort(_pos);
if (tz != 0) {
log_error(_("Date type encoded timezone info %1%, even though "
"this field should not be used."), tz);
diff --git a/libcore/AMFConverter.h b/libcore/AMFConverter.h
index 4b08aee..fc16ef2 100644
--- a/libcore/AMFConverter.h
+++ b/libcore/AMFConverter.h
@@ -92,7 +92,7 @@ public:
bool writePropertyName(const std::string& name);
/// Write custom data for special cases.
- void writeData(const boost::uint8_t* data, size_t length);
+ void writeData(const std::uint8_t* data, size_t length);
private:
@@ -132,7 +132,7 @@ public:
/// ensure that pos is not greater than end on every read.
/// @param end The end of the buffer.
/// @param gl A global reference for creating objects when necessary.
- Reader(const boost::uint8_t*& pos, const boost::uint8_t* end, Global_as& gl)
+ Reader(const std::uint8_t*& pos, const std::uint8_t* end, Global_as& gl)
:
_pos(pos),
_end(end),
@@ -172,10 +172,10 @@ private:
std::vector<as_object*> _objectRefs;
/// The current position in the buffer.
- const boost::uint8_t*& _pos;
+ const std::uint8_t*& _pos;
/// The end of the buffer.
- const boost::uint8_t* const _end;
+ const std::uint8_t* const _end;
/// For creating objects if necessary.
Global_as& _global;
diff --git a/libcore/Bitmap.cpp b/libcore/Bitmap.cpp
index cad8767..24024ae 100644
--- a/libcore/Bitmap.cpp
+++ b/libcore/Bitmap.cpp
@@ -51,7 +51,7 @@ Bitmap::Bitmap(movie_root& mr, as_object* object,
:
DisplayObject(mr, object, parent),
_def(def),
- _bitmapData(0),
+ _bitmapData(nullptr),
_width(def->get_width_pixels()),
_height(def->get_height_pixels())
{
@@ -67,7 +67,7 @@ Bitmap::bitmap() const
{
if (_def) return _def->bitmap();
if (_bitmapData) return _bitmapData->bitmapInfo();
- return 0;
+ return nullptr;
}
void
@@ -105,7 +105,7 @@ Bitmap::construct(as_object* /*init*/)
}
bool
-Bitmap::pointInShape(boost::int32_t x, boost::int32_t y) const
+Bitmap::pointInShape(std::int32_t x, std::int32_t y) const
{
return pointInBounds(x, y);
}
@@ -150,7 +150,7 @@ Bitmap::update()
set_invalidated();
if (_bitmapData->disposed()) {
- _bitmapData = 0;
+ _bitmapData = nullptr;
_shape.clear();
}
}
diff --git a/libcore/Bitmap.h b/libcore/Bitmap.h
index b0f4628..91731f0 100644
--- a/libcore/Bitmap.h
+++ b/libcore/Bitmap.h
@@ -72,10 +72,10 @@ public:
virtual SWFRect getBounds() const;
/// Test whether a point is in the Bitmap's bounds.
- virtual bool pointInShape(boost::int32_t x, boost::int32_t y) const;
+ virtual bool pointInShape(std::int32_t x, std::int32_t y) const;
/// Called when the object is placed on stage.
- virtual void construct(as_object* init = 0);
+ virtual void construct(as_object* init = nullptr);
protected:
diff --git a/libcore/BitmapMovie.cpp b/libcore/BitmapMovie.cpp
index 2c8579c..60e5e5e 100644
--- a/libcore/BitmapMovie.cpp
+++ b/libcore/BitmapMovie.cpp
@@ -30,7 +30,7 @@ BitmapMovie::BitmapMovie(as_object* object, const BitmapMovieDefinition* def,
{
assert(def);
assert(object);
- Bitmap* bm = new Bitmap(stage(), 0, def, this);
+ Bitmap* bm = new Bitmap(stage(), nullptr, def, this);
const int depth = 1 + DisplayObject::staticDepthOffset;
placeDisplayObject(bm, depth);
diff --git a/libcore/Button.cpp b/libcore/Button.cpp
index 94cdd7c..6487fff 100644
--- a/libcore/Button.cpp
+++ b/libcore/Button.cpp
@@ -24,7 +24,7 @@
#include "Button.h"
-#include <boost/bind.hpp>
+#include <functional>
#include <utility>
#include <functional>
@@ -46,6 +46,7 @@
#include "RunResources.h"
#include "sound_definition.h"
#include "Transform.h"
+#include "sound_handler.h"
/** \page buttons Buttons and mouse behaviour
@@ -368,9 +369,8 @@ Button::display(Renderer& renderer, const Transform& base)
// TODO: by keeping chars sorted by depth we'd avoid the sort on display
std::sort(actChars.begin(), actChars.end(), charDepthLessThen);
- for (DisplayObjects::iterator it = actChars.begin(), e = actChars.end();
- it != e; ++it) {
- (*it)->display(renderer, xform);
+ for (auto& actChar : actChars) {
+ actChar->display(renderer, xform);
}
clear_invalidated();
@@ -380,11 +380,11 @@ Button::display(Renderer& renderer, const Transform& base)
// Return the topmost entity that the given point covers. NULL if none.
// I.e. check against ourself.
InteractiveObject*
-Button::topmostMouseEntity(boost::int32_t x, boost::int32_t y)
+Button::topmostMouseEntity(std::int32_t x, std::int32_t y)
{
if (!visible() || !isEnabled())
{
- return 0;
+ return nullptr;
}
//-------------------------------------------------
@@ -417,7 +417,7 @@ Button::topmostMouseEntity(boost::int32_t x, boost::int32_t y)
//-------------------------------------------------
// Find hit DisplayObjects
- if ( _hitCharacters.empty() ) return 0;
+ if ( _hitCharacters.empty() ) return nullptr;
// point is in p's space,
// we need to convert it in world space
@@ -437,7 +437,7 @@ Button::topmostMouseEntity(boost::int32_t x, boost::int32_t y)
}
}
- return NULL;
+ return nullptr;
}
@@ -529,7 +529,7 @@ Button::mouseEvent(const event_id& event)
const SWF::SoundInfoRecord& sinfo = bs.soundInfo;
const sound::SoundEnvelopes* env =
- sinfo.envelopes.empty() ? 0 : &sinfo.envelopes;
+ sinfo.envelopes.empty() ? nullptr : &sinfo.envelopes;
s->startSound(bs.sample->m_sound_handler_id,
bs.soundInfo.loopCount,
@@ -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());
@@ -577,7 +577,7 @@ Button::getActiveCharacters(ConstDisplayObjects& list) const
// DisplayObjects.
std::remove_copy_if(_stateCharacters.begin(), _stateCharacters.end(),
std::back_inserter(list),
- boost::bind(&isCharacterNull, _1, false));
+ std::bind(&isCharacterNull, std::placeholders::_1, false));
}
@@ -591,7 +591,7 @@ Button::getActiveCharacters(DisplayObjects& list, bool includeUnloaded)
// DisplayObjects, optionally including unloaded DisplayObjects.
std::remove_copy_if(_stateCharacters.begin(), _stateCharacters.end(),
std::back_inserter(list),
- boost::bind(&isCharacterNull, _1, includeUnloaded));
+ std::bind(&isCharacterNull, std::placeholders::_1, includeUnloaded));
}
@@ -662,8 +662,8 @@ Button::set_current_state(MouseState new_state)
if ( oldch && oldch->unloaded() ) {
removeInstanceProperty(*this, oldch);
if ( ! oldch->isDestroyed() ) oldch->destroy();
- _stateCharacters[i] = NULL;
- oldch = NULL;
+ _stateCharacters[i] = nullptr;
+ oldch = nullptr;
}
if ( oldch ) // the one we have should not be there... unload!
@@ -675,7 +675,7 @@ Button::set_current_state(MouseState new_state)
// No onUnload handler: destroy and clear slot
removeInstanceProperty(*this, oldch);
if (!oldch->isDestroyed()) oldch->destroy();
- _stateCharacters[i] = NULL;
+ _stateCharacters[i] = nullptr;
}
else
{
@@ -697,8 +697,8 @@ Button::set_current_state(MouseState new_state)
{
removeInstanceProperty(*this, oldch);
if ( ! oldch->isDestroyed() ) oldch->destroy();
- _stateCharacters[i] = NULL;
- oldch = NULL;
+ _stateCharacters[i] = nullptr;
+ oldch = nullptr;
}
if (!oldch) {
@@ -738,8 +738,8 @@ Button::add_invalidated_bounds(InvalidatedRanges& ranges, bool force)
DisplayObjects actChars;
getActiveCharacters(actChars);
std::for_each(actChars.begin(), actChars.end(),
- boost::bind(&DisplayObject::add_invalidated_bounds, _1,
- boost::ref(ranges), force || invalidated())
+ std::bind(&DisplayObject::add_invalidated_bounds, std::placeholders::_1,
+ std::ref(ranges), force || invalidated())
);
}
@@ -765,7 +765,7 @@ Button::getBounds() const
}
bool
-Button::pointInShape(boost::int32_t x, boost::int32_t y) const
+Button::pointInShape(std::int32_t x, std::int32_t y) const
{
typedef std::vector<const DisplayObject*> Chars;
Chars actChars;
@@ -798,9 +798,9 @@ Button::construct(as_object* initObj)
// Instantiate the hit DisplayObjects
ActiveRecords hitChars;
get_active_records(hitChars, MOUSESTATE_HIT);
- for (ActiveRecords::iterator i=hitChars.begin(),e=hitChars.end(); i!=e; ++i)
+ for (const auto& hitChar : hitChars)
{
- const SWF::ButtonRecord& rec = _def->buttonRecords()[*i];
+ const SWF::ButtonRecord& rec = _def->buttonRecords()[hitChar];
// These should not be named!
DisplayObject* ch = rec.instantiate(this, false);
@@ -818,10 +818,8 @@ Button::construct(as_object* initObj)
ActiveRecords upChars;
get_active_records(upChars, MOUSESTATE_UP);
- for (ActiveRecords::iterator i = upChars.begin(), e=upChars.end();
- i != e; ++i)
+ for (auto rno : upChars)
{
- int rno = *i;
const SWF::ButtonRecord& rec = _def->buttonRecords()[rno];
DisplayObject* ch = rec.instantiate(this);
@@ -846,10 +844,8 @@ Button::markOwnResources() const
{
// Mark state DisplayObjects as reachable
- for (DisplayObjects::const_iterator i = _stateCharacters.begin(),
- e = _stateCharacters.end(); i != e; ++i)
+ for (DisplayObject* ch : _stateCharacters)
{
- DisplayObject* ch = *i;
if (ch) ch->setReachable();
}
@@ -866,10 +862,8 @@ Button::unloadChildren()
// We need to unload all children, or the global instance list
// will keep growing forever !
- for (DisplayObjects::iterator i = _stateCharacters.begin(),
- e = _stateCharacters.end(); i != e; ++i)
+ for (DisplayObject* ch : _stateCharacters)
{
- DisplayObject* ch = *i;
if (!ch || ch->unloaded()) continue;
if (ch->unload()) childsHaveUnload = true;
}
@@ -890,9 +884,7 @@ Button::destroy()
{
stage().removeButton(this);
- for (DisplayObjects::iterator i = _stateCharacters.begin(),
- e=_stateCharacters.end(); i != e; ++i) {
- DisplayObject* ch = *i;
+ for (DisplayObject* ch : _stateCharacters) {
if (!ch || ch->isDestroyed()) continue;
ch->destroy();
}
@@ -967,7 +959,7 @@ Button::getMovieInfo(InfoTree& tr, InfoTree::iterator it)
os.str()));
std::for_each(actChars.begin(), actChars.end(),
- boost::bind(&DisplayObject::getMovieInfo, _1, tr, localIter));
+ std::bind(&DisplayObject::getMovieInfo, std::placeholders::_1, tr, localIter));
return selfIt;
diff --git a/libcore/Button.h b/libcore/Button.h
index 1414564..e7b14d9 100644
--- a/libcore/Button.h
+++ b/libcore/Button.h
@@ -94,8 +94,8 @@ public:
/// Return the topmost entity that the given point covers. NULL if none.
//
/// I.e. check against ourself.
- virtual InteractiveObject* topmostMouseEntity(boost::int32_t x,
- boost::int32_t y);
+ virtual InteractiveObject* topmostMouseEntity(std::int32_t x,
+ std::int32_t y);
/// Called whenever a mouse event affects this Button.
virtual void mouseEvent(const event_id& event);
@@ -108,7 +108,7 @@ public:
virtual SWFRect getBounds() const;
// See dox in DisplayObject.h
- bool pointInShape(boost::int32_t x, boost::int32_t y) const;
+ bool pointInShape(std::int32_t x, std::int32_t y) const;
bool isEnabled();
@@ -121,7 +121,7 @@ public:
//
/// @param init An init object, which can be passed when constructing
/// Buttons with attachMovie, but is never used.
- virtual void construct(as_object* init = 0);
+ virtual void construct(as_object* init = nullptr);
#ifdef USE_SWFTREE
// Override to append button DisplayObjects info, see dox in DisplayObject.h
diff --git a/libcore/CharacterProxy.cpp b/libcore/CharacterProxy.cpp
index 2cf9fc1..1ec2ead 100644
--- a/libcore/CharacterProxy.cpp
+++ b/libcore/CharacterProxy.cpp
@@ -38,7 +38,7 @@ CharacterProxy::checkDangling() const
"(%s) for later rebinding", _ptr->getTarget(), typeName(*_ptr),
_tgt);
#endif
- _ptr = 0;
+ _ptr = nullptr;
}
}
@@ -61,7 +61,7 @@ CharacterProxy::setReachable() const
DisplayObject*
findDisplayObjectByTarget(const std::string& tgtstr, movie_root& mr)
{
- if (tgtstr.empty()) return 0;
+ if (tgtstr.empty()) return nullptr;
return mr.findCharacterByTarget(tgtstr);
}
diff --git a/libcore/CharacterProxy.h b/libcore/CharacterProxy.h
index 2d16519..e4264da 100644
--- a/libcore/CharacterProxy.h
+++ b/libcore/CharacterProxy.h
@@ -21,7 +21,6 @@
#define GNASH_CHARACTER_PROXY_H
#include <string>
-#include <cassert>
#include "dsodefs.h"
// Forward declarations
diff --git a/libcore/ClassHierarchy.cpp b/libcore/ClassHierarchy.cpp
index c59041c..8984c5a 100644
--- a/libcore/ClassHierarchy.cpp
+++ b/libcore/ClassHierarchy.cpp
@@ -19,7 +19,7 @@
#include "ClassHierarchy.h"
-#include <boost/bind.hpp>
+#include <functional>
#include "as_object.h"
#include "PropFlags.h"
@@ -64,10 +64,10 @@ public:
bool isBuiltin() { return true; }
- declare_native_function(const ClassHierarchy::NativeClass &c, as_object *g)
+ declare_native_function(ClassHierarchy::NativeClass c, as_object *g)
:
as_function(getGlobal(*g)),
- _decl(c),
+ _decl(std::move(c)),
mTarget(g)
{
}
@@ -126,7 +126,8 @@ ClassHierarchy::declareAll(const NativeClasses& classes)
bool(ClassHierarchy::*nf)(const NativeClass& f) =
&ClassHierarchy::declareClass;
- std::for_each(classes.begin(), classes.end(), boost::bind(nf, this, _1));
+ std::for_each(classes.begin(), classes.end(), std::bind(nf, this,
+ std::placeholders::_1));
}
} // end of namespace gnash
diff --git a/libcore/ClassHierarchy.h b/libcore/ClassHierarchy.h
index c372c57..8532f1c 100644
--- a/libcore/ClassHierarchy.h
+++ b/libcore/ClassHierarchy.h
@@ -67,10 +67,10 @@ public:
/// The type of function to use for initialization
typedef void (*InitFunc)(as_object& obj, const ObjectURI& uri);
- NativeClass(InitFunc init, const ObjectURI& u, int ver)
+ NativeClass(InitFunc init, ObjectURI u, int ver)
:
initializer(init),
- uri(u),
+ uri(std::move(u)),
version(ver)
{}
@@ -89,10 +89,9 @@ public:
/// \brief
/// Construct the declaration object. Later set the global and
/// extension objects using setGlobal and setExtension
- ClassHierarchy(as_object* global, Extension* e)
+ ClassHierarchy(as_object* global)
:
- mGlobal(global),
- mExtension(e)
+ mGlobal(global)
{}
/// \brief
@@ -117,7 +116,6 @@ public:
private:
as_object* mGlobal;
- Extension* mExtension;
};
}
diff --git a/libcore/DisplayList.cpp b/libcore/DisplayList.cpp
index 1568b52..0604186 100644
--- a/libcore/DisplayList.cpp
+++ b/libcore/DisplayList.cpp
@@ -25,7 +25,7 @@
#include <algorithm>
#include <stack>
#include <cassert>
-#include <boost/bind.hpp>
+#include <functional>
#include <boost/format.hpp>
#include "log.h"
@@ -43,10 +43,12 @@ namespace {
/// in the "removed" depth zone
DisplayList::iterator beginNonRemoved(DisplayList::container_type& c);
- /// Return an constant iterator to the first element of the
+#if GNASH_PARANOIA_LEVEL > 1 && !defined(NDEBUG)
+ /// Return an constant iterator to the first element of the
/// container NOT in the "removed" depth zone
DisplayList::const_iterator beginNonRemoved(
const DisplayList::container_type& c);
+#endif
/// Return the first element in the DisplayList whose depth exceeds
/// 65535 (-16384).
@@ -117,10 +119,7 @@ DisplayList::getNextHighestDepth() const
testInvariant();
int nexthighestdepth=0;
- for (const_iterator it = _charsByDepth.begin(),
- itEnd = _charsByDepth.end(); it != itEnd; ++it) {
-
- DisplayObject* ch = *it;
+ for (DisplayObject* ch : _charsByDepth) {
const int chdepth = ch->get_depth();
if (chdepth >= nexthighestdepth) {
@@ -135,10 +134,7 @@ DisplayList::getDisplayObjectAtDepth(int depth) const
{
testInvariant();
- for (const_iterator it = _charsByDepth.begin(), itEnd = _charsByDepth.end();
- it != itEnd; ++it) {
-
- DisplayObject* ch = *it;
+ for (DisplayObject* ch : _charsByDepth) {
// Should not be there!
if (ch->isDestroyed()) continue;
@@ -147,10 +143,10 @@ DisplayList::getDisplayObjectAtDepth(int depth) const
if (ch->get_depth() == depth) return ch;
// non-existent (chars are ordered by depth)
- if (ch->get_depth() > depth) return 0;
+ if (ch->get_depth() > depth) return nullptr;
}
- return 0;
+ return nullptr;
}
@@ -166,7 +162,7 @@ DisplayList::getDisplayObjectByName(string_table& st, const ObjectURI& uri,
container_type::const_iterator it =
std::find_if(_charsByDepth.begin(), e, NameEquals(st, uri, caseless));
- if (it == e) return 0;
+ if (it == e) return nullptr;
return *it;
@@ -181,7 +177,8 @@ DisplayList::placeDisplayObject(DisplayObject* ch, int depth)
container_type::iterator it =
std::find_if( _charsByDepth.begin(), _charsByDepth.end(),
- boost::bind(std::not2(DepthLessThan()), _1, depth));
+ std::bind(std::not2(DepthLessThan()), std::placeholders::_1,
+ depth));
if (it == _charsByDepth.end() || (*it)->get_depth() != depth) {
// add the new char
@@ -218,7 +215,8 @@ DisplayList::add(DisplayObject* ch, bool replace)
container_type::iterator it =
std::find_if(_charsByDepth.begin(), _charsByDepth.end(),
- boost::bind(std::not2(DepthLessThan()), _1, depth));
+ std::bind(std::not2(DepthLessThan()), std::placeholders::_1,
+ depth));
if (it == _charsByDepth.end() || (*it)->get_depth() != depth) {
_charsByDepth.insert(it, ch);
@@ -242,7 +240,7 @@ DisplayList::replaceDisplayObject(DisplayObject* ch, int depth,
container_type::iterator it =
std::find_if(_charsByDepth.begin(), _charsByDepth.end(),
- boost::bind(std::not2(DepthLessThan()), _1, depth));
+ std::bind(std::not2(DepthLessThan()), std::placeholders::_1, depth));
if (it == _charsByDepth.end() || (*it)->get_depth() != depth) {
_charsByDepth.insert(it, ch);
@@ -294,7 +292,7 @@ DisplayList::replaceDisplayObject(DisplayObject* ch, int depth,
// the specified depth.
void
DisplayList::moveDisplayObject(int depth, const SWFCxForm* color_xform,
- const SWFMatrix* mat, boost::uint16_t* ratio)
+ const SWFMatrix* mat, std::uint16_t* ratio)
{
testInvariant();
@@ -343,7 +341,7 @@ DisplayList::removeDisplayObject(int depth)
// TODO: optimize to take by-depth order into account
container_type::iterator it =
std::find_if( _charsByDepth.begin(), _charsByDepth.end(),
- boost::bind(DepthEquals(), _1, depth));
+ std::bind(DepthEquals(), std::placeholders::_1, depth));
if (it != _charsByDepth.end()) {
// Make a copy (before erasing)
@@ -398,7 +396,8 @@ DisplayList::swapDepths(DisplayObject* ch1, int newdepth)
// upper bound ...
container_type::iterator it2 =
std::find_if(_charsByDepth.begin(), _charsByDepth.end(),
- boost::bind(std::not2(DepthLessThan()), _1, newdepth));
+ std::bind(std::not2(DepthLessThan()), std::placeholders::_1,
+ newdepth));
if (it1 == _charsByDepth.end()) {
log_error(_("First argument to DisplayList::swapDepth() "
@@ -457,7 +456,8 @@ DisplayList::insertDisplayObject(DisplayObject* obj, int index)
// Find the first index greater than or equal to the required index
container_type::iterator it =
std::find_if(_charsByDepth.begin(), _charsByDepth.end(),
- boost::bind(std::not2(DepthLessThan()), _1, index));
+ std::bind(std::not2(DepthLessThan()), std::placeholders::_1,
+ index));
// Insert the DisplayObject before that position
_charsByDepth.insert(it, obj);
@@ -849,7 +849,8 @@ DisplayList::mergeDisplayList(DisplayList& newList, DisplayObject& o)
if (chNew->unloaded()) {
iterator it =
std::find_if(_charsByDepth.begin(), _charsByDepth.end(),
- boost::bind(std::not2(DepthLessThan()), _1, depthNew));
+ std::bind(std::not2(DepthLessThan()), std::placeholders::_1,
+ depthNew));
o.set_invalidated();
_charsByDepth.insert(it, *itNew);
@@ -904,7 +905,8 @@ DisplayList::reinsertRemovedCharacter(DisplayObject* ch)
// TODO: optimize this by searching from the end(lowest depth).
container_type::iterator it =
std::find_if(_charsByDepth.begin(), _charsByDepth.end(),
- boost::bind(std::not2(DepthLessThan()), _1, newDepth));
+ std::bind(std::not2(DepthLessThan()), std::placeholders::_1,
+ newDepth));
_charsByDepth.insert(it, ch);
@@ -916,7 +918,7 @@ DisplayList::removeUnloaded()
{
testInvariant();
- _charsByDepth.remove_if(boost::mem_fn(&DisplayObject::unloaded));
+ _charsByDepth.remove_if(std::mem_fn(&DisplayObject::unloaded));
testInvariant();
}
@@ -940,9 +942,11 @@ beginNonRemoved(DisplayList::container_type& c)
DisplayObject::staticDepthOffset;
return std::find_if(c.begin(), c.end(),
- boost::bind(std::not2(DepthLessThan()), _1, depth));
+ std::bind(std::not2(DepthLessThan()), std::placeholders::_1,
+ depth));
}
+#if GNASH_PARANOIA_LEVEL > 1 && !defined(NDEBUG)
DisplayList::const_iterator
beginNonRemoved(const DisplayList::container_type& c)
{
@@ -951,14 +955,16 @@ beginNonRemoved(const DisplayList::container_type& c)
DisplayObject::staticDepthOffset;
return std::find_if(c.begin(), c.end(),
- boost::bind(std::not2(DepthLessThan()), _1, depth));
+ std::bind(std::not2(DepthLessThan()), std::placeholders::_1,
+ depth));
}
+#endif
DisplayList::iterator
dlistTagsEffectiveZoneEnd(DisplayList::container_type& c)
{
return std::find_if(c.begin(), c.end(),
- boost::bind(DepthGreaterThan(), _1,
+ std::bind(DepthGreaterThan(), std::placeholders::_1,
0xffff + DisplayObject::staticDepthOffset));
}
diff --git a/libcore/DisplayList.h b/libcore/DisplayList.h
index 14aedf0..9561500 100644
--- a/libcore/DisplayList.h
+++ b/libcore/DisplayList.h
@@ -161,7 +161,7 @@ public:
/// The new ratio value to assign to the DisplayObject at the given depth.
/// If NULL the original ratio will be kept.
void moveDisplayObject(int depth, const SWFCxForm* color_xform,
- const SWFMatrix* mat, boost::uint16_t* ratio);
+ const SWFMatrix* mat, std::uint16_t* ratio);
/// Removes the object at the specified depth.
//
@@ -372,10 +372,8 @@ template <class V>
void
DisplayList::visitAll(V& visitor)
{
- for (iterator it = _charsByDepth.begin(), itEnd = _charsByDepth.end();
- it != itEnd; ++it) {
-
- visitor(*it);
+ for (DisplayObject* ch : _charsByDepth) {
+ visitor(ch);
}
}
@@ -383,10 +381,8 @@ template <class V>
void
DisplayList::visitAll(V& visitor) const
{
- for (const_iterator it = _charsByDepth.begin(),
- itEnd = _charsByDepth.end(); it != itEnd; ++it) {
-
- visitor(*it);
+ for (DisplayObject* const ch : _charsByDepth) {
+ visitor(ch);
}
}
diff --git a/libcore/DisplayObject.cpp b/libcore/DisplayObject.cpp
index 254c4bd..3b43731 100644
--- a/libcore/DisplayObject.cpp
+++ b/libcore/DisplayObject.cpp
@@ -25,8 +25,7 @@
#include "DisplayObject.h"
#include <utility>
-#include <boost/assign/list_of.hpp>
-#include <boost/bind.hpp>
+#include <functional>
#include <boost/logic/tribool.hpp>
#include "movie_root.h"
@@ -101,8 +100,8 @@ DisplayObject::DisplayObject(movie_root& mr, as_object* object,
_volume(100),
_ratio(0),
m_clip_depth(noClipDepthValue),
- _mask(0),
- _maskee(0),
+ _mask(nullptr),
+ _maskee(nullptr),
_blendMode(BLENDMODE_NORMAL),
_visible(true),
_scriptTransformed(false),
@@ -161,7 +160,7 @@ as_object*
DisplayObject::pathElement(const ObjectURI& uri)
{
as_object* obj = getObject(this);
- if (!obj) return 0;
+ if (!obj) return nullptr;
string_table::key key = getName(uri);
@@ -177,7 +176,7 @@ DisplayObject::pathElement(const ObjectURI& uri)
(uri, ObjectURI(NSV::PROP_THIS))) {
return obj;
}
- return 0;
+ return nullptr;
}
void
@@ -308,7 +307,7 @@ DisplayObject::blendMode(const fn_call& fn)
const BlendModeMap& bmm = getBlendModeMap();
BlendModeMap::const_iterator it = std::find_if(bmm.begin(), bmm.end(),
- boost::bind(blendModeMatches, _1, mode));
+ std::bind(blendModeMatches, std::placeholders::_1, mode));
if (it != bmm.end()) {
ch->setBlendMode(it->first);
@@ -331,7 +330,7 @@ DisplayObject::set_visible(bool visible)
assert(_object);
movie_root& mr = stage();
if (mr.getFocus() == this) {
- mr.setFocus(0);
+ mr.setFocus(nullptr);
}
}
_visible = visible;
@@ -413,14 +412,12 @@ DisplayObject::setMatrix(const SWFMatrix& m, bool updateCache)
void
DisplayObject::set_event_handlers(const Events& copyfrom)
{
- for (Events::const_iterator it=copyfrom.begin(), itE=copyfrom.end();
- it != itE; ++it)
+ for (const auto& event : copyfrom)
{
- const event_id& ev = it->first;
- const BufferList& bufs = it->second;
- for (size_t i = 0, e = bufs.size(); i < e; ++i)
+ const event_id& ev = event.first;
+ const BufferList& bufs = event.second;
+ for (const action_buffer* buf : bufs)
{
- const action_buffer* buf = bufs[i];
assert(buf);
add_event_handler(ev, *buf);
}
@@ -433,10 +430,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;
@@ -453,8 +450,8 @@ DisplayObject::unload()
const bool unloadHandler = unloadChildren();
// Unregister this DisplayObject as mask and/or maskee.
- if (_maskee) _maskee->setMask(0);
- if (_mask) _mask->setMaskee(0);
+ if (_maskee) _maskee->setMask(nullptr);
+ if (_mask) _mask->setMaskee(nullptr);
_unloaded = true;
@@ -577,7 +574,7 @@ DisplayObject::getTargetPath() const
Path path;
// Build parents stack
- const DisplayObject* topLevel = 0;
+ const DisplayObject* topLevel = nullptr;
const DisplayObject* ch = this;
string_table& st = getStringTable(*getObject(this));
@@ -742,18 +739,18 @@ DisplayObject::setMask(DisplayObject* mask)
// on any previously registered maskee
// so we make sure to set our _mask to
// NULL before getting called again
- _mask->setMaskee(0);
+ _mask->setMaskee(nullptr);
}
// if we had a maskee, notify it to stop using
// us as a mask
- if (prevMaskee) prevMaskee->setMask(0);
+ if (prevMaskee) prevMaskee->setMask(nullptr);
// TODO: should we reset any original clip depth
// specified by PlaceObject tag ?
set_clip_depth(noClipDepthValue);
_mask = mask;
- _maskee = 0;
+ _maskee = nullptr;
if (_mask) {
/// Register as as masked by the mask
@@ -769,7 +766,7 @@ DisplayObject::setMaskee(DisplayObject* maskee)
if (_maskee) {
// We don't want the maskee to call setMaskee(null)
// on us again
- _maskee->_mask = 0;
+ _maskee->_mask = nullptr;
}
_maskee = maskee;
@@ -972,7 +969,7 @@ DisplayObject::MaskRenderer::MaskRenderer(Renderer& r, const DisplayObject& o)
:
_renderer(r),
_mask(o.visible() && o.getMask() && !o.getMask()->unloaded() ? o.getMask()
- : 0)
+ : nullptr)
{
if (!_mask) return;
@@ -1256,12 +1253,12 @@ setAlpha(DisplayObject& o, const as_value& val)
SWFCxForm cx = getCxForm(o);
// Overflows are *not* truncated, but set to -32768.
- if (newAlpha > std::numeric_limits<boost::int16_t>::max() ||
- newAlpha < std::numeric_limits<boost::int16_t>::min()) {
- cx.aa = std::numeric_limits<boost::int16_t>::min();
+ if (newAlpha > std::numeric_limits<std::int16_t>::max() ||
+ newAlpha < std::numeric_limits<std::int16_t>::min()) {
+ cx.aa = std::numeric_limits<std::int16_t>::min();
}
else {
- cx.aa = static_cast<boost::int16_t>(newAlpha);
+ cx.aa = static_cast<std::int16_t>(newAlpha);
}
o.setCxForm(cx);
@@ -1273,7 +1270,7 @@ as_value
getMouseX(DisplayObject& o)
{
// Local coord of mouse IN PIXELS.
- boost::int32_t x, y;
+ std::int32_t x, y;
boost::tie(x, y) = getRoot(*getObject(&o)).mousePosition();
SWFMatrix m = getWorldMatrix(o);
@@ -1287,7 +1284,7 @@ as_value
getMouseY(DisplayObject& o)
{
// Local coord of mouse IN PIXELS.
- boost::int32_t x, y;
+ std::int32_t x, y;
boost::tie(x, y) = getRoot(*getObject(&o)).mousePosition();
SWFMatrix m = getWorldMatrix(o);
@@ -1472,7 +1469,7 @@ getGetterSetterByURI(const ObjectURI& uri, string_table& st)
const GetterSetters::const_iterator it = gs.find(uri);
if (it == gs.end()) {
- static const GetterSetter none(0, 0);
+ static const GetterSetter none(nullptr, nullptr);
return none;
}
@@ -1483,7 +1480,7 @@ getGetterSetterByURI(const ObjectURI& uri, string_table& st)
const GetterSetter&
getGetterSetterByIndex(size_t index)
{
- const Setter n = 0;
+ const Setter n = nullptr;
static const GetterSetter props[] = {
GetterSetter(&getX, &setX),
@@ -1517,7 +1514,7 @@ getGetterSetterByIndex(size_t index)
};
if (index >= arraySize(props)) {
- const Getter ng = 0;
+ const Getter ng = nullptr;
static const GetterSetter none(ng, n);
return none;
}
@@ -1580,22 +1577,23 @@ getBlendModeMap()
{
/// BLENDMODE_UNDEFINED has no matching string in AS. It is included
/// here for logging purposes.
- static const BlendModeMap bm = boost::assign::map_list_of
- (DisplayObject::BLENDMODE_UNDEFINED, "undefined")
- (DisplayObject::BLENDMODE_NORMAL, "normal")
- (DisplayObject::BLENDMODE_LAYER, "layer")
- (DisplayObject::BLENDMODE_MULTIPLY, "multiply")
- (DisplayObject::BLENDMODE_SCREEN, "screen")
- (DisplayObject::BLENDMODE_LIGHTEN, "lighten")
- (DisplayObject::BLENDMODE_DARKEN, "darken")
- (DisplayObject::BLENDMODE_DIFFERENCE, "difference")
- (DisplayObject::BLENDMODE_ADD, "add")
- (DisplayObject::BLENDMODE_SUBTRACT, "subtract")
- (DisplayObject::BLENDMODE_INVERT, "invert")
- (DisplayObject::BLENDMODE_ALPHA, "alpha")
- (DisplayObject::BLENDMODE_ERASE, "erase")
- (DisplayObject::BLENDMODE_OVERLAY, "overlay")
- (DisplayObject::BLENDMODE_HARDLIGHT, "hardlight");
+ static const BlendModeMap bm = {
+ {DisplayObject::BLENDMODE_UNDEFINED, "undefined"},
+ {DisplayObject::BLENDMODE_NORMAL, "normal"},
+ {DisplayObject::BLENDMODE_LAYER, "layer"},
+ {DisplayObject::BLENDMODE_MULTIPLY, "multiply"},
+ {DisplayObject::BLENDMODE_SCREEN, "screen"},
+ {DisplayObject::BLENDMODE_LIGHTEN, "lighten"},
+ {DisplayObject::BLENDMODE_DARKEN, "darken"},
+ {DisplayObject::BLENDMODE_DIFFERENCE, "difference"},
+ {DisplayObject::BLENDMODE_ADD, "add"},
+ {DisplayObject::BLENDMODE_SUBTRACT, "subtract"},
+ {DisplayObject::BLENDMODE_INVERT, "invert"},
+ {DisplayObject::BLENDMODE_ALPHA, "alpha"},
+ {DisplayObject::BLENDMODE_ERASE, "erase"},
+ {DisplayObject::BLENDMODE_OVERLAY, "overlay"},
+ {DisplayObject::BLENDMODE_HARDLIGHT, "hardlight"}
+ };
return bm;
}
@@ -1618,7 +1616,7 @@ template<typename Map>
const Map
getURIMap(const typename Map::key_compare& cmp)
{
- const Setter n = 0;
+ const Setter n = nullptr;
Map ret(cmp);
ret.insert(std::make_pair(NSV::PROP_uX, GetterSetter(&getX, &setX)));
diff --git a/libcore/DisplayObject.h b/libcore/DisplayObject.h
index bde7359..624948f 100644
--- a/libcore/DisplayObject.h
+++ b/libcore/DisplayObject.h
@@ -28,7 +28,7 @@
#include <map>
#include <string>
#include <cassert>
-#include <boost/cstdint.hpp> // For C99 int types
+#include <cstdint> // For C99 int types
#include <boost/noncopyable.hpp>
#include <boost/logic/tribool.hpp>
@@ -234,7 +234,7 @@ public:
// MovieClip must override this
// and any other DisplayObject will have
// a parent!
- assert(_parent != NULL);
+ assert(_parent != nullptr);
return _parent->get_environment();
}
@@ -263,7 +263,7 @@ public:
_parent = parent;
}
- virtual MovieClip* to_movie() { return 0; }
+ virtual MovieClip* to_movie() { return nullptr; }
int get_depth() const { return _depth; }
@@ -357,9 +357,9 @@ public:
}
}
- boost::uint16_t get_ratio() const { return _ratio; }
+ std::uint16_t get_ratio() const { return _ratio; }
- void set_ratio(boost::uint16_t r) {
+ void set_ratio(std::uint16_t r) {
if (r != _ratio) set_invalidated();
_ratio = r;
}
@@ -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
//
@@ -474,7 +474,7 @@ public:
/// @ return 0 if this object is not a StaticText or contains no text.
virtual StaticText* getStaticText(std::vector<const SWF::TextRecord*>&,
size_t&) {
- return 0;
+ return nullptr;
}
virtual SWFRect getBounds() const = 0;
@@ -485,7 +485,7 @@ public:
/// @param y Point y coordinate in world space
/// @return Whether (x, y) is within the DisplayObject's bounds.
/// This ignores _root's transform.
- bool pointInBounds(boost::int32_t x, boost::int32_t y) const
+ bool pointInBounds(std::int32_t x, std::int32_t y) const
{
SWFRect bounds = getBounds();
const SWFMatrix wm = getWorldMatrix(*this, false);
@@ -498,7 +498,7 @@ public:
/// @param x Point x coordinate in world space
/// @param y Point y coordinate in world space
/// @return Whether (x, y) is within the DisplayObject's bounds.
- virtual bool pointInShape(boost::int32_t x, boost::int32_t y) const = 0;
+ virtual bool pointInShape(std::int32_t x, std::int32_t y) const = 0;
/// true if the given point falls in this DisplayObject's visible shape
//
@@ -512,7 +512,7 @@ public:
/// DisplayObject has childs it must take into account the case
/// in which some childs are visible and some are not.
///
- virtual bool pointInVisibleShape(boost::int32_t x, boost::int32_t y) const
+ virtual bool pointInVisibleShape(std::int32_t x, std::int32_t y) const
{
if (!visible()) return false;
if (isDynamicMask() || isMaskLayer()) return false;
@@ -634,23 +634,23 @@ public:
/// DisplayObjects are not a mouse entity by default.
//
/// Override this function for InteractiveObjects.
- virtual InteractiveObject* topmostMouseEntity(boost::int32_t,
- boost::int32_t) {
- return 0;
+ virtual InteractiveObject* topmostMouseEntity(std::int32_t,
+ std::int32_t) {
+ return nullptr;
}
/// Find highest depth DisplayObject whose shape contains the given
/// point and is not the DisplayObject being dragged or any of its childs.
//
/// Point coordinates in global twips.
- virtual const DisplayObject* findDropTarget(boost::int32_t x,
- boost::int32_t y, DisplayObject* dragging) const
+ virtual const DisplayObject* findDropTarget(std::int32_t x,
+ std::int32_t y, DisplayObject* dragging) const
{
if (this != dragging && visible() && pointInVisibleShape(x, y)) {
return this;
}
- return 0;
+ return nullptr;
}
/// Return whether this DisplayObject has been invalidated or not
@@ -760,7 +760,7 @@ public:
/// as the first thing.
///
/// This handles all ActionScript construction and initialization events.
- virtual void construct(as_object* /*init*/ = 0)
+ virtual void construct(as_object* /*init*/ = nullptr)
{
saveOriginalTarget();
}
@@ -1049,7 +1049,7 @@ private:
double _xscale, _yscale, _rotation;
/// The depth of this DisplayObject.
- boost::int32_t _depth;
+ std::int32_t _depth;
boost::tribool _focusRect;
@@ -1063,7 +1063,7 @@ private:
///
int _volume;
- boost::uint16_t _ratio;
+ std::uint16_t _ratio;
int m_clip_depth;
/// The DisplayObject masking this instance (if any)
@@ -1159,7 +1159,7 @@ isReferenceable(const DisplayObject& d)
inline as_object*
getObject(const DisplayObject* d)
{
- return d ? d->object() : 0;
+ return d ? d->object() : nullptr;
}
/// Stream operator for DisplayObject blend mode.
diff --git a/libcore/DisplayObjectContainer.cpp b/libcore/DisplayObjectContainer.cpp
index 64e8a7d..f1b96a1 100644
--- a/libcore/DisplayObjectContainer.cpp
+++ b/libcore/DisplayObjectContainer.cpp
@@ -48,7 +48,7 @@ public:
DisplayObject::InfoTree::iterator it)
:
_tr(tr),
- _it(it)
+ _it(std::move(it))
{}
void operator()(DisplayObject* ch) {
diff --git a/libcore/DragState.h b/libcore/DragState.h
index 7bdc870..37c333d 100644
--- a/libcore/DragState.h
+++ b/libcore/DragState.h
@@ -39,7 +39,9 @@ public:
DragState(DisplayObject* d, bool lock)
:
_displayObject(d),
- _lock_centered(lock)
+ _lock_centered(lock),
+ _xoffset(0),
+ _yoffset(0)
{
}
@@ -51,13 +53,13 @@ public:
/// at time of drag start.
/// Coordinates are in stage space (twips)
///
- void setOffset(boost::int32_t x, boost::int32_t y) {
+ void setOffset(std::int32_t x, std::int32_t y) {
_xoffset = x;
_yoffset = y;
}
- boost::int32_t xOffset() const { return _xoffset; }
- boost::int32_t yOffset() const { return _yoffset; }
+ std::int32_t xOffset() const { return _xoffset; }
+ std::int32_t yOffset() const { return _yoffset; }
bool hasBounds() const {
return (_bounds);
@@ -94,7 +96,7 @@ public:
/// Reset drag state to its initial condition
void reset() {
- _displayObject = 0;
+ _displayObject = nullptr;
_bounds.reset();
_lock_centered = false;
}
@@ -118,8 +120,8 @@ private:
/// at time of drag start. These are used for non
/// lock-centered dragging.
/// Coordinates are in stage space (TWIPS)
- boost::int32_t _xoffset;
- boost::int32_t _yoffset;
+ std::int32_t _xoffset;
+ std::int32_t _yoffset;
};
diff --git a/libcore/DynamicShape.cpp b/libcore/DynamicShape.cpp
index 0103b60..995acf2 100644
--- a/libcore/DynamicShape.cpp
+++ b/libcore/DynamicShape.cpp
@@ -27,7 +27,7 @@ namespace gnash {
DynamicShape::DynamicShape()
:
- _currpath(0),
+ _currpath(nullptr),
_currfill(0),
_currline(0),
_x(0),
@@ -39,7 +39,7 @@ void
DynamicShape::clear()
{
_shape.clear();
- _currpath = 0;
+ _currpath = nullptr;
_currfill = _currline = 0;
_currsubshape.clear();
// TODO: worth setting _changed=true ?
@@ -89,7 +89,7 @@ DynamicShape::endFill()
// Remove reference to the "current" path, as
// next drawing will happen on a different one
- _currpath = 0;
+ _currpath = nullptr;
// Remove fill information
_currfill = 0;
}
@@ -160,7 +160,7 @@ DynamicShape::finalize() const
}
void
-DynamicShape::lineStyle(boost::uint16_t thickness, const rgba& color,
+DynamicShape::lineStyle(std::uint16_t thickness, const rgba& color,
bool vScale, bool hScale, bool pixelHinting, bool noClose,
CapStyle startCapStyle, CapStyle endCapStyle,
JoinStyle joinStyle, float miterLimitFactor)
@@ -181,7 +181,7 @@ DynamicShape::resetLineStyle()
}
void
-DynamicShape::moveTo(boost::int32_t x, boost::int32_t y)
+DynamicShape::moveTo(std::int32_t x, std::int32_t y)
{
// It was manually tested that a moveTo, even
// when moving to the same point of current cursor,
@@ -193,7 +193,7 @@ DynamicShape::moveTo(boost::int32_t x, boost::int32_t y)
}
void
-DynamicShape::lineTo(boost::int32_t x, boost::int32_t y, int swfVersion)
+DynamicShape::lineTo(std::int32_t x, std::int32_t y, int swfVersion)
{
if (!_currpath) startNewPath(false);
assert(_currpath);
@@ -224,8 +224,8 @@ DynamicShape::lineTo(boost::int32_t x, boost::int32_t y, int swfVersion)
}
void
-DynamicShape::curveTo(boost::int32_t cx, boost::int32_t cy,
- boost::int32_t ax, boost::int32_t ay, int swfVersion)
+DynamicShape::curveTo(std::int32_t cx, std::int32_t cy,
+ std::int32_t ax, std::int32_t ay, int swfVersion)
{
if (!_currpath) startNewPath(false);
assert(_currpath);
diff --git a/libcore/DynamicShape.h b/libcore/DynamicShape.h
index c082c23..823928e 100644
--- a/libcore/DynamicShape.h
+++ b/libcore/DynamicShape.h
@@ -53,16 +53,16 @@ public:
void clear();
/// Move pen to given coordinates
- void moveTo(boost::int32_t x, boost::int32_t y);
+ void moveTo(std::int32_t x, std::int32_t y);
/// Draw a straight line from current position to given one
- void lineTo(boost::int32_t x, boost::int32_t y, int swfVersion);
+ void lineTo(std::int32_t x, std::int32_t y, int swfVersion);
/// \brief
/// Draw a curve from current position to given one
/// using given control points.
- void curveTo(boost::int32_t cx, boost::int32_t cy,
- boost::int32_t ax, boost::int32_t ay, int swfVersion);
+ void curveTo(std::int32_t cx, std::int32_t cy,
+ std::int32_t ax, std::int32_t ay, int swfVersion);
/// Start drawing with a solid fill
void beginFill(const FillStyle& f);
@@ -92,7 +92,7 @@ public:
/// @param endCapStyle
/// @param joinStyle
/// @param miterLimitFactor
- void lineStyle(boost::uint16_t thickness, const rgba& color,
+ void lineStyle(std::uint16_t thickness, const rgba& color,
bool vScale=true, bool hScale=true,
bool pixelHinting=false,
bool noClose=false,
@@ -143,7 +143,7 @@ public:
// would result in a triangle and a stroke, which should fail the last hitTest(2,8).
//
//
- bool pointTestLocal(boost::int32_t x, boost::int32_t y,
+ bool pointTestLocal(std::int32_t x, std::int32_t y,
const SWFMatrix& wm) const
{
finalize();
@@ -189,10 +189,10 @@ private:
size_t _currline;
// Current pen X position
- boost::int32_t _x;
+ std::int32_t _x;
// Current pen Y position
- boost::int32_t _y;
+ std::int32_t _y;
mutable bool _changed;
diff --git a/libcore/ExternalInterface.cpp b/libcore/ExternalInterface.cpp
index 54b749f..55c5461 100644
--- a/libcore/ExternalInterface.cpp
+++ b/libcore/ExternalInterface.cpp
@@ -24,8 +24,6 @@
#include <vector>
#include <sstream>
#include <boost/algorithm/string/erase.hpp>
-#include <boost/shared_ptr.hpp>
-#include <boost/scoped_array.hpp>
#include <algorithm>
#ifdef SOLARIS_HOST
@@ -140,12 +138,12 @@ ExternalInterface::_toXML(const as_value &val)
return ss.str();
}
-boost::shared_ptr<ExternalInterface::invoke_t>
+std::unique_ptr<ExternalInterface::invoke_t>
ExternalInterface::ExternalEventCheck(int fd)
{
// GNASH_REPORT_FUNCTION;
- boost::shared_ptr<ExternalInterface::invoke_t> error;
+ std::unique_ptr<ExternalInterface::invoke_t> error;
if (fd > 0) {
int bytes = 0;
@@ -154,7 +152,7 @@ ExternalInterface::ExternalEventCheck(int fd)
return error;
}
log_debug("There are %d bytes in the network buffer", bytes);
- boost::scoped_array<char> buffer(new char[bytes + 1]);
+ std::unique_ptr<char[]> buffer(new char[bytes + 1]);
// Since we know how bytes are in the network buffer, allocate
// some memory to read the data.
// terminate incase we want to treat the data like a string.
@@ -177,10 +175,10 @@ ExternalInterface::ExternalEventCheck(int fd)
// </arguments>
// </invoke>
//
-boost::shared_ptr<ExternalInterface::invoke_t>
+std::unique_ptr<ExternalInterface::invoke_t>
ExternalInterface::parseInvoke(const std::string &xml)
{
- boost::shared_ptr<ExternalInterface::invoke_t> invoke;
+ std::unique_ptr<ExternalInterface::invoke_t> invoke;
if (xml.empty()) {
return invoke;
}
@@ -254,7 +252,7 @@ ExternalInterface::parseXML(const std::string &xml)
start = end;
end = xml.find("</number>");
std::string str = xml.substr(start, end-start);
- double num = strtod(str.c_str(), NULL);
+ double num = strtod(str.c_str(), nullptr);
value.set_double(num);
} else if (tag == "<string>") {
start = end;
diff --git a/libcore/ExternalInterface.h b/libcore/ExternalInterface.h
index 7ad0047..6a1089b 100644
--- a/libcore/ExternalInterface.h
+++ b/libcore/ExternalInterface.h
@@ -21,10 +21,10 @@
#ifndef GNASH_EXTERNALINTERFACE_H
#define GNASH_EXTERNALINTERFACE_H
+#include <memory>
#include <string>
#include <vector>
#include <set>
-#include <boost/shared_ptr.hpp>
#include "dsodefs.h" /* For DSOEXPORT */
@@ -57,9 +57,9 @@ struct DSOEXPORT ExternalInterface
static std::vector<as_value> parseArguments(const std::string &xml);
// Parse the XML Invoke message.
- static boost::shared_ptr<invoke_t> parseInvoke(const std::string &str);
+ static std::unique_ptr<invoke_t> parseInvoke(const std::string &str);
// Check for data from the browser and parse it.
- DSOEXPORT static boost::shared_ptr<invoke_t> ExternalEventCheck(int fd);
+ DSOEXPORT static std::unique_ptr<invoke_t> ExternalEventCheck(int fd);
// These methods are for constructing Invoke messages.
// Create an Invoke message for the standalone Gnash
diff --git a/libcore/FillStyle.cpp b/libcore/FillStyle.cpp
index c212ac7..fb5f466 100644
--- a/libcore/FillStyle.cpp
+++ b/libcore/FillStyle.cpp
@@ -100,25 +100,25 @@ GradientFill::setFocalPoint(double d)
_focalPoint = clamp<float>(d, -1, 1);
}
-BitmapFill::BitmapFill(Type t, const CachedBitmap* bi, const SWFMatrix& m,
+BitmapFill::BitmapFill(Type t, const CachedBitmap* bi, SWFMatrix m,
SmoothingPolicy pol)
:
_type(t),
_smoothingPolicy(pol),
- _matrix(m),
+ _matrix(std::move(m)),
_bitmapInfo(bi),
- _md(0),
+ _md(nullptr),
_id(0)
{
}
BitmapFill::BitmapFill(SWF::FillType t, movie_definition* md,
- boost::uint16_t id, const SWFMatrix& m)
+ std::uint16_t id, SWFMatrix m)
:
_type(),
_smoothingPolicy(),
- _matrix(m),
- _bitmapInfo(0),
+ _matrix(std::move(m)),
+ _bitmapInfo(nullptr),
_md(md),
_id(id)
{
@@ -185,7 +185,7 @@ BitmapFill::bitmap() const
return _bitmapInfo.get();
}
if (!_md) {
- return 0;
+ return nullptr;
}
_bitmapInfo = _md->getBitmap(_id);
diff --git a/libcore/FillStyle.h b/libcore/FillStyle.h
index 01068d1..8049643 100644
--- a/libcore/FillStyle.h
+++ b/libcore/FillStyle.h
@@ -40,14 +40,14 @@ namespace gnash {
class GradientRecord
{
public:
- GradientRecord(boost::uint8_t ratio, const rgba& color)
+ GradientRecord(std::uint8_t ratio, rgba color)
:
ratio(ratio),
- color(color)
+ color(std::move(color))
{ }
//data:
- boost::uint8_t ratio;
+ std::uint8_t ratio;
rgba color;
};
@@ -90,12 +90,12 @@ public:
/// Construct a BitmapFill from arbitrary bitmap data.
//
/// TODO: check the smoothing policy here!
- BitmapFill(Type t, const CachedBitmap* bi, const SWFMatrix& m,
+ BitmapFill(Type t, const CachedBitmap* bi, SWFMatrix m,
SmoothingPolicy pol);
/// Construct a static BitmapFill using a SWF tag.
- BitmapFill(SWF::FillType t, movie_definition* md, boost::uint16_t id,
- const SWFMatrix& m);
+ BitmapFill(SWF::FillType t, movie_definition* md, std::uint16_t id,
+ SWFMatrix m);
/// Destructor
~BitmapFill();
@@ -146,7 +146,7 @@ private:
movie_definition* _md;
// The id of the tag containing the bitmap
- boost::uint16_t _id;
+ std::uint16_t _id;
};
/// A GradientFill
@@ -248,9 +248,9 @@ struct DSOEXPORT SolidFill
public:
/// Construct a SolidFill.
- explicit SolidFill(const rgba& c)
+ explicit SolidFill(rgba c)
:
- _color(c)
+ _color(std::move(c))
{ }
/// Copy a SolidFill.
diff --git a/libcore/Filters.h b/libcore/Filters.h
index a22743d..d99696b 100644
--- a/libcore/Filters.h
+++ b/libcore/Filters.h
@@ -20,8 +20,9 @@
#ifndef GNASH_FILTERS_H
#define GNASH_FILTERS_H
-#include <boost/cstdint.hpp>
+#include <cstdint>
#include <vector>
+#include <utility>
namespace gnash {
class SWFStream;
@@ -72,10 +73,10 @@ public:
m_knockout(false)
{}
- BevelFilter(float distance, float angle, boost::uint32_t hcolor,
- boost::uint8_t halpha, boost::uint32_t scolor, boost::uint8_t salpha,
+ BevelFilter(float distance, float angle, std::uint32_t hcolor,
+ std::uint8_t halpha, std::uint32_t scolor, std::uint8_t salpha,
float blurX, float blurY, float strength,
- boost::uint8_t quality, bevel_type type, bool knockout) :
+ std::uint8_t quality, bevel_type type, bool knockout) :
m_distance(distance), m_angle(angle), m_highlightColor(hcolor),
m_highlightAlpha(halpha), m_shadowColor(scolor), m_shadowAlpha(salpha),
m_blurX(blurX), m_blurY(blurY), m_strength(strength),
@@ -84,14 +85,14 @@ public:
float m_distance; // Distance of the filter in pixels.
float m_angle; // Angle of the filter.
- boost::uint32_t m_highlightColor; // Color of the highlight.
- boost::uint8_t m_highlightAlpha; // Alpha of the highlight.
- boost::uint32_t m_shadowColor; // RGB color.
- boost::uint8_t m_shadowAlpha; // Alpha strength, as a percentage(?)
+ std::uint32_t m_highlightColor; // Color of the highlight.
+ std::uint8_t m_highlightAlpha; // Alpha of the highlight.
+ std::uint32_t m_shadowColor; // RGB color.
+ std::uint8_t m_shadowAlpha; // Alpha strength, as a percentage(?)
float m_blurX; // horizontal blur
float m_blurY; // vertical blur
float m_strength; // How strong is the filter.
- boost::uint8_t m_quality; // How many times to apply the filter.
+ std::uint8_t m_quality; // How many times to apply the filter.
bevel_type m_type; // The type of filter. (Rendered as string in AS)
bool m_knockout; // If true, render only the filter effect.
};
@@ -109,13 +110,13 @@ public:
m_blurX(0.0f), m_blurY(0.0f), m_quality(0)
{}
- BlurFilter(float blurX, float blurY, boost::uint8_t quality) :
+ BlurFilter(float blurX, float blurY, std::uint8_t quality) :
m_blurX(blurX), m_blurY(blurY), m_quality(quality)
{}
float m_blurX; // How much horizontal blur.
float m_blurY; // How much vertical blur.
- boost::uint8_t m_quality; // How many passes to take.
+ std::uint8_t m_quality; // How many passes to take.
};
// A color SWFMatrix effect filter.
@@ -132,7 +133,7 @@ public:
{}
ColorMatrixFilter(std::vector<float> a_matrix) :
- m_matrix(a_matrix)
+ m_matrix(std::move(a_matrix))
{}
protected:
@@ -162,14 +163,14 @@ public:
_alpha()
{}
- ConvolutionFilter(boost::uint8_t matrixX, boost::uint8_t matrixY,
- const std::vector<float>& _matrix, float divisor, float bias,
- bool preserveAlpha, bool clamp, boost::uint32_t color,
- boost::uint8_t alpha)
+ ConvolutionFilter(std::uint8_t matrixX, std::uint8_t matrixY,
+ std::vector<float> _matrix, float divisor, float bias,
+ bool preserveAlpha, bool clamp, std::uint32_t color,
+ std::uint8_t alpha)
:
_matrixX(matrixX),
_matrixY(matrixY),
- _matrix(_matrix),
+ _matrix(std::move(_matrix)),
_divisor(divisor),
_bias(bias),
_preserveAlpha(preserveAlpha),
@@ -179,15 +180,15 @@ public:
{}
protected:
- boost::uint8_t _matrixX; // Number of columns
- boost::uint8_t _matrixY; // Number of rows
+ std::uint8_t _matrixX; // Number of columns
+ std::uint8_t _matrixY; // Number of rows
std::vector<float> _matrix; // The convolution matrix
float _divisor;
float _bias;
bool _preserveAlpha; // If true, don't convolute the alpha channel
bool _clamp; // Whether or not to clamp
- boost::uint32_t _color; // For off-image pixels
- boost::uint8_t _alpha; // For off-image pixels
+ std::uint32_t _color; // For off-image pixels
+ std::uint8_t _alpha; // For off-image pixels
};
// A drop shadow effect filter.
@@ -205,9 +206,9 @@ public:
m_inner(false), m_knockout(false), m_hideObject(false)
{}
- DropShadowFilter(float distance, float angle, boost::uint32_t color,
- boost::uint8_t alpha, float blurX, float blurY, float strength,
- boost::uint8_t quality, bool inner, bool knockout, bool hideObject) :
+ DropShadowFilter(float distance, float angle, std::uint32_t color,
+ std::uint8_t alpha, float blurX, float blurY, float strength,
+ std::uint8_t quality, bool inner, bool knockout, bool hideObject) :
m_distance(distance), m_angle(angle), m_color(color),
m_alpha(alpha), m_blurX(blurX), m_blurY(blurY), m_strength(strength),
m_quality(quality), m_inner(inner), m_knockout(knockout),
@@ -216,12 +217,12 @@ public:
float m_distance; // Distance of the filter in pixels.
float m_angle; // Angle of the filter.
- boost::uint32_t m_color; // RGB color.
- boost::uint8_t m_alpha; // Alpha strength, as a percentage(?)
+ std::uint32_t m_color; // RGB color.
+ std::uint8_t m_alpha; // Alpha strength, as a percentage(?)
float m_blurX; // horizontal blur
float m_blurY; // vertical blur
float m_strength; // How strong is the filter.
- boost::uint8_t m_quality; // How many times to apply the filter.
+ std::uint8_t m_quality; // How many times to apply the filter.
bool m_inner; // Is this an inner shadow?
bool m_knockout; // If true, render only the filter effect.
bool m_hideObject; // Does this hide the object?
@@ -243,20 +244,20 @@ public:
m_inner(false), m_knockout(false)
{}
- GlowFilter(boost::uint32_t color,
- boost::uint8_t alpha, float blurX, float blurY, float strength,
- boost::uint8_t quality, bool inner, bool knockout) :
+ GlowFilter(std::uint32_t color,
+ std::uint8_t alpha, float blurX, float blurY, float strength,
+ std::uint8_t quality, bool inner, bool knockout) :
m_color(color),
m_alpha(alpha), m_blurX(blurX), m_blurY(blurY), m_strength(strength),
m_quality(quality), m_inner(inner), m_knockout(knockout)
{}
- boost::uint32_t m_color; // RGB color.
- boost::uint8_t m_alpha; // Alpha strength, as a percentage(?)
+ std::uint32_t m_color; // RGB color.
+ std::uint8_t m_alpha; // Alpha strength, as a percentage(?)
float m_blurX; // horizontal blur
float m_blurY; // vertical blur
float m_strength; // How strong is the filter.
- boost::uint8_t m_quality; // How many times to apply the filter.
+ std::uint8_t m_quality; // How many times to apply the filter.
bool m_inner; // Is this an inner shadow?
bool m_knockout; // If true, render only the filter effect.
};
@@ -285,26 +286,26 @@ public:
{}
GradientBevelFilter(float distance, float angle,
- std::vector<boost::uint32_t> colors,
- std::vector<boost::uint8_t> alphas,
- std::vector<boost::uint8_t> ratios,
+ std::vector<std::uint32_t> colors,
+ std::vector<std::uint8_t> alphas,
+ std::vector<std::uint8_t> ratios,
float blurX, float blurY, float strength,
- boost::uint8_t quality, glow_types type, bool knockout) :
+ std::uint8_t quality, glow_types type, bool knockout) :
m_distance(distance), m_angle(angle),
- m_colors(colors), m_alphas(alphas), m_ratios(ratios),
+ m_colors(std::move(colors)), m_alphas(std::move(alphas)), m_ratios(std::move(ratios)),
m_blurX(blurX), m_blurY(blurY), m_strength(strength),
m_quality(quality), m_type(type), m_knockout(knockout)
{}
float m_distance; // Distance of the filter in pixels.
float m_angle; // Angle of the filter.
- std::vector<boost::uint32_t> m_colors; // Colors of the gradients.
- std::vector<boost::uint8_t> m_alphas; // Alphas of the gradients.
- std::vector<boost::uint8_t> m_ratios; // Ratios of the gradients.
+ std::vector<std::uint32_t> m_colors; // Colors of the gradients.
+ std::vector<std::uint8_t> m_alphas; // Alphas of the gradients.
+ std::vector<std::uint8_t> m_ratios; // Ratios of the gradients.
float m_blurX; // horizontal blur
float m_blurY; // vertical blur
float m_strength; // How strong is the filter.
- boost::uint8_t m_quality; // How many times to apply the filter.
+ std::uint8_t m_quality; // How many times to apply the filter.
glow_types m_type; // What type of effect.
bool m_knockout; // If true, render only the filter effect.
};
@@ -332,25 +333,25 @@ public:
{}
GradientGlowFilter(float distance, float angle,
- std::vector<boost::uint32_t> colors,
- std::vector<boost::uint8_t> alphas,
- std::vector<boost::uint8_t> ratios,
+ std::vector<std::uint32_t> colors,
+ std::vector<std::uint8_t> alphas,
+ std::vector<std::uint8_t> ratios,
float blurX, float blurY, float strength,
- boost::uint8_t quality, glow_types type, bool knockout) :
- m_distance(distance), m_angle(angle), m_colors(colors), m_alphas(alphas),
- m_ratios(ratios), m_blurX(blurX), m_blurY(blurY), m_strength(strength),
+ std::uint8_t quality, glow_types type, bool knockout) :
+ m_distance(distance), m_angle(angle), m_colors(std::move(colors)), m_alphas(std::move(alphas)),
+ m_ratios(std::move(ratios)), m_blurX(blurX), m_blurY(blurY), m_strength(strength),
m_quality(quality), m_type(type), m_knockout(knockout)
{}
float m_distance; // Distance of the filter in pixels.
float m_angle; // Angle of the filter.
- std::vector<boost::uint32_t> m_colors; // Colors of the gradients.
- std::vector<boost::uint8_t> m_alphas; // Alphas of the gradients.
- std::vector<boost::uint8_t> m_ratios; // Ratios of the gradients.
+ std::vector<std::uint32_t> m_colors; // Colors of the gradients.
+ std::vector<std::uint8_t> m_alphas; // Alphas of the gradients.
+ std::vector<std::uint8_t> m_ratios; // Ratios of the gradients.
float m_blurX; // horizontal blur
float m_blurY; // vertical blur
float m_strength; // How strong is the filter.
- boost::uint8_t m_quality; // How many times to apply the filter.
+ std::uint8_t m_quality; // How many times to apply the filter.
glow_types m_type; // What type of effect.
bool m_knockout; // If true, render only the filter effect.
};
diff --git a/libcore/Font.cpp b/libcore/Font.cpp
index 91767bf..45c88e0 100644
--- a/libcore/Font.cpp
+++ b/libcore/Font.cpp
@@ -44,7 +44,7 @@ class CodeLookup
public:
CodeLookup(const int glyph) : _glyph(glyph) {}
- bool operator()(const std::pair<const boost::uint16_t, int>& p) const {
+ bool operator()(const std::pair<const std::uint16_t, int>& p) const {
return p.second == _glyph;
}
@@ -59,21 +59,14 @@ Font::GlyphInfo::GlyphInfo()
advance(0)
{}
-Font::GlyphInfo::GlyphInfo(std::auto_ptr<SWF::ShapeRecord> glyph,
+Font::GlyphInfo::GlyphInfo(std::unique_ptr<SWF::ShapeRecord> the_glyph,
float advance)
:
- glyph(glyph.release()),
+ glyph(std::move(the_glyph)),
advance(advance)
{}
-Font::GlyphInfo::GlyphInfo(const GlyphInfo& o)
- :
- glyph(o.glyph),
- advance(o.advance)
-{}
-
-
-Font::Font(std::auto_ptr<SWF::DefineFontTag> ft)
+Font::Font(std::unique_ptr<SWF::DefineFontTag> ft)
:
_fontTag(ft.release()),
_name(_fontTag->name()),
@@ -88,10 +81,9 @@ Font::Font(std::auto_ptr<SWF::DefineFontTag> ft)
}
}
-Font::Font(const std::string& name, bool bold, bool italic)
+Font::Font(std::string name, bool bold, bool italic)
:
- _fontTag(0),
- _name(name),
+ _name(std::move(name)),
_unicodeChars(false),
_shiftJISChars(false),
_ansiChars(true),
@@ -118,7 +110,7 @@ Font::get_glyph(int index, bool embedded) const
}
// TODO: should we log an error here ?
- return 0;
+ return nullptr;
}
void
@@ -149,7 +141,7 @@ Font::glyphCount() const
void
-Font::setFlags(boost::uint8_t flags)
+Font::setFlags(std::uint8_t flags)
{
_shiftJISChars = flags & (1 << 6);
_unicodeChars = flags & (1 << 5);
@@ -160,7 +152,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(
@@ -184,7 +176,7 @@ Font::setName(const std::string& name)
}
-boost::uint16_t
+std::uint16_t
Font::codeTableLookup(int glyph, bool embedded) const
{
const CodeTable& ctable = (embedded && _embeddedCodeTable) ?
@@ -206,7 +198,7 @@ Font::codeTableLookup(int glyph, bool embedded) const
}
int
-Font::get_glyph_index(boost::uint16_t code, bool embedded) const
+Font::get_glyph_index(std::uint16_t code, bool embedded) const
{
const CodeTable& ctable = (embedded && _embeddedCodeTable) ?
*_embeddedCodeTable : _deviceCodeTable;
@@ -282,7 +274,7 @@ Font::unitsPerEM(bool embed) const
}
int
-Font::add_os_glyph(boost::uint16_t code)
+Font::add_os_glyph(std::uint16_t code)
{
FreetypeGlyphsProvider* ft = ftProvider();
if (!ft) return -1;
@@ -292,7 +284,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 +299,7 @@ Font::add_os_glyph(boost::uint16_t code)
// Add the new glyph id
_deviceCodeTable[code] = newOffset;
- _deviceGlyphTable.push_back(GlyphInfo(sh, advance));
+ _deviceGlyphTable.emplace_back(std::move(sh), advance);
return newOffset;
}
@@ -331,14 +323,14 @@ Font::ftProvider() const
if (_name.empty()) {
log_error(_("No name associated with this font, can't use device "
"fonts (should I use a default one?)"));
- return 0;
+ return nullptr;
}
_ftProvider = FreetypeGlyphsProvider::createFace(_name, _bold, _italic);
if (!_ftProvider.get()) {
log_error(_("Could not create a freetype face %s"), _name);
- return 0;
+ return nullptr;
}
return _ftProvider.get();
diff --git a/libcore/Font.h b/libcore/Font.h
index a2314ed..f69bd4b 100644
--- a/libcore/Font.h
+++ b/libcore/Font.h
@@ -25,9 +25,8 @@
#define GNASH_FONT_H
#include <string>
-#include <boost/scoped_ptr.hpp>
-#include <boost/shared_ptr.hpp>
-#include <boost/cstdint.hpp>
+#include <memory>
+#include <cstdint>
#include <memory>
#include <vector>
#include <map>
@@ -51,8 +50,8 @@ namespace gnash {
class kerning_pair
{
public:
- boost::uint16_t m_char0;
- boost::uint16_t m_char1;
+ std::uint16_t m_char0;
+ std::uint16_t m_char1;
bool operator==(const kerning_pair& k) const
{
@@ -92,9 +91,9 @@ class Font : public ref_counted
public:
// This table maps from Unicode DisplayObject number to glyph index.
- typedef std::map<boost::uint16_t, int> CodeTable;
+ typedef std::map<std::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
//
@@ -106,11 +105,11 @@ public:
///
/// @param italic
/// Whether to use the italic variant of the font.
- Font(const std::string& name, bool bold = false, bool italic = false);
+ Font(std::string name, bool bold = false, bool italic = false);
~Font();
- boost::uint16_t codeTableLookup(int glyph, bool embedded) const;
+ std::uint16_t codeTableLookup(int glyph, bool embedded) const;
/// Return true if this font matches given name and flags
//
@@ -159,7 +158,7 @@ public:
/// positive index to use in subsequent calls to other
/// glyph-index-based methods.
///
- int get_glyph_index(boost::uint16_t code, bool embedded) const;
+ int get_glyph_index(std::uint16_t code, bool embedded) const;
/// Return the advance value for the given glyph index
//
@@ -233,11 +232,9 @@ public:
/// Construct default textured glyph
//
/// Takes ownership of the SWF::ShapeRecord.
- GlyphInfo(std::auto_ptr<SWF::ShapeRecord> glyph, float advance);
-
- GlyphInfo(const GlyphInfo& o);
+ GlyphInfo(std::unique_ptr<SWF::ShapeRecord> glyph, float advance);
- boost::shared_ptr<SWF::ShapeRecord> glyph;
+ std::unique_ptr<SWF::ShapeRecord> glyph;
float advance;
};
@@ -259,12 +256,12 @@ public:
/// Set the language and encoding flags of the font.
//
/// This is used by SWF::DefineFontInfoTag
- void setFlags(boost::uint8_t flags);
+ void setFlags(std::uint8_t flags);
/// 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;
@@ -285,10 +282,10 @@ private:
///
/// @return index of the newly added glyph, or -1 on error.
///
- int add_os_glyph(boost::uint16_t code);
+ int add_os_glyph(std::uint16_t code);
/// If we were constructed from a definition, this is not NULL.
- boost::scoped_ptr<SWF::DefineFontTag> _fontTag;
+ std::unique_ptr<SWF::DefineFontTag> _fontTag;
// Device glyphs
GlyphInfoRecords _deviceGlyphTable;
@@ -314,7 +311,7 @@ private:
/// It is a shared_ptr to avoid changing an original
/// DefineFont2Tag, while allowing this class to take ownership
/// of CodeTables from a DefineFontInfo tag.
- boost::shared_ptr<const CodeTable> _embeddedCodeTable;
+ std::shared_ptr<const CodeTable> _embeddedCodeTable;
/// Code to index table for device glyphs
CodeTable _deviceCodeTable;
@@ -322,7 +319,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..63c002f 100644
--- a/libcore/FreetypeGlyphsProvider.cpp
+++ b/libcore/FreetypeGlyphsProvider.cpp
@@ -24,8 +24,8 @@
#include "FreetypeGlyphsProvider.h"
#include <string>
-#include <memory> // for auto_ptr
-#include <boost/cstdint.hpp>
+#include <memory> // for unique_ptr
+#include <cstdint>
#include <boost/format.hpp>
#include "GnashException.h"
@@ -93,7 +93,7 @@ public:
:
_shape(sh),
_scale(scale),
- _currPath(0),
+ _currPath(nullptr),
_x(0),
_y(0)
{
@@ -156,8 +156,8 @@ private:
#ifdef DEBUG_OUTLINE_DECOMPOSITION
log_debug("moveTo: %ld,%ld", to->x, to->y);
#endif
- _x = static_cast<boost::int32_t>(to->x * _scale);
- _y = - static_cast<boost::int32_t>(to->y * _scale);
+ _x = static_cast<std::int32_t>(to->x * _scale);
+ _y = - static_cast<std::int32_t>(to->y * _scale);
_currPath->close();
_subshape.addPath(Path(_x, _y, 1, 0, 0));
_currPath = &_subshape.currentPath();
@@ -169,8 +169,8 @@ private:
#ifdef DEBUG_OUTLINE_DECOMPOSITION
log_debug("lineTo: %ld,%ld", to->x, to->y);
#endif
- _x = static_cast<boost::int32_t>(to->x * _scale);
- _y = - static_cast<boost::int32_t>(to->y * _scale);
+ _x = static_cast<std::int32_t>(to->x * _scale);
+ _y = - static_cast<std::int32_t>(to->y * _scale);
_currPath->drawLineTo(_x, _y);
expandBounds(_x, _y);
return 0;
@@ -181,10 +181,10 @@ private:
#ifdef DEBUG_OUTLINE_DECOMPOSITION
log_debug("conicTo: %ld,%ld %ld,%ld", ctrl->x, ctrl->y, to->x, to->y);
#endif
- boost::int32_t x1 = static_cast<boost::int32_t>(ctrl->x * _scale);
- boost::int32_t y1 = static_cast<boost::int32_t>(ctrl->y * _scale);
- _x = static_cast<boost::int32_t>(to->x * _scale);
- _y = - static_cast<boost::int32_t>(to->y * _scale);
+ std::int32_t x1 = static_cast<std::int32_t>(ctrl->x * _scale);
+ std::int32_t y1 = static_cast<std::int32_t>(ctrl->y * _scale);
+ _x = static_cast<std::int32_t>(to->x * _scale);
+ _y = - static_cast<std::int32_t>(to->y * _scale);
_currPath->drawCurveTo(x1, -y1, _x, _y);
expandBounds(x1, -y1, _x, _y);
return 0;
@@ -199,10 +199,10 @@ private:
#endif
float x = ctrl1->x + ( (ctrl2->x - ctrl1->x) * 0.5 );
float y = ctrl1->y + ( (ctrl2->y - ctrl1->y) * 0.5 );
- boost::int32_t x1 = static_cast<boost::int32_t>(x * _scale);
- boost::int32_t y1 = static_cast<boost::int32_t>(y * _scale);
- _x = static_cast<boost::int32_t>(to->x * _scale);
- _y = - static_cast<boost::int32_t>(to->y * _scale);
+ std::int32_t x1 = static_cast<std::int32_t>(x * _scale);
+ std::int32_t y1 = static_cast<std::int32_t>(y * _scale);
+ _x = static_cast<std::int32_t>(to->x * _scale);
+ _y = - static_cast<std::int32_t>(to->y * _scale);
_currPath->drawCurveTo(x1, -y1, _x, _y);
expandBounds(x1, -y1, _x, _y);
@@ -235,19 +235,19 @@ private:
Path* _currPath;
- boost::int32_t _x, _y;
+ std::int32_t _x, _y;
};
// statics
-FT_Library FreetypeGlyphsProvider::m_lib = 0;
-boost::mutex FreetypeGlyphsProvider::m_lib_mutex;
+FT_Library FreetypeGlyphsProvider::m_lib = nullptr;
+std::mutex FreetypeGlyphsProvider::m_lib_mutex;
// static private
void
FreetypeGlyphsProvider::init()
{
- boost::mutex::scoped_lock lock(m_lib_mutex);
+ std::lock_guard<std::mutex> lock(m_lib_mutex);
if (m_lib) return;
@@ -303,7 +303,7 @@ FreetypeGlyphsProvider::getFontFilename(const std::string &name,
FcPattern* pat = FcNameParse((const FcChar8*)name.c_str());
- FcConfigSubstitute (0, pat, FcMatchPattern);
+ FcConfigSubstitute (nullptr, pat, FcMatchPattern);
if (italic) {
FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC);
@@ -316,10 +316,10 @@ FreetypeGlyphsProvider::getFontFilename(const std::string &name,
FcDefaultSubstitute (pat);
FcPattern *match;
- match = FcFontMatch (0, pat, &result);
+ match = FcFontMatch (nullptr, pat, &result);
FcPatternDestroy (pat);
- FcFontSet* fs = NULL;
+ FcFontSet* fs = nullptr;
if (match) {
fs = FcFontSetCreate ();
FcFontSetAdd (fs, match);
@@ -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
@@ -422,10 +422,10 @@ FreetypeGlyphsProvider::ascent() const
FreetypeGlyphsProvider::FreetypeGlyphsProvider(const std::string& name,
bool bold, bool italic)
:
- _face(NULL)
+ _face(nullptr)
{
- if (m_lib == NULL)
+ if (m_lib == nullptr)
{
init();
}
@@ -480,10 +480,10 @@ FreetypeGlyphsProvider::FreetypeGlyphsProvider(const std::string&, bool, bool)
#endif // ndef USE_FREETYPE
#ifdef USE_FREETYPE
-std::auto_ptr<SWF::ShapeRecord>
-FreetypeGlyphsProvider::getGlyph(boost::uint16_t code, float& advance)
+std::unique_ptr<SWF::ShapeRecord>
+FreetypeGlyphsProvider::getGlyph(std::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,8 +548,8 @@ FreetypeGlyphsProvider::getGlyph(boost::uint16_t code, float& advance)
}
#else // ndef(USE_FREETYPE)
-std::auto_ptr<SWF::ShapeRecord>
-FreetypeGlyphsProvider::getGlyph(boost::uint16_t, float& advance)
+std::unique_ptr<SWF::ShapeRecord>
+FreetypeGlyphsProvider::getGlyph(std::uint16_t, float& advance)
{
abort(); // should never be called...
}
diff --git a/libcore/FreetypeGlyphsProvider.h b/libcore/FreetypeGlyphsProvider.h
index 6881584..a6f047b 100644
--- a/libcore/FreetypeGlyphsProvider.h
+++ b/libcore/FreetypeGlyphsProvider.h
@@ -21,9 +21,9 @@
#define GNASH_FREETYPE_H
#include <string>
-#include <memory> // for auto_ptr
-#include <boost/thread/mutex.hpp>
-#include <boost/cstdint.hpp>
+#include <memory> // for unique_ptr
+#include <mutex>
+#include <cstdint>
#ifdef USE_FREETYPE
# include <ft2build.h>
@@ -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(std::uint16_t code,
float& advance);
/// Return the font's ascender in terms of its EM own square.
@@ -161,7 +161,7 @@ private:
static void close();
/// Mutex protecting FreeType library (for initialization basically)
- static boost::mutex m_lib_mutex;
+ static std::mutex m_lib_mutex;
/// FreeType library
static FT_Library m_lib;
diff --git a/libcore/Function.cpp b/libcore/Function.cpp
index 63954a2..903d9ed 100644
--- a/libcore/Function.cpp
+++ b/libcore/Function.cpp
@@ -34,13 +34,13 @@
namespace gnash {
Function::Function(const action_buffer& ab, as_environment& env,
- size_t start, const ScopeStack& scopeStack)
+ size_t start, ScopeStack scopeStack)
:
UserFunction(getGlobal(env)),
_env(env),
_pool(getVM(env).getConstantPool()),
_action_buffer(ab),
- _scopeStack(scopeStack),
+ _scopeStack(std::move(scopeStack)),
_startPC(start),
_length(0)
{
@@ -72,7 +72,7 @@ Function::call(const fn_call& fn)
// Extract caller before pushing ourself on the call stack
VM& vm = getVM(fn);
- as_object* caller = vm.calling() ? &vm.currentCall().function() : 0;
+ as_object* caller = vm.calling() ? &vm.currentCall().function() : nullptr;
// Set up local stack frame, for parameters and locals.
FrameGuard guard(getVM(fn), *this);
@@ -127,7 +127,7 @@ Function::call(const fn_call& fn)
setLocal(cf, NSV::PROP_THIS, fn.this_ptr ? fn.this_ptr : as_value());
as_object* super = fn.super ? fn.super :
- fn.this_ptr ? fn.this_ptr->get_super() : 0;
+ fn.this_ptr ? fn.this_ptr->get_super() : nullptr;
// Add 'super' (SWF6+ only)
if (super && swfversion > 5) {
diff --git a/libcore/Function.h b/libcore/Function.h
index 476e006..77812d9 100644
--- a/libcore/Function.h
+++ b/libcore/Function.h
@@ -72,7 +72,7 @@ public:
/// action_buffer starting at offset 'start'
//
Function(const action_buffer& ab, as_environment& env, size_t start,
- const ScopeStack& with_stack);
+ ScopeStack with_stack);
virtual ~Function() {}
@@ -95,7 +95,7 @@ public:
/// Get the number of registers required for function execution.
//
/// For ordinary Functions this is always 0.
- virtual boost::uint8_t registers() const {
+ virtual std::uint8_t registers() const {
return 0;
}
@@ -109,8 +109,8 @@ public:
//
/// @param reg The register for the argument.
/// @param name The name of the argument.
- void add_arg(boost::uint8_t reg, const ObjectURI& name) {
- _args.push_back(Argument(reg, name));
+ void add_arg(std::uint8_t reg, const ObjectURI& name) {
+ _args.emplace_back(reg, name);
}
/// Set the length in bytes of the function code.
@@ -130,8 +130,8 @@ protected:
struct Argument
{
- Argument(boost::uint8_t r, const ObjectURI& n) : reg(r), name(n) {}
- boost::uint8_t reg;
+ Argument(std::uint8_t r, ObjectURI n) : reg(r), name(std::move(n)) {}
+ std::uint8_t reg;
ObjectURI name;
};
diff --git a/libcore/Function2.cpp b/libcore/Function2.cpp
index 2e1c03b..54be093 100644
--- a/libcore/Function2.cpp
+++ b/libcore/Function2.cpp
@@ -48,7 +48,7 @@ Function2::call(const fn_call& fn)
// Extract caller before pushing ourself on the call stack
VM& vm = getVM(fn);
- as_object* caller = vm.calling() ? &vm.currentCall().function() : 0;
+ as_object* caller = vm.calling() ? &vm.currentCall().function() : nullptr;
// Set up local stack frame, for parameters and locals.
FrameGuard guard(getVM(fn), *this);
@@ -147,7 +147,7 @@ Function2::call(const fn_call& fn)
// Put 'super' in a register (SWF6+ only).
// TOCHECK: should we still set it if not available ?
as_object* super = fn.super ? fn.super :
- fn.this_ptr ? fn.this_ptr->get_super() : 0;
+ fn.this_ptr ? fn.this_ptr->get_super() : nullptr;
if (super && (_function2Flags & PRELOAD_SUPER)) {
cf.setLocalRegister(current_reg, super);
diff --git a/libcore/Function2.h b/libcore/Function2.h
index 2b2160f..5466f80 100644
--- a/libcore/Function2.h
+++ b/libcore/Function2.h
@@ -79,15 +79,15 @@ public:
virtual ~Function2() {}
/// Return the number of registers to allocate for this function.
- virtual boost::uint8_t registers() const {
+ virtual std::uint8_t registers() const {
return _registerCount;
}
- void setRegisterCount(boost::uint8_t ct) {
+ void setRegisterCount(std::uint8_t ct) {
_registerCount = ct;
}
- void setFlags(boost::uint16_t flags) {
+ void setFlags(std::uint16_t flags) {
_function2Flags = flags;
}
@@ -97,10 +97,10 @@ public:
private:
/// The number of registers required.
- boost::uint8_t _registerCount;
+ std::uint8_t _registerCount;
/// Used to control implicit arg register assignments
- boost::uint16_t _function2Flags;
+ std::uint16_t _function2Flags;
};
diff --git a/libcore/Geometry.cpp b/libcore/Geometry.cpp
index d8cb7e3..c284e29 100644
--- a/libcore/Geometry.cpp
+++ b/libcore/Geometry.cpp
@@ -21,7 +21,7 @@
#include <cmath>
#include <algorithm>
-#include <boost/cstdint.hpp>
+#include <cstdint>
#include "log.h"
#include "LineStyle.h"
@@ -123,8 +123,8 @@ int curve_x_crossings(const T x0, const T y0, const T x1, const T y1,
bool
pointTest(const std::vector<Path>& paths,
- const std::vector<LineStyle>& lineStyles, boost::int32_t x,
- boost::int32_t y, const SWFMatrix& wm)
+ const std::vector<LineStyle>& lineStyles, std::int32_t x,
+ std::int32_t y, const SWFMatrix& wm)
{
/*
diff --git a/libcore/Geometry.h b/libcore/Geometry.h
index 5ec7ca6..f421ed5 100644
--- a/libcore/Geometry.h
+++ b/libcore/Geometry.h
@@ -49,26 +49,26 @@ public:
point cp; // control point, TWIPS
point ap; // anchor point, TWIPS
- Edge()
+ constexpr Edge()
:
cp(0, 0),
ap(0, 0)
{}
- Edge(boost::int32_t cx, boost::int32_t cy, boost::int32_t ax,
- boost::int32_t ay)
+ constexpr Edge(std::int32_t cx, std::int32_t cy, std::int32_t ax,
+ std::int32_t ay)
:
cp(cx, cy),
ap(ax, ay)
{}
- Edge(const Edge& from)
+ constexpr Edge(const Edge& from)
:
cp(from.cp),
ap(from.ap)
{}
- Edge(const point& ncp, const point& nap)
+ constexpr Edge(const point& ncp, const point& nap)
:
cp(ncp),
ap(nap)
@@ -90,16 +90,16 @@ public:
static double
squareDistancePtSeg(const point& p, const point& A, const point& B)
{
- boost::int32_t dx = B.x - A.x;
- boost::int32_t dy = B.y - A.y;
+ std::int32_t dx = B.x - A.x;
+ std::int32_t dy = B.y - A.y;
if ( dx == 0 && dy == 0 )
{
return p.squareDistance(A);
}
- boost::int32_t pdx = p.x - A.x;
- boost::int32_t pdy = p.y - A.y;
+ std::int32_t pdx = p.x - A.x;
+ std::int32_t pdy = p.y - A.y;
double u = (static_cast<double>(pdx) * dx + static_cast<double>(pdy) * dy ) /
(static_cast<double>(dx)*dx + static_cast<double>(dy)*dy );
@@ -152,7 +152,7 @@ public:
/// @param p The point we want to compute distance from
/// @param t the step factor between 0 and 1
///
- static boost::int64_t squareDistancePtCurve(const point& A,
+ static std::int64_t squareDistancePtCurve(const point& A,
const point& C,
const point& B,
const point& p, float t)
@@ -188,9 +188,6 @@ public:
/// Default constructor
//
- /// @param newShape
- /// True if this path starts a new subshape
- ///
Path()
{
reset(0, 0, 0, 0, 0);
@@ -225,10 +222,7 @@ public:
/// @param line
/// Line style index for right fill (1-based).
/// Zero means NO style.
- ///
- /// @param newShape
- /// True if this path starts a new subshape
- Path(boost::int32_t ax, boost::int32_t ay,
+ Path(std::int32_t ax, std::int32_t ay,
unsigned fill0, unsigned fill1, unsigned line)
{
reset(ax, ay, fill0, fill1, line);
@@ -251,7 +245,7 @@ public:
/// @param line
/// Line style index for right fill
///
- void reset(boost::int32_t ax, boost::int32_t ay,
+ void reset(std::int32_t ax, std::int32_t ay,
unsigned fill0, unsigned fill1, unsigned line)
// Reset all our members to the given values, and clear our edge list.
{
@@ -328,9 +322,9 @@ public:
/// Y coordinate in TWIPS
///
void
- drawLineTo(boost::int32_t dx, boost::int32_t dy)
+ drawLineTo(std::int32_t dx, std::int32_t dy)
{
- m_edges.push_back(Edge(dx, dy, dx, dy));
+ m_edges.emplace_back(dx, dy, dx, dy);
}
/// Draw a curve.
@@ -351,9 +345,9 @@ public:
/// Anchor point's Y ordinate.
///
void
- drawCurveTo(boost::int32_t cdx, boost::int32_t cdy, boost::int32_t adx, boost::int32_t ady)
+ drawCurveTo(std::int32_t cdx, std::int32_t cdy, std::int32_t adx, std::int32_t ady)
{
- m_edges.push_back(Edge(cdx, cdy, adx, ady));
+ m_edges.emplace_back(cdx, cdy, adx, ady);
}
/// Remove all edges and reset style infomation
@@ -382,8 +376,7 @@ public:
const Edge& lastedge = m_edges.back();
if ( lastedge.ap != ap )
{
- Edge newedge(ap, ap);
- m_edges.push_back(newedge);
+ m_edges.emplace_back(ap, ap);
}
}
@@ -543,8 +536,8 @@ namespace geometry
{
bool pointTest(const std::vector<Path>& paths,
- const std::vector<LineStyle>& lineStyles, boost::int32_t x,
- boost::int32_t y, const SWFMatrix& wm);
+ const std::vector<LineStyle>& lineStyles, std::int32_t x,
+ std::int32_t y, const SWFMatrix& wm);
} // namespace geometry
diff --git a/libcore/HostInterface.h b/libcore/HostInterface.h
index d305262..feeead7 100644
--- a/libcore/HostInterface.h
+++ b/libcore/HostInterface.h
@@ -66,11 +66,11 @@ namespace gnash {
class CustomMessage
{
public:
- explicit CustomMessage(const std::string& s,
- const boost::any& arg = boost::blank())
+ explicit CustomMessage(std::string s,
+ boost::any arg = boost::blank())
:
- _name(s),
- _arg(arg)
+ _name(std::move(s)),
+ _arg(std::move(arg))
{}
const std::string& name() const { return _name; }
const boost::any& arg() const { return _arg; }
@@ -181,10 +181,10 @@ public:
EXTERNALINTERFACE_ZOOM
};
- explicit HostMessage(KnownEvent e, const boost::any& arg = boost::blank())
+ explicit HostMessage(KnownEvent e, boost::any arg = boost::blank())
:
_event(e),
- _arg(arg)
+ _arg(std::move(arg))
{}
KnownEvent event() const { return _event; }
diff --git a/libcore/InteractiveObject.h b/libcore/InteractiveObject.h
index c9cdfd7..ff46e38 100644
--- a/libcore/InteractiveObject.h
+++ b/libcore/InteractiveObject.h
@@ -78,7 +78,7 @@ public:
/// DisplayObject.
virtual StaticText* getStaticText(std::vector<const SWF::TextRecord*>&,
size_t&) {
- return 0;
+ return nullptr;
}
/// Returns local, untransformed bounds of this DisplayObject in TWIPS
@@ -112,8 +112,8 @@ public:
/// @param y
/// Y ordinate of the pointer, in parent's coordiante space.
///
- virtual InteractiveObject* topmostMouseEntity(boost::int32_t /*x*/,
- boost::int32_t /*y*/) = 0;
+ virtual InteractiveObject* topmostMouseEntity(std::int32_t /*x*/,
+ std::int32_t /*y*/) = 0;
/// Called whenever a mouse event affects this InteractiveObject.
//
@@ -129,7 +129,7 @@ public:
/// override and invokes pointInBounds().
///
///
- virtual bool pointInShape(boost::int32_t x, boost::int32_t y) const
+ virtual bool pointInShape(std::int32_t x, std::int32_t y) const
{
log_error("Character %s did not override pointInShape() - "
"using pointInBounds() instead", typeid(*this).name());
diff --git a/libcore/LineStyle.cpp b/libcore/LineStyle.cpp
index e630ad5..eecbe36 100644
--- a/libcore/LineStyle.cpp
+++ b/libcore/LineStyle.cpp
@@ -146,8 +146,8 @@ LineStyle::read(SWFStream& in, SWF::TagType t, movie_definition& md,
in.ensureBytes(2+2);
m_width = in.read_u16();
- const boost::uint8_t flags1 = in.read_u8();
- const boost::uint8_t flags2 = in.read_u8();
+ const std::uint8_t flags1 = in.read_u8();
+ const std::uint8_t flags2 = in.read_u8();
_startCapStyle = (CapStyle)((flags1 & 0xC0) >> 6);
_joinStyle = (JoinStyle)((flags1 & 0x30) >> 4);
@@ -178,7 +178,7 @@ LineStyle::read(SWFStream& in, SWF::TagType t, movie_definition& md,
void
LineStyle::set_lerp(const LineStyle& ls1, const LineStyle& ls2, float ratio)
{
- m_width = static_cast<boost::uint16_t>(
+ m_width = static_cast<std::uint16_t>(
frnd(lerp<float>(ls1.getThickness(), ls2.getThickness(), ratio)));
m_color = lerp(ls1.get_color(), ls2.get_color(), ratio);
if ( ls1._scaleVertically != ls2._scaleVertically )
diff --git a/libcore/LineStyle.h b/libcore/LineStyle.h
index 61e8e1d..a45f26b 100644
--- a/libcore/LineStyle.h
+++ b/libcore/LineStyle.h
@@ -24,6 +24,7 @@
#include "RGBA.h"
#include "SWF.h"
+#include <utility>
namespace gnash {
class SWFStream;
@@ -66,7 +67,7 @@ public:
/// @param endCapStyle
/// @param joinStyle
/// @param miterLimitFactor
- LineStyle(boost::uint16_t width, const rgba& color,
+ LineStyle(std::uint16_t width, rgba color,
bool scaleThicknessVertically=true,
bool scaleThicknessHorizontally=true,
bool pixelHinting=false,
@@ -78,7 +79,7 @@ public:
)
:
m_width(width),
- m_color(color),
+ m_color(std::move(color)),
_scaleVertically(scaleThicknessVertically),
_scaleHorizontally(scaleThicknessHorizontally),
_pixelHinting(pixelHinting),
@@ -106,7 +107,7 @@ public:
const RunResources& r, LineStyle *pOther);
/// Return thickness of the line, in TWIPS
- boost::uint16_t getThickness() const {
+ std::uint16_t getThickness() const {
return m_width;
}
@@ -166,7 +167,7 @@ public:
private:
/// Width in twips.
- boost::uint16_t m_width;
+ std::uint16_t m_width;
rgba m_color;
diff --git a/libcore/LoadVariablesThread.cpp b/libcore/LoadVariablesThread.cpp
index 4229168..2b1ef3a 100644
--- a/libcore/LoadVariablesThread.cpp
+++ b/libcore/LoadVariablesThread.cpp
@@ -1,4 +1,4 @@
-//
+//
// Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
// Free Software Foundation, Inc
//
@@ -25,172 +25,145 @@
#include "StreamProvider.h"
#include <string>
-#include <boost/scoped_array.hpp>
//#define DEBUG_LOAD_VARIABLES 1
namespace gnash {
-void
-LoadVariablesThread::completeLoad()
+// static
+LoadVariablesThread::ValuesMap
+LoadVariablesThread::completeLoad(IOChannel* varstream,
+ std::atomic<bool>& canceled)
{
+ std::unique_ptr<IOChannel> stream(varstream);
#ifdef DEBUG_LOAD_VARIABLES
log_debug("completeLoad called");
#endif
+ ValuesMap parseResult;
+ int bytesLoaded = 0;
+ int bytesTotal = stream->size();
- // TODO: how to set _bytesTotal ?
-
- // this is going to override any previous setting,
- // better do this inside a subclass (in a separate thread)
- _bytesLoaded = 0;
- _bytesTotal = _stream->size();
+ std::string toparse;
- std::string toparse;
-
- const size_t chunkSize = 1024;
- boost::scoped_array<char> buf(new char[chunkSize]);
- unsigned int parsedLines = 0;
- // TODO: use read_string ?
- while ( size_t bytesRead = _stream->read(buf.get(), chunkSize) )
- {
+ const size_t chunkSize = 1024;
+ std::unique_ptr<char[]> buf(new char[chunkSize]);
+ unsigned int parsedLines = 0;
+ // TODO: use read_string ?
+ while ( size_t bytesRead = stream->read(buf.get(), chunkSize) ) {
#ifdef DEBUG_LOAD_VARIABLES
- log_debug("Read %u bytes", bytesRead);
+ log_debug("Read %u bytes", bytesRead);
#endif
- if ( _bytesLoaded )
- {
- std::string chunk(buf.get(), bytesRead);
- toparse += chunk;
- }
- else
- {
- size_t dataSize = bytesRead;
- utf8::TextEncoding encoding;
- char* ptr = utf8::stripBOM(buf.get(), dataSize,
- encoding);
- if ( encoding != utf8::encUTF8 &&
- encoding != utf8::encUNSPECIFIED )
- {
- log_unimpl(_("%s to UTF8 conversion in "
- "MovieClip.loadVariables "
- "input parsing"),
- utf8::textEncodingName(encoding));
- }
- std::string chunk(ptr, dataSize);
- toparse += chunk;
- }
+ if ( bytesLoaded ) {
+ std::string chunk(buf.get(), bytesRead);
+ toparse += chunk;
+ } else {
+ size_t dataSize = bytesRead;
+ utf8::TextEncoding encoding;
+ const char* ptr = utf8::stripBOM(buf.get(), dataSize,
+ encoding);
+ if ( encoding != utf8::encUTF8 &&
+ encoding != utf8::encUNSPECIFIED ) {
+ log_unimpl(_("%s to UTF8 conversion in "
+ "MovieClip.loadVariables "
+ "input parsing"),
+ utf8::textEncodingName(encoding));
+ }
+ std::string chunk(ptr, dataSize);
+ toparse += chunk;
+ }
#ifdef DEBUG_LOAD_VARIABLES
- log_debug("toparse: %s", toparse);
+ log_debug("toparse: %s", toparse);
#endif
- // parse remainder
- size_t lastamp = toparse.rfind('&');
- if ( lastamp != std::string::npos )
- {
- std::string parseable = toparse.substr(0, lastamp);
+ // parse remainder
+ size_t lastamp = toparse.rfind('&');
+ if ( lastamp != std::string::npos ) {
+ std::string parseable = toparse.substr(0, lastamp);
#ifdef DEBUG_LOAD_VARIABLES
- log_debug("parseable: %s", parseable);
+ log_debug("parseable: %s", parseable);
#endif
- parse(parseable);
- toparse = toparse.substr(lastamp+1);
+ URL::parse_querystring(toparse, parseResult);
+ toparse = toparse.substr(lastamp+1);
#ifdef DEBUG_LOAD_VARIABLES
- log_debug("toparse nextline: %s", toparse);
+ log_debug("toparse nextline: %s", toparse);
#endif
- ++parsedLines;
- }
-
- _bytesLoaded += bytesRead;
-
- // eof, get out !
- if ( _stream->eof() ) break;
+ ++parsedLines;
+ }
+
+ bytesLoaded += bytesRead;
+
+ // eof, get out !
+ if ( stream->eof() ) {
+ break;
+ }
+
+ if ( canceled.load() ) {
+ log_debug("Cancelling LoadVariables download thread...");
+ stream.reset();
+ return parseResult;
+ }
+ }
+
+ if ( ! toparse.empty() ) {
+ URL::parse_querystring(toparse, parseResult);
+ }
+
+ try {
+ stream->go_to_end();
+ } catch (IOException& ex) {
+ log_error(_("Stream couldn't seek to end: %s"), ex.what());
+ }
- if ( cancelRequested() ) {
- log_debug("Cancelling LoadVariables download thread...");
- _stream.reset();
- return;
- }
- }
+ bytesLoaded = stream->tell();
+ if ( bytesTotal != bytesLoaded ) {
+ log_error(_("Size of 'variables' stream advertised to be %d bytes,"
+ " but turned out to be %d bytes."),
+ bytesTotal, bytesLoaded);
+ }
- if ( ! toparse.empty() ) {
- parse(toparse);
- }
+ //dispatchLoadEvent();
+ canceled = true;
- try {
- _stream->go_to_end();
- }
- catch (IOException& ex) {
- log_error(_("Stream couldn't seek to end: %s"), ex.what());
- }
-
- _bytesLoaded = _stream->tell();
- if ( _bytesTotal != _bytesLoaded ) {
- log_error(_("Size of 'variables' stream advertised to be %d bytes,"
- " but turned out to be %d bytes."),
- _bytesTotal, _bytesLoaded);
- _bytesTotal = _bytesLoaded;
- }
-
- _stream.reset(); // we don't need the IOChannel anymore
-
- //dispatchLoadEvent();
- setCompleted();
+ return parseResult;
}
LoadVariablesThread::LoadVariablesThread(const StreamProvider& sp,
const URL& url, const std::string& postdata)
- :
- _bytesLoaded(0),
- _bytesTotal(0),
- _stream(sp.getStream(url, postdata)),
- _completed(false),
- _canceled(false)
+ : _canceled(false)
{
- if ( ! _stream.get() )
- {
- throw NetworkException();
- }
+ startThread(sp.getStream(url, postdata));
}
LoadVariablesThread::LoadVariablesThread(const StreamProvider& sp,
const URL& url)
- :
- _bytesLoaded(0),
- _bytesTotal(0),
- _stream(sp.getStream(url)),
- _completed(false),
- _canceled(false)
+ : _canceled(false)
{
- if ( ! _stream.get() )
- {
- throw NetworkException();
- }
+ startThread(sp.getStream(url));
}
void
-LoadVariablesThread::cancel()
-{
- boost::mutex::scoped_lock lock(_mutex);
- _canceled = true;
-}
-
-bool
-LoadVariablesThread::cancelRequested()
+LoadVariablesThread::startThread(std::unique_ptr<IOChannel> stream)
{
- boost::mutex::scoped_lock lock(_mutex);
- return _canceled;
+ if (!stream) {
+ throw NetworkException();
+ }
+
+ // Passing IOStream* rather than unique_ptr serves to appease GCC 4.6,
+ // which insists the arguments are CopyConstructible rather than Movable.
+ _vals = std::async(std::launch::async, completeLoad, stream.release(),
+ std::ref(_canceled));
}
LoadVariablesThread::~LoadVariablesThread()
{
- if ( _thread.get() )
- {
- cancel();
- _thread->join();
- _thread.reset();
- }
+ if ( _vals.valid() ) {
+ _canceled = true;
+ _vals.wait();
+ }
}
-} // namespace gnash
+} // namespace gnash
diff --git a/libcore/LoadVariablesThread.h b/libcore/LoadVariablesThread.h
index bd97ff8..0be3985 100644
--- a/libcore/LoadVariablesThread.h
+++ b/libcore/LoadVariablesThread.h
@@ -23,16 +23,14 @@
#include <string>
#include <map>
-#include <boost/scoped_ptr.hpp>
-#include <boost/thread/thread.hpp>
-#include <boost/thread/mutex.hpp>
-#include <boost/bind.hpp>
+#include <future>
+#include <atomic>
-#include "URL.h" // for inlines
namespace gnash {
class StreamProvider;
class IOChannel;
+ class URL;
}
namespace gnash {
@@ -79,134 +77,37 @@ public:
~LoadVariablesThread();
/// Return the name,value map parsed out of the loaded stream
- ValuesMap& getValues()
+ ValuesMap getValues()
{
- return _vals;
+ return _vals.get();
}
- /// Start the load and parse thread
- void process()
- {
- assert(!_thread.get());
- assert(_stream.get());
- _thread.reset(new boost::thread(
- boost::bind(LoadVariablesThread::execLoadingThread, this)));
- }
-
- /// Cancel a download in progress
- //
- /// Locks _mutex
- ///
- void cancel();
-
- /// Return true if loading/parsing is in progress
- bool inProgress()
- {
- // TODO: should we mutex-protect this ?
- return ( _thread.get() != NULL );
- }
-
- /// Mutex-protected inspector for thread completion
- //
- /// Only call this method from the same thread that
- /// also called process(), as the thread will be joined
- /// if it completed.
- ///
bool completed()
{
- boost::mutex::scoped_lock lock(_mutex);
- if ( _completed && _thread.get() )
- {
- _thread->join();
- _thread.reset();
- }
- return _completed;
+ return _canceled;
}
- size_t getBytesLoaded() const
- {
- // TODO: should we mutex-protect this ?
- return _bytesLoaded;
- }
-
- size_t getBytesTotal() const
- {
- // TODO: should we mutex-protect this ?
- return _bytesTotal;
- }
-
-
private:
/// Prevent copy
LoadVariablesThread& operator==(const LoadVariablesThread&);
LoadVariablesThread(const LoadVariablesThread&);
- /// Since I haven't found a way to pass boost::thread
- /// constructor a non-static function, this is here to
- /// workaround that limitation (in either boost or more
- /// likely my own knowledge of it)
- static void execLoadingThread(LoadVariablesThread* ptr)
- {
- //log_debug("LoadVars loading thread started");
- ptr->completeLoad();
- //log_debug("LoadVars loading thread completed");
- }
-
-
- /// Mutex-protected mutator for thread completion
- void setCompleted()
- {
- boost::mutex::scoped_lock lock(_mutex);
- _completed = true;
- //log_debug("Completed");
- }
-
+ void startThread(std::unique_ptr<IOChannel> stream);
/// Load all data from the _stream input.
//
/// This function should be run by a separate thread.
///
- void completeLoad();
-
- /// Parse an url-encoded query string
- //
- /// Variables in the string will be added as properties
- /// of this object.
- ///
- /// @param querystring
- /// An url-encoded query string.
- /// The string will be parsed using URL::parse_querystring
- ///
- /// @return the number of variables found in the string
- ///
- size_t parse(const std::string& str)
- {
- URL::parse_querystring(str, _vals);
- return _vals.size();
- }
-
- /// Check if download cancel was requested
- //
- /// Locks _mutex
- ///
- bool cancelRequested();
-
- size_t _bytesLoaded;
-
- size_t _bytesTotal;
-
- boost::scoped_ptr<IOChannel> _stream;
-
- boost::scoped_ptr<boost::thread> _thread;
-
- ValuesMap _vals;
-
- bool _completed;
+ static ValuesMap completeLoad(IOChannel* stream,
+ std::atomic<bool>& canceled);
- bool _canceled;
+ std::future<ValuesMap> _vals;
- boost::mutex _mutex;
+ /// Indicates either whether cancellation was requested, or whether the
+ /// thread has finished executing code, from the perspective of the
+ /// variables loading thread thread and the main thread respectively.
+ std::atomic<bool> _canceled;
};
} // namespace gnash
diff --git a/libcore/MorphShape.cpp b/libcore/MorphShape.cpp
index f1f67ee..b063dba 100644
--- a/libcore/MorphShape.cpp
+++ b/libcore/MorphShape.cpp
@@ -37,7 +37,7 @@ MorphShape::MorphShape(movie_root& mr, as_object* object,
}
bool
-MorphShape::pointInShape(boost::int32_t x, boost::int32_t y) const
+MorphShape::pointInShape(std::int32_t x, std::int32_t y) const
{
const SWFMatrix wm = getWorldMatrix(*this).invert();
point lp(x, y);
diff --git a/libcore/MorphShape.h b/libcore/MorphShape.h
index 5910333..d010445 100644
--- a/libcore/MorphShape.h
+++ b/libcore/MorphShape.h
@@ -57,7 +57,7 @@ public:
virtual SWFRect getBounds() const;
- virtual bool pointInShape(boost::int32_t x, boost::int32_t y) const;
+ virtual bool pointInShape(std::int32_t x, std::int32_t y) const;
const SWF::ShapeRecord& shape() const {
return _shape;
diff --git a/libcore/MouseButtonState.h b/libcore/MouseButtonState.h
index 94a0f99..87ead62 100644
--- a/libcore/MouseButtonState.h
+++ b/libcore/MouseButtonState.h
@@ -39,8 +39,8 @@ public:
MouseButtonState()
:
- activeEntity(0),
- topmostEntity(0),
+ activeEntity(nullptr),
+ topmostEntity(nullptr),
wasDown(false),
isDown(false),
wasInsideActiveEntity(false)
diff --git a/libcore/Movie.h b/libcore/Movie.h
index 7642095..434a84f 100644
--- a/libcore/Movie.h
+++ b/libcore/Movie.h
@@ -86,7 +86,7 @@ public:
/// @return The DefinitionTag of the requested character or 0
/// if the character has not yet been exported.
virtual SWF::DefinitionTag* exportedCharacter(const std::string& /*s*/) {
- return 0;
+ return nullptr;
}
/// Add a character to the list of known characters
@@ -94,13 +94,13 @@ public:
/// This makes the character known to ActionScript for initialization.
/// Exported characters must both be in the definition's list of exports
/// and added with this function before they are available.
- virtual void addCharacter(boost::uint16_t /*id*/) {}
+ virtual void addCharacter(std::uint16_t /*id*/) {}
/// Attempt to mark a character as initialized.
//
/// The default is to return false. Only a SWFMovie can have a list of
/// characters.
- virtual bool initializeCharacter(boost::uint16_t /*id*/) {
+ virtual bool initializeCharacter(std::uint16_t /*id*/) {
return false;
}
diff --git a/libcore/MovieClip.cpp b/libcore/MovieClip.cpp
index b4d4157..4f6482b 100644
--- a/libcore/MovieClip.cpp
+++ b/libcore/MovieClip.cpp
@@ -28,7 +28,7 @@
#include <string>
#include <algorithm> // for std::swap
#include <boost/algorithm/string/case_conv.hpp>
-#include <boost/bind.hpp>
+#include <functional>
#include "log.h"
#include "movie_definition.h"
@@ -117,10 +117,10 @@ class QueuedEvent : public ExecutableCode
{
public:
- QueuedEvent(MovieClip* nTarget, const event_id& id)
+ QueuedEvent(MovieClip* nTarget, event_id id)
:
ExecutableCode(nTarget),
- _eventId(id)
+ _eventId(std::move(id))
{}
virtual void execute() {
@@ -152,10 +152,10 @@ public:
MouseEntityFinder(point wp, point pp)
:
_highestHiddenDepth(std::numeric_limits<int>::min()),
- _m(NULL),
+ _m(nullptr),
_candidates(),
- _wp(wp),
- _pp(pp),
+ _wp(std::move(wp)),
+ _pp(std::move(pp)),
_checked(false)
{}
@@ -259,7 +259,7 @@ class ShapeContainerFinder
{
public:
- ShapeContainerFinder(boost::int32_t x, boost::int32_t y)
+ ShapeContainerFinder(std::int32_t x, std::int32_t y)
:
_found(false),
_x(x),
@@ -278,8 +278,8 @@ public:
private:
bool _found;
- const boost::int32_t _x;
- const boost::int32_t _y;
+ const std::int32_t _x;
+ const std::int32_t _y;
};
/// Find the first visible DisplayObject whose shape contain the point
@@ -290,7 +290,7 @@ class VisibleShapeContainerFinder
{
public:
- VisibleShapeContainerFinder(boost::int32_t x, boost::int32_t y)
+ VisibleShapeContainerFinder(std::int32_t x, std::int32_t y)
:
_found(false),
_x(x),
@@ -310,8 +310,8 @@ public:
private:
bool _found;
- const boost::int32_t _x;
- const boost::int32_t _y;
+ const std::int32_t _x;
+ const std::int32_t _y;
};
/// Find the first hitable DisplayObject whose shape contain the point
@@ -321,7 +321,7 @@ private:
class HitableShapeContainerFinder
{
public:
- HitableShapeContainerFinder(boost::int32_t x, boost::int32_t y)
+ HitableShapeContainerFinder(std::int32_t x, std::int32_t y)
:
_found(false),
_x(x),
@@ -344,10 +344,10 @@ private:
bool _found;
// x position in twips.
- const boost::int32_t _x;
+ const std::int32_t _x;
// y position in twips.
- const boost::int32_t _y;
+ const std::int32_t _y;
};
/// A DisplayList visitor used to compute its overall bounds.
@@ -384,13 +384,13 @@ struct ReachableMarker
class DropTargetFinder
{
public:
- DropTargetFinder(boost::int32_t x, boost::int32_t y, DisplayObject* dragging)
+ DropTargetFinder(std::int32_t x, std::int32_t y, DisplayObject* dragging)
:
_highestHiddenDepth(std::numeric_limits<int>::min()),
_x(x),
_y(y),
_dragging(dragging),
- _dropch(0),
+ _dropch(nullptr),
_candidates(),
_checked(false)
{}
@@ -464,8 +464,8 @@ private:
///
int _highestHiddenDepth;
- boost::int32_t _x;
- boost::int32_t _y;
+ std::int32_t _x;
+ std::int32_t _y;
DisplayObject* _dragging;
mutable const DisplayObject* _dropch;
@@ -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.
@@ -632,7 +632,7 @@ MovieClip::call_frame_actions(const as_value& frame_spec)
// to properly queue actions back on the global queue.
//
_callingFrameActions = true;
- PoolGuard poolGuard(getVM(*getObject(this)), 0);
+ PoolGuard poolGuard(getVM(*getObject(this)), nullptr);
const PlayList* playlist = _def->getPlaylist(frame_number);
if (playlist) {
PlayList::const_iterator it = playlist->begin();
@@ -666,7 +666,7 @@ MovieClip::duplicateMovieClip(const std::string& newname, int depth,
IF_VERBOSE_ASCODING_ERRORS(
log_aserror(_("Can't clone root of the movie"));
);
- return 0;
+ return nullptr;
}
MovieClip* parent = parent_ch->to_movie();
@@ -675,7 +675,7 @@ MovieClip::duplicateMovieClip(const std::string& newname, int depth,
log_error(_("%s parent is not a movieclip, can't clone"),
getTarget());
);
- return 0;
+ return nullptr;
}
as_object* o = getObjectWithPrototype(getGlobal(*getObject(this)),
@@ -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();
@@ -820,8 +820,8 @@ MovieClip::pathElement(const ObjectURI& uri)
// See if it's a member
as_value tmp;
- if (!obj->as_object::get_member(uri, &tmp)) return 0;
- if (!tmp.is_object()) return 0;
+ if (!obj->as_object::get_member(uri, &tmp)) return nullptr;
+ if (!tmp.is_object()) return nullptr;
if (tmp.is_sprite()) {
return getObject(tmp.toDisplayObject(true));
@@ -838,8 +838,8 @@ MovieClip::setTextFieldVariables(const ObjectURI& uri, const as_value& val)
if (!etc) return false;
- for (TextFields::iterator i=etc->begin(), e=etc->end(); i!=e; ++i) {
- (*i)->updateText(val.to_string(getSWFVersion(*getObject(this))));
+ for (TextField* textfield : *etc) {
+ textfield->updateText(val.to_string(getSWFVersion(*getObject(this))));
}
return true;
}
@@ -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
@@ -1049,15 +1049,14 @@ MovieClip::executeFrameTags(size_t frame, DisplayList& dlist, int typeflags)
);
// Generally tags should be executed in the order they are found in.
- for (PlayList::const_iterator it = playlist->begin(),
- e = playlist->end(); it != e; ++it) {
+ for (const auto& item : *playlist) {
if (typeflags & SWF::ControlTag::TAG_DLIST) {
- (*it)->executeState(this, dlist);
+ item->executeState(this, dlist);
}
if (typeflags & SWF::ControlTag::TAG_ACTION) {
- (*it)->executeActions(this, _displayList);
+ item->executeActions(this, _displayList);
}
}
}
@@ -1248,12 +1247,12 @@ MovieClip::add_display_object(const SWF::PlaceObject2Tag* tag,
log_swferror(_("MovieClip::add_display_object(): "
"unknown cid = %d"), tag->getID());
);
- return NULL;
+ return nullptr;
}
DisplayObject* existing_char = dlist.getDisplayObjectAtDepth(tag->getDepth());
- if (existing_char) return NULL;
+ if (existing_char) return nullptr;
Global_as& gl = getGlobal(*getObject(this));
VM& vm = getVM(*getObject(this));
@@ -1266,7 +1265,7 @@ MovieClip::add_display_object(const SWF::PlaceObject2Tag* tag,
}
if (tag->hasBlendMode()) {
- boost::uint8_t bm = tag->getBlendMode();
+ std::uint8_t bm = tag->getBlendMode();
ch->setBlendMode(static_cast<DisplayObject::BlendMode>(bm));
}
@@ -1293,13 +1292,13 @@ MovieClip::add_display_object(const SWF::PlaceObject2Tag* tag,
void
MovieClip::move_display_object(const SWF::PlaceObject2Tag* tag, DisplayList& dlist)
{
- boost::uint16_t ratio = tag->getRatio();
+ std::uint16_t ratio = tag->getRatio();
// clip_depth is not used in MOVE tag(at least no related tests).
dlist.moveDisplayObject(
tag->getDepth(),
- tag->hasCxform() ? &tag->getCxform() : NULL,
- tag->hasMatrix() ? &tag->getMatrix() : NULL,
- tag->hasRatio() ? &ratio : NULL);
+ tag->hasCxform() ? &tag->getCxform() : nullptr,
+ tag->hasMatrix() ? &tag->getMatrix() : nullptr,
+ tag->hasRatio() ? &ratio : nullptr);
}
void
@@ -1309,9 +1308,9 @@ MovieClip::replace_display_object(const SWF::PlaceObject2Tag* tag,
// A MovieClip without a definition cannot have any ControlTags, so this
// should not be called.
assert(_def);
- assert(tag != NULL);
+ assert(tag != nullptr);
- const boost::uint16_t id = tag->getID();
+ const std::uint16_t id = tag->getID();
SWF::DefinitionTag* cdef = _def->getDefinitionTag(id);
if (!cdef) {
@@ -1414,7 +1413,7 @@ MovieClip::handleFocus()
}
bool
-MovieClip::pointInShape(boost::int32_t x, boost::int32_t y) const
+MovieClip::pointInShape(std::int32_t x, std::int32_t y) const
{
ShapeContainerFinder finder(x, y);
_displayList.visitBackward(finder);
@@ -1423,7 +1422,7 @@ MovieClip::pointInShape(boost::int32_t x, boost::int32_t y) const
}
bool
-MovieClip::pointInVisibleShape(boost::int32_t x, boost::int32_t y) const
+MovieClip::pointInVisibleShape(std::int32_t x, std::int32_t y) const
{
if (! visible()) return false;
if (isDynamicMask() && ! mouseEnabled()) {
@@ -1450,7 +1449,7 @@ MovieClip::pointInVisibleShape(boost::int32_t x, boost::int32_t y) const
}
inline bool
-MovieClip::hitTestDrawable(boost::int32_t x, boost::int32_t y) const
+MovieClip::hitTestDrawable(std::int32_t x, std::int32_t y) const
{
const SWFMatrix wm = getWorldMatrix(*this).invert();
point lp(x, y);
@@ -1460,7 +1459,7 @@ MovieClip::hitTestDrawable(boost::int32_t x, boost::int32_t y) const
}
bool
-MovieClip::pointInHitableShape(boost::int32_t x, boost::int32_t y) const
+MovieClip::pointInHitableShape(std::int32_t x, std::int32_t y) const
{
if (isDynamicMask() && !mouseEnabled()) return false;
@@ -1475,9 +1474,9 @@ MovieClip::pointInHitableShape(boost::int32_t x, boost::int32_t y) const
}
InteractiveObject*
-MovieClip::topmostMouseEntity(boost::int32_t x, boost::int32_t y)
+MovieClip::topmostMouseEntity(std::int32_t x, std::int32_t y)
{
- if (!visible()) return 0;
+ if (!visible()) return nullptr;
// point is in parent's space, we need to convert it in world space
point wp(x, y);
@@ -1493,7 +1492,7 @@ MovieClip::topmostMouseEntity(boost::int32_t x, boost::int32_t y)
if (mouseEnabled()) {
if (pointInVisibleShape(wp.x, wp.y)) return this;
- return 0;
+ return nullptr;
}
SWFMatrix m = getMatrix(*this);
@@ -1511,12 +1510,12 @@ MovieClip::topmostMouseEntity(boost::int32_t x, boost::int32_t y)
}
const DisplayObject*
-MovieClip::findDropTarget(boost::int32_t x, boost::int32_t y,
+MovieClip::findDropTarget(std::int32_t x, std::int32_t y,
DisplayObject* dragging) const
{
- if (this == dragging) return 0; // not here...
+ if (this == dragging) return nullptr; // not here...
- if (!visible()) return 0; // isn't me !
+ if (!visible()) return nullptr; // isn't me !
DropTargetFinder finder(x, y, dragging);
_displayList.visitAll(finder);
@@ -1532,7 +1531,7 @@ MovieClip::findDropTarget(boost::int32_t x, boost::int32_t y,
// does it hit us ?
if (hitTestDrawable(x, y)) return this;
- return 0;
+ return nullptr;
}
bool
@@ -1591,11 +1590,11 @@ MovieClip::cleanup_textfield_variables()
TextFieldIndex& m = *_text_variables;
- for (TextFieldIndex::iterator i=m.begin(), ie=m.end(); i!=ie; ++i)
+ for (auto& index : m)
{
- TextFields& v=i->second;
+ TextFields& v=index.second;
TextFields::iterator lastValid = std::remove_if(v.begin(), v.end(),
- boost::mem_fn(&DisplayObject::unloaded));
+ std::mem_fn(&DisplayObject::unloaded));
v.erase(lastValid, v.end());
}
}
@@ -1626,7 +1625,7 @@ MovieClip::getDisplayListObject(const ObjectURI& uri)
DisplayObject* ch = _displayList.getDisplayObjectByName(st, uri,
caseless(*obj));
- if (!ch) return 0;
+ if (!ch) return nullptr;
// Found object.
@@ -1682,7 +1681,7 @@ MovieClip::constructAsScriptObject()
dynamic_cast<const sprite_definition*>(_def.get());
// We won't "construct" top-level movies
- as_function* ctor = def ? stage().getRegisteredClass(def) : 0;
+ as_function* ctor = def ? stage().getRegisteredClass(def) : nullptr;
#ifdef GNASH_DEBUG
log_debug("Attached movieclips %s registered class is %p",
@@ -1759,8 +1758,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 {
@@ -1899,7 +1898,6 @@ MovieClip::loadVariables(const std::string& urlstr,
}
_loadVariableRequests.push_back(new LoadVariablesThread(sp, url));
}
- _loadVariableRequests.back().process();
}
catch (const NetworkException& ex) {
log_error(_("Could not load variables from %s"), url.str());
@@ -1909,9 +1907,7 @@ MovieClip::loadVariables(const std::string& urlstr,
void
MovieClip::processCompletedLoadVariableRequest(LoadVariablesThread& request)
{
- assert(request.completed());
-
- MovieVariables& vals = request.getValues();
+ MovieVariables vals = request.getValues();
setVariables(vals);
// We want to call a clip-event too if available, see bug #22116
@@ -1940,11 +1936,10 @@ void
MovieClip::setVariables(const MovieVariables& vars)
{
VM& vm = getVM(*getObject(this));
- for (MovieVariables::const_iterator it=vars.begin(), itEnd=vars.end();
- it != itEnd; ++it) {
+ for (const auto& var : vars) {
- const std::string& name = it->first;
- const std::string& val = it->second;
+ const std::string& name = var.first;
+ const std::string& val = var.second;
getObject(this)->set_member(getURI(vm, name), val);
}
}
@@ -2034,7 +2029,7 @@ MovieClip::markOwnResources() const
const TextFields& tfs=i->second;
std::for_each(tfs.begin(), tfs.end(),
- boost::mem_fn(&DisplayObject::setReachable));
+ std::mem_fn(&DisplayObject::setReachable));
}
}
@@ -2098,8 +2093,7 @@ MovieClip::stopStreamSound()
{
if (m_sound_stream_id == -1) return; // nothing to do
- sound::sound_handler* handler =
- getRunResources(*getObject(this)).soundHandler();
+ sound::sound_handler* handler = stage().runResources().soundHandler();
if (handler) {
handler->stopStreamingSound(m_sound_stream_id);
@@ -2124,11 +2118,11 @@ MovieClip::TextFields*
textfieldVar(MovieClip::TextFieldIndex* t, const ObjectURI& name)
{
// nothing allocated yet...
- if (!t) return 0;
+ if (!t) return nullptr;
// TODO: should variable name be considered case-insensitive ?
MovieClip::TextFieldIndex::iterator it = t->find(name);
- if (it == t->end()) return 0;
+ if (it == t->end()) return nullptr;
return &(it->second);
}
diff --git a/libcore/MovieClip.h b/libcore/MovieClip.h
index 4511107..7aa00b1 100644
--- a/libcore/MovieClip.h
+++ b/libcore/MovieClip.h
@@ -34,7 +34,6 @@
#include "ControlTag.h"
#include "movie_definition.h" // for inlines
-#include "DisplayList.h" // DisplayList
#include "DisplayObjectContainer.h"
#include "as_environment.h" // for composition
#include "DynamicShape.h" // for composition
@@ -50,6 +49,7 @@ namespace gnash {
class TextField;
class BitmapData_as;
class CachedBitmap;
+ class DisplayList;
namespace SWF {
class PlaceObject2Tag;
}
@@ -146,16 +146,16 @@ public:
virtual SWFRect getBounds() const;
// See dox in DisplayObject.h
- virtual bool pointInShape(boost::int32_t x, boost::int32_t y) const;
+ virtual bool pointInShape(std::int32_t x, std::int32_t y) const;
// See dox in DisplayObject.h
- virtual bool pointInVisibleShape(boost::int32_t x, boost::int32_t y) const;
+ virtual bool pointInVisibleShape(std::int32_t x, std::int32_t y) const;
/// return true if the given point is located in a(this) hitable sprite.
///
/// all sprites except mouse-insensitive dynamic masks are hitable.
/// _visible property is ignored for hitable DisplayObjects.
- virtual bool pointInHitableShape(boost::int32_t x, boost::int32_t y) const;
+ virtual bool pointInHitableShape(std::int32_t x, std::int32_t y) const;
/// Return 0-based index to current frame
size_t get_current_frame() const
@@ -220,11 +220,11 @@ public:
/// Return the topmost entity that the given point
/// covers that can receive mouse events. NULL if
/// none. Coords are in parent's frame.
- virtual InteractiveObject* topmostMouseEntity(boost::int32_t x,
- boost::int32_t y);
+ virtual InteractiveObject* topmostMouseEntity(std::int32_t x,
+ std::int32_t y);
// see dox in DisplayObject.h
- const DisplayObject* findDropTarget(boost::int32_t x, boost::int32_t y,
+ const DisplayObject* findDropTarget(std::int32_t x, std::int32_t y,
DisplayObject* dragging) const;
void setDropTarget(const std::string& tgt) {
@@ -363,7 +363,7 @@ public:
/// (1) Construct this instance as an ActionScript object.
/// See constructAsScriptObject() method, including constructing
/// registered class and adding properties.
- virtual void construct(as_object* initObj = 0);
+ virtual void construct(as_object* initObj = nullptr);
/// Mark this sprite as destroyed
//
@@ -492,7 +492,7 @@ public:
/// @param init_object
/// If not null, will be used to copy properties over.
MovieClip* duplicateMovieClip(const std::string& newname,
- int newdepth, as_object* init_object = 0);
+ int newdepth, as_object* init_object = nullptr);
/// Called when a mouse event affects this MovieClip
virtual void mouseEvent(const event_id& id) {
@@ -673,7 +673,7 @@ private:
/// This is possible because the drawable does not have its own
/// transform, so we can use our own. The points are expressed in
/// world space.
- bool hitTestDrawable(boost::int32_t x, boost::int32_t y) const;
+ bool hitTestDrawable(std::int32_t x, std::int32_t y) const;
/// Advance to a previous frame.
//
@@ -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..41ab14b 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,8 +243,8 @@ 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 (startLoaderThread && !m->completeLoad()) return 0;
+ if (!m->readHeader(std::move(in), absURL)) return nullptr;
+ if (startLoaderThread && !m->completeLoad()) return nullptr;
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..e920184 100644
--- a/libcore/MovieFactory.h
+++ b/libcore/MovieFactory.h
@@ -83,8 +83,8 @@ public:
/// NOTE: when POSTing, the movies library won't be used.
static DSOEXPORT boost::intrusive_ptr<movie_definition> makeMovie(
const URL& url, const RunResources& runResources,
- const char* real_url = 0, bool startLoaderThread = true,
- const std::string* postdata = 0);
+ const char* real_url = nullptr, bool startLoaderThread = true,
+ const std::string* postdata = nullptr);
/// Load a movie from an already opened stream.
//
@@ -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/MovieLibrary.h b/libcore/MovieLibrary.h
index 7234cf7..b8a98fc 100644
--- a/libcore/MovieLibrary.h
+++ b/libcore/MovieLibrary.h
@@ -26,7 +26,6 @@
#include <string>
#include <map>
#include <algorithm>
-#include <boost/thread/thread.hpp>
namespace gnash {
@@ -67,7 +66,7 @@ public:
bool get(const std::string& key,
boost::intrusive_ptr<movie_definition>* ret)
{
- boost::mutex::scoped_lock lock(_mapMutex);
+ std::lock_guard<std::mutex> lock(_mapMutex);
LibraryContainer::iterator it = _map.find(key);
if (it == _map.end()) return false;
@@ -88,14 +87,14 @@ public:
temp.def = mov;
temp.hitCount = 0;
- boost::mutex::scoped_lock lock(_mapMutex);
+ std::lock_guard<std::mutex> lock(_mapMutex);
_map[key] = temp;
}
void clear()
{
- boost::mutex::scoped_lock lock(_mapMutex);
+ std::lock_guard<std::mutex> lock(_mapMutex);
_map.clear();
}
@@ -118,14 +117,14 @@ private:
}
while (_map.size() > max) {
- boost::mutex::scoped_lock lock(_mapMutex);
+ std::lock_guard<std::mutex> lock(_mapMutex);
_map.erase(std::min_element(_map.begin(), _map.end(),
&findWorstHitCount));
}
}
- mutable boost::mutex _mapMutex;
+ mutable std::mutex _mapMutex;
};
diff --git a/libcore/MovieLoader.cpp b/libcore/MovieLoader.cpp
index 21234d9..dbe51e3 100644
--- a/libcore/MovieLoader.cpp
+++ b/libcore/MovieLoader.cpp
@@ -20,8 +20,9 @@
#include "MovieLoader.h"
#include <memory>
-#include <boost/bind.hpp>
+#include <functional>
#include <algorithm>
+#include <thread>
#include "log.h"
#include "MovieFactory.h"
@@ -46,9 +47,7 @@ namespace gnash {
MovieLoader::MovieLoader(movie_root& mr)
:
_killed(false),
- _movieRoot(mr),
- _thread(0),
- _barrier(2) // main and loader thread
+ _movieRoot(mr)
{
}
@@ -57,9 +56,6 @@ MovieLoader::MovieLoader(movie_root& mr)
void
MovieLoader::processRequests()
{
- // let _thread assignment happen before going on
- _barrier.wait();
-
#ifdef GNASH_DEBUG_LOADMOVIE_REQUESTS_PROCESSING
log_debug("Starting movie loader thread");
#endif
@@ -68,7 +64,7 @@ MovieLoader::processRequests()
while (1) {
// check for shutdown/cancel request
- if (killed()) {
+ if (_killed.load() == true) {
#ifdef GNASH_DEBUG_LOADMOVIE_REQUESTS_PROCESSING
log_debug("Loader thread killed");
#endif
@@ -79,7 +75,7 @@ MovieLoader::processRequests()
log_debug("processRequests: lock on requests: trying");
#endif
- boost::mutex::scoped_lock lock(_requestsMutex);
+ std::unique_lock<std::mutex> lock(_requestsMutex);
#ifdef GNASH_DEBUG_LOCKING
log_debug("processRequests: lock on requests: obtained");
@@ -88,7 +84,8 @@ MovieLoader::processRequests()
// Find first non-completed request (the others we'll wait)
Requests::iterator endIt = _requests.end();
Requests::iterator it = find_if(_requests.begin(), endIt,
- boost::bind(&Request::pending, _1));
+ std::bind(&Request::pending,
+ std::placeholders::_1));
if (it == endIt) {
@@ -130,7 +127,7 @@ MovieLoader::processRequest(Request& r)
{
const URL& url = r.getURL();
bool usePost = r.usePost();
- const std::string* postdata = usePost ? &(r.getPostData()) : 0;
+ const std::string* postdata = usePost ? &(r.getPostData()) : nullptr;
#ifdef GNASH_DEBUG_LOADMOVIE_REQUESTS_PROCESSING
log_debug("Movie loader thread processing request for target %s",
@@ -139,7 +136,7 @@ MovieLoader::processRequest(Request& r)
boost::intrusive_ptr<movie_definition> md (
MovieFactory::makeMovie(url, _movieRoot.runResources(),
- NULL, true, postdata)
+ nullptr, true, postdata)
);
r.setCompleted(md);
@@ -154,13 +151,12 @@ MovieLoader::processRequest(Request& r)
void
MovieLoader::clear()
{
- if (_thread.get()) {
+ if (_thread.joinable()) {
#ifdef GNASH_DEBUG_LOCKING
log_debug("clear: lock on requests: trying");
#endif
-
- boost::mutex::scoped_lock requestsLock(_requestsMutex);
+ std::unique_lock<std::mutex> requestsLock(_requestsMutex);
#ifdef GNASH_DEBUG_LOCKING
log_debug("clear: lock on requests: obtained");
@@ -170,8 +166,6 @@ MovieLoader::clear()
log_debug("clear: lock on kill: trying");
#endif
- boost::mutex::scoped_lock lock(_killMutex);
-
#ifdef GNASH_DEBUG_LOCKING
log_debug("clear: lock on kill: obtained");
#endif
@@ -182,8 +176,6 @@ MovieLoader::clear()
log_debug("clear: lock on kill: release for kill");
#endif
- lock.unlock();
-
log_debug("waking up loader thread");
_wakeup.notify_all(); // in case it was sleeping
@@ -194,9 +186,8 @@ MovieLoader::clear()
requestsLock.unlock(); // allow the thread to die
log_debug("MovieLoader notified, joining");
- _thread->join();
+ _thread.join();
log_debug("MovieLoader joined");
- _thread.reset();
}
// no thread now, can clean w/out locking
@@ -320,12 +311,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;
@@ -345,7 +336,7 @@ MovieLoader::processCompletedRequests()
log_debug("processCompletedRequests: lock on requests: trying");
#endif
- boost::mutex::scoped_lock requestsLock(_requestsMutex);
+ std::unique_lock<std::mutex> requestsLock(_requestsMutex);
#ifdef GNASH_DEBUG_LOCKING
log_debug("processCompletedRequests: lock on requests: obtained");
@@ -358,7 +349,8 @@ MovieLoader::processCompletedRequests()
Requests::iterator endIt = _requests.end();
Requests::iterator it = find_if(_requests.begin(), endIt,
- boost::bind(&Request::completed, _1));
+ std::bind(&Request::completed,
+ std::placeholders::_1));
// Releases scoped lock.
if (it == endIt) break;
@@ -399,15 +391,6 @@ MovieLoader::processCompletedRequests()
}
}
-// private
-// runs in loader thread
-bool
-MovieLoader::killed()
-{
- boost::mutex::scoped_lock lock(_killMutex);
- return _killed;
-}
-
// public
// runs in main thread
void
@@ -435,13 +418,13 @@ MovieLoader::loadMovie(const std::string& urlstr,
log_debug("MovieLoader::loadMovie(%s, %s)", url.str(), target);
const std::string* postdata = (method == MovieClip::METHOD_POST) ? &data
- : 0;
+ : nullptr;
#ifdef GNASH_DEBUG_LOCKING
log_debug("loadMovie: lock on requests: trying");
#endif
- boost::mutex::scoped_lock lock(_requestsMutex);
+ std::lock_guard<std::mutex> lock(_requestsMutex);
#ifdef GNASH_DEBUG_LOCKING
log_debug("loadMovie: lock on requests: obtained");
@@ -452,13 +435,10 @@ MovieLoader::loadMovie(const std::string& urlstr,
);
// Start or wake up the loader thread
- if (!_thread.get()) {
+ if (!_thread.joinable()) {
_killed=false;
- _thread.reset(new boost::thread(boost::bind(
- &MovieLoader::processRequests, this)));
- _barrier.wait(); // let execution start before proceeding
- }
- else {
+ _thread = std::thread(std::bind(&MovieLoader::processRequests, this));
+ } else {
log_debug("loadMovie: waking up existing thread");
_wakeup.notify_all();
}
@@ -485,14 +465,14 @@ MovieLoader::setReachable() const
log_debug("setReachable: lock on requests: trying");
#endif
- boost::mutex::scoped_lock lock(_requestsMutex);
+ std::lock_guard<std::mutex> lock(_requestsMutex);
#ifdef GNASH_DEBUG_LOCKING
log_debug("setReachable: lock on requests: obtained");
#endif
std::for_each(_requests.begin(), _requests.end(),
- boost::mem_fn(&Request::setReachable));
+ std::mem_fn(&Request::setReachable));
#ifdef GNASH_DEBUG_LOCKING
log_debug("setReachable: lock on requests: release");
diff --git a/libcore/MovieLoader.h b/libcore/MovieLoader.h
index b67719b..6bb9f1f 100644
--- a/libcore/MovieLoader.h
+++ b/libcore/MovieLoader.h
@@ -19,13 +19,14 @@
#ifndef GNASH_MOVIE_LOADER_H
#define GNASH_MOVIE_LOADER_H
-#include <boost/intrusive_ptr.hpp>
+#include <atomic>
+#include <condition_variable>
#include <string>
-#include <boost/ptr_container/ptr_list.hpp>
+#include <thread>
+
+#include <boost/intrusive_ptr.hpp>
#include <boost/noncopyable.hpp>
-#include <boost/thread/thread.hpp>
-#include <boost/thread/condition.hpp>
-#include <boost/thread/barrier.hpp>
+#include <boost/ptr_container/ptr_list.hpp>
#include "URL.h"
#include "MovieClip.h"
@@ -73,7 +74,7 @@ public:
///
void loadMovie(const std::string& url, const std::string& target,
const std::string& data, MovieClip::VariablesMethod method,
- as_object* handler=0);
+ as_object* handler=nullptr);
/// Drop all requests and kill the thread
void clear();
@@ -91,13 +92,13 @@ private:
/// @param postdata
/// If not null POST method will be used for HTTP.
///
- Request(const URL& u, const std::string& t,
+ Request(URL u, std::string t,
const std::string* postdata, as_object* handler)
:
- _target(t),
- _url(u),
+ _target(std::move(t)),
+ _url(std::move(u)),
_usePost(false),
- _mdef(0),
+ _mdef(nullptr),
_mutex(),
_handler(handler),
_completed(false)
@@ -132,7 +133,7 @@ private:
///
bool getCompleted(boost::intrusive_ptr<movie_definition>& md) const
{
- boost::mutex::scoped_lock lock(_mutex);
+ std::lock_guard<std::mutex> lock(_mutex);
md = _mdef;
return _completed;
}
@@ -140,14 +141,14 @@ private:
/// Only check if request is completed
bool pending() const
{
- boost::mutex::scoped_lock lock(_mutex);
+ std::lock_guard<std::mutex> lock(_mutex);
return !_completed;
}
/// Only check if request is completed
bool completed() const
{
- boost::mutex::scoped_lock lock(_mutex);
+ std::lock_guard<std::mutex> lock(_mutex);
return _completed;
}
@@ -160,7 +161,7 @@ private:
///
void setCompleted(boost::intrusive_ptr<movie_definition> md)
{
- boost::mutex::scoped_lock lock(_mutex);
+ std::lock_guard<std::mutex> lock(_mutex);
_mdef = md;
_completed = true;
}
@@ -171,7 +172,7 @@ private:
bool _usePost;
std::string _postData;
boost::intrusive_ptr<movie_definition> _mdef;
- mutable boost::mutex _mutex;
+ mutable std::mutex _mutex;
as_object* _handler;
bool _completed;
};
@@ -180,7 +181,7 @@ private:
typedef boost::ptr_list<Request> Requests;
Requests _requests;
- mutable boost::mutex _requestsMutex;
+ mutable std::mutex _requestsMutex;
void processRequests();
void processRequest(Request& r);
@@ -193,24 +194,14 @@ private:
bool processCompletedRequest(const Request& r);
/// Was thread kill requested ?
- bool killed();
+ std::atomic<bool> _killed;
- bool _killed;
-
- boost::mutex _killMutex;
-
- boost::condition _wakeup;
+ std::condition_variable _wakeup;
/// needed for some facilities like find_character_by_target
movie_root& _movieRoot;
- std::auto_ptr<boost::thread> _thread;
-
- // Barrier to ensure that _thread
- // is initialized before the loader thread
- // continues execution
- boost::barrier _barrier;
-
+ std::thread _thread;
};
} // namespace gnash
diff --git a/libcore/PropFlags.h b/libcore/PropFlags.h
index 6874c7f..0b586e5 100644
--- a/libcore/PropFlags.h
+++ b/libcore/PropFlags.h
@@ -20,7 +20,7 @@
#define GNASH_AS_PROP_FLAGS_H
#include <ostream>
-#include <boost/cstdint.hpp>
+#include <cstdint>
namespace gnash {
@@ -76,7 +76,7 @@ public:
}
/// Constructor, from numerical value
- PropFlags(boost::uint16_t flags)
+ PropFlags(std::uint16_t flags)
:
_flags(flags)
{
@@ -117,7 +117,7 @@ public:
}
/// accessor to the numerical flags value
- boost::uint16_t get_flags() const { return _flags; }
+ std::uint16_t get_flags() const { return _flags; }
/// set the numerical flags value (return the new value )
/// If unlocked is false, you cannot un-protect from over-write,
@@ -127,7 +127,7 @@ public:
/// @param setTrue the set of flags to set
/// @param setFalse the set of flags to clear
/// @return true on success, false on failure (is protected)
- bool set_flags(boost::uint16_t setTrue, boost::uint16_t setFalse = 0) {
+ bool set_flags(std::uint16_t setTrue, std::uint16_t setFalse = 0) {
_flags &= ~setFalse;
_flags |= setTrue;
return true;
@@ -136,7 +136,7 @@ public:
private:
/// Numeric flags
- boost::uint16_t _flags;
+ std::uint16_t _flags;
};
diff --git a/libcore/Property.cpp b/libcore/Property.cpp
index 68a123f..caeb13a 100644
--- a/libcore/Property.cpp
+++ b/libcore/Property.cpp
@@ -19,7 +19,7 @@
#include "Property.h"
#include <boost/variant.hpp>
-#include <boost/bind.hpp>
+#include <functional>
#include "VM.h"
#include "as_function.h"
@@ -171,7 +171,8 @@ Property::setValue(as_object& this_ptr, const as_value& value) const
void
Property::setCache(const as_value& value)
{
- boost::apply_visitor(boost::bind(SetCache(), _1, value), _bound);
+ boost::apply_visitor(std::bind(SetCache(), std::placeholders::_1, value),
+ _bound);
}
} // namespace gnash
diff --git a/libcore/Property.h b/libcore/Property.h
index 0733a6a..4bdb8eb 100644
--- a/libcore/Property.h
+++ b/libcore/Property.h
@@ -22,7 +22,7 @@
#include <boost/variant.hpp>
#include <cassert>
-#include <boost/bind.hpp>
+#include <functional>
#include <typeinfo>
#include "PropFlags.h"
@@ -148,8 +148,9 @@ public:
/// Set the cache value (for user-defined getter-setters)
void setCache(const as_value& v) {
- boost::apply_visitor(boost::bind(SetUnderlying(), _1, v), _getset);
- }
+ boost::apply_visitor(
+ std::bind(SetUnderlying(), std::placeholders::_1, v), _getset);
+ }
/// Get the cache value (for user-defined getter-setters)
as_value getCache() const {
@@ -288,44 +289,35 @@ class Property
public:
- Property(const ObjectURI& uri, const as_value& value,
- const PropFlags& flags)
+ Property(ObjectURI uri, const as_value& value,
+ PropFlags flags)
:
_bound(value),
- _uri(uri),
- _flags(flags),
+ _uri(std::move(uri)),
+ _flags(std::move(flags)),
_destructive(false)
{}
- Property(const ObjectURI& uri,
+ Property(ObjectURI uri,
as_function* getter, as_function* setter,
- const PropFlags& flags, bool destroy = false)
+ PropFlags flags, bool destroy = false)
:
_bound(GetterSetter(getter, setter)),
- _uri(uri),
- _flags(flags),
+ _uri(std::move(uri)),
+ _flags(std::move(flags)),
_destructive(destroy)
{}
- Property(const ObjectURI& uri, as_c_function_ptr getter,
- as_c_function_ptr setter, const PropFlags& flags,
+ Property(ObjectURI uri, as_c_function_ptr getter,
+ as_c_function_ptr setter, PropFlags flags,
bool destroy = false)
:
_bound(GetterSetter(getter, setter)),
- _uri(uri),
- _flags(flags),
+ _uri(std::move(uri)),
+ _flags(std::move(flags)),
_destructive(destroy)
{}
- /// Copy constructor
- Property(const Property& p)
- :
- _bound(p._bound),
- _uri(p._uri),
- _flags(p._flags),
- _destructive(p._destructive)
- {}
-
/// accessor to the properties flags
const PropFlags& getFlags() const { return _flags; }
diff --git a/libcore/PropertyList.cpp b/libcore/PropertyList.cpp
index d3e7ce9..1d96c94 100644
--- a/libcore/PropertyList.cpp
+++ b/libcore/PropertyList.cpp
@@ -25,7 +25,7 @@
#include "PropertyList.h"
#include <utility>
-#include <boost/bind.hpp>
+#include <functional>
#include <boost/tuple/tuple.hpp>
#include "Property.h"
@@ -128,10 +128,10 @@ PropertyList::setFlags(const ObjectURI& uri, int setFlags, int clearFlags)
void
PropertyList::setFlagsAll(int setFlags, int clearFlags)
{
- for (const_iterator it = _props.begin(); it != _props.end(); ++it) {
- PropFlags f = it->getFlags();
+ for (const auto& prop: _props) {
+ PropFlags f = prop.getFlags();
f.set_flags(setFlags, clearFlags);
- it->setFlags(f);
+ prop.setFlags(f);
}
}
@@ -146,7 +146,7 @@ PropertyList::getProperty(const ObjectURI& uri) const
kcl.check(uri.name);
#endif // GNASH_STATS_PROPERTY_LOOKUPS
iterator found = iterator_find(_props, uri, getVM(_owner));
- if (found == _props.end()) return 0;
+ if (found == _props.end()) return nullptr;
return const_cast<Property*>(&(*found));
}
@@ -173,12 +173,11 @@ PropertyList::visitKeys(KeyVisitor& visitor, PropertyTracker& donelist)
const
{
// We should enumerate in order of creation, not lexicographically.
- for (const_iterator i = _props.begin(),
- ie = _props.end(); i != ie; ++i) {
+ for (const auto& prop : _props) {
- if (i->getFlags().test<PropFlags::dontEnum>()) continue;
+ if (prop.getFlags().test<PropFlags::dontEnum>()) continue;
- const ObjectURI& uri = i->uri();
+ const ObjectURI& uri = prop.uri();
if (donelist.insert(uri).second) {
visitor(uri);
@@ -190,9 +189,8 @@ void
PropertyList::dump()
{
ObjectURI::Logger l(getStringTable(_owner));
- for (const_iterator it=_props.begin(), itEnd=_props.end();
- it != itEnd; ++it) {
- log_debug(" %s: %s", l(it->uri()), it->getValue(_owner));
+ for (const auto& prop : _props) {
+ log_debug(" %s: %s", l(prop.uri()), prop.getValue(_owner));
}
}
@@ -277,7 +275,7 @@ PropertyList::addDestructiveGetter(const ObjectURI& uri, as_function& getter,
}
// destructive getter doesn't need a setter
- Property a(uri, &getter, 0, flagsIfMissing, true);
+ Property a(uri, &getter, nullptr, flagsIfMissing, true);
_props.push_back(a);
@@ -298,7 +296,7 @@ PropertyList::addDestructiveGetter(const ObjectURI& uri,
if (found != _props.end()) return false;
// destructive getter doesn't need a setter
- Property a(uri, getter, 0, flagsIfMissing, true);
+ Property a(uri, getter, nullptr, flagsIfMissing, true);
_props.push_back(a);
#ifdef GNASH_DEBUG_PROPERTY
diff --git a/libcore/PropertyList.h b/libcore/PropertyList.h
index 23bba9d..7956adc 100644
--- a/libcore/PropertyList.h
+++ b/libcore/PropertyList.h
@@ -23,13 +23,13 @@
#include <string> // for use within map
#include <cassert> // for inlines
#include <utility> // for std::pair
-#include <boost/cstdint.hpp>
+#include <cstdint>
#include <boost/multi_index_container.hpp>
#include <boost/multi_index/ordered_index.hpp>
#include <boost/multi_index/sequenced_index.hpp>
#include <boost/multi_index/key_extractors.hpp>
#include <boost/noncopyable.hpp>
-#include <boost/bind.hpp>
+#include <functional>
#include <algorithm>
#include "Property.h" // for templated functions
@@ -150,12 +150,11 @@ public:
template <class U, class V>
void visitValues(V& visitor, U cmp = U()) const {
- for (const_iterator it = _props.begin(), ie = _props.end();
- it != ie; ++it) {
+ for (const auto& prop : _props) {
- if (!cmp(*it)) continue;
- as_value val = it->getValue(_owner);
- if (!visitor.accept(it->uri(), val)) return;
+ if (!cmp(prop)) continue;
+ as_value val = prop.getValue(_owner);
+ if (!visitor.accept(prop.uri(), val)) return;
}
}
@@ -295,7 +294,7 @@ public:
/// compiler to optimize it.
void setReachable() const {
std::for_each(_props.begin(), _props.end(),
- boost::mem_fn(&Property::setReachable));
+ std::mem_fn(&Property::setReachable));
}
private:
diff --git a/libcore/RGBA.cpp b/libcore/RGBA.cpp
index fedefee..0b6b498 100644
--- a/libcore/RGBA.cpp
+++ b/libcore/RGBA.cpp
@@ -41,7 +41,7 @@ rgba
colorFromHexString(const std::string& color)
{
std::stringstream ss(color);
- boost::uint32_t hexnumber;
+ std::uint32_t hexnumber;
if (!(ss >> std::hex >> hexnumber)) {
log_error(_("Failed to convert string to RGBA value! This is a "
diff --git a/libcore/RGBA.h b/libcore/RGBA.h
index 06af1af..abe5c37 100644
--- a/libcore/RGBA.h
+++ b/libcore/RGBA.h
@@ -22,7 +22,7 @@
#define GNASH_RGBA_H
#include <string>
-#include <boost/cstdint.hpp>
+#include <cstdint>
#include "dsodefs.h" // for DSOTEXPORT
@@ -39,7 +39,7 @@ public:
/// Construct default RGBA value.
//
/// Default value is 0xffffffff (solid white).
- rgba()
+ constexpr rgba()
:
m_r(255),
m_g(255),
@@ -53,8 +53,8 @@ public:
/// @param g Green
/// @param b Blue
/// @param a Alpha (transparency)
- rgba(boost::uint8_t r, boost::uint8_t g, boost::uint8_t b,
- boost::uint8_t a)
+ rgba(std::uint8_t r, std::uint8_t g, std::uint8_t b,
+ std::uint8_t a)
:
m_r(r),
m_g(g),
@@ -70,10 +70,10 @@ public:
///
/// This function is meant to be used to
/// parse ActionScript colors in numeric format.
- void parseRGB(boost::uint32_t rgbCol) {
- m_r = static_cast<boost::uint8_t>(rgbCol >> 16);
- m_g = static_cast<boost::uint8_t>(rgbCol >> 8);
- m_b = static_cast<boost::uint8_t>(rgbCol);
+ void parseRGB(std::uint32_t rgbCol) {
+ m_r = static_cast<std::uint8_t>(rgbCol >> 16);
+ m_g = static_cast<std::uint8_t>(rgbCol >> 8);
+ m_b = static_cast<std::uint8_t>(rgbCol);
}
/// Return a 32-bit unsigned integer as four packed R,G,B bytes.
@@ -83,7 +83,7 @@ public:
///
/// This function is meant to be used to output ActionScript colors
/// in numeric format.
- boost::uint32_t toRGB() const {
+ std::uint32_t toRGB() const {
return (m_r << 16) + (m_g << 8) + m_b;
}
@@ -93,7 +93,7 @@ public:
///
/// This function is meant to be used to output ActionScript colors
/// in numeric format.
- boost::uint32_t toRGBA() const {
+ std::uint32_t toRGBA() const {
return toRGB() + (m_a << 24);
}
@@ -110,7 +110,7 @@ public:
return !(*this == o);
}
- boost::uint8_t m_r, m_g, m_b, m_a;
+ std::uint8_t m_r, m_g, m_b, m_a;
};
diff --git a/libcore/RunResources.h b/libcore/RunResources.h
index 1c16cf3..52a5896 100644
--- a/libcore/RunResources.h
+++ b/libcore/RunResources.h
@@ -21,13 +21,23 @@
#ifndef GNASH_RUN_INFO_H
#define GNASH_RUN_INFO_H
+#include <memory>
#include <string>
-#include <boost/shared_ptr.hpp>
-#include "StreamProvider.h"
-#include "Renderer.h"
-#include "sound_handler.h"
-#include "MediaHandler.h"
-#include "TagLoadersTable.h"
+#include <cassert>
+
+namespace gnash {
+ class Renderer;
+ class StreamProvider;
+ namespace SWF {
+ class TagLoadersTable;
+ }
+ namespace media {
+ class MediaHandler;
+ }
+ namespace sound {
+ class sound_handler;
+ }
+}
namespace gnash {
@@ -53,7 +63,7 @@ public:
/// Set the StreamProvider.
//
/// This can probably be changed during a run without ill effects.
- void setStreamProvider(boost::shared_ptr<StreamProvider> sp) {
+ void setStreamProvider(std::shared_ptr<StreamProvider> sp) {
_streamProvider = sp;
}
@@ -75,7 +85,7 @@ public:
//
/// This is cached in various places, so changing it during a run will
/// lead to unexpected behaviour.
- void setSoundHandler(boost::shared_ptr<sound::sound_handler> s) {
+ void setSoundHandler(std::shared_ptr<sound::sound_handler> s) {
_soundHandler = s;
}
@@ -87,7 +97,7 @@ public:
return _soundHandler.get();
}
- void setMediaHandler(boost::shared_ptr<media::MediaHandler> s) {
+ void setMediaHandler(std::shared_ptr<media::MediaHandler> s) {
_mediaHandler = s;
}
@@ -95,7 +105,7 @@ public:
return _mediaHandler.get();
}
- void setRenderer(boost::shared_ptr<Renderer> r) {
+ void setRenderer(std::shared_ptr<Renderer> r) {
_renderer = r;
}
@@ -108,7 +118,7 @@ public:
/// This must be present before parsing.
/// It is a pointer to const so that the same table can be shared between
/// simultaneous runs if desired.
- void setTagLoaders(boost::shared_ptr<const SWF::TagLoadersTable> loaders) {
+ void setTagLoaders(std::shared_ptr<const SWF::TagLoadersTable> loaders) {
_tagLoaders = loaders;
}
@@ -134,15 +144,15 @@ public:
private:
- boost::shared_ptr<StreamProvider> _streamProvider;
+ std::shared_ptr<StreamProvider> _streamProvider;
- boost::shared_ptr<sound::sound_handler> _soundHandler;
+ std::shared_ptr<sound::sound_handler> _soundHandler;
- boost::shared_ptr<media::MediaHandler> _mediaHandler;
+ std::shared_ptr<media::MediaHandler> _mediaHandler;
- boost::shared_ptr<Renderer> _renderer;
+ std::shared_ptr<Renderer> _renderer;
- boost::shared_ptr<const SWF::TagLoadersTable> _tagLoaders;
+ std::shared_ptr<const SWF::TagLoadersTable> _tagLoaders;
/// Whether to ue HW video decoding support, no value means disabled.
/// The only currently supported values are: none or vaapi.
diff --git a/libcore/SWFCxForm.cpp b/libcore/SWFCxForm.cpp
index c07a7f5..2d8f906 100644
--- a/libcore/SWFCxForm.cpp
+++ b/libcore/SWFCxForm.cpp
@@ -56,24 +56,24 @@ SWFCxForm::transform(const rgba& in) const
// transform the given color with our SWFCxForm.
void
-SWFCxForm::transform(boost::uint8_t& r, boost::uint8_t& g, boost::uint8_t& b,
- boost::uint8_t& a) const
+SWFCxForm::transform(std::uint8_t& r, std::uint8_t& g, std::uint8_t& b,
+ std::uint8_t& a) const
{
// force conversion to int16 first, kind of optimization.
- boost::int16_t rt = r;
- boost::int16_t gt = g;
- boost::int16_t bt = b;
- boost::int16_t at = a;
+ std::int16_t rt = r;
+ std::int16_t gt = g;
+ std::int16_t bt = b;
+ std::int16_t at = a;
rt = (rt * ra >> 8) + rb;
gt = (gt * ga >> 8) + gb;
bt = (bt * ba >> 8) + bb;
at = (at * aa >> 8) + ab;
- r = clamp<boost::int16_t>(rt, 0, 255);
- g = clamp<boost::int16_t>(gt, 0, 255);
- b = clamp<boost::int16_t>(bt, 0, 255);
- a = clamp<boost::int16_t>(at, 0, 255);
+ r = clamp<std::int16_t>(rt, 0, 255);
+ g = clamp<std::int16_t>(gt, 0, 255);
+ b = clamp<std::int16_t>(bt, 0, 255);
+ a = clamp<std::int16_t>(at, 0, 255);
}
std::ostream&
diff --git a/libcore/SWFCxForm.h b/libcore/SWFCxForm.h
index 5915dcd..74ccbae 100644
--- a/libcore/SWFCxForm.h
+++ b/libcore/SWFCxForm.h
@@ -21,9 +21,8 @@
#include "dsodefs.h" // for DSOEXPORT
-#include <string>
#include <iosfwd>
-#include <boost/cstdint.hpp>
+#include <cstdint>
namespace gnash {
class rgba;
@@ -50,14 +49,14 @@ public:
{
}
- boost::int16_t ra; // RedMultTerm, 8.8 fixed point
- boost::int16_t ga; // GreenMultTerm 8.8 fixed point
- boost::int16_t ba; // BlueMultTerm 8.8 fixed point
- boost::int16_t aa; // AlphaMultTerm 8.8 fixed point
- boost::int16_t rb; // RedAddTerm, 16 bit integer(no fraction)
- boost::int16_t gb; // GreenAddTerm 16 bit integer(no fraction)
- boost::int16_t bb; // BlueAddTerm 16 bit integer(no fraction)
- boost::int16_t ab; // AlphaAddTerm 16 bit integer(no fraction)
+ std::int16_t ra; // RedMultTerm, 8.8 fixed point
+ std::int16_t ga; // GreenMultTerm 8.8 fixed point
+ std::int16_t ba; // BlueMultTerm 8.8 fixed point
+ std::int16_t aa; // AlphaMultTerm 8.8 fixed point
+ std::int16_t rb; // RedAddTerm, 16 bit integer(no fraction)
+ std::int16_t gb; // GreenAddTerm 16 bit integer(no fraction)
+ std::int16_t bb; // BlueAddTerm 16 bit integer(no fraction)
+ std::int16_t ab; // AlphaAddTerm 16 bit integer(no fraction)
/// Concatenate SWFCxForm c onto ours.
//
@@ -70,8 +69,8 @@ public:
rgba transform(const rgba& in) const;
/// Transform the given color.
- void transform(boost::uint8_t& r, boost::uint8_t& g, boost::uint8_t& b,
- boost::uint8_t& a) const;
+ void transform(std::uint8_t& r, std::uint8_t& g, std::uint8_t& b,
+ std::uint8_t& a) const;
};
diff --git a/libcore/SWFMatrix.cpp b/libcore/SWFMatrix.cpp
index 220c9ef..c80f9c0 100644
--- a/libcore/SWFMatrix.cpp
+++ b/libcore/SWFMatrix.cpp
@@ -79,17 +79,17 @@ rotationY(const SWFMatrix& m)
return std::atan2(-c, d);
}
-inline boost::int32_t
+inline std::int32_t
toFixed16(double a)
{
return truncateWithFactor<65536>(a);
}
-inline boost::int32_t
-multiplyFixed16(boost::int32_t a, boost::int32_t b)
+inline std::int32_t
+multiplyFixed16(std::int32_t a, std::int32_t b)
{
- return (static_cast<boost::int64_t>(a) *
- static_cast<boost::int64_t>(b) + 0x8000) >> 16;
+ return (static_cast<std::int64_t>(a) *
+ static_cast<std::int64_t>(b) + 0x8000) >> 16;
}
@@ -98,28 +98,28 @@ multiplyFixed16(boost::int32_t a, boost::int32_t b)
void
SWFMatrix::transform(geometry::Point2d& p) const
{
- boost::int32_t t0 = multiplyFixed16(_a, p.x) + multiplyFixed16(_c, p.y) + _tx;
- boost::int32_t t1 = multiplyFixed16(_b, p.x) + multiplyFixed16(_d, p.y) + _ty;
+ std::int32_t t0 = multiplyFixed16(_a, p.x) + multiplyFixed16(_c, p.y) + _tx;
+ std::int32_t t1 = multiplyFixed16(_b, p.x) + multiplyFixed16(_d, p.y) + _ty;
p.x = t0;
p.y = t1;
}
void
-SWFMatrix::transform(boost::int32_t& x, boost::int32_t& y) const
+SWFMatrix::transform(std::int32_t& x, std::int32_t& y) const
{
- const boost::int32_t t0 = multiplyFixed16(_a, x) + multiplyFixed16(_c, y) + _tx;
- const boost::int32_t t1 = multiplyFixed16(_b,x) + multiplyFixed16(_d, y) + _ty;
+ const std::int32_t t0 = multiplyFixed16(_a, x) + multiplyFixed16(_c, y) + _tx;
+ const std::int32_t t1 = multiplyFixed16(_b,x) + multiplyFixed16(_d, y) + _ty;
x = t0;
y = t1;
}
void
-SWFMatrix::transform(geometry::Range2d<boost::int32_t>& r) const
+SWFMatrix::transform(geometry::Range2d<std::int32_t>& r) const
{
- const boost::int32_t xmin = r.getMinX();
- const boost::int32_t xmax = r.getMaxX();
- const boost::int32_t ymin = r.getMinY();
- const boost::int32_t ymax = r.getMaxY();
+ const std::int32_t xmin = r.getMinX();
+ const std::int32_t xmax = r.getMaxX();
+ const std::int32_t ymin = r.getMinY();
+ const std::int32_t ymax = r.getMaxY();
point p0(xmin, ymin);
point p1(xmin, ymax);
@@ -262,10 +262,10 @@ SWFMatrix::transform(SWFRect& r) const
{
if (r.is_null()) return;
- const boost::int32_t x1 = r.get_x_min();
- const boost::int32_t y1 = r.get_y_min();
- const boost::int32_t x2 = r.get_x_max();
- const boost::int32_t y2 = r.get_y_max();
+ const std::int32_t x1 = r.get_x_min();
+ const std::int32_t y1 = r.get_y_min();
+ const std::int32_t x2 = r.get_x_max();
+ const std::int32_t y2 = r.get_y_max();
point p0(x1, y1);
point p1(x2, y1);
@@ -287,7 +287,7 @@ SWFMatrix::transform(SWFRect& r) const
SWFMatrix&
SWFMatrix::invert()
{
- const boost::int64_t det = determinant();
+ const std::int64_t det = determinant();
if (det == 0) {
set_identity();
@@ -296,12 +296,12 @@ SWFMatrix::invert()
const double dn = 65536.0 * 65536.0 / det;
- const boost::int32_t t0 = (boost::int32_t)(d() * dn);
- _d = (boost::int32_t)(a() * dn);
- _c = (boost::int32_t)(-c() * dn);
- _b = (boost::int32_t)(-b() * dn);
+ const std::int32_t t0 = (std::int32_t)(d() * dn);
+ _d = (std::int32_t)(a() * dn);
+ _c = (std::int32_t)(-c() * dn);
+ _b = (std::int32_t)(-b() * dn);
- const boost::int32_t t4 = -(multiplyFixed16(_tx, t0) + multiplyFixed16(_ty, _c));
+ const std::int32_t t4 = -(multiplyFixed16(_tx, t0) + multiplyFixed16(_ty, _c));
_ty = -(multiplyFixed16(_tx, _b) + multiplyFixed16(_ty, _d));
_a = t0;
@@ -333,7 +333,7 @@ SWFMatrix::get_rotation() const
}
// private
-boost::int64_t
+std::int64_t
SWFMatrix::determinant() const
{
// | _a _c _tx |
@@ -343,7 +343,7 @@ SWFMatrix::determinant() const
// Det(T) = ( (_a * _d * 1 ) + (_c * _ty * 0) + (_tx * _b * 0) ) -
// ( (0 * _d * _tx) + (0 * _ty * _a) + (1 * _c * _b) )
// = _a * _d - _b * _c
- return (boost::int64_t)a() * d() - (boost::int64_t)b() * c();
+ return (std::int64_t)a() * d() - (std::int64_t)b() * c();
}
std::ostream&
diff --git a/libcore/SWFMatrix.h b/libcore/SWFMatrix.h
index 3747b70..d567fa5 100644
--- a/libcore/SWFMatrix.h
+++ b/libcore/SWFMatrix.h
@@ -28,7 +28,7 @@
#include "dsodefs.h" // for DSOEXPORT
#include <iosfwd>
-#include <boost/cstdint.hpp>
+#include <cstdint>
// Forward declarations
namespace gnash {
@@ -55,7 +55,7 @@ class DSOEXPORT SWFMatrix
public:
/// Construct an identity SWFMatrix
- SWFMatrix()
+ constexpr SWFMatrix()
:
_a(65536),
_b(0),
@@ -76,27 +76,27 @@ public:
_ty(y)
{}
- boost::int32_t a() const {
+ std::int32_t a() const {
return _a;
}
- boost::int32_t b() const {
+ std::int32_t b() const {
return _b;
}
- boost::int32_t c() const {
+ std::int32_t c() const {
return _c;
}
- boost::int32_t d() const {
+ std::int32_t d() const {
return _d;
}
- boost::int32_t tx() const {
+ std::int32_t tx() const {
return _tx;
}
- boost::int32_t ty() const {
+ std::int32_t ty() const {
return _ty;
}
@@ -159,7 +159,7 @@ public:
void transform(geometry::Point2d& p) const;
/// Transform the given point by our SWFMatrix.
- void transform(boost::int32_t& x, boost::int32_t& y) const;
+ void transform(std::int32_t& x, std::int32_t& y) const;
/// Transform point 'p' by our SWFMatrix.
//
@@ -171,7 +171,7 @@ public:
//
/// NULL and WORLD ranges are untouched.
///
- void transform(geometry::Range2d<boost::int32_t>& r) const;
+ void transform(geometry::Range2d<std::int32_t>& r) const;
void transform(SWFRect& r) const;
@@ -203,25 +203,25 @@ public:
private:
/// Return the determinant of this SWFMatrix in 32.32 fixed point format.
- boost::int64_t determinant() const;
+ std::int64_t determinant() const;
/// Xscale, 16.16 fixed point. xx in swfdec. 'a' in AS Matrix.
- boost::int32_t _a;
+ std::int32_t _a;
/// Xshear, 16.16 fixed point. yx in swfdec. 'b' in AS Matrix.
- boost::int32_t _b;
+ std::int32_t _b;
/// Yshear, 16.16 fixed point. xy in swfdec. 'c' in AS Matrix.
- boost::int32_t _c;
+ std::int32_t _c;
/// Yscale, 16.16 fixed point. yy in swfdec. 'd' in AS Matrix.
- boost::int32_t _d;
+ std::int32_t _d;
/// Xtranslation, TWIPS. x0 in swfdec. '_tx' in AS Matrix.
- boost::int32_t _tx;
+ std::int32_t _tx;
/// Ytranslation, TWIPS. y0 in swfdec. '_ty' in AS Matrix.
- boost::int32_t _ty;
+ std::int32_t _ty;
}; //end of SWFMatrix
diff --git a/libcore/SWFMovie.cpp b/libcore/SWFMovie.cpp
index e97a540..aa9399b 100644
--- a/libcore/SWFMovie.cpp
+++ b/libcore/SWFMovie.cpp
@@ -85,15 +85,15 @@ SWFMovie::advance()
SWF::DefinitionTag*
SWFMovie::exportedCharacter(const std::string& symbol)
{
- const boost::uint16_t id = _def->exportID(symbol);
- if (!id) return 0;
+ const std::uint16_t id = _def->exportID(symbol);
+ if (!id) return nullptr;
Characters::iterator it = _characters.find(id);
- if (it == _characters.end()) return 0;
+ if (it == _characters.end()) return nullptr;
return _def->getDefinitionTag(id);
}
void
-SWFMovie::addCharacter(boost::uint16_t id)
+SWFMovie::addCharacter(std::uint16_t id)
{
// If a character is already known, we don't want to mark it uninitialized
// again.
@@ -101,7 +101,7 @@ SWFMovie::addCharacter(boost::uint16_t id)
}
bool
-SWFMovie::initializeCharacter(boost::uint16_t cid)
+SWFMovie::initializeCharacter(std::uint16_t cid)
{
Characters::iterator it = _characters.find(cid);
if (it == _characters.end()) {
diff --git a/libcore/SWFMovie.h b/libcore/SWFMovie.h
index d7d6ce8..995d682 100644
--- a/libcore/SWFMovie.h
+++ b/libcore/SWFMovie.h
@@ -51,7 +51,7 @@ class SWFMovie : public Movie
{
/// A container to track known characters and whether they are initialized.
- typedef std::map<boost::uint16_t, bool> Characters;
+ typedef std::map<std::uint16_t, bool> Characters;
public:
@@ -84,7 +84,7 @@ public:
/// and then call MovieClip::construct
///
/// It's intended to be called by movie_root::setLevel().
- void construct(as_object* init = 0);
+ void construct(as_object* init = nullptr);
/// Get the URL of the SWFMovie's definition.
const std::string& url() const {
@@ -117,7 +117,7 @@ public:
/// If a duplicated character is added, it will not be marked
/// uninitialized, as SWF::DoInitAction tags are only executed once
/// for each id.
- void addCharacter(boost::uint16_t id);
+ void addCharacter(std::uint16_t id);
/// Attempt to mark a character as initialized.
//
@@ -130,7 +130,7 @@ public:
/// or has not yet been placed on stage).
/// 2. The character has already been initialized.
/// true if the character was marked initialized.
- bool initializeCharacter(boost::uint16_t id);
+ bool initializeCharacter(std::uint16_t id);
const movie_definition* definition() const {
return _def.get();
diff --git a/libcore/SWFRect.cpp b/libcore/SWFRect.cpp
index 58cf869..dbe34dc 100644
--- a/libcore/SWFRect.cpp
+++ b/libcore/SWFRect.cpp
@@ -27,18 +27,14 @@
namespace gnash {
-const boost::int32_t SWFRect::rectNull;
-const boost::int32_t SWFRect::rectMax;
-
-
// Set ourself to bound a rectangle that has been transformed by m.
void
SWFRect::enclose_transformed_rect(const SWFMatrix& m, const SWFRect& r)
{
- boost::int32_t x1 = r.get_x_min();
- boost::int32_t y1 = r.get_y_min();
- boost::int32_t x2 = r.get_x_max();
- boost::int32_t y2 = r.get_y_max();
+ std::int32_t x1 = r.get_x_min();
+ std::int32_t y1 = r.get_y_min();
+ std::int32_t x2 = r.get_x_max();
+ std::int32_t y2 = r.get_y_max();
point p0(x1, y1);
point p1(x2, y1);
@@ -81,10 +77,10 @@ SWFRect::expand_to_transformed_rect(const SWFMatrix& m, const SWFRect& r)
return;
}
- const boost::int32_t x1 = r.get_x_min();
- const boost::int32_t y1 = r.get_y_min();
- const boost::int32_t x2 = r.get_x_max();
- const boost::int32_t y2 = r.get_y_max();
+ const std::int32_t x1 = r.get_x_min();
+ const std::int32_t y1 = r.get_y_min();
+ const std::int32_t x2 = r.get_x_max();
+ const std::int32_t y2 = r.get_y_max();
point p0(x1, y1);
point p1(x2, y1);
@@ -124,8 +120,8 @@ void
SWFRect::clamp(point& p) const
{
assert( !is_null() );
- p.x = gnash::clamp<boost::int32_t>(p.x, _xMin, _xMax);
- p.y = gnash::clamp<boost::int32_t>(p.y, _yMin, _yMax);
+ p.x = gnash::clamp<std::int32_t>(p.x, _xMin, _xMax);
+ p.y = gnash::clamp<std::int32_t>(p.y, _yMin, _yMax);
}
std::string
diff --git a/libcore/SWFRect.h b/libcore/SWFRect.h
index 8c814bf..11f552b 100644
--- a/libcore/SWFRect.h
+++ b/libcore/SWFRect.h
@@ -23,7 +23,7 @@
#include <string>
#include <cassert>
#include <ostream>
-#include <boost/cstdint.hpp>
+#include <cstdint>
#include "dsodefs.h"
#include "Range2d.h"
@@ -46,14 +46,14 @@ class SWFRect
public:
- static const boost::int32_t rectNull = 0x80000000;
- static const boost::int32_t rectMax = 0x7fffffff;
+ constexpr static std::int32_t rectNull = 0x80000000;
+ constexpr static std::int32_t rectMax = 0x7fffffff;
/// Ouput operator
friend std::ostream& operator<< (std::ostream& os, const SWFRect& SWFRect);
/// Construct a NULL rectangle
- SWFRect()
+ constexpr SWFRect()
:
_xMin(rectNull),
_yMin(rectNull),
@@ -62,7 +62,7 @@ public:
{}
/// Construct a rectangle with given coordinates
- SWFRect(int xmin, int ymin, int xmax, int ymax)
+ constexpr SWFRect(int xmin, int ymin, int xmax, int ymax)
:
_xMin(xmin),
_yMin(ymin),
@@ -100,47 +100,47 @@ public:
}
/// Return width of this rectangle in TWIPS
- boost::int32_t width() const
+ std::int32_t width() const
{
return _xMax - _xMin;
}
/// Return height of this rectangle in TWIPS
- boost::int32_t height() const
+ std::int32_t height() const
{
return _yMax - _yMin;
}
/// Get the x coordinate of the left-up corner.
- boost::int32_t get_x_min() const
+ std::int32_t get_x_min() const
{
assert(!is_null());
return _xMin;
}
/// Get the x coordinate of the right-down corner.
- boost::int32_t get_x_max() const
+ std::int32_t get_x_max() const
{
assert(!is_null());
return _xMax;
}
/// Get the y coordinate of the left-up corner.
- boost::int32_t get_y_min() const
+ std::int32_t get_y_min() const
{
assert(!is_null());
return _yMin;
}
/// Get the y coordinate of the right-down corner.
- boost::int32_t get_y_max() const
+ std::int32_t get_y_max() const
{
assert(!is_null());
return _yMax;
}
/// Return true if the given point is inside this SWFRect.
- bool point_test(boost::int32_t x, boost::int32_t y) const
+ bool point_test(std::int32_t x, std::int32_t y) const
{
if (is_null()) return false;
@@ -151,15 +151,15 @@ public:
}
/// Set ourself to bound the given point
- void set_to_point(boost::int32_t x, boost::int32_t y)
+ void set_to_point(std::int32_t x, std::int32_t y)
{
_xMin = _xMax = x;
_yMin = _yMax = y;
}
- void set_to_rect(boost::int32_t x1, boost::int32_t y1, boost::int32_t x2,
- boost::int32_t y2)
+ void set_to_rect(std::int32_t x1, std::int32_t y1, std::int32_t x2,
+ std::int32_t y2)
{
_xMin = x1;
_yMin = y1;
@@ -168,7 +168,7 @@ public:
}
/// Expand this rectangle to enclose the given point.
- void expand_to_point(boost::int32_t x, boost::int32_t y)
+ void expand_to_point(std::int32_t x, std::int32_t y)
{
if (is_null()) {
set_to_point(x, y);
@@ -183,8 +183,8 @@ public:
void enclose_transformed_rect(const SWFMatrix& m, const SWFRect& r);
/// Expand this rectangle to enclose the given circle.
- void expand_to_circle(boost::int32_t x, boost::int32_t y,
- boost::int32_t radius)
+ void expand_to_circle(std::int32_t x, std::int32_t y,
+ std::int32_t radius)
{
// I know it's easy to make code work for minus radius.
// would do that untill I see the requirement for a SWF RECTANGLE.
@@ -219,20 +219,20 @@ public:
/// Construct and return a Range2d object.
// TODO: deprecate this.
- geometry::Range2d<boost::int32_t> getRange() const
+ geometry::Range2d<std::int32_t> getRange() const
{
if (is_null())
{
// Range2d has a differnt idea about what is a null SWFRect.
- return geometry::Range2d<boost::int32_t>(geometry::nullRange);
+ return geometry::Range2d<std::int32_t>(geometry::nullRange);
}
else if( is_world() )
{
- return geometry::Range2d<boost::int32_t>(geometry::worldRange);
+ return geometry::Range2d<std::int32_t>(geometry::worldRange);
}
else
{
- return geometry::Range2d<boost::int32_t>(_xMin, _yMin,
+ return geometry::Range2d<std::int32_t>(_xMin, _yMin,
_xMax, _yMax);
}
}
@@ -243,7 +243,7 @@ public:
private:
// make ourself to enclose the given point.
- void expand_to(boost::int32_t x, boost::int32_t y)
+ void expand_to(std::int32_t x, std::int32_t y)
{
_xMin = std::min(_xMin, x);
_yMin = std::min(_yMin, y);
@@ -251,10 +251,10 @@ private:
_yMax = std::max(_yMax, y);
}
- boost::int32_t _xMin; // TWIPS
- boost::int32_t _yMin; // TWIPS
- boost::int32_t _xMax; // TWIPS
- boost::int32_t _yMax; // TWIPS
+ std::int32_t _xMin; // TWIPS
+ std::int32_t _yMin; // TWIPS
+ std::int32_t _xMax; // TWIPS
+ std::int32_t _yMax; // TWIPS
};
diff --git a/libcore/SWFStream.cpp b/libcore/SWFStream.cpp
index 2767fe2..6001bf7 100644
--- a/libcore/SWFStream.cpp
+++ b/libcore/SWFStream.cpp
@@ -28,7 +28,6 @@
#include <cstring>
#include <climits>
-#include <boost/static_assert.hpp>
//#define USE_TU_FILE_BYTESWAPPING 1
@@ -118,7 +117,7 @@ unsigned SWFStream::read_uint(unsigned short bitcount)
{
typedef unsigned char byte;
- boost::uint32_t value = 0;
+ std::uint32_t value = 0;
if (m_unused_bits) // Consume all the unused bits.
{
@@ -191,13 +190,13 @@ unsigned SWFStream::read_uint(unsigned short bitcount)
int
SWFStream::read_sint(unsigned short bitcount)
{
- //assert(bitcount <= 32); // already asserted in read_uint
+ assert(bitcount > 0);
- boost::int32_t value = boost::int32_t(read_uint(bitcount));
+ std::int32_t value = std::int32_t(read_uint(bitcount));
// Sign extend...
if (value & (1 << (bitcount - 1))) {
- value |= -1 << bitcount;
+ value |= static_cast<std::uint32_t>(-1) << bitcount;
}
// IF_DEBUG(log_debug("SWFStream::read_sint(%d) == %d\n", bitcount, value)));
@@ -239,13 +238,6 @@ float SWFStream::read_short_sfixed()
return read_s16() / 256.0f;
}
-/// Read a 16bit (1:sign 5:exp 10:mantissa) floating point value
-float SWFStream::read_short_float()
-{
- // read_s16 will align
- return static_cast<float> ( read_s16() );
-}
-
// Read a little-endian 32-bit float from p
// and return it as a host-endian float.
static float
@@ -254,16 +246,16 @@ convert_float_little(const void *p)
// Hairy union for endian detection and munging
union {
float f;
- boost::uint32_t i;
+ std::uint32_t i;
struct { // for endian detection
- boost::uint16_t s0;
- boost::uint16_t s1;
+ std::uint16_t s0;
+ std::uint16_t s1;
} s;
struct { // for byte-swapping
- boost::uint8_t c0;
- boost::uint8_t c1;
- boost::uint8_t c2;
- boost::uint8_t c3;
+ std::uint8_t c0;
+ std::uint8_t c1;
+ std::uint8_t c2;
+ std::uint8_t c3;
} c;
} u;
@@ -274,7 +266,7 @@ convert_float_little(const void *p)
break;
case 0x3f80: // big-endian host
{
- const boost::uint8_t *cp = (const boost::uint8_t *) p;
+ const std::uint8_t *cp = (const std::uint8_t *) p;
u.c.c0 = cp[3];
u.c.c1 = cp[2];
u.c.c2 = cp[1];
@@ -312,7 +304,7 @@ double SWFStream::read_d64()
const unsigned short dataLength = 8;
double d = 0;
- BOOST_STATIC_ASSERT(sizeof(double) == dataLength) __attribute__((unused));
+ static_assert(sizeof(double) == dataLength, "double must be 8 bytes");
// Should align:
if (read(reinterpret_cast<char*>(&d), dataLength) < dataLength)
@@ -324,20 +316,20 @@ double SWFStream::read_d64()
}
-boost::uint8_t SWFStream::read_u8()
+std::uint8_t SWFStream::read_u8()
{
align();
return m_input->read_byte();
}
-boost::int8_t
+std::int8_t
SWFStream::read_s8()
{
// read_u8 will align
return read_u8();
}
-boost::uint16_t SWFStream::read_u16()
+std::uint16_t SWFStream::read_u16()
{
#ifdef USE_TU_FILE_BYTESWAPPING
align();
@@ -353,26 +345,26 @@ boost::uint16_t SWFStream::read_u16()
throw ParserException(_("Unexpected end of stream while reading"));
}
- boost::uint32_t result = buf[0];
+ std::uint32_t result = buf[0];
result |= (buf[1] << 8);
return result;
#endif
}
-boost::int16_t SWFStream::read_s16()
+std::int16_t SWFStream::read_s16()
{
// read_u16 will align
return read_u16();
}
-boost::uint32_t SWFStream::read_u32()
+std::uint32_t SWFStream::read_u32()
{
#ifdef USE_TU_FILE_BYTESWAPPING
align();
return m_input->read_le32();
#else
- using boost::uint32_t;
+ using std::uint32_t;
const unsigned short dataLength = 4;
@@ -393,7 +385,7 @@ boost::uint32_t SWFStream::read_u32()
#endif
}
-boost::int32_t SWFStream::read_s32()
+std::int32_t SWFStream::read_s32()
{
// read_u32 will align
return read_u32();
diff --git a/libcore/SWFStream.h b/libcore/SWFStream.h
index a89eb6c..19c8b5f 100644
--- a/libcore/SWFStream.h
+++ b/libcore/SWFStream.h
@@ -27,7 +27,7 @@
#include <string>
#include <sstream>
#include <vector> // for composition
-#include <boost/cstdint.hpp> // for boost::?int??_t
+#include <cstdint> // for boost::?int??_t
// Define the following macro if you want to want Gnash parser
// to assume the underlying SWF is well-formed. It would make
@@ -111,12 +111,6 @@ public:
///
float read_short_sfixed();
- /// Read a 16bit (1:sign 5:exp 10:mantissa) floating point value
- //
- /// aligned read
- ///
- float read_short_float();
-
/// Read a 32bit (1:sign 8:exp 23:mantissa) floating point value
//
/// aligned read
@@ -154,38 +148,38 @@ public:
//
/// aligned read
///
- boost::uint8_t read_u8();
+ std::uint8_t read_u8();
/// Read a aligned signed 8-bit value from the stream.
//
/// aligned read
///
- boost::int8_t read_s8();
+ std::int8_t read_s8();
/// Read a aligned unsigned 16-bit value from the stream.
//
/// aligned read
///
- boost::uint16_t read_u16();
+ std::uint16_t read_u16();
/// Read a aligned signed 16-bit value from the stream.
//
/// aligned read
///
- boost::int16_t read_s16();
+ std::int16_t read_s16();
/// Read a aligned unsigned 32-bit value from the stream.
//
/// aligned read
///
- boost::uint32_t read_u32();
+ std::uint32_t read_u32();
/// \brief
/// Read a aligned signed 32-bit value from the stream.
//
/// aligned read
///
- boost::int32_t read_s32();
+ std::int32_t read_s32();
/// \brief
/// Read a variable length unsigned 32-bit value from the stream.
@@ -194,10 +188,10 @@ public:
//
/// aligned read
///
- boost::uint32_t read_V32()
+ std::uint32_t read_V32()
{
ensureBytes(1);
- boost::uint32_t res = read_u8();
+ std::uint32_t res = read_u8();
if (!(res & 0x00000080)) return res;
ensureBytes(1);
@@ -421,8 +415,8 @@ public:
private:
IOChannel* m_input;
- boost::uint8_t m_current_byte;
- boost::uint8_t m_unused_bits;
+ std::uint8_t m_current_byte;
+ std::uint8_t m_unused_bits;
typedef std::pair<unsigned long,unsigned long> TagBoundaries;
// position of start and end of tag
diff --git a/libcore/Shape.cpp b/libcore/Shape.cpp
index b92ae9f..cfb1c3b 100644
--- a/libcore/Shape.cpp
+++ b/libcore/Shape.cpp
@@ -24,7 +24,7 @@
namespace gnash {
bool
-Shape::pointInShape(boost::int32_t x, boost::int32_t y) const
+Shape::pointInShape(std::int32_t x, std::int32_t y) const
{
SWFMatrix wm = getWorldMatrix(*this);
wm.invert();
@@ -41,15 +41,8 @@ Shape::pointInShape(boost::int32_t x, boost::int32_t y) const
// in DrawingApiTest (kind of a fill-leakage making
// the collision detection find you inside a self-crossing
// shape).
- if (_def) {
- if (!_def->bounds().point_test(lp.x, lp.y)) return false;
- return _def->pointTestLocal(lp.x, lp.y, wm);
- }
- assert(_shape.get());
-
- if (!_shape->getBounds().point_test(lp.x, lp.y)) return false;
- return _shape->pointTestLocal(lp.x, lp.y, wm);
-
+ if (!_def->bounds().point_test(lp.x, lp.y)) return false;
+ return _def->pointTestLocal(lp.x, lp.y, wm);
}
void
@@ -57,8 +50,7 @@ Shape::display(Renderer& renderer, const Transform& base)
{
const Transform xform = base * transform();
- if (_def) _def->display(renderer, xform);
- else _shape->display(renderer, xform);
+ _def->display(renderer, xform);
clear_invalidated();
}
diff --git a/libcore/Shape.h b/libcore/Shape.h
index 9fa39fc..dfaf84b 100644
--- a/libcore/Shape.h
+++ b/libcore/Shape.h
@@ -26,7 +26,6 @@
#include <boost/intrusive_ptr.hpp>
#include <cassert>
-#include <boost/shared_ptr.hpp>
namespace gnash {
@@ -37,18 +36,7 @@ namespace gnash {
/// SWF::DefinitionTag. A dynamic Shape object has a DynamicShape.
class Shape : public DisplayObject
{
-
public:
-
- Shape(movie_root& mr, as_object* object, boost::shared_ptr<DynamicShape> sh,
- DisplayObject* parent)
- :
- DisplayObject(mr, object, parent),
- _shape(sh)
- {
- assert(_shape.get());
- }
-
Shape(movie_root& mr, as_object* object, const SWF::DefineShapeTag* def,
DisplayObject* parent)
:
@@ -61,17 +49,15 @@ public:
virtual void display(Renderer& renderer, const Transform& xform);
virtual SWFRect getBounds() const {
- return _def ? _def->bounds() : _shape->getBounds();
+ return _def->bounds();
}
- virtual bool pointInShape(boost::int32_t x, boost::int32_t y) const;
+ virtual bool pointInShape(std::int32_t x, std::int32_t y) const;
private:
const boost::intrusive_ptr<const SWF::DefineShapeTag> _def;
- boost::shared_ptr<DynamicShape> _shape;
-
};
diff --git a/libcore/StaticText.cpp b/libcore/StaticText.cpp
index badd1b9..147b74a 100644
--- a/libcore/StaticText.cpp
+++ b/libcore/StaticText.cpp
@@ -35,18 +35,18 @@ StaticText::getStaticText(std::vector<const SWF::TextRecord*>& to,
return this;
}
- return 0;
+ return nullptr;
}
void
-StaticText::setSelectionColor(boost::uint32_t color)
+StaticText::setSelectionColor(std::uint32_t color)
{
// Drop any alpha value
_selectionColor.parseRGB(color & 0xffffff);
}
bool
-StaticText::pointInShape(boost::int32_t x, boost::int32_t y) const
+StaticText::pointInShape(std::int32_t x, std::int32_t y) const
{
// TODO: check actual point in shape, as tested
// in misc-ming.all/DefineTextTest.swf
diff --git a/libcore/StaticText.h b/libcore/StaticText.h
index f392a73..cba7729 100644
--- a/libcore/StaticText.h
+++ b/libcore/StaticText.h
@@ -85,13 +85,13 @@ public:
return _selectedText;
}
- void setSelectionColor(boost::uint32_t color);
+ void setSelectionColor(std::uint32_t color);
virtual SWFRect getBounds() const {
return _def->bounds();
}
- virtual bool pointInShape(boost::int32_t x, boost::int32_t y) const;
+ virtual bool pointInShape(std::int32_t x, std::int32_t y) const;
const rgba& selectionColor() const {
return _selectionColor;
diff --git a/libcore/SystemClock.cpp b/libcore/SystemClock.cpp
index 6714b06..8a949f0 100644
--- a/libcore/SystemClock.cpp
+++ b/libcore/SystemClock.cpp
@@ -22,13 +22,13 @@
#include "ClockTime.h" // for getting system time
-#include <boost/cstdint.hpp> // for boost::uint64_t typedef
+#include <cstdint> // for std::uint64_t typedef
namespace gnash {
namespace {
-boost::uint64_t
+std::uint64_t
fetchSystemTime()
{
// ClockTime::getTicks always returns milliseconds
diff --git a/libcore/SystemClock.h b/libcore/SystemClock.h
index 7ba7fb0..9934fbf 100644
--- a/libcore/SystemClock.h
+++ b/libcore/SystemClock.h
@@ -22,7 +22,7 @@
#include "VirtualClock.h" // for inheritance
-#include <boost/cstdint.hpp> // for boost::uint64_t typedef
+#include <cstdint> // for std::uint64_t typedef
#include "dsodefs.h"
namespace gnash
@@ -49,7 +49,7 @@ public:
private:
/// System time at time of start
- boost::uint64_t _startTime;
+ std::uint64_t _startTime;
};
diff --git a/libcore/TextField.cpp b/libcore/TextField.cpp
index e7ec6cc..6ff6e54 100644
--- a/libcore/TextField.cpp
+++ b/libcore/TextField.cpp
@@ -36,9 +36,7 @@
#include <cctype>
#include <utility>
#include <map>
-#include <boost/assign/list_of.hpp>
-#include <boost/bind.hpp>
-#include <boost/tuple/tuple.hpp>
+#include <functional>
#include "utf8.h"
#include "log.h"
@@ -89,7 +87,7 @@ TextField::TextField(as_object* object, DisplayObject* parent,
_borderColor(0,0,0,255),
_textColor(def.color()),
_alignment(def.alignment()),
- _font(0),
+ _font(nullptr),
m_cursor(0u),
_glyphcount(0u),
_scroll(0u),
@@ -145,7 +143,7 @@ TextField::TextField(as_object* object, DisplayObject* parent,
}
TextField::TextField(as_object* object, DisplayObject* parent,
- const SWFRect& bounds)
+ SWFRect bounds)
:
InteractiveObject(object, parent),
_url(""),
@@ -156,7 +154,7 @@ TextField::TextField(as_object* object, DisplayObject* parent,
_borderColor(0, 0, 0, 255),
_textColor(0, 0, 0, 255),
_alignment(ALIGN_LEFT),
- _font(0),
+ _font(nullptr),
m_cursor(0u),
_glyphcount(0u),
_scroll(0u),
@@ -168,7 +166,7 @@ TextField::TextField(as_object* object, DisplayObject* parent,
_maxChars(0),
_autoSize(AUTOSIZE_NONE),
_type(typeDynamic),
- _bounds(bounds),
+ _bounds(std::move(bounds)),
_selection(0, 0),
_leading(0),
_indent(0),
@@ -249,9 +247,9 @@ TextField::show_cursor(Renderer& renderer, const SWFMatrix& mat)
if (_textRecords.empty()) {
return;
}
- boost::uint16_t x;
- boost::uint16_t y;
- boost::uint16_t h;
+ std::uint16_t x;
+ std::uint16_t y;
+ std::uint16_t h;
size_t i = cursorRecord();
SWF::TextRecord record = _textRecords[i];
@@ -265,9 +263,9 @@ TextField::show_cursor(Renderer& renderer, const SWFMatrix& mat)
}
}
- const std::vector<point> line = boost::assign::list_of
- (point(x, y))
- (point(x, y + h));
+ const std::vector<point> line = {
+ point(x, y),
+ point(x, y + h)};
renderer.drawLine(line, rgba(0, 0, 0, 255), mat);
}
@@ -305,16 +303,16 @@ TextField::display(Renderer& renderer, const Transform& base)
if ((drawBorder || drawBackground) && !_bounds.is_null()) {
- boost::int32_t xmin = _bounds.get_x_min();
- boost::int32_t xmax = _bounds.get_x_max();
- boost::int32_t ymin = _bounds.get_y_min();
- boost::int32_t ymax = _bounds.get_y_max();
+ std::int32_t xmin = _bounds.get_x_min();
+ std::int32_t xmax = _bounds.get_x_max();
+ std::int32_t ymin = _bounds.get_y_min();
+ std::int32_t ymax = _bounds.get_y_max();
- const std::vector<point> coords = boost::assign::list_of
- (point(xmin, ymin))
- (point(xmax, ymin))
- (point(xmax, ymax))
- (point(xmin, ymax));
+ const std::vector<point> coords = {
+ point(xmin, ymin),
+ point(xmax, ymin),
+ point(xmax, ymax),
+ point(xmin, ymax)};
rgba borderColor = drawBorder ? getBorderColor() : rgba(0,0,0,0);
rgba backgroundColor = drawBackground ? getBackgroundColor() :
@@ -739,7 +737,7 @@ TextField::mouseEvent(const event_id& ev)
case event_id::PRESS:
{
movie_root& root = stage();
- boost::int32_t x_mouse, y_mouse;
+ std::int32_t x_mouse, y_mouse;
boost::tie(x_mouse, y_mouse) = root.mousePosition();
SWFMatrix m = getMatrix(*this);
@@ -749,12 +747,12 @@ TextField::mouseEvent(const event_id& ev)
SWF::TextRecord rec;
- for (size_t i=0; i < _textRecords.size(); ++i) {
- if ((x_mouse > _textRecords[i].xOffset()) &&
- (x_mouse < _textRecords[i].xOffset()+_textRecords[i].recordWidth()) &&
- (y_mouse > _textRecords[i].yOffset()-_textRecords[i].textHeight()) &&
- (y_mouse < _textRecords[i].yOffset())) {
- rec = _textRecords[i];
+ for (auto& record: _textRecords) {
+ if ((x_mouse > record.xOffset()) &&
+ (x_mouse < record.xOffset()+record.recordWidth()) &&
+ (y_mouse > record.yOffset()-record.textHeight()) &&
+ (y_mouse < record.yOffset())) {
+ rec = record;
break;
}
}
@@ -772,12 +770,12 @@ TextField::mouseEvent(const event_id& ev)
}
InteractiveObject*
-TextField::topmostMouseEntity(boost::int32_t x, boost::int32_t y)
+TextField::topmostMouseEntity(std::int32_t x, std::int32_t y)
{
- if (!visible()) return 0;
+ if (!visible()) return nullptr;
// Not selectable, so don't catch mouse events!
- if (!_selectable) return 0;
+ if (!_selectable) return nullptr;
SWFMatrix m = getMatrix(*this);
point p(x, y);
@@ -785,7 +783,7 @@ TextField::topmostMouseEntity(boost::int32_t x, boost::int32_t y)
if (_bounds.point_test(p.x, p.y)) return this;
- return 0;
+ return nullptr;
}
void
@@ -957,7 +955,7 @@ TextField::setFont(boost::intrusive_ptr<const Font> newfont)
void
-TextField::insertTab(SWF::TextRecord& rec, boost::int32_t& x, float scale)
+TextField::insertTab(SWF::TextRecord& rec, std::int32_t& x, float scale)
{
// tab (ASCII HT)
const int space = 32;
@@ -979,10 +977,10 @@ TextField::insertTab(SWF::TextRecord& rec, boost::int32_t& x, float scale)
if (!_tabStops.empty()) {
int tab = _tabStops.back() + 1;
- for (size_t i = 0; i < tabStops.size(); ++i) {
- if (tabStops[i] > x) {
- if((tabStops[i] - x) < tab) {
- tab = tabStops[i] - x;
+ for (auto& tabStop : tabStops) {
+ if (tabStop > x) {
+ if((tabStop - x) < tab) {
+ tab = tabStop - x;
}
}
@@ -1047,16 +1045,16 @@ TextField::format_text()
return;
}
- boost::uint16_t fontHeight = getFontHeight();
+ std::uint16_t fontHeight = getFontHeight();
const float scale = fontHeight /
static_cast<float>(_font->unitsPerEM(_embedFonts));
// TODO: work out how leading affects things.
const float fontLeading = 0;
- const boost::uint16_t leftMargin = getLeftMargin();
- const boost::uint16_t indent = getIndent();
- const boost::uint16_t blockIndent = getBlockIndent();
+ const std::uint16_t leftMargin = getLeftMargin();
+ const std::uint16_t indent = getIndent();
+ const std::uint16_t blockIndent = getBlockIndent();
const bool underlined = getUnderlined();
/// Remember the current bounds for autosize.
@@ -1103,8 +1101,8 @@ TextField::format_text()
rec.addGlyph(ge, 4);
}
- boost::int32_t x = static_cast<boost::int32_t>(rec.xOffset());
- boost::int32_t y = static_cast<boost::int32_t>(rec.yOffset());
+ std::int32_t x = static_cast<std::int32_t>(rec.xOffset());
+ std::int32_t y = static_cast<std::int32_t>(rec.yOffset());
// Start the bbox at the upper-left corner of the first glyph.
//reset_bounding_box(x, y + fontHeight);
@@ -1164,7 +1162,7 @@ TextField::format_text()
void
TextField::scrollLines()
{
- boost::uint16_t fontHeight = getFontHeight();
+ std::uint16_t fontHeight = getFontHeight();
const float fontLeading = 0;
_linesindisplay = _bounds.height() / (fontHeight + fontLeading + PADDING_TWIPS);
@@ -1204,7 +1202,7 @@ TextField::scrollLines()
}
void
-TextField::newLine(boost::int32_t& x, boost::int32_t& y,
+TextField::newLine(std::int32_t& x, std::int32_t& y,
SWF::TextRecord& rec, int& last_space_glyph,
LineStarts::value_type& last_line_start_record, float div)
{
@@ -1292,8 +1290,8 @@ TextField::newLine(boost::int32_t& x, boost::int32_t& y,
void
TextField::handleChar(std::wstring::const_iterator& it,
- const std::wstring::const_iterator& e, boost::int32_t& x,
- boost::int32_t& y, SWF::TextRecord& rec, int& last_code,
+ const std::wstring::const_iterator& e, std::int32_t& x,
+ std::int32_t& y, SWF::TextRecord& rec, int& last_code,
int& last_space_glyph, LineStarts::value_type& last_line_start_record)
{
LineStarts::iterator linestartit = _line_starts.begin();
@@ -1307,7 +1305,7 @@ TextField::handleChar(std::wstring::const_iterator& it,
const float leading = 0;
const float fontLeading = 0;
- boost::uint32_t code = 0;
+ std::uint32_t code = 0;
while (it != e)
{
code = *it++;
@@ -1435,7 +1433,7 @@ TextField::handleChar(std::wstring::const_iterator& it,
}
else if (s == "FONT") {
//font
- boost::uint16_t originalsize = _fontHeight;
+ std::uint16_t originalsize = _fontHeight;
attloc = attributes.find("COLOR");
if (attloc != attributes.end()) {
std::string hexval(attloc->second);
@@ -1478,31 +1476,31 @@ TextField::handleChar(std::wstring::const_iterator& it,
(pixelsToTwips(std::strtol(
attloc->second.substr(1,attloc->second.length()-1).data(),
- NULL,10))));
+ nullptr,10))));
newrec.setYOffset(PADDING_TWIPS +
newrec.textHeight() +
(fontLeading - fontDescent));
_fontHeight += pixelsToTwips(std::strtol(
attloc->second.substr(1,attloc->second.length()-1).data(),
- NULL,10));
+ nullptr,10));
} else if (firstchar == "-") {
newrec.setTextHeight(rec.textHeight() -
(pixelsToTwips(std::strtol(
attloc->second.substr(1,attloc->second.length()-1).data(),
- NULL,10))));
+ nullptr,10))));
newrec.setYOffset(PADDING_TWIPS +
newrec.textHeight() +
(fontLeading - fontDescent));
_fontHeight -= pixelsToTwips(std::strtol(
attloc->second.substr(1,attloc->second.length()-1).data(),
- NULL,10));
+ nullptr,10));
} else {
newrec.setTextHeight(pixelsToTwips(std::strtol(
- attloc->second.data(), NULL, 10)));
+ attloc->second.data(), nullptr, 10)));
newrec.setYOffset(PADDING_TWIPS + newrec.textHeight() +
(fontLeading - fontDescent));
_fontHeight = pixelsToTwips(std::strtol(
- attloc->second.data(), NULL, 10));
+ attloc->second.data(), nullptr, 10));
}
}
handleChar(it, e, x, y, newrec, last_code,
@@ -1557,17 +1555,17 @@ TextField::handleChar(std::wstring::const_iterator& it,
else if (s == "TEXTFORMAT") {
log_debug("in textformat");
//textformat
- boost::uint16_t originalblockindent = getBlockIndent();
- boost::uint16_t originalindent = getIndent();
- boost::uint16_t originalleading = getLeading();
- boost::uint16_t originalleftmargin = getLeftMargin();
- boost::uint16_t originalrightmargin = getRightMargin();
+ std::uint16_t originalblockindent = getBlockIndent();
+ std::uint16_t originalindent = getIndent();
+ std::uint16_t originalleading = getLeading();
+ std::uint16_t originalleftmargin = getLeftMargin();
+ std::uint16_t originalrightmargin = getRightMargin();
std::vector<int> originaltabstops = getTabStops();
attloc = attributes.find("BLOCKINDENT");
if (attloc != attributes.end()) {
//textformat BLOCKINDENT attribute
setBlockIndent(pixelsToTwips(std::strtol(
- attloc->second.data(), NULL, 10)));
+ attloc->second.data(), nullptr, 10)));
if (newrec.xOffset() == std::max(0, originalleftmargin +
originalindent + originalblockindent) + PADDING_TWIPS) {
//if beginning of line, indent
@@ -1581,7 +1579,7 @@ TextField::handleChar(std::wstring::const_iterator& it,
if (attloc != attributes.end()) {
//textformat INDENT attribute
setIndent(pixelsToTwips(std::strtol(
- attloc->second.data(), NULL, 10)));
+ attloc->second.data(), nullptr, 10)));
if (newrec.xOffset() == std::max(0, originalleftmargin +
originalindent + getBlockIndent()) + PADDING_TWIPS) {
//if beginning of line, indent
@@ -1595,13 +1593,13 @@ TextField::handleChar(std::wstring::const_iterator& it,
if (attloc != attributes.end()) {
//textformat LEADING attribute
setLeading(pixelsToTwips(std::strtol(
- attloc->second.data(), NULL, 10)));
+ attloc->second.data(), nullptr, 10)));
}
attloc = attributes.find("LEFTMARGIN");
if (attloc != attributes.end()) {
//textformat LEFTMARGIN attribute
setLeftMargin(pixelsToTwips(std::strtol(
- attloc->second.data(), NULL, 10)));
+ attloc->second.data(), nullptr, 10)));
if (newrec.xOffset() == std::max(0, originalleftmargin +
getIndent() + getBlockIndent()) + PADDING_TWIPS) {
//if beginning of line, indent
@@ -1615,7 +1613,7 @@ TextField::handleChar(std::wstring::const_iterator& it,
if (attloc != attributes.end()) {
//textformat RIGHTMARGIN attribute
setRightMargin(pixelsToTwips(std::strtol(
- attloc->second.data(), NULL, 10)));
+ attloc->second.data(), nullptr, 10)));
//FIXME:Should not apply this to this line if we are not at
//beginning of line. Not sure how to do that.
}
@@ -1693,7 +1691,7 @@ TextField::handleChar(std::wstring::const_iterator& it,
// being chosen. Flash can currently only handle 16-bit
// values.
int index = rec.getFont()->get_glyph_index(
- static_cast<boost::uint16_t>(code), _embedFonts);
+ static_cast<std::uint16_t>(code), _embedFonts);
IF_VERBOSE_MALFORMED_SWF (
if (index == -1)
@@ -1777,7 +1775,7 @@ TextField::handleChar(std::wstring::const_iterator& it,
}
int index = rec.getFont()->get_glyph_index(
- static_cast<boost::uint16_t>(code), _embedFonts);
+ static_cast<std::uint16_t>(code), _embedFonts);
x += scale * rec.getFont()->get_advance(index, _embedFonts);
}
@@ -1892,7 +1890,7 @@ TextField::VariableRef
TextField::parseTextVariableRef(const std::string& variableName) const
{
VariableRef ret;
- ret.first = 0;
+ ret.first = nullptr;
#ifdef DEBUG_DYNTEXT_VARIABLES
log_debug("VariableName: %s", variableName);
@@ -2189,7 +2187,7 @@ TextField::set_variable_name(const std::string& newname)
}
bool
-TextField::pointInShape(boost::int32_t x, boost::int32_t y) const
+TextField::pointInShape(std::int32_t x, std::int32_t y) const
{
const SWFMatrix wm = getWorldMatrix(*this).invert();
point lp(x, y);
@@ -2265,7 +2263,8 @@ TextField::setTextColor(const rgba& col)
set_invalidated();
_textColor = col;
std::for_each(_displayRecords.begin(), _displayRecords.end(),
- boost::bind(&SWF::TextRecord::setColor, _1, _textColor));
+ std::bind(&SWF::TextRecord::setColor, std::placeholders::_1,
+ _textColor));
}
}
@@ -2290,7 +2289,7 @@ TextField::setWordWrap(bool wrap)
}
void
-TextField::setLeading(boost::int16_t h)
+TextField::setLeading(std::int16_t h)
{
if (_leading != h) {
set_invalidated();
@@ -2364,7 +2363,7 @@ TextField::setAlignment(TextAlignment h)
}
void
-TextField::setIndent(boost::uint16_t h)
+TextField::setIndent(std::uint16_t h)
{
if (_indent != h) {
set_invalidated();
@@ -2373,7 +2372,7 @@ TextField::setIndent(boost::uint16_t h)
}
void
-TextField::setBlockIndent(boost::uint16_t h)
+TextField::setBlockIndent(std::uint16_t h)
{
if (_blockIndent != h) {
set_invalidated();
@@ -2382,7 +2381,7 @@ TextField::setBlockIndent(boost::uint16_t h)
}
void
-TextField::setRightMargin(boost::uint16_t h)
+TextField::setRightMargin(std::uint16_t h)
{
if (_rightMargin != h) {
set_invalidated();
@@ -2391,7 +2390,7 @@ TextField::setRightMargin(boost::uint16_t h)
}
void
-TextField::setLeftMargin(boost::uint16_t h)
+TextField::setLeftMargin(std::uint16_t h)
{
if (_leftMargin != h) {
set_invalidated();
@@ -2400,7 +2399,7 @@ TextField::setLeftMargin(boost::uint16_t h)
}
void
-TextField::setFontHeight(boost::uint16_t h)
+TextField::setFontHeight(std::uint16_t h)
{
if (_fontHeight != h) {
set_invalidated();
diff --git a/libcore/TextField.h b/libcore/TextField.h
index 78df198..6544cc0 100644
--- a/libcore/TextField.h
+++ b/libcore/TextField.h
@@ -115,7 +115,7 @@ public:
/// Notably, the default textHeight is 12pt (240 twips).
/// @param parent A pointer to the DisplayObject parent of this TextField
/// @param bounds A SWFRect specifying the bounds of this TextField
- TextField(as_object* object, DisplayObject* parent, const SWFRect& bounds);
+ TextField(as_object* object, DisplayObject* parent, SWFRect bounds);
~TextField();
@@ -128,7 +128,7 @@ public:
//
/// @param x x-coordinate
/// @param y y-coordinate
- InteractiveObject* topmostMouseEntity(boost::int32_t x, boost::int32_t y);
+ InteractiveObject* topmostMouseEntity(std::int32_t x, std::int32_t y);
/// Return the version of the SWF this was parsed from.
//
@@ -219,7 +219,7 @@ public:
}
// See dox in DisplayObject.h
- bool pointInShape(boost::int32_t x, boost::int32_t y) const;
+ bool pointInShape(std::int32_t x, std::int32_t y) const;
/// Return true if the 'background' should be drawn
bool getDrawBackground() const;
@@ -277,7 +277,7 @@ public:
}
/// Get the current maxChars setting of the TextField
- boost::int32_t maxChars() const {
+ std::int32_t maxChars() const {
return _maxChars;
}
@@ -285,7 +285,7 @@ public:
//
/// @param max The maximum number of characters that can be
/// input by the user (Does not restrict Scripts)
- void maxChars(boost::int32_t max) {
+ void maxChars(std::int32_t max) {
_maxChars = max;
}
@@ -446,40 +446,40 @@ public:
const Font* getFont() { return _font.get(); }
- boost::uint16_t getFontHeight() const
+ std::uint16_t getFontHeight() const
{
return _fontHeight;
}
- void setFontHeight(boost::uint16_t h);
+ void setFontHeight(std::uint16_t h);
- boost::uint16_t getLeftMargin() const
+ std::uint16_t getLeftMargin() const
{
return _leftMargin;
}
- void setLeftMargin(boost::uint16_t h);
+ void setLeftMargin(std::uint16_t h);
- boost::uint16_t getRightMargin() const
+ std::uint16_t getRightMargin() const
{
return _rightMargin;
}
- void setRightMargin(boost::uint16_t h);
+ void setRightMargin(std::uint16_t h);
- boost::uint16_t getIndent() const
+ std::uint16_t getIndent() const
{
return _indent;
}
- void setIndent(boost::uint16_t h);
+ void setIndent(std::uint16_t h);
- boost::uint16_t getBlockIndent() const
+ std::uint16_t getBlockIndent() const
{
return _blockIndent;
}
- void setBlockIndent(boost::uint16_t h);
+ void setBlockIndent(std::uint16_t h);
TextAlignment getAlignment() const
{
@@ -488,12 +488,12 @@ public:
void setAlignment(TextAlignment h);
- boost::int16_t getLeading() const
+ std::int16_t getLeading() const
{
return _leading;
}
- void setLeading(boost::int16_t h);
+ void setLeading(std::int16_t h);
bool getUnderlined() const
{
@@ -608,7 +608,7 @@ private:
void updateHtmlText(const std::wstring& s);
- void insertTab(SWF::TextRecord& rec, boost::int32_t& x, float scale);
+ void insertTab(SWF::TextRecord& rec, std::int32_t& x, float scale);
/// What happens when setFocus() is called on this TextField.
//
@@ -623,7 +623,7 @@ private:
void onChanged();
/// Reset our text bounding box to the given point.
- void reset_bounding_box(boost::int32_t x, boost::int32_t y)
+ void reset_bounding_box(std::int32_t x, std::int32_t y)
{
m_text_bounding_box.set_to_point(x, y);
}
@@ -637,14 +637,14 @@ private:
/// Handles a new line, this will be called several times, so this
/// will hopefully make code cleaner
- void newLine(boost::int32_t& x, boost::int32_t& y,
+ void newLine(std::int32_t& x, std::int32_t& y,
SWF::TextRecord& rec, int& last_space_glyph,
LineStarts::value_type& last_line_start_record, float div);
/// De-reference and do appropriate action for character iterator
void handleChar(std::wstring::const_iterator& it,
- const std::wstring::const_iterator& e, boost::int32_t& x,
- boost::int32_t& y, SWF::TextRecord& rec, int& last_code,
+ const std::wstring::const_iterator& e, std::int32_t& x,
+ std::int32_t& y, SWF::TextRecord& rec, int& last_code,
int& last_space_glyph,
LineStarts::value_type& last_line_start_record);
@@ -782,18 +782,18 @@ private:
/// never be less than the first.
std::pair<size_t, size_t> _selection;
- boost::int16_t _leading;
- boost::uint16_t _indent;
+ std::int16_t _leading;
+ std::uint16_t _indent;
/// Indentation for every line (including the ones created by
/// effect of a word-wrap.
- boost::uint16_t _blockIndent;
+ std::uint16_t _blockIndent;
- boost::uint16_t _leftMargin;
+ std::uint16_t _leftMargin;
- boost::uint16_t _rightMargin;
+ std::uint16_t _rightMargin;
- boost::uint16_t _fontHeight;
+ std::uint16_t _fontHeight;
/// This flag will be true as soon as the TextField
/// is assigned a text value. Only way to be false is
diff --git a/libcore/Timers.cpp b/libcore/Timers.cpp
index a44f798..88d627d 100644
--- a/libcore/Timers.cpp
+++ b/libcore/Timers.cpp
@@ -38,28 +38,28 @@ Timer::~Timer()
}
Timer::Timer(as_function& method, unsigned long ms,
- as_object* this_ptr, const fn_call::Args& args, bool runOnce)
+ as_object* this_ptr, fn_call::Args args, bool runOnce)
:
_interval(ms),
_start(std::numeric_limits<unsigned long>::max()),
_function(&method),
_methodName(),
_object(this_ptr),
- _args(args),
+ _args(std::move(args)),
_runOnce(runOnce)
{
start();
}
-Timer::Timer(as_object* this_ptr, const ObjectURI& methodName,
- unsigned long ms, const fn_call::Args& args, bool runOnce)
+Timer::Timer(as_object* this_ptr, ObjectURI methodName,
+ unsigned long ms, fn_call::Args args, bool runOnce)
:
_interval(ms),
_start(std::numeric_limits<unsigned long>::max()),
- _function(0),
- _methodName(methodName),
+ _function(nullptr),
+ _methodName(std::move(methodName)),
_object(this_ptr),
- _args(args),
+ _args(std::move(args)),
_runOnce(runOnce)
{
start();
diff --git a/libcore/Timers.h b/libcore/Timers.h
index dac3f52..4c88d1c 100644
--- a/libcore/Timers.h
+++ b/libcore/Timers.h
@@ -73,7 +73,7 @@ public:
/// @param runOnce
/// If true the interval will run only once. False if omitted.
Timer(as_function& method, unsigned long ms, as_object* this_ptr,
- const fn_call::Args& args, bool runOnce = false);
+ fn_call::Args args, bool runOnce = false);
/// Construct the Timer to call a late-evaluated object method, enabling it.
//
@@ -94,8 +94,8 @@ public:
///
/// @param runOnce
/// If true the interval will run only once. False if omitted.
- Timer(as_object* obj, const ObjectURI& methodName, unsigned long ms,
- const fn_call::Args& args, bool runOnce = false);
+ Timer(as_object* obj, ObjectURI methodName, unsigned long ms,
+ fn_call::Args args, bool runOnce = false);
/// Clear the timer, ready for reuse
//
diff --git a/libcore/Transform.h b/libcore/Transform.h
index cd334c6..d254112 100644
--- a/libcore/Transform.h
+++ b/libcore/Transform.h
@@ -22,6 +22,7 @@
#include "SWFMatrix.h"
#include "SWFCxForm.h"
+#include <utility>
namespace gnash {
@@ -36,11 +37,11 @@ public:
/// Construct a Transform
//
/// Any arguments not supplied are identity transformations.
- explicit Transform(const SWFMatrix& m = SWFMatrix(),
- const SWFCxForm& cx = SWFCxForm())
+ explicit Transform(SWFMatrix m = SWFMatrix(),
+ SWFCxForm cx = SWFCxForm())
:
- matrix(m),
- colorTransform(cx)
+ matrix(std::move(m)),
+ colorTransform(std::move(cx))
{}
Transform(const Transform& other)
diff --git a/libcore/UserFunction.h b/libcore/UserFunction.h
index 709cd9e..204ffa3 100644
--- a/libcore/UserFunction.h
+++ b/libcore/UserFunction.h
@@ -42,7 +42,7 @@ public:
//
/// Only Function2 functions require local registers; for all others
/// the value should be 0.
- virtual boost::uint8_t registers() const = 0;
+ virtual std::uint8_t registers() const = 0;
protected:
diff --git a/libcore/Video.cpp b/libcore/Video.cpp
index 7f992db..6666bae 100644
--- a/libcore/Video.cpp
+++ b/libcore/Video.cpp
@@ -20,7 +20,7 @@
#include "Video.h"
-#include <boost/bind.hpp>
+#include <functional>
#include <cassert>
#include "DefineVideoStreamTag.h"
@@ -43,7 +43,7 @@ Video::Video(as_object* object,
:
DisplayObject(getRoot(*object), object, parent),
m_def(def),
- _ns(0),
+ _ns(nullptr),
_embeddedStream(m_def),
_lastDecodedVideoFrameNum(-1),
_lastDecodedVideoFrame(),
@@ -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
@@ -139,7 +139,7 @@ Video::getVideoFrame()
return _lastDecodedVideoFrame.get();
}
- const boost::uint16_t current_frame = get_ratio();
+ const std::uint16_t current_frame = get_ratio();
#ifdef DEBUG_EMBEDDED_VIDEO_DECODING
log_debug("Video instance %s need display video frame (ratio) %d",
@@ -160,7 +160,7 @@ Video::getVideoFrame()
// TODO: find a better way than using -1 to show that no
// frames have been decoded yet.
assert(_lastDecodedVideoFrameNum >= -1);
- boost::uint16_t from_frame = _lastDecodedVideoFrameNum + 1;
+ std::uint16_t from_frame = _lastDecodedVideoFrameNum + 1;
// If current frame is smaller then last decoded frame
// we restart decoding from scratch
@@ -183,8 +183,8 @@ Video::getVideoFrame()
#endif
const size_t frames = m_def->visitSlice(
- boost::bind(boost::mem_fn(&media::VideoDecoder::push),
- _decoder.get(), _1),
+ std::bind(std::mem_fn(&media::VideoDecoder::push),
+ _decoder.get(), std::placeholders::_1),
from_frame, current_frame);
if (!frames) return _lastDecodedVideoFrame.get();
diff --git a/libcore/Video.h b/libcore/Video.h
index d7d4242..157cb99 100644
--- a/libcore/Video.h
+++ b/libcore/Video.h
@@ -55,7 +55,7 @@ public:
~Video();
- virtual bool pointInShape(boost::int32_t x, boost::int32_t y) const
+ virtual bool pointInShape(std::int32_t x, std::int32_t y) const
{
// video DisplayObject shape is always a rectangle..
return pointInBounds(x, y);
@@ -64,7 +64,7 @@ public:
virtual SWFRect getBounds() const;
/// Register this video instance as a live DisplayObject
- virtual void construct(as_object* init = 0);
+ virtual void construct(as_object* init = nullptr);
virtual void display(Renderer& renderer, const Transform& xform);
@@ -120,17 +120,17 @@ private:
bool _embeddedStream;
/// Last decoded frame number
- boost::int32_t _lastDecodedVideoFrameNum;
+ std::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/abc/AbcBlock.cpp b/libcore/abc/AbcBlock.cpp
index d6a1ebd..1b11bfd 100644
--- a/libcore/abc/AbcBlock.cpp
+++ b/libcore/abc/AbcBlock.cpp
@@ -32,7 +32,7 @@
#include "Machine.h"
#include "Global_as.h"
-#include <boost/bind.hpp>
+#include <functional>
namespace gnash {
@@ -182,7 +182,7 @@ Trait::finalize_mbody(AbcBlock *block, Method *pMethod)
bool
Trait::read(SWFStream* in, AbcBlock *block)
{
- boost::uint32_t name = in->read_V32();
+ std::uint32_t name = in->read_V32();
if (name >= block->_multinamePool.size())
{
log_error(_("ABC: Bad name for trait."));
@@ -198,7 +198,7 @@ Trait::read(SWFStream* in, AbcBlock *block)
_globalName = block->_multinamePool[name].getGlobalName();
_namespace = block->_multinamePool[name].getNamespace();
- boost::uint8_t kind = in->read_u8();
+ std::uint8_t kind = in->read_u8();
_kind = static_cast<Kind>(kind & 0x0F);
log_abc("Trait name: %s, Trait kind: %s",
@@ -211,7 +211,7 @@ Trait::read(SWFStream* in, AbcBlock *block)
{
_slotID = in->read_V32();
_typeIndex = in->read_V32();
- boost::uint32_t vindex = in->read_V32();
+ std::uint32_t vindex = in->read_V32();
log_abc("Slot ID=%u Type=%s Pool index=%u", _slotID,
block->_stringPool[
block->_multinamePool[_typeIndex].getABCName()], vindex);
@@ -234,7 +234,7 @@ Trait::read(SWFStream* in, AbcBlock *block)
// Ignore the 'disp_id'
in->skip_V32();
- boost::uint32_t offset = in->read_V32();
+ std::uint32_t offset = in->read_V32();
log_abc("Method index=%u", offset);
if (offset >= block->_methods.size()) {
log_error(_("Bad method id in trait."));
@@ -261,7 +261,7 @@ Trait::read(SWFStream* in, AbcBlock *block)
case KIND_FUNCTION:
{
_slotID = in->read_V32();
- boost::uint32_t offset = in->read_V32();
+ std::uint32_t offset = in->read_V32();
if (offset >= block->_methods.size()) {
log_error(_("Bad method id in trait."));
return false;
@@ -277,7 +277,7 @@ Trait::read(SWFStream* in, AbcBlock *block)
// Ignore the metadata, but it must be read to know how to ignore it.
if ((kind >> 4) & 0x04) {
- boost::uint32_t mcount = in->read_V32();
+ std::uint32_t mcount = in->read_V32();
for (size_t i = 0; i < mcount; ++i) {
in->skip_V32();
}
@@ -334,24 +334,24 @@ AbcBlock::prepare(Machine* mach)
// scripts have Global as a target object (prototype), so for now we
// will do that.
std::for_each(_scripts.begin(), _scripts.end(),
- boost::bind(&abc::Class::setPrototype, _1, mach->global()));
+ std::bind(&abc::Class::setPrototype, _1, mach->global()));
std::for_each(_methods.begin(), _methods.end(),
- boost::bind(&Method::initPrototype, _1, mach));
+ std::bind(&Method::initPrototype, _1, mach));
// TODO: Remove this, initialize traits only when needed; possibly
// consruct them on parsing without the need for a finalize method.
std::for_each(_methods.begin(), _methods.end(),
- boost::bind(&abc::Method::initTraits, _1, *this));
+ std::bind(&abc::Method::initTraits, _1, *this));
std::for_each(_classes.begin(), _classes.end(),
- boost::bind(&abc::Class::initTraits, _1, *this));
+ std::bind(&abc::Class::initTraits, _1, *this));
std::for_each(_scripts.begin(), _scripts.end(),
- boost::bind(&abc::Class::initTraits, _1, *this));
+ std::bind(&abc::Class::initTraits, _1, *this));
}
void
-AbcBlock::check_multiname_name(boost::uint32_t name)
+AbcBlock::check_multiname_name(std::uint32_t name)
{
if (name >= _stringPool.size()) {
@@ -360,7 +360,7 @@ AbcBlock::check_multiname_name(boost::uint32_t name)
}
void
-AbcBlock::check_multiname_namespace(boost::uint32_t ns)
+AbcBlock::check_multiname_namespace(std::uint32_t ns)
{
if (ns >= _namespacePool.size()) {
throw ParserException("ABC: Out of bounds namespace for Multiname.");
@@ -368,7 +368,7 @@ AbcBlock::check_multiname_namespace(boost::uint32_t ns)
}
void
-AbcBlock::check_multiname_namespaceset(boost::uint32_t nsset)
+AbcBlock::check_multiname_namespaceset(std::uint32_t nsset)
{
if (!nsset)
{
@@ -475,13 +475,13 @@ bool
AbcBlock::read_integer_constants()
{
// count overestimates by 1.
- boost::uint32_t count = _stream->read_V32();
+ std::uint32_t count = _stream->read_V32();
_integerPool.resize(count);
if (count)
_integerPool[0] = 0;
for (unsigned int i = 1; i < count; ++i)
{
- _integerPool[i] = static_cast<boost::int32_t> (_stream->read_V32());
+ _integerPool[i] = static_cast<std::int32_t> (_stream->read_V32());
}
return true;
}
@@ -491,7 +491,7 @@ bool
AbcBlock::read_unsigned_integer_constants()
{
// count overestimates by 1.
- boost::uint32_t count = _stream->read_V32();
+ std::uint32_t count = _stream->read_V32();
_uIntegerPool.resize(count);
if (count)
_uIntegerPool[0] = 0;
@@ -506,7 +506,7 @@ AbcBlock::read_unsigned_integer_constants()
bool
AbcBlock::read_double_constants()
{
- boost::uint32_t count = _stream->read_V32();
+ std::uint32_t count = _stream->read_V32();
_doublePool.resize(count);
if (count) _doublePool[0] = 0.0;
@@ -523,7 +523,7 @@ bool
AbcBlock::read_string_constants()
{
log_abc("Begin reading string constants.");
- boost::uint32_t count = _stream->read_V32();
+ std::uint32_t count = _stream->read_V32();
log_abc("There are %u string constants.", count);
_stringPool.resize(count);
@@ -532,7 +532,7 @@ AbcBlock::read_string_constants()
}
for (size_t i = 1; i < count; ++i) {
- boost::uint32_t length = _stream->read_V32();
+ std::uint32_t length = _stream->read_V32();
_stream->read_string_with_length(length, _stringPool[i]);
log_abc("Adding string constant to string pool: index=%u %s",
i, _stringPool[i]);
@@ -547,7 +547,7 @@ bool
AbcBlock::read_namespaces()
{
log_abc("Begin reading namespaces.");
- boost::uint32_t count = _stream->read_V32();
+ std::uint32_t count = _stream->read_V32();
log_abc("There are %u namespaces.", count);
_namespacePool.resize(count);
if (count) {
@@ -559,7 +559,7 @@ AbcBlock::read_namespaces()
NamespaceConstant kind =
static_cast<NamespaceConstant>(_stream->read_u8());
- boost::uint32_t nameIndex = _stream->read_V32();
+ std::uint32_t nameIndex = _stream->read_V32();
log_abc("Namespace %u: %s, index %u, name %s", i, kind,
nameIndex, _stringPool[nameIndex]);
@@ -591,7 +591,7 @@ AbcBlock::read_namespaces()
bool
AbcBlock::read_namespace_sets()
{
- boost::uint32_t count = _stream->read_V32();
+ std::uint32_t count = _stream->read_V32();
_namespaceSetPool.resize(count);
if (count)
{
@@ -599,11 +599,11 @@ AbcBlock::read_namespace_sets()
}
for (unsigned int i = 1; i < count; ++i)
{
- boost::uint32_t icount = _stream->read_V32();
+ std::uint32_t icount = _stream->read_V32();
_namespaceSetPool[i].resize(icount);
for (unsigned int j = 0; j < icount; ++j)
{
- boost::uint32_t selection = _stream->read_V32();
+ std::uint32_t selection = _stream->read_V32();
if (!selection || selection >= _namespacePool.size())
{
log_error(_("ABC: Bad namespace for namespace set."));
@@ -619,7 +619,7 @@ AbcBlock::read_namespace_sets()
bool
AbcBlock::read_multinames()
{
- boost::uint32_t count = _stream->read_V32();
+ std::uint32_t count = _stream->read_V32();
log_abc("There are %u multinames.", count);
_multinamePool.resize(count);
if (count)
@@ -631,9 +631,9 @@ AbcBlock::read_multinames()
for (unsigned int i = 1; i < count; ++i)
{
MultiName::Kind kind = static_cast<MultiName::Kind>(_stream->read_u8());
- boost::uint32_t ns = 0;
- boost::uint32_t name = 0;
- boost::uint32_t nsset = 0;
+ std::uint32_t ns = 0;
+ std::uint32_t name = 0;
+ std::uint32_t nsset = 0;
log_abc("Multiname %u has kind %s", i, static_cast<int>(kind));
@@ -697,7 +697,7 @@ AbcBlock::read_multinames()
}
bool
-AbcBlock::pool_value(boost::uint32_t index, PoolConstant type, as_value &v)
+AbcBlock::pool_value(std::uint32_t index, PoolConstant type, as_value &v)
{
if (!index)
return true;
@@ -785,7 +785,7 @@ AbcBlock::read_method_infos()
{
log_abc("Begin read_method_infos.");
- boost::uint32_t count = _stream->read_V32();
+ std::uint32_t count = _stream->read_V32();
log_abc("Method count: %u", count);
_methods.resize(count);
@@ -795,8 +795,8 @@ AbcBlock::read_method_infos()
Method *pMethod = mCH->newMethod();
pMethod->setMethodID(i);
_methods[i] = pMethod;
- boost::uint32_t param_count = _stream->read_V32();
- boost::uint32_t return_type = _stream->read_V32();
+ std::uint32_t param_count = _stream->read_V32();
+ std::uint32_t return_type = _stream->read_V32();
const std::string& rt = return_type ?
_stringPool[_multinamePool[return_type].getABCName()] :
@@ -830,7 +830,7 @@ AbcBlock::read_method_infos()
for (size_t j = 0; j < param_count; ++j) {
log_abc(" Reading parameter %u", j);
// The parameter type.
- boost::uint32_t ptype = _stream->read_V32();
+ std::uint32_t ptype = _stream->read_V32();
const std::string& pt = return_type ?
_stringPool[_multinamePool[ptype].getABCName()] :
@@ -860,9 +860,9 @@ AbcBlock::read_method_infos()
}
}
- boost::uint32_t method_name = _stream->read_V32();
+ std::uint32_t method_name = _stream->read_V32();
log_abc( "Method name=%s %d", _stringPool[method_name], method_name);
- boost::uint8_t flags = _stream->read_u8();
+ std::uint8_t flags = _stream->read_u8();
log_abc(" Flags: %X", flags | 0x0);
// log_abc("Check if flags and optional args.");
// If there are default parameters, read them now.
@@ -870,13 +870,13 @@ AbcBlock::read_method_infos()
// be assigned to the corresponding parameters.
if (flags & METHOD_OPTIONAL_ARGS) {
- boost::uint32_t ocount = _stream->read_V32();
+ std::uint32_t ocount = _stream->read_V32();
log_abc(" Optional args: %u", ocount);
pMethod->setMinArgumentCount(pMethod->maxArgumentCount() - ocount);
for (unsigned int j = 0; j < ocount; ++j) {
log_abc(" Reading optional arg: %u", j);
- boost::uint32_t index = _stream->read_V32();
+ std::uint32_t index = _stream->read_V32();
PoolConstant kindof =
static_cast<PoolConstant>(_stream->read_u8());
@@ -910,11 +910,11 @@ AbcBlock::read_method_infos()
bool
AbcBlock::skip_metadata()
{
- boost::uint32_t count = _stream->read_V32();
+ std::uint32_t count = _stream->read_V32();
for (unsigned int i = 0; i < count; ++i)
{
_stream->skip_V32(); // A name index.
- boost::uint32_t icount = _stream->read_V32();
+ std::uint32_t icount = _stream->read_V32();
for (unsigned int j = 0; j < icount; ++j)
{
// key/values may not be stored together, but this still works.
@@ -929,12 +929,12 @@ AbcBlock::skip_metadata()
bool
AbcBlock::read_instances()
{
- boost::uint32_t count = _stream->read_V32();
+ std::uint32_t count = _stream->read_V32();
log_abc("There are %u instances.", count);
_classes.resize(count);
for (size_t i = 0; i < count; ++i) {
//Read multiname index.
- boost::uint32_t index = _stream->read_V32();
+ std::uint32_t index = _stream->read_V32();
// 0 is allowed as a name, typically for the last entry.
if (index >= _multinamePool.size()) {
log_error(_("ABC: Out of bounds instance name."));
@@ -978,7 +978,7 @@ AbcBlock::read_instances()
}
cl->setDeclared();
_classes[i] = cl;
- boost::uint32_t super_index = _stream->read_V32();
+ std::uint32_t super_index = _stream->read_V32();
if (super_index && super_index >= _multinamePool.size()) {
log_error(_("ABC: Bad super type."));
@@ -1018,7 +1018,7 @@ AbcBlock::read_instances()
pSuper->setInherited();
}
- boost::uint8_t flags = _stream->read_u8();
+ std::uint8_t flags = _stream->read_u8();
log_abc("Instance %u(%s) multiname index=%u name=%s super index=%u "
"flags=%X", i, cl, index,
_stringPool[_multinamePool[index].getABCName()],
@@ -1030,7 +1030,7 @@ AbcBlock::read_instances()
if ((flags & 7) == INSTANCE_DYNAMIC) cl->setDynamic();
if (flags & INSTANCE_PROTECTED_NS) {
- boost::uint32_t ns_index = _stream->read_V32();
+ std::uint32_t ns_index = _stream->read_V32();
if (ns_index >= _namespacePool.size()) {
log_error(_("ABC: Bad namespace for protected."));
return false;
@@ -1044,10 +1044,10 @@ AbcBlock::read_instances()
// This is the list of interfaces which the instances has agreed to
// implement. They must be interfaces, and they must exist.
- boost::uint32_t intcount = _stream->read_V32();
+ std::uint32_t intcount = _stream->read_V32();
log_abc("This instance has %u interfaces.", intcount);
for (size_t j = 0; j < intcount; ++j) {
- boost::uint32_t i_index = _stream->read_V32();
+ std::uint32_t i_index = _stream->read_V32();
log_abc("Interface %u has multiname index=%u", i, i_index);
// 0 is allowed as an interface, typically for the last one.
if (i_index >= _multinamePool.size()) {
@@ -1067,7 +1067,7 @@ AbcBlock::read_instances()
// The next thing should be the constructor.
// TODO: What does this mean exactly? How does it differ from the one in
// the class info block?
- boost::uint32_t offset = _stream->read_V32();
+ std::uint32_t offset = _stream->read_V32();
log_abc("Moffset: %u", offset);
if (offset >= _methods.size()) {
log_error(_("ABC: Out of bounds method for initializer."));
@@ -1077,7 +1077,7 @@ AbcBlock::read_instances()
cl->setConstructor(_methods[offset]);
// Next come the 'traits' of the instance. (The members.)
- boost::uint32_t tcount = _stream->read_V32();
+ std::uint32_t tcount = _stream->read_V32();
log_abc("Trait count: %u", tcount);
for (unsigned int j = 0; j < tcount; ++j)
{
@@ -1096,12 +1096,12 @@ AbcBlock::read_classes()
{
// Count was found in read_instances().
log_abc("Begin reading classes.");
- boost::uint32_t count = _classes.size();
+ std::uint32_t count = _classes.size();
log_abc("There are %u classes.", count);
for (size_t i = 0; i < count; ++i) {
abc::Class* cl = _classes[i];
- boost::uint32_t offset = _stream->read_V32();
+ std::uint32_t offset = _stream->read_V32();
log_abc("Class %u(%s) static constructor index=%u", i, cl, offset);
if (offset >= _methods.size()) {
@@ -1112,7 +1112,7 @@ AbcBlock::read_classes()
// Don't validate for previous owner.
cl->setStaticConstructor(_methods[offset]);
- boost::uint32_t tcount = _stream->read_V32();
+ std::uint32_t tcount = _stream->read_V32();
log_abc("This class has %u traits.", tcount);
for (size_t j = 0; j < tcount; ++j) {
Trait t;
@@ -1131,7 +1131,7 @@ AbcBlock::read_scripts()
{
log_abc("Begin reading scripts.");
- const boost::uint32_t scriptcount = _stream->read_V32();
+ const std::uint32_t scriptcount = _stream->read_V32();
log_abc("There are %u scripts.", scriptcount);
_scripts.resize(scriptcount);
@@ -1140,7 +1140,7 @@ AbcBlock::read_scripts()
abc::Class* script = mCH->newClass();
_scripts[i] = script;
- boost::uint32_t offset = _stream->read_V32();
+ std::uint32_t offset = _stream->read_V32();
log_abc("Reading script %u(%s) initializer method index=%u", i,
script, offset);
if (offset >= _methods.size()) {
@@ -1150,7 +1150,7 @@ AbcBlock::read_scripts()
script->setConstructor(_methods[offset]);
- const boost::uint32_t tcount = _stream->read_V32();
+ const std::uint32_t tcount = _stream->read_V32();
for (size_t j = 0; j < tcount; ++j) {
Trait t;
@@ -1172,11 +1172,11 @@ AbcBlock::read_scripts()
bool
AbcBlock::read_method_bodies()
{
- boost::uint32_t count = _stream->read_V32();
+ std::uint32_t count = _stream->read_V32();
log_abc("There are %u method bodies.", count);
for (unsigned int i = 0; i < count; ++i)
{
- boost::uint32_t offset = _stream->read_V32();
+ std::uint32_t offset = _stream->read_V32();
log_abc("Method body %u method offset=%u", i, offset);
if (offset >= _methods.size()) {
@@ -1204,7 +1204,7 @@ AbcBlock::read_method_bodies()
method.setMaxScope(_stream->read_V32());
// Code length
- boost::uint32_t clength = _stream->read_V32();
+ std::uint32_t clength = _stream->read_V32();
method.setBodyLength(clength);
// The code.
@@ -1219,7 +1219,7 @@ AbcBlock::read_method_bodies()
// Note: catch type and variable name are documented to be
// indices in the string pool, but they are in fact indices
// in the multiname pool.
- const boost::uint32_t ecount = _stream->read_V32();
+ const std::uint32_t ecount = _stream->read_V32();
for (unsigned int j = 0; j < ecount; ++j) {
asException *ex = mCH->newException();
@@ -1231,7 +1231,7 @@ AbcBlock::read_method_bodies()
ex->setCatch(_stream->read_V32());
// What types should be caught.
- boost::uint32_t catch_type = _stream->read_V32();
+ std::uint32_t catch_type = _stream->read_V32();
if (catch_type >= _multinamePool.size()) {
log_error(_("ABC: Out of bound type for exception."));
return false;
@@ -1259,7 +1259,7 @@ AbcBlock::read_method_bodies()
// A variable name for the catch type.
// In version 46.15, no names.
if (mVersion != ((46 << 16) | 15)) {
- boost::uint32_t cvn = _stream->read_V32();
+ std::uint32_t cvn = _stream->read_V32();
if (cvn >= _multinamePool.size()) {
log_error(_("ABC: Out of bound name for caught "
"exception."));
@@ -1271,7 +1271,7 @@ AbcBlock::read_method_bodies()
}
// Traits
- boost::uint32_t tcount = _stream->read_V32();
+ std::uint32_t tcount = _stream->read_V32();
for (unsigned int j = 0; j < tcount; ++j)
{
Trait t;
diff --git a/libcore/abc/AbcBlock.h b/libcore/abc/AbcBlock.h
index b75c422..2a25d0a 100644
--- a/libcore/abc/AbcBlock.h
+++ b/libcore/abc/AbcBlock.h
@@ -29,7 +29,6 @@
#include <vector>
#include <string>
-#include <boost/scoped_array.hpp>
#include <stdexcept>
namespace gnash {
@@ -132,9 +131,9 @@ private:
bool _hasValue;
Kind _kind;
- boost::uint32_t _slotID;
- boost::uint32_t _typeIndex;
- boost::uint32_t _classInfoIndex;
+ std::uint32_t _slotID;
+ std::uint32_t _typeIndex;
+ std::uint32_t _classInfoIndex;
as_value _value;
URI _name;
@@ -273,7 +272,7 @@ public:
return _scripts;
}
- boost::uint32_t uIntegerPoolAt(size_t i) const {
+ std::uint32_t uIntegerPoolAt(size_t i) const {
checkBounds(i, _uIntegerPool);
return _uIntegerPool[i];
}
@@ -283,7 +282,7 @@ public:
return _stringPool[i];
}
- boost::int32_t integerPoolAt(size_t i) const {
+ std::int32_t integerPoolAt(size_t i) const {
checkBounds(i, _integerPool);
return _integerPool[i];
}
@@ -319,7 +318,7 @@ private:
friend class abc::Trait;
- bool pool_value(boost::uint32_t index, PoolConstant type, as_value &v);
+ bool pool_value(std::uint32_t index, PoolConstant type, as_value &v);
bool read_version();
bool read_integer_constants();
@@ -336,18 +335,18 @@ private:
bool read_scripts();
bool read_method_bodies();
- void check_multiname_name(boost::uint32_t name);
+ void check_multiname_name(std::uint32_t name);
- void check_multiname_namespace(boost::uint32_t ns);
+ void check_multiname_namespace(std::uint32_t ns);
- void check_multiname_namespaceset(boost::uint32_t nsset);
+ void check_multiname_namespaceset(std::uint32_t nsset);
void setMultinameNames(MultiName *n, abc::URI ABCName);
void setNamespaceURI(Namespace *ns, abc::URI ABCName);
- std::vector<boost::int32_t> _integerPool;
- std::vector<boost::uint32_t> _uIntegerPool;
+ std::vector<std::int32_t> _integerPool;
+ std::vector<std::uint32_t> _uIntegerPool;
std::vector<double> _doublePool;
std::vector<std::string> _stringPool;
std::vector<Namespace*> _namespacePool;
@@ -363,7 +362,7 @@ private:
abc::Class *mTheObject;
ClassHierarchy *mCH;
- boost::uint32_t mVersion;
+ std::uint32_t mVersion;
};
diff --git a/libcore/abc/Class.cpp b/libcore/abc/Class.cpp
index 37b2692..0faf13b 100644
--- a/libcore/abc/Class.cpp
+++ b/libcore/abc/Class.cpp
@@ -33,14 +33,14 @@
#include "Method.h"
#include "abc_function.h"
-#include <boost/bind.hpp>
+#include <functional>
namespace gnash {
namespace abc {
bool
Class::addValue(string_table::key name, Namespace *ns,
- boost::uint32_t slotId, Class *type, as_value& val, bool isconst,
+ std::uint32_t slotId, Class *type, as_value& val, bool isconst,
bool isstatic)
{
Global_as* g = VM::get().getGlobal();
@@ -80,22 +80,22 @@ void
Class::initTraits(AbcBlock& bl)
{
std::for_each(_instanceTraits.begin(), _instanceTraits.end(),
- boost::bind(&Trait::finalize, _1, &bl));
+ std::bind(&Trait::finalize, _1, &bl));
std::for_each(_staticTraits.begin(), _staticTraits.end(),
- boost::bind(&Trait::finalize, _1, &bl));
+ std::bind(&Trait::finalize, _1, &bl));
}
bool
Class::addMemberScript(string_table::key name, Namespace *ns,
- boost::uint32_t slotId, Class *type, bool isstatic)
+ std::uint32_t slotId, Class *type, bool isstatic)
{
return addSlot(name, ns, slotId, type, isstatic);
}
bool
Class::addSlotFunction(string_table::key name, Namespace *ns,
- boost::uint32_t slotId, Method *method, bool isstatic)
+ std::uint32_t slotId, Method *method, bool isstatic)
{
Class a;
a.setName(NSV::CLASS_FUNCTION);
@@ -105,7 +105,7 @@ Class::addSlotFunction(string_table::key name, Namespace *ns,
bool
Class::addSlot(string_table::key name, Namespace* ns,
- boost::uint32_t slotId, Class* /*type*/, bool /*isstatic*/)
+ std::uint32_t slotId, Class* /*type*/, bool /*isstatic*/)
{
string_table::key nsname = ns ? ns->getURI() : 0;
@@ -172,7 +172,7 @@ Class::addSetter(string_table::key name, Namespace *ns, Method *method,
#if 0 // TODO
bool
-Class::addValue(string_table::key name, Namespace *ns, boost::uint32_t slotId,
+Class::addValue(string_table::key name, Namespace *ns, std::uint32_t slotId,
Class *type, as_value& val, bool isconst, bool isstatic,
ClassHierarchy *CH)
{
@@ -185,7 +185,7 @@ Class::addValue(string_table::key name, Namespace *ns, boost::uint32_t slotId,
}
bool
-Class::addSlot(string_table::key name, Namespace *ns, boost::uint32_t slotId,
+Class::addSlot(string_table::key name, Namespace *ns, std::uint32_t slotId,
Class *type, bool isstatic, ClassHierarchy *CH)
{
asBoundValue *bv = CH->newBoundValue();
@@ -207,7 +207,7 @@ Class::addMethod(string_table::key name, Namespace *ns, Method *method,
bool
Class::addMemberScript(string_table::key name, Namespace *ns,
- boost::uint32_t slotId, Class *type, bool isstatic)
+ std::uint32_t slotId, Class *type, bool isstatic)
{
if (!isstatic)
return addBinding(name, asBinding(ns, type, slotId, isstatic));
@@ -217,7 +217,7 @@ Class::addMemberScript(string_table::key name, Namespace *ns,
// TODO: Figure out how this differs from addMethod
bool
Class::addSlotFunction(string_table::key name, Namespace *ns,
- boost::uint32_t slotId, Method *method, bool isstatic)
+ std::uint32_t slotId, Method *method, bool isstatic)
{
if (!isstatic)
return addBinding(name, asBinding(ns, method, slotId, isstatic));
diff --git a/libcore/abc/Class.h b/libcore/abc/Class.h
index 9143082..8a793ff 100644
--- a/libcore/abc/Class.h
+++ b/libcore/abc/Class.h
@@ -111,11 +111,11 @@ public:
void dump();
bool addValue(string_table::key name, Namespace *ns,
- boost::uint32_t slotID, Class *type, as_value& val,
+ std::uint32_t slotID, Class *type, as_value& val,
bool isconst, bool isstatic);
bool addSlot(string_table::key name, Namespace *ns,
- boost::uint32_t slotID, Class *type, bool isstatic);
+ std::uint32_t slotID, Class *type, bool isstatic);
bool addMethod(string_table::key name, Namespace *ns, Method *method,
bool isstatic);
@@ -127,11 +127,11 @@ public:
bool isstatic);
bool addMemberScript(string_table::key name, Namespace *ns,
- boost::uint32_t slotID, Class *type, bool isstatic);
+ std::uint32_t slotID, Class *type, bool isstatic);
// TODO: Figure out how this differs from addMethod
bool addSlotFunction(string_table::key name, Namespace *ns,
- boost::uint32_t slotID, Method *method, bool isstatic);
+ std::uint32_t slotID, Method *method, bool isstatic);
/// Is the class final?
bool isFinal() const { return _final; }
diff --git a/libcore/abc/CodeStream.cpp b/libcore/abc/CodeStream.cpp
index 5141ffc..73776e7 100644
--- a/libcore/abc/CodeStream.cpp
+++ b/libcore/abc/CodeStream.cpp
@@ -23,13 +23,13 @@
namespace gnash {
/// Read a variable length encoded 32 bit unsigned integer
-boost::uint32_t
+std::uint32_t
CodeStream::read_V32()
{
char data;
read(&data,1);
- boost::uint32_t result = data;
+ std::uint32_t result = data;
if (!(result & 0x00000080)) return result;
read(&data,1);
@@ -50,7 +50,7 @@ CodeStream::read_V32()
}
/// Read an opcode for ActionScript 3
-boost::uint8_t
+std::uint8_t
CodeStream::read_as3op()
{
char data;
@@ -59,7 +59,7 @@ CodeStream::read_as3op()
return 0;
}
else{
- return static_cast<boost::uint8_t> (data);
+ return static_cast<std::uint8_t> (data);
}
}
@@ -78,7 +78,7 @@ CodeStream::seekTo(unsigned int set)
}
//TODO: Is there a better way to read a 24 bit signed int?
-boost::int32_t
+std::int32_t
CodeStream::read_S24()
{
char buffer[3];
@@ -90,7 +90,7 @@ CodeStream::read_S24()
result |= -1 << 24;
}
- return static_cast<boost::int32_t>(result);
+ return static_cast<std::int32_t>(result);
}
/// Read a signed 8-bit character.
@@ -103,12 +103,12 @@ CodeStream::read_s8()
}
/// Read an unsigned 8-bit character.
-boost::uint8_t
+std::uint8_t
CodeStream::read_u8()
{
char data;
read(&data,1);
- return static_cast<boost::uint8_t> (data);
+ return static_cast<std::uint8_t> (data);
}
/// Same as read_V32(), but doesn't bother with the arithmetic for
diff --git a/libcore/abc/CodeStream.h b/libcore/abc/CodeStream.h
index 8d8b826..17e5b21 100644
--- a/libcore/abc/CodeStream.h
+++ b/libcore/abc/CodeStream.h
@@ -22,7 +22,7 @@
#include <string>
#include <boost/utility.hpp>
-#include <boost/cstdint.hpp>
+#include <cstdint>
#include <istream>
#include <sstream>
@@ -45,10 +45,10 @@ public:
}
/// Read a variable length encoded 32 bit unsigned integer
-boost::uint32_t read_V32();
+std::uint32_t read_V32();
/// Read an opcode for ActionScript 3
-boost::uint8_t read_as3op();
+std::uint8_t read_as3op();
/// Change the current position by a relative value.
void seekBy(int change);
@@ -57,13 +57,13 @@ void seekBy(int change);
void seekTo(unsigned int set);
///Read a signed 24 bit interger.
-boost::int32_t read_S24();
+std::int32_t read_S24();
/// Read a signed 8-bit character.
int8_t read_s8();
/// Read an unsigned 8-bit character.
-boost::uint8_t read_u8();
+std::uint8_t read_u8();
/// Same as read_V32(), but doesn't bother with the arithmetic for
/// calculating the value.
diff --git a/libcore/abc/Method.cpp b/libcore/abc/Method.cpp
index 2faa041..4d5f6c2 100644
--- a/libcore/abc/Method.cpp
+++ b/libcore/abc/Method.cpp
@@ -28,7 +28,7 @@
#include "VM.h"
#include "namedStrings.h"
-#include <boost/bind.hpp>
+#include <functional>
namespace gnash {
namespace abc {
@@ -60,8 +60,8 @@ Method::print_body()
return;
}
std::stringstream ss("Method Body:");
- for(boost::uint32_t i = 0; i < _bodyLength ; ++i) {
- const boost::uint8_t opcode = _body->read_as3op();
+ for(std::uint32_t i = 0; i < _bodyLength ; ++i) {
+ const std::uint8_t opcode = _body->read_as3op();
ss << "0x" << std::uppercase << std::hex << (opcode | 0x0) << " ";
}
_body->seekTo(0);
@@ -82,7 +82,7 @@ void
Method::initTraits(AbcBlock& bl)
{
std::for_each(_traits.begin(), _traits.end(),
- boost::bind(&Trait::finalize, _1, &bl));
+ std::bind(&Trait::finalize, _1, &bl));
}
void
@@ -93,7 +93,7 @@ Method::setReturnType(Class* /*type*/)
bool
Method::addValue(string_table::key name, Namespace *ns,
- boost::uint32_t slotId, Class *type, as_value& val, bool isconst)
+ std::uint32_t slotId, Class *type, as_value& val, bool isconst)
{
Global_as* g = VM::get().getGlobal();
if (val.is_object()) {
@@ -160,13 +160,13 @@ Method::addSetter(string_table::key name, Namespace *ns, Method *method)
bool
Method::addMemberScript(string_table::key name, Namespace *ns,
- boost::uint32_t slotId, Class *type)
+ std::uint32_t slotId, Class *type)
{
return addSlot(name, ns, slotId, type);
}
bool
-Method::addSlot(string_table::key name, Namespace* ns, boost::uint32_t slotId,
+Method::addSlot(string_table::key name, Namespace* ns, std::uint32_t slotId,
Class* /*type*/)
{
string_table::key nsname = ns ? ns->getURI() : string_table::key(0);
@@ -178,7 +178,7 @@ Method::addSlot(string_table::key name, Namespace* ns, boost::uint32_t slotId,
bool
Method::addSlotFunction(string_table::key name, Namespace *ns,
- boost::uint32_t slotId, Method *method)
+ std::uint32_t slotId, Method *method)
{
Class a;
a.setName(NSV::CLASS_FUNCTION);
diff --git a/libcore/abc/Method.h b/libcore/abc/Method.h
index 0aa6cd2..1dd5a26 100644
--- a/libcore/abc/Method.h
+++ b/libcore/abc/Method.h
@@ -58,47 +58,47 @@ public:
Method();
- boost::uint32_t methodID() const {
+ std::uint32_t methodID() const {
return _methodID;
}
- void setMethodID(boost::uint32_t m) {
+ void setMethodID(std::uint32_t m) {
_methodID = m;
}
void initPrototype(Machine* machine);
- boost::uint32_t getMaxRegisters() { return _maxRegisters;}
+ std::uint32_t getMaxRegisters() { return _maxRegisters;}
- void setMaxRegisters(boost::uint32_t maxRegisters) {
+ void setMaxRegisters(std::uint32_t maxRegisters) {
_maxRegisters = maxRegisters;
}
- boost::uint32_t getBodyLength(){ return _bodyLength;}
+ std::uint32_t getBodyLength(){ return _bodyLength;}
- void setBodyLength(boost::uint32_t length){ _bodyLength = length;}
+ void setBodyLength(std::uint32_t length){ _bodyLength = length;}
- void setMaxStack(boost::uint32_t max) {
+ void setMaxStack(std::uint32_t max) {
_maxStack = max;
}
- boost::uint32_t maxStack() const {
+ std::uint32_t maxStack() const {
return _maxStack;
}
- void setMaxScope(boost::uint32_t max) {
+ void setMaxScope(std::uint32_t max) {
_maxScope = max;
}
- boost::uint32_t maxScope() const {
+ std::uint32_t maxScope() const {
return _maxScope;
}
- void setScopeDepth(boost::uint32_t depth) {
+ void setScopeDepth(std::uint32_t depth) {
_scopeDepth = depth;
}
- boost::uint32_t scopeDepth() const {
+ std::uint32_t scopeDepth() const {
return _scopeDepth;
}
@@ -137,10 +137,10 @@ public:
void setBody(CodeStream *b) { _body = b; }
bool addValue(string_table::key name, Namespace *ns,
- boost::uint32_t slotID, Class *type, as_value& val, bool isconst);
+ std::uint32_t slotID, Class *type, as_value& val, bool isconst);
bool addSlot(string_table::key name, Namespace *ns,
- boost::uint32_t slotID, Class *type);
+ std::uint32_t slotID, Class *type);
bool addMethod(string_table::key name, Namespace *ns, Method *method);
@@ -149,10 +149,10 @@ public:
bool addSetter(string_table::key name, Namespace *ns, Method *method);
bool addMemberScript(string_table::key name, Namespace *ns,
- boost::uint32_t slotID, Class *type);
+ std::uint32_t slotID, Class *type);
bool addSlotFunction(string_table::key name, Namespace *ns,
- boost::uint32_t slotID, Method *method);
+ std::uint32_t slotID, Method *method);
/// \brief
/// Set the owner of this method.
@@ -275,23 +275,23 @@ private:
std::vector<Trait> _traits;
- boost::uint32_t _methodID;
+ std::uint32_t _methodID;
abc_function* _prototype;
int _minArguments;
int _maxArguments;
- boost::uint32_t _bodyLength;
+ std::uint32_t _bodyLength;
bool _isNative;
ArgumentList _arguments;
std::list<as_value> _optionalArguments;
as_function* _implementation;
unsigned char _flags;
CodeStream* _body;
- boost::uint32_t _maxRegisters;
+ std::uint32_t _maxRegisters;
- boost::uint32_t _scopeDepth;
- boost::uint32_t _maxScope;
- boost::uint32_t _maxStack;
+ std::uint32_t _scopeDepth;
+ std::uint32_t _maxScope;
+ std::uint32_t _maxStack;
bool _needsActivation;
diff --git a/libcore/abc/MultiName.h b/libcore/abc/MultiName.h
index e9b3696..d02481a 100644
--- a/libcore/abc/MultiName.h
+++ b/libcore/abc/MultiName.h
@@ -79,7 +79,7 @@ public:
_flags = kind;
}
- boost::uint8_t flags() const {
+ std::uint8_t flags() const {
return _flags;
}
@@ -126,7 +126,7 @@ private:
FLAG_NSSET = 0x10
};
- boost::uint8_t _flags;
+ std::uint8_t _flags;
std::vector<Namespace*>* _namespaceSet;
diff --git a/libcore/abc/abc_function.h b/libcore/abc/abc_function.h
index fd3b2b3..b3358bf 100644
--- a/libcore/abc/abc_function.h
+++ b/libcore/abc/abc_function.h
@@ -49,7 +49,7 @@ public:
return _methodInfo->getBody();
}
- boost::uint32_t getMaxRegisters() const {
+ std::uint32_t getMaxRegisters() const {
return _methodInfo->getMaxRegisters();
}
diff --git a/libcore/abc/asException.h b/libcore/abc/asException.h
index 73e381d..6baa4ac 100644
--- a/libcore/abc/asException.h
+++ b/libcore/abc/asException.h
@@ -31,18 +31,18 @@ namespace gnash {
class asException
{
public:
- void setStart(boost::uint32_t i) { _start = i; }
- void setEnd(boost::uint32_t i) { mEnd = i; }
- void setCatch(boost::uint32_t i) { mCatch = i; }
+ void setStart(std::uint32_t i) { _start = i; }
+ void setEnd(std::uint32_t i) { mEnd = i; }
+ void setCatch(std::uint32_t i) { mCatch = i; }
void catchAny() { mCatchAny = true; }
void setCatchType(abc::Class* p) { mCatchType = p; }
void setNamespace(abc::Namespace* n) { _namespace = n; }
void setName(string_table::key name) { _name = name; }
private:
- boost::uint32_t _start;
- boost::uint32_t mEnd;
- boost::uint32_t mCatch;
+ std::uint32_t _start;
+ std::uint32_t mEnd;
+ std::uint32_t mCatch;
bool mCatchAny;
abc::Class *mCatchType;
abc::Namespace *_namespace;
diff --git a/libcore/as_environment.cpp b/libcore/as_environment.cpp
index dc03fc7..57c0676 100644
--- a/libcore/as_environment.cpp
+++ b/libcore/as_environment.cpp
@@ -88,7 +88,7 @@ namespace {
as_value getVariableRaw(const as_environment& env,
const std::string& varname,
const as_environment::ScopeStack& scope,
- as_object** retTarget = 0);
+ as_object** retTarget = nullptr);
void setVariableRaw(const as_environment& env, const std::string& varname,
const as_value& val, const as_environment::ScopeStack& scope);
@@ -107,8 +107,8 @@ as_environment::as_environment(VM& vm)
:
_vm(vm),
_stack(_vm.getStack()),
- _target(0),
- _original_target(0)
+ _target(nullptr),
+ _original_target(nullptr)
{
}
@@ -135,13 +135,13 @@ findObject(const as_environment& ctx, const std::string& path,
// Check if it's an absolute path
if (*p == '/') {
- MovieClip* root = 0;
+ MovieClip* root = nullptr;
if (ctx.target()) root = ctx.target()->getAsRoot();
else {
if (ctx.get_original_target()) {
root = ctx.get_original_target()->getAsRoot();
}
- return 0;
+ return nullptr;
}
// If the path is just "/" return the root.
@@ -182,7 +182,7 @@ findObject(const as_environment& ctx, const std::string& path,
log_aserror(_("invalid path '%s' (p=next_slash=%s)"),
path, next_slash);
);
- return 0;
+ return nullptr;
}
if (next_slash) {
@@ -193,7 +193,7 @@ findObject(const as_environment& ctx, const std::string& path,
log_aserror(_("invalid path '%s' (dot not allowed "
"after having seen a slash)"), path);
);
- return 0;
+ return nullptr;
}
// No dot allowed after a double-dot.
if (next_slash[1] == '.') dot_allowed = false;
@@ -214,7 +214,7 @@ findObject(const as_environment& ctx, const std::string& path,
const ObjectURI subpartURI(getURI(vm, subpart));
if (!firstElementParsed) {
- as_object* element(0);
+ as_object* element(nullptr);
do {
// Try scope stack
@@ -252,7 +252,7 @@ findObject(const as_environment& ctx, const std::string& path,
} while (0);
- if (!element) return 0;
+ if (!element) return nullptr;
env = element;
firstElementParsed = true;
@@ -261,7 +261,7 @@ findObject(const as_environment& ctx, const std::string& path,
assert(env);
as_object* element = getElement(env, subpartURI);
- if (!element) return 0;
+ if (!element) return nullptr;
env = element;
}
@@ -317,7 +317,7 @@ getVariable(const as_environment& env, const std::string& varname,
if (target) {
// ... but only if it resolves to a sprite
DisplayObject* d = target->displayObject();
- MovieClip* m = d ? d->to_movie() : 0;
+ MovieClip* m = d ? d->to_movie() : nullptr;
if (m) return as_value(getObject(m));
}
}
@@ -539,7 +539,7 @@ getVariableRaw(const as_environment& env, const std::string& varname,
// Looking for "this"
if (eq(key, NSV::PROP_THIS)) {
val.set_as_object(getObject(env.get_original_target()));
- if (retTarget) *retTarget = NULL;
+ if (retTarget) *retTarget = nullptr;
return val;
}
@@ -549,7 +549,7 @@ getVariableRaw(const as_environment& env, const std::string& varname,
log_debug("Took %s as _global, returning _global", varname);
#endif
// The "_global" ref was added in SWF6
- if (retTarget) *retTarget = NULL; // correct ??
+ if (retTarget) *retTarget = nullptr; // correct ??
return as_value(global);
}
@@ -623,7 +623,7 @@ next_slash_or_dot(const char* word)
return p;
}
}
- return 0;
+ return nullptr;
}
} // unnamed namespace
diff --git a/libcore/as_environment.h b/libcore/as_environment.h
index 2f6b677..13654fc 100644
--- a/libcore/as_environment.h
+++ b/libcore/as_environment.h
@@ -151,7 +151,7 @@ private:
/// @param retTarget If not null, the pointer will be set to the actual
/// object containing the found variable (if found).
as_value getVariable(const as_environment& ctx, const std::string& varname,
- const as_environment::ScopeStack& scope, as_object** retTarget = 0);
+ const as_environment::ScopeStack& scope, as_object** retTarget = nullptr);
/// Given a path to variable, set its value.
//
@@ -206,7 +206,7 @@ DSOEXPORT bool parsePath(const std::string& var_path, std::string& path,
/// @param path Variable path.
/// @param scope The Scope stack to use for lookups.
DSOEXPORT as_object* findObject(const as_environment& ctx, const std::string& path,
- const as_environment::ScopeStack* scope = 0);
+ const as_environment::ScopeStack* scope = nullptr);
/// Find the DisplayObject referenced by the given path.
//
diff --git a/libcore/as_function.cpp b/libcore/as_function.cpp
index 2a6484d..911d5d8 100644
--- a/libcore/as_function.cpp
+++ b/libcore/as_function.cpp
@@ -78,7 +78,7 @@ as_function::construct(as_object& newobj, const as_environment& env,
// Don't set a super so that it will be constructed only if required
// by the function.
- fn_call fn(&newobj, env, args, 0, true);
+ fn_call fn(&newobj, env, args, nullptr, true);
as_value ret;
try {
diff --git a/libcore/as_object.cpp b/libcore/as_object.cpp
index f3a06ff..ed0a53a 100644
--- a/libcore/as_object.cpp
+++ b/libcore/as_object.cpp
@@ -52,7 +52,7 @@ public:
_object(top),
_uri(uri),
_iterations(0),
- _condition(cmp)
+ _condition(std::move(cmp))
{
_visited.insert(top);
}
@@ -84,7 +84,7 @@ public:
/// Return the wanted property if it exists and satisfies the predicate.
//
/// This will abort if there is no current object.
- Property* getProperty(as_object** owner = 0) const {
+ Property* getProperty(as_object** owner = nullptr) const {
assert(_object);
Property* prop = _object->_members.getProperty(_uri);
@@ -93,7 +93,7 @@ public:
if (owner) *owner = _object;
return prop;
}
- return 0;
+ return nullptr;
}
private:
@@ -112,7 +112,7 @@ getConstructor(as_object& o)
{
as_value ctorVal;
if (!o.get_member(NSV::PROP_uuCONSTRUCTORuu, &ctorVal)) {
- return 0;
+ return nullptr;
}
return ctorVal.to_function();
}
@@ -181,11 +181,11 @@ protected:
private:
as_object* prototype() {
- return _super ? _super->get_prototype() : 0;
+ return _super ? _super->get_prototype() : nullptr;
}
as_function* constructor() {
- return _super ? getConstructor(*_super) : 0;
+ return _super ? getConstructor(*_super) : nullptr;
}
as_object* _super;
@@ -200,15 +200,15 @@ as_super::get_super(const ObjectURI& fname)
// Our class prototype is __proto__.
as_object* proto = get_prototype();
- if (!proto) return new as_super(getGlobal(*this), 0);
+ if (!proto) return new as_super(getGlobal(*this), nullptr);
if (fname.empty() || getSWFVersion(*this) <= 6) {
return new as_super(getGlobal(*this), proto);
}
- as_object* owner = 0;
+ as_object* owner = nullptr;
proto->findProperty(fname, &owner);
- if (!owner) return 0;
+ if (!owner) return nullptr;
if (owner == proto) return new as_super(getGlobal(*this), proto);
@@ -280,9 +280,8 @@ const int as_object::DefaultFlags;
as_object::as_object(const Global_as& gl)
:
GcResource(getRoot(gl).gc()),
- _displayObject(0),
+ _displayObject(nullptr),
_array(false),
- _relay(0),
_vm(getVM(gl)),
_members(*this)
{
@@ -291,9 +290,8 @@ as_object::as_object(const Global_as& gl)
as_object::as_object(VM& vm)
:
GcResource(vm.getRoot().gc()),
- _displayObject(0),
+ _displayObject(nullptr),
_array(false),
- _relay(0),
_vm(vm),
_members(*this)
{
@@ -454,7 +452,7 @@ as_object::get_super(const ObjectURI& fname)
as_object* proto = get_prototype();
if ( ! fname.empty() && getSWFVersion(*this) > 6) {
- as_object* owner = 0;
+ as_object* owner = nullptr;
findProperty(fname, &owner);
// should be 0 if findProperty returned 0
if (owner != this) proto = owner;
@@ -489,7 +487,7 @@ as_object::findProperty(const ObjectURI& uri, as_object** owner)
} while (pr());
// No Property found
- return 0;
+ return nullptr;
}
Property*
@@ -513,7 +511,7 @@ as_object::findUpdatableProperty(const ObjectURI& uri)
}
}
}
- return 0;
+ return nullptr;
}
void
@@ -558,8 +556,9 @@ as_object::executeTriggers(Property* prop, const ObjectURI& uri,
const as_value& newVal = trig.call(curVal, val, *this);
// This is a particularly clear and concise way of removing dead triggers.
- EraseIf(*_trigs, boost::bind(boost::mem_fn(&Trigger::dead),
- boost::bind(&TriggerContainer::value_type::second, _1)));
+ EraseIf(*_trigs, std::bind(std::mem_fn(&Trigger::dead),
+ std::bind(&TriggerContainer::value_type::second,
+ std::placeholders::_1)));
// The trigger call could have deleted the property,
// so we check for its existence again, and do NOT put
@@ -615,7 +614,7 @@ as_object::set_member(const ObjectURI& uri, const as_value& val, bool ifFound)
if ((prop->isGetterSetter()) && visible(*prop, version)) {
break;
}
- else prop = 0;
+ else prop = nullptr;
}
}
}
@@ -935,8 +934,8 @@ as_object::get_prototype() const
int swfVersion = getSWFVersion(*this);
Property* prop = _members.getProperty(NSV::PROP_uuPROTOuu);
- if (!prop) return 0;
- if (!visible(*prop, swfVersion)) return 0;
+ if (!prop) return nullptr;
+ if (!visible(*prop, swfVersion)) return nullptr;
const as_value& proto = prop->getValue(*this);
@@ -1090,8 +1089,8 @@ as_object*
getPathElement(as_object& o, const ObjectURI& uri)
{
as_value tmp;
- if (!o.get_member(uri, &tmp)) return 0;
- if (!tmp.is_object()) return 0;
+ if (!o.get_member(uri, &tmp)) return nullptr;
+ if (!tmp.is_object()) return nullptr;
return toObject(tmp, getVM(o));
}
@@ -1111,7 +1110,7 @@ getObjectWithPrototype(Global_as& gl, const ObjectURI& c)
{
as_object* ctor = toObject(getMember(gl, c), getVM(gl));
as_object* proto = ctor ?
- toObject(getMember(*ctor, NSV::PROP_PROTOTYPE), getVM(gl)) : 0;
+ toObject(getMember(*ctor, NSV::PROP_PROTOTYPE), getVM(gl)) : nullptr;
as_object* o = createObject(gl);
o->set_prototype(proto ? proto : as_value());
diff --git a/libcore/as_object.h b/libcore/as_object.h
index 639b49b..00db6cd 100644
--- a/libcore/as_object.h
+++ b/libcore/as_object.h
@@ -27,7 +27,7 @@
#include <vector>
#include <cmath>
#include <utility>
-#include <boost/scoped_ptr.hpp>
+#include <memory>
#include <boost/noncopyable.hpp>
#include "GC.h" // for inheritance from GcResource (to complete)
@@ -60,12 +60,12 @@ class Trigger
{
public:
- Trigger(const std::string& propname, as_function& trig,
- const as_value& customArg)
+ Trigger(std::string propname, as_function& trig,
+ as_value customArg)
:
- _propname(propname),
+ _propname(std::move(propname)),
_func(&trig),
- _customArg(customArg),
+ _customArg(std::move(customArg)),
_executing(false),
_dead(false)
{}
@@ -199,7 +199,7 @@ public:
/// an inherited property.
/// @returns A property if found and visible, NULL if not found or
/// not visible in current VM version
- Property* findProperty(const ObjectURI& uri, as_object** owner = 0);
+ Property* findProperty(const ObjectURI& uri, as_object** owner = nullptr);
/// Return a reference to this as_object's global object.
VM& vm() const {
@@ -468,7 +468,7 @@ public:
void set_member_flags(const ObjectURI& uri, int setTrue, int setFalse = 0);
/// Cast to a as_function, or return NULL
- virtual as_function* to_function() { return 0; }
+ virtual as_function* to_function() { return nullptr; }
/// Return true if this is a 'super' object
virtual bool isSuper() const { return false; }
@@ -707,7 +707,7 @@ private:
//
/// This is owned by the as_object and destroyed when the as_object's
/// destructor is called.
- boost::scoped_ptr<Relay> _relay;
+ std::unique_ptr<Relay> _relay;
/// The VM containing this object.
VM& _vm;
@@ -722,7 +722,7 @@ private:
std::vector<as_object*> _interfaces;
typedef std::map<ObjectURI, Trigger, ObjectURI::LessThan> TriggerContainer;
- boost::scoped_ptr<TriggerContainer> _trigs;
+ std::unique_ptr<TriggerContainer> _trigs;
};
/// Send a system event
@@ -841,7 +841,7 @@ template<typename T>
T*
get(as_object* o)
{
- if (!o) return 0;
+ if (!o) return nullptr;
return dynamic_cast<T*>(o->displayObject());
}
diff --git a/libcore/as_value.cpp b/libcore/as_value.cpp
index 98b347c..62039f0 100644
--- a/libcore/as_value.cpp
+++ b/libcore/as_value.cpp
@@ -20,7 +20,6 @@
#include "as_value.h"
-#include <boost/shared_ptr.hpp>
#include <cmath>
#include <cctype>
#include <boost/lexical_cast.hpp>
@@ -88,12 +87,12 @@ enum Base
/// @param base The base (8 or 16) to use.
/// @param s The string to parse.
/// @return The converted number.
-boost::int32_t
+std::int32_t
parsePositiveInt(const std::string& s, Base base, bool whole = true)
{
std::istringstream is(s);
- boost::uint32_t target;
+ std::uint32_t target;
switch (base)
{
@@ -272,7 +271,7 @@ as_value::to_primitive(AsType hint) const
// TODO: implement as_object::DefaultValue (ECMA-262 - 8.6.2.6)
as_value method;
- as_object* obj(0);
+ as_object* obj(nullptr);
if (hint == NUMBER) {
assert(_type == OBJECT);
@@ -473,24 +472,24 @@ as_value::to_object(VM& vm) const
default:
// Invalid to convert exceptions.
- return NULL;
+ return nullptr;
}
}
MovieClip*
as_value::toMovieClip(bool allowUnloaded) const
{
- if (_type != DISPLAYOBJECT) return 0;
+ if (_type != DISPLAYOBJECT) return nullptr;
DisplayObject *ch = getCharacter(allowUnloaded);
- if (!ch) return 0;
+ if (!ch) return nullptr;
return ch->to_movie();
}
DisplayObject*
as_value::toDisplayObject(bool allowUnloaded) const
{
- if (_type != DISPLAYOBJECT) return 0;
+ if (_type != DISPLAYOBJECT) return nullptr;
return getCharacter(allowUnloaded);
}
@@ -503,7 +502,7 @@ as_value::to_function() const
return getObj()->to_function();
}
- return 0;
+ return nullptr;
}
as_object*
@@ -513,7 +512,7 @@ as_value::get_object() const
return getObj();
}
- return 0;
+ return nullptr;
}
void
@@ -643,7 +642,7 @@ as_value::typeOf() const
default:
if (is_exception()) return "exception";
std::abort();
- return 0;
+ return nullptr;
}
}
diff --git a/libcore/as_value.h b/libcore/as_value.h
index 0adc302..22ac59a 100644
--- a/libcore/as_value.h
+++ b/libcore/as_value.h
@@ -23,8 +23,8 @@
#include <string>
#include <boost/variant.hpp>
#include <iosfwd> // for inlined output operator
-#include <boost/utility/enable_if.hpp>
-#include <boost/cstdint.hpp>
+#include <type_traits>
+#include <cstdint>
#include "utility.h" // for UNUSED
#include "dsodefs.h" // for DSOTEXPORT
@@ -132,6 +132,14 @@ public:
{
}
+ /// Move constructor.
+ DSOEXPORT as_value(as_value&& other)
+ : _type(other._type),
+ _value(std::move(other._value))
+ {
+ other._type = UNDEFINED;
+ }
+
~as_value() {}
/// Construct a primitive String value
@@ -142,15 +150,15 @@ public:
{}
/// Construct a primitive String value
- DSOEXPORT as_value(const std::string& str)
+ DSOEXPORT as_value(std::string str)
:
_type(STRING),
- _value(std::string(str))
+ _value(std::move(str))
{}
/// Construct a primitive Boolean value
template <typename T>
- as_value(T val, typename boost::enable_if<boost::is_same<bool, T> >::type*
+ as_value(T val, typename std::enable_if<std::is_same<bool, T>::value>::type*
dummy = 0)
:
_type(BOOLEAN),
@@ -182,6 +190,14 @@ public:
return *this;
}
+ DSOEXPORT as_value& operator=(as_value&& other)
+ {
+ _type = other._type;
+ _value = std::move(other._value);
+ other._type = UNDEFINED;
+ return *this;
+ }
+
friend std::ostream& operator<<(std::ostream& o, const as_value&);
/// Return the primitive type of this value as a string.
diff --git a/libcore/asobj/ASConversions.cpp b/libcore/asobj/ASConversions.cpp
index caba969..08c019a 100644
--- a/libcore/asobj/ASConversions.cpp
+++ b/libcore/asobj/ASConversions.cpp
@@ -20,7 +20,7 @@
#include "ASConversions.h"
-#include <boost/cstdint.hpp>
+#include <cstdint>
#include <cmath>
#include <limits>
@@ -38,7 +38,7 @@ namespace gnash {
namespace {
// Handle overflows from AS ColorTransform double.
- inline boost::int16_t truncateDouble(double d);
+ inline std::int16_t truncateDouble(double d);
}
SWFMatrix
@@ -64,18 +64,18 @@ toSWFMatrix(as_object& m)
}
// Convert input matrix to SWFMatrix.
- const boost::int32_t a = truncateWithFactor<65536>(
+ const std::int32_t a = truncateWithFactor<65536>(
toNumber(getMember(m, NSV::PROP_A), vm));
- const boost::int32_t b = truncateWithFactor<65536>(
+ const std::int32_t b = truncateWithFactor<65536>(
toNumber(getMember(m, NSV::PROP_B), vm));
- const boost::int32_t c = truncateWithFactor<65536>(
+ const std::int32_t c = truncateWithFactor<65536>(
toNumber(getMember(m, NSV::PROP_C), vm));
- const boost::int32_t d = truncateWithFactor<65536>(
+ const std::int32_t d = truncateWithFactor<65536>(
toNumber(getMember(m, NSV::PROP_D), vm));
- const boost::int32_t tx = pixelsToTwips(
+ const std::int32_t tx = pixelsToTwips(
toNumber(getMember(m, NSV::PROP_TX), vm));
- const boost::int32_t ty = pixelsToTwips(
+ const std::int32_t ty = pixelsToTwips(
toNumber(getMember(m, NSV::PROP_TY), vm));
return SWFMatrix(a, b, c, d, tx, ty);
@@ -99,16 +99,16 @@ toCxForm(const ColorTransform_as& tr)
namespace {
-inline boost::int16_t
+inline std::int16_t
truncateDouble(double d)
{
- if (d > std::numeric_limits<boost::int16_t>::max() ||
- d < std::numeric_limits<boost::int16_t>::min())
+ if (d > std::numeric_limits<std::int16_t>::max() ||
+ d < std::numeric_limits<std::int16_t>::min())
{
- return std::numeric_limits<boost::int16_t>::min();
+ return std::numeric_limits<std::int16_t>::min();
}
- return static_cast<boost::int16_t>(d);
+ return static_cast<std::int16_t>(d);
}
}
diff --git a/libcore/asobj/Array_as.cpp b/libcore/asobj/Array_as.cpp
index 80b3803..98118ac 100644
--- a/libcore/asobj/Array_as.cpp
+++ b/libcore/asobj/Array_as.cpp
@@ -23,6 +23,8 @@
#include <string>
#include <algorithm>
#include <cmath>
+#include <functional>
+#include <iterator>
#include <boost/algorithm/string/case_conv.hpp>
#include <boost/lexical_cast.hpp>
@@ -63,7 +65,7 @@ namespace {
struct indexed_as_value;
- typedef boost::function2<bool, const as_value&, const as_value&> as_cmp_fn;
+ typedef std::function<bool(const as_value&, const as_value&)> as_cmp_fn;
void attachArrayInterface(as_object& proto);
void attachArrayStatics(as_object& proto);
@@ -117,8 +119,8 @@ struct indexed_as_value : public as_value
{
int vec_index;
- indexed_as_value(const as_value& val, int index)
- : as_value(val)
+ indexed_as_value(as_value val, int index)
+ : as_value(std::move(val))
{
vec_index = index;
}
@@ -153,7 +155,7 @@ class PushToIndexedVector
public:
PushToIndexedVector(std::vector<indexed_as_value>& v) : _v(v), _i(0) {}
void operator()(const as_value& val) {
- _v.push_back(indexed_as_value(val, _i));
+ _v.emplace_back(val, _i);
++_i;
}
private:
@@ -215,8 +217,10 @@ inplaceMerge(IterType begin, IterType middle, const IterType& end, ComparatorTyp
// Find the first element that is not less than next_high. Then, shift all
// elements before that element one position to the left, and copy
// next_high into the vacant spot.
- IterType it = std::find_if(middle, end, !boost::bind<bool>(compare, _1, next_high));
- std::copy(boost::next(middle), it, middle);
+ IterType it = std::find_if(middle, end,
+ [&](const value_type& v) { return !compare(v, next_high); });
+
+ std::copy(std::next(middle), it, middle);
*(--it) = next_high;
}
++begin;
@@ -581,7 +585,7 @@ struct as_value_num_nocase_eq : public as_value_lt
// Note:
// SORT_UNIQUE and SORT_RETURN_INDEX must first be stripped from the flag
as_cmp_fn
-get_basic_cmp(boost::uint8_t flags, const fn_call& fn)
+get_basic_cmp(std::uint8_t flags, const fn_call& fn)
{
as_cmp_fn f;
@@ -638,7 +642,7 @@ get_basic_cmp(boost::uint8_t flags, const fn_call& fn)
// Note:
// SORT_UNIQUE and SORT_RETURN_INDEX must first be stripped from the flag
as_cmp_fn
-get_basic_eq(boost::uint8_t flags, const fn_call& fn)
+get_basic_eq(std::uint8_t flags, const fn_call& fn)
{
as_cmp_fn f;
flags &= ~(SORT_DESCENDING);
@@ -707,8 +711,8 @@ public:
// Note: cmpfn must implement a strict weak ordering
as_value_prop(ObjectURI name, as_cmp_fn cmpfn, const as_object& o)
:
- _comp(cmpfn),
- _prop(name),
+ _comp(std::move(cmpfn)),
+ _prop(std::move(name)),
_obj(o)
{
}
@@ -823,8 +827,8 @@ private:
// Convenience function to strip SORT_UNIQUE and SORT_RETURN_INDEX from sort
// flag. Presence of flags recorded in douniq and doindex.
-inline boost::uint8_t
-flag_preprocess(boost::uint8_t flgs, bool* douniq, bool* doindex)
+inline std::uint8_t
+flag_preprocess(std::uint8_t flgs, bool* douniq, bool* doindex)
{
*douniq = (flgs & SORT_UNIQUE);
*doindex = (flgs & SORT_RETURN_INDEX);
@@ -865,7 +869,7 @@ private:
class GetMultiFlags
{
public:
- GetMultiFlags(std::vector<boost::uint8_t>& v, const fn_call& fn)
+ GetMultiFlags(std::vector<std::uint8_t>& v, const fn_call& fn)
:
_v(v),
_i(0),
@@ -876,15 +880,15 @@ public:
void operator()(const as_value& val) {
// extract SORT_UNIQUE and SORT_RETURN_INDEX from first flag
if (!_i) {
- boost::uint8_t flag =
- static_cast<boost::uint8_t>(toNumber(val, getVM(_fn)));
+ std::uint8_t flag =
+ static_cast<std::uint8_t>(toNumber(val, getVM(_fn)));
flag = flag_preprocess(flag, &_uniq, &_index);
_v.push_back(flag);
++_i;
return;
}
- boost::uint8_t flag =
- static_cast<boost::uint8_t>(toNumber(val, getVM(_fn)));
+ std::uint8_t flag =
+ static_cast<std::uint8_t>(toNumber(val, getVM(_fn)));
flag &= ~(SORT_RETURN_INDEX);
flag &= ~(SORT_UNIQUE);
_v.push_back(flag);
@@ -894,7 +898,7 @@ public:
bool index() const { return _index; }
private:
- std::vector<boost::uint8_t>& _v;
+ std::vector<std::uint8_t>& _v;
size_t _i;
bool _uniq;
bool _index;
@@ -991,7 +995,7 @@ ObjectURI
arrayKey(VM& vm, size_t i)
{
// TODO: tell getURI that the string is already lowercase!
- return getURI(vm, boost::lexical_cast<std::string>(i), true);
+ return getURI(vm, std::to_string(i), true);
}
namespace {
@@ -1117,10 +1121,10 @@ array_sort(const fn_call& fn)
if (fn.arg(0).is_undefined()) return as_value();
- boost::uint8_t flags = 0;
+ std::uint8_t flags = 0;
if (fn.nargs == 1 && fn.arg(0).is_number()) {
- flags = static_cast<boost::uint8_t>(toNumber(fn.arg(0), getVM(fn)));
+ flags = static_cast<std::uint8_t>(toNumber(fn.arg(0), getVM(fn)));
}
else if (fn.arg(0).is_function()) {
// Get comparison function
@@ -1131,7 +1135,7 @@ array_sort(const fn_call& fn)
bool (*icmp)(int);
if (fn.nargs == 2 && fn.arg(1).is_number()) {
- flags=static_cast<boost::uint8_t>(toNumber(fn.arg(1), getVM(fn)));
+ flags=static_cast<std::uint8_t>(toNumber(fn.arg(1), getVM(fn)));
}
if (flags & SORT_DESCENDING) icmp = &int_lt_or_eq;
@@ -1179,7 +1183,7 @@ array_sortOn(const fn_call& fn)
as_object* array = ensure<ValidThis>(fn);
bool do_unique = false, do_index = false;
- boost::uint8_t flags = 0;
+ std::uint8_t flags = 0;
const int version = getSWFVersion(fn);
VM& vm = getVM(fn);
@@ -1193,7 +1197,7 @@ array_sortOn(const fn_call& fn)
getURI(vm, fn.arg(0).to_string(version));
if (fn.nargs > 1 && fn.arg(1).is_number()) {
- flags = static_cast<boost::uint8_t>(toNumber(fn.arg(1), getVM(fn)));
+ flags = static_cast<std::uint8_t>(toNumber(fn.arg(1), getVM(fn)));
flags = flag_preprocess(flags, &do_unique, &do_index);
}
@@ -1246,13 +1250,13 @@ array_sortOn(const fn_call& fn)
// Only an array will do for this case.
if (farray->array() && arrayLength(*farray) == optnum) {
- std::vector<boost::uint8_t> flgs;
+ std::vector<std::uint8_t> flgs;
GetMultiFlags mf(flgs, fn);
foreachArray(*farray, mf);
do_unique = mf.unique();
do_index = mf.index();
- std::vector<boost::uint8_t>::const_iterator it =
+ std::vector<std::uint8_t>::const_iterator it =
flgs.begin();
while (it != flgs.end()) {
@@ -1272,8 +1276,8 @@ array_sortOn(const fn_call& fn)
}
// case: sortOn(["prop1", "prop2"], Array.FLAG)
else {
- boost::uint8_t flags =
- static_cast<boost::uint8_t>(toInt(fn.arg(1), getVM(fn)));
+ std::uint8_t flags =
+ static_cast<std::uint8_t>(toInt(fn.arg(1), getVM(fn)));
flags = flag_preprocess(flags, &do_unique, &do_index);
as_cmp_fn c = get_basic_cmp(flags, fn);
@@ -1517,7 +1521,7 @@ array_new(const fn_call& fn)
as_object* ao = fn.isInstantiation() ? ensure<ValidThis>(fn) :
getGlobal(fn).createArray();
- ao->setRelay(0);
+ ao->setRelay(nullptr);
ao->setArray();
ao->init_member(NSV::PROP_LENGTH, 0.0);
@@ -1555,7 +1559,7 @@ join(as_object* array, const std::string& separator)
for (size_t i = 0; i < size; ++i) {
if (i) s += separator;
- const std::string& index = boost::lexical_cast<std::string>(i);
+ const std::string& index = std::to_string(i);
const as_value& el = getOwnProperty(*array, getURI(vm, index));
s += el.to_string(version);
}
@@ -1597,9 +1601,8 @@ void foreachArray(as_object& array, int start, int end, T& pred)
void
pushIndices(as_object& o, const std::vector<indexed_as_value>& elems)
{
- for (std::vector<indexed_as_value>::const_iterator it = elems.begin();
- it != elems.end(); ++it) {
- callMethod(&o, NSV::PROP_PUSH, it->vec_index);
+ for (const auto& elem : elems) {
+ callMethod(&o, NSV::PROP_PUSH, elem.vec_index);
}
}
diff --git a/libcore/asobj/AsBroadcaster.cpp b/libcore/asobj/AsBroadcaster.cpp
index 198f325..88a3db6 100644
--- a/libcore/asobj/AsBroadcaster.cpp
+++ b/libcore/asobj/AsBroadcaster.cpp
@@ -217,7 +217,7 @@ AsBroadcaster::init(as_object& where, const ObjectURI& uri)
{
// AsBroadcaster is a class, even though it doesn't look much like one.
// Its prototype has no properties.
- registerBuiltinClass(where, emptyFunction, 0,
+ registerBuiltinClass(where, emptyFunction, nullptr,
attachAsBroadcasterStaticInterface, uri);
}
diff --git a/libcore/asobj/Camera_as.cpp b/libcore/asobj/Camera_as.cpp
index 0fb3878..485b9d5 100644
--- a/libcore/asobj/Camera_as.cpp
+++ b/libcore/asobj/Camera_as.cpp
@@ -20,7 +20,7 @@
#include "Camera_as.h"
#include <sstream>
-#include <boost/scoped_ptr.hpp>
+#include <memory>
#include <memory>
#include "as_object.h" // for inheritance
@@ -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)
@@ -229,7 +229,7 @@ public:
private:
- boost::scoped_ptr<media::VideoInput> _input;
+ std::unique_ptr<media::VideoInput> _input;
// TODO: see whether this should be handled in the VideoInput class
bool _loopback;
@@ -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/Color_as.cpp b/libcore/asobj/Color_as.cpp
index 7cb526f..ae61ea3 100644
--- a/libcore/asobj/Color_as.cpp
+++ b/libcore/asobj/Color_as.cpp
@@ -44,7 +44,7 @@ namespace {
void attachColorInterface(as_object& o);
inline void parseColorTransProp(as_object& obj, const ObjectURI& key,
- boost::int16_t& target, bool scale);
+ std::int16_t& target, bool scale);
inline MovieClip* getTarget(as_object* obj, const fn_call& fn);
}
@@ -64,7 +64,7 @@ void
color_class_init(as_object& where, const ObjectURI& uri)
{
as_object* cl = registerBuiltinClass(where, color_ctor,
- attachColorInterface, 0, uri);
+ attachColorInterface, nullptr, uri);
as_object* proto = toObject(
getMember(*cl, NSV::PROP_PROTOTYPE), getVM(where));
@@ -110,7 +110,7 @@ color_getrgb(const fn_call& fn)
const int g = trans.gb;
const int b = trans.bb;
- const boost::int32_t rgb = (r<<16) | (g<<8) | b;
+ const std::int32_t rgb = (r<<16) | (g<<8) | b;
return as_value(rgb);
}
@@ -158,16 +158,16 @@ color_setrgb(const fn_call& fn)
MovieClip* sp = getTarget(obj, fn);
if (!sp) return as_value();
- boost::int32_t color = toInt(fn.arg(0), getVM(fn));
+ std::int32_t color = toInt(fn.arg(0), getVM(fn));
const int r = (color & 0xff0000) >> 16;
const int g = (color & 0x00ff00) >> 8;
const int b = (color & 0x0000ff);
SWFCxForm newTrans = getCxForm(*sp);
- newTrans.rb = static_cast<boost::int16_t>(r);
- newTrans.gb = static_cast<boost::int16_t>(g);
- newTrans.bb = static_cast<boost::int16_t>(b);
+ newTrans.rb = static_cast<std::int16_t>(r);
+ newTrans.gb = static_cast<std::int16_t>(g);
+ newTrans.bb = static_cast<std::int16_t>(b);
newTrans.ra = 0;
newTrans.ga = 0;
newTrans.ba = 0;
@@ -243,14 +243,14 @@ color_ctor(const fn_call& fn)
obj->set_member(NSV::PROP_TARGET, target);
Global_as& gl = getGlobal(fn);
- as_object* null = 0;
+ as_object* null = nullptr;
callMethod(&gl, NSV::PROP_AS_SET_PROP_FLAGS, obj, null, 7);
return as_value();
}
inline void
-parseColorTransProp(as_object& obj, const ObjectURI& key, boost::int16_t&
+parseColorTransProp(as_object& obj, const ObjectURI& key, std::int16_t&
target, bool scale)
{
as_value tmp;
@@ -258,10 +258,10 @@ parseColorTransProp(as_object& obj, const ObjectURI& key, boost::int16_t&
const double d = toNumber(tmp, getVM(obj));
if (scale) {
- target = static_cast<boost::int16_t>(d * 2.56);
+ target = static_cast<std::int16_t>(d * 2.56);
}
else {
- target = static_cast<boost::int16_t>(d);
+ target = static_cast<std::int16_t>(d);
}
}
@@ -275,7 +275,7 @@ getTarget(as_object* obj, const fn_call& fn)
if (sp) return sp;
DisplayObject* o = findTarget(fn.env(), target.to_string());
if (o) return o->to_movie();
- return 0;
+ return nullptr;
}
} // anonymous namespace
diff --git a/libcore/asobj/ContextMenuItem_as.cpp b/libcore/asobj/ContextMenuItem_as.cpp
index f8f11b4..5a97954 100644
--- a/libcore/asobj/ContextMenuItem_as.cpp
+++ b/libcore/asobj/ContextMenuItem_as.cpp
@@ -40,7 +40,7 @@ void
contextmenuitem_class_init(as_object& where, const ObjectURI& uri)
{
registerBuiltinClass(where, contextmenuitem_ctor,
- attachContextMenuItemInterface, 0, uri);
+ attachContextMenuItemInterface, nullptr, uri);
}
namespace {
diff --git a/libcore/asobj/ContextMenu_as.cpp b/libcore/asobj/ContextMenu_as.cpp
index 7d7f306..8134bae 100644
--- a/libcore/asobj/ContextMenu_as.cpp
+++ b/libcore/asobj/ContextMenu_as.cpp
@@ -45,7 +45,7 @@ void
contextmenu_class_init(as_object& where, const ObjectURI& uri)
{
registerBuiltinClass(where, contextmenu_ctor, attachContextMenuInterface,
- 0, uri);
+ nullptr, uri);
}
@@ -58,7 +58,7 @@ namespace {
class CopyMenuItems
{
public:
- CopyMenuItems(const ObjectURI& c, as_object& nc) : _c(c), _target(nc) {}
+ CopyMenuItems(ObjectURI c, as_object& nc) : _c(std::move(c)), _target(nc) {}
void operator()(const as_value& val) {
as_object* obj = toObject(val, getVM(_target));
diff --git a/libcore/asobj/Date_as.cpp b/libcore/asobj/Date_as.cpp
index ee5d12b..e518c86 100644
--- a/libcore/asobj/Date_as.cpp
+++ b/libcore/asobj/Date_as.cpp
@@ -89,15 +89,15 @@ namespace {
// A time struct to contain the broken-down time.
struct GnashTime
{
- boost::int32_t millisecond;
- boost::int32_t second;
- boost::int32_t minute;
- boost::int32_t hour;
- boost::int32_t monthday;
- boost::int32_t weekday;
- boost::int32_t month;
- boost::int32_t year;
- boost::int32_t timeZoneOffset;
+ std::int32_t millisecond;
+ std::int32_t second;
+ std::int32_t minute;
+ std::int32_t hour;
+ std::int32_t monthday;
+ std::int32_t weekday;
+ std::int32_t month;
+ std::int32_t year;
+ std::int32_t timeZoneOffset;
};
static const int daysInMonth[2][12] = {
@@ -281,15 +281,15 @@ namespace {
// Helpers for calendar algorithms
inline bool
-isLeapYear(boost::int32_t year)
+isLeapYear(std::int32_t year)
{
return !((year + 1900) % 400) ||
( !((year + 1900) % 4) && ((year + 1900) % 100));
}
-inline boost::int32_t
-countLeapYears(boost::int32_t year)
+inline std::int32_t
+countLeapYears(std::int32_t year)
{
return year / 4 - year / 100 + year / 400;
}
@@ -517,7 +517,7 @@ bool invalidDate(double timeValue)
/// @param timeValue The time value to break into elements.
/// @param adjustment Adjust the result by this amount (used for full year).
template<typename T>
-inline as_value timeElement(T dateFunc, boost::int32_t GnashTime::* element,
+inline as_value timeElement(T dateFunc, std::int32_t GnashTime::* element,
double timeValue, int adjustment = 0)
{
if (invalidDate(timeValue)) return as_value();
@@ -766,6 +766,9 @@ date_setTime(const fn_call& fn)
// if an additional extra parameter is passed, switch to working in UTC
// instead. Apart from the bottom-level conversions they are identical.
+// If the Date object has been set to NaN previously (see date_setTime()),
+// then all functions that set Date components are no-ops.
+
void
gnashTimeToDate(GnashTime& gt, Date_as& date, bool utc)
{
@@ -839,15 +842,15 @@ date_setfullyear(const fn_call& fn)
else if (rogue_date_args(fn, 3) != 0.0) {
date->setTimeValue(NaN);
}
- else {
+ else if (!isNaN(date->getTimeValue())) {
GnashTime gt;
dateToGnashTime(*date, gt, utc);
gt.year = toInt(fn.arg(0), getVM(fn)) - 1900;
if (fn.nargs >= 2) gt.month = toInt(fn.arg(1), getVM(fn));
if (fn.nargs >= 3) gt.monthday = toInt(fn.arg(2), getVM(fn));
gnashTimeToDate(gt, *date, utc);
- }
- return as_value(date->getTimeValue());
+ }
+ return as_value(date->getTimeValue());
}
/// \brief Date.setYear(year[,month[,day]])
@@ -879,7 +882,7 @@ date_setYear(const fn_call& fn)
else if (rogue_date_args(fn, 3) != 0.0) {
date->setTimeValue(NaN);
}
- else {
+ else if (!isNaN(date->getTimeValue())) {
GnashTime gt;
dateToGnashTime(*date, gt, false);
@@ -934,7 +937,7 @@ date_setmonth(const fn_call& fn)
else if (rogue_date_args(fn, 2) != 0.0) {
date->setTimeValue(NaN);
}
- else {
+ else if (!isNaN(date->getTimeValue())) {
GnashTime gt;
@@ -986,7 +989,7 @@ date_setDate(const fn_call& fn)
date->setTimeValue(NaN); // Is what FlashPlayer sets
} else if (rogue_date_args(fn, 1) != 0.0) {
date->setTimeValue(NaN);
- } else {
+ } else if (!isNaN(date->getTimeValue())) {
GnashTime gt;
dateToGnashTime(*date, gt, utc);
@@ -1030,7 +1033,7 @@ date_setHours(const fn_call& fn)
else if (rogue_date_args(fn, 4) != 0.0) {
date->setTimeValue(NaN);
}
- else {
+ else if (!isNaN(date->getTimeValue())) {
GnashTime gt;
@@ -1076,7 +1079,7 @@ date_setMinutes(const fn_call& fn)
else if (rogue_date_args(fn, 3) != 0.0) {
date->setTimeValue(NaN);
}
- else {
+ else if (!isNaN(date->getTimeValue())) {
GnashTime gt;
dateToGnashTime(*date, gt, utc);
@@ -1116,7 +1119,7 @@ date_setSeconds(const fn_call& fn)
else if (rogue_date_args(fn, 2) != 0.0) {
date->setTimeValue(NaN);
}
- else {
+ else if (!isNaN(date->getTimeValue())) {
// We *could* set seconds [and milliseconds] without breaking the
// structure out and reasembling it. We do it the same way as the
// rest for simplicity and in case anyone's date routines ever
@@ -1154,7 +1157,7 @@ date_setMilliseconds(const fn_call& fn)
else if (rogue_date_args(fn, 1) != 0.0) {
date->setTimeValue(NaN);
}
- else {
+ else if (!isNaN(date->getTimeValue())) {
GnashTime gt;
@@ -1266,7 +1269,7 @@ date_UTC(const fn_call& fn) {
case 2: // these last two are always performed
gt.month = toInt(fn.arg(1), getVM(fn));
{
- boost::int32_t year = 0;
+ std::int32_t year = 0;
truncateDouble(year, toNumber(fn.arg(0), getVM(fn)));
if (year < 100) gt.year = year;
else gt.year = year - 1900;
@@ -1366,13 +1369,13 @@ makeTimeValue(GnashTime& t)
// Now work out the years from 1970 in days.
// Use a temporary 1970-based year for clarity.
- const boost::int32_t ouryear = t.year - 70;
+ const std::int32_t ouryear = t.year - 70;
// Count the leap years between 1970-1-1 and the beginning of our year.
// 1970 - 1972: no leap years
// 1970 - 1968: one leap year
// Adding one less than the required year gives this behaviour.
- boost::int32_t day = countLeapYears(ouryear + 1969) - countLeapYears(1970);
+ std::int32_t day = countLeapYears(ouryear + 1969) - countLeapYears(1970);
day += ouryear * 365;
/// The year 0 was a leap year, but countLeapYears won't calculate it.
@@ -1401,10 +1404,10 @@ makeTimeValue(GnashTime& t)
// The brute force way of converting days into years since the epoch.
// This also reduces the number of days accurately. Its disadvantage is,
// of course, that it iterates; its advantage that it's always correct.
-boost::int32_t
-getYearBruteForce(boost::int32_t& days)
+std::int32_t
+getYearBruteForce(std::int32_t& days)
{
- boost::int32_t year = 1970;
+ std::int32_t year = 1970;
// Handle 400-year blocks - which always have the same
// number of days (14097) - to cut down on iterations.
@@ -1448,11 +1451,11 @@ fillGnashTime(double t, GnashTime& gt)
// Get the sub-day part of the time, if any and reduce time
// to number of complete days.
// This is a safe cast.
- boost::int32_t remainder =
- static_cast<boost::int32_t>(std::fmod(time, 86400.0));
+ std::int32_t remainder =
+ static_cast<std::int32_t>(std::fmod(time, 86400.0));
// This could overflow.
- boost::int32_t days;
+ std::int32_t days;
truncateDouble(days, time / 86400.0); // complete days
gt.second = remainder % 60;
diff --git a/libcore/asobj/Error_as.cpp b/libcore/asobj/Error_as.cpp
index 447d9fd..97d242d 100644
--- a/libcore/asobj/Error_as.cpp
+++ b/libcore/asobj/Error_as.cpp
@@ -45,7 +45,7 @@ namespace {
void
Error_class_init(as_object& where, const ObjectURI& uri)
{
- registerBuiltinClass(where, error_ctor, attachErrorInterface, 0, uri);
+ registerBuiltinClass(where, error_ctor, attachErrorInterface, nullptr, uri);
}
diff --git a/libcore/asobj/Function_as.cpp b/libcore/asobj/Function_as.cpp
index 32839a6..f276109 100644
--- a/libcore/asobj/Function_as.cpp
+++ b/libcore/asobj/Function_as.cpp
@@ -119,7 +119,7 @@ function_apply(const fn_call& fn)
// detrimental effect on memory usage!
// Normal supers will be created when needed in the function
// call.
- new_fn_call.super = 0;
+ new_fn_call.super = nullptr;
// Check for second argument ('arguments' array)
if (fn.nargs > 1) {
@@ -161,7 +161,7 @@ function_call(const fn_call& fn)
else tp = toObject(fn.arg(0), getVM(fn));
new_fn_call.this_ptr = tp;
- new_fn_call.super = 0;
+ new_fn_call.super = nullptr;
if (fn.nargs) new_fn_call.drop_bottom();
// Call the function
diff --git a/libcore/asobj/Global_as.cpp b/libcore/asobj/Global_as.cpp
index 5f18296..952e6b5 100644
--- a/libcore/asobj/Global_as.cpp
+++ b/libcore/asobj/Global_as.cpp
@@ -28,7 +28,6 @@
#include <limits>
#include <sstream>
#include <boost/lexical_cast.hpp>
-#include <boost/assign/list_of.hpp>
#include "as_object.h"
#include "builtin_function.h"
@@ -147,7 +146,7 @@ Global_as::Global_as(VM& vm)
#ifdef USE_EXTENSIONS
_et(new Extension()),
#endif
- _classes(this, _et.get()),
+ _classes(this),
_objectProto(new as_object(*this))
{
}
@@ -344,41 +343,41 @@ avm1Classes()
// Since we maintain separate lists for AVM1 and AVM2, these are all
// considered to be in the 'Global' namespace (AVM1 has no namespaces)
// An ObjectURI constructed without a namespace is in the global namespace.
- static const ClassHierarchy::NativeClasses s = boost::assign::list_of
-
- (N(system_class_init, NSV::CLASS_SYSTEM, 1))
- (N(stage_class_init, NSV::CLASS_STAGE, 1))
- (N(movieclip_class_init, NSV::CLASS_MOVIE_CLIP, 3))
- (N(textfield_class_init, NSV::CLASS_TEXT_FIELD, 3))
- (N(math_class_init, NSV::CLASS_MATH, 4))
- (N(boolean_class_init, NSV::CLASS_BOOLEAN, 5))
- (N(button_class_init, NSV::CLASS_BUTTON, 5))
- (N(color_class_init, NSV::CLASS_COLOR, 5))
- (N(selection_class_init, NSV::CLASS_SELECTION, 5))
- (N(sound_class_init, NSV::CLASS_SOUND, 5))
- (N(xmlsocket_class_init, NSV::CLASS_XMLSOCKET, 5))
- (N(date_class_init, NSV::CLASS_DATE, 5))
- (N(xmlnode_class_init, NSV::CLASS_XMLNODE, 5))
- (N(xml_class_init, NSV::CLASS_XML, 5))
- (N(mouse_class_init, NSV::CLASS_MOUSE, 5))
- (N(number_class_init, NSV::CLASS_NUMBER, 5))
- (N(textformat_class_init, NSV::CLASS_TEXT_FORMAT, 5))
- (N(key_class_init, NSV::CLASS_KEY, 5))
- (N(AsBroadcaster::init, NSV::CLASS_AS_BROADCASTER, 5))
- (N(textsnapshot_class_init, NSV::CLASS_TEXT_SNAPSHOT, 5))
- (N(video_class_init, NSV::CLASS_VIDEO, 6))
- (N(camera_class_init, NSV::CLASS_CAMERA, 5))
- (N(microphone_class_init, NSV::CLASS_MICROPHONE, 5))
- (N(sharedobject_class_init, NSV::CLASS_SHARED_OBJECT, 5))
- (N(loadvars_class_init, NSV::CLASS_LOAD_VARS, 5))
- (N(localconnection_class_init, NSV::CLASS_LOCALCONNECTION, 6))
- (N(netconnection_class_init, NSV::CLASS_NET_CONNECTION, 6))
- (N(netstream_class_init, NSV::CLASS_NET_STREAM, 6))
- (N(contextmenu_class_init, NSV::CLASS_CONTEXTMENU, 5))
- (N(contextmenuitem_class_init, NSV::CLASS_CONTEXTMENUITEM, 5))
- (N(moviecliploader_class_init, NSV::CLASS_MOVIE_CLIP_LOADER, 5))
- (N(Error_class_init, NSV::CLASS_ERROR, 5))
- (N(accessibility_class_init, NSV::CLASS_ACCESSIBILITY, 5));
+ static const ClassHierarchy::NativeClasses s = {
+ N(system_class_init, NSV::CLASS_SYSTEM, 1),
+ N(stage_class_init, NSV::CLASS_STAGE, 1),
+ N(movieclip_class_init, NSV::CLASS_MOVIE_CLIP, 3),
+ N(textfield_class_init, NSV::CLASS_TEXT_FIELD, 3),
+ N(math_class_init, NSV::CLASS_MATH, 4),
+ N(boolean_class_init, NSV::CLASS_BOOLEAN, 5),
+ N(button_class_init, NSV::CLASS_BUTTON, 5),
+ N(color_class_init, NSV::CLASS_COLOR, 5),
+ N(selection_class_init, NSV::CLASS_SELECTION, 5),
+ N(sound_class_init, NSV::CLASS_SOUND, 5),
+ N(xmlsocket_class_init, NSV::CLASS_XMLSOCKET, 5),
+ N(date_class_init, NSV::CLASS_DATE, 5),
+ N(xmlnode_class_init, NSV::CLASS_XMLNODE, 5),
+ N(xml_class_init, NSV::CLASS_XML, 5),
+ N(mouse_class_init, NSV::CLASS_MOUSE, 5),
+ N(number_class_init, NSV::CLASS_NUMBER, 5),
+ N(textformat_class_init, NSV::CLASS_TEXT_FORMAT, 5),
+ N(key_class_init, NSV::CLASS_KEY, 5),
+ N(AsBroadcaster::init, NSV::CLASS_AS_BROADCASTER, 5),
+ N(textsnapshot_class_init, NSV::CLASS_TEXT_SNAPSHOT, 5),
+ N(video_class_init, NSV::CLASS_VIDEO, 6),
+ N(camera_class_init, NSV::CLASS_CAMERA, 5),
+ N(microphone_class_init, NSV::CLASS_MICROPHONE, 5),
+ N(sharedobject_class_init, NSV::CLASS_SHARED_OBJECT, 5),
+ N(loadvars_class_init, NSV::CLASS_LOAD_VARS, 5),
+ N(localconnection_class_init, NSV::CLASS_LOCALCONNECTION, 6),
+ N(netconnection_class_init, NSV::CLASS_NET_CONNECTION, 6),
+ N(netstream_class_init, NSV::CLASS_NET_STREAM, 6),
+ N(contextmenu_class_init, NSV::CLASS_CONTEXTMENU, 5),
+ N(contextmenuitem_class_init, NSV::CLASS_CONTEXTMENUITEM, 5),
+ N(moviecliploader_class_init, NSV::CLASS_MOVIE_CLIP_LOADER, 5),
+ N(Error_class_init, NSV::CLASS_ERROR, 5),
+ N(accessibility_class_init, NSV::CLASS_ACCESSIBILITY, 5)
+ };
return s;
}
@@ -757,7 +756,7 @@ global_assetnative(const fn_call& fn)
const std::string& props = fn.arg(2).to_string();
const int minor =
- fn.nargs > 3 ? std::max<boost::int32_t>(toInt(fn.arg(3), getVM(fn)), 0) : 0;
+ fn.nargs > 3 ? std::max<std::int32_t>(toInt(fn.arg(3), getVM(fn)), 0) : 0;
std::string::const_iterator pos = props.begin();
@@ -826,7 +825,7 @@ global_assetnativeaccessor(const fn_call& fn)
const std::string& props = fn.arg(2).to_string();
const int minor =
- fn.nargs > 3 ? std::max<boost::int32_t>(toInt(fn.arg(3), getVM(fn)), 0) : 0;
+ fn.nargs > 3 ? std::max<std::int32_t>(toInt(fn.arg(3), getVM(fn)), 0) : 0;
std::string::const_iterator pos = props.begin();
@@ -995,7 +994,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 +1005,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 +1064,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 +1075,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);
}
@@ -1090,7 +1089,7 @@ global_clearInterval(const fn_call& fn)
return as_value();
}
- const boost::uint32_t id = toInt(fn.arg(0), getVM(fn));
+ const std::uint32_t id = toInt(fn.arg(0), getVM(fn));
movie_root& root = getRoot(fn);
return as_value(root.clearIntervalTimer(id));
diff --git a/libcore/asobj/Global_as.h b/libcore/asobj/Global_as.h
index e8cae06..a8a581c 100644
--- a/libcore/asobj/Global_as.h
+++ b/libcore/asobj/Global_as.h
@@ -21,13 +21,7 @@
#define GNASH_GLOBAL_H
#include <string>
-#include <boost/preprocessor/arithmetic/inc.hpp>
-#include <boost/preprocessor/repetition/enum_params.hpp>
-#include <boost/preprocessor/repetition/repeat.hpp>
-#include <boost/preprocessor/repetition/repeat_from_to.hpp>
-#include <boost/preprocessor/seq/for_each.hpp>
-#include <boost/preprocessor/facilities/empty.hpp>
-#include <boost/scoped_ptr.hpp>
+#include <memory>
#include "as_object.h"
#include "fn_call.h"
@@ -89,7 +83,7 @@ protected:
private:
void loadExtensions();
- boost::scoped_ptr<Extension> _et;
+ std::unique_ptr<Extension> _et;
ClassHierarchy _classes;
@@ -170,8 +164,8 @@ registerBuiltinClass(as_object& where, Global_as::ASFunction ctor,
/// The call will fail harmlessly if the as_value is not callable.
inline DSOEXPORT as_value
invoke(const as_value& method, const as_environment& env, as_object* this_ptr,
- fn_call::Args& args, as_object* super = 0,
- const movie_definition* callerDef = 0)
+ fn_call::Args& args, as_object* super = nullptr,
+ const movie_definition* callerDef = nullptr)
{
as_value val;
@@ -201,13 +195,9 @@ invoke(const as_value& method, const as_environment& env, as_object* this_ptr,
return val;
}
-/// Helper macros for callMethod arguments.
-#define FUNC_PARAM(z, n, t) BOOST_PP_COMMA_IF(n) t arg##n
-#define VALUE_ARG(z, n, t) BOOST_PP_COMMA_IF(n) arg##n
-
/// Call a member function of this object in an AS-compatible way
//
-/// This is a macro to cope with a varying number of arguments. The function
+/// This is a variadic function to cope with a varying number of arguments. Its
/// signature is as follows:
//
/// as_value callMethod(as_object* obj, const ObjectURI& uri,
@@ -224,26 +214,33 @@ invoke(const as_value& method, const as_environment& env, as_object* this_ptr,
/// @param arg0..argN The arguments to pass
///
/// @return The return value of the call (possibly undefined).
-#define CALL_METHOD(x, n, t) \
-inline as_value \
-callMethod(as_object* obj, const ObjectURI& uri BOOST_PP_COMMA_IF(n)\
- BOOST_PP_REPEAT(n, FUNC_PARAM, const as_value&)) {\
- if (!obj) return as_value();\
- as_value func;\
- if (!obj->get_member(uri, &func)) return as_value();\
- fn_call::Args args;\
- BOOST_PP_EXPR_IF(n, (args += BOOST_PP_REPEAT(n, VALUE_ARG, BOOST_PP_EMPTY));)\
- return invoke(func, as_environment(getVM(*obj)), obj, args);\
+
+inline as_value
+callMethod(fn_call::Args& args, as_object* obj, const ObjectURI& uri)
+{
+ if (!obj) return as_value();
+ as_value func;
+ if (!obj->get_member(uri, &func)) return as_value();
+
+ return invoke(func, as_environment(getVM(*obj)), obj, args);
+}
+
+template <typename Param, typename... Params>
+inline as_value
+callMethod(fn_call::Args& args, as_object* obj, const ObjectURI& uri, Param param, Params... params)
+{
+ args += param;
+ return callMethod(args, obj, uri, params...);
}
-/// The maximum number of as_value arguments allowed in callMethod functions.
-#define MAX_ARGS 4
-BOOST_PP_REPEAT(BOOST_PP_INC(MAX_ARGS), CALL_METHOD, BOOST_PP_EMPTY)
-#undef VALUE_ARG
-#undef FUNC_PARAM
-#undef MAX_ARGS
-#undef CALL_METHOD
+template <typename... Params>
+inline as_value
+callMethod(as_object* obj, const ObjectURI& uri, Params... params)
+{
+ fn_call::Args args;
+ return callMethod(args, obj, uri, params...);
+}
/// Convenience function for finding a class constructor.
//
diff --git a/libcore/asobj/Key_as.cpp b/libcore/asobj/Key_as.cpp
index dfcc9e1..66bf755 100644
--- a/libcore/asobj/Key_as.cpp
+++ b/libcore/asobj/Key_as.cpp
@@ -162,7 +162,7 @@ key_class_init(as_object& where, const ObjectURI& uri)
// All properties are protected using ASSetPropFlags.
Global_as& gl = getGlobal(where);
- as_object* null = 0;
+ as_object* null = nullptr;
callMethod(&gl, NSV::PROP_AS_SET_PROP_FLAGS, key, null, 7);
}
diff --git a/libcore/asobj/LoadVars_as.cpp b/libcore/asobj/LoadVars_as.cpp
index 756d5d1..a376fda 100644
--- a/libcore/asobj/LoadVars_as.cpp
+++ b/libcore/asobj/LoadVars_as.cpp
@@ -52,7 +52,7 @@ namespace {
void
loadvars_class_init(as_object& where, const ObjectURI& uri)
{
- registerBuiltinClass(where, loadvars_ctor, attachLoadVarsInterface, 0, uri);
+ registerBuiltinClass(where, loadvars_ctor, attachLoadVarsInterface, nullptr, uri);
}
namespace {
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/LocalConnection_as.cpp b/libcore/asobj/LocalConnection_as.cpp
index d147f72..705d3a9 100644
--- a/libcore/asobj/LocalConnection_as.cpp
+++ b/libcore/asobj/LocalConnection_as.cpp
@@ -19,12 +19,10 @@
#include "LocalConnection_as.h"
-#include <boost/shared_ptr.hpp>
#include <cerrno>
#include <cstring>
-#include <boost/cstdint.hpp> // for boost::?int??_t
-#include <boost/assign/list_of.hpp>
-#include <boost/bind.hpp>
+#include <cstdint> // for boost::?int??_t
+#include <functional>
#include "GnashSystemIOHeaders.h"
@@ -141,7 +139,7 @@ namespace {
bool findListener(const std::string& name, SharedMem& mem);
void getMarker(SharedMem::iterator& i, SharedMem::iterator end);
void markRead(SharedMem& m);
- inline boost::uint32_t getTimestamp(const VM& vm);
+ inline std::uint32_t getTimestamp(const VM& vm);
/// Read the AMF data and invoke the function.
void executeAMFFunction(as_object& owner, amf::Reader& rd);
@@ -149,14 +147,14 @@ namespace {
struct ConnectionData
{
std::string name;
- boost::uint32_t ts;
+ std::uint32_t ts;
SimpleBuffer data;
};
}
void
-writeLong(boost::uint8_t*& ptr, boost::uint32_t i)
+writeLong(std::uint8_t*& ptr, std::uint32_t i)
{
*ptr = i & 0xff;
++ptr;
@@ -168,9 +166,9 @@ writeLong(boost::uint8_t*& ptr, boost::uint32_t i)
++ptr;
}
-inline boost::uint32_t
-readLong(const boost::uint8_t* buf) {
- boost::uint32_t s = buf[0] | buf[1] << 8 | buf[2] << 16 | buf[3] << 24;
+inline std::uint32_t
+readLong(const std::uint8_t* buf) {
+ std::uint32_t s = buf[0] | buf[1] << 8 | buf[2] << 16 | buf[3] << 24;
return s;
}
@@ -226,12 +224,12 @@ public:
void connect(const std::string& name);
- void send(boost::shared_ptr<ConnectionData> d)
+ void send(std::unique_ptr<ConnectionData> d)
{
assert(d.get());
VM& vm = getVM(owner());
d->ts = getTimestamp(vm);
- _queue.push_back(d);
+ _queue.push_back(std::move(d));
// Register callback so we can send the data on the next advance.
movie_root& mr = getRoot(owner());
@@ -250,10 +248,10 @@ private:
SharedMem _shm;
- std::deque<boost::shared_ptr<ConnectionData> > _queue;
+ std::deque<std::unique_ptr<ConnectionData>> _queue;
// The timestamp of our last write to the shared memory.
- boost::uint32_t _lastTime;
+ std::uint32_t _lastTime;
};
@@ -303,8 +301,8 @@ LocalConnection_as::update()
// These are not network byte order by default, but not sure about
// host byte order.
- const boost::uint32_t timestamp = readLong(ptr + 8);
- const boost::uint32_t size = readLong(ptr + 12);
+ const std::uint32_t timestamp = readLong(ptr + 8);
+ const std::uint32_t size = readLong(ptr + 12);
// As long as there is a timestamp in the shared memory, we mustn't
// write anything.
@@ -318,10 +316,10 @@ LocalConnection_as::update()
if (timestamp) {
// Start after 16-byte header.
- const boost::uint8_t* b = ptr + 16;
+ const std::uint8_t* b = ptr + 16;
// End at reported size of AMF sequence.
- const boost::uint8_t* end = b + size;
+ const std::uint8_t* end = b + size;
amf::Reader rd(b, end, getGlobal(owner()));
as_value a;
@@ -341,7 +339,7 @@ LocalConnection_as::update()
const size_t timeout = 4 * 1000;
VM& vm = getVM(owner());
- const boost::uint32_t timeNow = getTimestamp(vm);
+ const std::uint32_t timeNow = getTimestamp(vm);
if (timeNow - timestamp > timeout) {
log_debug("Data %s expired at %s. Removing its target "
@@ -378,7 +376,7 @@ LocalConnection_as::update()
}
// Get the first buffer.
- boost::shared_ptr<ConnectionData> cd = _queue.front();
+ std::unique_ptr<ConnectionData> cd = std::move(_queue.front());
_queue.pop_front();
// If the correct listener isn't there, iterate until we find one or
@@ -389,7 +387,7 @@ LocalConnection_as::update()
cd->ts = 0;
break;
}
- cd = _queue.front();
+ cd = std::move(_queue.front());
_queue.pop_front();
}
@@ -484,7 +482,7 @@ void
localconnection_class_init(as_object& where, const ObjectURI& uri)
{
registerBuiltinClass(where, localconnection_new,
- attachLocalConnectionInterface, 0, uri);
+ attachLocalConnectionInterface, nullptr, uri);
}
void
@@ -615,7 +613,7 @@ localconnection_send(const fn_call& fn)
return as_value(false);
}
- boost::shared_ptr<ConnectionData> cd(new ConnectionData());
+ std::unique_ptr<ConnectionData> cd(new ConnectionData());
SimpleBuffer& buf = cd->data;
@@ -635,7 +633,7 @@ localconnection_send(const fn_call& fn)
cd->name = name;
- relay->send(cd);
+ relay->send(std::move(cd));
return as_value(true);
}
@@ -660,17 +658,17 @@ validFunctionName(const std::string& func)
typedef std::vector<std::string> ReservedNames;
- static const ReservedNames reserved = boost::assign::list_of
- ("send")
- ("onStatus")
- ("close")
- ("connect")
- ("domain")
- ("allowDomain");
+ static const ReservedNames reserved = {
+ "send",
+ "onStatus",
+ "close",
+ "connect",
+ "domain",
+ "allowDomain"};
const ReservedNames::const_iterator it =
std::find_if(reserved.begin(), reserved.end(),
- boost::bind(StringNoCaseEqual(), _1, func));
+ std::bind(StringNoCaseEqual(), std::placeholders::_1, func));
return (it == reserved.end());
}
@@ -688,7 +686,7 @@ removeListener(const std::string& name, SharedMem& mem)
// No listeners if the first byte is 0.
if (!*ptr) return;
- SharedMem::iterator found = 0;
+ SharedMem::iterator found = nullptr;
SharedMem::iterator next;
@@ -916,7 +914,7 @@ markRead(SharedMem& m)
/// Version 10 fails if it recieves a value outside the signed 32-bit int
/// range, so we surmise that there is an undocumented conversion to signed
/// in that player. We make sure the value never exceeds 0x7fffffff.
-inline boost::uint32_t
+inline std::uint32_t
getTimestamp(const VM& vm)
{
return vm.getTime() & 0x7fffffff;
diff --git a/libcore/asobj/Microphone_as.cpp b/libcore/asobj/Microphone_as.cpp
index 3502b04..0128ba2 100644
--- a/libcore/asobj/Microphone_as.cpp
+++ b/libcore/asobj/Microphone_as.cpp
@@ -21,7 +21,6 @@
#include "Microphone_as.h"
#include <algorithm>
-#include <boost/scoped_ptr.hpp>
#include <memory>
#include "as_object.h" // for inheritance
@@ -144,7 +143,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())
{
@@ -226,7 +225,7 @@ public:
}
private:
- boost::scoped_ptr<media::AudioInput> _input;
+ std::unique_ptr<media::AudioInput> _input;
};
@@ -253,7 +252,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 +267,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);
}
@@ -285,7 +284,7 @@ microphone_setgain(const fn_call& fn)
return as_value();
}
- const boost::int32_t gain = clamp<boost::int32_t>(toInt(fn.arg(0), getVM(fn)), 0, 100);
+ const std::int32_t gain = clamp<std::int32_t>(toInt(fn.arg(0), getVM(fn)), 0, 100);
ptr->setGain(gain);
return as_value();
}
@@ -442,7 +441,7 @@ microphone_setsilencelevel(const fn_call& fn)
if (numargs > 1) {
// If it's less than 0, it's set to 0.
- const int timeout = std::max<boost::int32_t>(toInt(fn.arg(1), getVM(fn)), 0);
+ const int timeout = std::max<std::int32_t>(toInt(fn.arg(1), getVM(fn)), 0);
ptr->setSilenceTimeout(timeout);
}
return as_value();
diff --git a/libcore/asobj/Mouse_as.cpp b/libcore/asobj/Mouse_as.cpp
index 79abd8c..9e162fb 100644
--- a/libcore/asobj/Mouse_as.cpp
+++ b/libcore/asobj/Mouse_as.cpp
@@ -79,7 +79,7 @@ attachMouseInterface(as_object& o)
AsBroadcaster::initialize(o);
Global_as& gl = getGlobal(o);
- as_object* null = 0;
+ as_object* null = nullptr;
callMethod(&gl, NSV::PROP_AS_SET_PROP_FLAGS, &o, null, 7);
}
diff --git a/libcore/asobj/MovieClipLoader.cpp b/libcore/asobj/MovieClipLoader.cpp
index c1e6eee..602e268 100644
--- a/libcore/asobj/MovieClipLoader.cpp
+++ b/libcore/asobj/MovieClipLoader.cpp
@@ -73,7 +73,7 @@ moviecliploader_class_init(as_object& where, const ObjectURI& uri)
AsBroadcaster::initialize(*proto);
- as_object* null = 0;
+ as_object* null = nullptr;
callMethod(&gl, NSV::PROP_AS_SET_PROP_FLAGS, proto, null, 1027);
where.init_member(uri, cl, as_object::DefaultFlags);
diff --git a/libcore/asobj/MovieClip_as.cpp b/libcore/asobj/MovieClip_as.cpp
index 3b8c0f4..391f037 100644
--- a/libcore/asobj/MovieClip_as.cpp
+++ b/libcore/asobj/MovieClip_as.cpp
@@ -311,7 +311,7 @@ movieclip_createEmptyMovieClip(const fn_call& fn)
Movie* m = ptr->get_root();
as_object* o = getObjectWithPrototype(getGlobal(fn), NSV::CLASS_MOVIE_CLIP);
- MovieClip* mc = new MovieClip(o, 0, m, ptr);
+ MovieClip* mc = new MovieClip(o, nullptr, m, ptr);
VM& vm = getVM(fn);
mc->set_name(getURI(vm, fn.arg(0).to_string()));
@@ -476,7 +476,7 @@ movieclip_attachMovie(const fn_call& fn)
const double depth = toNumber(fn.arg(2), getVM(fn));
// This also checks for overflow, as both numbers are expressible as
- // boost::int32_t.
+ // std::int32_t.
if (depth < DisplayObject::lowerAccessibleBound ||
depth > DisplayObject::upperAccessibleBound)
{
@@ -487,7 +487,7 @@ movieclip_attachMovie(const fn_call& fn)
return as_value();
}
- boost::int32_t depthValue = static_cast<boost::int32_t>(depth);
+ std::int32_t depthValue = static_cast<std::int32_t>(depth);
Global_as& gl = getGlobal(fn);
DisplayObject* newch = exported_movie->createDisplayObject(gl, movieclip);
@@ -496,7 +496,7 @@ movieclip_attachMovie(const fn_call& fn)
newch->set_name(getURI(vm, newname));
newch->setDynamic();
- as_object* initObj(0);
+ as_object* initObj(nullptr);
if (fn.nargs > 3 ) {
initObj = toObject(fn.arg(3), getVM(fn));
@@ -724,7 +724,7 @@ movieclip_duplicateMovieClip(const fn_call& fn)
const double depth = toNumber(fn.arg(1), getVM(fn));
// This also checks for overflow, as both numbers are expressible as
- // boost::int32_t.
+ // std::int32_t.
if (depth < DisplayObject::lowerAccessibleBound ||
depth > DisplayObject::upperAccessibleBound)
{
@@ -735,7 +735,7 @@ movieclip_duplicateMovieClip(const fn_call& fn)
return as_value();
}
- boost::int32_t depthValue = static_cast<boost::int32_t>(depth);
+ std::int32_t depthValue = static_cast<std::int32_t>(depth);
MovieClip* ch;
@@ -1013,17 +1013,17 @@ movieclip_hitTest(const fn_call& fn)
case 2: // x, y
{
- boost::int32_t x = pixelsToTwips(toNumber(fn.arg(0), getVM(fn)));
- boost::int32_t y = pixelsToTwips(toNumber(fn.arg(1), getVM(fn)));
+ std::int32_t x = pixelsToTwips(toNumber(fn.arg(0), getVM(fn)));
+ std::int32_t y = pixelsToTwips(toNumber(fn.arg(1), getVM(fn)));
return movieclip->pointInBounds(x, y);
}
case 3: // x, y, shapeFlag
{
- const boost::int32_t x = pixelsToTwips(toNumber(fn.arg(0),
+ const std::int32_t x = pixelsToTwips(toNumber(fn.arg(0),
getVM(fn)));
- const boost::int32_t y = pixelsToTwips(toNumber(fn.arg(1),
+ const std::int32_t y = pixelsToTwips(toNumber(fn.arg(1),
getVM(fn)));
const bool shapeFlag = toBool(fn.arg(2), getVM(fn));
@@ -1287,8 +1287,8 @@ movieclip_globalToLocal(const fn_call& fn)
}
as_value tmp;
- boost::int32_t x = 0;
- boost::int32_t y = 0;
+ std::int32_t x = 0;
+ std::int32_t y = 0;
if ( ! obj->get_member(NSV::PROP_X, &tmp) )
{
@@ -1348,8 +1348,8 @@ movieclip_localToGlobal(const fn_call& fn)
}
as_value tmp;
- boost::int32_t x = 0;
- boost::int32_t y = 0;
+ std::int32_t x = 0;
+ std::int32_t y = 0;
if (!obj->get_member(NSV::PROP_X, &tmp)) {
IF_VERBOSE_ASCODING_ERRORS(
@@ -1402,7 +1402,7 @@ movieclip_setMask(const fn_call& fn)
if ( arg.is_null() || arg.is_undefined() )
{
// disable mask
- maskee->setMask(0);
+ maskee->setMask(nullptr);
}
else
{
@@ -1499,11 +1499,11 @@ movieclip_lineStyle(const fn_call& fn)
return as_value();
}
- boost::uint8_t r = 0;
- boost::uint8_t g = 0;
- boost::uint8_t b = 0;
- boost::uint8_t a = 255;
- boost::uint16_t thickness = 0;
+ std::uint8_t r = 0;
+ std::uint8_t g = 0;
+ std::uint8_t b = 0;
+ std::uint8_t a = 255;
+ std::uint16_t thickness = 0;
bool scaleThicknessVertically = true;
bool scaleThicknessHorizontally = true;
bool pixelHinting = false;
@@ -1594,20 +1594,20 @@ movieclip_lineStyle(const fn_call& fn)
{
const float alphaval = clamp<float>(toNumber(fn.arg(2), getVM(fn)),
0, 100);
- a = boost::uint8_t(255 * (alphaval / 100));
+ a = std::uint8_t(255 * (alphaval / 100));
}
case 2:
{
// See pollock.swf for eventual regressions.
// It sets color to a random number from
// 0 to 160000000 (about 10 times more then the max).
- boost::uint32_t rgbval = toInt(fn.arg(1), getVM(fn));
- r = boost::uint8_t((rgbval & 0xFF0000) >> 16);
- g = boost::uint8_t((rgbval & 0x00FF00) >> 8);
- b = boost::uint8_t((rgbval & 0x0000FF) );
+ std::uint32_t rgbval = toInt(fn.arg(1), getVM(fn));
+ r = std::uint8_t((rgbval & 0xFF0000) >> 16);
+ g = std::uint8_t((rgbval & 0x00FF00) >> 8);
+ b = std::uint8_t((rgbval & 0x0000FF) );
}
case 1:
- thickness = boost::uint16_t(pixelsToTwips(clamp<float>(
+ thickness = std::uint16_t(pixelsToTwips(clamp<float>(
toNumber(fn.arg(0), getVM(fn)), 0, 255)));
break;
}
@@ -1675,13 +1675,13 @@ movieclip_beginFill(const fn_call& fn)
}
// 2^24 is the max here
- const boost::uint32_t rgbval =
+ const std::uint32_t rgbval =
clamp<float>(toNumber(fn.arg(0), getVM(fn)), 0, 16777216);
- const boost::uint8_t r = (rgbval & 0xFF0000) >> 16;
- const boost::uint8_t g = (rgbval & 0x00FF00) >> 8;
- const boost::uint8_t b = rgbval & 0x0000FF;
- boost::uint8_t a = 255;
+ const std::uint8_t r = (rgbval & 0xFF0000) >> 16;
+ const std::uint8_t g = (rgbval & 0x00FF00) >> 8;
+ const std::uint8_t b = rgbval & 0x0000FF;
+ std::uint8_t a = 255;
if (fn.nargs > 1) {
a = 255 * clamp<int>(toInt(fn.arg(1), getVM(fn)), 0, 100) / 100;
@@ -1804,16 +1804,16 @@ movieclip_beginGradientFill(const fn_call& fn)
gradients.reserve(stops);
for (size_t i = 0; i < stops; ++i) {
- const ObjectURI& key = getURI(vm, boost::lexical_cast<std::string>(i));
+ const ObjectURI& key = getURI(vm, std::to_string(i));
as_value colVal = getMember(*colors, key);
- boost::uint32_t col = colVal.is_number() ? toInt(colVal, getVM(fn)) : 0;
+ std::uint32_t col = colVal.is_number() ? toInt(colVal, getVM(fn)) : 0;
/// Alpha is the range 0..100.
as_value alpVal = getMember(*alphas, key);
const double a = alpVal.is_number() ?
clamp<double>(toNumber(alpVal, getVM(fn)), 0, 100) : 0;
- const boost::uint8_t alp = 0xff * (a / 100);
+ const std::uint8_t alp = 0xff * (a / 100);
// Ratio is the range 0..255, but a ratio may never be smaller than
// the previous value. The pp adjusts it to be greater than the
@@ -1824,12 +1824,12 @@ movieclip_beginGradientFill(const fn_call& fn)
// steps of 1 appear to be adjusted.
const int step = 2;
const as_value& ratVal = getMember(*ratios, key);
- const boost::uint32_t minRatio =
+ const std::uint32_t minRatio =
gradients.empty() ? 0 :
- std::min<boost::uint32_t>(gradients[i - 1].ratio + step, 0xff);
+ std::min<std::uint32_t>(gradients[i - 1].ratio + step, 0xff);
- boost::uint8_t rat = ratVal.is_number() ?
- clamp<boost::uint32_t>(toInt(ratVal, getVM(fn)), minRatio, 0xff)
+ std::uint8_t rat = ratVal.is_number() ?
+ clamp<std::uint32_t>(toInt(ratVal, getVM(fn)), minRatio, 0xff)
: minRatio;
// The renderer may expect successively larger ratios; failure to
@@ -1843,7 +1843,7 @@ movieclip_beginGradientFill(const fn_call& fn)
color.parseRGB(col);
color.m_a = alp;
- gradients.push_back(GradientRecord(rat, color));
+ gradients.emplace_back(rat, color);
}
// Make sure we don't try to construct a GradientFill with only 1 stop!
@@ -2057,8 +2057,8 @@ movieclip_attachBitmap(const fn_call& fn)
int depth = toInt(fn.arg(1), getVM(fn));
- DisplayObject* bm = new Bitmap(getRoot(fn), 0, bd, ptr);
- ptr->attachCharacter(*bm, depth, 0);
+ DisplayObject* bm = new Bitmap(getRoot(fn), nullptr, bd, ptr);
+ ptr->attachCharacter(*bm, depth, nullptr);
return as_value();
}
diff --git a/libcore/asobj/NetConnection_as.cpp b/libcore/asobj/NetConnection_as.cpp
index 2c9a160..4b987de 100644
--- a/libcore/asobj/NetConnection_as.cpp
+++ b/libcore/asobj/NetConnection_as.cpp
@@ -26,10 +26,9 @@
#include <string>
#include <utility>
-#include <boost/scoped_ptr.hpp>
+#include <memory>
#include <boost/lexical_cast.hpp>
#include <boost/noncopyable.hpp>
-#include <boost/mem_fn.hpp>
#include <iomanip>
#include "GnashSystemNetHeaders.h"
@@ -71,8 +70,8 @@ namespace {
getStatusCodeInfo(NetConnection_as::StatusCode code);
/// Parse and send any invoke messages from an HTTP connection.
- void handleAMFInvoke(amf::Reader& rd, const boost::uint8_t*& b,
- const boost::uint8_t* end, as_object& owner);
+ void handleAMFInvoke(amf::Reader& rd, const std::uint8_t*& b,
+ const std::uint8_t* end, as_object& owner);
void replyBWCheck(rtmp::RTMP& r, double txn);
@@ -97,9 +96,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
@@ -137,7 +136,7 @@ public:
_callbacks.erase(it);
return callback;
}
- return 0;
+ return nullptr;
}
protected:
@@ -202,8 +201,8 @@ private:
/// Handle replies to server functions we invoked with a callback.
//
/// This needs access to the stored callbacks.
- void handleAMFReplies(amf::Reader& rd, const boost::uint8_t*& b,
- const boost::uint8_t* end);
+ void handleAMFReplies(amf::Reader& rd, const std::uint8_t*& b,
+ const std::uint8_t* end);
Connection& _handler;
@@ -217,7 +216,7 @@ private:
size_t _calls;
/// A single HTTP request.
- boost::scoped_ptr<IOChannel> _connection;
+ std::unique_ptr<IOChannel> _connection;
/// Headers to be sent with this request.
NetworkAdapter::RequestHeaders _headers;
@@ -235,10 +234,10 @@ public:
//
/// @param nc The NetConnection AS object to send status/error events to
/// @param url URL to post calls to
- HTTPConnection(NetConnection_as& nc, const URL& url)
+ HTTPConnection(NetConnection_as& nc, URL url)
:
Connection(nc),
- _url(url)
+ _url(std::move(url))
{
}
@@ -258,10 +257,10 @@ private:
const URL _url;
/// The queue of sent requests.
- std::vector<boost::shared_ptr<HTTPRequest> > _requestQueue;
+ std::vector<std::unique_ptr<HTTPRequest>> _requestQueue;
/// The current request.
- boost::shared_ptr<HTTPRequest> _currentRequest;
+ std::unique_ptr<HTTPRequest> _currentRequest;
};
@@ -290,8 +289,8 @@ public:
aw.writeString("play");
aw.writeNumber(0);
aw.writeNull();
- for (size_t i = 0; i < args.size(); ++i) {
- args[i].writeAMF0(aw);
+ for (auto& arg : args) {
+ arg.writeAMF0(aw);
}
// TODO Use the play method and the streamId from createStream
_rtmp.call(buf);
@@ -303,8 +302,8 @@ public:
const size_t id = asCallback ? callNo() : 0;
aw.writeNumber(id);
- for (size_t i = 0; i < args.size(); ++i) {
- args[i].writeAMF0(aw);
+ for (auto& arg : args) {
+ arg.writeAMF0(aw);
}
_rtmp.call(buf);
if (asCallback) {
@@ -380,7 +379,7 @@ public:
}
- boost::shared_ptr<SimpleBuffer> b = _rtmp.getMessage();
+ std::shared_ptr<SimpleBuffer> b = _rtmp.getMessage();
if (b && !_nc.isConnected()) {
_nc.setConnected();
@@ -398,7 +397,7 @@ public:
private:
- void handleInvoke(const boost::uint8_t* payload, const boost::uint8_t* end);
+ void handleInvoke(const std::uint8_t* payload, const std::uint8_t* end);
rtmp::RTMP _rtmp;
bool _connectionComplete;
@@ -425,7 +424,7 @@ void
netconnection_class_init(as_object& where, const ObjectURI& uri)
{
registerBuiltinClass(where, netconnection_new,
- attachNetConnectionInterface, 0, uri);
+ attachNetConnectionInterface, nullptr, uri);
}
void
@@ -433,7 +432,7 @@ NetConnection_as::markReachableResources() const
{
owner().setReachable();
std::for_each(_oldConnections.begin(), _oldConnections.end(),
- boost::mem_fn(&Connection::setReachable));
+ std::mem_fn(&Connection::setReachable));
if (_currentConnection.get()) _currentConnection->setReachable();
}
@@ -568,8 +567,7 @@ NetConnection_as::close()
/// Queue the current call queue if it has pending calls
if (_currentConnection.get() && _currentConnection->hasPendingCalls()) {
- boost::shared_ptr<Connection> c(_currentConnection.release());
- _oldConnections.push_back(c);
+ _oldConnections.emplace_back(std::move(_currentConnection));
}
/// TODO: what should actually happen here? Should an attached
@@ -626,7 +624,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());
@@ -734,7 +732,7 @@ netconnection_call(const fn_call& fn)
#endif
// TODO: arg(1) is the response object. let it know when data comes back
- as_object* asCallback(0);
+ as_object* asCallback(nullptr);
if (fn.nargs > 1) {
if (fn.arg(1).is_object()) {
@@ -929,11 +927,11 @@ getStatusCodeInfo(NetConnection_as::StatusCode code)
}
void
-handleAMFInvoke(amf::Reader& rd, const boost::uint8_t*& b,
- const boost::uint8_t* end, as_object& owner)
+handleAMFInvoke(amf::Reader& rd, const std::uint8_t*& b,
+ const std::uint8_t* end, as_object& owner)
{
- const boost::uint16_t invokecount = amf::readNetworkShort(b);
+ const std::uint16_t invokecount = amf::readNetworkShort(b);
b += 2;
if (!invokecount) return;
@@ -942,7 +940,7 @@ handleAMFInvoke(amf::Reader& rd, const boost::uint8_t*& b,
if (b + 2 > end) {
throw amf::AMFException("Invoke buffer too short");
}
- const boost::uint16_t namelength = amf::readNetworkShort(b);
+ const std::uint16_t namelength = amf::readNetworkShort(b);
b += 2;
if (b + namelength > end) {
throw amf::AMFException("Invoke buffer too short");
@@ -978,10 +976,10 @@ handleAMFInvoke(amf::Reader& rd, const boost::uint8_t*& b,
//
/// Note that fatal errors will throw an amf::AMFException.
void
-HTTPRequest::handleAMFReplies(amf::Reader& rd, const boost::uint8_t*& b,
- const boost::uint8_t* end)
+HTTPRequest::handleAMFReplies(amf::Reader& rd, const std::uint8_t*& b,
+ const std::uint8_t* end)
{
- const boost::uint16_t numreplies = amf::readNetworkShort(b);
+ const std::uint16_t numreplies = amf::readNetworkShort(b);
b += 2; // number of replies
// TODO: test if this value is relevant at all.
@@ -997,7 +995,7 @@ HTTPRequest::handleAMFReplies(amf::Reader& rd, const boost::uint8_t*& b,
if (b + 2 > end) return;
- const boost::uint16_t replylength = amf::readNetworkShort(b);
+ const std::uint16_t replylength = amf::readNetworkShort(b);
b += 2;
if (replylength < 4 || b + replylength > end) {
@@ -1028,7 +1026,7 @@ HTTPRequest::handleAMFReplies(amf::Reader& rd, const boost::uint8_t*& b,
// parse past unused string in header
if (b + 2 > end) return;
- const boost::uint16_t unusedlength = amf::readNetworkShort(b);
+ const std::uint16_t unusedlength = amf::readNetworkShort(b);
b += 2;
if (b + unusedlength > end) return;
@@ -1087,20 +1085,16 @@ HTTPConnection::advance()
{
// If there is data waiting to be sent, send it and push it
// to the queue.
- if (_currentRequest.get()) {
+ if (_currentRequest) {
_currentRequest->send(_url, _nc);
- _requestQueue.push_back(_currentRequest);
-
// Clear the current request for the next go.
- _currentRequest.reset();
+ _requestQueue.emplace_back(std::move(_currentRequest));
}
// Process all replies and clear finished requests.
- for (std::vector<boost::shared_ptr<HTTPRequest> >::iterator i =
- _requestQueue.begin(); i != _requestQueue.end();) {
- if (!(*i)->process(_nc)) i = _requestQueue.erase(i);
- else ++i;
- }
+ auto rm = std::remove_if(_requestQueue.begin(), _requestQueue.end(),
+ [&](std::unique_ptr<HTTPRequest>& req) { return !req->process(_nc); });
+ _requestQueue.erase(rm, _requestQueue.end());
return true;
}
@@ -1113,7 +1107,7 @@ HTTPRequest::send(const URL& url, NetConnection_as& nc)
log_debug("creating connection");
// Fill in header
- (reinterpret_cast<boost::uint16_t*>(_data.data() + 4))[0] = htons(_calls);
+ (reinterpret_cast<std::uint16_t*>(_data.data() + 4))[0] = htons(_calls);
std::string postdata(reinterpret_cast<char*>(_data.data()), _data.size());
#ifdef GNASH_DEBUG_REMOTING
@@ -1200,8 +1194,8 @@ HTTPRequest::process(NetConnection_as& nc)
#ifdef GNASH_DEBUG_REMOTING
log_debug("hit eof");
#endif
- const boost::uint8_t *b = _reply.data();
- const boost::uint8_t *end = _reply.data() + _reply.size();
+ const std::uint8_t *b = _reply.data();
+ const std::uint8_t *end = _reply.data() + _reply.size();
amf::Reader rd(b, end, getGlobal(nc.owner()));
@@ -1230,7 +1224,7 @@ void
HTTPConnection::call(as_object* asCallback, const std::string& methodName,
const std::vector<as_value>& args)
{
- if (!_currentRequest.get()) {
+ if (!_currentRequest) {
_currentRequest.reset(new HTTPRequest(*this));
}
@@ -1283,8 +1277,8 @@ HTTPConnection::call(as_object* asCallback, const std::string& methodName,
}
void
-RTMPConnection::handleInvoke(const boost::uint8_t* payload,
- const boost::uint8_t* end)
+RTMPConnection::handleInvoke(const std::uint8_t* payload,
+ const std::uint8_t* end)
{
// TODO: clean up the logic in this function to reduce duplication.
diff --git a/libcore/asobj/NetConnection_as.h b/libcore/asobj/NetConnection_as.h
index f053b7e..f56e0fc 100644
--- a/libcore/asobj/NetConnection_as.h
+++ b/libcore/asobj/NetConnection_as.h
@@ -24,7 +24,6 @@
#include <string>
#include <list>
#include <memory>
-#include <boost/shared_ptr.hpp>
#include "Relay.h"
@@ -104,7 +103,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;
@@ -118,7 +117,7 @@ private:
/// Extend the URL to be used for playing
void addToURL(const std::string& url);
- typedef std::list<boost::shared_ptr<Connection> > Connections;
+ typedef std::list<std::unique_ptr<Connection> > Connections;
/// Queue of call groups
//
@@ -129,7 +128,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 386a227..99d2a7a 100644
--- a/libcore/asobj/NetStream_as.cpp
+++ b/libcore/asobj/NetStream_as.cpp
@@ -26,8 +26,8 @@
#include <functional>
#include <algorithm>
-#include <boost/cstdint.hpp>
-#include <boost/thread/mutex.hpp>
+#include <cstdint>
+#include <mutex>
#include "RunResources.h"
#include "CharacterProxy.h"
@@ -100,16 +100,16 @@ namespace {
NetStream_as::NetStream_as(as_object* owner)
:
ActiveRelay(owner),
- _netCon(0),
+ _netCon(nullptr),
_bufferTime(100),
_imageframe(),
- _parser(NULL),
+ _parser(),
_inputPos(0),
- _invalidatedVideoCharacter(0),
+ _invalidatedVideoCharacter(nullptr),
_decoding_state(DEC_NONE),
- _videoDecoder(0),
+ _videoDecoder(),
_videoInfoKnown(false),
- _audioDecoder(0),
+ _audioDecoder(),
_audioInfoKnown(false),
// Playback clock starts in 'stop' mode
@@ -132,7 +132,7 @@ netstream_class_init(as_object& where, const ObjectURI& uri)
// NetStream is genuinely a built-in class, but its constructor calls
// several native functions. It also calls NetConnection.call.
registerBuiltinClass(where, netstream_new, attachNetStreamInterface,
- NULL, uri);
+ nullptr, uri);
}
void
@@ -160,12 +160,9 @@ NetStream_as::processStatusNotifications()
// TODO: check for System.onStatus too ! use a private
// getStatusHandler() method for this.
// Copy it to prevent threads changing it.
- StatusCode code = invalidStatus;
+ StatusCode code = static_cast<StatusCode>(_statusCode.load());
- {
- boost::mutex::scoped_lock lock(_statusMutex);
- std::swap(code, _statusCode);
- }
+ setStatus(invalidStatus);
// Nothing to do if no more valid notifications.
if (code == invalidStatus) return;
@@ -180,12 +177,11 @@ void
NetStream_as::setStatus(StatusCode status)
{
// Get a lock to avoid messing with statuses while processing them
- boost::mutex::scoped_lock lock(_statusMutex);
_statusCode = status;
}
void
-NetStream_as::setBufferTime(boost::uint32_t time)
+NetStream_as::setBufferTime(std::uint32_t time)
{
// The argument is in milliseconds,
_bufferTime = time;
@@ -196,17 +192,17 @@ long
NetStream_as::bufferLength()
{
#ifdef USE_MEDIA
- if (_parser.get() == NULL) return 0;
+ if (_parser.get() == nullptr) return 0;
return _parser->getBufferLength();
#endif // USE_MEDIA
}
-std::auto_ptr<image::GnashImage>
+std::unique_ptr<image::GnashImage>
NetStream_as::get_video()
{
- boost::mutex::scoped_lock lock(image_mutex);
+ std::lock_guard<std::mutex> lock(image_mutex);
- return _imageframe;
+ return std::move(_imageframe);
}
void
@@ -504,7 +500,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 +544,12 @@ NetStream_as::startPlayback()
}
-std::auto_ptr<image::GnashImage>
-NetStream_as::getDecodedVideoFrame(boost::uint32_t ts)
+std::unique_ptr<image::GnashImage>
+NetStream_as::getDecodedVideoFrame(std::uint32_t ts)
{
assert(_videoDecoder.get());
- std::auto_ptr<image::GnashImage> video;
+ std::unique_ptr<image::GnashImage> video;
#ifdef USE_MEDIA
assert(_parser.get());
@@ -562,7 +558,7 @@ NetStream_as::getDecodedVideoFrame(boost::uint32_t ts)
return video;
}
- boost::uint64_t nextTimestamp;
+ std::uint64_t nextTimestamp;
bool parsingComplete = _parser->parsingCompleted();
if (!_parser->nextVideoFrameTimestamp(nextTimestamp)) {
@@ -631,10 +627,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 +638,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(): "
@@ -673,21 +669,21 @@ NetStream_as::decodeNextAudioFrame()
{
assert (_parser.get());
- // TODO: make the buffer cursored later ?
- BufferedAudioStreamer::CursoredBuffer* raw =
- new BufferedAudioStreamer::CursoredBuffer();
-
#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: "
"no more video frames in input"),
this);
#endif
- return 0;
+ return nullptr;
}
+ // TODO: make the buffer cursored later ?
+ BufferedAudioStreamer::CursoredBuffer* raw =
+ new BufferedAudioStreamer::CursoredBuffer();
+
raw->m_data = _audioDecoder->decode(*frame, raw->m_size);
// TODO: let the sound_handler do this .. sounds cleaner
@@ -699,8 +695,8 @@ NetStream_as::decodeNextAudioFrame()
// NOTE: adjust_volume assumes samples
// are 16 bits in size, and signed.
// Size is still given in bytes..
- boost::int16_t* const start =
- reinterpret_cast<boost::int16_t*>(raw->m_data);
+ std::int16_t* const start =
+ reinterpret_cast<std::int16_t*>(raw->m_data);
sound::adjustVolume(start, start + raw->m_size / 2, vol / 100.0);
}
}
@@ -721,7 +717,7 @@ NetStream_as::decodeNextAudioFrame()
}
void
-NetStream_as::seek(boost::uint32_t posSeconds)
+NetStream_as::seek(std::uint32_t posSeconds)
{
GNASH_REPORT_FUNCTION;
@@ -733,7 +729,7 @@ NetStream_as::seek(boost::uint32_t posSeconds)
}
// Don't ask me why, but NetStream_as::seek() takes seconds...
- boost::uint32_t pos = posSeconds*1000;
+ std::uint32_t pos = posSeconds*1000;
// We'll pause the clock source and mark decoders as buffering.
// In this way, next advance won't find the source time to
@@ -744,7 +740,7 @@ NetStream_as::seek(boost::uint32_t posSeconds)
_playbackClock->pause();
// Seek to new position
- boost::uint32_t newpos = pos;
+ std::uint32_t newpos = pos;
if ( ! _parser->seek(newpos) )
{
#ifdef GNASH_DEBUG_STATUS
@@ -792,9 +788,9 @@ NetStream_as::refreshAudioBuffer()
#ifdef GNASH_DEBUG_DECODING
// bufferLength() would lock the mutex (which we already hold),
// so this is to avoid that.
- boost::uint32_t parserTime = _parser->getBufferLength();
- boost::uint32_t playHeadTime = time();
- boost::uint32_t bufferLen =
+ std::uint32_t parserTime = _parser->getBufferLength();
+ std::uint32_t playHeadTime = time();
+ std::uint32_t bufferLen =
parserTime > playHeadTime ? parserTime-playHeadTime : 0;
#endif
@@ -818,7 +814,7 @@ NetStream_as::refreshAudioBuffer()
}
// Calculate the current time
- boost::uint64_t curPos = _playHead.getPosition();
+ std::uint64_t curPos = _playHead.getPosition();
#ifdef GNASH_DEBUG_DECODING
log_debug(_("%p.refreshAudioBuffer: currentPosition=%d, playHeadState=%d, bufferLength=%d, bufferTime=%d"),
@@ -833,7 +829,7 @@ NetStream_as::refreshAudioBuffer()
}
void
-NetStream_as::pushDecodedAudioFrames(boost::uint32_t ts)
+NetStream_as::pushDecodedAudioFrames(std::uint32_t ts)
{
assert(_parser.get());
@@ -884,11 +880,11 @@ NetStream_as::pushDecodedAudioFrames(boost::uint32_t ts)
bool consumed = false;
- boost::uint64_t nextTimestamp;
+ std::uint64_t nextTimestamp;
while (1) {
// FIXME: use services of BufferedAudioStreamer for this
- boost::mutex::scoped_lock lock(_audioStreamer._audioQueueMutex);
+ std::unique_lock<std::mutex> lock(_audioStreamer._audioQueueMutex);
// The sound_handler mixer will pull decoded
// audio frames off the _audioQueue whenever
@@ -1107,7 +1103,7 @@ NetStream_as::refreshVideoFrame(bool alsoIfPaused)
}
#ifdef GNASH_DEBUG_DECODING
- boost::uint32_t bufferLen = bufferLength();
+ std::uint32_t bufferLen = bufferLength();
#endif
if ( ! alsoIfPaused && _playHead.getState() == PlayHead::PLAY_PAUSED )
@@ -1132,7 +1128,7 @@ NetStream_as::refreshVideoFrame(bool alsoIfPaused)
}
// Calculate the current time
- boost::uint64_t curPos = _playHead.getPosition();
+ std::uint64_t curPos = _playHead.getPosition();
#ifdef GNASH_DEBUG_DECODING
log_debug(_("%p.refreshVideoFrame: currentPosition=%d, playHeadState=%d, "
@@ -1141,7 +1137,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 +1167,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 )
@@ -1293,10 +1289,10 @@ NetStream_as::update()
// If playhead position needs to be updated
// is set to Set playhead to first available frame, if any
// TODO: use another flag to signify 'initialization-needed'
- boost::uint64_t curPosition = _playHead.getPosition();
+ std::uint64_t curPosition = _playHead.getPosition();
if ( curPosition == 0 )
{
- boost::uint64_t firstFrameTimestamp;
+ std::uint64_t firstFrameTimestamp;
if ( _parser->nextFrameTimestamp(firstFrameTimestamp) )
{
_playHead.seekTo(firstFrameTimestamp);
@@ -1339,13 +1335,15 @@ NetStream_as::update()
if ( ! _parser->getVideoInfo() )
{
// FIXME: use services of BufferedAudioStreamer for this
- boost::mutex::scoped_lock lock(_audioStreamer._audioQueueMutex);
- bool emptyAudioQueue = _audioStreamer._audioQueue.empty();
- lock.unlock();
+ bool emptyAudioQueue;
+ {
+ std::lock_guard<std::mutex> lock(_audioStreamer._audioQueueMutex);
+ emptyAudioQueue = _audioStreamer._audioQueue.empty();
+ }
if ( emptyAudioQueue )
{
- boost::uint64_t nextTimestamp;
+ std::uint64_t nextTimestamp;
if ( _parser->nextAudioFrameTimestamp(nextTimestamp) )
{
log_debug(_("Moving NetStream playhead "
@@ -1365,14 +1363,13 @@ NetStream_as::update()
if (tags.empty()) return;
- for (media::MediaParser::OrderedMetaTags::iterator i = tags.begin(),
- e = tags.end(); i != e; ++i) {
- executeTag(**i, owner());
+ for (auto& tag : tags) {
+ executeTag(*tag, owner());
}
#endif // USE_MEDIA
}
-boost::int32_t
+std::int32_t
NetStream_as::time()
{
return _playHead.getPosition();
@@ -1433,13 +1430,11 @@ NetStream_as::bytesTotal ()
NetStream_as::DecodingState
NetStream_as::decodingStatus(DecodingState newstate)
{
- boost::mutex::scoped_lock lock(_state_mutex);
-
if (newstate != DEC_NONE) {
_decoding_state = newstate;
}
- return _decoding_state;
+ return static_cast<DecodingState>(_decoding_state.load());
}
//------- BufferedAudioStreamer (move in his own file)
@@ -1453,7 +1448,7 @@ BufferedAudioStreamer::attachAuxStreamer()
log_debug(_("attachAuxStreamer called while already attached"));
// Let's detach first..
_soundHandler->unplugInputStream(_auxStreamer);
- _auxStreamer=0;
+ _auxStreamer=nullptr;
}
try {
@@ -1476,12 +1471,12 @@ BufferedAudioStreamer::detachAuxStreamer()
return;
}
_soundHandler->unplugInputStream(_auxStreamer);
- _auxStreamer = 0;
+ _auxStreamer = nullptr;
}
// audio callback, possibly running in a separate thread
unsigned int
-BufferedAudioStreamer::fetchWrapper(void *owner, boost::int16_t* samples,
+BufferedAudioStreamer::fetchWrapper(void *owner, std::int16_t* samples,
unsigned int nSamples, bool& eof)
{
BufferedAudioStreamer* streamer =
@@ -1495,19 +1490,19 @@ BufferedAudioStreamer::BufferedAudioStreamer(sound::sound_handler* handler)
_soundHandler(handler),
_audioQueue(),
_audioQueueSize(0),
- _auxStreamer(0)
+ _auxStreamer(nullptr)
{
}
unsigned int
-BufferedAudioStreamer::fetch(boost::int16_t* samples, unsigned int nSamples, bool& eof)
+BufferedAudioStreamer::fetch(std::int16_t* samples, unsigned int nSamples, bool& eof)
{
//GNASH_REPORT_FUNCTION;
- boost::uint8_t* stream = reinterpret_cast<boost::uint8_t*>(samples);
+ std::uint8_t* stream = reinterpret_cast<std::uint8_t*>(samples);
int len = nSamples*2;
- boost::mutex::scoped_lock lock(_audioQueueMutex);
+ std::lock_guard<std::mutex> lock(_audioQueueMutex);
#if 0
log_debug("audio_streamer called, audioQueue size: %d, "
@@ -1552,7 +1547,7 @@ BufferedAudioStreamer::fetch(boost::int16_t* samples, unsigned int nSamples, boo
void
BufferedAudioStreamer::push(CursoredBuffer* audio)
{
- boost::mutex::scoped_lock lock(_audioQueueMutex);
+ std::lock_guard<std::mutex> lock(_audioQueueMutex);
if ( _auxStreamer )
{
@@ -1570,7 +1565,7 @@ BufferedAudioStreamer::push(CursoredBuffer* audio)
void
BufferedAudioStreamer::cleanAudioQueue()
{
- boost::mutex::scoped_lock lock(_audioQueueMutex);
+ std::lock_guard<std::mutex> lock(_audioQueueMutex);
_audioQueue.clear();
}
@@ -1667,9 +1662,9 @@ as_value
netstream_seek(const fn_call& fn)
{
NetStream_as* ns = ensure<ThisIsNative<NetStream_as> >(fn);
- boost::uint32_t time = 0;
+ std::uint32_t time = 0;
if (fn.nargs > 0) {
- time = static_cast<boost::uint32_t>(toNumber(fn.arg(0), getVM(fn)));
+ time = static_cast<std::uint32_t>(toNumber(fn.arg(0), getVM(fn)));
}
ns->seek(time);
@@ -1690,7 +1685,7 @@ netstream_setbuffertime(const fn_call& fn)
// TODO: don't allow a limit < 100
- ns->setBufferTime(boost::uint32_t(time * 1000));
+ ns->setBufferTime(std::uint32_t(time * 1000));
return as_value();
}
@@ -1888,8 +1883,8 @@ attachPrototypeProperties(as_object& o)
void
executeTag(const SimpleBuffer& _buffer, as_object& thisPtr)
{
- const boost::uint8_t* ptr = _buffer.data();
- const boost::uint8_t* endptr = ptr + _buffer.size();
+ const std::uint8_t* ptr = _buffer.data();
+ const std::uint8_t* endptr = ptr + _buffer.size();
std::string funcName;
diff --git a/libcore/asobj/NetStream_as.h b/libcore/asobj/NetStream_as.h
index d55c611..4024e76 100644
--- a/libcore/asobj/NetStream_as.h
+++ b/libcore/asobj/NetStream_as.h
@@ -25,11 +25,13 @@
#define __STDC_CONSTANT_MACROS
#endif
-#include <boost/intrusive_ptr.hpp>
+#include <atomic>
#include <string>
+#include <memory>
+#include <mutex>
+
+#include <boost/intrusive_ptr.hpp>
#include <boost/ptr_container/ptr_deque.hpp>
-#include <boost/scoped_ptr.hpp>
-#include <boost/thread/mutex.hpp>
#include "PlayHead.h" // for composition
#include "Relay.h" // for ActiveRelay inheritance
@@ -93,8 +95,8 @@ public:
CursoredBuffer()
:
m_size(0),
- m_data(NULL),
- m_ptr(NULL)
+ m_data(nullptr),
+ m_ptr(nullptr)
{}
~CursoredBuffer()
@@ -103,16 +105,16 @@ public:
}
/// Number of samples left in buffer starting from cursor
- boost::uint32_t m_size;
+ std::uint32_t m_size;
/// Actual data
//
/// The data must be allocated with new []
/// as will be delete []'d by the dtor
- boost::uint8_t* m_data;
+ std::uint8_t* m_data;
/// Cursor into the data
- boost::uint8_t* m_ptr;
+ std::uint8_t* m_ptr;
};
typedef boost::ptr_deque<CursoredBuffer> AudioQueue;
@@ -131,7 +133,7 @@ public:
/// The queue needs to be protected as sound_handler callback
/// is invoked by a separate thread (dunno if it makes sense actually)
- boost::mutex _audioQueueMutex;
+ std::mutex _audioQueueMutex;
// Id of an attached audio streamer, 0 if none
sound::InputStream* _auxStreamer;
@@ -151,11 +153,11 @@ public:
void detachAuxStreamer();
/// Fetch samples from the audio queue
- unsigned int fetch(boost::int16_t* samples, unsigned int nSamples,
+ unsigned int fetch(std::int16_t* samples, unsigned int nSamples,
bool& eof);
/// Fetch samples from the audio queue
- static unsigned int fetchWrapper(void* owner, boost::int16_t* samples,
+ static unsigned int fetchWrapper(void* owner, std::int16_t* samples,
unsigned int nSamples, bool& eof);
/// Push a buffer to the audio queue
@@ -235,13 +237,13 @@ public:
/// Defines in seconds where to seek to
/// @todo take milliseconds !!
///
- void seek(boost::uint32_t pos);
+ void seek(std::uint32_t pos);
/// Tells where the playhead currently is
//
/// @return The time in milliseconds of the current playhead position
///
- boost::int32_t time();
+ std::int32_t time();
/// Called at the heart-beat frequency. Used to process queued status messages
/// and (re)start after a buffering pause. In NetStreamFfmpeg it is also
@@ -270,14 +272,14 @@ public:
/// @param time
/// The time in milliseconds that should be buffered.
///
- void setBufferTime(boost::uint32_t time);
+ void setBufferTime(std::uint32_t time);
/// Returns what the buffer time has been set to. (100 milliseconds
/// is default)
//
/// @return The size of the buffer in milliseconds.
///
- boost::uint32_t bufferTime() { return _bufferTime; }
+ std::uint32_t bufferTime() { return _bufferTime; }
/// Returns the number of bytes of the media file that have been buffered.
long bytesLoaded();
@@ -298,10 +300,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)
@@ -318,7 +320,7 @@ public:
/// It might be invoked by a separate thread (neither main,
/// nor decoder thread).
///
- static unsigned int audio_streamer(void *udata, boost::int16_t* samples,
+ static unsigned int audio_streamer(void *udata, std::int16_t* samples,
unsigned int nSamples, bool& eof);
private:
@@ -431,7 +433,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
//
@@ -442,7 +444,7 @@ private:
/// \brief
/// Decode input audio frames with timestamp <= ts
/// and push them to the output audio queue
- void pushDecodedAudioFrames(boost::uint32_t ts);
+ void pushDecodedAudioFrames(std::uint32_t ts);
/// Decode input frames up to the one with timestamp <= ts.
//
@@ -454,7 +456,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(std::uint32_t ts);
DecodingState decodingStatus(DecodingState newstate = DEC_NONE);
@@ -503,22 +505,22 @@ private:
NetConnection_as* _netCon;
- boost::scoped_ptr<CharacterProxy> _audioController;
+ std::unique_ptr<CharacterProxy> _audioController;
// The size of the buffer in milliseconds
- boost::uint32_t _bufferTime;
+ std::uint32_t _bufferTime;
// Mutex to insure we don't corrupt the image
- boost::mutex image_mutex;
+ std::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;
@@ -526,26 +528,23 @@ private:
/// The DisplayObject to invalidate on video updates
DisplayObject* _invalidatedVideoCharacter;
- DecodingState _decoding_state;
+ /// Stores DecodingState
+ std::atomic<int> _decoding_state;
- // Mutex protecting _playback_state and _decoding_state
- // (not sure a single one is appropriate)
- 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;
/// Virtual clock used as playback clock source
- boost::scoped_ptr<InterruptableVirtualClock> _playbackClock;
+ std::unique_ptr<InterruptableVirtualClock> _playbackClock;
/// Playback control device
PlayHead _playHead;
@@ -561,17 +560,15 @@ 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;
/// List of status messages to be processed
- StatusCode _statusCode;
-
- /// Mutex protecting _statusQueue
- boost::mutex _statusMutex;
-
+ //
+ /// Stores StatusCode
+ std::atomic<int> _statusCode;
};
void netstream_class_init(as_object& global, const ObjectURI& uri);
diff --git a/libcore/asobj/Object.cpp b/libcore/asobj/Object.cpp
index 1193f89..c1dea0b 100644
--- a/libcore/asobj/Object.cpp
+++ b/libcore/asobj/Object.cpp
@@ -222,7 +222,7 @@ object_addproperty(const fn_call& fn)
return as_value(false);
}
- as_function* setter = NULL;
+ as_function* setter = nullptr;
const as_value& setterval = fn.arg(2);
if (!setterval.is_null())
{
@@ -305,7 +305,7 @@ object_registerClass(const fn_call& fn)
const movie_definition* def = relRoot->definition();
// We only care about definitions, not other exportable resources.
- const boost::uint16_t id = def->exportID(symbolid);
+ const std::uint16_t id = def->exportID(symbolid);
SWF::DefinitionTag* d = def->getDefinitionTag(id);
if (!d) {
diff --git a/libcore/asobj/PlayHead.cpp b/libcore/asobj/PlayHead.cpp
index ab783ab..de7e857 100644
--- a/libcore/asobj/PlayHead.cpp
+++ b/libcore/asobj/PlayHead.cpp
@@ -54,7 +54,7 @@ PlayHead::setState(PlaybackStatus newState)
// if we go from PAUSED to PLAYING, reset
// _clockOffset to yank current position
// when querying clock source *now*
- boost::uint64_t now = _clockSource->elapsed();
+ std::uint64_t now = _clockSource->elapsed();
_clockOffset = ( now - _position );
// check if we did the right thing
@@ -101,7 +101,7 @@ PlayHead::advanceIfConsumed()
}
// Advance position
- boost::uint64_t now = _clockSource->elapsed();
+ std::uint64_t now = _clockSource->elapsed();
_position = now-_clockOffset;
// Reset consumers state
@@ -109,9 +109,9 @@ PlayHead::advanceIfConsumed()
}
void
-PlayHead::seekTo(boost::uint64_t position)
+PlayHead::seekTo(std::uint64_t position)
{
- boost::uint64_t now = _clockSource->elapsed();
+ std::uint64_t now = _clockSource->elapsed();
_position = position;
_clockOffset = ( now - _position );
diff --git a/libcore/asobj/PlayHead.h b/libcore/asobj/PlayHead.h
index e5348ac..5e70e52 100644
--- a/libcore/asobj/PlayHead.h
+++ b/libcore/asobj/PlayHead.h
@@ -21,7 +21,7 @@
#ifndef GNASH_PLAYHEAD_H
#define GNASH_PLAYHEAD_H
-#include <boost/cstdint.hpp> // For C99 int types
+#include <cstdint> // For C99 int types
// Forward declarations
namespace gnash {
@@ -74,7 +74,7 @@ public:
}
/// Get current playhead position (milliseconds)
- boost::uint64_t getPosition() const { return _position; }
+ std::uint64_t getPosition() const { return _position; }
/// Get current playback state
PlaybackStatus getState() const { return _state; }
@@ -121,7 +121,7 @@ public:
/// - isAudioConsumed() == false
/// - getPosition() == position
///
- void seekTo(boost::uint64_t position);
+ void seekTo(std::uint64_t position);
/// Advance position if all available consumers consumed the current one
//
@@ -146,7 +146,7 @@ private:
};
/// Current playhead position
- boost::uint64_t _position;
+ std::uint64_t _position;
/// Current playback state
PlaybackStatus _state;
@@ -166,7 +166,7 @@ private:
/// to get current position
//
/// The offset will be
- boost::uint64_t _clockOffset;
+ std::uint64_t _clockOffset;
};
diff --git a/libcore/asobj/Selection_as.cpp b/libcore/asobj/Selection_as.cpp
index 9064482..1e2af65 100644
--- a/libcore/asobj/Selection_as.cpp
+++ b/libcore/asobj/Selection_as.cpp
@@ -59,7 +59,7 @@ selection_class_init(as_object& where, const ObjectURI& uri)
// All properties are protected using ASSetPropFlags.
Global_as& gl = getGlobal(where);
- as_object* null = 0;
+ as_object* null = nullptr;
callMethod(&gl, NSV::PROP_AS_SET_PROP_FLAGS, o, null, 7);
}
@@ -198,7 +198,7 @@ selection_setFocus(const fn_call& fn)
/// These should remove focus.
if (focus.is_null() || focus.is_undefined()) {
- mr.setFocus(0);
+ mr.setFocus(nullptr);
return as_value(true);
}
diff --git a/libcore/asobj/SharedObject_as.cpp b/libcore/asobj/SharedObject_as.cpp
index 81035f9..404a55d 100644
--- a/libcore/asobj/SharedObject_as.cpp
+++ b/libcore/asobj/SharedObject_as.cpp
@@ -24,8 +24,6 @@
#include "SharedObject_as.h"
-#include <boost/scoped_array.hpp>
-#include <boost/shared_ptr.hpp>
#include <cstdio>
#include "movie_root.h"
@@ -109,7 +107,7 @@ public:
SOLPropsBufSerializer(amf::Writer w, VM& vm)
:
- _writer(w),
+ _writer(std::move(w)),
_vm(vm),
_error(false),
_count(0)
@@ -169,7 +167,7 @@ public:
}
// This is SOL specific.
- boost::uint8_t end(0);
+ std::uint8_t end(0);
_writer.writeData(&end, 1);
++_count;
return true;
@@ -201,7 +199,7 @@ public:
SharedObject_as(as_object& owner)
:
_owner(owner),
- _data(0),
+ _data(nullptr),
_connected(false)
{
}
@@ -341,45 +339,40 @@ SharedObject_as::flush(int space) const
}
if (rcfile.getSOLReadOnly()) {
- log_security(_("Attempting to write object %s when it's SOL "
- "Read Only is set! Refusing..."), filespec);
- return false;
- }
-
- // Open file
- std::ofstream ofs(filespec.c_str(), std::ios::binary);
- if (!ofs) {
- log_error(_("SharedObject::flush(): Failed opening file '%s' in "
- "binary mode"), filespec.c_str());
+ log_security(_("Refusing attempt to write object %s while SOLreadonly "
+ "is set!"), filespec);
return false;
}
// Encode data part.
SimpleBuffer buf;
if (!encodeData(_name, *_data, buf)) {
- std::remove(filespec.c_str());
return true;
}
// Encode header part.
SimpleBuffer header;
encodeHeader(buf.size(), header);
-
- // Write header
- ofs.write(reinterpret_cast<const char*>(header.data()), header.size());
+
+ std::ofstream ofs(filespec.c_str(), std::ios::binary);
if (!ofs) {
- log_error(_("Error writing SOL header"));
+ log_error(_("SharedObject::flush(): Failed opening file '%s' in binary"
+ " mode"), filespec);
return false;
}
- // Write AMF data
- ofs.write(reinterpret_cast<const char*>(buf.data()), buf.size());
- if (!ofs) {
- log_error(_("Error writing %d bytes to output file %s"),
- buf.size(), filespec.c_str());
+ bool success = ofs.write(reinterpret_cast<const char*>(header.data()), header.size())
+ && ofs.write(reinterpret_cast<const char*>(buf.data()), buf.size());
+ ofs.close();
+
+ if (!success) {
+ log_error(_("Error writing AMF data to output file %s"), filespec);
+ if (std::remove(filespec.c_str()) != 0) {
+ log_error(_("Error removing SOL output file %s: %s"), filespec,
+ strerror(errno));
+ }
return false;
}
- ofs.close();
log_security(_("SharedObject '%s' written to filesystem."), filespec);
return true;
@@ -486,17 +479,17 @@ SharedObjectLibrary::getLocal(const std::string& objName,
assert (!objName.empty());
// already warned about it at construction time
- if (_solSafeDir.empty()) return 0;
+ if (_solSafeDir.empty()) return nullptr;
if (rcfile.getSOLLocalDomain() && !_baseDomain.empty())
{
log_security(_("Attempting to open SOL file from non "
"localhost-loaded SWF"));
- return 0;
+ return nullptr;
}
// Check that the name is valid; if not, return null
- if (!validateName(objName)) return 0;
+ if (!validateName(objName)) return nullptr;
// The 'root' argument, otherwise known as localPath, specifies where
// in the SWF path the SOL should be stored. It cannot be outside this
@@ -521,7 +514,7 @@ SharedObjectLibrary::getLocal(const std::string& objName,
log_security(_("SharedObject path %s is outside the SWF domain "
"%s. Cannot access this object."), localPath,
_baseDomain);
- return 0;
+ return nullptr;
}
requestedPath = localPath.path();
@@ -534,7 +527,7 @@ SharedObjectLibrary::getLocal(const std::string& objName,
log_security(_("SharedObject path %s is not part of the SWF path "
"%s. Cannot access this object."), requestedPath,
_basePath);
- return 0;
+ return nullptr;
}
}
@@ -570,7 +563,7 @@ SharedObjectLibrary::getLocal(const std::string& objName,
// Otherwise create a new one and register to the lib
SharedObject_as* sh = createSharedObject(*_vm.getGlobal());
- if (!sh) return 0;
+ if (!sh) return nullptr;
sh->setObjectName(objName);
@@ -906,9 +899,9 @@ readSOL(VM& vm, const std::string& filespec)
return data;
}
- boost::scoped_array<boost::uint8_t> sbuf(new boost::uint8_t[size]);
- const boost::uint8_t *buf = sbuf.get();
- const boost::uint8_t *end = buf + size;
+ std::unique_ptr<std::uint8_t[]> sbuf(new std::uint8_t[size]);
+ const std::uint8_t *buf = sbuf.get();
+ const std::uint8_t *end = buf + size;
try {
std::ifstream ifs(filespec.c_str(), std::ios::binary);
@@ -919,7 +912,7 @@ readSOL(VM& vm, const std::string& filespec)
buf += 16; // skip const-length headers
// skip past name TODO add sanity check
- buf += ntohs(*(reinterpret_cast<const boost::uint16_t*>(buf)));
+ buf += ntohs(*(reinterpret_cast<const std::uint16_t*>(buf)));
buf += 2;
buf += 4; // skip past padding
@@ -943,8 +936,8 @@ readSOL(VM& vm, const std::string& filespec)
break;
}
- const boost::uint16_t len =
- ntohs(*(reinterpret_cast<const boost::uint16_t*>(buf)));
+ const std::uint16_t len =
+ ntohs(*(reinterpret_cast<const std::uint16_t*>(buf)));
buf += 2;
if (!len) {
@@ -966,7 +959,7 @@ readSOL(VM& vm, const std::string& filespec)
if (!rd(as)) {
log_error(_("SharedObject: error parsing SharedObject '%s'"),
filespec);
- return 0;
+ return nullptr;
}
log_debug("parsed sol member named '%s' (len %s), value '%s'",
@@ -985,7 +978,7 @@ readSOL(VM& vm, const std::string& filespec)
catch (std::exception& e) {
log_error(_("readSOL: Reading SharedObject %s: %s"),
filespec, e.what());
- return 0;
+ return nullptr;
}
}
@@ -1001,12 +994,12 @@ SharedObject_as*
createSharedObject(Global_as& gl)
{
as_function* ctor = getMember(gl, NSV::CLASS_SHARED_OBJECT).to_function();
- if (!ctor) return 0;
+ if (!ctor) return nullptr;
as_environment env(getVM(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...
@@ -1019,7 +1012,7 @@ createSharedObject(Global_as& gl)
void
encodeHeader(const size_t size, SimpleBuffer& buf)
{
- const boost::uint8_t header[] = { 0x00, 0xbf };
+ const std::uint8_t header[] = { 0x00, 0xbf };
// Initial header byters
buf.append(header, arraySize(header));
@@ -1033,19 +1026,19 @@ bool
encodeData(const std::string& name, as_object& data, SimpleBuffer& buf)
{
// Write the remaining header-like information.
- const boost::uint8_t magic[] = { 'T', 'C', 'S', 'O',
+ const std::uint8_t magic[] = { 'T', 'C', 'S', 'O',
0x00, 0x04, 0x00, 0x00, 0x00, 0x00 };
// Magic SharedObject bytes.
buf.append(magic, arraySize(magic));
// SharedObject name
- const boost::uint16_t len = name.length();
+ const std::uint16_t len = name.length();
buf.appendNetworkShort(len);
buf.append(name.c_str(), len);
// Padding
- const boost::uint8_t padding[] = { 0, 0, 0, 0 };
+ const std::uint8_t padding[] = { 0, 0, 0, 0 };
buf.append(padding, arraySize(padding));
// see http://osflash.org/documentation/amf/envelopes/sharedobject
diff --git a/libcore/asobj/Sound_as.cpp b/libcore/asobj/Sound_as.cpp
index 1a05109..4a6d11c 100644
--- a/libcore/asobj/Sound_as.cpp
+++ b/libcore/asobj/Sound_as.cpp
@@ -24,10 +24,7 @@
#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>
+#include <cstdint>
#include <boost/optional.hpp>
#include "RunResources.h"
@@ -183,7 +180,7 @@ private:
void markReachableResources() const;
- boost::scoped_ptr<CharacterProxy> _attachedCharacter;
+ std::unique_ptr<CharacterProxy> _attachedCharacter;
int soundId;
bool externalSound;
bool isStreaming;
@@ -192,24 +189,24 @@ 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
//
/// This is set by start()
- boost::uint64_t _startTime;
+ std::uint64_t _startTime;
- boost::scoped_array<boost::uint8_t> _leftOverData;
- boost::uint8_t* _leftOverPtr;
- boost::uint32_t _leftOverSize;
+ std::unique_ptr<std::uint8_t[]> _leftOverData;
+ std::uint8_t* _leftOverPtr;
+ std::uint32_t _leftOverSize;
/// This is a sound_handler::aux_streamer_ptr type.
- static unsigned int getAudioWrapper(void *owner, boost::int16_t* samples,
+ static unsigned int getAudioWrapper(void *owner, std::int16_t* samples,
unsigned int nSamples, bool& etEOF);
- unsigned int getAudio(boost::int16_t* samples, unsigned int nSamples,
+ unsigned int getAudio(std::int16_t* samples, unsigned int nSamples,
bool& atEOF);
/// The aux streamer for sound handler
@@ -239,11 +236,9 @@ private:
/// Probe audio
void probeAudio();
- bool _soundCompleted;
+ std::atomic<bool> _soundCompleted;
- boost::mutex _soundCompletedMutex;
-
- /// Thread-safe setter for _soundCompleted
+ /// Setter for _soundCompleted
void markSoundCompleted(bool completed);
bool _soundLoaded;
@@ -258,7 +253,7 @@ private:
Sound_as::Sound_as(as_object* owner)
:
ActiveRelay(owner),
- _attachedCharacter(0),
+ _attachedCharacter(),
soundId(-1),
externalSound(false),
isStreaming(false),
@@ -266,9 +261,9 @@ Sound_as::Sound_as(as_object* owner)
_mediaHandler(getRunResources(*owner).mediaHandler()),
_startTime(0),
_leftOverData(),
- _leftOverPtr(0),
+ _leftOverPtr(nullptr),
_leftOverSize(0),
- _inputStream(0),
+ _inputStream(nullptr),
remainingLoops(0),
_soundCompleted(false),
_soundLoaded(false)
@@ -280,7 +275,7 @@ Sound_as::~Sound_as()
// Just in case...
if (_inputStream && _soundHandler) {
_soundHandler->unplugInputStream(_inputStream);
- _inputStream=0;
+ _inputStream=nullptr;
}
}
@@ -358,7 +353,7 @@ Sound_as::probeAudio()
if ( ! externalSound ) {
// Only probe for sound complete
assert(_soundHandler);
- assert(!_soundCompleted);
+ assert(!_soundCompleted.load());
if (!_soundHandler->isSoundPlaying(soundId)) {
stopProbeTimer();
// dispatch onSoundComplete
@@ -380,7 +375,7 @@ Sound_as::probeAudio()
if (!isStreaming) {
stopProbeTimer(); // will be re-started on Sound.start()
}
- bool success = _mediaParser->getAudioInfo() != 0;
+ bool success = _mediaParser->getAudioInfo() != nullptr;
callMethod(&owner(), NSV::PROP_ON_LOAD, success);
// TODO: check if this should be called anyway.
@@ -399,15 +394,14 @@ Sound_as::probeAudio()
log_debug("Probing audio for end");
#endif
- boost::mutex::scoped_lock lock(_soundCompletedMutex);
- if (_soundCompleted) {
+ if (_soundCompleted.load()) {
// when _soundCompleted is true we're NOT attached !
// MediaParser may be still needed,
// if this is a non-streaming sound
if ( isStreaming ) {
_mediaParser.reset(); // no use for this anymore...
}
- _inputStream = 0;
+ _inputStream = nullptr;
_soundCompleted = false;
stopProbeTimer();
@@ -461,7 +455,6 @@ Sound_as::markReachableResources() const
void
Sound_as::markSoundCompleted(bool completed)
{
- boost::mutex::scoped_lock lock(_soundCompletedMutex);
_soundCompleted=completed;
}
@@ -566,7 +559,7 @@ Sound_as::loadSound(const std::string& file, bool streaming)
/// the media parser
if (_inputStream) {
_soundHandler->unplugInputStream(_inputStream);
- _inputStream = 0;
+ _inputStream = nullptr;
}
/// Mark sound as not being loaded
@@ -586,7 +579,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 +592,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...
@@ -614,7 +607,7 @@ Sound_as::loadSound(const std::string& file, bool streaming)
} else {
// If this is an event sound, we must not limit buffering (parsing),
// because onLoad will not be called until we have finished doing so.
- _mediaParser->setBufferTime(std::numeric_limits<boost::uint64_t>::max());
+ _mediaParser->setBufferTime(std::numeric_limits<std::uint64_t>::max());
}
startProbeTimer();
@@ -627,7 +620,7 @@ sound::InputStream*
Sound_as::attachAuxStreamerIfNeeded()
{
media::AudioInfo* audioInfo = _mediaParser->getAudioInfo();
- if (!audioInfo) return 0;
+ if (!audioInfo) return nullptr;
// the following may throw an exception
_audioDecoder.reset(_mediaHandler->createAudioDecoder(*audioInfo).release());
@@ -712,8 +705,8 @@ Sound_as::start(double secOff, int loops)
// Always seek as we might be called during or after some playing...
{
_startTime = secOff * 1000;
- boost::uint32_t seekms = boost::uint32_t(secOff * 1000);
- // TODO: boost::mutex::scoped_lock parserLock(_parserMutex);
+ std::uint32_t seekms = std::uint32_t(secOff * 1000);
+ // TODO: std::lock_guard<std::mutex> parserLock(_parserMutex);
bool seeked = _mediaParser->seek(seekms); // well, we try...
log_debug("Seeked MediaParser to %d, returned: %d", seekms, seeked);
}
@@ -738,7 +731,7 @@ Sound_as::start(double secOff, int loops)
_soundHandler->startSound(
soundId,
loops,
- 0, // envelopes
+ nullptr, // envelopes
true, // allow multiple instances (checked)
inPoint
);
@@ -762,7 +755,7 @@ Sound_as::stop(int si)
if (externalSound) {
if ( _inputStream ) {
_soundHandler->unplugInputStream(_inputStream);
- _inputStream=0;
+ _inputStream=nullptr;
}
} else {
if ( ! _attachedCharacter ) {
@@ -818,7 +811,7 @@ Sound_as::getPosition() const
}
if (_mediaParser) {
- boost::uint64_t ts;
+ std::uint64_t ts;
if ( _mediaParser->nextAudioFrameTimestamp(ts) ) {
return ts;
}
@@ -830,9 +823,9 @@ Sound_as::getPosition() const
unsigned int
-Sound_as::getAudio(boost::int16_t* samples, unsigned int nSamples, bool& atEOF)
+Sound_as::getAudio(std::int16_t* samples, unsigned int nSamples, bool& atEOF)
{
- boost::uint8_t* stream = reinterpret_cast<boost::uint8_t*>(samples);
+ std::uint8_t* stream = reinterpret_cast<std::uint8_t*>(samples);
int len = nSamples*2;
#ifdef USE_SOUND
@@ -841,7 +834,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 ) {
@@ -897,7 +890,7 @@ Sound_as::getAudio(boost::int16_t* samples, unsigned int nSamples, bool& atEOF)
if (_leftOverSize == 0) {
_leftOverData.reset();
- _leftOverPtr = 0;
+ _leftOverPtr = nullptr;
}
}
@@ -912,7 +905,7 @@ Sound_as::getAudio(boost::int16_t* samples, unsigned int nSamples, bool& atEOF)
// audio callback is running in sound handler thread
unsigned int
-Sound_as::getAudioWrapper(void* owner, boost::int16_t* samples,
+Sound_as::getAudioWrapper(void* owner, std::int16_t* samples,
unsigned int nSamples, bool& atEOF)
{
Sound_as* so = static_cast<Sound_as*>(owner);
@@ -1043,7 +1036,7 @@ sound_stop(const fn_call& fn)
const movie_definition* def = fn.callerDef;
assert(def);
- const boost::uint16_t id = def->exportID(name);
+ const std::uint16_t id = def->exportID(name);
if (!id) {
IF_VERBOSE_MALFORMED_SWF(
log_swferror(_("No such export '%s'"),
@@ -1098,7 +1091,7 @@ sound_attachsound(const fn_call& fn)
assert(def);
- const boost::uint16_t id = def->exportID(name);
+ const std::uint16_t id = def->exportID(name);
if (!id) {
IF_VERBOSE_MALFORMED_SWF(
log_swferror(_("No such export '%s'"),
diff --git a/libcore/asobj/String_as.cpp b/libcore/asobj/String_as.cpp
index 5a5231c..6477904 100644
--- a/libcore/asobj/String_as.cpp
+++ b/libcore/asobj/String_as.cpp
@@ -73,9 +73,9 @@ namespace {
}
-String_as::String_as(const std::string& s)
+String_as::String_as(std::string s)
:
- _string(s)
+ _string(std::move(s))
{
}
@@ -524,8 +524,8 @@ string_fromCharCode(const fn_call& fn)
for (unsigned int i = 0; i < fn.nargs; i++)
{
// Maximum 65535, as with all DisplayObject codes.
- const boost::uint16_t c =
- static_cast<boost::uint16_t>(toInt(fn.arg(i), getVM(fn)));
+ const std::uint16_t c =
+ static_cast<std::uint16_t>(toInt(fn.arg(i), getVM(fn)));
// If more than 255, push 'overflow' byte.
if (c > 255) {
@@ -544,8 +544,8 @@ string_fromCharCode(const fn_call& fn)
for (unsigned int i = 0; i < fn.nargs; i++)
{
- const boost::uint16_t c =
- static_cast<boost::uint16_t>(toInt(fn.arg(i), getVM(fn)));
+ const std::uint16_t c =
+ static_cast<std::uint16_t>(toInt(fn.arg(i), getVM(fn)));
if (c == 0) break;
wstr.push_back(c);
}
@@ -607,7 +607,7 @@ string_charAt(const fn_call& fn)
std::string::const_iterator it = str.begin(), e = str.end();
- while (boost::uint32_t code = utf8::decodeNextUnicodeCharacter(it, e))
+ while (std::uint32_t code = utf8::decodeNextUnicodeCharacter(it, e))
{
if (currentIndex == index)
{
diff --git a/libcore/asobj/String_as.h b/libcore/asobj/String_as.h
index 48d7c28..2f81c53 100644
--- a/libcore/asobj/String_as.h
+++ b/libcore/asobj/String_as.h
@@ -35,7 +35,7 @@ class String_as : public Relay
public:
- explicit String_as(const std::string& s);
+ explicit String_as(std::string s);
const std::string& value() {
return _string;
diff --git a/libcore/asobj/TextField_as.cpp b/libcore/asobj/TextField_as.cpp
index 36d5275..58aded3 100644
--- a/libcore/asobj/TextField_as.cpp
+++ b/libcore/asobj/TextField_as.cpp
@@ -90,7 +90,7 @@ createTextFieldObject(Global_as& gl)
{
as_value tf(getMember(gl, NSV::CLASS_TEXT_FIELD));
as_function* ctor = tf.to_function();
- if (!ctor) return 0;
+ if (!ctor) return nullptr;
fn_call::Args args;
as_environment env(getVM(gl));
return constructInstance(*ctor, env, args);
@@ -115,7 +115,7 @@ textfield_class_init(as_object& where, const ObjectURI& uri)
where.init_member(uri, cl, as_object::DefaultFlags);
// ASSetPropFlags is called on the TextField class.
- as_object* null = 0;
+ as_object* null = nullptr;
callMethod(&gl, NSV::PROP_AS_SET_PROP_FLAGS, cl, null, 131);
}
@@ -315,7 +315,7 @@ textfield_backgroundColor(const fn_call& fn)
}
else {
rgba newColor;
- newColor.parseRGB(static_cast<boost::uint32_t>(toInt(fn.arg(0), getVM(fn))));
+ newColor.parseRGB(static_cast<std::uint32_t>(toInt(fn.arg(0), getVM(fn))));
ptr->setBackgroundColor(newColor);
}
@@ -332,7 +332,7 @@ textfield_borderColor(const fn_call& fn)
}
else {
rgba newColor;
- newColor.parseRGB(static_cast<boost::uint32_t>(toNumber(fn.arg(0), getVM(fn))));
+ newColor.parseRGB(static_cast<std::uint32_t>(toNumber(fn.arg(0), getVM(fn))));
ptr->setBorderColor(newColor);
}
@@ -352,7 +352,7 @@ textfield_textColor(const fn_call& fn)
// Setter
rgba newColor;
- newColor.parseRGB(static_cast<boost::uint32_t>(toNumber(fn.arg(0), getVM(fn))));
+ newColor.parseRGB(static_cast<std::uint32_t>(toNumber(fn.arg(0), getVM(fn))));
ptr->setTextColor(newColor);
return as_value();
@@ -833,7 +833,7 @@ textfield_maxChars(const fn_call& fn)
if (!fn.nargs)
{
- boost::int32_t maxChars = text->maxChars();
+ std::int32_t maxChars = text->maxChars();
if (maxChars == 0)
{
as_value null;
@@ -1082,7 +1082,7 @@ textfield_ctor(const fn_call& fn)
// It's not clear why this happens. Attaching a relay would have the
// same effect as both following statements.
obj->setArray(false);
- obj->setRelay(0);
+ obj->setRelay(nullptr);
as_object* proto = obj->get_prototype();
@@ -1122,7 +1122,7 @@ attachTextFieldInterface(as_object& o)
// Finally ASSetPropFlags is called on the prototype.
Global_as& gl = getGlobal(o);
- as_object* null = 0;
+ as_object* null = nullptr;
callMethod(&gl, NSV::PROP_AS_SET_PROP_FLAGS, &o, null, 131);
}
diff --git a/libcore/asobj/TextFormat_as.cpp b/libcore/asobj/TextFormat_as.cpp
index c09e5bb..467142c 100644
--- a/libcore/asobj/TextFormat_as.cpp
+++ b/libcore/asobj/TextFormat_as.cpp
@@ -72,7 +72,7 @@ struct
PixelsToTwips : SetBase
{
PixelsToTwips(const fn_call& fn) : SetBase(fn) {}
- boost::int32_t operator()(const as_value& val) const {
+ std::int32_t operator()(const as_value& val) const {
return pixelsToTwips(toNumber(val, getVM(fn())));
}
};
@@ -256,11 +256,11 @@ registerTextFormatNative(as_object& o)
110, 2);
vm.registerNative(
- Get<const TextFormat_as, boost::uint16_t,
+ Get<const TextFormat_as, std::uint16_t,
&TextFormat_as::size, TwipsToPixels>::get,
110, 3);
vm.registerNative(
- Set<TextFormat_as, boost::uint16_t, &TextFormat_as::sizeSet,
+ Set<TextFormat_as, std::uint16_t, &TextFormat_as::sizeSet,
PixelsToTwips>::set,
110, 4);
@@ -311,47 +311,47 @@ registerTextFormatNative(as_object& o)
vm.registerNative(textformat_align, 110, 18);
vm.registerNative(
- Get<const TextFormat_as, boost::uint16_t,
+ Get<const TextFormat_as, std::uint16_t,
&TextFormat_as::leftMargin, TwipsToPixels>::get,
110, 19);
vm.registerNative(
- Set<TextFormat_as, boost::uint16_t, &TextFormat_as::leftMarginSet,
+ Set<TextFormat_as, std::uint16_t, &TextFormat_as::leftMarginSet,
PositiveTwips>::set,
110, 20);
vm.registerNative(
- Get<const TextFormat_as, boost::uint16_t,
+ Get<const TextFormat_as, std::uint16_t,
&TextFormat_as::rightMargin, TwipsToPixels>::get,
110, 21);
vm.registerNative(
- Set<TextFormat_as, boost::uint16_t, &TextFormat_as::rightMarginSet,
+ Set<TextFormat_as, std::uint16_t, &TextFormat_as::rightMarginSet,
PositiveTwips>::set,
110, 22);
vm.registerNative(
- Get<const TextFormat_as, boost::uint16_t,
+ Get<const TextFormat_as, std::uint16_t,
&TextFormat_as::indent,
TwipsToPixels>::get, 110, 23);
vm.registerNative(
- Set<TextFormat_as, boost::uint16_t, &TextFormat_as::indentSet,
+ Set<TextFormat_as, std::uint16_t, &TextFormat_as::indentSet,
PositiveTwips>::set,
110, 24);
vm.registerNative(
- Get<const TextFormat_as, boost::uint16_t,
+ Get<const TextFormat_as, std::uint16_t,
&TextFormat_as::leading,
TwipsToPixels>::get, 110, 25);
vm.registerNative(
- Set<TextFormat_as, boost::uint16_t, &TextFormat_as::leadingSet,
+ Set<TextFormat_as, std::uint16_t, &TextFormat_as::leadingSet,
PositiveTwips>::set,
110, 26);
vm.registerNative(
- Get<const TextFormat_as, boost::uint32_t,
+ Get<const TextFormat_as, std::uint32_t,
&TextFormat_as::blockIndent,
TwipsToPixels>::get, 110, 27);
vm.registerNative(
- Set<TextFormat_as, boost::uint32_t, &TextFormat_as::blockIndentSet,
+ Set<TextFormat_as, std::uint32_t, &TextFormat_as::blockIndentSet,
PositiveTwips>::set,
110, 28);
@@ -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;
@@ -584,13 +584,13 @@ textformat_getTextExtent(const fn_call& fn)
// getTextExtent currently only takes account of device fonts we don't
// need it.
- Font* f = 0;
+ Font* f = nullptr;
if (relay->font()) {
const std::string& name = *relay->font();
const movie_definition* md = getRoot(fn).getRootMovie().definition();
// Option 1. Name refers to an imported font ('asset') symbol.
- boost::uint16_t fontId = md->exportID(name);
+ std::uint16_t fontId = md->exportID(name);
if (fontId != 0) {
f = md->get_font(fontId);
}
diff --git a/libcore/asobj/TextFormat_as.h b/libcore/asobj/TextFormat_as.h
index 9acbd5d..df27293 100644
--- a/libcore/asobj/TextFormat_as.h
+++ b/libcore/asobj/TextFormat_as.h
@@ -23,7 +23,7 @@
#define GNASH_TEXTFORMAT_H
#include <vector>
-#include <boost/cstdint.hpp>
+#include <cstdint>
#include <string>
#include <boost/optional.hpp>
@@ -76,7 +76,7 @@ public:
}
/// Indentation from left margin to the first character in the paragraph
- const boost::optional<boost::uint16_t>& indent() const { return _indent; }
+ const boost::optional<std::uint16_t>& indent() const { return _indent; }
/// Paragraph alignment
const boost::optional<TextField::TextAlignment>& align() const { return _align; }
@@ -91,24 +91,24 @@ public:
const boost::optional<std::string>& url() const { return _url; }
/// The block indent.
- const boost::optional<boost::uint32_t>& blockIndent() const {
+ const boost::optional<std::uint32_t>& blockIndent() const {
return _blockIndent;
}
/// Return a number that indicates the amount of leading vertical
/// space between lines.
- const boost::optional<boost::uint16_t>& leading() const { return _leading; }
+ const boost::optional<std::uint16_t>& leading() const { return _leading; }
/// Indicates the left margin of the paragraph, in points.
- const boost::optional<boost::uint16_t>& leftMargin() const { return _leftMargin; }
+ const boost::optional<std::uint16_t>& leftMargin() const { return _leftMargin; }
/// Indicates the right margin of the paragraph in twips
- const boost::optional<boost::uint16_t>& rightMargin() const {
+ const boost::optional<std::uint16_t>& rightMargin() const {
return _rightMargin;
}
/// Return a float that indicates the point size in twips.
- const boost::optional<boost::uint16_t>& size() const { return _pointSize; }
+ const boost::optional<std::uint16_t>& size() const { return _pointSize; }
/// Setters
@@ -126,7 +126,7 @@ public:
void colorSet(const boost::optional<rgba>& x) { _color = x; }
- void indentSet(const boost::optional<boost::uint16_t>& x) { _indent = x; }
+ void indentSet(const boost::optional<std::uint16_t>& x) { _indent = x; }
void fontSet(const boost::optional<std::string>& font) { _font=font; }
@@ -134,19 +134,19 @@ public:
void alignSet(const std::string& align);
- void blockIndentSet(const boost::optional<boost::uint32_t>& x) {
+ void blockIndentSet(const boost::optional<std::uint32_t>& x) {
_blockIndent = x;
}
- void leadingSet(const boost::optional<boost::uint16_t>& x) { _leading = x; }
+ void leadingSet(const boost::optional<std::uint16_t>& x) { _leading = x; }
- void leftMarginSet(const boost::optional<boost::uint16_t>& x) { _leftMargin = x; }
+ void leftMarginSet(const boost::optional<std::uint16_t>& x) { _leftMargin = x; }
- void rightMarginSet(const boost::optional<boost::uint16_t>& x) {
+ void rightMarginSet(const boost::optional<std::uint16_t>& x) {
_rightMargin = x;
}
- void sizeSet(const boost::optional<boost::uint16_t>& x) { _pointSize = x; }
+ void sizeSet(const boost::optional<std::uint16_t>& x) { _pointSize = x; }
void tabStopsSet(const std::vector<int>& tabStops) { _tabStops = tabStops; }
@@ -178,7 +178,7 @@ private:
boost::optional<TextField::TextAlignment> _align;
//
- boost::optional<boost::uint32_t> _blockIndent;
+ boost::optional<std::uint32_t> _blockIndent;
/// The color of text using this text format.
//
@@ -195,20 +195,20 @@ private:
/// An integer that indicates the indentation from the left
/// margin to the first DisplayObject in the paragraph (twips)
- boost::optional<boost::uint16_t> _indent;
+ boost::optional<std::uint16_t> _indent;
/// A number that indicates the amount of leading vertical
/// space between lines (twips)
- boost::optional<boost::uint16_t> _leading;
+ boost::optional<std::uint16_t> _leading;
/// Indicates the left margin of the paragraph, in points (twips)
- boost::optional<boost::uint16_t> _leftMargin;
+ boost::optional<std::uint16_t> _leftMargin;
/// Indicates the right margin of the paragraph, in points (twips).
- boost::optional<boost::uint16_t> _rightMargin;
+ boost::optional<std::uint16_t> _rightMargin;
/// Point size in twips.
- boost::optional<boost::uint16_t> _pointSize;
+ boost::optional<std::uint16_t> _pointSize;
///
boost::optional<std::vector<int> > _tabStops;
diff --git a/libcore/asobj/TextSnapshot_as.cpp b/libcore/asobj/TextSnapshot_as.cpp
index e2f83ad..9fc042e 100644
--- a/libcore/asobj/TextSnapshot_as.cpp
+++ b/libcore/asobj/TextSnapshot_as.cpp
@@ -59,10 +59,10 @@ public:
/// AS return values.
TextSnapshot_as(const MovieClip* mc);
- std::string getText(boost::int32_t start, boost::int32_t end,
+ std::string getText(std::int32_t start, std::int32_t end,
bool nl) const;
- boost::int32_t findText(boost::int32_t start, const std::string& text,
+ std::int32_t findText(std::int32_t start, const std::string& text,
bool ignoreCase) const;
bool valid() const { return _valid; }
@@ -233,19 +233,16 @@ TextSnapshot_as::getTextRunInfo(size_t start, size_t end, as_object& ri) const
std::string::size_type len = end - start;
- for (TextFields::const_iterator field = _textFields.begin(),
- e = _textFields.end(); field != e; ++field) {
+ for (const auto& field : _textFields) {
- const Records& rec = field->second;
- const SWFMatrix& mat = getMatrix(*field->first);
- const boost::dynamic_bitset<>& selected = field->first->getSelected();
+ const Records& rec = field.second;
+ const SWFMatrix& mat = getMatrix(*field.first);
+ const boost::dynamic_bitset<>& selected = field.first->getSelected();
const std::string::size_type fieldStartIndex = pos;
- for (Records::const_iterator j = rec.begin(), end = rec.end();
- j != end; ++j) {
+ for (const SWF::TextRecord* tr : rec) {
- const SWF::TextRecord* tr = *j;
assert(tr);
const SWF::TextRecord::Glyphs& glyphs = tr->glyphs();
@@ -260,11 +257,10 @@ TextSnapshot_as::getTextRunInfo(size_t start, size_t end, as_object& ri) const
assert(font);
double x = tr->xOffset();
- for (SWF::TextRecord::Glyphs::const_iterator k = glyphs.begin(),
- e = glyphs.end(); k != e; ++k) {
+ for (const auto& glyph : glyphs) {
if (pos < start) {
- x += k->advance;
+ x += glyph.advance;
++pos;
continue;
}
@@ -292,7 +288,7 @@ TextSnapshot_as::getTextRunInfo(size_t start, size_t end, as_object& ri) const
callMethod(&ri, NSV::PROP_PUSH, el);
++pos;
- x += k->advance;
+ x += glyph.advance;
if (pos - start > len) return;
}
}
@@ -307,23 +303,20 @@ TextSnapshot_as::makeString(std::string& to, bool newline, bool selectedOnly,
std::string::size_type pos = 0;
- for (TextFields::const_iterator field = _textFields.begin(),
- e = _textFields.end(); field != e; ++field)
+ for (const auto& field: _textFields)
{
// When newlines are requested, insert one after each individual
// text field is processed.
if (newline && pos > start) to += '\n';
- const Records& records = field->second;
- const boost::dynamic_bitset<>& selected = field->first->getSelected();
+ const Records& records = field.second;
+ const boost::dynamic_bitset<>& selected = field.first->getSelected();
/// Remember the position at the beginning of the StaticText.
const std::string::size_type fieldStartIndex = pos;
- for (Records::const_iterator j = records.begin(), end = records.end();
- j != end; ++j) {
+ for (const SWF::TextRecord* tr : records) {
- const SWF::TextRecord* tr = *j;
assert(tr);
const SWF::TextRecord::Glyphs& glyphs = tr->glyphs();
@@ -337,8 +330,7 @@ TextSnapshot_as::makeString(std::string& to, bool newline, bool selectedOnly,
const Font* font = tr->getFont();
assert(font);
- for (SWF::TextRecord::Glyphs::const_iterator k = glyphs.begin(),
- e = glyphs.end(); k != e; ++k) {
+ for (const auto& glyph : glyphs) {
if (pos < start) {
++pos;
@@ -346,7 +338,7 @@ TextSnapshot_as::makeString(std::string& to, bool newline, bool selectedOnly,
}
if (!selectedOnly || selected.test(pos - fieldStartIndex)) {
- to += font->codeTableLookup(k->index, true);
+ to += font->codeTableLookup(glyph.index, true);
}
++pos;
if (pos - start == len) return;
@@ -356,13 +348,13 @@ TextSnapshot_as::makeString(std::string& to, bool newline, bool selectedOnly,
}
std::string
-TextSnapshot_as::getText(boost::int32_t start, boost::int32_t end, bool nl)
+TextSnapshot_as::getText(std::int32_t start, std::int32_t end, bool nl)
const
{
// Start is always moved to between 0 and len - 1.
- start = std::max<boost::int32_t>(start, 0);
- start = std::min<boost::int32_t>(start, _count - 1);
+ start = std::max<std::int32_t>(start, 0);
+ start = std::min<std::int32_t>(start, _count - 1);
// End is always moved to between start and end. We don't really care
// about the end of the string.
@@ -384,8 +376,8 @@ TextSnapshot_as::getSelectedText(bool newline) const
return sel;
}
-boost::int32_t
-TextSnapshot_as::findText(boost::int32_t start, const std::string& text,
+std::int32_t
+TextSnapshot_as::findText(std::int32_t start, const std::string& text,
bool ignoreCase) const
{
@@ -496,9 +488,9 @@ textsnapshot_getTextRunInfo(const fn_call& fn)
return as_value();
}
- const size_t start = std::max<boost::int32_t>(0,
+ const size_t start = std::max<std::int32_t>(0,
toInt(fn.arg(0), getVM(fn)));
- const size_t end = std::max<boost::int32_t>(start + 1,
+ const size_t end = std::max<std::int32_t>(start + 1,
toInt(fn.arg(1), getVM(fn)));
Global_as& gl = getGlobal(fn);
@@ -523,7 +515,7 @@ textsnapshot_findText(const fn_call& fn)
return as_value();
}
- boost::int32_t start = toInt(fn.arg(0), getVM(fn));
+ std::int32_t start = toInt(fn.arg(0), getVM(fn));
const std::string& text = fn.arg(1).to_string();
/// Yes, the pp is case-insensitive by default. We don't write
@@ -562,9 +554,9 @@ textsnapshot_getSelected(const fn_call& fn)
return as_value();
}
- const size_t start = std::max<boost::int32_t>(0,
+ const size_t start = std::max<std::int32_t>(0,
toInt(fn.arg(0), getVM(fn)));
- const size_t end = std::max<boost::int32_t>(start + 1,
+ const size_t end = std::max<std::int32_t>(start + 1,
toInt(fn.arg(1), getVM(fn)));
return as_value(ts->getSelected(start, end));
@@ -603,8 +595,8 @@ textsnapshot_getText(const fn_call& fn)
return as_value();
}
- const boost::int32_t start = toInt(fn.arg(0), getVM(fn));
- const boost::int32_t end = toInt(fn.arg(1), getVM(fn));
+ const std::int32_t start = toInt(fn.arg(0), getVM(fn));
+ const std::int32_t end = toInt(fn.arg(1), getVM(fn));
const bool newline = (fn.nargs > 2) ? toBool(fn.arg(2), getVM(fn)) : false;
@@ -648,9 +640,9 @@ textsnapshot_setSelected(const fn_call& fn)
return as_value();
}
- const size_t start = std::max<boost::int32_t>(0,
+ const size_t start = std::max<std::int32_t>(0,
toInt(fn.arg(0), getVM(fn)));
- const size_t end = std::max<boost::int32_t>(start,
+ const size_t end = std::max<std::int32_t>(start,
toInt(fn.arg(1), getVM(fn)));
const bool selected = (fn.nargs > 2) ? toBool(fn.arg(2), getVM(fn)) : true;
@@ -665,7 +657,7 @@ textsnapshot_ctor(const fn_call& fn)
{
as_object* ptr = ensure<ValidThis>(fn);
- MovieClip* mc = (fn.nargs == 1) ? fn.arg(0).toMovieClip() : 0;
+ MovieClip* mc = (fn.nargs == 1) ? fn.arg(0).toMovieClip() : nullptr;
ptr->setRelay(new TextSnapshot_as(mc));
return as_value();
diff --git a/libcore/asobj/XMLNode_as.cpp b/libcore/asobj/XMLNode_as.cpp
index 9865783..6b3f43a 100644
--- a/libcore/asobj/XMLNode_as.cpp
+++ b/libcore/asobj/XMLNode_as.cpp
@@ -19,7 +19,7 @@
#include "XMLNode_as.h"
-#include <boost/bind.hpp>
+#include <functional>
#include <string>
#include <sstream>
#include <vector>
@@ -79,33 +79,32 @@ namespace {
XMLNode_as::XMLNode_as(Global_as& gl)
:
_global(gl),
- _object(0),
- _parent(0),
+ _object(nullptr),
+ _parent(nullptr),
_attributes(new as_object(gl)),
- _childNodes(0),
- _type(Element),
- _gcMarkInProgress(false)
+ _childNodes(nullptr),
+ _type(Element)
{
}
XMLNode_as::XMLNode_as(const XMLNode_as& tpl, bool deep)
:
_global(tpl._global),
- _object(0),
- _parent(0),
+ _object(nullptr),
+ _parent(nullptr),
_attributes(new as_object(_global)),
- _childNodes(0),
+ _childNodes(nullptr),
_name(tpl._name),
_value(tpl._value),
- _type(tpl._type),
- _gcMarkInProgress(false)
+ _type(tpl._type)
{
// only clone children if in deep mode
if (deep) {
const Children& from=tpl._children;
- for (Children::const_iterator it=from.begin(), itEnd=from.end();
- it != itEnd; ++it) {
- _children.push_back(new XMLNode_as(*(*it), deep));
+ for (const auto& child : from) {
+ XMLNode_as* copy = new XMLNode_as(*child, deep);
+ copy->setParent(this);
+ _children.push_back(copy);
}
}
}
@@ -120,7 +119,7 @@ XMLNode_as::~XMLNode_as()
// (due to updateChildNodes)
// See https://savannah.gnu.org/bugs/?40439
_parent->_children.remove(this);
- _parent = 0;
+ _parent = nullptr;
}
clearChildren();
@@ -191,7 +190,7 @@ XMLNode_as::hasChildNodes() const
XMLNode_as*
XMLNode_as::firstChild() const
{
- if (_children.empty()) return 0;
+ if (_children.empty()) return nullptr;
return _children.front();
}
@@ -206,7 +205,7 @@ XMLNode_as*
XMLNode_as::lastChild() const
{
if (_children.empty()) {
- return 0;
+ return nullptr;
}
return _children.back();
}
@@ -214,7 +213,7 @@ XMLNode_as::lastChild() const
void
XMLNode_as::removeChild(XMLNode_as* node)
{
- node->setParent(0);
+ node->setParent(nullptr);
_children.remove(node);
updateChildNodes();
}
@@ -228,6 +227,20 @@ XMLNode_as::appendChild(XMLNode_as* node)
updateChildNodes();
}
+bool
+XMLNode_as::descendsFrom(XMLNode_as* node) const
+{
+ if (node == this) {
+ return true;
+ }
+ XMLNode_as* parent = getParent();
+ if (parent) {
+ return parent->descendsFrom(node);
+ }
+
+ return false;
+}
+
void
XMLNode_as::insertBefore(XMLNode_as* newnode, XMLNode_as* pos)
{
@@ -257,30 +270,29 @@ XMLNode_as::insertBefore(XMLNode_as* newnode, XMLNode_as* pos)
XMLNode_as*
XMLNode_as::previousSibling() const
{
- if (!_parent) return 0;
- if (_parent->_children.size() <= 1) return 0;
+ if (!_parent) return nullptr;
+ if (_parent->_children.size() <= 1) return nullptr;
- XMLNode_as *previous_node = 0;
- for (Children::iterator itx = _parent->_children.begin();
- itx != _parent->_children.end(); ++itx) {
+ XMLNode_as *previous_node = nullptr;
+ for (XMLNode_as * child : _parent->_children) {
- if (*itx == this) return previous_node;
+ if (child == this) return previous_node;
- previous_node = *itx;
+ previous_node = child;
}
- return 0;
+ return nullptr;
}
XMLNode_as*
XMLNode_as::nextSibling() const
{
- if (!_parent) return 0;
+ if (!_parent) return nullptr;
- if (_parent->_children.size() <= 1) return 0;
+ if (_parent->_children.size() <= 1) return nullptr;
- XMLNode_as *previous_node = 0;
+ XMLNode_as *previous_node = nullptr;
for (Children::reverse_iterator itx = _parent->_children.rbegin();
itx != _parent->_children.rend(); ++itx) {
@@ -288,7 +300,7 @@ XMLNode_as::nextSibling() const
previous_node = *itx;
}
- return 0;
+ return nullptr;
}
void
@@ -319,7 +331,7 @@ XMLNode_as::getPrefixForNamespace(const std::string& ns, std::string& prefix)
if (!attrs.empty())
{
it = std::find_if(attrs.begin(), attrs.end(),
- boost::bind(namespaceMatches, _1, ns));
+ std::bind(namespaceMatches, std::placeholders::_1, ns));
if (it != attrs.end()) break;
}
node = node->getParent();
@@ -359,7 +371,7 @@ XMLNode_as::getNamespaceForPrefix(const std::string& prefix, std::string& ns)
if (!attrs.empty()) {
it = std::find_if(attrs.begin(), attrs.end(),
- boost::bind(prefixMatches, _1, prefix));
+ std::bind(prefixMatches, std::placeholders::_1, prefix));
if (it != attrs.end()) break;
}
node = node->getParent();
@@ -391,11 +403,9 @@ XMLNode_as::extractPrefix(std::string& prefix) const
void
XMLNode_as::clearChildren()
{
- for (Children::iterator it = _children.begin(), e = _children.end();
- it != e; ++it) {
- XMLNode_as* node = *it;
+ for (XMLNode_as* node : _children) {
- node->setParent(0);
+ node->setParent(nullptr);
if (!node->_object) {
// The node is not GC'd because it has no associated object.
// See XMLNode_as class docs.
@@ -405,7 +415,7 @@ XMLNode_as::clearChildren()
_children.clear();
// Reset so that it is reinitialized on next access.
- _childNodes = 0;
+ _childNodes = nullptr;
}
void
@@ -431,10 +441,9 @@ XMLNode_as::stringify(const XMLNode_as& xml, std::ostream& xmlout, bool encode)
enumerateAttributes(xml, attrs);
if (!attrs.empty()) {
- for (StringPairs::iterator i =
- attrs.begin(), e = attrs.end(); i != e; ++i) {
- escapeXML(i->second);
- xmlout << " " << i->first << "=\"" << i->second << "\"";
+ for (auto& attr : attrs) {
+ escapeXML(attr.second);
+ xmlout << " " << attr.first << "=\"" << attr.second << "\"";
}
}
@@ -465,10 +474,9 @@ XMLNode_as::stringify(const XMLNode_as& xml, std::ostream& xmlout, bool encode)
}
// Childs, after node as_value.
- for (Children::const_iterator itx = xml._children.begin();
- itx != xml._children.end(); ++itx) {
+ for (XMLNode_as* child : xml._children) {
- (*itx)->toString(xmlout, encode);
+ child->toString(xmlout, encode);
}
if (!nodeName.empty() || type == Element) {
@@ -482,15 +490,11 @@ XMLNode_as::setReachable()
// If there is a parent, make sure its object is reachable. This goes
// up towards the root node of tree without marking the XMLNode
// resources (which would cause infinite recursion).
- if ( _gcMarkInProgress ) return;
-
- GCMarkGuard markGuard(this);
-
if (_parent && _parent->_object) _parent->_object->setReachable();
// Mark children
std::for_each(_children.begin(), _children.end(),
- boost::mem_fn(&XMLNode_as::setReachable));
+ std::mem_fn(&XMLNode_as::setReachable));
// Mark attributes object
if (_attributes) _attributes->setReachable();
@@ -581,7 +585,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) {
@@ -628,6 +632,14 @@ xmlnode_appendChild(const fn_call& fn)
return as_value();
}
+ if (ptr->descendsFrom(node)) {
+ IF_VERBOSE_ASCODING_ERRORS(
+ log_aserror(_("XMLNode.appendChild(): attempted to move a node to "
+ "among its own descendants."));
+ );
+ return as_value();
+ }
+
XMLNode_as* parent = node->getParent();
if (parent) {
parent->removeChild(node);
@@ -688,6 +700,14 @@ xmlnode_insertBefore(const fn_call& fn)
return as_value();
}
+ if (pos->descendsFrom(newnode)) {
+ IF_VERBOSE_ASCODING_ERRORS(
+ log_aserror(_("XMLNode.insertBefore(): attempted to move a node to "
+ "among its own descendants."));
+ );
+ return as_value();
+ }
+
ptr->insertBefore(newnode, pos);
return as_value();
diff --git a/libcore/asobj/XMLNode_as.h b/libcore/asobj/XMLNode_as.h
index 45c7254..f62d78e 100644
--- a/libcore/asobj/XMLNode_as.h
+++ b/libcore/asobj/XMLNode_as.h
@@ -113,6 +113,9 @@ public:
return _namespaceURI;
}
+ /// Returns true if 'this' descends from the specified node.
+ bool descendsFrom(XMLNode_as* node) const;
+
/// Returns true if the specified node has child nodes; otherwise,
/// returns false.
bool hasChildNodes() const;
@@ -265,26 +268,6 @@ private:
static void stringify(const XMLNode_as& xml, std::ostream& xmlout,
bool encode);
-
- /// Is GC mark scan in progress ?
- //
- /// Used to guard against infinite loops
- ///
- bool _gcMarkInProgress;
-
- /// Class to prevent infinite loops
- //
- /// could probably be replaced with a templated class taking an
- /// object and two values to toggle between.
- /// See also FrameGuard, TargetGuard and PoolGuard
- class GCMarkGuard {
- XMLNode_as* _x;
- public:
- GCMarkGuard(XMLNode_as* x): _x(x) { _x->_gcMarkInProgress = true; }
- ~GCMarkGuard() { _x->_gcMarkInProgress = false; }
- };
- friend class GCMarkGuard;
-
};
// Initialize the global XMLNode class
diff --git a/libcore/asobj/XMLSocket_as.cpp b/libcore/asobj/XMLSocket_as.cpp
index cea7fc5..4ff2fbd 100644
--- a/libcore/asobj/XMLSocket_as.cpp
+++ b/libcore/asobj/XMLSocket_as.cpp
@@ -20,9 +20,7 @@
#include "XMLSocket_as.h"
-#include <boost/thread.hpp>
-#include <boost/scoped_array.hpp>
-#include <boost/scoped_ptr.hpp>
+#include <memory>
#include <string>
#include "namedStrings.h"
@@ -79,7 +77,7 @@ public:
/// @return false if the connection is not allowed, otherwise true.
/// Note that a return of true does not mean a successful
/// connection.
- bool connect(const std::string& host, boost::uint16_t port);
+ bool connect(const std::string& host, std::uint16_t port);
/// Send a string with a null-terminator to the socket.
//
@@ -161,7 +159,7 @@ XMLSocket_as::update()
bool
-XMLSocket_as::connect(const std::string& host, boost::uint16_t port)
+XMLSocket_as::connect(const std::string& host, std::uint16_t port)
{
if (!URLAccessManager::allowXMLSocket(host, port)) {
@@ -193,7 +191,7 @@ XMLSocket_as::checkForIncomingData()
std::vector<std::string> msgs;
const int bufSize = 10000;
- boost::scoped_array<char> buf(new char[bufSize]);
+ std::unique_ptr<char[]> buf(new char[bufSize]);
const size_t bytesRead = _socket.readNonBlocking(buf.get(), bufSize - 1);
@@ -280,7 +278,7 @@ void
xmlsocket_class_init(as_object& where, const ObjectURI& uri)
{
registerBuiltinClass(where, xmlsocket_new, attachXMLSocketInterface,
- 0, uri);
+ nullptr, uri);
}
void
@@ -331,7 +329,7 @@ xmlsocket_connect(const fn_call& fn)
// TODO: find out.
// Other ports and hosts are checked against security policy before
// acceptance or rejection.
- if (port > std::numeric_limits<boost::uint16_t>::max()) {
+ if (port > std::numeric_limits<std::uint16_t>::max()) {
return as_value(false);
}
diff --git a/libcore/asobj/XML_as.cpp b/libcore/asobj/XML_as.cpp
index a361856..052bfa5 100644
--- a/libcore/asobj/XML_as.cpp
+++ b/libcore/asobj/XML_as.cpp
@@ -23,7 +23,6 @@
#include <sstream>
#include <vector>
#include <algorithm>
-#include <boost/assign/list_of.hpp>
#include <boost/algorithm/string/compare.hpp>
#include <boost/algorithm/string/replace.hpp>
@@ -106,10 +105,9 @@ escapeXML(std::string& text)
{
const Entities& ent = getEntities();
- for (Entities::const_iterator i = ent.begin(), e = ent.end();
- i != e; ++i)
+ for (const auto& entity : ent)
{
- boost::replace_all(text, i->second, i->first);
+ boost::replace_all(text, entity.second, entity.first);
}
}
@@ -118,9 +116,8 @@ unescapeXML(std::string& text)
{
const Entities& ent = getEntities();
- for (Entities::const_iterator i = ent.begin(), e = ent.end();
- i != e; ++i) {
- boost::replace_all(text, i->first, i->second);
+ for (const auto& entity : ent) {
+ boost::replace_all(text, entity.first, entity.second);
}
// Additionally, the entity is unescaped (but never escaped).
@@ -311,10 +308,6 @@ XML_as::parseTag(XMLNode_as*& node, xml_iterator& it,
if (!closing) {
- XMLNode_as* childNode = new XMLNode_as(_global);
- childNode->nodeNameSet(tagName);
- childNode->nodeTypeSet(Element);
-
// Skip to the end of any whitespace after the tag name
it = endName;
@@ -323,6 +316,10 @@ XML_as::parseTag(XMLNode_as*& node, xml_iterator& it,
return;
}
+ XMLNode_as* childNode = new XMLNode_as(_global);
+ childNode->nodeNameSet(tagName);
+ childNode->nodeTypeSet(Element);
+
// Parse any attributes in an opening tag only, stopping at "/>" or
// '>'
// Attributes are added in reverse order and without any duplicates.
@@ -343,7 +340,10 @@ XML_as::parseTag(XMLNode_as*& node, xml_iterator& it,
}
// Do nothing more if there was an error in attributes parsing.
- if (_status != XML_OK) return;
+ if (_status != XML_OK) {
+ delete childNode;
+ return;
+ }
// testsuite/swfdec/xml-id-map.as tests that the node is appended
// first.
@@ -519,7 +519,7 @@ void
xml_class_init(as_object& where, const ObjectURI& uri)
{
Global_as& gl = getGlobal(where);
- as_object* cl = gl.createClass(&xml_new, 0);
+ as_object* cl = gl.createClass(&xml_new, nullptr);
as_function* ctor = getMember(gl, NSV::CLASS_XMLNODE).to_function();
@@ -655,11 +655,11 @@ xml_status(const fn_call& fn)
const double status = toNumber(fn.arg(0), getVM(fn));
if (isNaN(status) ||
- status > std::numeric_limits<boost::int32_t>::max() ||
- status < std::numeric_limits<boost::int32_t>::min()) {
+ status > std::numeric_limits<std::int32_t>::max() ||
+ status < std::numeric_limits<std::int32_t>::min()) {
ptr->setStatus(static_cast<XML_as::ParseStatus>(
- std::numeric_limits<boost::int32_t>::min()));
+ std::numeric_limits<std::int32_t>::min()));
}
else ptr->setStatus(static_cast<XML_as::ParseStatus>(int(status)));
return as_value();
@@ -937,12 +937,13 @@ setIdMap(as_object& xml, XMLNode_as& childNode, const std::string& val)
const Entities&
getEntities()
{
- static const Entities entities = boost::assign::map_list_of
- ("&", "&")
- (""", "\"")
- ("<", "<")
- (">", ">")
- ("'", "'");
+ static const Entities entities = {
+ {"&", "&"},
+ {""", "\""},
+ {"<", "<"},
+ {">", ">"},
+ {"'", "'"}
+ };
return entities;
}
diff --git a/libcore/asobj/XML_as.h b/libcore/asobj/XML_as.h
index 0284c2f..36d1c50 100644
--- a/libcore/asobj/XML_as.h
+++ b/libcore/asobj/XML_as.h
@@ -120,7 +120,7 @@ public:
///
void parseXML(const std::string& xml);
- ParseStatus status() const {
+ int status() const {
return _status;
}
@@ -177,7 +177,8 @@ private:
// 1 if successfully loaded
LoadStatus _loaded;
- ParseStatus _status;
+ // Nominally used to store ParseStatus, but can be any int value.
+ int _status;
std::string _docTypeDecl;
diff --git a/libcore/asobj/flash/display/BitmapData_as.cpp b/libcore/asobj/flash/display/BitmapData_as.cpp
index 273aabc..34b4287 100644
--- a/libcore/asobj/flash/display/BitmapData_as.cpp
+++ b/libcore/asobj/flash/display/BitmapData_as.cpp
@@ -27,7 +27,7 @@
#include <boost/random.hpp>
#include <boost/iterator/zip_iterator.hpp>
#include <boost/tuple/tuple.hpp>
-#include <boost/array.hpp>
+#include <array>
#include <cmath>
#include "MovieClip.h"
@@ -102,7 +102,7 @@ namespace {
//
/// Note: calls pixelAt(), so do not use this more than necessary!
void setPixel32(const BitmapData_as& bd, size_t x, size_t y,
- boost::uint32_t color);
+ std::uint32_t color);
/// Set the RGB values at (x, y) to the RGB components of a colour.
//
@@ -110,9 +110,9 @@ namespace {
//
/// Note: calls pixelAt(), so do not use this more than necessary!
void setPixel(const BitmapData_as& bd, size_t x, size_t y,
- boost::uint32_t color);
+ std::uint32_t color);
- boost::uint32_t getPixel(const BitmapData_as& bd, size_t x, size_t y);
+ std::uint32_t getPixel(const BitmapData_as& bd, size_t x, size_t y);
/// Get the overlapping part of a rectangle and a Bitmap
//
@@ -126,13 +126,13 @@ namespace {
/// @param h The height of the rectangle.
void adjustRect(int& x, int& y, int& w, int& h, const BitmapData_as& b);
- boost::uint32_t setChannel(boost::uint32_t targ, boost::uint8_t bitmask,
- boost::uint8_t value);
+ std::uint32_t setChannel(std::uint32_t targ, std::uint8_t bitmask,
+ std::uint8_t value);
- boost::uint8_t getChannel(boost::uint32_t src, boost::uint8_t bitmask);
+ std::uint8_t getChannel(std::uint32_t src, std::uint8_t bitmask);
void floodFill(const BitmapData_as& bd, size_t startx, size_t starty,
- boost::uint32_t old, boost::uint32_t fill);
+ std::uint32_t old, std::uint32_t fill);
/// Fill a rectangle of the BitmapData_as
//
@@ -145,9 +145,9 @@ namespace {
/// @param h The height of the rectangle.
/// @param color The ARGB colour to fill with.
void fillRect(const BitmapData_as& bd, int x, int y, int w, int h,
- boost::uint32_t color);
+ std::uint32_t color);
- inline bool oneBitSet(boost::uint8_t mask) {
+ inline bool oneBitSet(std::uint8_t mask) {
return mask == (mask & -mask);
}
}
@@ -202,7 +202,7 @@ private:
template<typename NoiseGenerator>
struct NoiseAdapter
{
- NoiseAdapter(NoiseGenerator& n, boost::uint8_t bitmask, bool grey)
+ NoiseAdapter(NoiseGenerator& n, std::uint8_t bitmask, bool grey)
:
_gen(n),
_bitmask(bitmask),
@@ -210,14 +210,14 @@ struct NoiseAdapter
{}
/// Generate a 32-bit ARGB noise value.
- boost::uint32_t operator()() {
+ std::uint32_t operator()() {
if (_greyscale) {
- boost::uint8_t val = _gen();
+ std::uint8_t val = _gen();
return 0xff000000 | val | val << 8 | val << 16;
}
- boost::uint32_t ret = 0xff000000;
+ std::uint32_t ret = 0xff000000;
if (_bitmask & BitmapData_as::CHANNEL_RED) {
ret |= (_gen() << 16);
@@ -230,7 +230,7 @@ struct NoiseAdapter
}
if (_bitmask & BitmapData_as::CHANNEL_ALPHA) {
// Alpha is 0xff by default.
- const boost::uint8_t rd = _gen();
+ const std::uint8_t rd = _gen();
ret &= (~rd) << 24;
}
return ret;
@@ -238,7 +238,7 @@ struct NoiseAdapter
private:
NoiseGenerator& _gen;
- const boost::uint8_t _bitmask;
+ const std::uint8_t _bitmask;
const bool _greyscale;
};
@@ -252,26 +252,26 @@ struct CopyChannel
typedef boost::tuple<Iterator, Iterator> iterator_tuple;
typedef boost::zip_iterator<iterator_tuple> iterator_type;
- CopyChannel(bool multiple, boost::uint8_t srcchans,
- boost::uint8_t destchans)
+ CopyChannel(bool multiple, std::uint8_t srcchans,
+ std::uint8_t destchans)
:
_multiple(multiple),
_srcchans(srcchans),
_destchans(destchans)
{}
- boost::uint32_t operator()(typename iterator_type::value_type p) const {
+ std::uint32_t operator()(typename iterator_type::value_type p) const {
// If multiple source channels, we set the destination channel
// to black. Else to the value of the requested channel.
- const boost::uint8_t val = _multiple ?
+ const std::uint8_t val = _multiple ?
0 : getChannel(boost::get<0>(p), _srcchans);
return setChannel(boost::get<1>(p), _destchans, val);
}
private:
const bool _multiple;
- const boost::uint8_t _srcchans;
- const boost::uint8_t _destchans;
+ const std::uint8_t _srcchans;
+ const std::uint8_t _destchans;
};
@@ -295,8 +295,8 @@ void normalize(T& a, T& b)
/// @tparam B The size of the permutation table.
/// @tparam Offset An offset for generating non-identical patterns with the
/// same Perlin noise generator.
-template<typename T, boost::uint32_t Size = 0x100,
- boost::uint32_t Offset = 1327>
+template<typename T, std::uint32_t Size = 0x100,
+ std::uint32_t Offset = 1327>
struct PerlinNoise
{
typedef T value_type;
@@ -310,7 +310,7 @@ struct PerlinNoise
init(seed);
}
- boost::uint32_t size() const {
+ std::uint32_t size() const {
return Size;
}
@@ -421,18 +421,18 @@ private:
}
// A random permutation table.
- boost::array<size_t, Size * 2 + 2> permTable;
+ std::array<size_t, Size * 2 + 2> permTable;
// The gradient stuff.
- boost::array<boost::array<T, 2>, Size * 2 + 2> g2;
+ std::array<std::array<T, 2>, Size * 2 + 2> g2;
};
/// Store offsets.
struct Vector
{
- Vector(boost::int32_t x, boost::int32_t y) : x(x), y(y) {}
- boost::int32_t x;
- boost::int32_t y;
+ Vector(std::int32_t x, std::int32_t y) : x(x), y(y) {}
+ std::int32_t x;
+ std::int32_t y;
};
/// Transform negative offsets into positive ones
@@ -586,7 +586,7 @@ struct VectorPusher
as_value x, y;
if (!p->get_member(NSV::PROP_X, &x)) return;
if (!p->get_member(NSV::PROP_Y, &y)) return;
- _offsets.push_back(Vector(toInt(x, _vm), toInt(y, _vm)));
+ _offsets.emplace_back(toInt(x, _vm), toInt(y, _vm));
}
private:
@@ -597,17 +597,17 @@ 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)
+ _cachedBitmap(nullptr)
{
assert(im->width() <= 2880);
assert(im->height() <= 2880);
// 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());
}
@@ -630,7 +630,7 @@ void
BitmapData_as::dispose()
{
if (_cachedBitmap) _cachedBitmap->dispose();
- _cachedBitmap = 0;
+ _cachedBitmap = nullptr;
_image.reset();
updateObjects();
}
@@ -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);
}
@@ -802,11 +802,11 @@ bitmapdata_copyChannel(const fn_call& fn)
// is negative (currently it is truncated and made positive.
// The source channel mask
- const boost::uint8_t srcchans =
+ const std::uint8_t srcchans =
std::abs(toInt(fn.arg(3), getVM(fn))) & 15;
// The destination channel mask
- const boost::uint8_t destchans =
+ const std::uint8_t destchans =
std::abs(toInt(fn.arg(4), getVM(fn))) & 15;
// If more than one destination channel is specified,
@@ -933,25 +933,30 @@ bitmapdata_copyPixels(const fn_call& fn)
rect->get_member(NSV::PROP_X, &x);
rect->get_member(NSV::PROP_Y, &y);
rect->get_member(NSV::PROP_WIDTH, &w);
- rect->get_member(NSV::PROP_HEIGHT, &h);
+ rect->get_member(NSV::PROP_HEIGHT, &h);
+
+ int destX = 0;
+ int destY = 0;
+ // Find true source rect and true dest rect.
as_object* destpoint = toObject(fn.arg(2), getVM(fn));
- as_value px, py;
+ if (destpoint) {
+ as_value px, py;
- destpoint->get_member(NSV::PROP_X, &px);
- destpoint->get_member(NSV::PROP_Y, &py);
+ destpoint->get_member(NSV::PROP_X, &px);
+ destpoint->get_member(NSV::PROP_Y, &py);
+
+ destX = toInt(px, getVM(fn));
+ destY = toInt(py, getVM(fn));
+ }
// TODO: remaining arguments.
- // Find true source rect and true dest rect.
int sourceX = toInt(x, getVM(fn));
int sourceY = toInt(y, getVM(fn));
int sourceW = toInt(w, getVM(fn));
int sourceH = toInt(h, getVM(fn));
- int destX = toInt(px, getVM(fn));
- int destY = toInt(py, getVM(fn));
-
// Any part of the source rect that is not in the image (i.e.
// above or left) is concatenated to the destination offset.
if (sourceX < 0) destX -= sourceX;
@@ -1137,7 +1142,7 @@ bitmapdata_fillRect(const fn_call& fn)
obj->get_member(NSV::PROP_WIDTH, &w);
obj->get_member(NSV::PROP_HEIGHT, &h);
- const boost::uint32_t color = toInt(fn.arg(1), getVM(fn));
+ const std::uint32_t color = toInt(fn.arg(1), getVM(fn));
fillRect(*ptr, toInt(x, getVM(fn)), toInt(y, getVM(fn)),
toInt(w, getVM(fn)), toInt(h, getVM(fn)), color);
@@ -1170,8 +1175,8 @@ bitmapdata_floodFill(const fn_call& fn)
return as_value();
}
- const boost::uint32_t fill = toInt(fn.arg(2), getVM(fn));
- const boost::uint32_t old = *pixelAt(*ptr, x, y);
+ const std::uint32_t fill = toInt(fn.arg(2), getVM(fn));
+ const std::uint32_t old = *pixelAt(*ptr, x, y);
// This checks whether the colours are the same.
floodFill(*ptr, x, y, old, fill);
@@ -1218,7 +1223,7 @@ bitmapdata_getPixel(const fn_call& fn)
// Note: x and y are converted to size_t, so negative values becomre
// very large and are also outside the image. This is perfectly legal!
- return static_cast<boost::int32_t>(getPixel(*ptr, x, y) & 0xffffff);
+ return static_cast<std::int32_t>(getPixel(*ptr, x, y) & 0xffffff);
}
as_value
@@ -1242,7 +1247,7 @@ bitmapdata_getPixel32(const fn_call& fn)
// Note: x and y are converted to size_t, so negative values becomre
// very large and are also outside the image. This is perfectly legal!
- return static_cast<boost::int32_t>(getPixel(*ptr, x, y));
+ return static_cast<std::int32_t>(getPixel(*ptr, x, y));
}
@@ -1276,13 +1281,13 @@ bitmapdata_noise(const fn_call& fn)
}
const int seed = toInt(fn.arg(0), getVM(fn));
- const boost::uint8_t low = fn.nargs > 1 ?
+ const std::uint8_t low = fn.nargs > 1 ?
clamp(toInt(fn.arg(1), getVM(fn)), 0, 255) : 0;
- const boost::uint8_t high = fn.nargs > 2 ?
+ const std::uint8_t high = fn.nargs > 2 ?
clamp<int>(toInt(fn.arg(2), getVM(fn)), low, 255) : 255;
- const boost::uint8_t chans = fn.nargs > 3 ?
+ const std::uint8_t chans = fn.nargs > 3 ?
std::abs(toInt(fn.arg(3), getVM(fn))) & 15 :
BitmapData_as::CHANNEL_RED |
BitmapData_as::CHANNEL_GREEN |
@@ -1338,7 +1343,7 @@ bitmapdata_perlinNoise(const fn_call& fn)
toBool(fn.arg(5), getVM(fn)) : false;
// Which channels to use.
- const boost::uint8_t channels = fn.nargs > 6 ?
+ const std::uint8_t channels = fn.nargs > 6 ?
clamp<int>(toInt(fn.arg(6), getVM(fn)), 0, 255) :
BitmapData_as::CHANNEL_RED |
BitmapData_as::CHANNEL_GREEN |
@@ -1386,7 +1391,7 @@ bitmapdata_perlinNoise(const fn_call& fn)
const size_t x = pixel % width;
const size_t y = pixel / width;
- boost::uint8_t rv = 0;
+ std::uint8_t rv = 0;
if (greyscale || channels & BitmapData_as::CHANNEL_RED) {
// Create one noise channel.
@@ -1394,7 +1399,7 @@ bitmapdata_perlinNoise(const fn_call& fn)
rv = clamp(r, 0.0, 255.0);
}
- boost::uint8_t av = 0xff;
+ std::uint8_t av = 0xff;
// It's just a waste of time if the BitmapData has no alpha.
if (transparent && channels & BitmapData_as::CHANNEL_ALPHA) {
@@ -1413,8 +1418,8 @@ bitmapdata_perlinNoise(const fn_call& fn)
// Otherwise create data for the other channels too by using the
// PerlinNoise object's pattern offset (this is cheaper than using a
// separate generator)
- boost::uint8_t gv = 0;
- boost::uint8_t bv = 0;
+ std::uint8_t gv = 0;
+ std::uint8_t bv = 0;
if (channels & BitmapData_as::CHANNEL_GREEN) {
const double g = pa(x, y, 1);
@@ -1467,7 +1472,7 @@ bitmapdata_setPixel(const fn_call& fn)
}
// Ignore any transparency here.
- const boost::uint32_t color = toInt(fn.arg(2), getVM(fn));
+ const std::uint32_t color = toInt(fn.arg(2), getVM(fn));
setPixel(*ptr, x, y, color);
@@ -1491,7 +1496,7 @@ bitmapdata_setPixel32(const fn_call& fn)
}
// TODO: multiply.
- const boost::uint32_t color = toInt(fn.arg(2), getVM(fn));
+ const std::uint32_t color = toInt(fn.arg(2), getVM(fn));
setPixel32(*ptr, x, y, color);
@@ -1599,7 +1604,7 @@ bitmapdata_loadBitmap(const fn_call& fn)
const movie_definition* def = root->definition();
- const boost::uint16_t id = def->exportID(linkage);
+ const std::uint16_t id = def->exportID(linkage);
CachedBitmap* bit = def->getBitmap(id);
if (!bit) return as_value();
@@ -1612,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));
}
@@ -1626,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);
}
@@ -1659,7 +1664,7 @@ bitmapdata_ctor(const fn_call& fn)
const size_t width = toInt(fn.arg(0), getVM(fn));
const size_t height = toInt(fn.arg(1), getVM(fn));
const bool transparent = fn.nargs > 2 ? toBool(fn.arg(2), getVM(fn)) : true;
- boost::uint32_t fillColor =
+ std::uint32_t fillColor =
fn.nargs > 3 ? toInt(fn.arg(3), getVM(fn)) : 0xffffffff;
if (width > 2880 || height > 2880 || width < 1 || height < 1) {
@@ -1670,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));
}
@@ -1686,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();
}
@@ -1748,7 +1753,7 @@ pixelAt(const BitmapData_as& bd, size_t x, size_t y)
return (bd.begin() + y * width + x);
}
-boost::uint32_t
+std::uint32_t
getPixel(const BitmapData_as& bd, size_t x, size_t y)
{
if (x >= bd.width() || y >= bd.height()) return 0;
@@ -1756,18 +1761,18 @@ getPixel(const BitmapData_as& bd, size_t x, size_t y)
}
void
-setPixel(const BitmapData_as& bd, size_t x, size_t y, boost::uint32_t color)
+setPixel(const BitmapData_as& bd, size_t x, size_t y, std::uint32_t color)
{
if (bd.disposed()) return;
if (x >= bd.width() || y >= bd.height()) return;
BitmapData_as::iterator it = pixelAt(bd, x, y);
- const boost::uint32_t val = *it;
+ const std::uint32_t val = *it;
*it = (color & 0xffffff) | (val & 0xff000000);
}
void
-setPixel32(const BitmapData_as& bd, size_t x, size_t y, boost::uint32_t color)
+setPixel32(const BitmapData_as& bd, size_t x, size_t y, std::uint32_t color)
{
if (bd.disposed()) return;
if (x >= bd.width() || y >= bd.height()) return;
@@ -1778,7 +1783,7 @@ setPixel32(const BitmapData_as& bd, size_t x, size_t y, boost::uint32_t color)
void
fillRect(const BitmapData_as& bd, int x, int y, int w, int h,
- boost::uint32_t color)
+ std::uint32_t color)
{
adjustRect(x, y, w, h, bd);
@@ -1804,7 +1809,7 @@ fillRect(const BitmapData_as& bd, int x, int y, int w, int h,
void
floodFill(const BitmapData_as& bd, size_t startx, size_t starty,
- boost::uint32_t old, boost::uint32_t fill)
+ std::uint32_t old, std::uint32_t fill)
{
const size_t width = bd.width();
const size_t height = bd.height();
@@ -1919,8 +1924,8 @@ adjustRect(int& x, int& y, int& w, int& h, const BitmapData_as& b)
}
-boost::uint8_t
-getChannel(boost::uint32_t src, boost::uint8_t bitmask)
+std::uint8_t
+getChannel(std::uint32_t src, std::uint8_t bitmask)
{
if (bitmask & BitmapData_as::CHANNEL_RED) {
// Red
@@ -1941,11 +1946,11 @@ getChannel(boost::uint32_t src, boost::uint8_t bitmask)
return 0;
}
-boost::uint32_t
-setChannel(boost::uint32_t targ, boost::uint8_t bitmask, boost::uint8_t value)
+std::uint32_t
+setChannel(std::uint32_t targ, std::uint8_t bitmask, std::uint8_t value)
{
- boost::uint32_t bytemask = 0;
- boost::uint32_t valmask = 0;
+ std::uint32_t bytemask = 0;
+ std::uint32_t valmask = 0;
if (bitmask & BitmapData_as::CHANNEL_RED) {
// Red
bytemask = 0xff0000;
diff --git a/libcore/asobj/flash/display/BitmapData_as.h b/libcore/asobj/flash/display/BitmapData_as.h
index ac288e9..a028ffa 100644
--- a/libcore/asobj/flash/display/BitmapData_as.h
+++ b/libcore/asobj/flash/display/BitmapData_as.h
@@ -22,8 +22,8 @@
#define GNASH_ASOBJ_BITMAPDATA_H
#include <list>
-#include <boost/cstdint.hpp>
-#include <boost/scoped_ptr.hpp>
+#include <cstdint>
+#include <memory>
#include <cassert>
#include <boost/intrusive_ptr.hpp>
#include <memory>
@@ -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() {}
@@ -166,7 +166,7 @@ private:
boost::intrusive_ptr<CachedBitmap> _cachedBitmap;
- boost::scoped_ptr<image::GnashImage> _image;
+ std::unique_ptr<image::GnashImage> _image;
std::list<DisplayObject*> _attachedObjects;
diff --git a/libcore/asobj/flash/external/ExternalInterface_as.cpp b/libcore/asobj/flash/external/ExternalInterface_as.cpp
index 86530e6..a72fd4a 100644
--- a/libcore/asobj/flash/external/ExternalInterface_as.cpp
+++ b/libcore/asobj/flash/external/ExternalInterface_as.cpp
@@ -234,7 +234,7 @@ attachExternalInterfaceStaticInterface(as_object& o)
// here, but it seems that the properties actually are visible in SWF6
// and SWF7, at least for the flashplayer 9. So we just make sure they
// are read-only.
- as_object* null = 0;
+ as_object* null = nullptr;
callMethod(&gl, NSV::PROP_AS_SET_PROP_FLAGS, &o, null, 7);
}
@@ -320,8 +320,7 @@ externalinterface_available(const fn_call& fn)
{
const RunResources& r = m.runResources();
const std::string& baseurl = r.streamProvider().baseURL().str();
- char hostname[MAXHOSTNAMELEN];
- std::memset(hostname, 0, MAXHOSTNAMELEN);
+ char hostname[MAXHOSTNAMELEN] = {};
if (::gethostname(hostname, MAXHOSTNAMELEN) != 0) {
mode = false;
diff --git a/libcore/asobj/flash/filters/BevelFilter_as.cpp b/libcore/asobj/flash/filters/BevelFilter_as.cpp
index c28c859..28bc2c8 100644
--- a/libcore/asobj/flash/filters/BevelFilter_as.cpp
+++ b/libcore/asobj/flash/filters/BevelFilter_as.cpp
@@ -125,7 +125,7 @@ bevelfilter_highlightColor(const fn_call& fn)
if (fn.nargs == 0) {
return as_value(ptr->m_highlightColor );
}
- boost::uint32_t sp_highlightColor = toNumber(fn.arg(0), getVM(fn));
+ std::uint32_t sp_highlightColor = toNumber(fn.arg(0), getVM(fn));
ptr->m_highlightColor = sp_highlightColor;
return as_value();
}
@@ -137,7 +137,7 @@ bevelfilter_highlightAlpha(const fn_call& fn)
if (fn.nargs == 0) {
return as_value(ptr->m_highlightAlpha );
}
- boost::uint8_t sp_highlightAlpha = toNumber(fn.arg(0), getVM(fn));
+ std::uint8_t sp_highlightAlpha = toNumber(fn.arg(0), getVM(fn));
ptr->m_highlightAlpha = sp_highlightAlpha;
return as_value();
}
@@ -149,7 +149,7 @@ bevelfilter_shadowColor(const fn_call& fn)
if (fn.nargs == 0) {
return as_value(ptr->m_shadowColor );
}
- boost::uint32_t sp_shadowColor = toNumber(fn.arg(0), getVM(fn));
+ std::uint32_t sp_shadowColor = toNumber(fn.arg(0), getVM(fn));
ptr->m_shadowColor = sp_shadowColor;
return as_value();
}
@@ -161,7 +161,7 @@ bevelfilter_shadowAlpha(const fn_call& fn)
if (fn.nargs == 0) {
return as_value(ptr->m_shadowAlpha );
}
- boost::uint8_t sp_shadowAlpha = toNumber(fn.arg(0), getVM(fn));
+ std::uint8_t sp_shadowAlpha = toNumber(fn.arg(0), getVM(fn));
ptr->m_shadowAlpha = sp_shadowAlpha;
return as_value();
}
@@ -209,7 +209,7 @@ bevelfilter_quality(const fn_call& fn)
if (fn.nargs == 0) {
return as_value(ptr->m_quality );
}
- boost::uint8_t sp_quality = toNumber(fn.arg(0), getVM(fn));
+ std::uint8_t sp_quality = toNumber(fn.arg(0), getVM(fn));
ptr->m_quality = sp_quality;
return as_value();
}
diff --git a/libcore/asobj/flash/filters/BitmapFilter_as.cpp b/libcore/asobj/flash/filters/BitmapFilter_as.cpp
index b201270..aa27fa0 100644
--- a/libcore/asobj/flash/filters/BitmapFilter_as.cpp
+++ b/libcore/asobj/flash/filters/BitmapFilter_as.cpp
@@ -89,7 +89,7 @@ registerBitmapClass(as_object& where, Global_as::ASFunction ctor,
VM& vm = getVM(where);
proto = constructInstance(*constructor, as_environment(vm), args);
}
- else proto = 0;
+ else proto = nullptr;
as_object* cl = gl.createClass(ctor, createObject(gl));
if (proto) p(*proto);
diff --git a/libcore/asobj/flash/filters/BlurFilter_as.cpp b/libcore/asobj/flash/filters/BlurFilter_as.cpp
index 6c709f4..6da489f 100644
--- a/libcore/asobj/flash/filters/BlurFilter_as.cpp
+++ b/libcore/asobj/flash/filters/BlurFilter_as.cpp
@@ -92,7 +92,7 @@ blurfilter_quality(const fn_call& fn)
if (fn.nargs == 0) {
return as_value(ptr->m_quality );
}
- boost::uint8_t sp_quality = toNumber(fn.arg(0), getVM(fn));
+ std::uint8_t sp_quality = toNumber(fn.arg(0), getVM(fn));
ptr->m_quality = sp_quality;
return as_value();
}
diff --git a/libcore/asobj/flash/filters/DropShadowFilter_as.cpp b/libcore/asobj/flash/filters/DropShadowFilter_as.cpp
index 20ae315..7060223 100644
--- a/libcore/asobj/flash/filters/DropShadowFilter_as.cpp
+++ b/libcore/asobj/flash/filters/DropShadowFilter_as.cpp
@@ -184,7 +184,7 @@ dropshadowfilter_quality(const fn_call& fn)
if (fn.nargs == 0) {
return as_value(ptr->m_quality );
}
- boost::uint8_t sp_quality = toNumber(fn.arg(0), getVM(fn));
+ std::uint8_t sp_quality = toNumber(fn.arg(0), getVM(fn));
ptr->m_quality = sp_quality;
return as_value();
}
diff --git a/libcore/asobj/flash/filters/GlowFilter_as.cpp b/libcore/asobj/flash/filters/GlowFilter_as.cpp
index 1a85c2e..77ccc51 100644
--- a/libcore/asobj/flash/filters/GlowFilter_as.cpp
+++ b/libcore/asobj/flash/filters/GlowFilter_as.cpp
@@ -90,7 +90,7 @@ glowfilter_inner(const fn_call& fn)
if (fn.nargs == 0) {
return as_value(ptr->m_inner );
}
- boost::uint32_t sp_inner = toNumber(fn.arg(0), getVM(fn));
+ std::uint32_t sp_inner = toNumber(fn.arg(0), getVM(fn));
ptr->m_inner = sp_inner;
return as_value();
}
@@ -162,7 +162,7 @@ glowfilter_quality(const fn_call& fn)
if (fn.nargs == 0) {
return as_value(ptr->m_quality );
}
- boost::uint8_t sp_quality = toNumber(fn.arg(0), getVM(fn));
+ std::uint8_t sp_quality = toNumber(fn.arg(0), getVM(fn));
ptr->m_quality = sp_quality;
return as_value();
}
diff --git a/libcore/asobj/flash/filters/GradientBevelFilter_as.cpp b/libcore/asobj/flash/filters/GradientBevelFilter_as.cpp
index 14c414d..f58659a 100644
--- a/libcore/asobj/flash/filters/GradientBevelFilter_as.cpp
+++ b/libcore/asobj/flash/filters/GradientBevelFilter_as.cpp
@@ -184,7 +184,7 @@ gradientbevelfilter_quality(const fn_call& fn)
if (fn.nargs == 0) {
return as_value(ptr->m_quality );
}
- boost::uint8_t sp_quality = toNumber(fn.arg(0), getVM(fn));
+ std::uint8_t sp_quality = toNumber(fn.arg(0), getVM(fn));
ptr->m_quality = sp_quality;
return as_value();
}
diff --git a/libcore/asobj/flash/filters/GradientGlowFilter_as.cpp b/libcore/asobj/flash/filters/GradientGlowFilter_as.cpp
index 9f7ba4a..f580c19 100644
--- a/libcore/asobj/flash/filters/GradientGlowFilter_as.cpp
+++ b/libcore/asobj/flash/filters/GradientGlowFilter_as.cpp
@@ -185,7 +185,7 @@ gradientglowfilter_quality(const fn_call& fn)
if (fn.nargs == 0) {
return as_value(ptr->m_quality );
}
- boost::uint8_t sp_quality = toNumber(fn.arg(0), getVM(fn));
+ std::uint8_t sp_quality = toNumber(fn.arg(0), getVM(fn));
ptr->m_quality = sp_quality;
return as_value();
}
diff --git a/libcore/asobj/flash/geom/ColorTransform_as.cpp b/libcore/asobj/flash/geom/ColorTransform_as.cpp
index 25c4643..bd0fb17 100644
--- a/libcore/asobj/flash/geom/ColorTransform_as.cpp
+++ b/libcore/asobj/flash/geom/ColorTransform_as.cpp
@@ -322,20 +322,20 @@ colortransform_rgb(const fn_call& fn)
if (!fn.nargs)
{
// Getter
- boost::uint32_t r = static_cast<boost::uint32_t>(
+ std::uint32_t r = static_cast<std::uint32_t>(
std::fmod(relay->getRedOffset(), 4294967296.0));
- boost::uint32_t g = static_cast<boost::uint32_t>(
+ std::uint32_t g = static_cast<std::uint32_t>(
std::fmod(relay->getGreenOffset(), 4294967296.0));
- boost::uint32_t b = static_cast<boost::uint32_t>(
+ std::uint32_t b = static_cast<std::uint32_t>(
std::fmod(relay->getBlueOffset(), 4294967296.0));
- boost::uint32_t rgb = (r << 16) + (g << 8) + b;
+ std::uint32_t rgb = (r << 16) + (g << 8) + b;
return as_value(rgb);
}
// Setter
- boost::uint32_t rgb = toInt(fn.arg(0), getVM(fn));
+ std::uint32_t rgb = toInt(fn.arg(0), getVM(fn));
relay->setRedOffset((rgb & 0xFF0000) >> 16);
relay->setGreenOffset((rgb & 0x00FF00) >> 8);
relay->setBlueOffset(rgb & 0x0000FF);
diff --git a/libcore/asobj/flash/geom/Matrix_as.cpp b/libcore/asobj/flash/geom/Matrix_as.cpp
index 65ef537..9cec893 100644
--- a/libcore/asobj/flash/geom/Matrix_as.cpp
+++ b/libcore/asobj/flash/geom/Matrix_as.cpp
@@ -135,7 +135,7 @@ instanceOfMatrix(const fn_call& fn)
as_function* ctor = getClassConstructor(fn, "flash.geom.Matrix");
if (obj->instanceOf(ctor)) return obj;
- return 0;
+ return nullptr;
}
/// Return an exact copy of the matrix.
diff --git a/libcore/asobj/flash/geom/Rectangle_as.cpp b/libcore/asobj/flash/geom/Rectangle_as.cpp
index 4b60e0b..369260c 100644
--- a/libcore/asobj/flash/geom/Rectangle_as.cpp
+++ b/libcore/asobj/flash/geom/Rectangle_as.cpp
@@ -200,7 +200,7 @@ Rectangle_containsPoint(const fn_call& fn)
{
as_object* ptr = ensure<ValidThis>(fn);
- as_object* arg = (fn.nargs > 0) ? toObject(fn.arg(0), getVM(fn)) : 0;
+ as_object* arg = (fn.nargs > 0) ? toObject(fn.arg(0), getVM(fn)) : nullptr;
VM& vm = getVM(fn);
@@ -365,7 +365,7 @@ Rectangle_offsetPoint(const fn_call& fn)
{
as_object* ptr = ensure<ValidThis>(fn);
- as_object* arg = (fn.nargs > 0) ? toObject(fn.arg(0), getVM(fn)) : 0;
+ as_object* arg = (fn.nargs > 0) ? toObject(fn.arg(0), getVM(fn)) : nullptr;
if (!arg) return as_value();
as_value xdelta = getMember(*arg, NSV::PROP_X);
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.cpp b/libcore/asobj/flash/net/FileReference_as.cpp
index 5f19926..b3c3b24 100644
--- a/libcore/asobj/flash/net/FileReference_as.cpp
+++ b/libcore/asobj/flash/net/FileReference_as.cpp
@@ -35,11 +35,14 @@
namespace gnash {
namespace {
+#if 0
+ // Not yet implemented.
as_value filereference_addListener(const fn_call& fn);
+ as_value filereference_removeListener(const fn_call& fn);
+#endif
as_value filereference_browse(const fn_call& fn);
as_value filereference_cancel(const fn_call& fn);
as_value filereference_download(const fn_call& fn);
- as_value filereference_removeListener(const fn_call& fn);
as_value filereference_upload(const fn_call& fn);
as_value filereference_creationDate(const fn_call& fn);
as_value filereference_creator(const fn_call& fn);
@@ -65,7 +68,7 @@ filereference_class_init(as_object& where, const ObjectURI& uri)
AsBroadcaster::initialize(*proto);
- as_object* null = 0;
+ as_object* null = nullptr;
callMethod(&gl, NSV::PROP_AS_SET_PROP_FLAGS, proto, null, 3);
where.init_member(uri, cl, as_object::DefaultFlags);
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.cpp b/libcore/asobj/flash/text/TextRenderer_as.cpp
index c5152b9..5fec41c 100644
--- a/libcore/asobj/flash/text/TextRenderer_as.cpp
+++ b/libcore/asobj/flash/text/TextRenderer_as.cpp
@@ -43,7 +43,7 @@ namespace {
void
textrenderer_class_init(as_object& where, const ObjectURI& uri)
{
- registerBuiltinClass(where, textrenderer_ctor, 0,
+ registerBuiltinClass(where, textrenderer_ctor, nullptr,
attachTextRendererStaticProperties, uri);
}
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/builtin_function.h b/libcore/builtin_function.h
index 1508282..ac270b6 100644
--- a/libcore/builtin_function.h
+++ b/libcore/builtin_function.h
@@ -20,11 +20,14 @@
#define GNASH_BUILTIN_FUNCTION_H
#include "UserFunction.h"
-#include "fn_call.h"
#include <cassert>
namespace gnash {
+ class fn_call;
+}
+
+namespace gnash {
/// This is a special type of function implementing AS-code in C++
@@ -58,7 +61,7 @@ public:
/// Return the number of registers required for function execution
//
/// Gnash's C++ implementations of AS functions don't need any registers!
- virtual boost::uint8_t registers() const {
+ virtual std::uint8_t registers() const {
return 0;
}
diff --git a/libcore/event_id.cpp b/libcore/event_id.cpp
index e2c6b0c..78f1757 100644
--- a/libcore/event_id.cpp
+++ b/libcore/event_id.cpp
@@ -29,7 +29,6 @@
#include <algorithm>
#include <boost/format.hpp>
#include <cassert>
-#include <boost/assign/list_of.hpp>
namespace gnash {
@@ -37,27 +36,28 @@ const std::string&
event_id::functionName() const
{
typedef std::map<EventCode, std::string> EventFunctionNameMap;
- static const EventFunctionNameMap e = boost::assign::map_list_of
- (INVALID, "INVALID")
- (PRESS, "onPress")
- (RELEASE, "onRelease")
- (RELEASE_OUTSIDE, "onReleaseOutside")
- (ROLL_OVER, "onRollOver")
- (ROLL_OUT, "onRollOut")
- (DRAG_OVER, "onDragOver")
- (DRAG_OUT, "onDragOut")
- (KEY_PRESS, "onKeyPress")
- (INITIALIZE, "onInitialize")
- (LOAD, "onLoad")
- (UNLOAD, "onUnload")
- (ENTER_FRAME, "onEnterFrame")
- (MOUSE_DOWN, "onMouseDown")
- (MOUSE_UP, "onMouseUp")
- (MOUSE_MOVE, "onMouseMove")
- (KEY_DOWN, "onKeyDown")
- (KEY_UP, "onKeyUp")
- (DATA, "onData")
- (CONSTRUCT, "onConstruct");
+ static const EventFunctionNameMap e = {
+ {INVALID, "INVALID"},
+ {PRESS, "onPress"},
+ {RELEASE, "onRelease"},
+ {RELEASE_OUTSIDE, "onReleaseOutside"},
+ {ROLL_OVER, "onRollOver"},
+ {ROLL_OUT, "onRollOut"},
+ {DRAG_OVER, "onDragOver"},
+ {DRAG_OUT, "onDragOut"},
+ {KEY_PRESS, "onKeyPress"},
+ {INITIALIZE, "onInitialize"},
+ {LOAD, "onLoad"},
+ {UNLOAD, "onUnload"},
+ {ENTER_FRAME, "onEnterFrame"},
+ {MOUSE_DOWN, "onMouseDown"},
+ {MOUSE_UP, "onMouseUp"},
+ {MOUSE_MOVE, "onMouseMove"},
+ {KEY_DOWN, "onKeyDown"},
+ {KEY_UP, "onKeyUp"},
+ {DATA, "onData"},
+ {CONSTRUCT, "onConstruct"}
+ };
EventFunctionNameMap::const_iterator it = e.find(_id);
assert(it != e.end());
@@ -73,26 +73,27 @@ event_id::functionURI() const
// it contains string_table-dependent
// mutable entries
//
- static const EventFunctionMap e = boost::assign::map_list_of
- (PRESS, NSV::PROP_ON_PRESS)
- (RELEASE, NSV::PROP_ON_RELEASE)
- (RELEASE_OUTSIDE, NSV::PROP_ON_RELEASE_OUTSIDE)
- (ROLL_OVER, NSV::PROP_ON_ROLL_OVER )
- (ROLL_OUT, NSV::PROP_ON_ROLL_OUT)
- (DRAG_OVER, NSV::PROP_ON_DRAG_OVER)
- (DRAG_OUT, NSV::PROP_ON_DRAG_OUT)
- (KEY_PRESS, NSV::PROP_ON_KEY_PRESS)
- (INITIALIZE, NSV::PROP_ON_INITIALIZE)
- (LOAD, NSV::PROP_ON_LOAD)
- (UNLOAD, NSV::PROP_ON_UNLOAD)
- (ENTER_FRAME, NSV::PROP_ON_ENTER_FRAME)
- (MOUSE_DOWN, NSV::PROP_ON_MOUSE_DOWN)
- (MOUSE_UP, NSV::PROP_ON_MOUSE_UP)
- (MOUSE_MOVE, NSV::PROP_ON_MOUSE_MOVE)
- (KEY_DOWN, NSV::PROP_ON_KEY_DOWN)
- (KEY_UP, NSV::PROP_ON_KEY_UP)
- (DATA, NSV::PROP_ON_DATA)
- (CONSTRUCT, NSV::PROP_ON_CONSTRUCT);
+ static const EventFunctionMap e = {
+ {PRESS, NSV::PROP_ON_PRESS},
+ {RELEASE, NSV::PROP_ON_RELEASE},
+ {RELEASE_OUTSIDE, NSV::PROP_ON_RELEASE_OUTSIDE},
+ {ROLL_OVER, NSV::PROP_ON_ROLL_OVER },
+ {ROLL_OUT, NSV::PROP_ON_ROLL_OUT},
+ {DRAG_OVER, NSV::PROP_ON_DRAG_OVER},
+ {DRAG_OUT, NSV::PROP_ON_DRAG_OUT},
+ {KEY_PRESS, NSV::PROP_ON_KEY_PRESS},
+ {INITIALIZE, NSV::PROP_ON_INITIALIZE},
+ {LOAD, NSV::PROP_ON_LOAD},
+ {UNLOAD, NSV::PROP_ON_UNLOAD},
+ {ENTER_FRAME, NSV::PROP_ON_ENTER_FRAME},
+ {MOUSE_DOWN, NSV::PROP_ON_MOUSE_DOWN},
+ {MOUSE_UP, NSV::PROP_ON_MOUSE_UP},
+ {MOUSE_MOVE, NSV::PROP_ON_MOUSE_MOVE},
+ {KEY_DOWN, NSV::PROP_ON_KEY_DOWN},
+ {KEY_UP, NSV::PROP_ON_KEY_UP},
+ {DATA, NSV::PROP_ON_DATA},
+ {CONSTRUCT, NSV::PROP_ON_CONSTRUCT}
+ };
EventFunctionMap::const_iterator it = e.find(_id);
assert(it != e.end());
diff --git a/libcore/event_id.h b/libcore/event_id.h
index 6890be5..14d2bde 100644
--- a/libcore/event_id.h
+++ b/libcore/event_id.h
@@ -110,7 +110,7 @@ public:
//
/// @param SWFKey The SWF code matched to the event. This
/// must be converted to a unique gnash::key::code.
- void setKeyCode(boost::uint8_t SWFkey)
+ void setKeyCode(std::uint8_t SWFkey)
{
// Lookup the SWFcode in the gnash::key::code table.
// Some are not unique (keypad numbers are the
diff --git a/libcore/fontlib.cpp b/libcore/fontlib.cpp
index 24e63dc..5adb695 100644
--- a/libcore/fontlib.cpp
+++ b/libcore/fontlib.cpp
@@ -50,13 +50,12 @@ Font*
get_font(const std::string& name, bool bold, bool italic)
{
// Dumb linear search.
- for (unsigned int i = 0; i < s_fonts.size(); i++)
+ for (auto& font : s_fonts)
{
- Font* f = s_fonts[i].get();
- assert(f);
- if ( f->matches(name, bold, italic) )
+ assert(font);
+ if ( font->matches(name, bold, italic) )
{
- return f;
+ return font.get();
}
}
Font* f = new Font(name, bold, italic);
@@ -70,9 +69,9 @@ add_font(Font* f)
assert(f);
#ifndef NDEBUG
// Make sure font isn't already in the list.
- for (unsigned int i = 0; i < s_fonts.size(); i++)
+ for (auto& font : s_fonts)
{
- assert(s_fonts[i] != f);
+ assert(font != f);
}
#endif // not NDEBUG
diff --git a/libcore/movie_root.cpp b/libcore/movie_root.cpp
index 3ec506c..952e063 100644
--- a/libcore/movie_root.cpp
+++ b/libcore/movie_root.cpp
@@ -30,7 +30,7 @@
#include <boost/algorithm/string/replace.hpp>
#include <boost/ptr_container/ptr_deque.hpp>
#include <boost/algorithm/string/case_conv.hpp>
-#include <boost/bind.hpp>
+#include <functional>
#include "GnashSystemIOHeaders.h" // write()
#include "log.h"
@@ -126,7 +126,7 @@ void
clear(movie_root::ActionQueue& aq)
{
std::for_each(aq.begin(), aq.end(),
- boost::mem_fn(&movie_root::ActionQueue::value_type::clear));
+ std::mem_fn(&movie_root::ActionQueue::value_type::clear));
}
} // anonymous namespace
@@ -137,8 +137,8 @@ movie_root::movie_root(VirtualClock& clock, const RunResources& runResources)
_gc(*this),
_runResources(runResources),
_vm(*this, clock),
- _interfaceHandler(0),
- _fsCommandHandler(0),
+ _interfaceHandler(nullptr),
+ _fsCommandHandler(nullptr),
_stageWidth(1),
_stageHeight(1),
m_background_color(255, 255, 255, 255),
@@ -147,9 +147,9 @@ movie_root::movie_root(VirtualClock& clock, const RunResources& runResources)
_mouseY(0),
_lastTimerId(0),
_lastKeyEvent(key::INVALID),
- _currentFocus(0),
+ _currentFocus(nullptr),
_movies(),
- _rootMovie(0),
+ _rootMovie(nullptr),
_invalidated(true),
_disableScripts(false),
_processingActionLevel(PRIORITY_SIZE),
@@ -286,7 +286,7 @@ as_function*
movie_root::getRegisteredClass(const SWF::DefinitionTag* sprite) const
{
RegisteredClasses::const_iterator it = _registeredClasses.find(sprite);
- if (it == _registeredClasses.end()) return 0;
+ if (it == _registeredClasses.end()) return nullptr;
return it->second;
}
@@ -305,7 +305,7 @@ movie_root::cleanupAndCollect()
_vm.getStack().clear();
// Reset the constant pool
- _vm.setConstantPool(0);
+ _vm.setConstantPool(nullptr);
cleanupDisplayList();
_gc.fuzzyCollect();
@@ -315,7 +315,7 @@ movie_root::cleanupAndCollect()
void
movie_root::setLevel(unsigned int num, Movie* movie)
{
- assert(movie != NULL);
+ assert(movie != nullptr);
assert(static_cast<unsigned int>(movie->get_depth()) ==
num + DisplayObject::staticDepthOffset);
@@ -480,7 +480,10 @@ movie_root::dropLevel(int depth)
}
// TOCHECK: safe to erase here ?
- mo->unload();
+
+ // Ignoring return value of unload(), because the only way to handle
+ // an unload failure is to call destroy, which is done anyway.
+ (void)mo->unload();
mo->destroy();
_movies.erase(it);
@@ -507,7 +510,7 @@ movie_root::getLevel(unsigned int num) const
Levels::const_iterator i =
_movies.find(num + DisplayObject::staticDepthOffset);
- if (i == _movies.end()) return 0;
+ if (i == _movies.end()) return nullptr;
return i->second;
}
@@ -576,7 +579,7 @@ movie_root::setDimensions(size_t w, size_t h)
}
bool
-movie_root::mouseMoved(boost::int32_t x, boost::int32_t y)
+movie_root::mouseMoved(std::int32_t x, std::int32_t y)
{
assert(testInvariant());
@@ -596,10 +599,8 @@ movie_root::keyEvent(key::code k, bool down)
}
LiveChars copy = _liveChars;
- for (LiveChars::iterator iter = copy.begin(), itEnd=copy.end();
- iter != itEnd; ++iter) {
+ for (MovieClip* const ch : copy) {
- MovieClip* const ch = *iter;
if (ch->unloaded()) continue;
if (down) {
@@ -637,10 +638,10 @@ movie_root::keyEvent(key::code k, bool down)
// However, the previous attempt to fix caused real-life failures:
// see bug #33889.
ButtonListeners copy = _buttonListeners;
- for (ButtonListeners::const_iterator it = copy.begin(), e = copy.end();
- it != e; ++it) {
- if ((*it)->unloaded()) continue;
- (*it)->keyPress(k);
+ for (Button* button : copy) {
+ if (!button->unloaded()) {
+ button->keyPress(k);
+ }
}
// If we're focused on an editable text field, finally the text
@@ -661,8 +662,8 @@ movie_root::mouseWheel(int delta)
getBuiltinObject(*this, getURI(_vm, NSV::CLASS_MOUSE));
if (!mouseObj) return false;
- const boost::int32_t x = pixelsToTwips(_mouseX);
- const boost::int32_t y = pixelsToTwips(_mouseY);
+ const std::int32_t x = pixelsToTwips(_mouseX);
+ const std::int32_t y = pixelsToTwips(_mouseY);
DisplayObject* i = getTopmostMouseEntity(x, y);
@@ -692,8 +693,8 @@ movie_root::fire_mouse_event()
{
assert(testInvariant());
- boost::int32_t x = pixelsToTwips(_mouseX);
- boost::int32_t y = pixelsToTwips(_mouseY);
+ std::int32_t x = pixelsToTwips(_mouseX);
+ std::int32_t y = pixelsToTwips(_mouseY);
// Generate a mouse event
_mouseButtonState.topmostEntity = getTopmostMouseEntity(x, y);
@@ -731,7 +732,7 @@ movie_root::fire_mouse_event()
return need_redraw;
}
-std::pair<boost::int32_t, boost::int32_t>
+std::pair<std::int32_t, std::int32_t>
movie_root::mousePosition() const
{
assert(testInvariant());
@@ -755,8 +756,8 @@ movie_root::setDragState(const DragState& st)
// Get current mouse coordinates
const point world_mouse(pixelsToTwips(_mouseX), pixelsToTwips(_mouseY));
- boost::int32_t xoffset = world_mouse.x - world_origin.x;
- boost::int32_t yoffset = world_mouse.y - world_origin.y;
+ std::int32_t xoffset = world_mouse.x - world_origin.x;
+ std::int32_t yoffset = world_mouse.y - world_origin.y;
_dragState->setOffset(xoffset, yoffset);
}
@@ -808,8 +809,8 @@ movie_root::doMouseDrag()
dragChar->setMatrix(local);
}
-boost::uint32_t
-movie_root::addIntervalTimer(std::auto_ptr<Timer> timer)
+std::uint32_t
+movie_root::addIntervalTimer(std::unique_ptr<Timer> timer)
{
assert(timer.get());
assert(testInvariant());
@@ -818,14 +819,13 @@ 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;
}
bool
-movie_root::clearIntervalTimer(boost::uint32_t x)
+movie_root::clearIntervalTimer(std::uint32_t x)
{
TimerMap::iterator it = _intervalTimers.find(x);
if (it == _intervalTimers.end()) {
@@ -854,9 +854,9 @@ movie_root::advance()
bool advanced = false;
-#ifdef USE_SOUND
try {
+#ifdef USE_SOUND
sound::sound_handler* s = _runResources.soundHandler();
if (s && _timelineSound) {
@@ -925,6 +925,7 @@ movie_root::advance()
}
}
else {
+#endif // USE_SOUND
// Driven by frame rate
const size_t elapsed = now - _lastMovieAdvancement;
if (elapsed >= _movieAdvancementDelay) {
@@ -932,7 +933,9 @@ movie_root::advance()
advanceMovie();
_lastMovieAdvancement = now;
}
+#ifdef USE_SOUND
}
+#endif // USE_SOUND
// Always do this.
executeAdvanceCallbacks();
@@ -949,7 +952,6 @@ movie_root::advance()
log_error(_("Buffer overread during advance: %s"), e.what());
clear(_actionQueue);
}
-#endif // USE_SOUND
return advanced;
}
@@ -1019,8 +1021,8 @@ movie_root::display()
frame_size.get_x_min(), frame_size.get_x_max(),
frame_size.get_y_min(), frame_size.get_y_max());
- for (Levels::iterator i=_movies.begin(), e=_movies.end(); i!=e; ++i) {
- MovieClip* movie = i->second;
+ for (auto& elem : _movies) {
+ MovieClip* movie = elem.second;
movie->clear_invalidated();
@@ -1030,7 +1032,7 @@ movie_root::display()
const SWFRect& sub_frame_size = movie->get_frame_size();
if (sub_frame_size.is_null()) {
- log_debug("_level%u has null frame size, skipping", i->first);
+ log_debug("_level%u has null frame size, skipping", elem.first);
continue;
}
@@ -1042,10 +1044,8 @@ bool
movie_root::notify_mouse_listeners(const event_id& event)
{
LiveChars copy = _liveChars;
- for (LiveChars::iterator iter = copy.begin(), itEnd=copy.end();
- iter != itEnd; ++iter)
+ for (MovieClip* const ch : copy)
{
- MovieClip* const ch = *iter;
if (!ch->unloaded()) {
ch->mouseEvent(event);
}
@@ -1148,14 +1148,14 @@ movie_root::getActiveEntityUnderPointer() const
DisplayObject*
movie_root::getDraggingCharacter() const
{
- return _dragState ? _dragState->getCharacter() : 0;
+ return _dragState ? _dragState->getCharacter() : nullptr;
}
const DisplayObject*
movie_root::getEntityUnderPointer() const
{
- const boost::int32_t x = pixelsToTwips(_mouseX);
- const boost::int32_t y = pixelsToTwips(_mouseY);
+ const std::int32_t x = pixelsToTwips(_mouseX);
+ const std::int32_t y = pixelsToTwips(_mouseY);
return findDropTarget(x, y, getDraggingCharacter());
}
@@ -1399,7 +1399,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();
@@ -1449,10 +1449,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());
- _loadCallbacks.push_back(LoadCallback(io, obj));
+ _loadCallbacks.emplace_back(std::move(str), obj);
}
void
@@ -1494,10 +1493,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
@@ -1508,9 +1507,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
@@ -1536,8 +1535,9 @@ movie_root::executeAdvanceCallbacks()
std::transform(_objectCallbacks.begin(), _objectCallbacks.end(),
std::back_inserter(currentCallbacks),
- boost::bind(CreatePointer<as_object>(),
- boost::bind(std::mem_fun(&ActiveRelay::owner), _1)));
+ std::bind(CreatePointer<as_object>(),
+ std::bind(std::mem_fun(&ActiveRelay::owner),
+ std::placeholders::_1)));
std::for_each(currentCallbacks.begin(), currentCallbacks.end(),
ExecuteCallback());
@@ -1552,7 +1552,7 @@ movie_root::executeAdvanceCallbacks()
// application. If it is set, we have to check the socket connection
// for XML messages.
if (_controlfd > 0) {
- boost::shared_ptr<ExternalInterface::invoke_t> invoke =
+ std::unique_ptr<ExternalInterface::invoke_t> invoke =
ExternalInterface::ExternalEventCheck(_controlfd);
if (invoke) {
if (processInvoke(invoke.get()) == false) {
@@ -1705,7 +1705,7 @@ movie_root::executeTimers()
unsigned long now = _vm.getTime();
- typedef std::multimap<unsigned int, boost::shared_ptr<Timer> >
+ typedef std::multimap<unsigned long, Timer*>
ExpiredTimers;
ExpiredTimers expiredTimers;
@@ -1716,7 +1716,7 @@ movie_root::executeTimers()
TimerMap::iterator nextIterator = it;
++nextIterator;
- boost::shared_ptr<Timer> timer(it->second);
+ Timer* timer = it->second.get();
if (timer->cleared()) {
// this timer was cleared, erase it
@@ -1735,8 +1735,8 @@ movie_root::executeTimers()
foreachSecond(expiredTimers.begin(), expiredTimers.end(),
&Timer::executeAndReset);
- if (!expiredTimers.empty()) processActionQueue();
-
+ if (!expiredTimers.empty())
+ processActionQueue();
}
void
@@ -1760,7 +1760,6 @@ movie_root::markReachableResources() const
std::for_each(_objectCallbacks.begin(), _objectCallbacks.end(),
std::mem_fun(&ActiveRelay::setReachable));
-
std::for_each(_loadCallbacks.begin(), _loadCallbacks.end(),
std::mem_fun_ref(&movie_root::LoadCallback::setReachable));
@@ -1798,7 +1797,7 @@ movie_root::markReachableResources() const
}
InteractiveObject*
-movie_root::getTopmostMouseEntity(boost::int32_t x, boost::int32_t y) const
+movie_root::getTopmostMouseEntity(std::int32_t x, std::int32_t y) const
{
for (Levels::const_reverse_iterator i=_movies.rbegin(), e=_movies.rend();
i != e; ++i)
@@ -1807,11 +1806,11 @@ movie_root::getTopmostMouseEntity(boost::int32_t x, boost::int32_t y) const
if (ret) return ret;
}
- return 0;
+ return nullptr;
}
const DisplayObject *
-movie_root::findDropTarget(boost::int32_t x, boost::int32_t y,
+movie_root::findDropTarget(std::int32_t x, std::int32_t y,
DisplayObject* dragging) const
{
for (Levels::const_reverse_iterator i=_movies.rbegin(), e=_movies.rend();
@@ -1820,7 +1819,7 @@ movie_root::findDropTarget(boost::int32_t x, boost::int32_t y,
const DisplayObject* ret = i->second->findDropTarget(x, y, dragging);
if (ret) return ret;
}
- return 0;
+ return nullptr;
}
/// This should store a callback object in movie_root.
@@ -1939,8 +1938,7 @@ movie_root::callExternalCallback(const std::string &name,
void
movie_root::removeButton(Button* listener)
{
- _buttonListeners.remove_if(
- std::bind2nd(std::equal_to<Button*>(), listener));
+ _buttonListeners.remove(listener);
}
void
@@ -1956,7 +1954,7 @@ movie_root::registerButton(Button* listener)
void
movie_root::cleanupDisplayList()
{
-#define GNASH_DEBUG_INSTANCE_LIST 1
+//#define GNASH_DEBUG_INSTANCE_LIST 1
#ifdef GNASH_DEBUG_INSTANCE_LIST
static size_t maxLiveChars = 0;
@@ -2002,9 +2000,7 @@ movie_root::cleanupDisplayList()
needScan=false;
// Remove unloaded MovieClips from the _liveChars list
- for (LiveChars::iterator i = _liveChars.begin(), e = _liveChars.end();
- i != e;) {
- MovieClip* ch = *i;
+ _liveChars.remove_if([&](MovieClip* ch) {
if (ch->unloaded()) {
// the sprite might have been destroyed already
// by effect of an unload() call with no onUnload
@@ -2028,14 +2024,13 @@ movie_root::cleanupDisplayList()
}
#endif
- i = _liveChars.erase(i);
-
#ifdef GNASH_DEBUG_DLIST_CLEANUP
cleaned++;
#endif
+ return true;
}
- else ++i;
- }
+ return false;
+ });
#ifdef GNASH_DEBUG_DLIST_CLEANUP
cout << " Scan " << scansCount << " cleaned " << cleaned <<
@@ -2044,8 +2039,9 @@ movie_root::cleanupDisplayList()
} while (needScan);
#ifdef GNASH_DEBUG_INSTANCE_LIST
- if (_liveChars.size() > maxLiveChars) {
- maxLiveChars = _liveChars.size();
+ size_t count = std::distance(begin(_liveChars), end(_liveChars));
+ if (count > maxLiveChars) {
+ maxLiveChars = count;
log_debug("Global instance list grew to %d entries", maxLiveChars);
}
#endif
@@ -2061,11 +2057,11 @@ movie_root::advanceLiveChars()
// Advance all characters, then notify them.
LiveChars::iterator it;
- for (it=_liveChars.begin(); it != _liveChars.end(); ++it) {
- advanceLiveChar(*it);
+ for (MovieClip* liveChar : _liveChars) {
+ advanceLiveChar(liveChar);
}
- for (it=_liveChars.begin(); it != _liveChars.end(); ++it) {
- notifyLoad(*it);
+ for (MovieClip* liveChar : _liveChars) {
+ notifyLoad(liveChar);
}
}
@@ -2087,7 +2083,7 @@ movie_root::set_background_color(const rgba& color)
void
movie_root::set_background_alpha(float alpha)
{
- const boost::uint8_t newAlpha = clamp<int>(frnd(alpha * 255.0f), 0, 255);
+ const std::uint8_t newAlpha = clamp<int>(frnd(alpha * 255.0f), 0, 255);
if (m_background_color.m_a != newAlpha) {
setInvalidated();
@@ -2098,7 +2094,7 @@ movie_root::set_background_alpha(float alpha)
DisplayObject*
movie_root::findCharacterByTarget(const std::string& tgtstr) const
{
- if (tgtstr.empty()) return 0;
+ if (tgtstr.empty()) return nullptr;
// NOTE: getRootMovie() would be problematic in case the original
// root movie is replaced by a load to _level0...
@@ -2122,7 +2118,7 @@ movie_root::findCharacterByTarget(const std::string& tgtstr) const
log_debug("Evaluating DisplayObject target path: element"
"'%s' of path '%s' not found", part, tgtstr);
#endif
- return NULL;
+ return nullptr;
}
if (to == std::string::npos) break;
from = to + 1;
@@ -2194,34 +2190,34 @@ movie_root::getURL(const std::string& urlstr, const std::string& target,
/// This is when there is a hosting application.
std::vector<as_value> fnargs;
// The first argument we push on the stack is the URL
- fnargs.push_back(as_value(urlstr));
+ fnargs.emplace_back(urlstr);
// The second argument we push is the method
switch (method) {
case MovieClip::METHOD_POST:
- fnargs.push_back(as_value("POST"));
+ fnargs.emplace_back("POST");
break;
case MovieClip::METHOD_GET:
- fnargs.push_back(as_value("GET"));
+ fnargs.emplace_back("GET");
break;
case MovieClip::METHOD_NONE:
default:
- fnargs.push_back(as_value("GET"));
+ fnargs.emplace_back("GET");
break;
}
// The third argument is the target, which is something like _blank
// or _self.
if (!target.empty()) {
- fnargs.push_back(as_value(target));
+ fnargs.emplace_back(target);
}
// Add any data as the optional 4th argument
if (!data.empty()) {
// We have to write a value here so the data field is the fourth
if (target.empty()) {
- fnargs.push_back(as_value("none"));
+ fnargs.emplace_back("none");
}
- fnargs.push_back(as_value(data));
+ fnargs.emplace_back(data);
}
// TODO: should mutex-protect this ?
@@ -2239,7 +2235,7 @@ movie_root::getURL(const std::string& urlstr, const std::string& target,
}
void
-movie_root::setScriptLimits(boost::uint16_t recursion, boost::uint16_t timeout)
+movie_root::setScriptLimits(std::uint16_t recursion, std::uint16_t timeout)
{
if ( recursion == _recursionLimit && _timeoutLimit == timeout ) {
// avoid the debug log...
@@ -2320,7 +2316,7 @@ movie_root::getCharacterTree(InfoTree& tr, InfoTree::iterator it)
/// Stage: number of live MovieClips.
std::ostringstream os;
- os << _liveChars.size();
+ os << std::distance(begin(_liveChars), end(_liveChars));
localIter = tr.append_child(it, std::make_pair(_("Live MovieClips"),
os.str()));
@@ -2355,7 +2351,7 @@ isLevelTarget(int version, const std::string& name, unsigned int& levelno)
return false;
}
// getting 0 here for "_level" is intentional
- levelno = std::strtoul(name.c_str() + 6, NULL, 0);
+ levelno = std::strtoul(name.c_str() + 6, nullptr, 0);
return true;
}
@@ -2401,7 +2397,7 @@ movie_root::LoadCallback::processLoad()
}
const size_t chunksize = 65535;
- boost::uint8_t chunk[chunksize];
+ std::uint8_t chunk[chunksize];
size_t actuallyRead = _stream->readNonBlocking(chunk, chunksize);
@@ -2448,7 +2444,8 @@ movie_root::LoadCallback::processLoad()
size_t size = _buf.size();
// NOTE: the call below will possibly change 'size' parameter
- char* bufptr = utf8::stripBOM((char*)_buf.data(), size, encoding);
+ const char* bufptr = utf8::stripBOM(
+ reinterpret_cast<const char*>(_buf.data()), size, encoding);
if (encoding != utf8::encUTF8 && encoding != utf8::encUNSPECIFIED) {
log_unimpl(_("%s to UTF8 conversion in LoadableObject input parsing"),
utf8::textEncodingName(encoding));
@@ -2463,8 +2460,7 @@ movie_root::LoadCallback::processLoad()
// providing memory release except destruction. Will be
// destroyed as soon as we return though...
- // NOTE: Another data copy here !
- callMethod(_obj, NSV::PROP_ON_DATA, dataVal);
+ callMethod(_obj, NSV::PROP_ON_DATA, std::move(dataVal));
return true;
}
@@ -2548,7 +2544,7 @@ generate_mouse_button_events(movie_root& mr, MouseButtonState& ms)
ms.activeEntity->mouseEvent(
event_id(event_id::RELEASE_OUTSIDE));
// We got out of active entity
- ms.activeEntity = 0; // so we don't get RollOut next...
+ ms.activeEntity = nullptr; // so we don't get RollOut next...
need_redisplay = true;
}
}
@@ -2615,7 +2611,7 @@ getBuiltinObject(movie_root& mr, const ObjectURI& cl)
Global_as& gl = *mr.getVM().getGlobal();
as_value val;
- if (!gl.get_member(cl, &val)) return 0;
+ if (!gl.get_member(cl, &val)) return nullptr;
return toObject(val, mr.getVM());
}
diff --git a/libcore/movie_root.h b/libcore/movie_root.h
index a89787b..743bfeb 100644
--- a/libcore/movie_root.h
+++ b/libcore/movie_root.h
@@ -71,10 +71,10 @@
#include <map>
#include <string>
#include <vector>
-#include <list>
+#include <forward_list>
#include <set>
#include <bitset>
-#include <boost/array.hpp>
+#include <array>
#include <boost/ptr_container/ptr_deque.hpp>
#include <boost/noncopyable.hpp>
#include <boost/any.hpp>
@@ -93,6 +93,7 @@
#include "VM.h"
#include "HostInterface.h"
#include "log.h"
+#include "IOChannel.h"
#ifdef USE_SWFTREE
# include "tree.hh"
@@ -114,7 +115,6 @@ namespace gnash {
class Timer;
class MovieClip;
class VirtualClock;
- class IOChannel;
class RunResources;
class Button;
class VM;
@@ -153,19 +153,19 @@ public:
class LoadCallback {
public:
- LoadCallback(boost::shared_ptr<IOChannel> s, as_object* o)
+ LoadCallback(std::unique_ptr<IOChannel> s, as_object* o)
:
- _stream(s),
+ _stream(std::move(s)),
_obj(o)
{}
bool processLoad();
void setReachable() const;
private:
- boost::shared_ptr<IOChannel> _stream;
+ std::unique_ptr<IOChannel> _stream;
SimpleBuffer _buf;
as_object* _obj;
};
- typedef std::list<LoadCallback> LoadCallbacks;
+ typedef std::list<LoadCallback> LoadCallbacks;
typedef std::bitset<key::KEYCOUNT> Keys;
@@ -267,7 +267,7 @@ public:
///
/// TODO: take twips (or float pixels), or we won't be able to
/// support sub-pixel accuracy in collision detection.
- DSOEXPORT bool mouseMoved(boost::int32_t x, boost::int32_t y);
+ DSOEXPORT bool mouseMoved(std::int32_t x, std::int32_t y);
/// Inform the Stage that a mouse click has occurred.
//
@@ -293,7 +293,7 @@ public:
/// Use this to retrieve the last state of the mouse.
//
/// Coordinates are in PIXELS, NOT TWIPS.
- std::pair<boost::int32_t, boost::int32_t> mousePosition() const;
+ std::pair<std::int32_t, std::int32_t> mousePosition() const;
void setDragState(const DragState& st);
@@ -319,7 +319,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);
+ std::uint32_t addIntervalTimer(std::unique_ptr<Timer> timer);
/// Register an object for loading data to.
//
@@ -337,7 +337,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);
@@ -346,7 +346,7 @@ public:
/// Remove timer identified by given integer
//
/// @return true on success, false on error (no such timer)
- bool clearIntervalTimer(boost::uint32_t x);
+ bool clearIntervalTimer(std::uint32_t x);
void set_background_color(const rgba& color);
@@ -546,11 +546,11 @@ public:
/// This is a ptr_deque because it needs no insertion in the middle but
/// frequent push_back and pop_front. We also have to traverse it, so
/// a queue is not usable.
- typedef boost::array<boost::ptr_deque<ExecutableCode>, PRIORITY_SIZE>
+ typedef std::array<boost::ptr_deque<ExecutableCode>, PRIORITY_SIZE>
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);
@@ -635,7 +635,7 @@ public:
///
void loadMovie(const std::string& url, const std::string& target,
const std::string& data, MovieClip::VariablesMethod method,
- as_object* handler=0)
+ as_object* handler=nullptr)
{
_movieLoader.loadMovie(url, target, data, method, handler);
}
@@ -762,17 +762,17 @@ public:
/// The default value for this (i.e. when no
/// ScriptLimits tag is present) is documented to be
/// 15 to 20 seconds, depending on platform.
- void setScriptLimits(boost::uint16_t recursion, boost::uint16_t timeout);
+ void setScriptLimits(std::uint16_t recursion, std::uint16_t timeout);
/// Get the current global recursion limit for this movie: it can
/// be changed by loaded movies.
- boost::uint16_t getRecursionLimit() const {
+ std::uint16_t getRecursionLimit() const {
return _recursionLimit;
}
/// Get the current global script timeout limit for this movie: it
/// can be changed by loaded movies.
- boost::uint16_t getTimeoutLimit() const
+ std::uint16_t getTimeoutLimit() const
{
return _timeoutLimit;
}
@@ -897,8 +897,8 @@ private:
/// @param y
/// Y ordinate of the pointer, in world coordiante space (twips).
///
- InteractiveObject* getTopmostMouseEntity(boost::int32_t x,
- boost::int32_t y) const;
+ InteractiveObject* getTopmostMouseEntity(std::int32_t x,
+ std::int32_t y) const;
/// Delete DisplayObjects removed from the stage
/// from the display lists
@@ -943,12 +943,12 @@ private:
return (_processingActionLevel < PRIORITY_SIZE);
}
- const DisplayObject* findDropTarget(boost::int32_t x, boost::int32_t y,
+ const DisplayObject* findDropTarget(std::int32_t x, std::int32_t y,
DisplayObject* dragging) const;
void handleActionLimitHit(const std::string& ref);
- typedef std::list<Button*> ButtonListeners;
+ typedef std::forward_list<Button*> ButtonListeners;
ButtonListeners _buttonListeners;
GC _gc;
@@ -971,7 +971,7 @@ private:
/// ::advance of each element to insert new DisplayObjects before
/// the start w/out invalidating iterators scanning the
/// list forward for proper movie advancement
- typedef std::list<MovieClip*> LiveChars;
+ typedef std::forward_list<MovieClip*> LiveChars;
/// The list of advanceable DisplayObject, in placement order
LiveChars _liveChars;
@@ -988,8 +988,8 @@ private:
rgba m_background_color;
bool m_background_color_set;
- boost::int32_t _mouseX;
- boost::int32_t _mouseY;
+ std::int32_t _mouseX;
+ std::int32_t _mouseY;
MouseButtonState _mouseButtonState;
@@ -999,7 +999,7 @@ private:
LoadCallbacks _loadCallbacks;
- typedef std::map<boost::uint32_t, boost::shared_ptr<Timer> > TimerMap;
+ typedef std::map<std::uint32_t, std::unique_ptr<Timer>> TimerMap;
TimerMap _intervalTimers;
@@ -1068,10 +1068,10 @@ private:
DisplayState _displayState;
// Maximum number of recursions set in the ScriptLimits tag.
- boost::uint16_t _recursionLimit;
+ std::uint16_t _recursionLimit;
// Timeout in seconds for script execution, set in the ScriptLimits tag.
- boost::uint16_t _timeoutLimit;
+ std::uint16_t _timeoutLimit;
// delay between movie advancement, in milliseconds
size_t _movieAdvancementDelay;
diff --git a/libcore/parser/BitmapMovieDefinition.cpp b/libcore/parser/BitmapMovieDefinition.cpp
index 6a15034..69d8a03 100644
--- a/libcore/parser/BitmapMovieDefinition.cpp
+++ b/libcore/parser/BitmapMovieDefinition.cpp
@@ -39,16 +39,16 @@ BitmapMovieDefinition::createMovie(Global_as& gl, DisplayObject* parent)
}
BitmapMovieDefinition::BitmapMovieDefinition(
- std::auto_ptr<image::GnashImage> image,
- Renderer* renderer, const std::string& url)
+ std::unique_ptr<image::GnashImage> image,
+ Renderer* renderer, std::string url)
:
_version(6),
_framesize(0, 0, image->width()*20, image->height()*20),
_framecount(1),
_framerate(12),
- _url(url),
+ _url(std::move(url)),
_bytesTotal(image->size()),
- _bitmap(renderer ? renderer->createCachedBitmap(image) : 0)
+ _bitmap(renderer ? renderer->createCachedBitmap(std::move(image)) : nullptr)
{
}
@@ -57,7 +57,7 @@ BitmapMovieDefinition::createDisplayObject(Global_as& /*gl*/,
DisplayObject* /*parent*/) const
{
std::abort();
- return 0;
+ return nullptr;
}
} // namespace gnash
diff --git a/libcore/parser/BitmapMovieDefinition.h b/libcore/parser/BitmapMovieDefinition.h
index 7992626..1caddf3 100644
--- a/libcore/parser/BitmapMovieDefinition.h
+++ b/libcore/parser/BitmapMovieDefinition.h
@@ -58,8 +58,8 @@ public:
/// - image->size() bytes (for get_bytes_loaded()/get_bytes_total())
/// - provided url
///
- BitmapMovieDefinition(std::auto_ptr<image::GnashImage> image,
- Renderer* renderer, const std::string& url);
+ BitmapMovieDefinition(std::unique_ptr<image::GnashImage> image,
+ Renderer* renderer, std::string url);
virtual DisplayObject* createDisplayObject(Global_as&, DisplayObject*)
const;
@@ -106,7 +106,7 @@ public:
}
/// Create a playable Movie from this def.
- virtual Movie* createMovie(Global_as& gl, DisplayObject* parent = 0);
+ virtual Movie* createMovie(Global_as& gl, DisplayObject* parent = nullptr);
virtual const std::string& get_url() const {
return _url;
diff --git a/libcore/parser/SWFMovieDefinition.cpp b/libcore/parser/SWFMovieDefinition.cpp
index beebe69..442e51e 100644
--- a/libcore/parser/SWFMovieDefinition.cpp
+++ b/libcore/parser/SWFMovieDefinition.cpp
@@ -24,9 +24,10 @@
#include "SWFMovieDefinition.h"
-#include <boost/bind.hpp>
+#include <functional>
#include <boost/version.hpp>
-#include <boost/thread.hpp>
+#include <thread>
+#include <mutex>
#include <iomanip>
#include <memory>
#include <string>
@@ -71,10 +72,7 @@ namespace gnash
{
SWFMovieLoader::SWFMovieLoader(SWFMovieDefinition& md)
- :
- _movie_def(md),
- _thread(NULL),
- _barrier(2) // us and the main thread..
+ : _movie_def(md)
{
}
@@ -82,44 +80,30 @@ SWFMovieLoader::~SWFMovieLoader()
{
// we should assert _movie_def._loadingCanceled
// but we're not friend yet (anyone introduce us ?)
- if ( _thread.get() )
+ if ( _thread.joinable() )
{
//cout << "Joining thread.." << endl;
- _thread->join();
+ _thread.join();
}
}
bool
SWFMovieLoader::started() const
{
- boost::mutex::scoped_lock lock(_mutex);
+ std::lock_guard<std::mutex> lock(_mutex);
- return _thread.get() != NULL;
+ return _thread.joinable();
}
bool
SWFMovieLoader::isSelfThread() const
{
- boost::mutex::scoped_lock lock(_mutex);
+ std::lock_guard<std::mutex> lock(_mutex);
- if (!_thread.get()) {
+ if (!_thread.joinable()) {
return false;
}
-#if BOOST_VERSION < 103500
- boost::thread this_thread;
- return this_thread == *_thread;
-#else
- return boost::this_thread::get_id() == _thread->get_id();
-#endif
-
-}
-
-// static..
-void
-SWFMovieLoader::execute(SWFMovieLoader& ml, SWFMovieDefinition* md)
-{
- ml._barrier.wait(); // let _thread assignment happen before going on
- md->read_all_swf();
+ return std::this_thread::get_id() == _thread.get_id();
}
bool
@@ -129,15 +113,12 @@ SWFMovieLoader::start()
std::abort();
#endif
// don't start SWFMovieLoader thread() which rely
- // on boost::thread() returning before they are executed. Therefore,
+ // on std::thread() returning before they are executed. Therefore,
// we must employ locking.
// Those tests do seem a bit redundant, though...
- boost::mutex::scoped_lock lock(_mutex);
+ std::lock_guard<std::mutex> lock(_mutex);
- _thread.reset(new boost::thread(boost::bind(
- execute, boost::ref(*this), &_movie_def)));
-
- _barrier.wait(); // let execution start befor returning
+ _thread = std::thread(&SWFMovieDefinition::read_all_swf, &_movie_def);
return true;
}
@@ -157,7 +138,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),
@@ -169,22 +150,23 @@ SWFMovieDefinition::SWFMovieDefinition(const RunResources& runResources)
SWFMovieDefinition::~SWFMovieDefinition()
{
// Request cancellation of the loading thread
+ std::lock_guard<std::mutex> lock(_loadingCanceledMutex);
_loadingCanceled = true;
}
void
-SWFMovieDefinition::addDisplayObject(boost::uint16_t id, SWF::DefinitionTag* c)
+SWFMovieDefinition::addDisplayObject(std::uint16_t id, SWF::DefinitionTag* c)
{
assert(c);
- boost::mutex::scoped_lock lock(_dictionaryMutex);
+ std::lock_guard<std::mutex> lock(_dictionaryMutex);
_dictionary.addDisplayObject(id, c);
addControlTag(c);
}
SWF::DefinitionTag*
-SWFMovieDefinition::getDefinitionTag(boost::uint16_t id) const
+SWFMovieDefinition::getDefinitionTag(std::uint16_t id) const
{
- boost::mutex::scoped_lock lock(_dictionaryMutex);
+ std::lock_guard<std::mutex> lock(_dictionaryMutex);
boost::intrusive_ptr<SWF::DefinitionTag> ch =
_dictionary.getDisplayObject(id);
return ch.get();
@@ -202,7 +184,7 @@ SWFMovieDefinition::get_font(int font_id) const
{
FontMap::const_iterator it = m_fonts.find(font_id);
- if ( it == m_fonts.end() ) return NULL;
+ if ( it == m_fonts.end() ) return nullptr;
boost::intrusive_ptr<Font> f = it->second;
assert(f->get_ref_count() > 1);
return f.get();
@@ -213,19 +195,19 @@ SWFMovieDefinition::get_font(const std::string& name, bool bold, bool italic)
const
{
- for (FontMap::const_iterator it=m_fonts.begin(), itEnd=m_fonts.end(); it != itEnd; ++it)
+ for (const auto& elem : m_fonts)
{
- Font* f = it->second.get();
+ Font* f = elem.second.get();
if ( f->matches(name, bold, italic) ) return f;
}
- return 0;
+ return nullptr;
}
CachedBitmap*
SWFMovieDefinition::getBitmap(int id) const
{
const Bitmaps::const_iterator it = _bitmaps.find(id);
- if (it == _bitmaps.end()) return 0;
+ if (it == _bitmaps.end()) return nullptr;
return it->second.get();
}
@@ -240,7 +222,7 @@ sound_sample*
SWFMovieDefinition::get_sound_sample(int id) const
{
SoundSampleMap::const_iterator it = m_sound_samples.find(id);
- if (it == m_sound_samples.end()) return 0;
+ if (it == m_sound_samples.end()) return nullptr;
boost::intrusive_ptr<sound_sample> ch = it->second;
@@ -261,19 +243,19 @@ 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());
_url = url.empty() ? "<anonymous>" : url;
- boost::uint32_t file_start_pos = _in->tell();
- boost::uint32_t header = _in->read_le32();
+ std::uint32_t file_start_pos = _in->tell();
+ std::uint32_t header = _in->read_le32();
m_file_length = _in->read_le32();
_swf_end_pos = file_start_pos + m_file_length;
@@ -302,7 +284,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
}
@@ -324,7 +306,7 @@ SWFMovieDefinition::readHeader(std::auto_ptr<IOChannel> in,
_str->ensureBytes(2 + 2); // frame rate, frame count.
m_frame_rate = _str->read_u16() / 256.0f;
if (!m_frame_rate) {
- m_frame_rate = std::numeric_limits<boost::uint16_t>::max();
+ m_frame_rate = std::numeric_limits<std::uint16_t>::max();
}
m_frame_count = _str->read_u16();
@@ -378,20 +360,26 @@ SWFMovieDefinition::completeLoad()
bool
SWFMovieDefinition::ensure_frame_loaded(size_t framenum) const
{
- boost::mutex::scoped_lock lock(_frames_loaded_mutex);
-
#ifndef LOAD_MOVIES_IN_A_SEPARATE_THREAD
- return (framenum <= _frames_loaded);
+ return (framenum <= _frames_loaded.load());
#endif
-
- if ( framenum <= _frames_loaded ) return true;
+ if ( framenum <= _frames_loaded.load() ) {
+ return true;
+ }
_waiting_for_frame = framenum;
+ std::unique_lock<std::mutex> lock(_loadingCanceledMutex);
+
// TODO: return false on timeout
- _frame_reached_condition.wait(lock);
- return ( framenum <= _frames_loaded );
+ // Make sure we don't wait here if the frame has been loaded, or the
+ // loading thread has finished.
+ _frame_reached_condition.wait(lock, [&] () {
+ return framenum <= _frames_loaded.load() || _loadingCanceled;
+ });
+
+ return ( framenum <= _frames_loaded.load() );
}
Movie*
@@ -410,12 +398,11 @@ std::ostream&
operator<<(std::ostream& o, const CharacterDictionary& cd)
{
- for (CharacterDictionary::CharacterConstIterator it = cd.begin(),
- endIt = cd.end(); it != endIt; ++it)
+ for (const auto& elem : cd)
{
o << std::endl
- << "Character: " << it->first
- << " at address: " << static_cast<void*>(it->second.get());
+ << "Character: " << elem.first
+ << " at address: " << static_cast<void*>(elem.second.get());
}
return o;
@@ -469,13 +456,16 @@ SWFMovieDefinition::read_all_swf()
try {
while (left) {
- if (_loadingCanceled) {
- log_debug("Loading thread cancellation requested, "
- "returning from read_all_swf");
- return;
+ {
+ std::lock_guard<std::mutex> lock(_loadingCanceledMutex);
+ if (_loadingCanceled) {
+ log_debug("Loading thread cancellation requested, "
+ "returning from read_all_swf");
+ return;
+ }
}
if (!parser.read(std::min<size_t>(left, chunkSize))) break;
-
+
left -= parser.bytesRead();
setBytesLoaded(startPos + parser.bytesRead());
}
@@ -511,45 +501,45 @@ SWFMovieDefinition::read_all_swf()
"SHOWFRAME tags found in stream. Pretending we loaded "
"all advertised frames"), m_frame_count, floaded);
);
- boost::mutex::scoped_lock lock(_frames_loaded_mutex);
_frames_loaded = m_frame_count;
// Notify any thread waiting on frame reached condition
- _frame_reached_condition.notify_all();
}
+ {
+ std::lock_guard<std::mutex> lock(_loadingCanceledMutex);
+ _loadingCanceled = true;
+ }
+ _frame_reached_condition.notify_all();
}
size_t
SWFMovieDefinition::get_loading_frame() const
{
- boost::mutex::scoped_lock lock(_frames_loaded_mutex);
- return _frames_loaded;
+ return _frames_loaded.load();
}
void
SWFMovieDefinition::incrementLoadedFrames()
{
- boost::mutex::scoped_lock lock(_frames_loaded_mutex);
-
++_frames_loaded;
- if ( _frames_loaded > m_frame_count )
+ if ( _frames_loaded.load() > m_frame_count )
{
IF_VERBOSE_MALFORMED_SWF(
log_swferror(_("number of SHOWFRAME tags "
"in SWF stream '%s' (%d) exceeds "
"the advertised number in header (%d)."),
- get_url(), _frames_loaded,
+ get_url(), _frames_loaded.load(),
m_frame_count);
)
}
#ifdef DEBUG_FRAMES_LOAD
- log_debug("Loaded frame %u/%u", _frames_loaded, m_frame_count);
+ log_debug("Loaded frame %u/%u", _frames_loaded.load(), m_frame_count);
#endif
// signal load of frame if anyone requested it
// FIXME: _waiting_for_frame needs mutex ?
- if (_waiting_for_frame && _frames_loaded >= _waiting_for_frame )
+ if (_frames_loaded.load() >= _waiting_for_frame.load() )
{
// or should we notify_one ?
// See: http://boost.org/doc/html/condition.html
@@ -560,11 +550,11 @@ SWFMovieDefinition::incrementLoadedFrames()
void
SWFMovieDefinition::registerExport(const std::string& symbol,
- boost::uint16_t id)
+ std::uint16_t id)
{
assert(id);
- boost::mutex::scoped_lock lock(_exportedResourcesMutex);
+ std::lock_guard<std::mutex> lock(_exportedResourcesMutex);
#ifdef DEBUG_EXPORTS
log_debug("%s registering export %s, %s", get_url(), symbol, id);
#endif
@@ -575,17 +565,16 @@ SWFMovieDefinition::registerExport(const std::string& symbol,
void
SWFMovieDefinition::add_frame_name(const std::string& n)
{
- boost::mutex::scoped_lock lock1(_namedFramesMutex);
- boost::mutex::scoped_lock lock2(_frames_loaded_mutex);
+ std::lock_guard<std::mutex> lock1(_namedFramesMutex);
- _namedFrames.insert(std::make_pair(n, _frames_loaded));
+ _namedFrames.insert(std::make_pair(n, _frames_loaded.load()));
}
bool
SWFMovieDefinition::get_labeled_frame(const std::string& label,
size_t& frame_number) const
{
- boost::mutex::scoped_lock lock(_namedFramesMutex);
+ std::lock_guard<std::mutex> lock(_namedFramesMutex);
NamedFrameMap::const_iterator it = _namedFrames.find(label);
if (it == _namedFrames.end()) return false;
frame_number = it->second;
@@ -593,7 +582,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,13 +595,13 @@ 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
+std::uint16_t
SWFMovieDefinition::exportID(const std::string& symbol) const
{
- boost::mutex::scoped_lock lock(_exportedResourcesMutex);
+ std::lock_guard<std::mutex> lock(_exportedResourcesMutex);
Exports::const_iterator it = _exportTable.find(symbol);
return (it == _exportTable.end()) ? 0 : it->second;
}
@@ -626,8 +615,7 @@ SWFMovieDefinition::importResources(
// Mutex scope.
- for (Imports::const_iterator i = imports.begin(), e = imports.end(); i != e;
- ++i) {
+ for (const auto& import : imports) {
size_t new_loading_frame = source->get_loading_frame();
@@ -641,14 +629,14 @@ SWFMovieDefinition::importResources(
size_t timeout = def_timeout;
size_t loading_frame = (size_t)-1; // used to keep track of advancements
- const int id = i->first;
- const std::string& symbolName = i->second;
+ const int id = import.first;
+ const std::string& symbolName = import.second;
#ifdef DEBUG_EXPORTS
log_debug("%s importing %s from %s", get_url(), symbolName,
source->get_url());
#endif
- boost::uint16_t targetID;
+ std::uint16_t targetID;
while(!(targetID = source->exportID(symbolName))) {
diff --git a/libcore/parser/SWFMovieDefinition.h b/libcore/parser/SWFMovieDefinition.h
index 94f85e8..f9aa5a9 100644
--- a/libcore/parser/SWFMovieDefinition.h
+++ b/libcore/parser/SWFMovieDefinition.h
@@ -28,18 +28,18 @@
#endif
#include <boost/intrusive_ptr.hpp>
+
+#include <atomic>
#include <vector>
#include <map>
#include <set>
#include <string>
#include <memory>
-#include <boost/thread/thread.hpp>
-#include <boost/thread/condition.hpp>
-#include <boost/thread/barrier.hpp>
-#include <boost/scoped_ptr.hpp>
+#include <mutex>
+#include <thread>
+#include <condition_variable>
#include "movie_definition.h" // for inheritance
-#include "DefinitionTag.h" // for boost::intrusive_ptr visibility of dtor
#include "StringPredicates.h"
#include "SWFRect.h"
#include "GnashNumeric.h"
@@ -58,6 +58,9 @@ namespace gnash {
class SWFMovie;
class RunResources;
class Font;
+ namespace SWF {
+ class DefinitionTag;
+ }
}
namespace gnash {
@@ -89,17 +92,8 @@ private:
SWFMovieDefinition& _movie_def;
- mutable boost::mutex _mutex;
- std::auto_ptr<boost::thread> _thread;
-
- // Barrier to ensure that _thread
- // is initialized before the loader thread
- // continues execution
- boost::barrier _barrier;
-
- /// Entry point for the actual thread
- static void execute(SWFMovieLoader& ml, SWFMovieDefinition* md);
-
+ mutable std::mutex _mutex;
+ std::thread _thread;
};
/// The Characters dictionary associated with each SWF file.
@@ -203,7 +197,7 @@ public:
/// Check whether tags should be executed using AVM2
bool isAS3() const {
- return _as3;
+ return _as3.load();
}
/// Return the advertised version for the SWFMovie.
@@ -219,17 +213,11 @@ public:
/// except when parsing finishes, in which case
/// it an index to on-past-last frame.
///
- /// NOTE: this method locks _frames_loaded_mutex
- ///
virtual size_t get_loading_frame() const;
/// Get number of bytes loaded from input stream
- //
- /// NOTE: this method locks _bytes_loaded_mutex
- ///
size_t get_bytes_loaded() const {
- boost::mutex::scoped_lock lock(_bytes_loaded_mutex);
- return _bytes_loaded;
+ return _bytes_loaded.load();
}
/// Get total number of bytes as parsed from the SWF header
@@ -240,10 +228,10 @@ public:
DSOTEXPORT virtual void importResources(boost::intrusive_ptr<movie_definition> source,
const Imports& imports);
- virtual void addDisplayObject(boost::uint16_t id, SWF::DefinitionTag* c);
+ virtual void addDisplayObject(std::uint16_t id, SWF::DefinitionTag* c);
/// Return a DisplayObject from the dictionary
- DSOTEXPORT SWF::DefinitionTag* getDefinitionTag(boost::uint16_t id) const;
+ DSOTEXPORT SWF::DefinitionTag* getDefinitionTag(std::uint16_t id) const;
// See dox in movie_definition
//
@@ -282,19 +270,19 @@ public:
// See dox in movie_definition.h
void addControlTag(boost::intrusive_ptr<SWF::ControlTag> tag) {
assert(tag);
- boost::mutex::scoped_lock lock(_frames_loaded_mutex);
- m_playlist[_frames_loaded].push_back(tag);
+ size_t frames_loaded = get_loading_frame();
+ m_playlist[frames_loaded].push_back(tag);
}
// See dox in movie_definition.h
//
- // locks _namedFramesMutex and _frames_loaded_mutex
+ // locks _namedFramesMutex
//
DSOTEXPORT void add_frame_name(const std::string& name);
/// 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 {
@@ -304,12 +292,11 @@ public:
virtual const PlayList* getPlaylist(size_t frame_number) const {
#ifndef NDEBUG
- boost::mutex::scoped_lock lock(_frames_loaded_mutex);
- assert(frame_number <= _frames_loaded);
+ assert(frame_number <= _frames_loaded.load());
#endif
PlayListMap::const_iterator it = m_playlist.find(frame_number);
- if ( it == m_playlist.end() ) return NULL;
+ if ( it == m_playlist.end() ) return nullptr;
else return &(it->second);
}
@@ -322,7 +309,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
//
@@ -355,11 +342,11 @@ public:
/// TOCHECK:
/// The _root reference of the newly created movie_root
/// will be set to a newly created Movie.
- Movie* createMovie(Global_as& gl, DisplayObject* parent = 0);
+ Movie* createMovie(Global_as& gl, DisplayObject* parent = nullptr);
virtual DisplayObject* createDisplayObject(Global_as&, DisplayObject*)
const {
- return 0;
+ return nullptr;
}
virtual const std::string& get_url() const { return _url; }
@@ -372,7 +359,7 @@ public:
/// @return The id corresponding to the passed symbol. 0 is not a
/// valid id and signifies that the symbol was not (yet)
/// exported.
- boost::uint16_t exportID(const std::string& symbol) const;
+ std::uint16_t exportID(const std::string& symbol) const;
/// Register a symbol to refer to a character id
//
@@ -381,7 +368,7 @@ public:
/// @param id The id of the character to map to the symbol. NB: this
/// must never be 0!
/// @param symbol The symbol to map to the id.
- void registerExport(const std::string& symbol, boost::uint16_t id);
+ void registerExport(const std::string& symbol, std::uint16_t id);
#ifdef USE_SWFTREE
@@ -409,7 +396,7 @@ private:
CharacterDictionary _dictionary;
/// Mutex protecting _dictionary
- mutable boost::mutex _dictionaryMutex;
+ mutable std::mutex _dictionaryMutex;
typedef std::map<int, boost::intrusive_ptr<Font> > FontMap;
FontMap m_fonts;
@@ -430,17 +417,17 @@ private:
NamedFrameMap _namedFrames;
// Mutex protecting access to _namedFrames
- mutable boost::mutex _namedFramesMutex;
+ mutable std::mutex _namedFramesMutex;
/// Allow mapping symbol to id case insensitively.
- typedef std::map<std::string, boost::uint16_t,
+ typedef std::map<std::string, std::uint16_t,
StringNoCaseLessThan> Exports;
/// A map of symbol to character id.
Exports _exportTable;
// Mutex protecting access to the export map.
- mutable boost::mutex _exportedResourcesMutex;
+ mutable std::mutex _exportedResourcesMutex;
/// Movies we import from; hold a ref on these,
/// to keep them alive
@@ -453,48 +440,33 @@ private:
int m_version;
/// Number of fully loaded frames
- size_t _frames_loaded;
-
- /// A mutex protecting access to _frames_loaded
- //
- /// This is needed because the loader thread will
- /// increment this number, while the virtual machine
- /// thread will read it.
- mutable boost::mutex _frames_loaded_mutex;
+ std::atomic<size_t> _frames_loaded;
/// A semaphore to signal load of a specific frame
- mutable boost::condition _frame_reached_condition;
+ mutable std::condition_variable _frame_reached_condition;
/// Set this to trigger signaling of loaded frame
- //
- /// Make sure you _frames_loaded_mutex is locked
- /// when accessing this member !
- mutable size_t _waiting_for_frame;
+ mutable std::atomic<size_t> _waiting_for_frame;
/// Number bytes loaded / parsed
- unsigned long _bytes_loaded;
-
- /// A mutex protecting access to _bytes_loaded
- //
- /// This is needed because the loader thread will
- /// increment this number, while the virtual machine
- /// thread will read it.
- mutable boost::mutex _bytes_loaded_mutex;
+ std::atomic<unsigned long> _bytes_loaded;
int m_loading_sound_stream;
- boost::uint32_t m_file_length;
+ std::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::unique_ptr<SWFStream> _str;
- std::auto_ptr<IOChannel> _in;
+ std::unique_ptr<IOChannel> _in;
/// swf end position (as read from header)
+ // This is set by readHeader, and used in the parsing thread, which starts
+ // after readHeader() runs.
size_t _swf_end_pos;
/// asyncronous SWF loader and parser
@@ -503,22 +475,16 @@ private:
/// \brief
/// Increment loaded frames count, signaling frame reached condition if
/// any thread is waiting for that. See ensure_frame_loaded().
- ///
- /// NOTE: this method locks _frames_loaded_mutex
- ///
- /// @return the new value of _frames_loaded
DSOTEXPORT virtual void incrementLoadedFrames();
/// Set number of bytes loaded from input stream
- //
- /// NOTE: this method locks _bytes_loaded_mutex
void setBytesLoaded(unsigned long bytes)
{
- boost::mutex::scoped_lock lock(_bytes_loaded_mutex);
_bytes_loaded=bytes;
}
/// A flag set to true when load cancellation is requested
+ mutable std::mutex _loadingCanceledMutex;
bool _loadingCanceled;
/// Movies we import resources from
@@ -534,7 +500,7 @@ private:
/// movie_root with the same RunResources as its first definition.
const RunResources& _runResources;
- bool _as3;
+ std::atomic<bool> _as3;
};
diff --git a/libcore/parser/SWFParser.cpp b/libcore/parser/SWFParser.cpp
index d897efd..ecf689f 100644
--- a/libcore/parser/SWFParser.cpp
+++ b/libcore/parser/SWFParser.cpp
@@ -83,7 +83,7 @@ SWFParser::read(std::streamsize bytes)
return false;
}
- SWF::TagLoadersTable::TagLoader lf = 0;
+ SWF::TagLoadersTable::TagLoader lf = nullptr;
if (_tag == SWF::SHOWFRAME) {
// show frame tag -- advance to the next frame.
diff --git a/libcore/parser/SWFParser.h b/libcore/parser/SWFParser.h
index c7b50ac..b360b9d 100644
--- a/libcore/parser/SWFParser.h
+++ b/libcore/parser/SWFParser.h
@@ -59,7 +59,8 @@ public:
_bytesRead(0),
_tagOpen(false),
_endRead(0),
- _nextTagEnd(0)
+ _nextTagEnd(0),
+ _tag(SWF::END) // Initialized to zero to have a well known value
{
}
diff --git a/libcore/parser/TypesParser.cpp b/libcore/parser/TypesParser.cpp
index 15faccd..0e14efc 100644
--- a/libcore/parser/TypesParser.cpp
+++ b/libcore/parser/TypesParser.cpp
@@ -53,33 +53,36 @@ readSWFMatrix(SWFStream& in)
in.ensureBits(1);
const bool has_scale = in.read_bit();
- boost::int32_t sx = 65536;
- boost::int32_t sy = 65536;
+ std::int32_t sx = 65536;
+ std::int32_t sy = 65536;
if (has_scale) {
in.ensureBits(5);
- const boost::uint8_t scale_nbits = in.read_uint(5);
- in.ensureBits(scale_nbits * 2);
- sx = in.read_sint(scale_nbits);
- sy = in.read_sint(scale_nbits);
+ const std::uint8_t scale_nbits = in.read_uint(5);
+ if (scale_nbits) {
+ in.ensureBits(scale_nbits * 2);
+ sx = in.read_sint(scale_nbits);
+ sy = in.read_sint(scale_nbits);
+ }
}
in.ensureBits(1);
const bool has_rotate = in.read_bit();
- boost::int32_t shx = 0;
- boost::int32_t shy = 0;
+ std::int32_t shx = 0;
+ std::int32_t shy = 0;
if (has_rotate) {
in.ensureBits(5);
- int rotate_nbits = in.read_uint(5);
-
- in.ensureBits(rotate_nbits * 2);
- shx = in.read_sint(rotate_nbits);
- shy = in.read_sint(rotate_nbits);
+ unsigned int rotate_nbits = in.read_uint(5);
+ if (rotate_nbits) {
+ in.ensureBits(rotate_nbits * 2);
+ shx = in.read_sint(rotate_nbits);
+ shy = in.read_sint(rotate_nbits);
+ }
}
in.ensureBits(5);
- const boost::uint8_t translate_nbits = in.read_uint(5);
- boost::int32_t tx = 0;
- boost::int32_t ty = 0;
+ const std::uint8_t translate_nbits = in.read_uint(5);
+ std::int32_t tx = 0;
+ std::int32_t ty = 0;
if (translate_nbits) {
in.ensureBits(translate_nbits * 2);
tx = in.read_sint(translate_nbits);
@@ -92,10 +95,10 @@ rgba
readRGBA(SWFStream& in)
{
in.ensureBytes(4);
- const boost::uint8_t r = in.read_u8();
- const boost::uint8_t g = in.read_u8();
- const boost::uint8_t b = in.read_u8();
- const boost::uint8_t a = in.read_u8();
+ const std::uint8_t r = in.read_u8();
+ const std::uint8_t g = in.read_u8();
+ const std::uint8_t b = in.read_u8();
+ const std::uint8_t a = in.read_u8();
return rgba(r, g, b, a);
}
@@ -103,10 +106,10 @@ rgba
readRGB(SWFStream& in)
{
in.ensureBytes(3);
- const boost::uint8_t r = in.read_u8();
- const boost::uint8_t g = in.read_u8();
- const boost::uint8_t b = in.read_u8();
- const boost::uint8_t a = 0xff;
+ const std::uint8_t r = in.read_u8();
+ const std::uint8_t g = in.read_u8();
+ const std::uint8_t b = in.read_u8();
+ const std::uint8_t a = 0xff;
return rgba(r, g, b, a);
}
@@ -129,12 +132,16 @@ readRect(SWFStream& in)
in.align();
in.ensureBits(5);
const int nbits = in.read_uint(5);
- in.ensureBits(nbits*4);
+
+ int minx = 0, maxx = 0, miny = 0, maxy = 0;
- const int minx = in.read_sint(nbits);
- const int maxx = in.read_sint(nbits);
- const int miny = in.read_sint(nbits);
- const int maxy = in.read_sint(nbits);
+ if (nbits > 0) {
+ in.ensureBits(nbits*4);
+ minx = in.read_sint(nbits);
+ maxx = in.read_sint(nbits);
+ miny = in.read_sint(nbits);
+ maxy = in.read_sint(nbits);
+ }
// Check if this SWFRect is valid.
if (maxx < minx || maxy < miny) {
@@ -200,9 +207,9 @@ readFills(SWFStream& in, SWF::TagType t, movie_definition& md, bool readMorph)
}
in.ensureBytes(1);
- const boost::uint8_t grad_props = in.read_u8();
+ const std::uint8_t grad_props = in.read_u8();
- const boost::uint8_t num_gradients = grad_props & 0xF;
+ const std::uint8_t num_gradients = grad_props & 0xF;
IF_VERBOSE_PARSE(
log_parse(_(" gradients count: %d"), +num_gradients);
);
@@ -317,10 +324,10 @@ readCxFormRGB(SWFStream& in)
in.align();
in.ensureBits(6);
- const boost::uint8_t field = in.read_uint(6);
+ const std::uint8_t field = in.read_uint(6);
const bool has_add = field & (1 << 5);
const bool has_mult = field & (1 << 4);
- const boost::uint8_t nbits = field & 0x0f;
+ const std::uint8_t nbits = field & 0x0f;
const size_t reads = has_mult + has_add; // 0, 1 or 2
SWFCxForm ret;
@@ -349,10 +356,10 @@ readCxFormRGBA(SWFStream& in)
in.align();
in.ensureBits(6);
- const boost::uint8_t field = in.read_uint(6);
+ const std::uint8_t field = in.read_uint(6);
const bool has_add = field & (1 << 5);
const bool has_mult = field & (1 << 4);
- const boost::uint8_t nbits = field & 0x0f;
+ const std::uint8_t nbits = field & 0x0f;
const size_t reads = has_mult + has_add; // 0, 1 or 2
SWFCxForm ret;
@@ -416,7 +423,7 @@ readBitmapFill(SWFStream& in, SWF::FillType type, movie_definition& md,
{
in.ensureBytes(2);
- const boost::uint16_t id = in.read_u16();
+ const std::uint16_t id = in.read_u16();
SWFMatrix m = readSWFMatrix(in).invert();
@@ -435,7 +442,7 @@ GradientRecord
readGradientRecord(SWFStream& in, SWF::TagType tag)
{
in.ensureBytes(1);
- const boost::uint8_t ratio = in.read_u8();
+ const std::uint8_t ratio = in.read_u8();
switch (tag) {
case SWF::DEFINESHAPE:
diff --git a/libcore/parser/action_buffer.cpp b/libcore/parser/action_buffer.cpp
index 23ddab2..021f41e 100644
--- a/libcore/parser/action_buffer.cpp
+++ b/libcore/parser/action_buffer.cpp
@@ -22,7 +22,6 @@
#include <string>
#include <cstring> // for memcpy
-#include <boost/static_assert.hpp>
#include "log.h"
#include "SWFStream.h"
@@ -112,8 +111,8 @@ action_buffer::readConstantPool(size_t start_pc, size_t stop_pc) const
ConstantPool& pool = _pools[start_pc];
size_t i = start_pc;
- const boost::uint16_t length = read_uint16(i + 1);
- const boost::uint16_t count = read_uint16(i + 3);
+ const std::uint16_t length = read_uint16(i + 1);
+ const std::uint16_t count = read_uint16(i + 3);
i += 2;
assert(start_pc + 3 + length == stop_pc);
@@ -301,8 +300,8 @@ disasm_instruction(const unsigned char* instruction_data,
case 7:
{
- // boost::int32_t
- boost::int32_t val = instruction_data[3 + i]
+ // std::int32_t
+ std::int32_t val = instruction_data[3 + i]
| (instruction_data[3 + i + 1] << 8)
| (instruction_data[3 + i + 2] << 16)
| (instruction_data[3 + i + 3] << 24);
@@ -373,17 +372,17 @@ disasm_instruction(const unsigned char* instruction_data,
if (i + 6 > length) break;
++i;
- boost::uint16_t argCount = instruction_data[3 + i] | (instruction_data[3 + i + 1] << 8);
+ std::uint16_t argCount = instruction_data[3 + i] | (instruction_data[3 + i + 1] << 8);
i += 2;
- boost::uint8_t registerCount = instruction_data[3 + i];
+ std::uint8_t registerCount = instruction_data[3 + i];
i++;
ss << "\tname = '" << functionName << "'"
<< " arg count = " << argCount
<< " register count = " << static_cast<int>(registerCount);
- const boost::uint16_t flags =
+ const std::uint16_t flags =
(instruction_data[3 + i]) |
(instruction_data[3 + i + 1] << 8);
@@ -505,16 +504,16 @@ convert_float_little(const void *p)
// Hairy union for endian detection and munging
union {
float f;
- boost::uint32_t i;
+ std::uint32_t i;
struct { // for endian detection
- boost::uint16_t s0;
- boost::uint16_t s1;
+ std::uint16_t s0;
+ std::uint16_t s1;
} s;
struct { // for byte-swapping
- boost::uint8_t c0;
- boost::uint8_t c1;
- boost::uint8_t c2;
- boost::uint8_t c3;
+ std::uint8_t c0;
+ std::uint8_t c1;
+ std::uint8_t c2;
+ std::uint8_t c3;
} c;
} u;
@@ -526,7 +525,7 @@ convert_float_little(const void *p)
break;
case 0x3f80: // big-endian host
{
- const boost::uint8_t *cp = static_cast<const boost::uint8_t*>(p);
+ const std::uint8_t *cp = static_cast<const std::uint8_t*>(p);
u.c.c0 = cp[3];
u.c.c1 = cp[2];
u.c.c2 = cp[1];
@@ -548,33 +547,33 @@ convert_float_little(const void *p)
double
convert_double_wacky(const void *p)
{
- const boost::uint8_t *cp = static_cast<const boost::uint8_t*>(p);
+ const std::uint8_t *cp = static_cast<const std::uint8_t*>(p);
union {
double d;
- boost::uint64_t i;
+ std::uint64_t i;
struct {
- boost::uint32_t l0;
- boost::uint32_t l1;
+ std::uint32_t l0;
+ std::uint32_t l1;
} l;
struct {
- boost::uint16_t s0;
- boost::uint16_t s1;
- boost::uint16_t s2;
- boost::uint16_t s3;
+ std::uint16_t s0;
+ std::uint16_t s1;
+ std::uint16_t s2;
+ std::uint16_t s3;
} s;
struct {
- boost::uint8_t c0;
- boost::uint8_t c1;
- boost::uint8_t c2;
- boost::uint8_t c3;
- boost::uint8_t c4;
- boost::uint8_t c5;
- boost::uint8_t c6;
- boost::uint8_t c7;
+ std::uint8_t c0;
+ std::uint8_t c1;
+ std::uint8_t c2;
+ std::uint8_t c3;
+ std::uint8_t c4;
+ std::uint8_t c5;
+ std::uint8_t c6;
+ std::uint8_t c7;
} c;
} u;
- BOOST_STATIC_ASSERT(sizeof(u) == sizeof(u.i)) __attribute__((unused));
+ static_assert(sizeof(u) == sizeof(u.i), "u must be 8 bytes");
// Detect endianness of doubles by storing a value that is
// exactly representable and that has different values in the
diff --git a/libcore/parser/action_buffer.h b/libcore/parser/action_buffer.h
index 4cdd729..6ebd125 100644
--- a/libcore/parser/action_buffer.h
+++ b/libcore/parser/action_buffer.h
@@ -23,7 +23,7 @@
#include <vector>
#include <map>
#include <boost/noncopyable.hpp>
-#include <boost/cstdint.hpp>
+#include <cstdint>
#include "GnashException.h"
#include "ConstantPool.h"
@@ -64,7 +64,7 @@ public:
size_t size() const { return m_buffer.size(); }
- boost::uint8_t operator[] (size_t off) const
+ std::uint8_t operator[] (size_t off) const
{
if (off >= m_buffer.size()) {
throw ActionParserException (_("Attempt to read outside "
@@ -102,33 +102,33 @@ public:
//
/// Useful to hide complexity of underlying buffer access.
///
- boost::int16_t read_int16(size_t pc) const
+ std::int16_t read_int16(size_t pc) const
{
if (pc + 1 >= m_buffer.size()) {
throw ActionParserException(_("Attempt to read outside action buffer limits"));
}
- boost::int16_t ret = (m_buffer[pc] | (m_buffer[pc + 1] << 8));
+ std::int16_t ret = (m_buffer[pc] | (m_buffer[pc + 1] << 8));
return ret;
}
/// Get an unsigned short integer value from given offset
/// read_int16 should check buffer boundaries.
- boost::uint16_t read_uint16(size_t pc) const
+ std::uint16_t read_uint16(size_t pc) const
{
- return static_cast<boost::uint16_t>(read_int16(pc));
+ return static_cast<std::uint16_t>(read_int16(pc));
}
/// Read a 32-bit integer starting at given offset.
//
/// Useful to hide complexity of underlying buffer access.
///
- boost::int32_t read_int32(size_t pc) const
+ std::int32_t read_int32(size_t pc) const
{
if (pc + 3 >= m_buffer.size()) {
throw ActionParserException(_("Attempt to read outside action buffer limits"));
}
- boost::int32_t val = m_buffer[pc]
+ std::int32_t val = m_buffer[pc]
| (m_buffer[pc + 1] << 8)
| (m_buffer[pc + 2] << 16)
| (m_buffer[pc + 3] << 24);
@@ -151,14 +151,14 @@ public:
/// Return a value from the constant pool
const char* dictionary_get(size_t n) const
{
- if ( _pools.empty() ) return 0;
+ if ( _pools.empty() ) return nullptr;
// We'll query the last inserted one for now (highest PC)
const ConstantPool& pool = _pools.rbegin()->second;
if ( n < pool.size() ) return pool[n];
- else return 0;
+ else return nullptr;
}
/// Read an SWF::ACTION_CONSTANTPOOL opcode and return as a dictionary
@@ -189,7 +189,7 @@ public:
private:
/// the code itself, as read from the SWF
- std::vector<boost::uint8_t> m_buffer;
+ std::vector<std::uint8_t> m_buffer;
/// The set of ConstantPools found in this action_buffer
typedef std::map<size_t, ConstantPool> PoolsMap;
diff --git a/libcore/parser/filter_factory.cpp b/libcore/parser/filter_factory.cpp
index c7eb8bb..b17640c 100644
--- a/libcore/parser/filter_factory.cpp
+++ b/libcore/parser/filter_factory.cpp
@@ -56,7 +56,7 @@ filter_factory::read(SWFStream& in, bool read_multiple, Filters* store)
for (int i = 0; i < count; ++i)
{
- BitmapFilter *the_filter = NULL;
+ BitmapFilter *the_filter = nullptr;
in.ensureBytes(1);
filter_types filter_type = static_cast<filter_types> (in.read_u8());
@@ -95,7 +95,7 @@ filter_factory::read(SWFStream& in, bool read_multiple, Filters* store)
}
// Protect against exceptions and such by storing before we read.
- boost::shared_ptr<BitmapFilter> p(the_filter);
+ std::unique_ptr<BitmapFilter> p(the_filter);
if (!p->read(in))
{
IF_VERBOSE_MALFORMED_SWF(
@@ -103,7 +103,7 @@ filter_factory::read(SWFStream& in, bool read_multiple, Filters* store)
);
return i; // We're already broken.
}
- store->push_back(p);
+ store->emplace_back(std::move(p));
}
return count;
@@ -145,7 +145,7 @@ bool BlurFilter::read(SWFStream& in)
m_blurX = in.read_ufixed();
m_blurY = in.read_ufixed();
- m_quality = static_cast<boost::uint8_t> (in.read_uint(5));
+ m_quality = static_cast<std::uint8_t> (in.read_uint(5));
static_cast<void> (in.read_uint(3)); // Throw these away.
@@ -225,7 +225,7 @@ bool GradientGlowFilter::read(SWFStream& in)
{
in.ensureBytes(1);
- boost::uint8_t count = in.read_u8(); // How many colorings.
+ std::uint8_t count = in.read_u8(); // How many colorings.
m_colors.reserve(count);
m_alphas.reserve(count);
@@ -259,7 +259,7 @@ bool GradientGlowFilter::read(SWFStream& in)
m_type = outer ? (inner ? FULL_GLOW : OUTER_GLOW) : INNER_GLOW;
- m_quality = static_cast<boost::uint8_t> (in.read_uint(4));
+ m_quality = static_cast<std::uint8_t> (in.read_uint(4));
IF_VERBOSE_PARSE(
log_parse(_(" GradientGlowFilter "));
@@ -336,7 +336,7 @@ bool ColorMatrixFilter::read(SWFStream& in)
bool GradientBevelFilter::read(SWFStream& in)
{
in.ensureBytes(1);
- boost::uint8_t count = in.read_u8(); // How many colorings.
+ std::uint8_t count = in.read_u8(); // How many colorings.
in.ensureBytes(count*5 + 8 + 8 + 2 + 1);
@@ -369,7 +369,7 @@ bool GradientBevelFilter::read(SWFStream& in)
m_type = outer ? (inner ? FULL_BEVEL : OUTER_BEVEL) : INNER_BEVEL;
- m_quality = static_cast<boost::uint8_t> (in.read_uint(4));
+ m_quality = static_cast<std::uint8_t> (in.read_uint(4));
IF_VERBOSE_PARSE(
log_parse(_(" GradientBevelFilter "));
diff --git a/libcore/parser/filter_factory.h b/libcore/parser/filter_factory.h
index 82e01a8..8f777fe 100644
--- a/libcore/parser/filter_factory.h
+++ b/libcore/parser/filter_factory.h
@@ -20,7 +20,7 @@
#define GNASH_FILTER_FACTORY_H
#include <vector>
-#include <boost/shared_ptr.hpp>
+#include <memory>
namespace gnash {
class SWFStream;
@@ -29,7 +29,7 @@ namespace gnash {
namespace gnash {
-typedef std::vector<boost::shared_ptr<BitmapFilter> > Filters;
+typedef std::vector<std::unique_ptr<BitmapFilter> > Filters;
class filter_factory
{
diff --git a/libcore/parser/movie_definition.h b/libcore/parser/movie_definition.h
index bf6a133..6d615c8 100644
--- a/libcore/parser/movie_definition.h
+++ b/libcore/parser/movie_definition.h
@@ -53,10 +53,10 @@
#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>
+#include <cstdint>
#include "DefinitionTag.h"
#include "log.h"
@@ -140,9 +140,9 @@ public:
/// SWFMovieDefinition is one such example, future examples
/// should include jpeg_movie_def and similar..
///
- virtual Movie* createMovie(Global_as& /*gl*/, DisplayObject* /*parent*/=0)
+ virtual Movie* createMovie(Global_as& /*gl*/, DisplayObject* /*parent*/=nullptr)
{
- return NULL;
+ return nullptr;
}
virtual void incrementLoadedFrames() {}
@@ -158,7 +158,7 @@ public:
///
virtual const PlayList* getPlaylist(size_t /*frame_number*/) const
{
- return 0;
+ return nullptr;
}
@@ -193,9 +193,9 @@ public:
///
/// @return NULL if no DisplayObject with the given ID is found
/// (this is the default)
- virtual DefinitionTag* getDefinitionTag(boost::uint16_t /*id*/) const
+ virtual DefinitionTag* getDefinitionTag(std::uint16_t /*id*/) const
{
- return NULL;
+ return nullptr;
}
/// Get 0-based index of the frame with given label.
@@ -230,7 +230,7 @@ public:
//
/// This method is here to be called by DEFINE tags loaders.
/// The default implementation does nothing.
- virtual void addDisplayObject(boost::uint16_t /*id*/, DefinitionTag* /*c*/)
+ virtual void addDisplayObject(std::uint16_t /*id*/, DefinitionTag* /*c*/)
{
}
@@ -252,14 +252,14 @@ public:
///
virtual Font* get_font(int /*id*/) const
{
- return NULL;
+ return nullptr;
}
/// Find a font from the movie (not shared) lib
virtual Font* get_font(const std::string& /*name*/,
bool /*bold*/, bool /*italic*/) const
{
- return 0;
+ return nullptr;
}
/// Add an ControlTag to this movie_definition's playlist
@@ -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*/)
{
}
@@ -310,7 +310,7 @@ public:
///
virtual image::JpegInput* get_jpeg_loader() const
{
- return NULL;
+ return nullptr;
}
/// \brief
@@ -328,7 +328,7 @@ public:
///
virtual CachedBitmap* getBitmap(int /*DisplayObject_id*/) const
{
- return 0;
+ return nullptr;
}
/// \brief
@@ -350,7 +350,7 @@ public:
///
virtual sound_sample* get_sound_sample(int /*DisplayObject_id*/) const
{
- return NULL;
+ return nullptr;
}
/// \brief
@@ -387,13 +387,13 @@ public:
/// Register a symbol to refer to a character id
//
/// The default implementation does nothing.
- virtual void registerExport(const std::string&, boost::uint16_t) {}
+ virtual void registerExport(const std::string&, std::uint16_t) {}
/// Get the id that corresponds to a symbol.
//
/// @return The id corresponding to the passed symbol. The default
/// implementation returns 0, as it has no export table.
- virtual boost::uint16_t exportID(const std::string& /*symbol*/) const {
+ virtual std::uint16_t exportID(const std::string& /*symbol*/) const {
return 0;
}
@@ -458,7 +458,7 @@ public:
#endif
protected:
- movie_definition(boost::uint16_t id = 0)
+ movie_definition(std::uint16_t id = 0)
:
DefinitionTag(id)
{}
diff --git a/libcore/parser/sprite_definition.cpp b/libcore/parser/sprite_definition.cpp
index 13ff968..75796fe 100644
--- a/libcore/parser/sprite_definition.cpp
+++ b/libcore/parser/sprite_definition.cpp
@@ -108,7 +108,7 @@ sprite_definition::get_labeled_frame(const std::string& label,
}
sprite_definition::sprite_definition(movie_definition& m, SWFStream& in,
- const RunResources& runResources, boost::uint16_t id)
+ const RunResources& runResources, std::uint16_t id)
:
movie_definition(id),
m_movie_def(m),
diff --git a/libcore/parser/sprite_definition.h b/libcore/parser/sprite_definition.h
index 80a2dce..1aa0177 100644
--- a/libcore/parser/sprite_definition.h
+++ b/libcore/parser/sprite_definition.h
@@ -22,7 +22,7 @@
#define GNASH_SPRITE_DEFINITION_H
#include <boost/intrusive_ptr.hpp>
-#include <boost/cstdint.hpp>
+#include <cstdint>
#include <string>
#include <map>
#include "movie_definition.h" // for inheritance
@@ -65,7 +65,7 @@ public:
/// to be already positioned right before the frame count
///
sprite_definition(movie_definition& m, SWFStream& in,
- const RunResources& runResources, boost::uint16_t id);
+ const RunResources& runResources, std::uint16_t id);
/// Destructor, releases playlist data
~sprite_definition();
@@ -176,11 +176,11 @@ public:
return _loadingSoundStream;
}
- virtual boost::uint16_t exportID(const std::string& symbol) const {
+ virtual std::uint16_t exportID(const std::string& symbol) const {
return m_movie_def.exportID(symbol);
}
- virtual void registerExport(const std::string& s, boost::uint16_t id) {
+ virtual void registerExport(const std::string& s, std::uint16_t id) {
m_movie_def.registerExport(s, id);
}
@@ -188,13 +188,13 @@ public:
/// Get a SWF::DefinitionTag from this Sprite's root movie
/// CharacterDictionary.
///
- virtual SWF::DefinitionTag* getDefinitionTag(boost::uint16_t id) const
+ virtual SWF::DefinitionTag* getDefinitionTag(std::uint16_t id) const
{
return m_movie_def.getDefinitionTag(id);
}
/// Delegate call to associated root movie
- virtual void addDisplayObject(boost::uint16_t id, SWF::DefinitionTag* c)
+ virtual void addDisplayObject(std::uint16_t id, SWF::DefinitionTag* c)
{
m_movie_def.addDisplayObject(id, c);
}
@@ -250,7 +250,7 @@ private:
//assert(frame_number < m_loading_frame);
PlayListMap::const_iterator it = m_playlist.find(frame_number);
- if ( it == m_playlist.end() ) return NULL;
+ if ( it == m_playlist.end() ) return nullptr;
else return &(it->second);
}
diff --git a/libcore/swf/CSMTextSettingsTag.cpp b/libcore/swf/CSMTextSettingsTag.cpp
index 0627fba..993fb06 100644
--- a/libcore/swf/CSMTextSettingsTag.cpp
+++ b/libcore/swf/CSMTextSettingsTag.cpp
@@ -20,7 +20,7 @@
#include "CSMTextSettingsTag.h"
-#include <boost/cstdint.hpp>
+#include <cstdint>
#include "utility.h"
#include "RunResources.h"
@@ -52,7 +52,7 @@ CSMTextSettingsTag::loader(SWFStream& in, TagType tag, movie_definition& /*m*/,
in.ensureBytes(2 + 1 + 4 + 4 + 1);
- boost::uint16_t textID = in.read_u16();
+ std::uint16_t textID = in.read_u16();
// Should be either 1 or 0. TODO: what if it's something else?
bool flashType = in.read_uint(2);
@@ -60,10 +60,10 @@ CSMTextSettingsTag::loader(SWFStream& in, TagType tag, movie_definition& /*m*/,
// 0: no grid fitting.
// 1: Pixel grid fit (only for left-aligned dynamic text)
// 2: Sub-pixel grid fit.
- boost::uint8_t gridFit = in.read_uint(3);
+ std::uint8_t gridFit = in.read_uint(3);
// Should be 0:
- boost::uint8_t reserved = in.read_uint(3);
+ std::uint8_t reserved = in.read_uint(3);
UNUSED(reserved);
float thickness = in.read_long_float();
diff --git a/libcore/swf/DefaultTagLoaders.cpp b/libcore/swf/DefaultTagLoaders.cpp
index da5e6f6..a8953ee 100644
--- a/libcore/swf/DefaultTagLoaders.cpp
+++ b/libcore/swf/DefaultTagLoaders.cpp
@@ -22,7 +22,6 @@
#include "DefaultTagLoaders.h"
-#include <boost/assign.hpp>
#include <set>
#include "SWF.h"
@@ -112,136 +111,136 @@ addDefaultLoaders(TagLoadersTable& table)
// expected not to be used. They are generally documented
// by Alexis to exist (without any known structure), but not
// by Adobe.
- const std::vector<TagPair> tags = boost::assign::list_of
+ const std::vector<TagPair> tags = {
// 01: nothing to do for an end tag.
- (TagPair(SWF::END, ignore))
+ {SWF::END,ignore},
// 02
- (TagPair(SWF::DEFINESHAPE, DefineShapeTag::loader))
+ {SWF::DEFINESHAPE,DefineShapeTag::loader},
// 03
- (TagPair(SWF::FREECHARACTER, unexpected))
- (TagPair(SWF::PLACEOBJECT, PlaceObject2Tag::loader))
- (TagPair(SWF::REMOVEOBJECT, RemoveObjectTag::loader)) // 05
- (TagPair(SWF::DEFINEBITS, DefineBitsTag::loader))
- (TagPair(SWF::DEFINEBUTTON, DefineButtonTag::loader))
- (TagPair(SWF::JPEGTABLES, jpeg_tables_loader))
- (TagPair(SWF::SETBACKGROUNDCOLOR, SetBackgroundColorTag::loader))
- (TagPair(SWF::DEFINEFONT, DefineFontTag::loader))
- (TagPair(SWF::DEFINETEXT, DefineTextTag::loader))
- (TagPair(SWF::DOACTION, DoActionTag::loader))
- (TagPair(SWF::DEFINEFONTINFO, DefineFontInfoTag::loader))
- (TagPair(SWF::DEFINESOUND, define_sound_loader))
- (TagPair(SWF::STARTSOUND, StartSoundTag::loader))
- (TagPair(SWF::STOPSOUND, unexpected)) // 16
+ {SWF::FREECHARACTER,unexpected},
+ {SWF::PLACEOBJECT,PlaceObject2Tag::loader},
+ {SWF::REMOVEOBJECT,RemoveObjectTag::loader},// 05
+ {SWF::DEFINEBITS,DefineBitsTag::loader},
+ {SWF::DEFINEBUTTON,DefineButtonTag::loader},
+ {SWF::JPEGTABLES,jpeg_tables_loader},
+ {SWF::SETBACKGROUNDCOLOR,SetBackgroundColorTag::loader},
+ {SWF::DEFINEFONT,DefineFontTag::loader},
+ {SWF::DEFINETEXT,DefineTextTag::loader},
+ {SWF::DOACTION,DoActionTag::loader},
+ {SWF::DEFINEFONTINFO,DefineFontInfoTag::loader},
+ {SWF::DEFINESOUND,define_sound_loader},
+ {SWF::STARTSOUND,StartSoundTag::loader},
+ {SWF::STOPSOUND,unexpected},// 16
// 17
- (TagPair(SWF::DEFINEBUTTONSOUND, DefineButtonSoundTag::loader))
+ {SWF::DEFINEBUTTONSOUND,DefineButtonSoundTag::loader},
// 18
- (TagPair(SWF::SOUNDSTREAMHEAD, SoundStreamHeadTag::loader))
+ {SWF::SOUNDSTREAMHEAD,SoundStreamHeadTag::loader},
// 19
- (TagPair(SWF::SOUNDSTREAMBLOCK, StreamSoundBlockTag::loader))
- (TagPair(SWF::DEFINELOSSLESS, DefineBitsTag::loader))
- (TagPair(SWF::DEFINEBITSJPEG2, DefineBitsTag::loader))
- (TagPair(SWF::DEFINESHAPE2, DefineShapeTag::loader))
- (TagPair(SWF::DEFINEBUTTONCXFORM, DefineButtonCxformTag::loader)) // 23
- (TagPair(SWF::PROTECT, ignore))
- (TagPair(SWF::PATHSAREPOSTSCRIPT, unexpected)) // 25
- (TagPair(SWF::PLACEOBJECT2, PlaceObject2Tag::loader))
+ {SWF::SOUNDSTREAMBLOCK,StreamSoundBlockTag::loader},
+ {SWF::DEFINELOSSLESS,DefineBitsTag::loader},
+ {SWF::DEFINEBITSJPEG2,DefineBitsTag::loader},
+ {SWF::DEFINESHAPE2,DefineShapeTag::loader},
+ {SWF::DEFINEBUTTONCXFORM,DefineButtonCxformTag::loader},// 23
+ {SWF::PROTECT,ignore},
+ {SWF::PATHSAREPOSTSCRIPT,unexpected},// 25
+ {SWF::PLACEOBJECT2,PlaceObject2Tag::loader},
// 28
- (TagPair(SWF::REMOVEOBJECT2, RemoveObjectTag::loader))
- (TagPair(SWF::SYNCFRAME, unexpected)) // 29
- (TagPair(SWF::FREEALL, unexpected)) // 31
- (TagPair(SWF::DEFINESHAPE3, DefineShapeTag::loader))
- (TagPair(SWF::DEFINETEXT2, DefineText2Tag::loader))
+ {SWF::REMOVEOBJECT2,RemoveObjectTag::loader},
+ {SWF::SYNCFRAME,unexpected},// 29
+ {SWF::FREEALL,unexpected},// 31
+ {SWF::DEFINESHAPE3,DefineShapeTag::loader},
+ {SWF::DEFINETEXT2,DefineText2Tag::loader},
// 37
- (TagPair(SWF::DEFINEBUTTON2, DefineButton2Tag::loader))
- (TagPair(SWF::DEFINEBITSJPEG3, DefineBitsTag::loader))
- (TagPair(SWF::DEFINELOSSLESS2, DefineBitsTag::loader))
- (TagPair(SWF::DEFINEEDITTEXT, DefineEditTextTag::loader))
- (TagPair(SWF::DEFINEVIDEO, unexpected)) // 38
- (TagPair(SWF::DEFINESPRITE, sprite_loader))
- (TagPair(SWF::NAMECHARACTER, unexpected)) // 40
- (TagPair(SWF::SERIALNUMBER, serialnumber_loader)) // 41
- (TagPair(SWF::DEFINETEXTFORMAT, unexpected)) // 42
- (TagPair(SWF::FRAMELABEL, frame_label_loader)) // 43
- (TagPair(SWF::DEFINEBEHAVIOR, unexpected)) // 44
+ {SWF::DEFINEBUTTON2,DefineButton2Tag::loader},
+ {SWF::DEFINEBITSJPEG3,DefineBitsTag::loader},
+ {SWF::DEFINELOSSLESS2,DefineBitsTag::loader},
+ {SWF::DEFINEEDITTEXT,DefineEditTextTag::loader},
+ {SWF::DEFINEVIDEO,unexpected},// 38
+ {SWF::DEFINESPRITE,sprite_loader},
+ {SWF::NAMECHARACTER,unexpected},// 40
+ {SWF::SERIALNUMBER,serialnumber_loader},// 41
+ {SWF::DEFINETEXTFORMAT,unexpected},// 42
+ {SWF::FRAMELABEL,frame_label_loader},// 43
+ {SWF::DEFINEBEHAVIOR,unexpected},// 44
// 45
- (TagPair(SWF::SOUNDSTREAMHEAD2, SoundStreamHeadTag::loader))
+ {SWF::SOUNDSTREAMHEAD2,SoundStreamHeadTag::loader},
// 46
- (TagPair(SWF::DEFINEMORPHSHAPE, DefineMorphShapeTag::loader))
+ {SWF::DEFINEMORPHSHAPE,DefineMorphShapeTag::loader},
// 47
- (TagPair(SWF::FRAMETAG, unexpected))
+ {SWF::FRAMETAG,unexpected},
// 48
- (TagPair(SWF::DEFINEFONT2, DefineFontTag::loader))
- (TagPair(SWF::GENCOMMAND, unexpected)) // 49
- (TagPair(SWF::DEFINECOMMANDOBJ, unexpected)) // 50
- (TagPair(SWF::CHARACTERSET, unexpected)) // 51
- (TagPair(SWF::FONTREF, unexpected)) // 52
- (TagPair(SWF::DEFINEFUNCTION, unexpected)) // 53
- (TagPair(SWF::PLACEFUNCTION, unexpected)) // 54
- (TagPair(SWF::GENTAGOBJECT, unexpected)) // 55
- (TagPair(SWF::EXPORTASSETS, ExportAssetsTag::loader)) // 56
- (TagPair(SWF::IMPORTASSETS, ImportAssetsTag::loader)) // 57
- (TagPair(SWF::ENABLEDEBUGGER, ignore)) // 58
+ {SWF::DEFINEFONT2,DefineFontTag::loader},
+ {SWF::GENCOMMAND,unexpected},// 49
+ {SWF::DEFINECOMMANDOBJ,unexpected},// 50
+ {SWF::CHARACTERSET,unexpected},// 51
+ {SWF::FONTREF,unexpected},// 52
+ {SWF::DEFINEFUNCTION,unexpected},// 53
+ {SWF::PLACEFUNCTION,unexpected},// 54
+ {SWF::GENTAGOBJECT,unexpected},// 55
+ {SWF::EXPORTASSETS,ExportAssetsTag::loader},// 56
+ {SWF::IMPORTASSETS,ImportAssetsTag::loader},// 57
+ {SWF::ENABLEDEBUGGER,ignore}, // 58
// 59
- (TagPair(SWF::INITACTION, DoInitActionTag::loader))
+ {SWF::INITACTION,DoInitActionTag::loader},
// 60
- (TagPair(SWF::DEFINEVIDEOSTREAM, DefineVideoStreamTag::loader))
+ {SWF::DEFINEVIDEOSTREAM,DefineVideoStreamTag::loader},
// 61
- (TagPair(SWF::VIDEOFRAME, VideoFrameTag::loader))
+ {SWF::VIDEOFRAME,VideoFrameTag::loader},
// 62
- (TagPair(SWF::DEFINEFONTINFO2, DefineFontInfoTag::loader))
+ {SWF::DEFINEFONTINFO2,DefineFontInfoTag::loader},
// 63
- (TagPair(SWF::DEBUGID, ignore))
+ {SWF::DEBUGID,ignore},
// 64
- (TagPair(SWF::ENABLEDEBUGGER2, ignore))
- (TagPair(SWF::SCRIPTLIMITS, ScriptLimitsTag::loader)) //65
- (TagPair(SWF::SETTABINDEX, SetTabIndexTag::loader)) //66
- // TODO: Alexis reference says these are 83, 84. The 67, 68 comes from
+ {SWF::ENABLEDEBUGGER2,ignore},
+ {SWF::SCRIPTLIMITS,ScriptLimitsTag::loader},//65
+ {SWF::SETTABINDEX,SetTabIndexTag::loader},//66
+ // TODO: Alexis reference says these are 83,84. The 67,68 comes from
// Tamarin. Figure out which one is correct (possibly both are).
// 67
- (TagPair(SWF::DEFINESHAPE4_, DefineShapeTag::loader))
+ {SWF::DEFINESHAPE4_,DefineShapeTag::loader},
// 68
- (TagPair(SWF::DEFINEMORPHSHAPE2_, DefineMorphShapeTag::loader))
+ {SWF::DEFINEMORPHSHAPE2_,DefineMorphShapeTag::loader},
// 69
- (TagPair(SWF::FILEATTRIBUTES, file_attributes_loader))
+ {SWF::FILEATTRIBUTES,file_attributes_loader},
// 70
- (TagPair(SWF::PLACEOBJECT3, PlaceObject2Tag::loader))
+ {SWF::PLACEOBJECT3,PlaceObject2Tag::loader},
// 71
- (TagPair(SWF::IMPORTASSETS2, ImportAssetsTag::loader))
+ {SWF::IMPORTASSETS2,ImportAssetsTag::loader},
// 73
- (TagPair(SWF::DEFINEALIGNZONES, DefineFontAlignZonesTag::loader))
+ {SWF::DEFINEALIGNZONES,DefineFontAlignZonesTag::loader},
// 74
- (TagPair(SWF::CSMTEXTSETTINGS, CSMTextSettingsTag::loader))
+ {SWF::CSMTEXTSETTINGS,CSMTextSettingsTag::loader},
// 75
- (TagPair(SWF::DEFINEFONT3, DefineFontTag::loader))
+ {SWF::DEFINEFONT3,DefineFontTag::loader},
// 77
- (TagPair(SWF::METADATA, metadata_loader))
+ {SWF::METADATA,metadata_loader},
// 78
- (TagPair(SWF::DEFINESCALINGGRID, DefineScalingGridTag::loader))
+ {SWF::DEFINESCALINGGRID,DefineScalingGridTag::loader},
// 83
- (TagPair(SWF::DEFINESHAPE4, DefineShapeTag::loader))
+ {SWF::DEFINESHAPE4,DefineShapeTag::loader},
// 84
- (TagPair(SWF::DEFINEMORPHSHAPE2, DefineMorphShapeTag::loader))
+ {SWF::DEFINEMORPHSHAPE2,DefineMorphShapeTag::loader},
// 88
- (TagPair(SWF::DEFINEFONTNAME, DefineFontNameTag::loader))
+ {SWF::DEFINEFONTNAME,DefineFontNameTag::loader},
// 89
- (TagPair(SWF::STARTSOUND2, StartSound2Tag::loader))
+ {SWF::STARTSOUND2,StartSound2Tag::loader},
// 90
- (TagPair(SWF::DEFINEBITSJPEG4, DefineBitsTag::loader))
+ {SWF::DEFINEBITSJPEG4,DefineBitsTag::loader},
// 777
- (TagPair(SWF::REFLEX, reflex_loader))
+ {SWF::REFLEX,reflex_loader}
#ifdef ENABLE_AVM2
// The following tags are AVM2 only.
// 72 -- AS3 codeblock.
- (TagPair(SWF::DOABC, DoABCTag::loader))
+ ,{SWF::DOABC,DoABCTag::loader},
// 76
- (TagPair(SWF::SYMBOLCLASS, SymbolClassTag::loader))
+ {SWF::SYMBOLCLASS,SymbolClassTag::loader},
// 82
- (TagPair(SWF::DOABCDEFINE, DoABCTag::loader))
+ {SWF::DOABCDEFINE,DoABCTag::loader},
// 86
- (TagPair(SWF::DEFINESCENEANDFRAMELABELDATA,
- DefineSceneAndFrameLabelDataTag::loader))
+ {SWF::DEFINESCENEANDFRAMELABELDATA,
+ DefineSceneAndFrameLabelDataTag::loader}
#endif
- ;
+ };
std::for_each(tags.begin(), tags.end(), AddLoader(table));
diff --git a/libcore/swf/DefineBitsTag.cpp b/libcore/swf/DefineBitsTag.cpp
index 9967921..1e20bd8 100644
--- a/libcore/swf/DefineBitsTag.cpp
+++ b/libcore/swf/DefineBitsTag.cpp
@@ -26,8 +26,6 @@
#include <limits>
#include <cassert>
-#include <boost/static_assert.hpp>
-#include <boost/scoped_array.hpp>
#include "IOChannel.h"
#include "utility.h"
@@ -55,12 +53,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);
}
@@ -79,7 +77,7 @@ class StreamAdapter : public IOChannel
:
s(str),
startPos(s.tell()),
- endPos(maxPos),
+ endPos(std::move(maxPos)),
currPos(startPos)
{
assert(endPos >= startPos);
@@ -133,9 +131,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 +164,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
@@ -176,7 +174,7 @@ jpeg_tables_loader(SWFStream& in, TagType tag, movie_definition& m,
// Anyway the actual reads are limited to currently opened tag as
// of gnash::SWFStream::read(), so this is not a problem.
//
- boost::shared_ptr<IOChannel> ad(StreamAdapter::getFile(in,
+ std::shared_ptr<IOChannel> ad(StreamAdapter::getFile(in,
std::numeric_limits<std::streamsize>::max()).release());
// transfer ownership to the image::JpegInput
input = image::JpegInput::createSWFJpeg2HeaderOnly(ad, jpegHeaderSize);
@@ -191,7 +189,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
@@ -199,7 +197,7 @@ DefineBitsTag::loader(SWFStream& in, TagType tag, movie_definition& m,
const RunResources& r)
{
in.ensureBytes(2);
- const boost::uint16_t id = in.read_u16();
+ const std::uint16_t id = in.read_u16();
if (m.getBitmap(id)) {
IF_VERBOSE_MALFORMED_SWF(
@@ -209,7 +207,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 +242,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 +255,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,25 +319,25 @@ 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);
- const boost::uint32_t jpeg_size = in.read_u32();
+ const std::uint32_t jpeg_size = in.read_u32();
if (tag == DEFINEBITSJPEG4) {
in.ensureBytes(2);
@@ -356,26 +354,26 @@ 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.
- const boost::uint32_t alpha_position = in.tell() + jpeg_size;
+ const std::uint32_t alpha_position = in.tell() + jpeg_size;
#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);
@@ -384,7 +382,7 @@ readDefineBitsJpeg3(SWFStream& in, TagType tag)
const size_t imHeight = im->height();
const size_t bufferLength = imWidth * imHeight;
- boost::scoped_array<boost::uint8_t> buffer(new boost::uint8_t[bufferLength]);
+ std::unique_ptr<std::uint8_t[]> buffer(new std::uint8_t[bufferLength]);
inflateWrapper(in, buffer.get(), bufferLength);
@@ -394,27 +392,27 @@ 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);
in.ensureBytes(2 + 2 + 1); // the initial header
// 3 == 8 bit, 4 == 16 bit, 5 == 32 bit
- const boost::uint8_t bitmap_format = in.read_u8();
- const boost::uint16_t width = in.read_u16();
- const boost::uint16_t height = in.read_u16();
+ const std::uint8_t bitmap_format = in.read_u8();
+ const std::uint16_t width = in.read_u16();
+ const std::uint16_t height = in.read_u16();
IF_VERBOSE_PARSE(
log_parse(_(" defbitslossless2: tag = %d, fmt = %d, "
"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,12 +473,12 @@ 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;
const size_t bufSize = colorTableSize * channels + pitch * height;
- boost::scoped_array<boost::uint8_t> buffer(new boost::uint8_t[bufSize]);
+ std::unique_ptr<std::uint8_t[]> buffer(new std::uint8_t[bufSize]);
inflateWrapper(in, buffer.get(), bufSize);
assert(in.tell() <= in.get_tag_end_position());
@@ -490,15 +488,15 @@ readLossless(SWFStream& in, TagType tag)
case 3:
{
// 8-bit data, preceded by a palette.
- boost::uint8_t* colorTable = buffer.get();
+ std::uint8_t* colorTable = buffer.get();
for (size_t j = 0; j < height; ++j) {
- boost::uint8_t* inRow = buffer.get() +
+ std::uint8_t* inRow = buffer.get() +
colorTableSize * channels + j * pitch;
- boost::uint8_t* outRow = scanline(*image, j);
+ std::uint8_t* outRow = scanline(*image, j);
for (size_t i = 0; i < width; ++i) {
- boost::uint8_t pixel = inRow[i * bytes_per_pixel];
+ std::uint8_t pixel = inRow[i * bytes_per_pixel];
outRow[i * channels + 0] = colorTable[pixel * channels + 0];
outRow[i * channels + 1] = colorTable[pixel * channels + 1];
outRow[i * channels + 2] = colorTable[pixel * channels + 2];
@@ -516,10 +514,10 @@ readLossless(SWFStream& in, TagType tag)
for (size_t j = 0; j < height; ++j) {
- boost::uint8_t* inRow = buffer.get() + j * pitch;
- boost::uint8_t* outRow = scanline(*image, j);
+ std::uint8_t* inRow = buffer.get() + j * pitch;
+ std::uint8_t* outRow = scanline(*image, j);
for (size_t i = 0; i < width; ++i) {
- const boost::uint16_t pix = ( inRow[i * 2] << 8 )
+ const std::uint16_t pix = ( inRow[i * 2] << 8 )
| ( inRow[i * 2 + 1] ) ;
const double g = 255.0/31.0; // gamma correction
@@ -540,8 +538,8 @@ readLossless(SWFStream& in, TagType tag)
case 5:
// Need to re-arrange ARGB into RGB or RGBA.
for (size_t j = 0; j < height; ++j) {
- boost::uint8_t* inRow = buffer.get() + j * pitch;
- boost::uint8_t* outRow = scanline(*image, j);
+ std::uint8_t* inRow = buffer.get() + j * pitch;
+ std::uint8_t* outRow = scanline(*image, j);
const int inChannels = 4;
for (size_t i = 0; i < width; ++i) {
@@ -576,10 +574,10 @@ inflateWrapper(SWFStream& in, void* buffer, size_t buffer_bytes)
z_stream d_stream;
- d_stream.zalloc = 0;
- d_stream.zfree = 0;
- d_stream.opaque = 0;
- d_stream.next_in = 0;
+ d_stream.zalloc = nullptr;
+ d_stream.zfree = nullptr;
+ d_stream.opaque = nullptr;
+ d_stream.next_in = nullptr;
d_stream.avail_in = 0;
d_stream.next_out = static_cast<Byte*>(buffer);
@@ -596,7 +594,7 @@ inflateWrapper(SWFStream& in, void* buffer, size_t buffer_bytes)
const size_t CHUNKSIZE = 256;
- boost::uint8_t buf[CHUNKSIZE];
+ std::uint8_t buf[CHUNKSIZE];
unsigned long endTagPos = in.get_tag_end_position();
for (;;) {
@@ -616,8 +614,8 @@ inflateWrapper(SWFStream& in, void* buffer, size_t buffer_bytes)
chunkSize = availableBytes;
}
- BOOST_STATIC_ASSERT(sizeof(char) == sizeof(boost::uint8_t))
- __attribute__((unused));
+ static_assert(sizeof(char) == sizeof(std::uint8_t),
+ "char must be 1 byte");
// Fill the buffer
in.read(reinterpret_cast<char*>(buf), chunkSize);
diff --git a/libcore/swf/DefineButtonCxformTag.cpp b/libcore/swf/DefineButtonCxformTag.cpp
index 74b2fef..e43de12 100644
--- a/libcore/swf/DefineButtonCxformTag.cpp
+++ b/libcore/swf/DefineButtonCxformTag.cpp
@@ -36,7 +36,7 @@ DefineButtonCxformTag::loader(SWFStream& in, TagType tag, movie_definition& m,
assert(tag == SWF::DEFINEBUTTONCXFORM);
in.ensureBytes(2);
- const boost::uint16_t buttonID = in.read_u16();
+ const std::uint16_t buttonID = in.read_u16();
IF_VERBOSE_PARSE (
log_parse("DefineButtonCxformTag: ButtonId=%d", buttonID);
@@ -65,12 +65,11 @@ DefineButtonCxformTag::loader(SWFStream& in, TagType tag, movie_definition& m,
}
DefineButtonTag::ButtonRecords& br = ch->buttonRecords();
- for (DefineButtonTag::ButtonRecords::iterator i = br.begin(),
- e = br.end(); i != e; ++i)
+ for (ButtonRecord& record : br)
{
// This will throw a parser exception if not enough bytes are
// left.
- i->readRGBTransform(in);
+ record.readRGBTransform(in);
}
}
diff --git a/libcore/swf/DefineButtonSoundTag.cpp b/libcore/swf/DefineButtonSoundTag.cpp
index 7fd7a4f..3b061ae 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));
}
@@ -85,9 +85,8 @@ void
DefineButtonSoundTag::read(SWFStream& in, movie_definition& m)
{
- for (Sounds::iterator i = _sounds.begin(), e = _sounds.end(); i != e; ++i)
+ for (ButtonSound& sound : _sounds)
{
- ButtonSound& sound = *i;
in.ensureBytes(2);
sound.soundID = in.read_u16();
if (sound.soundID)
diff --git a/libcore/swf/DefineButtonSoundTag.h b/libcore/swf/DefineButtonSoundTag.h
index 0359e21..fa412e4 100644
--- a/libcore/swf/DefineButtonSoundTag.h
+++ b/libcore/swf/DefineButtonSoundTag.h
@@ -43,14 +43,14 @@ public:
struct ButtonSound
{
- boost::uint16_t soundID;
+ std::uint16_t soundID;
sound_sample* sample;
SoundInfoRecord soundInfo;
ButtonSound()
:
soundID(0),
- sample(0)
+ sample(nullptr)
{}
};
diff --git a/libcore/swf/DefineButtonTag.cpp b/libcore/swf/DefineButtonTag.cpp
index 99e9ce6..ee3eecb 100644
--- a/libcore/swf/DefineButtonTag.cpp
+++ b/libcore/swf/DefineButtonTag.cpp
@@ -48,10 +48,9 @@ namespace {
}
DefineButtonTag::DefineButtonTag(SWFStream& in, movie_definition& m,
- TagType tag, boost::uint16_t id)
+ TagType tag, std::uint16_t id)
:
DefinitionTag(id),
- _soundTag(0),
_trackAsMenu(false),
_movieDef(m)
{
@@ -79,13 +78,13 @@ DefineButtonTag::loader(SWFStream& in, TagType tag, movie_definition& m,
{
assert(tag == DEFINEBUTTON);
in.ensureBytes(2);
- const boost::uint16_t id = in.read_u16();
+ const std::uint16_t id = in.read_u16();
IF_VERBOSE_PARSE(
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());
}
@@ -96,13 +95,13 @@ DefineButton2Tag::loader(SWFStream& in, TagType tag, movie_definition& m,
{
assert(tag == DEFINEBUTTON2);
in.ensureBytes(2);
- const boost::uint16_t id = in.read_u16();
+ const std::uint16_t id = in.read_u16();
IF_VERBOSE_PARSE(
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());
}
@@ -126,7 +125,7 @@ DefineButtonTag::readDefineButtonTag(SWFStream& in, movie_definition& m)
// SAFETY CHECK:
// if the ButtonRecord is corrupted, discard it
- if (r.valid()) _buttonRecords.push_back(r);
+ if (r.valid()) _buttonRecords.push_back(std::move(r));
}
if (in.tell() >= endTagPos) {
@@ -152,7 +151,7 @@ DefineButtonTag::readDefineButton2Tag(SWFStream& in, movie_definition& m)
// Read the menu flag
// (this is a single bit, the first 7 bits are reserved)
- const boost::uint8_t flags = in.read_u8();
+ const std::uint8_t flags = in.read_u8();
_trackAsMenu = flags & (1 << 0);
if (_trackAsMenu) {
LOG_ONCE(log_unimpl("DefineButton2: trackAsMenu"));
@@ -191,7 +190,7 @@ DefineButtonTag::readDefineButton2Tag(SWFStream& in, movie_definition& m)
// SAFETY CHECK:
// if the ButtonRecord is corrupted, discard it
if (r.valid()) {
- _buttonRecords.push_back(r);
+ _buttonRecords.push_back(std::move(r));
}
}
@@ -252,7 +251,7 @@ bool
DefineButtonTag::hasKeyPressHandler() const
{
return std::find_if(_buttonActions.begin(), _buttonActions.end(),
- boost::mem_fn(&ButtonAction::triggeredByKeyPress)) !=
+ std::mem_fn(&ButtonAction::triggeredByKeyPress)) !=
_buttonActions.end();
}
@@ -263,14 +262,11 @@ DefineButtonTag::hasKeyPressHandler() const
ButtonAction::ButtonAction(SWFStream& in, TagType t, unsigned long endPos,
movie_definition& mdef)
:
- _actions(mdef)
+ _actions(mdef),
+ _conditions(OVER_DOWN_TO_OVER_UP)
{
// Read condition flags.
- if (t == SWF::DEFINEBUTTON) {
- _conditions = OVER_DOWN_TO_OVER_UP;
- }
- else {
-
+ if (t != SWF::DEFINEBUTTON) {
assert(t == SWF::DEFINEBUTTON2);
if ( in.tell()+2 > endPos )
@@ -366,7 +362,7 @@ ButtonRecord::read(SWFStream& in, TagType t,
}
in.ensureBytes(1);
- boost::uint8_t flags = in.read_u8();
+ std::uint8_t flags = in.read_u8();
if (!flags) return false;
// Upper 4 bits are:
@@ -386,7 +382,7 @@ ButtonRecord::read(SWFStream& in, TagType t,
return false;
}
in.ensureBytes(2);
- const boost::uint16_t id = in.read_u16();
+ const std::uint16_t id = in.read_u16();
// Get DisplayObject definition now (safer)
_definitionTag = m.getDefinitionTag(id);
diff --git a/libcore/swf/DefineButtonTag.h b/libcore/swf/DefineButtonTag.h
index 9910e06..ea7164f 100644
--- a/libcore/swf/DefineButtonTag.h
+++ b/libcore/swf/DefineButtonTag.h
@@ -22,15 +22,16 @@
#include <vector>
#include <boost/ptr_container/ptr_vector.hpp>
-#include <boost/scoped_ptr.hpp>
-#include <boost/cstdint.hpp>
+#include <memory>
+#include <cstdint>
#include <memory>
#include "DefinitionTag.h"
#include "SWFMatrix.h"
#include "SWFCxForm.h"
#include "action_buffer.h"
-#include "filter_factory.h"
+#include "filter_factory.h"
+#include "Filters.h"
#include "TypesParser.h"
#include "DefineButtonSoundTag.h"
#include "SWF.h"
@@ -56,10 +57,18 @@ public:
ButtonRecord()
:
- _definitionTag(0)
+ _blendMode(0),
+ _hitTest(false),
+ _down(false),
+ _over(false),
+ _up(false),
+ _definitionTag(nullptr),
+ _buttonLayer(0)
{
}
+ ButtonRecord(ButtonRecord&&) = default;
+
/// Create a DisplayObject from a ButtonRecord.
//
/// @param name Whether the created DisplayObject requires its own
@@ -98,7 +107,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:
@@ -113,7 +122,7 @@ private:
/// associated with button records.
//
/// Currently unused by Gnash.
- boost::uint8_t _blendMode;
+ std::uint8_t _blendMode;
bool _hitTest;
bool _down;
@@ -180,7 +189,7 @@ private:
KEYPRESS = 0xFE00 // highest 7 bits
};
- boost::uint16_t _conditions;
+ std::uint16_t _conditions;
};
@@ -214,7 +223,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());
@@ -258,8 +267,8 @@ public:
template<class E>
void visitKeyCodes(E& f) const {
std::for_each(_buttonActions.begin(), _buttonActions.end(),
- boost::bind(f, boost::bind(
- boost::mem_fn(&ButtonAction::getKeyCode), _1)));
+ std::bind(f, std::bind(
+ std::mem_fn(&ButtonAction::getKeyCode), std::placeholders::_1)));
}
private:
@@ -271,7 +280,7 @@ private:
//
/// This can only be constructed using a loader() function.
DefineButtonTag(SWFStream& in, movie_definition& m, TagType tag,
- boost::uint16_t id);
+ std::uint16_t id);
/// Read a DEFINEBUTTON tag
void readDefineButtonTag(SWFStream& in, movie_definition& m);
@@ -279,7 +288,7 @@ private:
/// Read a DEFINEBUTTON2 tag
void readDefineButton2Tag(SWFStream& in, movie_definition& m);
- boost::scoped_ptr<SWF::DefineButtonSoundTag> _soundTag;
+ std::unique_ptr<SWF::DefineButtonSoundTag> _soundTag;
ButtonRecords _buttonRecords;
diff --git a/libcore/swf/DefineEditTextTag.cpp b/libcore/swf/DefineEditTextTag.cpp
index d6cf67f..18f4258 100644
--- a/libcore/swf/DefineEditTextTag.cpp
+++ b/libcore/swf/DefineEditTextTag.cpp
@@ -37,9 +37,9 @@ DefineEditTextTag::loader(SWFStream& in, TagType tag, movie_definition& m,
assert(tag == SWF::DEFINEEDITTEXT); // 37
in.ensureBytes(2);
- const boost::uint16_t id = in.read_u16();
+ const std::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());
}
@@ -176,7 +176,7 @@ DefineEditTextTag::read(SWFStream& in, movie_definition& m)
}
DefineEditTextTag::DefineEditTextTag(SWFStream& in, movie_definition& m,
- boost::uint16_t id)
+ std::uint16_t id)
:
DefinitionTag(id),
_hasText(true),
diff --git a/libcore/swf/DefineEditTextTag.h b/libcore/swf/DefineEditTextTag.h
index 677c52b..9c92889 100644
--- a/libcore/swf/DefineEditTextTag.h
+++ b/libcore/swf/DefineEditTextTag.h
@@ -27,7 +27,7 @@
#include <boost/intrusive_ptr.hpp>
#include <string>
-#include <boost/cstdint.hpp> // for boost::uint16_t and friends
+#include <cstdint> // for std::uint16_t and friends
// Forward declarations
@@ -93,23 +93,23 @@ public:
}
/// Get right margin in twips
- boost::uint16_t rightMargin() const {
+ std::uint16_t rightMargin() const {
return _rightMargin;
}
/// Get left margin in twips
- boost::uint16_t leftMargin() const {
+ std::uint16_t leftMargin() const {
return _leftMargin;
}
/// Get indentation in twips
- boost::uint16_t indent() const {
+ std::uint16_t indent() const {
return _indent;
}
/// Get height of font in twips.
// @@ what if has_font is false ??
- boost::uint16_t textHeight() const {
+ std::uint16_t textHeight() const {
return _textHeight;
}
@@ -122,7 +122,7 @@ public:
/// Get extra space between lines (in twips).
//
/// This is in addition to default font line spacing.
- boost::uint16_t leading() const {
+ std::uint16_t leading() const {
return _leading;
}
@@ -190,7 +190,7 @@ private:
/// Construct a DefineEditTextTag.
//
/// This should only be used from the loader() function.
- DefineEditTextTag(SWFStream& in, movie_definition& m, boost::uint16_t id);
+ DefineEditTextTag(SWFStream& in, movie_definition& m, std::uint16_t id);
/// Read a tag from the SWFStream.
void read(SWFStream& in, movie_definition& m);
@@ -261,7 +261,7 @@ private:
// TODO: initialize to a meaningful value (see MovieClip::add_textfield)
// and make sure get_font_height is not called for rendering purposes
// (instead call a method of TextField) (?)
- boost::uint16_t _textHeight;
+ std::uint16_t _textHeight;
/// Text color
rgba _color;
@@ -275,18 +275,18 @@ private:
TextField::TextAlignment _alignment;
/// extra space between box's left border and text (in twips)
- boost::uint16_t _leftMargin;
+ std::uint16_t _leftMargin;
/// extra space between box's right border and text (in twips)
- boost::uint16_t _rightMargin;
+ std::uint16_t _rightMargin;
/// how much to indent the first line of multiline text (in twips)
- boost::uint16_t _indent;
+ std::uint16_t _indent;
/// \brief
/// Extra space between lines
/// (in addition to default font line spacing)
- boost::uint16_t _leading;
+ std::uint16_t _leading;
/// The default text to be displayed
std::string _defaultText;
diff --git a/libcore/swf/DefineFontAlignZonesTag.cpp b/libcore/swf/DefineFontAlignZonesTag.cpp
index 5c27fbd..620828e 100644
--- a/libcore/swf/DefineFontAlignZonesTag.cpp
+++ b/libcore/swf/DefineFontAlignZonesTag.cpp
@@ -20,7 +20,7 @@
#include "DefineFontAlignZonesTag.h"
-#include <boost/cstdint.hpp>
+#include <cstdint>
#include "RunResources.h"
#include "Font.h"
@@ -45,7 +45,7 @@ DefineFontAlignZonesTag::loader(SWFStream& in, TagType tag,
in.ensureBytes(2);
// must reference a valid DEFINEFONT3 tag
- const boost::uint16_t ref = in.read_u16();
+ const std::uint16_t ref = in.read_u16();
Font* referencedFont = m.get_font(ref);
if (!referencedFont) {
IF_VERBOSE_MALFORMED_SWF(
@@ -58,10 +58,10 @@ DefineFontAlignZonesTag::loader(SWFStream& in, TagType tag,
in.ensureBytes(1);
// 2bits are cms table, 6bits are reserved
- const boost::uint8_t flags = in.read_u8();
+ const std::uint8_t flags = in.read_u8();
// What is this?
- const boost::uint16_t csm_table_int = flags >> 6;
+ const std::uint16_t csm_table_int = flags >> 6;
// TODO:
// The first thing to to is test what this does. According to some
@@ -84,8 +84,8 @@ DefineFontAlignZonesTag::loader(SWFStream& in, TagType tag,
for (size_t j = 0; j != 2; ++j) {
in.ensureBytes(4);
- const boost::uint16_t zone_position = in.read_u16();
- const boost::uint16_t zone_size = in.read_u16();
+ const std::uint16_t zone_position = in.read_u16();
+ const std::uint16_t zone_size = in.read_u16();
IF_VERBOSE_PARSE(
log_parse("Zone position: %s, size: %s", zone_position,
@@ -95,7 +95,7 @@ DefineFontAlignZonesTag::loader(SWFStream& in, TagType tag,
in.ensureBytes(1);
// What is this?
- const boost::uint8_t u = in.read_u8();
+ const std::uint8_t u = in.read_u8();
const bool zone_x = u & 0x01;
const bool zone_y = (u >> 1) & 0x01;
diff --git a/libcore/swf/DefineFontNameTag.h b/libcore/swf/DefineFontNameTag.h
index ea52720..849240b 100644
--- a/libcore/swf/DefineFontNameTag.h
+++ b/libcore/swf/DefineFontNameTag.h
@@ -45,7 +45,7 @@ public:
assert(tag == SWF::DEFINEFONTNAME);
in.ensureBytes(2);
- boost::uint16_t fontID = in.read_u16();
+ std::uint16_t fontID = in.read_u16();
Font* f = m.get_font(fontID);
if (!f)
diff --git a/libcore/swf/DefineFontTag.cpp b/libcore/swf/DefineFontTag.cpp
index 4ad7954..94988e5 100644
--- a/libcore/swf/DefineFontTag.cpp
+++ b/libcore/swf/DefineFontTag.cpp
@@ -44,10 +44,10 @@ DefineFontTag::loader(SWFStream& in, TagType tag, movie_definition& m,
assert(tag == DEFINEFONT || tag == DEFINEFONT2 || tag == DEFINEFONT3);
in.ensureBytes(2);
- const boost::uint16_t fontID = in.read_u16();
+ const std::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);
}
@@ -66,9 +66,9 @@ DefineFontTag::readCodeTable(SWFStream& in, Font::CodeTable& table,
if (wideCodes) {
in.ensureBytes(2 * glyphCount);
- // Code table is made of boost::uint16_t's.
+ // Code table is made of std::uint16_t's.
for (size_t i=0; i < glyphCount; ++i) {
- const boost::uint16_t code = in.read_u16();
+ const std::uint16_t code = in.read_u16();
table.insert(std::make_pair(code, i));
}
}
@@ -76,7 +76,7 @@ DefineFontTag::readCodeTable(SWFStream& in, Font::CodeTable& table,
// Code table is made of bytes.
in.ensureBytes(1 * glyphCount);
for (size_t i = 0; i < glyphCount; ++i) {
- const boost::uint8_t code = in.read_u8();
+ const std::uint8_t code = in.read_u8();
table.insert(std::make_pair(code, i));
}
}
@@ -92,7 +92,6 @@ DefineFontTag::DefineFontTag(SWFStream& in, movie_definition& m, TagType tag,
_ansiChars(true),
_italic(false),
_bold(false),
- _wideCodes(false),
_ascent(0),
_descent(0),
_leading(0)
@@ -193,7 +192,7 @@ DefineFontTag::readDefineFont2Or3(SWFStream& in, movie_definition& m,
in.read_string_with_length(_name);
in.ensureBytes(2);
- const boost::uint16_t glyph_count = in.read_u16();
+ const std::uint16_t glyph_count = in.read_u16();
IF_VERBOSE_PARSE (
log_parse(" has_layout = %d", has_layout);
@@ -213,14 +212,14 @@ DefineFontTag::readDefineFont2Or3(SWFStream& in, movie_definition& m,
// Read the glyph offsets. Offsets
// are measured from the start of the
// offset table. Make sure wide offsets fit into elements
- std::vector<boost::uint32_t> offsets;
+ std::vector<std::uint32_t> offsets;
int font_code_offset;
if (wide_offsets) {
// 32-bit offsets.
in.ensureBytes(4*glyph_count + 4);
for (size_t i = 0; i < glyph_count; ++i) {
- const boost::uint32_t off = in.read_u32();
+ const std::uint32_t off = in.read_u32();
IF_VERBOSE_PARSE (
log_parse(_("Glyph %d at offset %u"), i, off);
);
@@ -232,7 +231,7 @@ DefineFontTag::readDefineFont2Or3(SWFStream& in, movie_definition& m,
// 16-bit offsets.
in.ensureBytes(2*glyph_count + 2);
for (size_t i = 0; i < glyph_count; ++i) {
- const boost::uint16_t off = in.read_u16();
+ const std::uint16_t off = in.read_u16();
IF_VERBOSE_PARSE(
log_parse(_("Glyph %d at offset %u"), i, off);
);
@@ -268,7 +267,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());
@@ -298,12 +297,12 @@ DefineFontTag::readDefineFont2Or3(SWFStream& in, movie_definition& m,
// Kerning pairs.
in.ensureBytes(2);
- const boost::uint16_t kerning_count = in.read_u16();
+ const std::uint16_t kerning_count = in.read_u16();
in.ensureBytes(kerning_count * (wideCodes ? 6 : 4));
for (int i = 0; i < kerning_count; ++i) {
- boost::uint16_t char0, char1;
+ std::uint16_t char0, char1;
if (wideCodes) {
char0 = in.read_u16();
char1 = in.read_u16();
@@ -312,7 +311,7 @@ DefineFontTag::readDefineFont2Or3(SWFStream& in, movie_definition& m,
char0 = in.read_u8();
char1 = in.read_u8();
}
- const boost::int16_t adjustment = in.read_s16();
+ const std::int16_t adjustment = in.read_s16();
kerning_pair k;
k.m_char0 = char0;
@@ -336,7 +335,7 @@ DefineFontInfoTag::loader(SWFStream& in, TagType tag, movie_definition& m,
assert(tag == DEFINEFONTINFO || tag == DEFINEFONTINFO2);
in.ensureBytes(2);
- const boost::uint16_t fontID = in.read_u16();
+ const std::uint16_t fontID = in.read_u16();
Font* f = m.get_font(fontID);
if (!f) {
@@ -356,17 +355,17 @@ DefineFontInfoTag::loader(SWFStream& in, TagType tag, movie_definition& m,
in.read_string_with_length(name);
in.ensureBytes(1);
- const boost::uint8_t flags = in.read_u8();
+ const std::uint8_t flags = in.read_u8();
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/DefineFontTag.h b/libcore/swf/DefineFontTag.h
index 660834f..e009be3 100644
--- a/libcore/swf/DefineFontTag.h
+++ b/libcore/swf/DefineFontTag.h
@@ -34,7 +34,7 @@
#include "Font.h"
#include <map>
#include <string>
-#include <boost/cstdint.hpp>
+#include <cstdint>
// Forward declarations
namespace gnash {
@@ -79,7 +79,7 @@ public:
/// @return shared ownership of the tag's Font::CodeTable. This
/// may be NULL, which can be checked first with
/// hasCodeTable().
- boost::shared_ptr<const Font::CodeTable> getCodeTable() const {
+ std::shared_ptr<const Font::CodeTable> getCodeTable() const {
return _codeTable;
}
@@ -93,21 +93,21 @@ public:
/// The font leading value
//
/// This is documented to be int16_t, but may be uint16_t like advance.
- boost::int16_t leading() const {
+ std::int16_t leading() const {
return _leading;
}
/// The font ascent value
//
/// This is documented to be int16_t, but may be uint16_t like advance.
- boost::int16_t ascent() const {
+ std::int16_t ascent() const {
return _ascent;
}
/// The font descent value
//
/// This is documented to be int16_t, but may be uint16_t like advance.
- boost::int16_t descent() const {
+ std::int16_t descent() const {
return _descent;
}
@@ -135,22 +135,20 @@ private:
std::string _name;
bool _subpixelFont;
- bool _hasLayout;
bool _unicodeChars;
bool _shiftJISChars;
bool _ansiChars;
bool _italic;
bool _bold;
- bool _wideCodes;
- boost::int16_t _ascent;
- boost::int16_t _descent;
- boost::int16_t _leading;
+ std::int16_t _ascent;
+ std::int16_t _descent;
+ std::int16_t _leading;
- typedef std::map<kerning_pair, boost::int16_t> KerningTable;
+ typedef std::map<kerning_pair, std::int16_t> KerningTable;
KerningTable _kerningPairs;
- boost::shared_ptr<const Font::CodeTable> _codeTable;
+ std::shared_ptr<const Font::CodeTable> _codeTable;
};
diff --git a/libcore/swf/DefineMorphShapeTag.cpp b/libcore/swf/DefineMorphShapeTag.cpp
index 13927f8..50382ac 100644
--- a/libcore/swf/DefineMorphShapeTag.cpp
+++ b/libcore/swf/DefineMorphShapeTag.cpp
@@ -25,7 +25,7 @@
#include "DefineMorphShapeTag.h"
-#include <boost/cstdint.hpp>
+#include <cstdint>
#include "TypesParser.h"
#include "MorphShape.h"
@@ -47,7 +47,7 @@ DefineMorphShapeTag::loader(SWFStream& in, TagType tag, movie_definition& md,
const RunResources& r)
{
in.ensureBytes(2);
- const boost::uint16_t id = in.read_u16();
+ const std::uint16_t id = in.read_u16();
IF_VERBOSE_PARSE(
log_parse("DefineMorphShapeTag: id = %d", id);
@@ -58,7 +58,7 @@ DefineMorphShapeTag::loader(SWFStream& in, TagType tag, movie_definition& md,
}
DefineMorphShapeTag::DefineMorphShapeTag(SWFStream& in, TagType tag,
- movie_definition& md, const RunResources& r, boost::uint16_t id)
+ movie_definition& md, const RunResources& r, std::uint16_t id)
:
DefinitionTag(id)
{
@@ -69,7 +69,7 @@ DisplayObject*
DefineMorphShapeTag::createDisplayObject(Global_as& gl,
DisplayObject* parent) const
{
- return new MorphShape(getRoot(gl), 0, this, parent);
+ return new MorphShape(getRoot(gl), nullptr, this, parent);
}
void
@@ -110,7 +110,7 @@ DefineMorphShapeTag::read(SWFStream& in, TagType tag, movie_definition& md,
static_cast<void>(in.read_u32());
// Next line will throw ParserException on malformed SWF
- const boost::uint16_t fillCount = in.read_variable_count();
+ const std::uint16_t fillCount = in.read_variable_count();
SWF::Subshape subshape1;
SWF::Subshape subshape2;
@@ -121,7 +121,7 @@ DefineMorphShapeTag::read(SWFStream& in, TagType tag, movie_definition& md,
subshape2.addFillStyle(*fp.second);
}
- const boost::uint16_t lineCount = in.read_variable_count();
+ const std::uint16_t lineCount = in.read_variable_count();
LineStyle ls1, ls2;
for (size_t i = 0; i < lineCount; ++i) {
ls1.read_morph(in, tag, md, r, &ls2);
diff --git a/libcore/swf/DefineMorphShapeTag.h b/libcore/swf/DefineMorphShapeTag.h
index 54add1b..e2c5810 100644
--- a/libcore/swf/DefineMorphShapeTag.h
+++ b/libcore/swf/DefineMorphShapeTag.h
@@ -68,7 +68,7 @@ public:
private:
DefineMorphShapeTag(SWFStream& in, SWF::TagType tag, movie_definition& md,
- const RunResources& r, boost::uint16_t id);
+ const RunResources& r, std::uint16_t id);
/// Read a DefineMorphShape tag from stream
//
diff --git a/libcore/swf/DefineScalingGridTag.cpp b/libcore/swf/DefineScalingGridTag.cpp
index 892b919..4954409 100644
--- a/libcore/swf/DefineScalingGridTag.cpp
+++ b/libcore/swf/DefineScalingGridTag.cpp
@@ -36,7 +36,7 @@ DefineScalingGridTag::loader(SWFStream& in, TagType /*tag*/,
movie_definition& /*md*/, const RunResources& /*r*/)
{
in.ensureBytes(2);
- const boost::uint16_t id = in.read_u16();
+ const std::uint16_t id = in.read_u16();
IF_VERBOSE_PARSE(
log_parse("DefineScalingGridTag: id = %d", id);
diff --git a/libcore/swf/DefineSceneAndFrameLabelDataTag.h b/libcore/swf/DefineSceneAndFrameLabelDataTag.h
index 5f29288..456d5d6 100644
--- a/libcore/swf/DefineSceneAndFrameLabelDataTag.h
+++ b/libcore/swf/DefineSceneAndFrameLabelDataTag.h
@@ -77,22 +77,22 @@ private:
void read(SWFStream& in) {
- boost::uint32_t scenes = in.read_V32();
+ std::uint32_t scenes = in.read_V32();
IF_VERBOSE_PARSE(log_parse("Scene count: %d", scenes));
for (size_t i = 0; i < scenes; ++i) {
- boost::uint32_t offset = in.read_V32();
+ std::uint32_t offset = in.read_V32();
std::string name;
in.read_string(name);
IF_VERBOSE_PARSE(log_parse("Offset %d name: %s", offset, name));
_scenes[offset] = name;
}
- boost::uint32_t labels = in.read_V32();
+ std::uint32_t labels = in.read_V32();
for (size_t i = 0; i < labels; ++i) {
- boost::uint32_t num = in.read_V32();
+ std::uint32_t num = in.read_V32();
std::string label;
in.read_string(label);
IF_VERBOSE_PARSE(log_parse("Frame %d label: %s", num, label));
@@ -101,8 +101,8 @@ private:
}
- std::map<boost::uint32_t, std::string> _scenes;
- std::map<boost::uint32_t, std::string> _frames;
+ std::map<std::uint32_t, std::string> _scenes;
+ std::map<std::uint32_t, std::string> _frames;
};
diff --git a/libcore/swf/DefineShapeTag.cpp b/libcore/swf/DefineShapeTag.cpp
index faa279a..b51e2a6 100644
--- a/libcore/swf/DefineShapeTag.cpp
+++ b/libcore/swf/DefineShapeTag.cpp
@@ -52,7 +52,7 @@ DefineShapeTag::loader(SWFStream& in, TagType tag, movie_definition& m,
tag == DEFINESHAPE4_);
in.ensureBytes(2);
- const boost::uint16_t id = in.read_u16();
+ const std::uint16_t id = in.read_u16();
IF_VERBOSE_PARSE(
log_parse(_("DefineShapeTag(%s): id = %d"), tag, id);
@@ -66,11 +66,11 @@ DefineShapeTag::loader(SWFStream& in, TagType tag, movie_definition& m,
DisplayObject*
DefineShapeTag::createDisplayObject(Global_as& gl, DisplayObject* parent) const
{
- return new Shape(getRoot(gl), 0, this, parent);
+ return new Shape(getRoot(gl), nullptr, this, parent);
}
bool
-DefineShapeTag::pointTestLocal(boost::int32_t x, boost::int32_t y,
+DefineShapeTag::pointTestLocal(std::int32_t x, std::int32_t y,
const SWFMatrix& wm) const
{
return _shape.pointTest(x, y, wm);
@@ -78,7 +78,7 @@ DefineShapeTag::pointTestLocal(boost::int32_t x, boost::int32_t y,
DefineShapeTag::DefineShapeTag(SWFStream& in, TagType tag,
- movie_definition& m, const RunResources& r, boost::uint16_t id)
+ movie_definition& m, const RunResources& r, std::uint16_t id)
:
DefinitionTag(id),
_shape(in, tag, m, r)
diff --git a/libcore/swf/DefineShapeTag.h b/libcore/swf/DefineShapeTag.h
index 2291606..093783c 100644
--- a/libcore/swf/DefineShapeTag.h
+++ b/libcore/swf/DefineShapeTag.h
@@ -53,13 +53,13 @@ public:
/// a matrix is given to allow computing proper line
/// thickness based on display scale.
///
- bool pointTestLocal(boost::int32_t x, boost::int32_t y,
+ bool pointTestLocal(std::int32_t x, std::int32_t y,
const SWFMatrix& wm) const;
private:
DefineShapeTag(SWFStream& in, TagType tag, movie_definition& m,
- const RunResources& r, boost::uint16_t id);
+ const RunResources& r, std::uint16_t id);
/// The actual shape data is stored in this record.
const ShapeRecord _shape;
diff --git a/libcore/swf/DefineTextTag.cpp b/libcore/swf/DefineTextTag.cpp
index 5ed0b51..2f38af2 100644
--- a/libcore/swf/DefineTextTag.cpp
+++ b/libcore/swf/DefineTextTag.cpp
@@ -45,9 +45,9 @@ DefineTextTag::loader(SWFStream& in, TagType tag, movie_definition& m,
assert(tag == DEFINETEXT);
in.ensureBytes(2);
- const boost::uint16_t id = in.read_u16();
+ const std::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);
);
@@ -59,7 +59,7 @@ DisplayObject*
DefineTextTag::createDisplayObject(Global_as& gl, DisplayObject* parent)
const
{
- return new StaticText(getRoot(gl), 0, this, parent);
+ return new StaticText(getRoot(gl), nullptr, this, parent);
}
bool
@@ -86,9 +86,9 @@ DefineText2Tag::loader(SWFStream& in, TagType tag, movie_definition& m,
assert(tag == DEFINETEXT2);
in.ensureBytes(2);
- const boost::uint16_t id = in.read_u16();
+ const std::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/DefineTextTag.h b/libcore/swf/DefineTextTag.h
index afcd437..7dcf068 100644
--- a/libcore/swf/DefineTextTag.h
+++ b/libcore/swf/DefineTextTag.h
@@ -76,7 +76,7 @@ private:
//
/// This should only be constructed using the loader() functions.
DefineTextTag(SWFStream& in, movie_definition& m, TagType tag,
- boost::uint16_t id)
+ std::uint16_t id)
:
DefinitionTag(id)
{
diff --git a/libcore/swf/DefineVideoStreamTag.cpp b/libcore/swf/DefineVideoStreamTag.cpp
index e337777..37e4484 100644
--- a/libcore/swf/DefineVideoStreamTag.cpp
+++ b/libcore/swf/DefineVideoStreamTag.cpp
@@ -18,8 +18,7 @@
#include "DefineVideoStreamTag.h"
-#include <boost/shared_array.hpp>
-#include <boost/thread/mutex.hpp>
+#include <mutex>
#include <boost/ptr_container/ptr_vector.hpp>
#include <memory>
#include <vector>
@@ -37,7 +36,7 @@
namespace gnash {
namespace SWF {
-DefineVideoStreamTag::DefineVideoStreamTag(SWFStream& in, boost::uint16_t id)
+DefineVideoStreamTag::DefineVideoStreamTag(SWFStream& in, std::uint16_t id)
:
DefinitionTag(id),
_width(0),
@@ -58,9 +57,9 @@ DefineVideoStreamTag::loader(SWFStream& in, SWF::TagType tag,
assert(tag == SWF::DEFINEVIDEOSTREAM); // 60
in.ensureBytes(2);
- boost::uint16_t id = in.read_u16();
+ std::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 +105,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);
+ std::lock_guard<std::mutex> lock(_video_mutex);
+ _video_frames.push_back(frame.release());
}
DisplayObject*
diff --git a/libcore/swf/DefineVideoStreamTag.h b/libcore/swf/DefineVideoStreamTag.h
index fe1e406..2185dd5 100644
--- a/libcore/swf/DefineVideoStreamTag.h
+++ b/libcore/swf/DefineVideoStreamTag.h
@@ -19,8 +19,7 @@
#ifndef GNASH_SWF_DEFINEVIDEOSTREAMTAG_H
#define GNASH_SWF_DEFINEVIDEOSTREAMTAG_H
-#include <boost/shared_array.hpp>
-#include <boost/thread/mutex.hpp>
+#include <mutex>
#include <boost/ptr_container/ptr_vector.hpp>
#include <memory>
#include <vector>
@@ -39,29 +38,6 @@ namespace gnash {
namespace gnash {
-/// Class used to store data for the undecoded embedded video frames.
-/// Contains the data, the data size and the type of the frame
-class VideoData
-{
-public:
- VideoData(boost::shared_array<boost::uint8_t> data, boost::uint32_t size,
- media::videoFrameType ft)
- :
- videoData(data),
- dataSize(size),
- frameType(ft)
- {
- }
-
- ~VideoData()
- {
- }
-
- boost::shared_array<boost::uint8_t> videoData;
- boost::uint32_t dataSize;
- media::videoFrameType frameType;
-};
-
namespace SWF {
class DefineVideoStreamTag : public DefinitionTag
@@ -138,9 +114,9 @@ public:
/// @tparam t A visitor that should accept a const
/// media::EncodedVideoFrame.
template<typename T>
- size_t visitSlice(const T& t, boost::uint32_t from, boost::uint32_t to) const {
+ size_t visitSlice(const T& t, std::uint32_t from, std::uint32_t to) const {
- boost::mutex::scoped_lock lock(_video_mutex);
+ std::lock_guard<std::mutex> lock(_video_mutex);
// It's assumed that frame numbers are in order.
EmbeddedFrames::const_iterator lower = std::lower_bound(
@@ -153,7 +129,7 @@ public:
return (upper - lower);
}
- void addVideoFrameTag(std::auto_ptr<media::EncodedVideoFrame> frame);
+ void addVideoFrameTag(std::unique_ptr<media::EncodedVideoFrame> frame);
private:
@@ -164,26 +140,26 @@ private:
/// constructor, as that's the one which will eventually get passed
/// the id.
/// NOTE: What dynamically created definitions?
- DefineVideoStreamTag(SWFStream& in, boost::uint16_t id);
+ DefineVideoStreamTag(SWFStream& in, std::uint16_t id);
void read(SWFStream& in);
/// Reserved flags read from DEFINEVIDEOSTREAM tag
- boost::uint8_t m_reserved_flags;
+ std::uint8_t m_reserved_flags;
/// Flags read from DEFINEVIDEOSTREAM tag
- boost::uint8_t m_deblocking_flags;
+ std::uint8_t m_deblocking_flags;
/// Smoothing flag, as read from DEFINEVIDEOSTREAM tag
bool m_smoothing_flags;
/// Frame in which the DEFINEVIDEOSTREAM was found
- //boost::uint16_t m_start_frame;
+ //std::uint16_t m_start_frame;
/// Number of frames in the embedded video, as reported
/// by the DEFINEVIDEOSTREAM tag
///
- boost::uint16_t m_num_frames;
+ std::uint16_t m_num_frames;
/// Codec ID as read from DEFINEVIDEOSTREAM tag
//
@@ -199,21 +175,21 @@ private:
SWFRect m_bound;
// Mutable for locking in const member functions.
- mutable boost::mutex _video_mutex;
+ mutable std::mutex _video_mutex;
EmbeddedFrames _video_frames;
/// Width of the video
- boost::uint32_t _width;
+ std::uint32_t _width;
/// Height of the video
- boost::uint32_t _height;
+ std::uint32_t _height;
/// Info about embedded video
//
/// 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/DefinitionTag.h b/libcore/swf/DefinitionTag.h
index 7d3db70..77556e2 100644
--- a/libcore/swf/DefinitionTag.h
+++ b/libcore/swf/DefinitionTag.h
@@ -20,8 +20,7 @@
#define GNASH_DEFINITION_TAG_H
-#include <boost/noncopyable.hpp>
-#include <boost/cstdint.hpp>
+#include <cstdint>
#include "ControlTag.h"
#include "dsodefs.h" // for DSOTEXPORT
@@ -74,17 +73,17 @@ public:
/// The immutable id of the DefinitionTag.
//
/// @return the id of the DefinitionTag as parsed from a SWF.
- boost::uint16_t id() const {
+ std::uint16_t id() const {
return _id;
}
protected:
- DefinitionTag(boost::uint16_t id) : _id(id) {}
+ DefinitionTag(std::uint16_t id) : _id(id) {}
private:
- const boost::uint16_t _id;
+ const std::uint16_t _id;
};
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/DoInitActionTag.h b/libcore/swf/DoInitActionTag.h
index d4fe198..ca90153 100644
--- a/libcore/swf/DoInitActionTag.h
+++ b/libcore/swf/DoInitActionTag.h
@@ -72,7 +72,7 @@ public:
}
in.ensureBytes(2);
- const boost::uint16_t cid = in.read_u16();
+ const std::uint16_t cid = in.read_u16();
IF_VERBOSE_PARSE(
log_parse(_(" tag %d: do_init_action_loader"), tag);
diff --git a/libcore/swf/ExportAssetsTag.h b/libcore/swf/ExportAssetsTag.h
index 5e0a92f..3ce8c54 100644
--- a/libcore/swf/ExportAssetsTag.h
+++ b/libcore/swf/ExportAssetsTag.h
@@ -53,9 +53,8 @@ public:
// TODO: use Movie to store the actual exports.
virtual void executeState(MovieClip* m, DisplayList& /*l*/) const {
Movie* mov = m->get_root();
- for (Exports::const_iterator it = _exports.begin(), e = _exports.end();
- it != e; ++it) {
- const boost::uint16_t id = mov->definition()->exportID(*it);
+ for (const std::string& the_export : _exports) {
+ const std::uint16_t id = mov->definition()->exportID(the_export);
// We exported it, so we assume it is known.
assert(id);
@@ -73,7 +72,7 @@ private:
void read(SWFStream& in, movie_definition& m) {
in.ensureBytes(2);
- const boost::uint16_t count = in.read_u16();
+ const std::uint16_t count = in.read_u16();
IF_VERBOSE_PARSE(
log_parse(_(" export: count = %d"), count);
@@ -82,7 +81,7 @@ private:
// Read the exports.
for (size_t i = 0; i < count; ++i) {
in.ensureBytes(2);
- const boost::uint16_t id = in.read_u16();
+ const std::uint16_t id = in.read_u16();
if (!id) continue;
diff --git a/libcore/swf/ImportAssetsTag.h b/libcore/swf/ImportAssetsTag.h
index ca2ff0f..0508e40 100644
--- a/libcore/swf/ImportAssetsTag.h
+++ b/libcore/swf/ImportAssetsTag.h
@@ -59,9 +59,8 @@ public:
/// genuine id of the DefinitionTag.
virtual void executeState(MovieClip* m, DisplayList& /*l*/) const {
Movie* mov = m->get_root();
- for (Imports::const_iterator it = _imports.begin(), e = _imports.end();
- it != e; ++it) {
- mov->addCharacter(it->first);
+ for (const Import& import : _imports) {
+ mov->addCharacter(import.first);
}
}
@@ -87,12 +86,12 @@ private:
if (t == SWF::IMPORTASSETS2) {
in.ensureBytes(2);
import_version = in.read_uint(8);
- boost::uint8_t reserved = in.read_uint(8);
+ std::uint8_t reserved = in.read_uint(8);
UNUSED(reserved);
}
in.ensureBytes(2);
- const boost::uint16_t count = in.read_u16();
+ const std::uint16_t count = in.read_u16();
IF_VERBOSE_PARSE(
log_parse(_(" import: version = %u, source_url = %s (%s), "
@@ -130,7 +129,7 @@ private:
for (size_t i = 0; i < count; ++i)
{
in.ensureBytes(2);
- const boost::uint16_t id = in.read_u16();
+ const std::uint16_t id = in.read_u16();
// We don't consider 0 valid.
if (!id) continue;
diff --git a/libcore/swf/PlaceObject2Tag.cpp b/libcore/swf/PlaceObject2Tag.cpp
index cb63557..bc6e0fb 100644
--- a/libcore/swf/PlaceObject2Tag.cpp
+++ b/libcore/swf/PlaceObject2Tag.cpp
@@ -33,6 +33,7 @@
#include "swf_event.h"
#include "log.h"
#include "SWFStream.h"
+#include "Filters.h"
#include "filter_factory.h"
#include "GnashAlgorithm.h"
#include "action_buffer.h"
@@ -99,7 +100,7 @@ PlaceObject2Tag::readPlaceActions(SWFStream& in)
const int movie_version = _movie_def.get_version();
in.ensureBytes(2);
- boost::uint16_t reserved = in.read_u16();
+ std::uint16_t reserved = in.read_u16();
IF_VERBOSE_MALFORMED_SWF(
if (reserved != 0) {
log_swferror(_("Reserved field in PlaceObject actions == "
@@ -107,7 +108,7 @@ PlaceObject2Tag::readPlaceActions(SWFStream& in)
}
);
- boost::uint32_t all_event_flags;
+ std::uint32_t all_event_flags;
// The logical 'or' of all the following handlers.
if (movie_version >= 6) {
@@ -136,7 +137,7 @@ PlaceObject2Tag::readPlaceActions(SWFStream& in)
// Read event.
in.align();
- boost::uint32_t flags;
+ std::uint32_t flags;
if (movie_version >= 6) {
in.ensureBytes(4);
flags = in.read_u32();
@@ -152,7 +153,7 @@ PlaceObject2Tag::readPlaceActions(SWFStream& in)
}
in.ensureBytes(4);
- boost::uint32_t event_length = in.read_u32();
+ std::uint32_t event_length = in.read_u32();
if (in.get_tag_end_position() - in.tell() < event_length) {
IF_VERBOSE_MALFORMED_SWF(
log_swferror(_("swf_event::read(), "
@@ -182,10 +183,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 +242,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());
}
}
}
@@ -398,7 +399,7 @@ PlaceObject2Tag::readPlaceObject3(SWFStream& in)
LOG_ONCE(log_unimpl("Blend mode in PlaceObject tag"));
}
- boost::uint8_t bitmask = 0;
+ std::uint8_t bitmask = 0;
if (hasBitmapCaching()) {
// cacheAsBitmap is a boolean value, so the flag itself ought to be
// enough. Alexis' SWF reference is unsure about this, but suggests
diff --git a/libcore/swf/PlaceObject2Tag.h b/libcore/swf/PlaceObject2Tag.h
index cf43f68..d41dc34 100644
--- a/libcore/swf/PlaceObject2Tag.h
+++ b/libcore/swf/PlaceObject2Tag.h
@@ -106,9 +106,9 @@ public:
return m_has_flags2 & (HAS_CHARACTER_MASK | MOVE_MASK);
}
- boost::uint16_t getRatio() const { return _ratio; }
+ std::uint16_t getRatio() const { return _ratio; }
int getClipDepth() const { return m_clip_depth; }
- boost::uint16_t getID() const { return _id; }
+ std::uint16_t getID() const { return _id; }
const std::string& getName() const { return m_name; }
const SWFMatrix& getMatrix() const { return m_matrix; }
const SWFCxForm& getCxform() const { return m_color_transform; }
@@ -144,7 +144,7 @@ public:
//
/// This is stored as a uint8_t to allow for future expansion of
/// blend modes.
- boost::uint8_t getBlendMode() const {
+ std::uint8_t getBlendMode() const {
return _blendMode;
}
@@ -162,16 +162,16 @@ private:
// read SWF::PLACEOBJECT3
void readPlaceObject3(SWFStream& in);
- boost::uint8_t m_has_flags2;
- boost::uint8_t m_has_flags3;
- boost::uint16_t _id;
+ std::uint8_t m_has_flags2;
+ std::uint8_t m_has_flags3;
+ std::uint16_t _id;
SWFCxForm m_color_transform;
SWFMatrix m_matrix;
- boost::uint16_t _ratio;
+ std::uint16_t _ratio;
std::string m_name;
int m_clip_depth;
- boost::uint8_t _blendMode;
+ std::uint8_t _blendMode;
/// NOTE: getPlaceType() is dependent on the enum values.
enum PlaceType
diff --git a/libcore/swf/ScriptLimitsTag.h b/libcore/swf/ScriptLimitsTag.h
index f51e535..3953757 100644
--- a/libcore/swf/ScriptLimitsTag.h
+++ b/libcore/swf/ScriptLimitsTag.h
@@ -74,8 +74,8 @@ private:
}
- boost::uint16_t _recursionLimit;
- boost::uint16_t _timeoutLimit;
+ std::uint16_t _recursionLimit;
+ std::uint16_t _timeoutLimit;
};
} // namespace gnash::SWF
diff --git a/libcore/swf/SetTabIndexTag.cpp b/libcore/swf/SetTabIndexTag.cpp
index 9cfa7c8..fda4f34 100644
--- a/libcore/swf/SetTabIndexTag.cpp
+++ b/libcore/swf/SetTabIndexTag.cpp
@@ -33,14 +33,14 @@ SetTabIndexTag::loader(SWFStream& in, TagType /*tag*/, movie_definition& /*md*/,
const RunResources& /*r*/)
{
in.ensureBytes(2);
- boost::uint16_t depth = in.read_u16();
+ std::uint16_t depth = in.read_u16();
IF_VERBOSE_PARSE(
log_parse("SetTabIndexTag: depth = %d", depth);
);
in.ensureBytes(2);
- boost::uint16_t tab_index = in.read_u16();
+ std::uint16_t tab_index = in.read_u16();
UNUSED(tab_index);
LOG_ONCE( log_unimpl("SetTabIndexTag") );
diff --git a/libcore/swf/ShapeRecord.cpp b/libcore/swf/ShapeRecord.cpp
index 23d8b0a..44e5fde 100644
--- a/libcore/swf/ShapeRecord.cpp
+++ b/libcore/swf/ShapeRecord.cpp
@@ -52,8 +52,8 @@ public:
Lerp(typename T::const_iterator style1, typename T::const_iterator style2,
const double ratio)
:
- _style1(style1),
- _style2(style2),
+ _style1(std::move(style1)),
+ _style2(std::move(style2)),
_ratio(ratio)
{}
@@ -69,71 +69,6 @@ private:
const double _ratio;
};
-// Facilities for working with list of paths.
-class PathList
-{
- typedef SWF::ShapeRecord::Paths Paths;
-public:
-
- PathList(const Paths& paths)
- :
- _paths(paths),
- _currpath(0),
- _curredge(0),
- _nedges(computeNumberOfEdges(_paths))
- {}
-
- /// Return number of edges in the path list
- size_t size() const
- {
- return _nedges;
- }
-
- /// Get next edge in the path list.
- //
- /// After last edge in the list has been fetched,
- /// next call to this function will return first
- /// edge again.
- ///
- const Edge& getNextEdge()
- {
- const Edge& ret = _paths[_currpath][_curredge];
- if ( ++_curredge >= _paths[_currpath].size() ) {
- if ( ++_currpath >= _paths.size() ) {
- // this is not really needed,
- // but it's simpler to do so that
- // to make next call fail or abort..
- _currpath = 0;
- _curredge = 0;
- }
- }
- return ret;
- }
-
- /// Compute total number of edges
- static size_t computeNumberOfEdges(const Paths& paths)
- {
- size_t count=0;
- for (Paths::const_iterator i = paths.begin(), e = paths.end();
- i != e; ++i) {
-
- count += i->size();
- }
- return count;
- }
-
-private:
-
- const Paths& _paths;
-
- size_t _currpath;
-
- size_t _curredge;
-
- size_t _nedges;
-
-};
-
} // anonymous namespace
ShapeRecord::ShapeRecord(SWFStream& in, SWF::TagType tag, movie_definition& m,
@@ -170,8 +105,7 @@ Subshape::computeBounds(int swfVersion) const
{
SWFRect bounds;
- for (unsigned int i = 0; i < _paths.size(); i++) {
- const Path& p = _paths[i];
+ for (const Path& p : _paths) {
unsigned thickness = 0;
if ( p.m_line ) {
@@ -198,7 +132,9 @@ void
ShapeRecord::setLerp(const ShapeRecord& aa, const ShapeRecord& bb,
const double ratio)
{
- assert(_subshapes.size() == 1);
+ if (_subshapes.empty()) {
+ return;
+ }
// Update current bounds.
_bounds.set_lerp(aa.getBounds(), bb.getBounds(), ratio);
@@ -332,7 +268,7 @@ ShapeRecord::read(SWFStream& in, SWF::TagType tag, movie_definition& m,
// Use read_u8 to force alignment.
in.ensureBytes(1);
- boost::uint8_t num_bits = in.read_u8();
+ std::uint8_t num_bits = in.read_u8();
int num_fill_bits = (num_bits & 0xF0) >> 4;
int num_line_bits = (num_bits & 0x0F);
@@ -402,17 +338,22 @@ ShapeRecord::read(SWFStream& in, SWF::TagType tag, movie_definition& m,
}
in.ensureBits(5);
int num_move_bits = in.read_uint(5);
- in.ensureBits(2 * num_move_bits);
- int move_x = in.read_sint(num_move_bits);
- int move_y = in.read_sint(num_move_bits);
-
- x = move_x;
- y = move_y;
+ if (num_move_bits > 0) {
+ in.ensureBits(2 * num_move_bits);
+ int move_x = in.read_sint(num_move_bits);
+ int move_y = in.read_sint(num_move_bits);
- // Set the beginning of the path.
- current_path.ap.x = x;
- current_path.ap.y = y;
+ x = move_x;
+ y = move_y;
+ // Set the beginning of the path.
+ current_path.ap.x = x;
+ current_path.ap.y = y;
+ } else {
+ IF_VERBOSE_MALFORMED_SWF(
+ log_swferror(_("Shape move-to missing destination"));
+ );
+ }
#if SHAPE_LOG
IF_VERBOSE_PARSE(
log_parse(_(" Shape read: moveto %d %d"), x, y);
@@ -601,7 +542,7 @@ readFillStyles(ShapeRecord::FillStyles& styles, SWFStream& in,
SWF::TagType tag, movie_definition& m, const RunResources& /*r*/)
{
in.ensureBytes(1);
- boost::uint16_t fillcount = in.read_u8();
+ std::uint16_t fillcount = in.read_u8();
if (tag != SWF::DEFINESHAPE) {
if (fillcount == 0xff) {
in.ensureBytes(2);
@@ -615,7 +556,7 @@ readFillStyles(ShapeRecord::FillStyles& styles, SWFStream& in,
// Read the styles.
styles.reserve(styles.size() + fillcount);
- for (boost::uint16_t i = 0; i < fillcount; ++i) {
+ for (std::uint16_t i = 0; i < fillcount; ++i) {
OptionalFillPair fp = readFills(in, tag, m, false);
styles.push_back(fp.first);
IF_VERBOSE_PARSE(
@@ -661,10 +602,9 @@ operator<<(std::ostream& o, const ShapeRecord& sh)
o << boost::format("Shape Record: bounds %1%") % sh.getBounds();
- for (ShapeRecord::Subshapes::const_iterator it = sh.subshapes().begin(),
- end = sh.subshapes().end(); it != end; ++it) {
+ for (const Subshape& subshape : sh.subshapes()) {
- const ShapeRecord::FillStyles& fills = it->fillStyles();
+ const ShapeRecord::FillStyles& fills = subshape.fillStyles();
std::copy(fills.begin(), fills.end(),
std::ostream_iterator<FillStyle>(o, ","));
}
diff --git a/libcore/swf/ShapeRecord.h b/libcore/swf/ShapeRecord.h
index 2f73612..478cd83 100644
--- a/libcore/swf/ShapeRecord.h
+++ b/libcore/swf/ShapeRecord.h
@@ -180,12 +180,11 @@ public:
_bounds = bounds;
}
- bool pointTest(boost::int32_t x, boost::int32_t y,
+ bool pointTest(std::int32_t x, std::int32_t y,
const SWFMatrix& wm) const {
- for (SWF::ShapeRecord::Subshapes::const_iterator it = _subshapes.begin(),
- end = _subshapes.end(); it != end; ++it) {
+ for (const Subshape& subshape : _subshapes) {
- if (geometry::pointTest(it->paths(), it->lineStyles(), x, y, wm)) {
+ if (geometry::pointTest(subshape.paths(), subshape.lineStyles(), x, y, wm)) {
return true;
}
}
diff --git a/libcore/swf/SoundStreamHeadTag.cpp b/libcore/swf/SoundStreamHeadTag.cpp
index 516393f..3b20909 100644
--- a/libcore/swf/SoundStreamHeadTag.cpp
+++ b/libcore/swf/SoundStreamHeadTag.cpp
@@ -18,7 +18,7 @@
#include "SoundStreamHeadTag.h"
-#include <boost/cstdint.hpp>
+#include <cstdint>
#include <memory>
#include "SWF.h"
@@ -54,9 +54,9 @@ SoundStreamHeadTag::loader(SWFStream& in, TagType tag, movie_definition& m,
// These are all unused by current implementation
int reserved = in.read_uint(4); UNUSED(reserved);
- const boost::uint32_t samplerates[] = { 5512, 11025, 22050, 44100 };
+ const std::uint32_t samplerates[] = { 5512, 11025, 22050, 44100 };
- boost::uint8_t pbSoundRate = in.read_uint(2);
+ std::uint8_t pbSoundRate = in.read_uint(2);
if (pbSoundRate >= arraySize(samplerates)) {
IF_VERBOSE_MALFORMED_SWF(
log_swferror("SOUNDSTREAMHEAD: playback sound rate %d (expected "
@@ -64,14 +64,14 @@ SoundStreamHeadTag::loader(SWFStream& in, TagType tag, movie_definition& m,
);
pbSoundRate = 0;
}
- const boost::uint32_t playbackSoundRate = samplerates[pbSoundRate];
+ const std::uint32_t playbackSoundRate = samplerates[pbSoundRate];
const bool playbackSound16bit = in.read_bit();
const bool playbackSoundStereo = in.read_bit();
// These are the used ones
media::audioCodecType format =
static_cast<media::audioCodecType>(in.read_uint(4)); // TODO: check input !
- boost::uint8_t stSoundRate = in.read_uint(2);
+ std::uint8_t stSoundRate = in.read_uint(2);
if (stSoundRate >= arraySize(samplerates)) {
IF_VERBOSE_MALFORMED_SWF(
@@ -80,7 +80,7 @@ SoundStreamHeadTag::loader(SWFStream& in, TagType tag, movie_definition& m,
);
stSoundRate=0;
}
- const boost::uint32_t streamSoundRate = samplerates[stSoundRate];
+ const std::uint32_t streamSoundRate = samplerates[stSoundRate];
const bool streamSound16bit = in.read_bit();
const bool streamSoundStereo = in.read_bit();
@@ -112,7 +112,7 @@ SoundStreamHeadTag::loader(SWFStream& in, TagType tag, movie_definition& m,
}
// 2 bytes here
- const boost::uint16_t sampleCount = in.read_u16();
+ const std::uint16_t sampleCount = in.read_u16();
if (!sampleCount) {
// this seems common too, we'd need to reproduce with a custom
@@ -123,7 +123,7 @@ SoundStreamHeadTag::loader(SWFStream& in, TagType tag, movie_definition& m,
);
}
- boost::int16_t latency = 0;
+ std::int16_t latency = 0;
if (format == media::AUDIO_CODEC_MP3) {
try {
in.ensureBytes(2);
diff --git a/libcore/swf/SoundStreamHeadTag.h b/libcore/swf/SoundStreamHeadTag.h
index 318e111..f3de563 100644
--- a/libcore/swf/SoundStreamHeadTag.h
+++ b/libcore/swf/SoundStreamHeadTag.h
@@ -20,8 +20,6 @@
#define GNASH_SWF_SOUNDSTREAMHEAD_TAG_H
-#include <boost/cstdint.hpp>
-
#include "SWF.h"
// Forward declarations
diff --git a/libcore/swf/StartSoundTag.cpp b/libcore/swf/StartSoundTag.cpp
index b6a9eb2..0e1ae40 100644
--- a/libcore/swf/StartSoundTag.cpp
+++ b/libcore/swf/StartSoundTag.cpp
@@ -27,6 +27,7 @@
#include "RunResources.h"
#include "SoundInfoRecord.h"
#include "MovieClip.h"
+#include "sound_handler.h"
#include <limits>
@@ -91,7 +92,7 @@ StartSoundTag::executeActions(MovieClip* m, DisplayList& /* dlist */) const
else {
const sound::SoundEnvelopes* env =
- _soundInfo.envelopes.empty() ? 0 : &_soundInfo.envelopes;
+ _soundInfo.envelopes.empty() ? nullptr : &_soundInfo.envelopes;
handler->startSound(m_handler_id,
_soundInfo.loopCount,
diff --git a/libcore/swf/StartSoundTag.h b/libcore/swf/StartSoundTag.h
index 6d6dd63..6a24543 100644
--- a/libcore/swf/StartSoundTag.h
+++ b/libcore/swf/StartSoundTag.h
@@ -23,7 +23,7 @@
#include "SWF.h" // for TagType definition
#include "SoundInfoRecord.h"
-#include <boost/cstdint.hpp> // for boost::uint16_t and friends
+#include <cstdint> // for std::uint16_t and friends
// Forward declarations
@@ -51,7 +51,7 @@ class StartSoundTag : public ControlTag
/// This one is the latter, probably so with the intention of avoiding
/// a lookup at every execution...
///
- boost::uint16_t m_handler_id;
+ std::uint16_t m_handler_id;
/// Create a StartSoundTag for starting the given sound sample
//
diff --git a/libcore/swf/StreamSoundBlockTag.cpp b/libcore/swf/StreamSoundBlockTag.cpp
index ce3510a..eea639c 100644
--- a/libcore/swf/StreamSoundBlockTag.cpp
+++ b/libcore/swf/StreamSoundBlockTag.cpp
@@ -20,7 +20,7 @@
#include "StreamSoundBlockTag.h"
#include <boost/intrusive_ptr.hpp>
-#include <boost/cstdint.hpp>
+#include <cstdint>
#include "utility.h"
#include "sound_handler.h"
@@ -82,8 +82,8 @@ StreamSoundBlockTag::loader(SWFStream& in, TagType tag, movie_definition& m,
media::audioCodecType format = sinfo->getFormat();
- boost::uint16_t sampleCount;
- boost::int16_t seekSamples = 0;
+ std::uint16_t sampleCount;
+ std::int16_t seekSamples = 0;
// MP3 format blocks have additional info
if (format == media::AUDIO_CODEC_MP3) {
@@ -104,10 +104,10 @@ 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));
- buf->resize(dataLength);
+ SimpleBuffer buf(dataLength + padding);
+ buf.resize(dataLength);
- const unsigned int bytesRead = in.read((char*)buf->data(), dataLength);
+ const unsigned int bytesRead = in.read((char*)buf.data(), dataLength);
if (bytesRead < dataLength) {
throw ParserException(_("Tag boundary reported past end of stream!"));
@@ -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/StreamSoundBlockTag.h b/libcore/swf/StreamSoundBlockTag.h
index 3f60414..03905db 100644
--- a/libcore/swf/StreamSoundBlockTag.h
+++ b/libcore/swf/StreamSoundBlockTag.h
@@ -19,7 +19,7 @@
#ifndef GNASH_SWF_STREAMSOUNDBLOCK_TAG_H
#define GNASH_SWF_STREAMSOUNDBLOCK_TAG_H
-#include <boost/cstdint.hpp>
+#include <cstdint>
#include "ControlTag.h" // for inheritance
#include "SWF.h" // for TagType definition
@@ -66,7 +66,7 @@ private:
/// @param blockId identifier of the stream block to play.
///
/// This should only be constructed using the loader() function.
- StreamSoundBlockTag(boost::uint16_t streamId,
+ StreamSoundBlockTag(std::uint16_t streamId,
sound::sound_handler::StreamBlockId blockId)
:
_handler_id(streamId),
@@ -74,7 +74,7 @@ private:
{}
/// Id of the stream this tag should play
- const boost::uint16_t _handler_id;
+ const std::uint16_t _handler_id;
/// Offset in the stream buffer to play
const sound::sound_handler::StreamBlockId _blockId;
diff --git a/libcore/swf/SymbolClassTag.h b/libcore/swf/SymbolClassTag.h
index 6576998..53b384d 100644
--- a/libcore/swf/SymbolClassTag.h
+++ b/libcore/swf/SymbolClassTag.h
@@ -65,11 +65,11 @@ public:
}
in.ensureBytes(2);
- boost::uint16_t num_symbols = in.read_u16();
+ std::uint16_t num_symbols = in.read_u16();
log_debug("There are %u symbols.", num_symbols);
for (unsigned int i = 0; i < num_symbols; ++i) {
in.ensureBytes(2);
- boost::uint16_t id = in.read_u16();
+ std::uint16_t id = in.read_u16();
std::string name;
in.read_string(name);
IF_VERBOSE_PARSE(
diff --git a/libcore/swf/TagLoadersTable.h b/libcore/swf/TagLoadersTable.h
index 4269c18..b550685 100644
--- a/libcore/swf/TagLoadersTable.h
+++ b/libcore/swf/TagLoadersTable.h
@@ -54,9 +54,9 @@ public:
TagLoadersTable() {}
/// Construct a TagLoadersTable by copying another table
- TagLoadersTable(const Loaders& loaders)
+ TagLoadersTable(Loaders loaders)
:
- _loaders(loaders)
+ _loaders(std::move(loaders))
{}
~TagLoadersTable() {}
diff --git a/libcore/swf/TextRecord.cpp b/libcore/swf/TextRecord.cpp
index 879c907..e7ab1dd 100644
--- a/libcore/swf/TextRecord.cpp
+++ b/libcore/swf/TextRecord.cpp
@@ -18,7 +18,6 @@
#include "TextRecord.h"
-#include <boost/assign/list_of.hpp>
#include <vector>
#include "TypesParser.h"
@@ -43,7 +42,7 @@ TextRecord::read(SWFStream& in, movie_definition& m, int glyphBits,
_glyphs.clear();
in.ensureBytes(1);
- boost::uint8_t flags = in.read_u8();
+ std::uint8_t flags = in.read_u8();
if (!flags)
{
@@ -62,7 +61,7 @@ TextRecord::read(SWFStream& in, movie_definition& m, int glyphBits,
if (hasFont)
{
in.ensureBytes(2);
- boost::uint16_t fontID = in.read_u16();
+ std::uint16_t fontID = in.read_u16();
_font = m.get_font(fontID);
if (!_font)
@@ -119,7 +118,7 @@ TextRecord::read(SWFStream& in, movie_definition& m, int glyphBits,
}
in.ensureBytes(1);
- boost::uint8_t glyphCount = in.read_u8();
+ std::uint8_t glyphCount = in.read_u8();
if (!glyphCount) return false;
IF_VERBOSE_PARSE(
@@ -172,12 +171,10 @@ TextRecord::displayRecords(Renderer& renderer, const Transform& xform,
double x = 0.0;
double y = 0.0;
- for (TextRecords::const_iterator i = records.begin(), e = records.end();
- i !=e; ++i) {
+ for (const TextRecord& rec : records) {
// Draw the DisplayObjects within the current record; i.e. consecutive
// chars that share a particular style.
- const TextRecord& rec = *i;
const Font* fnt = rec.getFont();
if (!fnt) {
@@ -208,17 +205,14 @@ TextRecord::displayRecords(Renderer& renderer, const Transform& xform,
if (rec.hasYOffset()) y = rec.yOffset();
// Save for the underline, if any
- const boost::int16_t startX = x;
+ const std::int16_t startX = x;
rgba textColor = cx.transform(rec.color());
// Device fonts have no transparency.
if (!embedded) textColor.m_a = 0xff;
- for (Glyphs::const_iterator j = rec.glyphs().begin(),
- je = rec.glyphs().end(); j != je; ++j) {
-
- const TextRecord::GlyphEntry& ge = *j;
+ for (const TextRecord::GlyphEntry& ge : rec.glyphs()) {
const int index = ge.index;
@@ -248,12 +242,13 @@ TextRecord::displayRecords(Renderer& renderer, const Transform& xform,
// square is not hard-coded anymore but can be
// queried from the font class
//
- static const std::vector<point> emptyCharBox =
- boost::assign::list_of (point(32, 32))
- (point(480, 32))
- (point(480, -656))
- (point(32, -656))
- (point(32,32));
+ static const std::vector<point> emptyCharBox = {
+ point(32, 32),
+ point(480, 32),
+ point(480, -656),
+ point(32, -656),
+ point(32,32)
+ };
renderer.drawLine(emptyCharBox, textColor, m);
#endif
@@ -276,17 +271,18 @@ TextRecord::displayRecords(Renderer& renderer, const Transform& xform,
// This will only be known if a glyph was actually found,
// or would be the size of the empty box (arbitrary size)
//
- boost::int16_t endX = static_cast<boost::int16_t>(x);
+ std::int16_t endX = static_cast<std::int16_t>(x);
// The underline is made to be some pixels below the baseline (0)
// and scaled so it's further as font size increases.
//
// 1/4 the EM square offset far from baseline
- boost::int16_t posY = int(y+int((unitsPerEM/4)*scale));
+ std::int16_t posY = int(y+int((unitsPerEM/4)*scale));
- const std::vector<point> underline = boost::assign::list_of
- (point(startX, posY))
- (point(endX, posY));
+ const std::vector<point> underline = {
+ point(startX, posY),
+ point(endX, posY)
+ };
renderer.drawLine(underline, textColor, mat);
}
diff --git a/libcore/swf/TextRecord.h b/libcore/swf/TextRecord.h
index c2c7a67..ec11028 100644
--- a/libcore/swf/TextRecord.h
+++ b/libcore/swf/TextRecord.h
@@ -64,7 +64,7 @@ public:
_hasYOffset(false),
_xOffset(0.0f),
_yOffset(0.0f),
- _font(0),
+ _font(nullptr),
_underline(false)
{}
@@ -134,20 +134,20 @@ public:
return _font.get();
}
- void setTextHeight(boost::uint16_t height) {
+ void setTextHeight(std::uint16_t height) {
_textHeight = height;
}
float recordWidth() const {
float width = 0.0f;
- for (size_t i = 0; i < glyphs().size(); ++i)
+ for (const auto& glyph : glyphs())
{
- width += glyphs()[i].advance;
+ width += glyph.advance;
}
return width;
}
- boost::uint16_t textHeight() const {
+ std::uint16_t textHeight() const {
return _textHeight;
}
@@ -201,7 +201,7 @@ private:
rgba _color;
/// The height of the text in TWIPS.
- boost::uint16_t _textHeight;
+ std::uint16_t _textHeight;
/// Whether the TextRecord has an x offset.
bool _hasXOffset;
diff --git a/libcore/swf/VideoFrameTag.cpp b/libcore/swf/VideoFrameTag.cpp
index c3bfa21..b975fe5 100644
--- a/libcore/swf/VideoFrameTag.cpp
+++ b/libcore/swf/VideoFrameTag.cpp
@@ -38,7 +38,7 @@ VideoFrameTag::loader(SWFStream& in, SWF::TagType tag, movie_definition& m,
assert(tag == SWF::VIDEOFRAME);
in.ensureBytes(2);
- boost::uint16_t id = in.read_u16();
+ std::uint16_t id = in.read_u16();
DefinitionTag* chdef = m.getDefinitionTag(id);
if (!chdef)
@@ -80,7 +80,7 @@ VideoFrameTag::loader(SWFStream& in, SWF::TagType tag, movie_definition& m,
const unsigned int dataLength = in.get_tag_end_position() - in.tell();
// FIXME: catch bad_alloc
- boost::uint8_t* buffer = new boost::uint8_t[dataLength + padding];
+ std::uint8_t* buffer = new std::uint8_t[dataLength + padding];
const size_t bytesRead = in.read(reinterpret_cast<char*>(buffer),
dataLength);
@@ -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..c0da0ce 100644
--- a/libcore/swf/tag_loaders.cpp
+++ b/libcore/swf/tag_loaders.cpp
@@ -35,6 +35,7 @@
#include "swf/TagLoadersTable.h"
#include "URL.h"
#include "GnashException.h"
+#include "GnashAlgorithm.h"
#include "sound_definition.h"
#include "SoundInfo.h"
#include "MediaHandler.h"
@@ -48,7 +49,7 @@ namespace SWF {
// Anonymous namespace
namespace {
-const boost::uint32_t samplerates[] = { 5512, 11025, 22050, 44100 };
+const std::uint32_t samplerates[] = { 5512, 11025, 22050, 44100 };
}
@@ -101,7 +102,7 @@ sprite_loader(SWFStream& in, TagType tag, movie_definition& m,
assert(tag == SWF::DEFINESPRITE); // 39 - DefineSprite
in.ensureBytes(2);
- const boost::uint16_t id = in.read_u16();
+ const std::uint16_t id = in.read_u16();
IF_VERBOSE_PARSE(
log_parse(_(" sprite: char id = %d"), id);
@@ -156,13 +157,13 @@ define_sound_loader(SWFStream& in, TagType tag, movie_definition& m,
in.ensureBytes(2+4+1+4); // DisplayObject id + flags + sample count
- const boost::uint16_t id = in.read_u16();
+ const std::uint16_t id = in.read_u16();
#ifdef USE_SOUND
media::audioCodecType format = static_cast<media::audioCodecType>(
in.read_uint(4));
- boost::uint8_t sample_rate_in = in.read_uint(2);
+ std::uint8_t sample_rate_in = in.read_uint(2);
if (sample_rate_in >= arraySize(samplerates)) {
IF_VERBOSE_MALFORMED_SWF(
@@ -171,14 +172,14 @@ define_sound_loader(SWFStream& in, TagType tag, movie_definition& m,
);
sample_rate_in = 0;
}
- const boost::uint32_t sample_rate = samplerates[sample_rate_in];
+ const std::uint32_t sample_rate = samplerates[sample_rate_in];
const bool sample_16bit = in.read_bit();
const bool stereo = in.read_bit();
- const boost::uint32_t sample_count = in.read_u32();
+ const std::uint32_t sample_count = in.read_u32();
- boost::int16_t delaySeek = 0;
+ std::int16_t delaySeek = 0;
if (format == media::AUDIO_CODEC_MP3) {
in.ensureBytes(2);
@@ -204,7 +205,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 +225,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);
@@ -346,21 +347,21 @@ serialnumber_loader(SWFStream& in, TagType tag, movie_definition& /*m*/,
in.ensureBytes(26);
- const boost::uint32_t id = in.read_u32();
- const boost::uint32_t edition = in.read_u32();
- const boost::uint8_t major = in.read_u8();
- const boost::uint8_t minor = in.read_u8();
+ const std::uint32_t id = in.read_u32();
+ const std::uint32_t edition = in.read_u32();
+ const std::uint8_t major = in.read_u8();
+ const std::uint8_t minor = in.read_u8();
- const boost::uint32_t buildL = in.read_u32();
- const boost::uint32_t buildH = in.read_u32();
- const boost::uint64_t build =
- (static_cast<boost::uint64_t>(buildH) << 32) + buildL;
+ const std::uint32_t buildL = in.read_u32();
+ const std::uint32_t buildH = in.read_u32();
+ const std::uint64_t build =
+ (static_cast<std::uint64_t>(buildH) << 32) + buildL;
- const boost::uint32_t timestampL = in.read_u32();
- const boost::uint32_t timestampH = in.read_u32();
+ const std::uint32_t timestampL = in.read_u32();
+ const std::uint32_t timestampH = in.read_u32();
// This timestamp is number of milliseconds since 1 Jan 1970 (epoch)
- boost::uint64_t timestamp =
- (static_cast<boost::uint64_t>(timestampH) << 32) + timestampL;
+ std::uint64_t timestamp =
+ (static_cast<std::uint64_t>(timestampH) << 32) + timestampL;
std::stringstream ss;
ss << "SERIALNUMBER: Version " << id << "." << edition
@@ -380,9 +381,9 @@ reflex_loader(SWFStream& in, TagType tag, movie_definition& /*m*/,
assert(tag == SWF::REFLEX); // 777
in.ensureBytes(3);
- const boost::uint8_t first = in.read_u8();
- const boost::uint8_t second = in.read_u8();
- const boost::uint8_t third = in.read_u8();
+ const std::uint8_t first = in.read_u8();
+ const std::uint8_t second = in.read_u8();
+ const std::uint8_t third = in.read_u8();
IF_VERBOSE_PARSE(
log_parse(_(" reflex = \"%c%c%c\""), first, second, third);
diff --git a/libcore/swf_event.h b/libcore/swf_event.h
index 01e14b7..808fade 100644
--- a/libcore/swf_event.h
+++ b/libcore/swf_event.h
@@ -21,6 +21,7 @@
#define GNASH_SWF_EVENT_H
#include "event_id.h" // for composition
+#include <utility>
namespace gnash {
class action_buffer;
@@ -40,9 +41,9 @@ class swf_event
{
public:
- swf_event(const event_id& ev, action_buffer& buf)
+ swf_event(event_id ev, action_buffer& buf)
:
- m_event(ev),
+ m_event(std::move(ev)),
m_action_buffer(buf)
{
}
diff --git a/libcore/vm/ASHandlers.cpp b/libcore/vm/ASHandlers.cpp
index 05121d1..60a3fd7 100644
--- a/libcore/vm/ASHandlers.cpp
+++ b/libcore/vm/ASHandlers.cpp
@@ -26,9 +26,7 @@
#include <string>
#include <vector>
-#include <boost/scoped_array.hpp>
#include <boost/random.hpp>
-#include <boost/lexical_cast.hpp>
#include <algorithm>
#include "log.h"
@@ -85,7 +83,7 @@ namespace {
/// @param target the target window or _level1 to _level10
/// @param method 0:NONE, 1:GET, 2:POST
void commonGetURL(as_environment& env, as_value target,
- const std::string& url, boost::uint8_t method);
+ const std::string& url, std::uint8_t method);
/// Common code for SetTarget and SetTargetExpression
///
@@ -219,6 +217,7 @@ namespace SWF {
ActionHandler::ActionHandler()
:
+ _type(ACTION_END), // initialized to zero to have well known value
_callback(ActionUnsupported),
_arg_format(ARG_NONE)
{
@@ -462,7 +461,7 @@ ActionNextFrame(ActionExec& thread)
#endif
DisplayObject* tgtch = env.target();
- MovieClip* tgt = tgtch ? tgtch->to_movie() : 0;
+ MovieClip* tgt = tgtch ? tgtch->to_movie() : nullptr;
if (tgt) tgt->goto_frame(tgt->get_current_frame() + 1);
else {
log_debug("ActionNextFrame: as_environment target is null "
@@ -480,7 +479,7 @@ ActionPrevFrame(ActionExec& thread)
#endif
DisplayObject* tgtch = env.target();
- MovieClip* tgt = tgtch ? tgtch->to_movie() : 0;
+ MovieClip* tgt = tgtch ? tgtch->to_movie() : nullptr;
if (tgt) tgt->goto_frame(tgt->get_current_frame() - 1);
else log_debug("ActionPrevFrame: as_environment target is null or not a sprite");
}
@@ -495,7 +494,7 @@ ActionPlay(ActionExec& thread)
#endif
DisplayObject* tgtch = env.target();
- MovieClip* tgt = tgtch ? tgtch->to_movie() : 0;
+ MovieClip* tgt = tgtch ? tgtch->to_movie() : nullptr;
if (tgt) tgt->setPlayState(MovieClip::PLAYSTATE_PLAY);
else log_debug("ActionPlay: as_environment target is null or not a sprite");
}
@@ -510,7 +509,7 @@ ActionStop(ActionExec& thread)
#endif
DisplayObject* tgtch = env.target();
- MovieClip* tgt = tgtch ? tgtch->to_movie() : 0;
+ MovieClip* tgt = tgtch ? tgtch->to_movie() : nullptr;
if (tgt) tgt->setPlayState(MovieClip::PLAYSTATE_STOP);
else log_debug("ActionStop: as_environment target is null or not a sprite");
}
@@ -553,7 +552,7 @@ ActionGotoFrame(ActionExec& thread)
size_t frame = code.read_int16(thread.getCurrentPC() + 3);
DisplayObject* tgtch = env.target();
- MovieClip* tgt = tgtch ? tgtch->to_movie() : 0;
+ MovieClip* tgt = tgtch ? tgtch->to_movie() : nullptr;
// frame number within this tag is hard-coded and 0-based
if (tgt) tgt->goto_frame(frame);
@@ -621,10 +620,10 @@ ActionWaitForFrame(ActionExec& thread)
// skip the specified number of actions.
//
unsigned int framenum = code.read_int16(thread.getCurrentPC()+3);
- boost::uint8_t skip = code[thread.getCurrentPC()+5];
+ std::uint8_t skip = code[thread.getCurrentPC()+5];
DisplayObject* target = env.target();
- MovieClip* target_sprite = target ? target->to_movie() : 0;
+ MovieClip* target_sprite = target ? target->to_movie() : nullptr;
if (!target_sprite) {
log_error(_("%s: environment target is null or not a MovieClip"),
__FUNCTION__);
@@ -674,7 +673,7 @@ ActionGotoLabel(ActionExec& thread)
const char* frame_label = code.read_string(thread.getCurrentPC()+3);
DisplayObject *target = env.target();
- MovieClip *target_sprite = target ? target->to_movie() : 0;
+ MovieClip *target_sprite = target ? target->to_movie() : nullptr;
if (!target_sprite) {
log_error(_("GotoLabel: environment target is null or not a "
"MovieClip"));
@@ -1102,7 +1101,7 @@ ActionDuplicateClip(ActionExec& thread)
DisplayObject::staticDepthOffset;
// This also checks for overflow, as both numbers are expressible as
- // boost::int32_t.
+ // std::int32_t.
if (depth < DisplayObject::lowerAccessibleBound ||
depth > DisplayObject::upperAccessibleBound) {
@@ -1114,7 +1113,7 @@ ActionDuplicateClip(ActionExec& thread)
return;
}
- boost::int32_t depthValue = static_cast<boost::int32_t>(depth);
+ std::int32_t depthValue = static_cast<std::int32_t>(depth);
const std::string& newname = env.top(1).to_string();
const std::string& path = env.top(2).to_string();
@@ -1214,10 +1213,10 @@ ActionStartDragMovie(ActionExec& thread)
// it should actually convert to false!
if (toNumber(env.top(2), getVM(env))) {
- boost::int32_t y1 = pixelsToTwips(toNumber(env.top(3), getVM(env)));
- boost::int32_t x1 = pixelsToTwips(toNumber(env.top(4), getVM(env)));
- boost::int32_t y0 = pixelsToTwips(toNumber(env.top(5), getVM(env)));
- boost::int32_t x0 = pixelsToTwips(toNumber(env.top(6), getVM(env)));
+ std::int32_t y1 = pixelsToTwips(toNumber(env.top(3), getVM(env)));
+ std::int32_t x1 = pixelsToTwips(toNumber(env.top(4), getVM(env)));
+ std::int32_t y0 = pixelsToTwips(toNumber(env.top(5), getVM(env)));
+ std::int32_t x0 = pixelsToTwips(toNumber(env.top(6), getVM(env)));
// check for swapped values
if (y1 < y0) {
@@ -1504,7 +1503,7 @@ ActionChr(ActionExec& thread)
as_environment& env = thread.env;
// This is UB:
- const boost::uint16_t c = toInt(env.top(0), getVM(env));
+ const std::uint16_t c = toInt(env.top(0), getVM(env));
// If the argument to chr() is '0', we return
// nothing, not NULL
@@ -1628,7 +1627,7 @@ ActionMbOrd(ActionExec& thread)
std::string::const_iterator it = s.begin(), e = s.end();
- boost::uint32_t out = utf8::decodeNextUnicodeCharacter(it, e);
+ std::uint32_t out = utf8::decodeNextUnicodeCharacter(it, e);
/// Always valid, or can it be undefined?
env.top(0).set_double(out);
@@ -1650,7 +1649,7 @@ ActionMbChr(ActionExec& thread)
}
// This is UB
- const boost::uint16_t i = toInt(env.top(0), getVM(env));
+ const std::uint16_t i = toInt(env.top(0), getVM(env));
std::string out = utf8::encodeUnicodeCharacter(i);
@@ -1683,14 +1682,14 @@ ActionWaitForFrameExpression(ActionExec& thread)
const action_buffer& code = thread.code;
// how many actions to skip if frame has not been loaded
- const boost::uint8_t skip = code[thread.getCurrentPC() + 3];
+ const std::uint8_t skip = code[thread.getCurrentPC() + 3];
// env.top(0) contains frame specification,
// evaluated as for ActionGotoExpression
as_value framespec = env.pop();
DisplayObject* tgtch = env.target();
- MovieClip* target_sprite = tgtch ? tgtch->to_movie() : 0;
+ MovieClip* target_sprite = tgtch ? tgtch->to_movie() : nullptr;
if (!target_sprite) {
log_error(_("%s: environment target is null or not a MovieClip"),
__FUNCTION__);
@@ -1775,14 +1774,14 @@ ActionPushData(ActionExec& thread)
const action_buffer& code = thread.code;
const size_t pc = thread.getCurrentPC();
- const boost::uint16_t length = code.read_uint16(pc + 1);
+ const std::uint16_t length = code.read_uint16(pc + 1);
//---------------
size_t i = pc;
size_t count = 0;
while (i - pc < length) {
- const boost::uint8_t type = code[3 + i];
+ const std::uint8_t type = code[3 + i];
++i;
switch (type)
@@ -1859,7 +1858,7 @@ ActionPushData(ActionExec& thread)
case pushInt32: // 7
{
- const boost::int32_t val = code.read_int32(i + 3);
+ const std::int32_t val = code.read_int32(i + 3);
i += 4;
env.push(val);
break;
@@ -1867,7 +1866,7 @@ ActionPushData(ActionExec& thread)
case pushDict8: // 8
{
- const boost::uint8_t id = code[3 + i];
+ const std::uint8_t id = code[3 + i];
++i;
pushConstant(thread, id);
break;
@@ -1875,7 +1874,7 @@ ActionPushData(ActionExec& thread)
case pushDict16: // 9
{
- const boost::uint16_t id = code.read_int16(i + 3);
+ const std::uint16_t id = code.read_int16(i + 3);
i += 2;
pushConstant(thread, id);
break;
@@ -1894,7 +1893,7 @@ ActionPushData(ActionExec& thread)
void
ActionBranchAlways(ActionExec& thread)
{
- boost::int16_t offset = thread.code.read_int16(thread.getCurrentPC()+3);
+ std::int16_t offset = thread.code.read_int16(thread.getCurrentPC()+3);
thread.adjustNextPC(offset);
// @@ TODO range checks
}
@@ -1910,7 +1909,7 @@ ActionGetUrl2(ActionExec& thread)
assert(thread.atActionTag(SWF::ACTION_GETURL2));
#endif
- const boost::uint8_t method = code[thread.getCurrentPC() + 3];
+ const std::uint8_t method = code[thread.getCurrentPC() + 3];
as_value url_val = env.top(1);
if (url_val.is_undefined()) {
@@ -1937,7 +1936,7 @@ ActionBranchIfTrue(ActionExec& thread)
assert(thread.atActionTag(SWF::ACTION_BRANCHIFTRUE));
#endif
- boost::int16_t offset = code.read_int16(pc+3);
+ std::int16_t offset = code.read_int16(pc+3);
const bool test = toBool(env.pop(), getVM(env));
if (test) {
@@ -1963,7 +1962,7 @@ ActionCallFrame(ActionExec& thread)
std::string target_path;
std::string frame_var;
- DisplayObject* target = 0;
+ DisplayObject* target = nullptr;
if (parsePath(target_frame, target_path, frame_var)) {
target = findTarget(env, target_path);
}
@@ -1974,7 +1973,7 @@ ActionCallFrame(ActionExec& thread)
env.drop(1);
- MovieClip* target_sprite = target ? target->to_movie() : 0;
+ MovieClip* target_sprite = target ? target->to_movie() : nullptr;
if (target_sprite) {
target_sprite->call_frame_actions(frame_var);
}
@@ -2013,7 +2012,7 @@ ActionGotoExpression(ActionExec& thread)
std::string target_path;
std::string frame_var;
- DisplayObject* target = NULL;
+ DisplayObject* target = nullptr;
if (parsePath(target_frame, target_path, frame_var)) {
target = findTarget(env, target_path);
}
@@ -2026,7 +2025,7 @@ ActionGotoExpression(ActionExec& thread)
frame_var = target_frame;
}
- MovieClip *target_sprite = target ? target->to_movie() : NULL;
+ MovieClip *target_sprite = target ? target->to_movie() : nullptr;
if (target_sprite) {
size_t frame_number;
if (!target_sprite->get_frame_number(frame_var, frame_number)) {
@@ -2076,7 +2075,7 @@ ActionDelete(ActionExec& thread)
std::string propertyname = env.top(0).to_string();
- as_object* obj(0);
+ as_object* obj(nullptr);
// Behaviour is different according to version. For SWF7 and above,
// the delete fails if there aren't two items on the stack. For SWF6
@@ -2210,7 +2209,7 @@ ActionCallFunction(ActionExec& thread)
// is dropped from the stack.
const std::string& funcname = env.pop().to_string();
- as_object* super(0);
+ as_object* super(nullptr);
as_object* this_ptr;
as_value function = thread.getVariable(funcname, &this_ptr);
@@ -2371,7 +2370,7 @@ ActionInitArray(ActionExec& thread)
// Fill the elements with the initial values from the stack.
for (int i = 0; i < array_size; i++) {
const ObjectURI& k =
- getURI(vm, boost::lexical_cast<std::string>(i));
+ getURI(vm, std::to_string(i));
ao->set_member(k, env.pop());
}
@@ -2734,7 +2733,7 @@ ActionCallMethod(ActionExec& thread)
as_object* method_obj; // The method to call, as an object
// The object to be the 'this' pointer during the call.
- as_object* this_ptr(0);
+ as_object* this_ptr(nullptr);
// Will be used to find super later
ObjectURI methURI;
@@ -2797,7 +2796,7 @@ ActionCallMethod(ActionExec& thread)
if (func && func->isBuiltin()) {
// Do not construct super if method is a builtin
// TODO: check if this is correct!!
- super = 0;
+ super = nullptr;
}
else {
super = obj->get_super(methURI);
@@ -2915,7 +2914,7 @@ ActionInstanceOf(ActionExec& thread)
// Get the "instance" (but avoid implicit conversion of primitive values!)
as_object* instance = env.top(1).is_object() ?
- safeToObject(getVM(thread.env), env.top(1)) : 0;
+ safeToObject(getVM(thread.env), env.top(1)) : nullptr;
// Invalid args!
if (!super || ! instance) {
@@ -2994,13 +2993,13 @@ ActionBitwiseXor(ActionExec& thread)
env.drop(1);
}
-inline boost::uint32_t
-saneShiftParam(boost::int32_t value)
+inline std::uint32_t
+saneShiftParam(std::int32_t value)
{
// NOTE: ISO-IEC 14882:2003 5.8.1: "The behavior is undefined if the right
// operand is negative, or greater than or equal to the length in bits of
// the promoted left operand."
- boost::uint32_t rv = value;
+ std::uint32_t rv = value;
return rv % 32;
}
@@ -3009,10 +3008,10 @@ ActionShiftLeft(ActionExec& thread)
{
as_environment& env = thread.env;
- boost::uint32_t amount = saneShiftParam(toInt(env.top(0), getVM(env)));
- boost::int32_t value = toInt(env.top(1), getVM(env));
+ std::uint32_t amount = saneShiftParam(toInt(env.top(0), getVM(env)));
+ std::int32_t value = toInt(env.top(1), getVM(env));
- value = value << amount;
+ value = static_cast<std::uint32_t>(value) << amount;
env.top(1) = value;
env.drop(1);
@@ -3023,8 +3022,8 @@ ActionShiftRight(ActionExec& thread)
{
as_environment& env = thread.env;
- boost::uint32_t amount = saneShiftParam(toInt(env.top(0), getVM(env)));
- boost::int32_t value = toInt(env.top(1), getVM(env));
+ std::uint32_t amount = saneShiftParam(toInt(env.top(0), getVM(env)));
+ std::int32_t value = toInt(env.top(1), getVM(env));
value = value >> amount;
@@ -3037,10 +3036,10 @@ ActionShiftRight2(ActionExec& thread)
{
as_environment& env = thread.env;
- boost::uint32_t amount = saneShiftParam(toInt(env.top(0), getVM(env)));
- boost::int32_t value = toInt(env.top(1), getVM(env));
+ std::uint32_t amount = saneShiftParam(toInt(env.top(0), getVM(env)));
+ std::int32_t value = toInt(env.top(1), getVM(env));
- value = static_cast<boost::uint32_t>(value) >> amount;
+ value = static_cast<std::uint32_t>(value) >> amount;
env.top(1) = value;
env.drop(1);
@@ -3157,24 +3156,24 @@ ActionDefineFunction2(ActionExec& thread)
i += name.length() + 1; // add NULL-termination
// Get number of arguments.
- const boost::uint16_t nargs = code.read_uint16(i);
+ const std::uint16_t nargs = code.read_uint16(i);
i += 2;
// Get the count of local registers used by this function.
- const boost::uint8_t register_count = code[i];
+ const std::uint8_t register_count = code[i];
++i;
func->setRegisterCount(register_count);
// Flags, for controlling register assignment of implicit args.
- const boost::uint16_t flags = code.read_uint16(i);
+ const std::uint16_t flags = code.read_uint16(i);
i += 2;
func->setFlags(flags);
// Get the register assignments and names of the arguments.
for (size_t n = 0; n < nargs; ++n) {
- boost::uint8_t arg_register = code[i];
+ std::uint8_t arg_register = code[i];
++i;
// @@ security: watch out for possible missing terminator here!
@@ -3185,7 +3184,7 @@ ActionDefineFunction2(ActionExec& thread)
}
// Get the length of the actual function code.
- boost::uint16_t code_size = code.read_int16(i);
+ std::uint16_t code_size = code.read_int16(i);
// Check code_size value consistency
const size_t actionbuf_size = thread.code.size();
@@ -3241,20 +3240,20 @@ ActionTry(ActionExec& thread)
size_t i = thread.getCurrentPC() + 3; // skip tag id and length
- boost::uint8_t flags = code[i];
+ std::uint8_t flags = code[i];
++i;
bool doCatch = flags & 1;
bool doFinally = flags & (1<<1);
bool catchInRegister = flags&(1<<2);
- boost::uint8_t reserved = flags&0xE0;
+ std::uint8_t reserved = flags&0xE0;
- boost::uint16_t trySize = code.read_uint16(i); i += 2;
- boost::uint16_t catchSize = code.read_uint16(i); i += 2;
- boost::uint16_t finallySize = code.read_uint16(i); i += 2;
+ std::uint16_t trySize = code.read_uint16(i); i += 2;
+ std::uint16_t catchSize = code.read_uint16(i); i += 2;
+ std::uint16_t finallySize = code.read_uint16(i); i += 2;
- const char* catchName = NULL;
- boost::uint8_t catchRegister = 0;
+ const char* catchName = nullptr;
+ std::uint8_t catchRegister = 0;
if (!doFinally) finallySize = 0;
if (!doCatch) catchSize = 0;
@@ -3351,7 +3350,7 @@ ActionDefineFunction(ActionExec& thread)
#ifndef NDEBUG
// TODO: check effects of the following 'length'
- boost::int16_t length = code.read_int16(thread.getCurrentPC()+1);
+ std::int16_t length = code.read_int16(thread.getCurrentPC()+1);
assert( length >= 0 );
#endif
@@ -3396,7 +3395,7 @@ ActionDefineFunction(ActionExec& thread)
}
// Get the length of the actual function code.
- const boost::uint16_t code_size = code.read_uint16(i);
+ const std::uint16_t code_size = code.read_uint16(i);
func->setLength(code_size);
@@ -3451,7 +3450,7 @@ safeToObject(VM& vm, const as_value& val)
return toObject(val, vm);
}
catch (const GnashException&) {
- return 0;
+ return nullptr;
}
}
@@ -3497,7 +3496,7 @@ construct_object(as_function* ctor_as_func, as_environment& env,
/// @param target the target window, or _level1..10
void
commonGetURL(as_environment& env, as_value target,
- const std::string& url, boost::uint8_t method)
+ const std::string& url, std::uint8_t method)
{
if (url.empty()) {
log_error(_("Bogus empty GetUrl URL in SWF file, skipping"));
@@ -3565,7 +3564,7 @@ commonGetURL(as_environment& env, as_value target,
sendVarsMethod, loadTargetFlag, loadVariableFlag);
DisplayObject* target_ch = findTarget(env, target_string);
- MovieClip* target_movie = target_ch ? target_ch->to_movie() : 0;
+ MovieClip* target_movie = target_ch ? target_ch->to_movie() : nullptr;
if (loadVariableFlag) {
log_debug("getURL2 loadVariable");
diff --git a/libcore/vm/ActionExec.cpp b/libcore/vm/ActionExec.cpp
index 4b2ac0c..be7b0b9 100644
--- a/libcore/vm/ActionExec.cpp
+++ b/libcore/vm/ActionExec.cpp
@@ -69,9 +69,8 @@ ActionExec::ActionExec(const Function& func, as_environment& newEnv,
_func(&func),
_this_ptr(this_ptr),
_initialStackSize(0),
- _originalTarget(0),
+ _originalTarget(nullptr),
_origExecSWFVersion(0),
- _tryList(),
_returning(false),
_abortOnUnload(false),
pc(func.getStartPC()),
@@ -106,15 +105,14 @@ ActionExec::ActionExec(const action_buffer& abuf, as_environment& newEnv,
:
code(abuf),
env(newEnv),
- retval(0),
+ retval(nullptr),
_withStack(),
_scopeStack(),
- _func(0),
- _this_ptr(0),
+ _func(nullptr),
+ _this_ptr(nullptr),
_initialStackSize(0),
- _originalTarget(0),
+ _originalTarget(nullptr),
_origExecSWFVersion(0),
- _tryList(),
_returning(false),
_abortOnUnload(abortOnUnloaded),
pc(0),
@@ -146,7 +144,7 @@ ActionExec::operator()()
IF_VERBOSE_ACTION (
log_action(_("at ActionExec operator() start, pc=%d"
", stop_pc=%d, code.size=%d, func=%d, codeVersion=%d"),
- pc, stop_pc, code.size(), _func ? _func : 0, codeVersion);
+ pc, stop_pc, code.size(), _func ? _func : nullptr, codeVersion);
std::stringstream ss;
getVM(env).dumpState(ss, STACK_DUMP_LIMIT);
log_action(_("%s"), ss.str());
@@ -197,7 +195,7 @@ ActionExec::operator()()
}
// If we are in a try block, check to see if we have thrown.
- TryBlock& t = _tryList.back();
+ TryBlock& t = _tryList.top();
if (!processExceptions(t)) break;
@@ -216,7 +214,7 @@ ActionExec::operator()()
}
// Get the opcode.
- boost::uint8_t action_id = code[pc];
+ std::uint8_t action_id = code[pc];
IF_VERBOSE_ACTION (
log_action(_("PC:%d - EX: %s"), pc, code.disasm(pc));
@@ -231,7 +229,7 @@ ActionExec::operator()()
else {
// action with extra data
// Note this converts from int to uint!
- boost::uint16_t length(code.read_int16(pc + 1));
+ std::uint16_t length(code.read_int16(pc + 1));
next_pc = pc + length + 3;
if (next_pc > stop_pc) {
@@ -485,7 +483,7 @@ ActionExec::processExceptions(TryBlock& t)
log_debug("END: exception thrown in finally(%s). "
"Leaving on the stack", ex);
#endif
- _tryList.pop_back();
+ _tryList.pop();
return true;
}
else if (t._lastThrow.is_exception()) {
@@ -501,7 +499,7 @@ ActionExec::processExceptions(TryBlock& t)
env.push(t._lastThrow);
- _tryList.pop_back();
+ _tryList.pop();
return true;
}
#ifdef GNASH_DEBUG_TRY
@@ -512,7 +510,7 @@ ActionExec::processExceptions(TryBlock& t)
stop_pc = t._savedEndOffset;
// Finished with this TryBlock.
- _tryList.pop_back();
+ _tryList.pop();
// Will break out of action execution.
if (_returning) return false;
@@ -531,7 +529,7 @@ ActionExec::cleanupAfterRun()
VM& vm = getVM(env);
env.set_target(_originalTarget);
- _originalTarget = NULL;
+ _originalTarget = nullptr;
vm.setSWFVersion(_origExecSWFVersion);
@@ -571,7 +569,7 @@ ActionExec::skip_actions(size_t offset)
}
// Get the opcode.
- const boost::uint8_t action_id = code[next_pc];
+ const std::uint8_t action_id = code[next_pc];
// Set default next_pc offset, control flow action handlers
// will be able to reset it.
@@ -581,7 +579,7 @@ ActionExec::skip_actions(size_t offset)
}
else {
// action with extra data
- const boost::int16_t length = code.read_int16(next_pc + 1);
+ const std::int16_t length = code.read_int16(next_pc + 1);
assert(length >= 0);
next_pc += length + 3;
}
@@ -654,7 +652,7 @@ ActionExec::pushTryBlock(TryBlock t)
t._savedEndOffset = stop_pc;
stop_pc = t._catchOffset;
- _tryList.push_back(t);
+ _tryList.push(std::move(t));
}
void
@@ -684,7 +682,7 @@ ActionExec::dumpActions(size_t from, size_t to, std::ostream& os)
size_t lpc = from;
while (lpc < to) {
// Get the opcode.
- const boost::uint8_t action_id = code[lpc];
+ const std::uint8_t action_id = code[lpc];
os << " PC:" << lpc << " - EX: " << code.disasm(lpc) << std::endl;
@@ -696,7 +694,7 @@ ActionExec::dumpActions(size_t from, size_t to, std::ostream& os)
}
else {
// action with extra data
- const boost::int16_t length = code.read_int16(lpc + 1);
+ const std::int16_t length = code.read_int16(lpc + 1);
assert(length >= 0);
lpc += length + 3;
}
diff --git a/libcore/vm/ActionExec.h b/libcore/vm/ActionExec.h
index 546a342..4edd528 100644
--- a/libcore/vm/ActionExec.h
+++ b/libcore/vm/ActionExec.h
@@ -20,7 +20,7 @@
#define GNASH_ACTIONEXEC_H
#include <string>
-#include <list>
+#include <stack>
#include <vector>
#include <boost/noncopyable.hpp>
@@ -56,19 +56,21 @@ public:
_catchOffset(cur_off + try_size),
_finallyOffset(cur_off + try_size + catch_size),
_afterTriedOffset(cur_off + try_size + catch_size + finally_size),
+ _savedEndOffset(0),
_hasName(true),
- _name(catchName),
+ _name(std::move(catchName)),
_registerIndex(0),
_tryState(TryBlock::TRY_TRY),
_lastThrow()
{}
TryBlock(size_t cur_off, size_t try_size, size_t catch_size,
- size_t finally_size, boost::uint8_t register_index)
+ size_t finally_size, std::uint8_t register_index)
:
_catchOffset(cur_off + try_size),
_finallyOffset(cur_off + try_size + catch_size),
_afterTriedOffset(cur_off + try_size + catch_size + finally_size),
+ _savedEndOffset(0),
_hasName(false),
_name(),
_registerIndex(register_index),
@@ -157,7 +159,7 @@ public:
as_value* retval;
/// Is this execution thread a function call ?
- bool isFunction() const { return _func != 0; }
+ bool isFunction() const { return _func != nullptr; }
/// Get the current 'this' pointer, for use in function calls
as_object* getThisPointer();
@@ -203,7 +205,7 @@ public:
/// containing any found variable. If you aren't interested,
/// pass null (default). If the variable does not belong
/// to an object, target will be set to null.
- as_value getVariable(const std::string& name, as_object** target = 0);
+ as_value getVariable(const std::string& name, as_object** target = nullptr);
/// Get current target.
//
@@ -310,7 +312,7 @@ private:
int _origExecSWFVersion;
- std::list<TryBlock> _tryList;
+ std::stack<TryBlock> _tryList;
bool _returning;
diff --git a/libcore/vm/CallStack.h b/libcore/vm/CallStack.h
index 3ccb1df..c14f64c 100644
--- a/libcore/vm/CallStack.h
+++ b/libcore/vm/CallStack.h
@@ -85,7 +85,7 @@ public:
/// @return A pointer to the value in the register or 0 if no such
/// register exists.
const as_value* getLocalRegister(size_t i) const {
- if (i >= _registers.size()) return 0;
+ if (i >= _registers.size()) return nullptr;
return &_registers[i];
}
diff --git a/libcore/vm/ExecutableCode.h b/libcore/vm/ExecutableCode.h
index db1014d..215e5d9 100644
--- a/libcore/vm/ExecutableCode.h
+++ b/libcore/vm/ExecutableCode.h
@@ -92,10 +92,10 @@ public:
ExecutableCode(nTarget)
{}
- EventCode(DisplayObject* nTarget, const BufferList& buffers)
+ EventCode(DisplayObject* nTarget, BufferList buffers)
:
ExecutableCode(nTarget),
- _buffers(buffers)
+ _buffers(std::move(buffers))
{}
/// Add an action buffer to this event handler
@@ -114,15 +114,14 @@ public:
}
virtual void execute() {
- for (BufferList::iterator it = _buffers.begin(),
- itEnd = _buffers.end(); it != itEnd; ++it) {
+ for (const action_buffer* buffer : _buffers) {
// onClipEvents code are guarded by isDestroyed(),
// still might be also guarded by unloaded()
if (target()->isDestroyed()) break;
- PoolGuard guard(getVM(target()->get_environment()), 0);
- ActionExec exec(*(*it), target()->get_environment(), false);
+ PoolGuard guard(getVM(target()->get_environment()), nullptr);
+ ActionExec exec(*buffer, target()->get_environment(), false);
exec();
}
}
@@ -147,14 +146,14 @@ class DelayedFunctionCall : public ExecutableCode
public:
DelayedFunctionCall(DisplayObject* target,
- as_object* obj, const ObjectURI& name,
- const as_value& arg1, const as_value& arg2)
+ as_object* obj, ObjectURI name,
+ as_value arg1, as_value arg2)
:
ExecutableCode(target),
_obj(obj),
- _name(name),
- _arg1(arg1),
- _arg2(arg2)
+ _name(std::move(name)),
+ _arg1(std::move(arg1)),
+ _arg2(std::move(arg2))
{}
virtual void execute() {
diff --git a/libcore/vm/Machine.cpp b/libcore/vm/Machine.cpp
index 1cd2d35..94c9941 100644
--- a/libcore/vm/Machine.cpp
+++ b/libcore/vm/Machine.cpp
@@ -68,7 +68,7 @@ public:
namespace {
inline const std::string&
-pool_string(boost::uint32_t index, AbcBlock *pool)
+pool_string(std::uint32_t index, AbcBlock *pool)
{
if (!pool) throw ASException();
try {
@@ -80,7 +80,7 @@ pool_string(boost::uint32_t index, AbcBlock *pool)
}
inline int
-pool_int(boost::uint32_t index, AbcBlock *pool)
+pool_int(std::uint32_t index, AbcBlock *pool)
{
if (!pool) throw ASException();
try {
@@ -92,7 +92,7 @@ pool_int(boost::uint32_t index, AbcBlock *pool)
}
inline unsigned int
-pool_uint(boost::uint32_t index, AbcBlock *pool)
+pool_uint(std::uint32_t index, AbcBlock *pool)
{
if (!pool) throw ASException();
try {
@@ -104,7 +104,7 @@ pool_uint(boost::uint32_t index, AbcBlock *pool)
}
inline double
-pool_double(boost::uint32_t index, AbcBlock *pool)
+pool_double(std::uint32_t index, AbcBlock *pool)
{
if (!pool) throw ASException();
try {
@@ -116,7 +116,7 @@ pool_double(boost::uint32_t index, AbcBlock *pool)
}
inline Namespace*
-pool_namespace(boost::uint32_t index, AbcBlock *pool)
+pool_namespace(std::uint32_t index, AbcBlock *pool)
{
if (!pool) throw ASException();
try {
@@ -129,7 +129,7 @@ pool_namespace(boost::uint32_t index, AbcBlock *pool)
}
inline Method*
-pool_method(boost::uint32_t index, AbcBlock* pool)
+pool_method(std::uint32_t index, AbcBlock* pool)
{
if (!pool) throw ASException();
try {
@@ -141,7 +141,7 @@ pool_method(boost::uint32_t index, AbcBlock* pool)
}
inline Class*
-pool_script(boost::uint32_t index, AbcBlock* pool)
+pool_script(std::uint32_t index, AbcBlock* pool)
{
if (!pool) throw ASException();
try {
@@ -154,7 +154,7 @@ pool_script(boost::uint32_t index, AbcBlock* pool)
// Don't make this a reference or you'll taint the pool.
inline MultiName
-pool_name(boost::uint32_t index, AbcBlock* pool)
+pool_name(std::uint32_t index, AbcBlock* pool)
{
if (!pool) throw ASException();
try {
@@ -291,7 +291,7 @@ inline bool abstractEquality(const as_value& a, const as_value& b,
#define JUMPIF(jtruth) \
{ \
- boost::int32_t jumpOffset = mStream->read_S24(); \
+ std::int32_t jumpOffset = mStream->read_S24(); \
if (jtruth) \
mStream->seekBy(jumpOffset); \
break; \
@@ -506,7 +506,7 @@ Machine::execute()
/// this the default XML namespace.
case SWF::ABC_ACTION_DXNS:
{
- boost::uint32_t soffset = mStream->read_V32();
+ std::uint32_t soffset = mStream->read_V32();
const std::string& uri = pool_string(soffset, mPoolObject);
ClassHierarchy& ch = _global->classHierarchy();
@@ -539,7 +539,7 @@ Machine::execute()
/// Equivalent: ACTION_DELETE
case SWF::ABC_ACTION_KILL:
{
- boost::uint32_t regNum = mStream->read_V32();
+ std::uint32_t regNum = mStream->read_V32();
setRegister(regNum, as_value());
break;
}
@@ -632,7 +632,7 @@ Machine::execute()
/// Equivalent: ACTION_BRANCHALWAYS
case SWF::ABC_ACTION_JUMP:
{
- const boost::int32_t bytes = mStream->read_S24();
+ const std::int32_t bytes = mStream->read_S24();
log_abc("ABC_ACTION_JUMP: Jumping %d bytes.",bytes);
mStream->seekBy(bytes);
break;
@@ -649,7 +649,7 @@ Machine::execute()
/// Equivalent: ACTION_BRANCHIFTRUE
case SWF::ABC_ACTION_IFTRUE:
{
- const boost::int32_t bytes = mStream->read_S24();
+ const std::int32_t bytes = mStream->read_S24();
if (pop_stack().to_bool()) {
log_abc("ABC_ACTION_IFTRUE: Jumping %d bytes.",bytes);
mStream->seekBy(bytes);
@@ -671,7 +671,7 @@ Machine::execute()
/// ABC_ACTION_JUMP does.
case SWF::ABC_ACTION_IFFALSE:
{
- const boost::int32_t bytes = mStream->read_S24();
+ const std::int32_t bytes = mStream->read_S24();
const bool truth = pop_stack().to_bool();
if (!truth) {
log_abc("ABC_ACTION_IFFALSE: Jumping %d bytes.", bytes);
@@ -691,7 +691,7 @@ Machine::execute()
/// ABC_ACTION_JUMP does.
case SWF::ABC_ACTION_IFEQ:
{
- const boost::int32_t bytes = mStream->read_S24();
+ const std::int32_t bytes = mStream->read_S24();
const as_value b = pop_stack();
const as_value a = pop_stack();
if (a.equals(b)) {
@@ -717,7 +717,7 @@ Machine::execute()
{
as_value a = pop_stack();
as_value b = pop_stack();
- const boost::int32_t bytes = mStream->read_S24();
+ const std::int32_t bytes = mStream->read_S24();
if (!a.equals(b)) {
log_abc("Jumping... %d bytes.", bytes);
mStream->seekBy(bytes);
@@ -741,7 +741,7 @@ Machine::execute()
{
as_value b = pop_stack();
as_value a = pop_stack();
- const boost::int32_t bytes = mStream->read_S24();
+ const std::int32_t bytes = mStream->read_S24();
const bool jump = newLessThan(a, b, _vm).to_bool();
if (jump) {
log_abc("Jumping... %d bytes.", bytes);
@@ -781,7 +781,7 @@ Machine::execute()
/// Do: If a > b move by jump in stream, as ABC_ACTION_JUMP does.
case SWF::ABC_ACTION_IFGT:
{
- boost::int32_t bytes = mStream->read_S24();
+ std::int32_t bytes = mStream->read_S24();
bool truth;
// If b < a, then a > b, with undefined as false
ABSTRACT_COMPARE(truth, _stack.top(0), _stack.top(1), false);
@@ -865,12 +865,12 @@ Machine::execute()
std::size_t npos = mStream->tellg();
if (!_stack.top(0).is_number()) throw ASException();
- boost::uint32_t index =
+ std::uint32_t index =
toNumber(_stack.top(0), getVM(fn));
_stack.drop(1);
mStream->seekBy(3); // Skip the intial offset.
- boost::uint32_t cases = mStream->read_V32();
+ std::uint32_t cases = mStream->read_V32();
// Read from our original position and use it to skip
// if the case is out of range.
if (index > cases) {
@@ -879,7 +879,7 @@ Machine::execute()
}
else {
mStream->seekTo(npos + 3 * (index + 1));
- boost::uint32_t newpos = mStream->read_S24();
+ std::uint32_t newpos = mStream->read_S24();
mStream->seekTo(npos - 1 + newpos);
}
break;
@@ -954,7 +954,7 @@ Machine::execute()
ENSURE_NUMBER(_stack.top(0));
ENSURE_OBJECT(_stack.top(1));
as_object *obj = _stack.top(1).to_object(*_global);
- const boost::uint32_t index =
+ const std::uint32_t index =
toNumber(_stack.top(0), getVM(fn));
if (!obj) {
@@ -986,7 +986,7 @@ Machine::execute()
ENSURE_NUMBER(_stack.top(0));
ENSURE_OBJECT(_stack.top(1));
as_object *obj = _stack.top(1).to_object(*_global);
- boost::uint32_t index =
+ std::uint32_t index =
toNumber(_stack.top(0), getVM(fn));
_stack.drop(1);
assert(obj);
@@ -1026,7 +1026,7 @@ Machine::execute()
ENSURE_NUMBER(_stack.top(0));
ENSURE_OBJECT(_stack.top(1));
as_object *obj = _stack.top(1).to_object(*_global);
- const boost::uint32_t index =
+ const std::uint32_t index =
toNumber(_stack.top(0), getVM(fn));
const Property *b = obj->getByIndex(index);
_stack.drop(1);
@@ -1044,7 +1044,7 @@ Machine::execute()
/// byte -- as a raw byte
case SWF::ABC_ACTION_PUSHBYTE:
{
- const boost::int8_t b = mStream->read_s8();
+ const std::int8_t b = mStream->read_s8();
push_stack(b);
break;
}
@@ -1055,8 +1055,8 @@ Machine::execute()
/// value -- as a raw integer
case SWF::ABC_ACTION_PUSHSHORT:
{
- const boost::int16_t s =
- static_cast<boost::int16_t>(mStream->read_V32());
+ const std::int16_t s =
+ static_cast<std::int16_t>(mStream->read_V32());
push_stack(s);
break;
}
@@ -1190,8 +1190,8 @@ Machine::execute()
/// first logical property.
case SWF::ABC_ACTION_HASNEXT2:
{
- const boost::int32_t oindex = mStream->read_V32();
- const boost::int32_t iindex = mStream->read_V32();
+ const std::int32_t oindex = mStream->read_V32();
+ const std::int32_t iindex = mStream->read_V32();
const as_value& objv = getRegister(oindex);
const as_value& indexv = getRegister(iindex);
@@ -1209,7 +1209,7 @@ Machine::execute()
break;
}
- boost::uint32_t index = toInt(indexv);
+ std::uint32_t index = toInt(indexv);
as_object *owner = 0;
int next = obj->nextIndex(index, &owner);
@@ -1243,7 +1243,7 @@ Machine::execute()
/// the function from this information and bind the current scope.
case SWF::ABC_ACTION_NEWFUNCTION:
{
- boost::int32_t method_index = mStream->read_V32();
+ std::int32_t method_index = mStream->read_V32();
log_abc("Creating new abc_function: method index=%u",method_index);
Method *m = pool_method(method_index, mPoolObject);
abc_function* new_function = m->getPrototype();
@@ -1262,7 +1262,7 @@ Machine::execute()
/// value -- the value returned by obj->func(arg1, ...., argN)
case SWF::ABC_ACTION_CALL:
{
- boost::uint32_t argc = mStream->read_V32();
+ std::uint32_t argc = mStream->read_V32();
ENSURE_OBJECT(_stack.top(argc + 1)); // The func
ENSURE_OBJECT(_stack.top(argc)); // The 'this'
as_function *f = _stack.top(argc + 1).to_function();
@@ -1289,7 +1289,7 @@ Machine::execute()
/// obj(arg1, ..., argN)
case SWF::ABC_ACTION_CONSTRUCT:
{
- boost::uint32_t argc = mStream->read_V32();
+ std::uint32_t argc = mStream->read_V32();
as_function *f = _stack.top(argc).to_function();
if (!f) {
log_abc("CONSTRUCT: No function on stack!");
@@ -1310,8 +1310,8 @@ Machine::execute()
/// ..., argN)
case SWF::ABC_ACTION_CALLMETHOD:
{
- boost::uint32_t dispatch_id = mStream->read_V32() - 1;
- boost::uint32_t argc = mStream->read_V32();
+ std::uint32_t dispatch_id = mStream->read_V32() - 1;
+ std::uint32_t argc = mStream->read_V32();
ENSURE_OBJECT(_stack.top(argc));
as_object *obj = _stack.top(argc).to_object(*_global);
const Property *f = obj->getByIndex(dispatch_id);
@@ -1346,7 +1346,7 @@ Machine::execute()
case SWF::ABC_ACTION_CALLSTATIC:
{
Method *m = pool_method(mStream->read_V32(), mPoolObject);
- boost::uint32_t argc = mStream->read_V32();
+ std::uint32_t argc = mStream->read_V32();
as_function *func = m->getPrototype();
ENSURE_OBJECT(_stack.top(argc));
as_object *obj = _stack.top(argc).to_object(*_global);
@@ -1368,7 +1368,7 @@ Machine::execute()
case SWF::ABC_ACTION_CALLSUPERVOID:
{
MultiName a = pool_name(mStream->read_V32(), mPoolObject);
- boost::uint32_t argc = mStream->read_V32();
+ std::uint32_t argc = mStream->read_V32();
int dropsize = completeName(a);
ENSURE_OBJECT(_stack.top(argc + dropsize));
_stack.drop(dropsize);
@@ -1419,7 +1419,7 @@ Machine::execute()
{
as_value result;
MultiName a = pool_name(mStream->read_V32(), mPoolObject);
- boost::uint32_t argc = mStream->read_V32();
+ std::uint32_t argc = mStream->read_V32();
fn_call::Args args;
get_args(argc, args);
@@ -1537,7 +1537,7 @@ Machine::execute()
/// .
case SWF::ABC_ACTION_CONSTRUCTSUPER:
{
- boost::uint32_t argc = mStream->read_V32();
+ std::uint32_t argc = mStream->read_V32();
fn_call::Args args;
get_args(argc, args);
@@ -1575,7 +1575,7 @@ Machine::execute()
as_environment env = as_environment(_vm);
MultiName a = pool_name(mStream->read_V32(), mPoolObject);
- boost::uint32_t argc = mStream->read_V32();
+ std::uint32_t argc = mStream->read_V32();
fn_call::Args args;
get_args(argc, args);
@@ -1652,7 +1652,7 @@ Machine::execute()
case SWF::ABC_ACTION_NEWOBJECT:
{
as_object *obj = _global->createObject();
- boost::uint32_t argc = mStream->read_V32();
+ std::uint32_t argc = mStream->read_V32();
int i = argc;
while (i--)
{
@@ -1675,8 +1675,8 @@ Machine::execute()
/// array -- an array { value_1, value_2, ..., value_n }
case SWF::ABC_ACTION_NEWARRAY:
{
- boost::uint32_t asize = mStream->read_V32();
- boost::uint32_t i = asize;
+ std::uint32_t asize = mStream->read_V32();
+ std::uint32_t i = asize;
as_object* arr = _global->createArray();
while (i--) {
@@ -1718,7 +1718,7 @@ Machine::execute()
/// lifetime(?))
case SWF::ABC_ACTION_NEWCLASS:
{
- boost::uint32_t cid = mStream->read_V32();
+ std::uint32_t cid = mStream->read_V32();
log_abc("Class index: %s", cid);
Class* c = pool_script(cid, mPoolObject);
log_abc("Creating new class id=%u name=%s", c->getName(),
@@ -1911,7 +1911,7 @@ Machine::execute()
/// value
case SWF::ABC_ACTION_GETLOCAL:
{
- boost::uint32_t index = mStream->read_V32();
+ std::uint32_t index = mStream->read_V32();
push_stack(getRegister(index));
break;
}
@@ -1925,7 +1925,7 @@ Machine::execute()
/// .
case SWF::ABC_ACTION_SETLOCAL:
{
- boost::uint32_t index = mStream->read_V32();
+ std::uint32_t index = mStream->read_V32();
log_abc("Register index: %u",index);
setRegister(index, pop_stack());
break;
@@ -1946,7 +1946,7 @@ Machine::execute()
/// scope -- The scope object at depth
case SWF::ABC_ACTION_GETSCOPEOBJECT:
{
- boost::uint8_t depth = mStream->read_u8();
+ std::uint8_t depth = mStream->read_u8();
push_stack(get_scope_stack(depth));
print_scope_stack();
break;
@@ -2020,7 +2020,7 @@ Machine::execute()
/// from the context.
case SWF::ABC_ACTION_INITPROPERTY:
{
- boost::uint32_t index = mStream->read_V32();
+ std::uint32_t index = mStream->read_V32();
MultiName a = pool_name(index, mPoolObject);
as_value v = pop_stack();
// TODO: If multiname is a runtime mutiname we need to also
@@ -2079,7 +2079,7 @@ Machine::execute()
case SWF::ABC_ACTION_GETSLOT:
{
as_value val;
- boost::uint32_t sindex = mStream->read_V32();
+ std::uint32_t sindex = mStream->read_V32();
as_object* object = pop_stack().to_object(*_global);
if (!object) {
log_abc("GETSLOT: Did not find expected object on "
@@ -2109,7 +2109,7 @@ Machine::execute()
/// equal to the number of slots (so one-based index?).
case SWF::ABC_ACTION_SETSLOT:
{
- boost::uint32_t sindex = mStream->read_V32();
+ std::uint32_t sindex = mStream->read_V32();
as_value value = pop_stack();
as_value object = pop_stack();
log_abc("SETSLOT object: %s, value: %s, index: %s",
@@ -2151,7 +2151,7 @@ Machine::execute()
/// NB: Deprecated
case SWF::ABC_ACTION_GETGLOBALSLOT:
{
- boost::uint32_t sindex = mStream->read_V32();
+ std::uint32_t sindex = mStream->read_V32();
if (!sindex)
throw ASException();
--sindex;
@@ -2170,7 +2170,7 @@ Machine::execute()
/// NB: Deprecated
case SWF::ABC_ACTION_SETGLOBALSLOT:
{
- boost::uint32_t sindex = mStream->read_V32();
+ std::uint32_t sindex = mStream->read_V32();
if (!sindex)
throw ASException();
--sindex;
@@ -2228,7 +2228,7 @@ Machine::execute()
/// int_value -- value as an unsigned integer object
case SWF::ABC_ACTION_CONVERT_U:
case SWF::ABC_ACTION_COERCE_U:
- _stack.top(0) = static_cast<boost::uint32_t>(
+ _stack.top(0) = static_cast<std::uint32_t>(
toNumber(_stack.top(0), getVM(fn)));
break;
@@ -2412,7 +2412,7 @@ Machine::execute()
/// Frame: Load i from frame_addr and increment it.
case SWF::ABC_ACTION_INCLOCAL:
{
- boost::uint32_t foff = mStream->read_V32();
+ std::uint32_t foff = mStream->read_V32();
setRegister(foff, toNumber(getRegister(foff), getVM(fn)) + 1);
break;
}
@@ -2433,7 +2433,7 @@ Machine::execute()
/// Frame: Load i from frame_addr and decrement it.
case SWF::ABC_ACTION_DECLOCAL:
{
- const boost::uint32_t foff = mStream->read_V32();
+ const std::uint32_t foff = mStream->read_V32();
setRegister(foff, toNumber(getRegister(foff), getVM(fn)) - 1);
break;
}
@@ -2561,7 +2561,7 @@ Machine::execute()
case SWF::ABC_ACTION_URSHIFT:
{
_stack.top(1) =
- static_cast<boost::uint32_t>(toNumber(_stack.top(1), getVM(fn)))
+ static_cast<std::uint32_t>(toNumber(_stack.top(1), getVM(fn)))
>> toInt(_stack.top(0));
_stack.drop(1);
break;
@@ -2784,7 +2784,7 @@ Machine::execute()
/// not double
case SWF::ABC_ACTION_INCLOCAL_I:
{
- const boost::uint32_t foff = mStream->read_V32();
+ const std::uint32_t foff = mStream->read_V32();
setRegister(foff, toInt(getRegister(foff)) + 1);
break;
}
@@ -2794,7 +2794,7 @@ Machine::execute()
/// not double
case SWF::ABC_ACTION_DECLOCAL_I:
{
- const boost::uint32_t foff = mStream->read_V32();
+ const std::uint32_t foff = mStream->read_V32();
setRegister(foff, toInt(getRegister(foff)) - 1);
break;
}
@@ -3350,7 +3350,7 @@ Machine::get_args(size_t argc, fn_call::Args& args)
}
void
-Machine::clearRegisters(boost::uint32_t maxRegisters)
+Machine::clearRegisters(std::uint32_t maxRegisters)
{
_registers.clear();
_registers.resize(maxRegisters);
diff --git a/libcore/vm/Machine.h b/libcore/vm/Machine.h
index ce6c891..0cd9893 100644
--- a/libcore/vm/Machine.h
+++ b/libcore/vm/Machine.h
@@ -300,11 +300,11 @@ private:
void get_args(size_t argc, FunctionArgs<as_value>& args);
- void load_function(CodeStream* stream, boost::uint32_t maxRegisters);
+ void load_function(CodeStream* stream, std::uint32_t maxRegisters);
void executeCodeblock(CodeStream* stream);
- void clearRegisters(boost::uint32_t maxRegsiters);
+ void clearRegisters(std::uint32_t maxRegsiters);
const as_value& getRegister(int index){
log_abc("Getting value at a register %d ", index);
@@ -340,7 +340,7 @@ private:
return _scopeStack.pop();
}
- as_object* get_scope_stack(boost::uint8_t depth) const {
+ as_object* get_scope_stack(std::uint8_t depth) const {
log_abc("Getting value from scope stack %u from the bottom.",
depth | 0x0);
return _scopeStack.value(depth);
diff --git a/libcore/vm/SafeStack.h b/libcore/vm/SafeStack.h
index 01b33e4..4dd9444 100644
--- a/libcore/vm/SafeStack.h
+++ b/libcore/vm/SafeStack.h
@@ -215,7 +215,7 @@ public:
/// Delete the allocated data.
~SafeStack()
{
- for (StackSize i = 0; i < _data.size(); ++i) delete [] _data[i];
+ for (auto& elem : _data) delete [] elem;
}
private:
diff --git a/libcore/vm/VM.cpp b/libcore/vm/VM.cpp
index 4214097..f6f13e9 100644
--- a/libcore/vm/VM.cpp
+++ b/libcore/vm/VM.cpp
@@ -59,7 +59,7 @@ VM::VM(movie_root& root, VirtualClock& clock)
_stack(),
_shLib(new SharedObjectLibrary(*this)),
_rng(clock.elapsed()),
- _constantPool(0)
+ _constantPool(nullptr)
{
NSV::loadStrings(_stringTable);
_global->registerClasses();
@@ -199,7 +199,7 @@ VM::getRegister(size_t index)
// Otherwise it can be in the global registers.
if (index < _globalRegisters.size()) return &_globalRegisters[index];
- return 0;
+ return nullptr;
}
void
@@ -241,7 +241,7 @@ VM::pushCallFrame(UserFunction& func)
// TODO: override from gnashrc.
// A stack size of 0 is apparently legitimate.
- const boost::uint16_t recursionLimit = getRoot().getRecursionLimit();
+ const std::uint16_t recursionLimit = getRoot().getRecursionLimit();
// Don't proceed if local call frames would reach the recursion limit.
if (_callStack.size() + 1 >= recursionLimit) {
@@ -253,7 +253,7 @@ VM::pushCallFrame(UserFunction& func)
throw ActionLimitException(ss.str());
}
- _callStack.push_back(CallFrame(&func));
+ _callStack.emplace_back(&func);
return _callStack.back();
}
@@ -276,9 +276,9 @@ NativeFunction*
VM::getNative(unsigned int x, unsigned int y) const
{
AsNativeTable::const_iterator row = _asNativeTable.find(x);
- if (row == _asNativeTable.end()) return 0;
+ if (row == _asNativeTable.end()) return nullptr;
FuncMap::const_iterator col = row->second.find(y);
- if (col == row->second.end()) return 0;
+ if (col == row->second.end()) return nullptr;
Global_as::ASFunction fun = col->second;
NativeFunction* f = new NativeFunction(*_global, fun);
@@ -459,7 +459,7 @@ toObject(const as_value& v, VM& vm)
return v.to_object(vm);
}
-boost::int32_t
+std::int32_t
toInt(const as_value& v, const VM& vm)
{
const double d = v.to_number(vm.getSWFVersion());
@@ -468,16 +468,16 @@ toInt(const as_value& v, const VM& vm)
return 0;
}
- typedef std::numeric_limits<boost::int32_t> limit;
+ typedef std::numeric_limits<std::int32_t> limit;
if (d >= limit::min() && d <= limit::max()) {
return d;
}
if (d < 0) {
- return - static_cast<boost::uint32_t>(std::fmod(-d, 4294967296.0));
+ return - static_cast<std::uint32_t>(std::fmod(-d, 4294967296.0));
}
- return static_cast<boost::uint32_t>(std::fmod(d, 4294967296.0));
+ return static_cast<std::uint32_t>(std::fmod(d, 4294967296.0));
}
/// Force type to number.
diff --git a/libcore/vm/VM.h b/libcore/vm/VM.h
index 6e2edb0..b3a54d9 100644
--- a/libcore/vm/VM.h
+++ b/libcore/vm/VM.h
@@ -26,8 +26,8 @@
#include <map>
#include <memory>
-#include <boost/array.hpp>
-#include <boost/cstdint.hpp>
+#include <array>
+#include <cstdint>
#include <boost/random/mersenne_twister.hpp> // for mt11213b
#include <boost/noncopyable.hpp>
@@ -270,13 +270,13 @@ private:
SafeStack<as_value> _stack;
- typedef boost::array<as_value, 4> GlobalRegisters;
+ typedef std::array<as_value, 4> GlobalRegisters;
GlobalRegisters _globalRegisters;
CallStack _callStack;
/// Library of SharedObjects. Owned by the VM.
- std::auto_ptr<SharedObjectLibrary> _shLib;
+ std::unique_ptr<SharedObjectLibrary> _shLib;
RNG _rng;
@@ -425,7 +425,7 @@ as_object* toObject(const as_value& v, VM& vm);
/// @param val The value to return as an int.
/// @param vm The VM to use for the conversion.
/// @return The integer value of the passed as_value.
-boost::int32_t toInt(const as_value& val, const VM& vm);
+std::int32_t toInt(const as_value& val, const VM& vm);
/// Force type to number.
//
diff --git a/libcore/vm/fn_call.h b/libcore/vm/fn_call.h
index 6d234f3..16d7fb0 100644
--- a/libcore/vm/fn_call.h
+++ b/libcore/vm/fn_call.h
@@ -61,21 +61,31 @@ public:
typedef std::vector<T> container_type;
typedef T value_type;
- FunctionArgs() {}
+ FunctionArgs() = default;
+ FunctionArgs(FunctionArgs&& other) = default;
/// The copy constructor copies all the arguments.
- FunctionArgs(const FunctionArgs& other)
- :
- _v(other._v)
- {}
+ FunctionArgs(const FunctionArgs& other) = default;
+
+ FunctionArgs& operator+=(T t) {
+ _v.push_back(std::move(t));
+ return *this;
+ }
+
+ FunctionArgs& operator,(T t) {
+ _v.push_back(std::move(t));
+ return *this;
+ }
- FunctionArgs& operator+=(const T& t) {
- _v.push_back(t);
+ template <typename U>
+ FunctionArgs& operator,(U&& u) {
+ _v.emplace_back(std::forward<U>(u));
return *this;
}
- FunctionArgs& operator,(const T& t) {
- _v.push_back(t);
+ template <typename U>
+ FunctionArgs& operator+=(U&& u) {
+ _v.emplace_back(std::forward<U>(u));
return *this;
}
@@ -119,12 +129,12 @@ public:
/// calculated from the this pointer (if that is not
/// null) whenever a function requires it.
fn_call(as_object* this_in, const as_environment& env_in,
- Args& args, as_object* sup = 0, bool isNew = false)
+ Args& args, as_object* sup = nullptr, bool isNew = false)
:
this_ptr(this_in),
super(sup),
nargs(args.size()),
- callerDef(0),
+ callerDef(nullptr),
_env(env_in),
_new(isNew)
{
@@ -134,9 +144,9 @@ public:
fn_call(as_object* this_in, const as_environment& env_in)
:
this_ptr(this_in),
- super(0),
+ super(nullptr),
nargs(0),
- callerDef(0),
+ callerDef(nullptr),
_env(env_in),
_new(false)
{
@@ -252,7 +262,7 @@ struct IsDisplayObject
{
typedef T value_type;
value_type* operator()(const as_object* o) const {
- if (!o) return 0;
+ if (!o) return nullptr;
return dynamic_cast<T*>(o->displayObject());
}
};
diff --git a/libdevice/DeviceGlue.cpp b/libdevice/DeviceGlue.cpp
index 30dae4f..4f454f8 100644
--- a/libdevice/DeviceGlue.cpp
+++ b/libdevice/DeviceGlue.cpp
@@ -51,7 +51,7 @@ DeviceGlue::setDevice(renderer::GnashDevice::dtype_t dtype)
#ifdef BUILD_RAWFB_DEVICE
case renderer::GnashDevice::RAWFB:
{
- _device.reset(new renderer::rawfb::RawFBDevice(0, 0));
+ _device.reset(new renderer::rawfb::RawFBDevice(0, nullptr));
break;
}
#endif
diff --git a/libdevice/DeviceGlue.h b/libdevice/DeviceGlue.h
index 37c51cc..ca5ddda 100644
--- a/libdevice/DeviceGlue.h
+++ b/libdevice/DeviceGlue.h
@@ -24,8 +24,7 @@
#include "gnashconfig.h"
#endif
-#include <boost/shared_array.hpp>
-#include <boost/scoped_ptr.hpp>
+#include <memory>
#include "GnashDevice.h"
@@ -45,7 +44,7 @@ public:
/// available.
///
/// @return a list of devices
- boost::shared_array<renderer::GnashDevice::dtype_t> probeDevices() {
+ std::unique_ptr<renderer::GnashDevice::dtype_t[]> probeDevices() {
GNASH_REPORT_FUNCTION;
size_t total = 0;
@@ -62,7 +61,7 @@ public:
total++;
#endif
total++; // add one more for the list terminator
- boost::shared_array<renderer::GnashDevice::dtype_t> devs
+ std::unique_ptr<renderer::GnashDevice::dtype_t[]> devs
(new renderer::GnashDevice::dtype_t[total]);
// terminate the list so it can easily be walked through later.
devs[--total] = renderer::GnashDevice::GNASH_NODEV;
@@ -137,7 +136,7 @@ public:
}
protected:
- boost::scoped_ptr<renderer::GnashDevice> _device;
+ std::unique_ptr<renderer::GnashDevice> _device;
};
} // namespace gnash
diff --git a/libdevice/GnashDevice.h b/libdevice/GnashDevice.h
index 24254e0..c809823 100644
--- a/libdevice/GnashDevice.h
+++ b/libdevice/GnashDevice.h
@@ -24,7 +24,7 @@
#include "gnashconfig.h"
#endif
-#include <boost/cstdint.hpp>
+#include <cstdint>
#include "log.h"
/// @note This file is the base class for all low level rendering and display
@@ -113,10 +113,10 @@ struct GnashDevice
// These are only used for the Framebuffer
/// Get the memory from the real framebuffer
- virtual boost::uint8_t *getFBMemory() { return 0; };
+ virtual std::uint8_t *getFBMemory() { return nullptr; };
/// Get the memory from an offscreen buffer to support Double Buffering
- virtual boost::uint8_t *getOffscreenBuffer() { return 0; };
+ virtual std::uint8_t *getOffscreenBuffer() { return nullptr; };
virtual size_t getFBMemSize() { return 0; };
diff --git a/libdevice/directfb/DirectFBDevice.h b/libdevice/directfb/DirectFBDevice.h
index a7b29e5..468b1c2 100644
--- a/libdevice/directfb/DirectFBDevice.h
+++ b/libdevice/directfb/DirectFBDevice.h
@@ -24,8 +24,7 @@
#include "gnashconfig.h"
#endif
-#include <boost/scoped_array.hpp>
-#include <boost/scoped_ptr.hpp>
+#include <memory>
#ifdef HAVE_DIRECTFB_H
# include <directfb/directfb.h>
diff --git a/libdevice/directfb/Renderer_DirectFB.cpp b/libdevice/directfb/Renderer_DirectFB.cpp
index 6c5d1be..f322de9 100644
--- a/libdevice/directfb/Renderer_DirectFB.cpp
+++ b/libdevice/directfb/Renderer_DirectFB.cpp
@@ -38,7 +38,7 @@
#include "Renderer_DirectFB.h"
#include <boost/utility.hpp>
-#include <boost/bind.hpp>
+#include <functional>
// Defined to 1 to disable (slow) anti-aliasing with the accumulation buffer
#define NO_ANTIALIASING 1
@@ -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/egl/eglDevice.h b/libdevice/egl/eglDevice.h
index 5460cb2..401a069 100644
--- a/libdevice/egl/eglDevice.h
+++ b/libdevice/egl/eglDevice.h
@@ -24,8 +24,7 @@
#include "gnashconfig.h"
#endif
-#include <boost/scoped_array.hpp>
-#include <boost/scoped_ptr.hpp>
+#include <memory>
#ifdef HAVE_X11_X_H
#include "x11/X11Device.h"
diff --git a/libdevice/events/EventDevice.cpp b/libdevice/events/EventDevice.cpp
index 5351dcf..8dc72f2 100644
--- a/libdevice/events/EventDevice.cpp
+++ b/libdevice/events/EventDevice.cpp
@@ -43,11 +43,10 @@ EventDevice::EventDevice()
keyb_lctrl(false),
keyb_rctrl(false),
keyb_lalt(false),
- keyb_ralt(false)
+ keyb_ralt(false),
+ _device_info()
{
// GNASH_REPORT_FUNCTION;
-
- memset(&_device_info, 0, sizeof(struct input_id));
}
bool
@@ -109,7 +108,7 @@ EventDevice::init(const std::string &filespec, size_t /* size */)
log_debug(_("The device on %s says its name is %s"), filespec, name);
// /dev/mxc_ts is the Touchscreen driver used by the Freescale Babbage board
// For some reason it has an empty device info structure other than the name.
- if (strstr(name, "mxc_ts") != 0) {
+ if (strstr(name, "mxc_ts") != nullptr) {
_device_info.bustype = BUS_HOST;
}
log_debug(_("vendor %04hx product %04hx version %04hx"),
@@ -163,10 +162,10 @@ EventDevice::init(const std::string &filespec, size_t /* size */)
case BUS_I8042:
// This is for keyboards and mice
log_debug(_("is an I8042 bus type"));
- if (strstr(name, "keyboard") != 0) {
+ if (strstr(name, "keyboard") != nullptr) {
_type = InputDevice::KEYBOARD;
} else {
- if (strstr(name, "Mouse") != 0) {
+ if (strstr(name, "Mouse") != nullptr) {
_type = InputDevice::MOUSE;
}
}
@@ -195,11 +194,11 @@ EventDevice::init(const std::string &filespec, size_t /* size */)
case BUS_HOST:
// log_debug("is Host bus type");
// ON the Babbage board, this is the evdev driver version 1.0.0
- if (strstr(name, "mxc_ts") != 0) {
+ if (strstr(name, "mxc_ts") != nullptr) {
log_debug(_("Babbage Touchscreen found!"));
_type = InputDevice::TABLET;
}
- if (strstr(name, "mxckpd") != 0) {
+ if (strstr(name, "mxckpd") != nullptr) {
log_debug(_("Babbage Power Button found!"));
_type = InputDevice::POWERBUTTON;
}
@@ -262,7 +261,7 @@ EventDevice::check()
}
// Try to read something from the device
- boost::shared_array<boost::uint8_t> buf = readData(sizeof( struct input_event));
+ std::unique_ptr<std::uint8_t[]> buf = readData(sizeof( struct input_event));
// time,type,code,value
if (!buf) {
return false;
@@ -311,7 +310,7 @@ EventDevice::check()
switch (ev->type) {
case EV_SYN:
{
- boost::shared_ptr<InputDevice::input_data_t> _newdata(new InputDevice::input_data_t);
+ std::shared_ptr<InputDevice::input_data_t> _newdata(new InputDevice::input_data_t);
#if 0
std::copy(_input_data.begin(), _input_data.end(), _newdata.begin());
#else
@@ -409,13 +408,17 @@ EventDevice::check()
_input_data.rz = ev->value;
break;
case REL_HWHEEL:
- log_debug(_("REL_HWHEEL: %d"), ev->value);
+ log_unimpl(_("REL_HWHEEL: %d"), ev->value);
+ break;
case REL_DIAL:
- log_debug(_("REL_DIAL: %d"), ev->value);
+ log_unimpl(_("REL_DIAL: %d"), ev->value);
+ break;
case REL_WHEEL:
- log_debug(_("REL_WHEEL: %d"), ev->value);
+ log_unimpl(_("REL_WHEEL: %d"), ev->value);
+ break;
case REL_MISC:
- log_debug(_("REL_MISC: %d"), ev->value);
+ log_unimpl(_("REL_MISC: %d"), ev->value);
+ break;
default:
log_unimpl(_("Relative move event %d from Input Event Device"),
ev->value);
@@ -672,7 +675,7 @@ EventDevice::scancode_to_gnash_key(int code, bool shift)
}
// This looks in the input event devices
-std::vector<boost::shared_ptr<InputDevice> >
+std::vector<std::shared_ptr<InputDevice> >
EventDevice::scanForDevices()
{
// GNASH_REPORT_FUNCTION;
@@ -680,7 +683,7 @@ EventDevice::scanForDevices()
struct stat st;
int total = 0;
- std::vector<boost::shared_ptr<InputDevice> > devices;
+ std::vector<std::shared_ptr<InputDevice> > devices;
// The default path for input event devices.
char *filespec = strdup("/dev/input/eventX");
@@ -723,8 +726,8 @@ EventDevice::scanForDevices()
device_info.vendor, device_info.product,
device_info.version);
close(fd);
- boost::shared_ptr<InputDevice> dev;
- dev = boost::shared_ptr<InputDevice>(new EventDevice());
+ std::shared_ptr<InputDevice> dev;
+ dev = std::shared_ptr<InputDevice>(new EventDevice());
// The Uinput device has no product, vendor, or version data.
if ((device_info.vendor + device_info.product + device_info.version) > 0) {
if (dev->init(filespec, DEFAULT_BUFFER_SIZE)) {
diff --git a/libdevice/events/InputDevice.cpp b/libdevice/events/InputDevice.cpp
index 2157f90..5f1a5ed 100644
--- a/libdevice/events/InputDevice.cpp
+++ b/libdevice/events/InputDevice.cpp
@@ -31,21 +31,21 @@ namespace gnash {
InputDevice::InputDevice()
: _type(InputDevice::UNKNOWN),
_fd(-1),
+ _input_data(),
_screen_width(0),
_screen_height(0)
{
// GNASH_REPORT_FUNCTION;
- memset(&_input_data, 0, sizeof(InputDevice::input_data_t));
}
InputDevice::InputDevice(int x, int y)
: _type(InputDevice::UNKNOWN),
_fd(-1),
+ _input_data(),
_screen_width(x),
_screen_height(y)
{
// GNASH_REPORT_FUNCTION;
- memset(&_input_data, 0, sizeof(InputDevice::input_data_t));
}
InputDevice::~InputDevice()
@@ -93,7 +93,7 @@ InputDevice::addData(bool pressed, key::code key, int modifier, int x, int y)
{
// GNASH_REPORT_FUNCTION;
- boost::shared_ptr<input_data_t> _newdata(new input_data_t);
+ std::shared_ptr<input_data_t> _newdata(new input_data_t);
_newdata->pressed = pressed;
_newdata->key = key;
_newdata->modifier = modifier;
@@ -108,12 +108,12 @@ InputDevice::addData(bool pressed, key::code key, int modifier, int x, int y)
}
// Read data into the Device input buffer.
-boost::shared_array<boost::uint8_t>
+std::unique_ptr<std::uint8_t[]>
InputDevice::readData(size_t size)
{
// GNASH_REPORT_FUNCTION;
- boost::shared_array<boost::uint8_t> inbuf;
+ std::unique_ptr<std::uint8_t[]> inbuf;
if (_fd < 0) {
return inbuf; // no mouse available
@@ -126,7 +126,7 @@ InputDevice::readData(size_t size)
tval.tv_sec = 0;
tval.tv_usec = 1;
errno = 0;
- int ret = ::select(_fd+1, &fdset, NULL, NULL, &tval);
+ int ret = ::select(_fd+1, &fdset, nullptr, nullptr, &tval);
if (ret == 0) {
// log_debug(_("The pipe for fd #%d timed out waiting to read"), fd);
return inbuf;
@@ -137,7 +137,7 @@ InputDevice::readData(size_t size)
return inbuf;
}
- inbuf.reset(new boost::uint8_t[size]);
+ inbuf.reset(new std::uint8_t[size]);
ret = ::read(_fd, inbuf.get(), size);
if (ret > 0) {
// log_debug(_("Read %d bytes, %s"), ret, hexify(inbuf.get(), ret, false));
@@ -175,11 +175,11 @@ InputDevice::dump() const
// The Babbage touchscreen gives is relative coordinates, but they don't
// match the actual screen resolution. So we convert the coordinates
// to a new absolute location.
-boost::shared_array<int>
+std::unique_ptr<int[]>
InputDevice::convertAbsCoords(int x, int y, int width, int height)
{
// GNASH_REPORT_FUNCTION;
- boost::shared_array<int> coords(new int[2]);
+ std::unique_ptr<int[]> coords(new int[2]);
coords[0] = int((x/256) * width);
coords[1] = int((y/256) * height);
@@ -187,15 +187,15 @@ InputDevice::convertAbsCoords(int x, int y, int width, int height)
return coords;
}
-std::vector<boost::shared_ptr<InputDevice> >
+std::vector<std::shared_ptr<InputDevice> >
InputDevice::scanForDevices()
{
// GNASH_REPORT_FUNCTION;
- std::vector<boost::shared_ptr<InputDevice> > devices;
+ std::vector<std::shared_ptr<InputDevice> > devices;
- std::vector<boost::shared_ptr<InputDevice> > id;
- std::vector<boost::shared_ptr<InputDevice> >::iterator it;
+ std::vector<std::shared_ptr<InputDevice> > id;
+ std::vector<std::shared_ptr<InputDevice> >::iterator it;
#ifdef USE_INPUT_EVENTS
id = EventDevice::scanForDevices();
for (it=id.begin(); it!=id.end(); ++it) {
diff --git a/libdevice/events/InputDevice.h b/libdevice/events/InputDevice.h
index 6d36ed0..ee5d903 100644
--- a/libdevice/events/InputDevice.h
+++ b/libdevice/events/InputDevice.h
@@ -22,11 +22,8 @@
#include "gnashconfig.h"
#endif
-#include <boost/scoped_array.hpp>
-#include <boost/shared_array.hpp>
-#include <boost/scoped_ptr.hpp>
-#include <boost/shared_ptr.hpp>
-#include <boost/cstdint.hpp>
+#include <memory>
+#include <cstdint>
#include <vector>
#include <queue>
#include <linux/input.h>
@@ -124,16 +121,16 @@ public:
virtual bool init(const std::string &filespec, size_t size) = 0;
virtual bool check() = 0;
- static DSOEXPORT std::vector<boost::shared_ptr<InputDevice> > scanForDevices();
+ static DSOEXPORT std::vector<std::shared_ptr<InputDevice> > scanForDevices();
InputDevice::devicetype_e getType() { return _type; };
void setType(InputDevice::devicetype_e x) { _type = x; };
// Read data into the Device input buffer.
- boost::shared_array<boost::uint8_t> readData(size_t size);
- boost::shared_ptr<input_data_t> popData()
+ std::unique_ptr<std::uint8_t[]> readData(size_t size);
+ std::shared_ptr<input_data_t> popData()
{
- boost::shared_ptr<InputDevice::input_data_t> input;
+ std::shared_ptr<InputDevice::input_data_t> input;
if (_data.size()) {
// std::cerr << "FIXME: " <<_data.size() << std::endl;
input = _data.front();
@@ -142,7 +139,7 @@ public:
return input;
}
- static DSOEXPORT boost::shared_array<int> convertAbsCoords(int x, int y,
+ static DSOEXPORT std::unique_ptr<int[]> convertAbsCoords(int x, int y,
int width, int height);
void setScreenSize(int x, int y)
@@ -160,8 +157,8 @@ protected:
int _fd;
input_data_t _input_data;
// These hold the data queue
- boost::scoped_array<boost::uint8_t> _buffer;
- std::queue<boost::shared_ptr<input_data_t> > _data;
+ std::unique_ptr<std::uint8_t[]> _buffer;
+ std::queue<std::shared_ptr<input_data_t> > _data;
int _screen_width;
int _screen_height;
};
@@ -176,7 +173,7 @@ public:
bool init(const std::string &filespec, size_t size);
bool check();
- static std::vector<boost::shared_ptr<InputDevice> > scanForDevices();
+ static std::vector<std::shared_ptr<InputDevice> > scanForDevices();
/// Sends a command to the mouse and waits for the response
bool command(unsigned char cmd, unsigned char *buf, int count);
@@ -198,7 +195,7 @@ public:
void apply_ts_calibration(float* cx, float* cy, int rawx, int rawy);
- static std::vector<boost::shared_ptr<InputDevice> > scanForDevices();
+ static std::vector<std::shared_ptr<InputDevice> > scanForDevices();
private:
// Although the value is only set when using a touchscreen, it takes up little
// memory to initialize a pointer to avoid lots of messy ifdefs.
@@ -217,11 +214,11 @@ public:
gnash::key::code scancode_to_gnash_key(int code, bool shift);
// This looks for all the input event devices.
- static std::vector<boost::shared_ptr<InputDevice> > scanForDevices();
+ static std::vector<std::shared_ptr<InputDevice> > scanForDevices();
private:
// Keyboard SHIFT/CTRL/ALT states (left + right)
- bool keyb_lshift, keyb_rshift, keyb_lctrl, keyb_rctrl, keyb_lalt, keyb_ralt;
+ bool keyb_lshift, keyb_rshift, keyb_lctrl, keyb_rctrl, keyb_lalt, keyb_ralt;
struct input_id _device_info;
};
diff --git a/libdevice/events/MouseDevice.cpp b/libdevice/events/MouseDevice.cpp
index 2ae8c7d..11e49d9 100644
--- a/libdevice/events/MouseDevice.cpp
+++ b/libdevice/events/MouseDevice.cpp
@@ -24,7 +24,6 @@
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
-#include <boost/shared_array.hpp>
#include "GnashSleep.h"
#include "log.h"
@@ -46,14 +45,14 @@ MouseDevice::~MouseDevice()
// GNASH_REPORT_FUNCTION;
}
-std::vector<boost::shared_ptr<InputDevice> >
+std::vector<std::shared_ptr<InputDevice> >
MouseDevice::scanForDevices()
{
// GNASH_REPORT_FUNCTION;
struct stat st;
- std::vector<boost::shared_ptr<InputDevice> > devices;
+ std::vector<std::shared_ptr<InputDevice> > devices;
// Look for these files for mouse input
struct mouse_types {
@@ -99,9 +98,9 @@ MouseDevice::scanForDevices()
log_debug(_("Found a %s device for mouse input using %s"),
debug[mice[i].type], mice[i].filespec);
- boost::shared_ptr<InputDevice> dev;
+ std::shared_ptr<InputDevice> dev;
#if defined(USE_MOUSE_PS2) || defined(USE_MOUSE_ETT)
- dev = boost::shared_ptr<InputDevice>(new MouseDevice());
+ dev = std::shared_ptr<InputDevice>(new MouseDevice());
// The User Mode Mouse is write only, so we don't consider
// it an input device.
dev->setType(mice[i].type);
@@ -239,7 +238,7 @@ MouseDevice::check()
// GNASH_REPORT_FUNCTION;
int xmove, ymove, btn;
- boost::shared_array<boost::uint8_t> buf;
+ std::unique_ptr<std::uint8_t[]> buf;
if (_type == InputDevice::TOUCHMOUSE) {
// The eTurboTouch has a 4 byte packet
buf = readData(4);
@@ -339,7 +338,7 @@ MouseDevice::check()
if (_input_data.y < 0) {
_input_data.y = 0;
}
- boost::shared_array<int> coords =
+ std::unique_ptr<int[]> coords =
InputDevice::convertAbsCoords(_input_data.x, _input_data.y,
_screen_width, _screen_height);
// MouseDevice::convertCoordinates(_input_data.x, _input_data.y,
diff --git a/libdevice/events/TouchDevice.cpp b/libdevice/events/TouchDevice.cpp
index 61383d7..6c37f44 100644
--- a/libdevice/events/TouchDevice.cpp
+++ b/libdevice/events/TouchDevice.cpp
@@ -85,7 +85,7 @@ TouchDevice::init(const std::string &filespec, size_t /* size */)
}
_tsDev = ts_open(devname, 1); //Open tslib non-blocking
- if (_tsDev == 0) {
+ if (_tsDev == nullptr) {
log_error(_("Could not open touchscreen %s: %s"), devname,
strerror(errno));
return false;
@@ -114,7 +114,7 @@ TouchDevice::check()
// Tslib should be setup so the output is pretty clean.
struct ts_sample event;
- if (_tsDev == 0) {
+ if (_tsDev == nullptr) {
return false; // No tslib device initialized, exit!
}
@@ -128,7 +128,7 @@ TouchDevice::check()
// arguments are a range, so hardcoding them is safe for
// now. In the future more conversion may be done, making this
// then be incorrect.
- boost::shared_array<int> coords =
+ std::unique_ptr<int[]> coords =
InputDevice::convertAbsCoords(event.x, event.y,
_screen_width, _screen_height);
log_debug(_("Touched x: %d, y: %d"), event.x , event.y);
@@ -267,14 +267,14 @@ TouchDevice::apply_ts_calibration(float* cx, float* cy, int rawx, int rawy)
*cy = d * rawx + e * rawy + f;
}
-std::vector<boost::shared_ptr<InputDevice> >
+std::vector<std::shared_ptr<InputDevice> >
TouchDevice::scanForDevices()
{
// GNASH_REPORT_FUNCTION;
struct stat st;
- std::vector<boost::shared_ptr<InputDevice> > devices;
+ std::vector<std::shared_ptr<InputDevice> > devices;
// Debug strings to make output more readable
const char *debug[] = {
@@ -299,7 +299,7 @@ TouchDevice::scanForDevices()
struct ts_types touch[] = {
{InputDevice::TOUCHSCREEN, "/dev/input/ts0"},
{InputDevice::TOUCHSCREEN, "/dev/ts"},
- {InputDevice::UNKNOWN, 0}
+ {InputDevice::UNKNOWN, nullptr}
};
int i = 0;
@@ -317,8 +317,8 @@ TouchDevice::scanForDevices()
close(fd);
log_debug("Found a %s device for touchscreen input using %s",
debug[touch[i].type], touch[i].filespec);
- boost::shared_ptr<InputDevice> dev
- = boost::shared_ptr<InputDevice>(new TouchDevice());
+ std::shared_ptr<InputDevice> dev
+ = std::shared_ptr<InputDevice>(new TouchDevice());
if (dev->init(touch[i].filespec, DEFAULT_BUFFER_SIZE)) {
devices.push_back(dev);
}
diff --git a/libdevice/events/UinputDevice.cpp b/libdevice/events/UinputDevice.cpp
index 7459ece..51007c3 100644
--- a/libdevice/events/UinputDevice.cpp
+++ b/libdevice/events/UinputDevice.cpp
@@ -24,7 +24,6 @@
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
-#include <boost/shared_array.hpp>
#include "GnashSleep.h"
#include "log.h"
@@ -66,7 +65,7 @@ UinputDevice::scanForDevice()
"/dev/input/event4",
"/dev/uinput",
"/dev/input/uinput",
- 0
+ nullptr
};
int i = 0;
@@ -119,9 +118,8 @@ UinputDevice::init()
}
#else
#if 1 // USE_ABSOLUTE_POINTER
- struct uinput_user_dev uidev;
+ uinput_user_dev uidev = uinput_user_dev();
- memset(&uidev, 0, sizeof(uidev));
snprintf(uidev.name, UINPUT_MAX_NAME_SIZE, "uinput");
uidev.id.bustype = BUS_USB;
// uidev.id.vendor = 0x1;
@@ -192,10 +190,9 @@ UinputDevice::moveTo(int x, int y)
{
// GNASH_REPORT_FUNCTION;
- struct input_event ev;
+ input_event ev = input_event();
- memset(&ev, 0, sizeof(ev));
- gettimeofday(&ev.time, NULL);
+ gettimeofday(&ev.time, nullptr);
ev.type = EV_ABS;
ev.code = ABS_X;
ev.value = x;
diff --git a/libdevice/rawfb/RawFBDevice.cpp b/libdevice/rawfb/RawFBDevice.cpp
index bce2333..6c9bf2b 100644
--- a/libdevice/rawfb/RawFBDevice.cpp
+++ b/libdevice/rawfb/RawFBDevice.cpp
@@ -38,39 +38,31 @@ namespace renderer {
namespace rawfb {
-// The debug log used by all the gnash libraries.
-static LogFile& dbglogfile = LogFile::getDefaultInstance();
-
-
RawFBDevice::RawFBDevice()
: _fd(0),
- _fbmem(0)
+ _fbmem(nullptr)
{
// GNASH_REPORT_FUNCTION;
-
- // dbglogfile.setVerbosity();
}
RawFBDevice::RawFBDevice(int /* vid */)
: _fd(0),
- _fbmem(0)
+ _fbmem(nullptr),
+ _cmap()
{
// GNASH_REPORT_FUNCTION;
- memset(&_cmap, 0, sizeof(struct fb_cmap));
-
- if (!initDevice(0, 0)) {
+ if (!initDevice(0, nullptr)) {
log_error(_("Couldn't initialize RAWFB device!"));
}
}
RawFBDevice::RawFBDevice(int /* argc */ , char ** /* argv */)
: _fd(0),
- _fbmem(0)
+ _fbmem(nullptr),
+ _cmap()
{
// GNASH_REPORT_FUNCTION;
-
- memset(&_cmap, 0, sizeof(struct fb_cmap));
}
void
@@ -93,7 +85,7 @@ RawFBDevice::~RawFBDevice()
if (_fbmem) {
munmap(_fbmem, 0);
log_debug(_("Freeing framebuffer memory"));
- _fbmem = 0;
+ _fbmem = nullptr;
}
if (_offscreen_buffer) {
@@ -112,7 +104,7 @@ RawFBDevice::initDevice(int /* argc */, char **/* argv[] */)
{
GNASH_REPORT_FUNCTION;
- const char *devname = 0;
+ const char *devname = nullptr;
// Open the framebuffer device
#ifdef ENABLE_FAKE_FRAMEBUFFER
_fd = open(FAKEFB, O_RDWR);
@@ -181,7 +173,7 @@ RawFBDevice::setGrayscaleLUT8()
_cmap.red = (__u16*)malloc(CMAP_SIZE);
_cmap.green = (__u16*)malloc(CMAP_SIZE);
_cmap.blue = (__u16*)malloc(CMAP_SIZE);
- _cmap.transp = NULL;
+ _cmap.transp = nullptr;
for (i=0; i<256; i++) {
int r = i;
@@ -219,7 +211,7 @@ RawFBDevice::attachWindow(GnashDevice::native_window_t window)
// of the opened device. EGL wants the descriptor here too, so
// this way we work in a similar manner.
if (window) {
- _fbmem = reinterpret_cast<boost::uint8_t *>(mmap(0, _fixinfo.smem_len,
+ _fbmem = reinterpret_cast<std::uint8_t *>(mmap(nullptr, _fixinfo.smem_len,
PROT_READ|PROT_WRITE, MAP_SHARED,
window, 0));
}
@@ -232,7 +224,7 @@ RawFBDevice::attachWindow(GnashDevice::native_window_t window)
if (!isSingleBuffered()) {
// Create an offscreen buffer the same size as the Framebuffer
- _offscreen_buffer.reset(new boost::uint8_t[_fixinfo.smem_len]);
+ _offscreen_buffer.reset(new std::uint8_t[_fixinfo.smem_len]);
memset(_offscreen_buffer.get(), 0, _fixinfo.smem_len);
}
@@ -262,7 +254,7 @@ RawFBDevice::swapBuffers()
const char *
RawFBDevice::getErrorString(int /* error */)
{
- return 0;
+ return nullptr;
}
// Create an RAWFB window to render in. This is only used by testing
diff --git a/libdevice/rawfb/RawFBDevice.h b/libdevice/rawfb/RawFBDevice.h
index 3aaf83a..45dde48 100644
--- a/libdevice/rawfb/RawFBDevice.h
+++ b/libdevice/rawfb/RawFBDevice.h
@@ -24,8 +24,7 @@
#include "gnashconfig.h"
#endif
-#include <boost/scoped_array.hpp>
-#include <boost/scoped_ptr.hpp>
+#include <memory>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <sys/mman.h>
@@ -108,10 +107,10 @@ class DSOEXPORT RawFBDevice : public GnashDevice
void createWindow(const char *name, int x, int y, int width, int height);
// Get the memory from the real framebuffer
- boost::uint8_t *getFBMemory() { return _fbmem; };
+ std::uint8_t *getFBMemory() { return _fbmem; };
// // Get the memory from an offscreen buffer to support Double Buffering
- boost::uint8_t *getOffscreenBuffer() { return _offscreen_buffer.get(); };
+ std::uint8_t *getOffscreenBuffer() { return _offscreen_buffer.get(); };
size_t getStride() { return _fixinfo.line_length; };
size_t getFBMemSize() { return _fixinfo.smem_len; };
@@ -148,9 +147,9 @@ protected:
std::string _filespec;
struct fb_fix_screeninfo _fixinfo;
struct fb_var_screeninfo _varinfo;
- boost::uint8_t *_fbmem;
+ std::uint8_t *_fbmem;
- boost::scoped_ptr<boost::uint8_t> _offscreen_buffer;
+ std::unique_ptr<std::uint8_t> _offscreen_buffer;
struct fb_cmap _cmap; // the colormap
};
diff --git a/libdevice/vaapi/VaapiContext.cpp b/libdevice/vaapi/VaapiContext.cpp
index 050afd1..70b422a 100644
--- a/libdevice/vaapi/VaapiContext.cpp
+++ b/libdevice/vaapi/VaapiContext.cpp
@@ -236,9 +236,9 @@ bool VaapiContext::initDecoder(unsigned int width, unsigned int height)
}
/// Get a free surface
-boost::shared_ptr<VaapiSurface> VaapiContext::acquireSurface()
+std::shared_ptr<VaapiSurface> VaapiContext::acquireSurface()
{
- boost::shared_ptr<VaapiSurface> surface = _surfaces.front();
+ std::shared_ptr<VaapiSurface> surface = _surfaces.front();
_surfaces.pop();
log_debug("VaapiContext::acquireSurface(): surface 0x%08x\n", surface->get());
@@ -246,7 +246,7 @@ boost::shared_ptr<VaapiSurface> VaapiContext::acquireSurface()
}
/// Release surface
-void VaapiContext::releaseSurface(boost::shared_ptr<VaapiSurface> surface)
+void VaapiContext::releaseSurface(std::shared_ptr<VaapiSurface> surface)
{
log_debug("VaapiContext::releaseSurface(): surface 0x%08x\n", surface->get());
_surfaces.push(surface);
diff --git a/libdevice/vaapi/VaapiContext.h b/libdevice/vaapi/VaapiContext.h
index 963b023..8d9de72 100644
--- a/libdevice/vaapi/VaapiContext.h
+++ b/libdevice/vaapi/VaapiContext.h
@@ -49,7 +49,7 @@ public:
/// VA context abstraction
class DSOEXPORT VaapiContext {
- typedef boost::shared_ptr<VaapiSurface> VaapiSurfaceSP;
+ typedef std::shared_ptr<VaapiSurface> VaapiSurfaceSP;
VADisplay _display;
VAConfigID _config;
@@ -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();
@@ -78,13 +78,13 @@ public:
VAContextID get() const { return _context; }
/// Get a free surface
- boost::shared_ptr<VaapiSurface> acquireSurface();
+ std::shared_ptr<VaapiSurface> acquireSurface();
/// Release surface
- void releaseSurface(boost::shared_ptr<VaapiSurface> surface);
+ void releaseSurface(std::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/VaapiDevice.h b/libdevice/vaapi/VaapiDevice.h
index 87ca998..c89cb93 100644
--- a/libdevice/vaapi/VaapiDevice.h
+++ b/libdevice/vaapi/VaapiDevice.h
@@ -24,8 +24,7 @@
#include "gnashconfig.h"
#endif
-#include <boost/scoped_array.hpp>
-#include <boost/scoped_ptr.hpp>
+#include <memory>
#include <va/va.h>
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/VaapiImage.cpp b/libdevice/vaapi/VaapiImage.cpp
index d4a6a17..f8c1996 100644
--- a/libdevice/vaapi/VaapiImage.cpp
+++ b/libdevice/vaapi/VaapiImage.cpp
@@ -33,11 +33,11 @@ VaapiImage::VaapiImage(unsigned int width,
unsigned int height,
VaapiImageFormat format)
: _format(format)
+ , _image()
, _image_data(NULL)
{
log_debug(_("VaapiImage::VaapiImage(): format '%s'\n"), string_of_FOURCC(format));
- memset(&_image, 0, sizeof(_image));
_image.image_id = VA_INVALID_ID;
if (!create(width, height)) {
@@ -153,7 +153,7 @@ bool VaapiImage::unmap()
}
// Get pixels for the specified plane
-boost::uint8_t *VaapiImage::getPlane(int plane) const
+std::uint8_t *VaapiImage::getPlane(int plane) const
{
if (!isMapped()) {
throw VaapiException("VaapiImage::getPixels(): unmapped image");
diff --git a/libdevice/vaapi/VaapiImage.h b/libdevice/vaapi/VaapiImage.h
index f17000e..a9f27f7 100644
--- a/libdevice/vaapi/VaapiImage.h
+++ b/libdevice/vaapi/VaapiImage.h
@@ -20,7 +20,6 @@
#ifndef GNASH_VAAPIIMAGE_H
#define GNASH_VAAPIIMAGE_H
-#include <boost/scoped_array.hpp>
#include <memory>
#include "dsodefs.h"
@@ -42,7 +41,7 @@ class DSOEXPORT VaapiImage
{
VaapiImageFormat _format;
VAImage _image;
- boost::uint8_t * _image_data;
+ std::uint8_t * _image_data;
/// Create VA image
bool create(unsigned int width, unsigned int height);
@@ -81,7 +80,7 @@ public:
unsigned int getPlaneCount() const { return _image.num_planes; }
/// Get pixels for the specified plane
- boost::uint8_t *getPlane(int plane) const;
+ std::uint8_t *getPlane(int plane) const;
/// Get scanline pitch for the specified plane
unsigned int getPitch(int plane) const;
diff --git a/libdevice/vaapi/VaapiSubpicture.cpp b/libdevice/vaapi/VaapiSubpicture.cpp
index 227a05a..4a18938 100644
--- a/libdevice/vaapi/VaapiSubpicture.cpp
+++ b/libdevice/vaapi/VaapiSubpicture.cpp
@@ -28,7 +28,7 @@
namespace gnash {
-VaapiSubpicture::VaapiSubpicture(boost::shared_ptr<VaapiImage> image)
+VaapiSubpicture::VaapiSubpicture(std::shared_ptr<VaapiImage> image)
: _image(image)
, _subpicture(VA_INVALID_ID)
{
diff --git a/libdevice/vaapi/VaapiSubpicture.h b/libdevice/vaapi/VaapiSubpicture.h
index f730331..958158a 100644
--- a/libdevice/vaapi/VaapiSubpicture.h
+++ b/libdevice/vaapi/VaapiSubpicture.h
@@ -34,7 +34,7 @@ class VaapiImage;
/// VA subpicture abstraction
class DSOEXPORT VaapiSubpicture
{
- boost::shared_ptr<VaapiImage> _image;
+ std::shared_ptr<VaapiImage> _image;
VASubpictureID _subpicture;
/// Create VA subpicture
@@ -44,7 +44,7 @@ class DSOEXPORT VaapiSubpicture
void destroy();
public:
- VaapiSubpicture(boost::shared_ptr<VaapiImage> image);
+ VaapiSubpicture(std::shared_ptr<VaapiImage> image);
~VaapiSubpicture();
/// Return VA subpicture id
diff --git a/libdevice/vaapi/VaapiSurface.cpp b/libdevice/vaapi/VaapiSurface.cpp
index 7a16495..792aeb5 100644
--- a/libdevice/vaapi/VaapiSurface.cpp
+++ b/libdevice/vaapi/VaapiSurface.cpp
@@ -18,7 +18,7 @@
//
#include <algorithm>
-#include <boost/cstdint.hpp>
+#include <cstdint>
#include "log.h"
#include "VaapiSurface.h"
@@ -111,14 +111,14 @@ void VaapiSurface::clear()
}
// 0x10 is the black level for Y
- boost::uint8_t *Y = background.getPlane(0);
+ std::uint8_t *Y = background.getPlane(0);
unsigned int i, stride = background.getPitch(0);
for (i = 0; i < background.height(); i++, Y += stride) {
memset(Y, 0x10, stride);
}
// 0x80 is the black level for Cb and Cr
- boost::uint8_t *UV = background.getPlane(1);
+ std::uint8_t *UV = background.getPlane(1);
stride = background.getPitch(1);
for (i = 0; i < background.height()/2; i++, UV += stride) {
memset(UV, 0x80, stride);
@@ -141,14 +141,14 @@ void VaapiSurface::clear()
}
// Compare two subpictures
-static inline bool operator== (boost::shared_ptr<VaapiSubpicture> const &a,
- boost::shared_ptr<VaapiSubpicture> const &b)
+static inline bool operator== (std::shared_ptr<VaapiSubpicture> const &a,
+ std::shared_ptr<VaapiSubpicture> const &b)
{
return a->get() == b->get();
}
// Associate subpicture to the surface
-bool VaapiSurface::associateSubpicture(boost::shared_ptr<VaapiSubpicture> subpicture,
+bool VaapiSurface::associateSubpicture(std::shared_ptr<VaapiSubpicture> subpicture,
VaapiRectangle const & src_rect,
VaapiRectangle const & dst_rect)
{
@@ -177,9 +177,9 @@ bool VaapiSurface::associateSubpicture(boost::shared_ptr<VaapiSubpicture> subpic
}
// Deassociate subpicture from the surface
-bool VaapiSurface::deassociateSubpicture(boost::shared_ptr<VaapiSubpicture> subpicture)
+bool VaapiSurface::deassociateSubpicture(std::shared_ptr<VaapiSubpicture> subpicture)
{
- std::vector< boost::shared_ptr<VaapiSubpicture> >::iterator it;
+ std::vector< std::shared_ptr<VaapiSubpicture> >::iterator it;
it = std::find(_subpictures.begin(), _subpictures.end(), subpicture);
if (it == _subpictures.end()) {
return false;
diff --git a/libdevice/vaapi/VaapiSurface.h b/libdevice/vaapi/VaapiSurface.h
index 4180576..551bd55 100644
--- a/libdevice/vaapi/VaapiSurface.h
+++ b/libdevice/vaapi/VaapiSurface.h
@@ -66,8 +66,8 @@ public:
/// VA surface abstraction
class DSOEXPORT VaapiSurface
{
- std::auto_ptr<VaapiSurfaceImplBase> _impl;
- std::vector< boost::shared_ptr<VaapiSubpicture> > _subpictures;
+ std::unique_ptr<VaapiSurfaceImplBase> _impl;
+ std::vector< std::shared_ptr<VaapiSubpicture> > _subpictures;
friend class VaapiContext;
VaapiContext *_context;
@@ -94,12 +94,12 @@ public:
void clear();
/// Associate subpicture to the surface
- bool associateSubpicture(boost::shared_ptr<VaapiSubpicture> subpicture,
+ bool associateSubpicture(std::shared_ptr<VaapiSubpicture> subpicture,
VaapiRectangle const & src_rect,
VaapiRectangle const & dst_rect);
/// Deassociate subpicture from the surface
- bool deassociateSubpicture(boost::shared_ptr<VaapiSubpicture> subpicture);
+ bool deassociateSubpicture(std::shared_ptr<VaapiSubpicture> subpicture);
};
} // gnash namespace
diff --git a/libdevice/vaapi/VaapiSurfaceGLX.cpp b/libdevice/vaapi/VaapiSurfaceGLX.cpp
index 91a7cc5..486142f 100644
--- a/libdevice/vaapi/VaapiSurfaceGLX.cpp
+++ b/libdevice/vaapi/VaapiSurfaceGLX.cpp
@@ -19,43 +19,15 @@
#include <va/va_glx.h>
#include <va/va_x11.h>
+#include <GL/glu.h>
#include "log.h"
#include "VaapiSurfaceGLX.h"
#include "VaapiGlobalContext.h"
#include "vaapi_utils.h"
-namespace gnash {
-
-// Returns a string representation of an OpenGL error
-static const char *gl_get_error_string(GLenum error)
-{
- static const struct {
- GLenum val;
- const char *str;
- }
- gl_errors[] = {
- { GL_NO_ERROR, "no error" },
- { GL_INVALID_ENUM, "invalid enumerant" },
- { GL_INVALID_VALUE, "invalid value" },
- { GL_INVALID_OPERATION, "invalid operation" },
- { GL_STACK_OVERFLOW, "stack overflow" },
- { GL_STACK_UNDERFLOW, "stack underflow" },
- { GL_OUT_OF_MEMORY, "out of memory" },
-#ifdef GL_INVALID_FRAMEBUFFER_OPERATION_EXT
- { GL_INVALID_FRAMEBUFFER_OPERATION_EXT, "invalid framebuffer operation" },
-#endif
- { ~0, NULL }
- };
- int i;
- for (i = 0; gl_errors[i].str; i++) {
- if (gl_errors[i].val == error) {
- return gl_errors[i].str;
- }
- }
- return "unknown";
-}
+namespace gnash {
static inline bool gl_do_check_error(int report)
{
@@ -63,7 +35,7 @@ static inline bool gl_do_check_error(int report)
bool is_error = false;
while ((error = glGetError()) != GL_NO_ERROR) {
if (report) {
- vaapi_dprintf("glError: %s caught\n", gl_get_error_string(error));
+ vaapi_dprintf("glError: %s caught\n", gluErrorString(error));
}
is_error = true;
}
@@ -174,7 +146,7 @@ public:
VaapiSurfaceGLXImpl(GLenum target, GLuint texture);
~VaapiSurfaceGLXImpl();
- bool update(boost::shared_ptr<VaapiSurface> surface);
+ bool update(std::shared_ptr<VaapiSurface> surface);
};
VaapiSurfaceGLXImpl::VaapiSurfaceGLXImpl(GLenum target, GLuint texture)
@@ -229,7 +201,7 @@ VaapiSurfaceGLXImpl::~VaapiSurfaceGLXImpl()
reset(0);
}
-bool VaapiSurfaceGLXImpl::update(boost::shared_ptr<VaapiSurface> surface)
+bool VaapiSurfaceGLXImpl::update(std::shared_ptr<VaapiSurface> surface)
{
GNASH_REPORT_FUNCTION;
@@ -261,7 +233,7 @@ VaapiSurfaceGLX::VaapiSurfaceGLX(GLenum target, GLuint texture)
{
}
-bool VaapiSurfaceGLX::update(boost::shared_ptr<VaapiSurface> surface)
+bool VaapiSurfaceGLX::update(std::shared_ptr<VaapiSurface> surface)
{
log_debug(_("VaapiSurfaceGLX::update(): from surface 0x%08x\n"), surface->get());
diff --git a/libdevice/vaapi/VaapiSurfaceGLX.h b/libdevice/vaapi/VaapiSurfaceGLX.h
index ae4e68d..8262880 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);
@@ -46,7 +46,7 @@ public:
unsigned int height() const { return _impl->height(); }
/// Update VA/GLX surface from VA surface
- bool update(boost::shared_ptr<VaapiSurface> surface);
+ bool update(std::shared_ptr<VaapiSurface> surface);
};
} // gnash namespace
diff --git a/libdevice/vaapi/VaapiSurfaceProxy.cpp b/libdevice/vaapi/VaapiSurfaceProxy.cpp
index 8972587..84d3988 100644
--- a/libdevice/vaapi/VaapiSurfaceProxy.cpp
+++ b/libdevice/vaapi/VaapiSurfaceProxy.cpp
@@ -24,8 +24,8 @@
namespace gnash {
-VaapiSurfaceProxy::VaapiSurfaceProxy(boost::shared_ptr<VaapiSurface> surface,
- boost::shared_ptr<VaapiContext> context)
+VaapiSurfaceProxy::VaapiSurfaceProxy(std::shared_ptr<VaapiSurface> surface,
+ std::shared_ptr<VaapiContext> context)
: _context(context), _surface(surface)
{
log_debug(_("VaapiSurfaceProxy::VaapiSurfaceProxy(): surface 0x%08x\n"), _surface->get());
diff --git a/libdevice/vaapi/VaapiSurfaceProxy.h b/libdevice/vaapi/VaapiSurfaceProxy.h
index 07fbb1c..4cd53ee 100644
--- a/libdevice/vaapi/VaapiSurfaceProxy.h
+++ b/libdevice/vaapi/VaapiSurfaceProxy.h
@@ -31,19 +31,19 @@ class VaapiImage;
/// VA surface proxy used to release surface to context
class DSOEXPORT VaapiSurfaceProxy {
- boost::shared_ptr<VaapiContext> _context;
- boost::shared_ptr<VaapiSurface> _surface;
+ std::shared_ptr<VaapiContext> _context;
+ std::shared_ptr<VaapiSurface> _surface;
public:
- VaapiSurfaceProxy(boost::shared_ptr<VaapiSurface> surface,
- boost::shared_ptr<VaapiContext> context);
+ VaapiSurfaceProxy(std::shared_ptr<VaapiSurface> surface,
+ std::shared_ptr<VaapiContext> context);
~VaapiSurfaceProxy();
/// Return VA surface
- boost::shared_ptr<VaapiSurface> get() const { return _surface; }
+ std::shared_ptr<VaapiSurface> get() const { return _surface; }
/// Return VA context
- boost::shared_ptr<VaapiContext> getContext() const { return _context; }
+ std::shared_ptr<VaapiContext> getContext() const { return _context; }
};
} // gnash namespace
diff --git a/libdevice/vaapi/vaapi_common.h b/libdevice/vaapi/vaapi_common.h
index 8088e32..0870f10 100644
--- a/libdevice/vaapi/vaapi_common.h
+++ b/libdevice/vaapi/vaapi_common.h
@@ -25,10 +25,13 @@
#endif
#include <va/va.h>
+#if VA_CHECK_VERSION(0,34,0)
+#include <va/va_compat.h>
+#endif
+
#include <memory>
#include <stdint.h>
-#include <boost/cstdint.hpp>
-#include <boost/shared_ptr.hpp>
+#include <cstdint>
#include "dsodefs.h"
#endif // GNASH_VAAPI_COMMON_H
diff --git a/libdevice/vaapi/vaapi_utils.cpp b/libdevice/vaapi/vaapi_utils.cpp
index 8ddb5ac..98a347c 100644
--- a/libdevice/vaapi/vaapi_utils.cpp
+++ b/libdevice/vaapi/vaapi_utils.cpp
@@ -58,7 +58,7 @@ bool vaapi_check_status(VAStatus status, const char *msg)
}
/// Return a string representation of a FOURCC
-const char *string_of_FOURCC(boost::uint32_t fourcc)
+const char *string_of_FOURCC(std::uint32_t fourcc)
{
static int buf;
static char str[2][5]; // XXX: 2 buffers should be enough for most purposes
diff --git a/libdevice/vaapi/vaapi_utils.h b/libdevice/vaapi/vaapi_utils.h
index a613995..5390b34 100644
--- a/libdevice/vaapi/vaapi_utils.h
+++ b/libdevice/vaapi/vaapi_utils.h
@@ -37,7 +37,7 @@ void DSOEXPORT vaapi_dprintf(const char *format, ...);
bool DSOEXPORT vaapi_check_status(VAStatus status, const char *msg);
/// Return a string representation of a FOURCC
-DSOEXPORT const char* string_of_FOURCC(boost::uint32_t fourcc);
+DSOEXPORT const char* string_of_FOURCC(std::uint32_t fourcc);
/// Return a string representation of a VAProfile
DSOEXPORT const char* string_of_VAProfile(VAProfile profile);
diff --git a/libdevice/x11/X11Device.h b/libdevice/x11/X11Device.h
index 5f143df..85836e5 100644
--- a/libdevice/x11/X11Device.h
+++ b/libdevice/x11/X11Device.h
@@ -24,8 +24,7 @@
#include "gnashconfig.h"
#endif
-#include <boost/scoped_array.hpp>
-#include <boost/scoped_ptr.hpp>
+#include <memory>
#ifdef HAVE_X11_X_H
# include <X11/X.h>
diff --git a/libmedia/AudioDecoder.h b/libmedia/AudioDecoder.h
index 6ceac76..fe36e18 100644
--- a/libmedia/AudioDecoder.h
+++ b/libmedia/AudioDecoder.h
@@ -20,7 +20,7 @@
#ifndef GNASH_AUDIODECODER_H
#define GNASH_AUDIODECODER_H
-#include <boost/cstdint.hpp> // for C99 int types
+#include <cstdint> // for C99 int types
// Forward declarations
namespace gnash {
@@ -60,11 +60,11 @@ 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,
- boost::uint32_t& decodedData);
+ virtual std::uint8_t* decode(const std::uint8_t* input,
+ std::uint32_t inputSize, std::uint32_t& outputSize,
+ std::uint32_t& decodedData);
/// Decodes an EncodedAudioFrame and returns a pointer to the decoded data
//
@@ -77,24 +77,24 @@ 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);
+ virtual std::uint8_t* decode(const EncodedAudioFrame& input,
+ std::uint32_t& outputSize);
};
-inline boost::uint8_t*
-AudioDecoder::decode(const boost::uint8_t*, boost::uint32_t, boost::uint32_t&,
- boost::uint32_t&)
+inline std::uint8_t*
+AudioDecoder::decode(const std::uint8_t*, std::uint32_t, std::uint32_t&,
+ std::uint32_t&)
{
- return 0;
+ return nullptr;
}
-inline boost::uint8_t*
-AudioDecoder::decode(const EncodedAudioFrame&, boost::uint32_t&)
+inline std::uint8_t*
+AudioDecoder::decode(const EncodedAudioFrame&, std::uint32_t&)
{
- return 0;
+ return nullptr;
}
} // gnash.media namespace
diff --git a/libmedia/AudioDecoderSimple.cpp b/libmedia/AudioDecoderSimple.cpp
index e750afa..e4d71eb 100644
--- a/libmedia/AudioDecoderSimple.cpp
+++ b/libmedia/AudioDecoderSimple.cpp
@@ -28,7 +28,6 @@
#include "log.h"
-#include <boost/scoped_array.hpp>
#include <algorithm> // for std::swap
namespace gnash {
@@ -96,17 +95,17 @@ private:
}
/* Uncompress 4096 mono samples of ADPCM. */
- static boost::uint32_t doMonoBlock(boost::int16_t** out_data, int n_bits, BitsReader& in, int sample, int stepsize_index)
+ static std::uint32_t doMonoBlock(std::int16_t** out_data, int n_bits, BitsReader& in, int sample, int stepsize_index)
{
/* First sample doesn't need to be decompressed. */
- boost::uint32_t sample_count = 1;
- *(*out_data)++ = (boost::int16_t) sample;
+ std::uint32_t sample_count = 1;
+ *(*out_data)++ = (std::int16_t) sample;
while (sample_count < 4096 && in.gotBits(n_bits))
{
int raw_code = in.read_uint(n_bits);
doSample(n_bits, sample, stepsize_index, raw_code); /* sample & stepsize_index are in/out params */
- *(*out_data)++ = (boost::int16_t) sample;
+ *(*out_data)++ = (std::int16_t) sample;
sample_count++;
}
@@ -116,7 +115,7 @@ private:
/* Uncompress 4096 stereo sample pairs of ADPCM. */
static int doStereoBlock(
- boost::int16_t** out_data, // in/out param
+ std::int16_t** out_data, // in/out param
int n_bits,
BitsReader& in,
int left_sample,
@@ -126,20 +125,20 @@ private:
)
{
/* First samples don't need to be decompressed. */
- boost::uint32_t sample_count = 2;
- *(*out_data)++ = (boost::int16_t) left_sample;
- *(*out_data)++ = (boost::int16_t) right_sample;
+ std::uint32_t sample_count = 2;
+ *(*out_data)++ = (std::int16_t) left_sample;
+ *(*out_data)++ = (std::int16_t) right_sample;
unsigned bitsNeeded = n_bits*2;
while (sample_count < 4096 && in.gotBits(bitsNeeded))
{
int left_raw_code = in.read_uint(n_bits);
doSample(n_bits, left_sample, left_stepsize_index, left_raw_code);
- *(*out_data)++ = (boost::int16_t) left_sample;
+ *(*out_data)++ = (std::int16_t) left_sample;
int right_raw_code = in.read_uint(n_bits);
doSample(n_bits, right_sample, right_stepsize_index, right_raw_code);
- *(*out_data)++ = (boost::int16_t) right_sample;
+ *(*out_data)++ = (std::int16_t) right_sample;
sample_count++;
}
@@ -150,7 +149,7 @@ public:
// Utility function: uncompress ADPCM data from in BitReader to
// out_data[]. Returns the output samplecount.
- static boost::uint32_t adpcm_expand(
+ static std::uint32_t adpcm_expand(
unsigned char* &data,
BitsReader& in,
unsigned int insize,
@@ -167,10 +166,10 @@ public:
unsigned int n_bits = in.read_uint(2) + 2; // 2 to 5 bits
// The compression ratio is 4:1, so this should be enough...
- boost::int16_t* out_data = new boost::int16_t[insize * 5];
+ std::int16_t* out_data = new std::int16_t[insize * 5];
data = reinterpret_cast<unsigned char *>(out_data);
- boost::uint32_t sample_count = 0;
+ std::uint32_t sample_count = 0;
while ( in.gotBits(22) )
{
@@ -264,15 +263,15 @@ int ADPCMDecoder::s_stepsize[STEPSIZE_CT] = {
static void
u8_expand(unsigned char * &data,
const unsigned char* input,
- boost::uint32_t input_size) // This is also the number of u8bit samples
+ std::uint32_t input_size) // This is also the number of u8bit samples
{
- boost::int16_t *out_data = new boost::int16_t[input_size];
+ std::int16_t *out_data = new std::int16_t[input_size];
// Convert 8-bit to 16
- const boost::uint8_t *inp = input;
- boost::int16_t *outp = out_data;
+ const std::uint8_t *inp = input;
+ std::int16_t *outp = out_data;
for (unsigned int i = input_size; i>0; i--) {
- *outp++ = ((boost::int16_t)(*inp++) - 128) * 256;
+ *outp++ = ((std::int16_t)(*inp++) - 128) * 256;
}
data = (unsigned char *)out_data;
@@ -364,20 +363,20 @@ AudioDecoderSimple::setup(const AudioInfo& info)
}
}
-boost::uint8_t*
-AudioDecoderSimple::decode(const boost::uint8_t* input, boost::uint32_t inputSize,
- boost::uint32_t& outputSize, boost::uint32_t& decodedBytes)
+std::uint8_t*
+AudioDecoderSimple::decode(const std::uint8_t* input, std::uint32_t inputSize,
+ std::uint32_t& outputSize, std::uint32_t& decodedBytes)
{
- unsigned char* decodedData = NULL;
- boost::uint32_t outsize = 0;
+ unsigned char* decodedData = nullptr;
+ std::uint32_t outsize = 0;
switch (_codec) {
case AUDIO_CODEC_ADPCM:
{
- //boost::uint32_t sample_count = inputSize * ( _stereo ? 1 : 2 ); //(_sampleCount == 0 ? inputSize / ( _stereo ? 4 : 2 ) : _sampleCount);
+ //std::uint32_t sample_count = inputSize * ( _stereo ? 1 : 2 ); //(_sampleCount == 0 ? inputSize / ( _stereo ? 4 : 2 ) : _sampleCount);
BitsReader br(input, inputSize);
- boost::uint32_t sample_count = ADPCMDecoder::adpcm_expand(decodedData, br, inputSize, _stereo);
+ std::uint32_t sample_count = ADPCMDecoder::adpcm_expand(decodedData, br, inputSize, _stereo);
outsize = sample_count * (_stereo ? 4 : 2);
}
break;
@@ -416,10 +415,10 @@ AudioDecoderSimple::decode(const boost::uint8_t* input, boost::uint32_t inputSiz
// nothing and is less of a continual maintenance headache
// than compile-time detection.
union u {
- boost::uint16_t s;
+ std::uint16_t s;
struct {
- boost::uint8_t c0;
- boost::uint8_t c1;
+ std::uint8_t c0;
+ std::uint8_t c1;
} c;
} u = { 0x0001 };
@@ -439,12 +438,12 @@ AudioDecoderSimple::decode(const boost::uint8_t* input, boost::uint32_t inputSiz
// Cast the buffers to help the compiler understand that we
// swapping 16-bit words. This should produce a single-instruction
// swap for each 16-bit word.
- const boost::uint16_t* input16 = reinterpret_cast<const boost::uint16_t*>(input);
- boost::uint16_t* decodedData16 = reinterpret_cast<boost::uint16_t*>(decodedData);
- unsigned inputSize16 = inputSize / sizeof(boost::uint16_t);
+ const std::uint16_t* input16 = reinterpret_cast<const std::uint16_t*>(input);
+ std::uint16_t* decodedData16 = reinterpret_cast<std::uint16_t*>(decodedData);
+ unsigned inputSize16 = inputSize / sizeof(std::uint16_t);
for ( unsigned i = 0; i < inputSize16; i++ )
{
- boost::uint16_t sample = input16[i];
+ std::uint16_t sample = input16[i];
decodedData16[i] = ((sample << 8) & 0xFF00) | ((sample >> 8) & 0x00FF);
}
break;
@@ -456,13 +455,13 @@ AudioDecoderSimple::decode(const boost::uint8_t* input, boost::uint32_t inputSiz
// ???, this should only decode ADPCM, RAW and UNCOMPRESSED
}
- boost::uint8_t* tmp_raw_buffer = decodedData;
- boost::uint32_t tmp_raw_buffer_size = 0;
+ std::uint8_t* tmp_raw_buffer = decodedData;
+ std::uint32_t tmp_raw_buffer_size = 0;
// If we need to convert samplerate or/and from mono to stereo...
if (outsize > 0 && (_sampleRate != 44100 || !_stereo)) {
- boost::int16_t* adjusted_data = 0;
+ std::int16_t* adjusted_data = nullptr;
int adjusted_size = 0;
int sample_count = outsize / (_stereo ? 4 : 2); // samples are of size 2
@@ -479,12 +478,12 @@ AudioDecoderSimple::decode(const boost::uint8_t* input, boost::uint32_t inputSiz
delete[] tmp_raw_buffer;
outputSize = 0;
decodedBytes = 0;
- return NULL;
+ return nullptr;
}
// Move the new data to the sound-struct
delete[] tmp_raw_buffer;
- tmp_raw_buffer = reinterpret_cast<boost::uint8_t*>(adjusted_data);
+ tmp_raw_buffer = reinterpret_cast<std::uint8_t*>(adjusted_data);
tmp_raw_buffer_size = adjusted_size;
} else {
diff --git a/libmedia/AudioDecoderSimple.h b/libmedia/AudioDecoderSimple.h
index 5f302eb..e000621 100644
--- a/libmedia/AudioDecoderSimple.h
+++ b/libmedia/AudioDecoderSimple.h
@@ -61,7 +61,7 @@ public:
~AudioDecoderSimple();
// See dox in AudioDecoder.h
- boost::uint8_t* decode(const boost::uint8_t* input, boost::uint32_t inputSize, boost::uint32_t& outputSize, boost::uint32_t& decodedBytes);
+ std::uint8_t* decode(const std::uint8_t* input, std::uint32_t inputSize, std::uint32_t& outputSize, std::uint32_t& decodedBytes);
private:
@@ -75,10 +75,10 @@ private:
audioCodecType _codec;
// samplerate
- boost::uint16_t _sampleRate;
+ std::uint16_t _sampleRate;
// sampleCount
- boost::uint32_t _sampleCount;
+ std::uint32_t _sampleCount;
// stereo
bool _stereo;
diff --git a/libmedia/AudioDecoderSpeex.cpp b/libmedia/AudioDecoderSpeex.cpp
index 521b07d..ae555a1 100644
--- a/libmedia/AudioDecoderSpeex.cpp
+++ b/libmedia/AudioDecoderSpeex.cpp
@@ -21,10 +21,9 @@
#include "MediaParser.h" // for EncodedAudioFrame
#include "log.h"
-#include <boost/bind.hpp>
-#include <boost/checked_delete.hpp>
-#include <boost/scoped_array.hpp>
-#include <boost/cstdint.hpp> // For C99 int types
+#include <functional>
+#include <boost/utility.hpp> // noncopyable
+#include <cstdint> // For C99 int types
#ifdef RESAMPLING_SPEEX
# include <boost/rational.hpp>
@@ -59,11 +58,11 @@ AudioDecoderSpeex::AudioDecoderSpeex()
speex_resampler_get_ratio (_resampler, &num, &den);
assert(num && den);
- boost::rational<boost::uint32_t> numsamples(den, num);
+ boost::rational<std::uint32_t> numsamples(den, num);
numsamples *= _speex_framesize * 2 /* convert to stereo */;
- _target_frame_size = boost::rational_cast<boost::uint32_t>(numsamples);
+ _target_frame_size = boost::rational_cast<std::uint32_t>(numsamples);
#endif
}
AudioDecoderSpeex::~AudioDecoderSpeex()
@@ -79,29 +78,29 @@ AudioDecoderSpeex::~AudioDecoderSpeex()
struct DecodedFrame : boost::noncopyable
{
- DecodedFrame(boost::int16_t* newdata, size_t datasize)
+ DecodedFrame(std::int16_t* newdata, size_t datasize)
: data(newdata),
size(datasize)
{}
- boost::scoped_array<boost::int16_t> data;
+ std::unique_ptr<std::int16_t[]> data;
size_t size;
};
-boost::uint8_t*
+std::uint8_t*
AudioDecoderSpeex::decode(const EncodedAudioFrame& input,
- boost::uint32_t& outputSize)
+ std::uint32_t& outputSize)
{
speex_bits_read_from(&_speex_bits, reinterpret_cast<char*>(input.data.get()),
input.dataSize);
std::vector<DecodedFrame*> decoded_frames;
- boost::uint32_t total_size = 0;
+ std::uint32_t total_size = 0;
while (speex_bits_remaining(&_speex_bits)) {
- boost::scoped_array<short> output( new short[_speex_framesize] );
+ std::unique_ptr<short[]> output( new short[_speex_framesize] );
int rv = speex_decode_int(_speex_dec_state, &_speex_bits, output.get());
if (rv != 0) {
@@ -113,11 +112,11 @@ AudioDecoderSpeex::decode(const EncodedAudioFrame& input,
}
- boost::int16_t* conv_data = 0;
+ std::int16_t* conv_data = nullptr;
#ifdef RESAMPLING_SPEEX
spx_uint32_t conv_size = 0;
- conv_data = new boost::int16_t[_target_frame_size];
+ conv_data = new std::int16_t[_target_frame_size];
memset(conv_data, 0, _target_frame_size * 2);
spx_uint32_t in_size = _speex_framesize;
@@ -139,19 +138,19 @@ AudioDecoderSpeex::decode(const EncodedAudioFrame& input,
conv_size *= 2;
// Now, duplicate all the samples so we get a stereo sound.
- for (boost::uint32_t i = 0; i < conv_size; i += 2) {
+ for (std::uint32_t i = 0; i < conv_size; i += 2) {
conv_data[i+1] = conv_data[i];
}
// Our interface requires returning the audio size in bytes.
- conv_size *= sizeof(boost::int16_t);
+ conv_size *= sizeof(std::int16_t);
#else
int outsize = 0;
AudioResampler::convert_raw_data(&conv_data, &outsize, output.get(),
_speex_framesize /* sample count*/, 2 /* sample size */,
16000, false /* stereo */, 44100 /* new rate */,
true /* convert to stereo */);
- boost::uint32_t conv_size = outsize;
+ std::uint32_t conv_size = outsize;
#endif
total_size += conv_size;
@@ -162,12 +161,10 @@ AudioDecoderSpeex::decode(const EncodedAudioFrame& input,
// We have to jump through hoops because decode() requires as much
// data to be returned as possible.
- boost::uint8_t* rv = new boost::uint8_t[total_size];
- boost::uint8_t* ptr = rv;
+ std::uint8_t* rv = new std::uint8_t[total_size];
+ std::uint8_t* ptr = rv;
- for (std::vector<DecodedFrame*>::iterator it = decoded_frames.begin(),
- end = decoded_frames.end(); it != end; ++it) {
- DecodedFrame* frame = *it;
+ for (DecodedFrame* frame : decoded_frames) {
memcpy(ptr, frame->data.get(), frame->size);
diff --git a/libmedia/AudioDecoderSpeex.h b/libmedia/AudioDecoderSpeex.h
index 5e7d85a..ae43ccb 100644
--- a/libmedia/AudioDecoderSpeex.h
+++ b/libmedia/AudioDecoderSpeex.h
@@ -43,8 +43,8 @@ public:
AudioDecoderSpeex();
~AudioDecoderSpeex();
- boost::uint8_t* decode(const EncodedAudioFrame& input,
- boost::uint32_t& outputSize);
+ std::uint8_t* decode(const EncodedAudioFrame& input,
+ std::uint32_t& outputSize);
private:
@@ -55,7 +55,7 @@ private:
#ifdef RESAMPLING_SPEEX
SpeexResamplerState* _resampler;
/// Number of samples in a resampled 44kHz stereo frame.
- boost::uint32_t _target_frame_size;
+ std::uint32_t _target_frame_size;
#endif
};
diff --git a/libmedia/AudioInput.h b/libmedia/AudioInput.h
index dc8cd08..426ba88 100644
--- a/libmedia/AudioInput.h
+++ b/libmedia/AudioInput.h
@@ -20,7 +20,7 @@
#ifndef GNASH_AUDIOINPUT_H
#define GNASH_AUDIOINPUT_H
-#include <boost/cstdint.hpp> // for C99 int types
+#include <cstdint> // for C99 int types
#include <string>
#include "dsodefs.h" //DSOEXPORT
diff --git a/libmedia/AudioResampler.cpp b/libmedia/AudioResampler.cpp
index 5e648ce..81ecc2e 100644
--- a/libmedia/AudioResampler.cpp
+++ b/libmedia/AudioResampler.cpp
@@ -27,7 +27,7 @@ namespace media {
void
AudioResampler::convert_raw_data(
- boost::int16_t** adjusted_data,
+ std::int16_t** adjusted_data,
int* adjusted_size,
void* data,
int sample_count, // A stereo pair counts as one
@@ -68,9 +68,9 @@ AudioResampler::convert_raw_data(
}
int output_sample_count = (sample_count * dup * (stereo ? 2 : 1)) / inc;
- boost::int16_t* out_data = new boost::int16_t[output_sample_count];
+ std::int16_t* out_data = new std::int16_t[output_sample_count];
*adjusted_data = out_data;
- *adjusted_size = output_sample_count * sizeof(boost::int16_t); // in bytes
+ *adjusted_size = output_sample_count * sizeof(std::int16_t); // in bytes
// Either inc > 1 (decimate the audio)
// or dup > 1 (repeat samples)
@@ -78,12 +78,12 @@ AudioResampler::convert_raw_data(
if (inc == 1 && dup == 1)
{
// No tranformation required
- std::memcpy(out_data, data, output_sample_count * sizeof(boost::int16_t));
+ std::memcpy(out_data, data, output_sample_count * sizeof(std::int16_t));
}
else if (inc > 1)
{
// Downsample by skipping samples from the input
- boost::int16_t* in = (boost::int16_t*) data;
+ std::int16_t* in = (std::int16_t*) data;
for (int i = output_sample_count; i > 0; i--)
{
*out_data++ = *in;
@@ -100,7 +100,7 @@ AudioResampler::convert_raw_data(
// then the right sample in both channels alternately.
// So for stereo-stereo transforms we have a stereo routine.
- boost::int16_t* in = (boost::int16_t*) data;
+ std::int16_t* in = (std::int16_t*) data;
if (stereo && m_stereo) {
// Stereo-to-stereo upsampling: Replicate pairs of samples
diff --git a/libmedia/AudioResampler.h b/libmedia/AudioResampler.h
index 22b5e16..0f7f68e 100644
--- a/libmedia/AudioResampler.h
+++ b/libmedia/AudioResampler.h
@@ -21,7 +21,7 @@
#ifndef __GNASH_UTIL_H
#define __GNASH_UTIL_H
-#include <boost/cstdint.hpp> // for boost::int16_t
+#include <cstdint> // for std::int16_t
namespace gnash {
namespace media {
@@ -64,7 +64,7 @@ public:
///
/// @param m_stereo
/// Do we want the output data to be in stereo (output)?
- static void convert_raw_data(boost::int16_t** adjusted_data,
+ static void convert_raw_data(std::int16_t** adjusted_data,
int* adjusted_size, void* data, int sample_count,
int sample_size, int sample_rate, bool stereo,
int m_sample_rate, bool m_stereo);
diff --git a/libmedia/FLVParser.cpp b/libmedia/FLVParser.cpp
index 8210e34..2e984a0 100644
--- a/libmedia/FLVParser.cpp
+++ b/libmedia/FLVParser.cpp
@@ -18,6 +18,8 @@
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
//
+#include <string>
+#include <iosfwd>
#include "FLVParser.h"
#include "log.h"
@@ -27,8 +29,6 @@
#include "SimpleBuffer.h"
#include "GnashAlgorithm.h"
-#include <string>
-#include <iosfwd>
// Define the following macro the have seek() operations printed
//#define GNASH_DEBUG_SEEK 1
@@ -38,16 +38,14 @@ namespace media {
const size_t FLVParser::paddingBytes;
-const boost::uint16_t FLVParser::FLVAudioTag::flv_audio_rates [] =
+const std::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),
- _nextVideoFrame(0),
_audio(false),
_video(false),
_cuePoints(),
@@ -68,10 +66,10 @@ FLVParser::~FLVParser()
// would be called by main thread
bool
-FLVParser::seek(boost::uint32_t& time)
+FLVParser::seek(std::uint32_t& time)
{
- boost::mutex::scoped_lock streamLock(_streamMutex);
+ std::lock_guard<std::mutex> streamLock(_streamMutex);
// we might obtain this lock while the parser is pushing the last
// encoded frame on the queue, or while it is waiting on the wakeup
// condition
@@ -130,7 +128,7 @@ FLVParser::parseNextChunk()
// would be called by parser thread
void
-FLVParser::indexAudioTag(const FLVTag& tag, boost::uint32_t thisTagPos)
+FLVParser::indexAudioTag(const FLVTag& tag, std::uint32_t thisTagPos)
{
if ( _videoInfo.get()) {
// if we have video we let that drive cue points
@@ -149,7 +147,7 @@ FLVParser::indexAudioTag(const FLVTag& tag, boost::uint32_t thisTagPos)
}
void
-FLVParser::indexVideoTag(const FLVTag& tag, const FLVVideoTag& videotag, boost::uint32_t thisTagPos)
+FLVParser::indexVideoTag(const FLVTag& tag, const FLVVideoTag& videotag, std::uint32_t thisTagPos)
{
if ( videotag.frametype != FLV_VIDEO_KEYFRAME ) {
return;
@@ -161,10 +159,10 @@ FLVParser::indexVideoTag(const FLVTag& tag, const FLVVideoTag& videotag, boost::
}
-std::auto_ptr<EncodedAudioFrame>
-FLVParser::parseAudioTag(const FLVTag& flvtag, const FLVAudioTag& audiotag, boost::uint32_t thisTagPos)
+std::unique_ptr<EncodedAudioFrame>
+FLVParser::parseAudioTag(const FLVTag& flvtag, const FLVAudioTag& audiotag, std::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 "
@@ -174,10 +172,10 @@ FLVParser::parseAudioTag(const FLVTag& flvtag, const FLVAudioTag& audiotag, boos
}
bool header = false;
- boost::uint32_t bodyLength = flvtag.body_size;
+ std::uint32_t bodyLength = flvtag.body_size;
if (audiotag.codec == AUDIO_CODEC_AAC) {
- boost::uint8_t packettype = _stream->read_byte();
+ std::uint8_t packettype = _stream->read_byte();
header = (packettype == 0);
--bodyLength;
}
@@ -201,7 +199,7 @@ FLVParser::parseAudioTag(const FLVTag& flvtag, const FLVAudioTag& audiotag, boos
// never smaller.
const size_t bufSize = frame->dataSize + paddingBytes;
- boost::uint8_t* data = new boost::uint8_t[bufSize];
+ std::uint8_t* data = new std::uint8_t[bufSize];
std::copy(frame->data.get(), frame->data.get() + bufSize, data);
@@ -218,8 +216,8 @@ FLVParser::parseAudioTag(const FLVTag& flvtag, const FLVAudioTag& audiotag, boos
return frame;
}
-std::auto_ptr<EncodedVideoFrame>
-FLVParser::parseVideoTag(const FLVTag& flvtag, const FLVVideoTag& videotag, boost::uint32_t thisTagPos)
+std::unique_ptr<EncodedVideoFrame>
+FLVParser::parseVideoTag(const FLVTag& flvtag, const FLVVideoTag& videotag, std::uint32_t thisTagPos)
{
if ( ! _video ) {
log_error(_("Unexpected video tag found at offset %d of FLV stream "
@@ -229,7 +227,7 @@ FLVParser::parseVideoTag(const FLVTag& flvtag, const FLVVideoTag& videotag, boos
}
bool header = false;
- boost::uint32_t bodyLength = flvtag.body_size;
+ std::uint32_t bodyLength = flvtag.body_size;
switch(videotag.codec) {
case VIDEO_CODEC_VP6:
@@ -241,14 +239,14 @@ FLVParser::parseVideoTag(const FLVTag& flvtag, const FLVVideoTag& videotag, boos
}
case VIDEO_CODEC_H264:
{
- boost::uint8_t packettype = _stream->read_byte();
+ std::uint8_t packettype = _stream->read_byte();
IF_VERBOSE_PARSE( log_debug(_("AVC packet type: %d"),
(unsigned)packettype) );
header = (packettype == 0);
// 24-bits value for composition time offset ignored for now.
- boost::uint8_t tmp[3];
+ std::uint8_t tmp[3];
_stream->read(tmp, 3);
bodyLength -= 4;
@@ -258,7 +256,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?"));
@@ -276,7 +274,7 @@ FLVParser::parseVideoTag(const FLVTag& flvtag, const FLVVideoTag& videotag, boos
// never smaller.
const size_t bufSize = frame->dataSize() + paddingBytes;
- boost::uint8_t* data = new boost::uint8_t[bufSize];
+ std::uint8_t* data = new std::uint8_t[bufSize];
std::copy(frame->data(), frame->data() + bufSize, data);
_videoInfo->extra.reset(
@@ -297,7 +295,7 @@ FLVParser::parseNextTag(bool index_only)
{
// lock the stream while reading from it, so actionscript
// won't mess with the parser on seek or on getBytesLoaded
- boost::mutex::scoped_lock streamLock(_streamMutex);
+ std::unique_lock<std::mutex> streamLock(_streamMutex);
if ( index_only && _indexingCompleted ) return false;
if ( _parsingComplete ) return false;
@@ -308,7 +306,7 @@ FLVParser::parseNextTag(bool index_only)
_seekRequest = false;
}
- boost::uint64_t& position = index_only ? _nextPosToIndex : _lastParsedPosition;
+ std::uint64_t& position = index_only ? _nextPosToIndex : _lastParsedPosition;
bool& completed = index_only ? _indexingCompleted : _parsingComplete;
//log_debug("parseNextTag: _lastParsedPosition:%d, _nextPosToIndex:%d, index_only:%d", _lastParsedPosition, _nextPosToIndex, index_only);
@@ -328,7 +326,7 @@ FLVParser::parseNextTag(bool index_only)
//log_debug("FLVParser::parseNextTag seeked to %d", thisTagPos+4);
// Read the tag info
- boost::uint8_t chunk[12];
+ std::uint8_t chunk[12];
int actuallyRead = _stream->read(chunk, 12);
if ( actuallyRead < 12 )
{
@@ -340,7 +338,6 @@ FLVParser::parseNextTag(bool index_only)
completed = true;
// update bytes loaded
- boost::mutex::scoped_lock lock(_bytesLoadedMutex);
_bytesLoaded = _stream->tell();
return false;
}
@@ -358,7 +355,6 @@ FLVParser::parseNextTag(bool index_only)
}
if ( position > _bytesLoaded ) {
- boost::mutex::scoped_lock lock(_bytesLoadedMutex);
_bytesLoaded = position;
}
@@ -377,7 +373,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 +384,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 +397,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 +408,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 +421,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);
@@ -439,15 +435,15 @@ FLVParser::parseNextTag(bool index_only)
}
metaTag->resize(actuallyRead);
- boost::uint32_t terminus = getUInt24(metaTag->data() +
+ std::uint32_t terminus = getUInt24(metaTag->data() +
actuallyRead - 3);
if (terminus != 9) {
log_error(_("Corrupt FLV: Meta tag unterminated!"));
}
- boost::mutex::scoped_lock lock(_metaTagsMutex);
- _metaTags.insert(std::make_pair(flvtag.timestamp, MetaTags::mapped_type(metaTag)));
+ std::lock_guard<std::mutex> lock(_metaTagsMutex);
+ _metaTags.insert(std::make_pair(flvtag.timestamp, std::move(metaTag)));
}
else
{
@@ -457,7 +453,7 @@ FLVParser::parseNextTag(bool index_only)
}
_stream->read(chunk, 4);
- boost::uint32_t prevtagsize = chunk[0] << 24 | chunk[1] << 16 |
+ std::uint32_t prevtagsize = chunk[0] << 24 | chunk[1] << 16 |
chunk[2] << 8 | chunk[3];
if (prevtagsize != flvtag.body_size + 11) {
log_error(_("Corrupt FLV: previous tag size record (%1%) unexpected "
@@ -475,7 +471,7 @@ FLVParser::parseHeader()
// We only use 5 bytes of the header, because the last 4 bytes represent
// an integer which is always 1.
- boost::uint8_t header[9];
+ std::uint8_t header[9];
if ( _stream->read(header, 9) != 9 )
{
log_error(_("FLVParser::parseHeader: couldn't read 9 bytes of header"));
@@ -488,7 +484,7 @@ FLVParser::parseHeader()
return false;
}
- const boost::uint8_t version = header[3];
+ const std::uint8_t version = header[3];
// Parse the audio+video bitmask
_audio = header[4]&(1<<2);
@@ -500,31 +496,30 @@ FLVParser::parseHeader()
return true;
}
-inline boost::uint32_t
-FLVParser::getUInt24(boost::uint8_t* in)
+inline std::uint32_t
+FLVParser::getUInt24(std::uint8_t* in)
{
// The bits are in big endian order
return (in[0] << 16) | (in[1] << 8) | in[2];
}
-boost::uint64_t
+std::uint64_t
FLVParser::getBytesLoaded() const
{
- boost::mutex::scoped_lock lock(_bytesLoadedMutex);
- return _bytesLoaded;
+ return _bytesLoaded.load();
}
// would be called by parser thread
/*private*/
-std::auto_ptr<EncodedAudioFrame>
-FLVParser::readAudioFrame(boost::uint32_t dataSize, boost::uint32_t timestamp)
+std::unique_ptr<EncodedAudioFrame>
+FLVParser::readAudioFrame(std::uint32_t dataSize, std::uint32_t timestamp)
{
- std::auto_ptr<EncodedAudioFrame> frame(new EncodedAudioFrame);
+ std::unique_ptr<EncodedAudioFrame> frame(new EncodedAudioFrame);
const size_t bufSize = dataSize + paddingBytes;
- boost::uint8_t* data = new boost::uint8_t[bufSize];
+ std::uint8_t* data = new std::uint8_t[bufSize];
const size_t bytesRead = _stream->read(data, dataSize);
std::fill(data + bytesRead, data + bufSize, 0);
@@ -543,14 +538,14 @@ FLVParser::readAudioFrame(boost::uint32_t dataSize, boost::uint32_t timestamp)
// would be called by parser thread
/*private*/
-std::auto_ptr<EncodedVideoFrame>
-FLVParser::readVideoFrame(boost::uint32_t dataSize, boost::uint32_t timestamp)
+std::unique_ptr<EncodedVideoFrame>
+FLVParser::readVideoFrame(std::uint32_t dataSize, std::uint32_t timestamp)
{
- std::auto_ptr<EncodedVideoFrame> frame;
+ std::unique_ptr<EncodedVideoFrame> frame;
const size_t bufSize = dataSize + paddingBytes;
- boost::uint8_t* data = new boost::uint8_t[bufSize];
+ std::uint8_t* data = new std::uint8_t[bufSize];
const size_t bytesRead = _stream->read(data, dataSize);
std::fill(data + bytesRead, data + bufSize, 0);
@@ -565,15 +560,15 @@ FLVParser::readVideoFrame(boost::uint32_t dataSize, boost::uint32_t timestamp)
void
-FLVParser::fetchMetaTags(OrderedMetaTags& tags, boost::uint64_t ts)
+FLVParser::fetchMetaTags(OrderedMetaTags& tags, std::uint64_t ts)
{
- boost::mutex::scoped_lock lock(_metaTagsMutex);
+ std::lock_guard<std::mutex> lock(_metaTagsMutex);
if (!_metaTags.empty()) {
MetaTags::iterator it = _metaTags.upper_bound(ts);
// Copy the first value into the return container.
std::transform(_metaTags.begin(), it, std::back_inserter(tags),
- boost::bind(&MetaTags::value_type::second, _1));
+ [](const MetaTags::value_type& pair) { return pair.second; });
_metaTags.erase(_metaTags.begin(), it);
}
diff --git a/libmedia/FLVParser.h b/libmedia/FLVParser.h
index 5a31c14..2349b31 100644
--- a/libmedia/FLVParser.h
+++ b/libmedia/FLVParser.h
@@ -24,13 +24,14 @@
#ifndef GNASH_FLVPARSER_H
#define GNASH_FLVPARSER_H
-#include "dsodefs.h"
-#include "MediaParser.h" // for inheritance
-
#include <memory>
#include <map>
+#include <mutex>
-#include <boost/thread/mutex.hpp>
+#include <boost/utility.hpp> // noncopyable
+
+#include "dsodefs.h"
+#include "MediaParser.h" // for inheritance
namespace gnash {
namespace media {
@@ -51,9 +52,9 @@ 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)
+ ExtraVideoInfoFlv(std::uint8_t* extradata, size_t datasize)
:
data(extradata),
size(datasize)
@@ -61,7 +62,7 @@ public:
}
/// Video stream header
- boost::scoped_array<boost::uint8_t> data;
+ std::unique_ptr<std::uint8_t[]> data;
/// Video stream header size
size_t size;
@@ -83,9 +84,9 @@ 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)
+ ExtraAudioInfoFlv(std::uint8_t* extradata, size_t datasize)
:
data(extradata),
size(datasize)
@@ -93,7 +94,7 @@ public:
}
/// Audio stream header
- boost::scoped_array<boost::uint8_t> data;
+ std::unique_ptr<std::uint8_t[]> data;
/// Audio stream header size
size_t size;
@@ -120,19 +121,19 @@ public:
/// IOChannel to use for input.
/// Ownership transferred.
///
- FLVParser(std::auto_ptr<IOChannel> lt);
+ FLVParser(std::unique_ptr<IOChannel> lt);
/// Kills the parser...
~FLVParser();
// see dox in MediaParser.h
- virtual bool seek(boost::uint32_t&);
+ virtual bool seek(std::uint32_t&);
// see dox in MediaParser.h
virtual bool parseNextChunk();
// see dox in MediaParser.h
- boost::uint64_t getBytesLoaded() const;
+ std::uint64_t getBytesLoaded() const;
// see dox in MediaParser.h
bool indexingCompleted() const
@@ -152,7 +153,7 @@ public:
/// timestamp order. Ownership of the data is shared. It
/// is destroyed automatically along with the last owner.
//
- virtual void fetchMetaTags(OrderedMetaTags& tags, boost::uint64_t ts);
+ virtual void fetchMetaTags(OrderedMetaTags& tags, std::uint64_t ts);
private:
@@ -165,7 +166,7 @@ private:
struct FLVTag : public boost::noncopyable
{
- FLVTag(boost::uint8_t* stream)
+ FLVTag(std::uint8_t* stream)
:
type(stream[0]),
body_size(getUInt24(stream+1)),
@@ -173,14 +174,14 @@ private:
{}
/// Equals tagType
- boost::uint8_t type;
- boost::uint32_t body_size;
- boost::uint32_t timestamp;
+ std::uint8_t type;
+ std::uint32_t body_size;
+ std::uint32_t timestamp;
};
struct FLVAudioTag : public boost::noncopyable
{
- FLVAudioTag(const boost::uint8_t& byte)
+ FLVAudioTag(const std::uint8_t& byte)
:
codec( (byte & 0xf0) >> 4 ),
samplerate( flv_audio_rates[(byte & 0x0C) >> 2] ),
@@ -190,18 +191,18 @@ private:
}
/// Equals audioCodecType
- boost::uint8_t codec;
+ std::uint8_t codec;
- boost::uint16_t samplerate;
+ std::uint16_t samplerate;
/// Size of each sample, in bytes
- boost::uint8_t samplesize;
+ std::uint8_t samplesize;
bool stereo;
private:
- static const boost::uint16_t flv_audio_rates[];
+ static const std::uint16_t flv_audio_rates[];
};
@@ -214,16 +215,16 @@ private:
struct FLVVideoTag : public boost::noncopyable
{
- FLVVideoTag(const boost::uint8_t& byte)
+ FLVVideoTag(const std::uint8_t& byte)
:
frametype( (byte & 0xf0) >> 4 ),
codec( byte & 0x0f )
{}
/// Equals frameType
- boost::uint8_t frametype;
+ std::uint8_t frametype;
/// Equals videoCodecType
- boost::uint8_t codec;
+ std::uint8_t codec;
};
/// Parses next tag from the file
@@ -233,16 +234,16 @@ private:
///
bool parseNextTag(bool index_only);
- std::auto_ptr<EncodedAudioFrame> parseAudioTag(const FLVTag& flvtag,
- const FLVAudioTag& audiotag, boost::uint32_t thisTagPos);
+ std::unique_ptr<EncodedAudioFrame> parseAudioTag(const FLVTag& flvtag,
+ const FLVAudioTag& audiotag, std::uint32_t thisTagPos);
- std::auto_ptr<EncodedVideoFrame> parseVideoTag(const FLVTag& flvtag,
- const FLVVideoTag& videotag, boost::uint32_t thisTagPos);
+ std::unique_ptr<EncodedVideoFrame> parseVideoTag(const FLVTag& flvtag,
+ const FLVVideoTag& videotag, std::uint32_t thisTagPos);
- void indexAudioTag(const FLVTag& tag, boost::uint32_t thisTagPos);
+ void indexAudioTag(const FLVTag& tag, std::uint32_t thisTagPos);
void indexVideoTag(const FLVTag& tag, const FLVVideoTag& videotag,
- boost::uint32_t thisTagPos);
+ std::uint32_t thisTagPos);
/// Parses the header of the file
bool parseHeader();
@@ -250,28 +251,14 @@ private:
/// Reads three bytes in FLV (big endian) byte order.
/// @param in Pointer to read 3 bytes from.
/// @return 24-bit integer.
- static boost::uint32_t getUInt24(boost::uint8_t* in);
+ static std::uint32_t getUInt24(std::uint8_t* in);
/// The position where the parsing should continue from.
/// Will be reset on seek, and will be protected by the _streamMutex
- boost::uint64_t _lastParsedPosition;
+ std::uint64_t _lastParsedPosition;
/// Position of next tag to index
- boost::uint64_t _nextPosToIndex;
-
- /// Audio frame cursor position
- //
- /// This is the video frame number that will
- /// be referenced by nextVideoFrame and nextVideoFrameTimestamp
- ///
- size_t _nextAudioFrame;
-
- /// Video frame cursor position
- //
- /// This is the video frame number that will
- /// be referenced by nextVideoFrame and nextVideoFrameTimestamp
- ///
- size_t _nextVideoFrame;
+ std::uint64_t _nextPosToIndex;
/// Audio stream is present
bool _audio;
@@ -279,23 +266,23 @@ private:
/// Audio stream is present
bool _video;
- std::auto_ptr<EncodedAudioFrame>
- readAudioFrame(boost::uint32_t dataSize, boost::uint32_t timestamp);
+ std::unique_ptr<EncodedAudioFrame>
+ readAudioFrame(std::uint32_t dataSize, std::uint32_t timestamp);
- std::auto_ptr<EncodedVideoFrame>
- readVideoFrame(boost::uint32_t dataSize, boost::uint32_t timestamp);
+ std::unique_ptr<EncodedVideoFrame>
+ readVideoFrame(std::uint32_t dataSize, std::uint32_t timestamp);
/// Position in input stream for each cue point
/// first: timestamp
/// second: position in input stream
- typedef std::map<boost::uint64_t, long> CuePointsMap;
+ typedef std::map<std::uint64_t, long> CuePointsMap;
CuePointsMap _cuePoints;
bool _indexingCompleted;
MetaTags _metaTags;
- boost::mutex _metaTagsMutex;
+ std::mutex _metaTagsMutex;
};
} // end of gnash::media namespace
diff --git a/libmedia/MediaHandler.cpp b/libmedia/MediaHandler.cpp
index a84af29..9b08248 100644
--- a/libmedia/MediaHandler.cpp
+++ b/libmedia/MediaHandler.cpp
@@ -28,12 +28,19 @@
#include "IOChannel.h"
#include "AudioDecoderSimple.h"
#include "log.h"
+#include "GnashFactory.h"
#ifdef DECODING_SPEEX
# include "AudioDecoderSpeex.h"
#endif
namespace gnash {
+ // Instantiate MediaFactory here.
+ template class GnashFactory<media::MediaHandler, media::RegisterAllHandlers,
+ std::string>;
+}
+
+namespace gnash {
namespace media {
bool
@@ -54,10 +61,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 +79,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 +97,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..cf0465b 100644
--- a/libmedia/MediaHandler.h
+++ b/libmedia/MediaHandler.h
@@ -23,12 +23,13 @@
#include "dsodefs.h" // DSOEXPORT
#include "VideoConverter.h"
-#include "GnashFactory.h"
#include <vector>
#include <memory>
#include <string>
+#include "GnashFactory.h"
+
// Forward declarations
namespace gnash {
class IOChannel;
@@ -62,7 +63,7 @@ struct DSOEXPORT RegisterAllHandlers
RegisterAllHandlers();
};
-typedef GnashFactory<MediaHandler, RegisterAllHandlers> MediaFactory;
+typedef GnashFactory<MediaHandler, RegisterAllHandlers, std::string> MediaFactory;
/// The MediaHandler class acts as a factory to provide parser and decoders
class DSOEXPORT MediaHandler
@@ -84,8 +85,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 +94,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 +103,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 +111,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 +160,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
//
@@ -170,6 +171,13 @@ protected:
} // gnash.media namespace
+
+// In order for GnashFactory to work correctly, there must be only a single
+// instantiation of MediaFactory. Therefore, we declare its type as extern,
+// which we can now that its dependent types are fully specified.
+extern template class GnashFactory<media::MediaHandler,
+ media::RegisterAllHandlers, std::string>; // I.e., typedef MediaFactory.
+
} // namespace gnash
#endif
diff --git a/libmedia/MediaParser.cpp b/libmedia/MediaParser.cpp
index e4de8ca..7a7642d 100644
--- a/libmedia/MediaParser.cpp
+++ b/libmedia/MediaParser.cpp
@@ -21,7 +21,8 @@
#include "MediaParser.h"
-#include <boost/bind.hpp>
+#include <functional>
+#include <thread>
#include "log.h"
#include "GnashSleep.h" // for usleep.
@@ -33,14 +34,12 @@
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),
- _parserThreadStartBarrier(2),
_parserThreadKillRequested(false),
_seekRequest(false)
{
@@ -52,17 +51,15 @@ MediaParser::startParserThread()
{
#ifdef LOAD_MEDIA_IN_A_SEPARATE_THREAD
log_debug("Starting MediaParser thread");
- _parserThread.reset(new boost::thread(
- boost::bind(parserLoopStarter, this)));
- _parserThreadStartBarrier.wait();
+ _parserThread = std::thread(&MediaParser::parserLoop, this);
#endif
}
-boost::uint64_t
+std::uint64_t
MediaParser::getBufferLength() const
{
#ifdef LOAD_MEDIA_IN_A_SEPARATE_THREAD
- boost::mutex::scoped_lock lock(_qMutex);
+ std::lock_guard<std::mutex> lock(_qMutex);
#endif
return getBufferLengthNoLock();
}
@@ -72,7 +69,7 @@ bool
MediaParser::isBufferEmpty() const
{
#ifdef LOAD_MEDIA_IN_A_SEPARATE_THREAD
- boost::mutex::scoped_lock lock(_qMutex);
+ std::lock_guard<std::mutex> lock(_qMutex);
#endif
return _videoFrames.empty() && _audioFrames.empty();
}
@@ -84,7 +81,7 @@ MediaParser::getId3Info() const
return boost::optional<Id3Info>();
}
-boost::uint64_t
+std::uint64_t
MediaParser::getBufferLengthNoLock() const
{
bool hasVideo = _videoInfo.get();
@@ -103,7 +100,7 @@ MediaParser::getBufferLengthNoLock() const
return 0;
}
-boost::uint64_t
+std::uint64_t
MediaParser::videoBufferLength() const
{
if (_videoFrames.empty()) return 0;
@@ -115,7 +112,7 @@ MediaParser::videoBufferLength() const
return _videoFrames.back()->timestamp() - _videoFrames.front()->timestamp();
}
-boost::uint64_t
+std::uint64_t
MediaParser::audioBufferLength() const
{
if (_audioFrames.empty()) return 0;
@@ -140,15 +137,15 @@ MediaParser::peekNextVideoFrame() const
}
#endif
- if (!_videoInfo.get() || _videoFrames.empty()) return 0;
- return _videoFrames.front();
+ if (!_videoInfo.get() || _videoFrames.empty()) return nullptr;
+ return _videoFrames.front().get();
}
bool
-MediaParser::nextFrameTimestamp(boost::uint64_t& ts) const
+MediaParser::nextFrameTimestamp(std::uint64_t& ts) const
{
#ifdef LOAD_MEDIA_IN_A_SEPARATE_THREAD
- boost::mutex::scoped_lock lock(_qMutex);
+ std::lock_guard<std::mutex> lock(_qMutex);
#else // ndef LOAD_MEDIA_IN_A_SEPARATE_THREAD
while (!parsingCompleted() && _videoInfo.get() && _videoFrames.empty())
{
@@ -185,10 +182,10 @@ MediaParser::nextFrameTimestamp(boost::uint64_t& ts) const
}
bool
-MediaParser::nextVideoFrameTimestamp(boost::uint64_t& ts) const
+MediaParser::nextVideoFrameTimestamp(std::uint64_t& ts) const
{
#ifdef LOAD_MEDIA_IN_A_SEPARATE_THREAD
- boost::mutex::scoped_lock lock(_qMutex);
+ std::lock_guard<std::mutex> lock(_qMutex);
#endif // def LOAD_MEDIA_IN_A_SEPARATE_THREAD
const EncodedVideoFrame* ef = peekNextVideoFrame();
if ( ! ef ) return false;
@@ -196,11 +193,11 @@ 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
- boost::mutex::scoped_lock lock(_qMutex);
+ std::lock_guard<std::mutex> lock(_qMutex);
#else // ndef LOAD_MEDIA_IN_A_SEPARATE_THREAD
while (!parsingCompleted() && _videoInfo.get() && _videoFrames.empty())
{
@@ -208,9 +205,9 @@ MediaParser::nextVideoFrame()
}
#endif
- std::auto_ptr<EncodedVideoFrame> ret;
+ std::unique_ptr<EncodedVideoFrame> ret;
if (_videoFrames.empty()) return ret;
- ret.reset(_videoFrames.front());
+ ret = std::move(_videoFrames.front());
_videoFrames.pop_front();
#ifdef GNASH_DEBUG_MEDIAPARSER
log_debug("nextVideoFrame: waking up parser (in case it was sleeping)");
@@ -219,11 +216,11 @@ MediaParser::nextVideoFrame()
return ret;
}
-std::auto_ptr<EncodedAudioFrame>
+std::unique_ptr<EncodedAudioFrame>
MediaParser::nextAudioFrame()
{
#ifdef LOAD_MEDIA_IN_A_SEPARATE_THREAD
- boost::mutex::scoped_lock lock(_qMutex);
+ std::lock_guard<std::mutex> lock(_qMutex);
#else // ndef LOAD_MEDIA_IN_A_SEPARATE_THREAD
while (!parsingCompleted() && _audioInfo.get() && _audioFrames.empty())
{
@@ -231,9 +228,9 @@ MediaParser::nextAudioFrame()
}
#endif
- std::auto_ptr<EncodedAudioFrame> ret;
+ std::unique_ptr<EncodedAudioFrame> ret;
if (_audioFrames.empty()) return ret;
- ret.reset(_audioFrames.front());
+ ret = std::move(_audioFrames.front());
_audioFrames.pop_front();
#ifdef GNASH_DEBUG_MEDIAPARSER
log_debug("nextAudioFrame: waking up parser (in case it was sleeping)");
@@ -243,10 +240,10 @@ MediaParser::nextAudioFrame()
}
bool
-MediaParser::nextAudioFrameTimestamp(boost::uint64_t& ts) const
+MediaParser::nextAudioFrameTimestamp(std::uint64_t& ts) const
{
#ifdef LOAD_MEDIA_IN_A_SEPARATE_THREAD
- boost::mutex::scoped_lock lock(_qMutex);
+ std::lock_guard<std::mutex> lock(_qMutex);
#endif // def LOAD_MEDIA_IN_A_SEPARATE_THREAD
const EncodedAudioFrame* ef = peekNextAudioFrame();
if ( ! ef ) return false;
@@ -266,57 +263,32 @@ MediaParser::peekNextAudioFrame() const
const_cast<MediaParser*>(this)->parseNextChunk();
}
#endif
- if (!_audioInfo.get() || _audioFrames.empty()) return 0;
- return _audioFrames.front();
+ if (!_audioInfo.get() || _audioFrames.empty()) return nullptr;
+ return _audioFrames.front().get();
}
void
MediaParser::stopParserThread()
{
- if ( _parserThread.get() )
+ if ( _parserThread.joinable() )
{
requestParserThreadKill();
- _parserThread->join();
- _parserThread.reset();
+ _parserThread.join();
}
}
MediaParser::~MediaParser()
{
stopParserThread();
-
- for (VideoFrames::iterator i=_videoFrames.begin(),
- e=_videoFrames.end(); i!=e; ++i)
- {
- delete (*i);
- }
-
- for (AudioFrames::iterator i=_audioFrames.begin(),
- e=_audioFrames.end(); i!=e; ++i)
- {
- delete (*i);
- }
}
void
MediaParser::clearBuffers()
{
#ifdef LOAD_MEDIA_IN_A_SEPARATE_THREAD
- boost::mutex::scoped_lock lock(_qMutex);
+ std::lock_guard<std::mutex> lock(_qMutex);
#endif
- for (VideoFrames::iterator i=_videoFrames.begin(),
- e=_videoFrames.end(); i!=e; ++i)
- {
- delete (*i);
- }
-
- for (AudioFrames::iterator i=_audioFrames.begin(),
- e=_audioFrames.end(); i!=e; ++i)
- {
- delete (*i);
- }
-
_audioFrames.clear();
_videoFrames.clear();
@@ -324,10 +296,10 @@ 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);
+ std::unique_lock<std::mutex> lock(_qMutex);
#endif
// Find location to insert this new frame to, so that
@@ -354,7 +326,7 @@ MediaParser::pushEncodedAudioFrame(std::auto_ptr<EncodedAudioFrame> frame)
}
//log_debug("Inserting audio frame with timestamp %d", frame->timestamp);
- _audioFrames.insert(loc, frame.release());
+ _audioFrames.insert(loc, std::move(frame));
#ifdef LOAD_MEDIA_IN_A_SEPARATE_THREAD
// if the push reaches a "buffer full" condition, or if we find the parsing
@@ -364,10 +336,10 @@ 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);
+ std::unique_lock<std::mutex> lock(_qMutex);
#endif
// Find location to insert this new frame to, so that
@@ -394,7 +366,7 @@ MediaParser::pushEncodedVideoFrame(std::auto_ptr<EncodedVideoFrame> frame)
}
//log_debug("Pushing video frame with timestamp %d", frame->timestamp());
- _videoFrames.insert(loc, frame.release());
+ _videoFrames.insert(loc, std::move(frame));
#ifdef LOAD_MEDIA_IN_A_SEPARATE_THREAD
waitIfNeeded(lock); // if the push reaches a "buffer full" condition, wait to be waken up
@@ -402,7 +374,7 @@ MediaParser::pushEncodedVideoFrame(std::auto_ptr<EncodedVideoFrame> frame)
}
void
-MediaParser::waitIfNeeded(boost::mutex::scoped_lock& lock)
+MediaParser::waitIfNeeded(std::unique_lock<std::mutex>& lock)
{
// We hold a lock on the queue here...
bool pc=parsingCompleted();
@@ -424,8 +396,8 @@ bool
MediaParser::bufferFull() const
{
// Callers are expected to hold a lock on _qMutex
- boost::uint64_t bl = getBufferLengthNoLock();
- boost::uint64_t bt = getBufferTime();
+ std::uint64_t bl = getBufferLengthNoLock();
+ std::uint64_t bt = getBufferTime();
#ifdef GNASH_DEBUG_MEDIAPARSER
log_debug("MediaParser::bufferFull: %d/%d", bl, bt);
#endif // GNASH_DEBUG_MEDIAPARSER
@@ -435,7 +407,6 @@ MediaParser::bufferFull() const
void
MediaParser::parserLoop()
{
- _parserThreadStartBarrier.wait();
while (!parserThreadKillRequested())
{
parseNextChunk();
@@ -445,14 +416,14 @@ MediaParser::parserLoop()
// TODO: have a setParsingComplete() function
// exposed in base class for taking care
// of this on appropriate time.
- boost::mutex::scoped_lock lock(_qMutex);
+ std::unique_lock<std::mutex> lock(_qMutex);
waitIfNeeded(lock);
}
}
void
-MediaParser::fetchMetaTags(OrderedMetaTags& /*tags*/, boost::uint64_t /*ts*/)
+MediaParser::fetchMetaTags(OrderedMetaTags& /*tags*/, std::uint64_t /*ts*/)
{
}
diff --git a/libmedia/MediaParser.h b/libmedia/MediaParser.h
index 35ed0d0..caaf413 100644
--- a/libmedia/MediaParser.h
+++ b/libmedia/MediaParser.h
@@ -20,11 +20,10 @@
#ifndef GNASH_MEDIAPARSER_H
#define GNASH_MEDIAPARSER_H
-#include <boost/scoped_array.hpp>
-#include <boost/shared_ptr.hpp>
-#include <boost/thread/thread.hpp>
-#include <boost/thread/condition.hpp>
-#include <boost/thread/barrier.hpp>
+#include <atomic>
+#include <thread>
+#include <mutex>
+#include <condition_variable>
#include <memory>
#include <deque>
#include <map>
@@ -231,9 +230,9 @@ public:
/// @param typei
/// Changes interpretation of the codeci parameter.
///
- AudioInfo(int codeci, boost::uint16_t sampleRatei,
- boost::uint16_t sampleSizei, bool stereoi,
- boost::uint64_t durationi, codecType typei)
+ AudioInfo(int codeci, std::uint16_t sampleRatei,
+ std::uint16_t sampleSizei, bool stereoi,
+ std::uint64_t durationi, codecType typei)
:
codec(codeci),
sampleRate(sampleRatei),
@@ -252,14 +251,14 @@ public:
///
int codec;
- boost::uint16_t sampleRate;
+ std::uint16_t sampleRate;
/// Size of each sample, in bytes
- boost::uint16_t sampleSize;
+ std::uint16_t sampleSize;
bool stereo;
- boost::uint64_t duration;
+ std::uint64_t duration;
codecType type;
@@ -277,7 +276,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
@@ -318,8 +317,8 @@ public:
/// @param typei
/// Changes interpretation of the codeci parameter.
///
- VideoInfo(int codeci, boost::uint16_t widthi, boost::uint16_t heighti,
- boost::uint16_t frameRatei, boost::uint64_t durationi,
+ VideoInfo(int codeci, std::uint16_t widthi, std::uint16_t heighti,
+ std::uint16_t frameRatei, std::uint64_t durationi,
codecType typei)
:
codec(codeci),
@@ -332,10 +331,10 @@ public:
}
int codec;
- boost::uint16_t width;
- boost::uint16_t height;
- boost::uint16_t frameRate;
- boost::uint64_t duration;
+ std::uint16_t width;
+ std::uint16_t height;
+ std::uint16_t frameRate;
+ std::uint64_t duration;
codecType type;
/// Extra info about a video stream
@@ -352,7 +351,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);
@@ -384,9 +383,9 @@ public:
/// @param timestamp
/// Presentation timestamp, in milliseconds.
///
- EncodedVideoFrame(boost::uint8_t* data, boost::uint32_t size,
+ EncodedVideoFrame(std::uint8_t* data, std::uint32_t size,
unsigned int frameNum,
- boost::uint64_t timestamp=0)
+ std::uint64_t timestamp=0)
:
_size(size),
_data(data),
@@ -395,37 +394,37 @@ public:
{}
/// Return pointer to actual data. Ownership retained by this class.
- const boost::uint8_t* data() const { return _data.get(); }
+ const std::uint8_t* data() const { return _data.get(); }
/// Return size of data buffer.
- boost::uint32_t dataSize() const { return _size; }
+ std::uint32_t dataSize() const { return _size; }
/// Return video frame presentation timestamp
- boost::uint64_t timestamp() const { return _timestamp; }
+ std::uint64_t timestamp() const { return _timestamp; }
/// Return video frame number
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;
- boost::scoped_array<boost::uint8_t> _data;
+ std::uint32_t _size;
+ std::unique_ptr<std::uint8_t[]> _data;
unsigned int _frameNum;
- boost::uint64_t _timestamp;
+ std::uint64_t _timestamp;
};
/// An encoded audio frame
class EncodedAudioFrame
{
public:
- boost::uint32_t dataSize;
- boost::scoped_array<boost::uint8_t> data;
- boost::uint64_t timestamp;
+ std::uint32_t dataSize;
+ std::unique_ptr<std::uint8_t[]> data;
+ std::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 +442,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<std::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
@@ -466,7 +466,7 @@ public:
///
/// @return true if the seek was valid, false otherwise.
///
- virtual bool seek(boost::uint32_t& time)=0;
+ virtual bool seek(std::uint32_t& time)=0;
/// Returns mininum length of available buffers in milliseconds
//
@@ -477,7 +477,7 @@ public:
/// frames and let NetSTream::bufferLength() use that with playhead
/// time to find out...
///
- DSOEXPORT boost::uint64_t getBufferLength() const;
+ DSOEXPORT std::uint64_t getBufferLength() const;
/// Return true if both audio and video buffers are empty
//
@@ -485,10 +485,9 @@ public:
DSOEXPORT bool isBufferEmpty() const;
/// Return the time we want the parser thread to maintain in the buffer
- DSOEXPORT boost::uint64_t getBufferTime() const
+ DSOEXPORT std::uint_fast64_t getBufferTime() const
{
- boost::mutex::scoped_lock lock(_bufferTimeMutex);
- return _bufferTime;
+ return _bufferTime.load();
}
/// Set the time we want the parser thread to maintain in the buffer
@@ -496,9 +495,8 @@ public:
/// @param t
/// Number of milliseconds to keep in the buffers.
///
- DSOEXPORT void setBufferTime(boost::uint64_t t)
+ DSOEXPORT void setBufferTime(std::uint_fast64_t t)
{
- boost::mutex::scoped_lock lock(_bufferTimeMutex);
_bufferTime=t;
}
@@ -509,7 +507,7 @@ public:
///
/// NOTE: locks _qMutex
///
- DSOEXPORT bool nextFrameTimestamp(boost::uint64_t& ts) const;
+ DSOEXPORT bool nextFrameTimestamp(std::uint64_t& ts) const;
/// Get timestamp of the video frame which would be returned on nextVideoFrame
//
@@ -518,7 +516,7 @@ public:
///
/// NOTE: locks _qMutex
///
- DSOEXPORT bool nextVideoFrameTimestamp(boost::uint64_t& ts) const;
+ DSOEXPORT bool nextVideoFrameTimestamp(std::uint64_t& ts) const;
/// Returns the next video frame in the parsed buffer, advancing video cursor.
//
@@ -527,7 +525,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
//
@@ -536,7 +534,7 @@ public:
///
/// NOTE: locks _qMutex
///
- DSOEXPORT bool nextAudioFrameTimestamp(boost::uint64_t& ts) const;
+ DSOEXPORT bool nextAudioFrameTimestamp(std::uint64_t& ts) const;
/// Returns the next audio frame in the parsed buffer, advancing audio cursor.
//
@@ -545,7 +543,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
//
@@ -581,10 +579,10 @@ public:
virtual bool indexingCompleted() const { return true; }
/// Return number of bytes parsed so far
- virtual boost::uint64_t getBytesLoaded() const { return 0; }
+ virtual std::uint64_t getBytesLoaded() const { return 0; }
/// Return total number of bytes in input
- boost::uint64_t getBytesTotal() const
+ std::uint64_t getBytesTotal() const
{
return _stream->size();
}
@@ -609,7 +607,7 @@ public:
//
/// Metadata is currently only parsed from FLV streams. The default
/// is a no-op.
- virtual void fetchMetaTags(OrderedMetaTags& tags, boost::uint64_t ts);
+ virtual void fetchMetaTags(OrderedMetaTags& tags, std::uint64_t ts);
/// Get ID3 data from the parsed stream if it exists.
//
@@ -621,16 +619,16 @@ 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;
/// Number of bytes loaded
- boost::uint64_t _bytesLoaded;
+ std::atomic<std::uint_fast64_t> _bytesLoaded;
/// }@
@@ -653,22 +651,17 @@ 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;
- mutable boost::mutex _streamMutex;
-
- static void parserLoopStarter(MediaParser* mp)
- {
- mp->parserLoop();
- }
+ std::unique_ptr<IOChannel> _stream;
+ mutable std::mutex _streamMutex;
/// The parser loop runs in a separate thread
/// and calls parseNextChunk until killed.
@@ -682,33 +675,26 @@ protected:
bool parserThreadKillRequested() const
{
- boost::mutex::scoped_lock lock(_parserThreadKillRequestMutex);
- return _parserThreadKillRequested;
+ return _parserThreadKillRequested.load();
}
- boost::uint64_t _bufferTime;
- mutable boost::mutex _bufferTimeMutex;
+ std::atomic<std::uint_fast64_t> _bufferTime;
- std::auto_ptr<boost::thread> _parserThread;
- boost::barrier _parserThreadStartBarrier;
- mutable boost::mutex _parserThreadKillRequestMutex;
- bool _parserThreadKillRequested;
- boost::condition _parserThreadWakeup;
+ std::thread _parserThread;
+ std::atomic<bool> _parserThreadKillRequested;
+ std::condition_variable _parserThreadWakeup;
/// Wait on the _parserThreadWakeup condition if buffer is full
/// or parsing was completed.
///
/// Callers *must* pass a locked lock on _qMutex
///
- void waitIfNeeded(boost::mutex::scoped_lock& qMutexLock);
+ void waitIfNeeded(std::unique_lock<std::mutex>& qMutexLock);
void wakeupParserThread();
/// mutex protecting access to the a/v encoded frames queues
- mutable boost::mutex _qMutex;
-
- /// Mutex protecting _bytesLoaded (read by main, set by parser)
- mutable boost::mutex _bytesLoadedMutex;
+ mutable std::mutex _qMutex;
/// Method to check if buffer is full w/out locking the _qMutex
//
@@ -726,8 +712,8 @@ protected:
private:
- typedef std::deque<EncodedVideoFrame*> VideoFrames;
- typedef std::deque<EncodedAudioFrame*> AudioFrames;
+ typedef std::deque<std::unique_ptr<EncodedVideoFrame>> VideoFrames;
+ typedef std::deque<std::unique_ptr<EncodedAudioFrame>> AudioFrames;
/// Return pointer to next encoded video frame in buffer
//
@@ -760,19 +746,18 @@ private:
void requestParserThreadKill()
{
- boost::mutex::scoped_lock lock(_parserThreadKillRequestMutex);
_parserThreadKillRequested=true;
_parserThreadWakeup.notify_all();
}
/// Return diff between timestamp of last and first audio frame
- boost::uint64_t audioBufferLength() const;
+ std::uint64_t audioBufferLength() const;
/// Return diff between timestamp of last and first video frame
- boost::uint64_t videoBufferLength() const;
+ std::uint64_t videoBufferLength() const;
/// A getBufferLength method not locking the _qMutex (expected to be locked by caller already).
- boost::uint64_t getBufferLengthNoLock() const;
+ std::uint64_t getBufferLengthNoLock() const;
};
diff --git a/libmedia/SoundInfo.h b/libmedia/SoundInfo.h
index dcfad25..01f9055 100644
--- a/libmedia/SoundInfo.h
+++ b/libmedia/SoundInfo.h
@@ -65,9 +65,9 @@ public:
/// and by 2 (two channels) to find number of output
/// samples to skip or fill.
///
- SoundInfo(audioCodecType format, bool stereo, boost::uint32_t sampleRate,
- boost::uint32_t sampleCount, bool is16bit,
- boost::int16_t delaySeek=0)
+ SoundInfo(audioCodecType format, bool stereo, std::uint32_t sampleRate,
+ std::uint32_t sampleCount, bool is16bit,
+ std::int16_t delaySeek=0)
:
_format(format),
_stereo(stereo),
@@ -106,7 +106,7 @@ public:
//
/// The number is to be considered in pre-resampling units.
///
- boost::int16_t getDelaySeek() const { return _delaySeek; }
+ std::int16_t getDelaySeek() const { return _delaySeek; }
/// Returns the 16bit status of the sound
//
@@ -121,13 +121,13 @@ private:
bool _stereo;
/// Sample rate, one of 5512, 11025, 22050, 44100
- boost::uint32_t _sampleRate;
+ std::uint32_t _sampleRate;
/// Number of samples
- boost::uint32_t _sampleCount;
+ std::uint32_t _sampleCount;
/// Number of samples to seek forward or delay.
- boost::int16_t _delaySeek;
+ std::int16_t _delaySeek;
/// Is the audio in 16bit format (samplesize == 2)? else it
/// is 8bit (samplesize == 1). Used for streams when decoding adpcm.
diff --git a/libmedia/VideoConverter.h b/libmedia/VideoConverter.h
index 28f4784..6ca19a1 100644
--- a/libmedia/VideoConverter.h
+++ b/libmedia/VideoConverter.h
@@ -21,8 +21,8 @@
#define GNASH_VIDEOCONVERTER_H
#include <boost/noncopyable.hpp>
-#include <boost/cstdint.hpp>
-#include <boost/array.hpp>
+#include <cstdint>
+#include <array>
#include <memory>
namespace gnash {
@@ -42,10 +42,10 @@ namespace media {
struct ImgBuf : public boost::noncopyable
{
- typedef boost::uint32_t Type4CC;
+ typedef std::uint32_t Type4CC;
typedef void (*FreeFunc)(void*);
- ImgBuf(Type4CC t, boost::uint8_t* dataptr, size_t datasize, size_t w,
+ ImgBuf(Type4CC t, std::uint8_t* dataptr, size_t datasize, size_t w,
size_t h)
: type(t),
data(dataptr),
@@ -62,7 +62,7 @@ struct ImgBuf : public boost::noncopyable
static void array_delete(void* voidptr)
{
- boost::uint8_t* ptr = static_cast<boost::uint8_t*>(voidptr);
+ std::uint8_t* ptr = static_cast<std::uint8_t*>(voidptr);
delete [] ptr;
}
@@ -71,13 +71,13 @@ struct ImgBuf : public boost::noncopyable
}
Type4CC type;
- boost::uint8_t* data;
+ std::uint8_t* data;
size_t size; // in bytes
size_t width; // in pixels
size_t height; // in pixels
- boost::array<size_t, 4> stride;
+ std::array<size_t, 4> stride;
FreeFunc dealloc;
};
@@ -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/VideoInput.h b/libmedia/VideoInput.h
index 0ae6d16..7d3a581 100644
--- a/libmedia/VideoInput.h
+++ b/libmedia/VideoInput.h
@@ -20,7 +20,7 @@
#ifndef GNASH_VIDEOINPUT_H
#define GNASH_VIDEOINPUT_H
-#include <boost/cstdint.hpp> // for C99 int types
+#include <cstdint> // for C99 int types
#include <string>
#include "dsodefs.h" //DSOEXPORT
diff --git a/libmedia/ffmpeg/AudioDecoderFfmpeg.cpp b/libmedia/ffmpeg/AudioDecoderFfmpeg.cpp
index ce51e88..56b5248 100644
--- a/libmedia/ffmpeg/AudioDecoderFfmpeg.cpp
+++ b/libmedia/ffmpeg/AudioDecoderFfmpeg.cpp
@@ -27,7 +27,6 @@
#include "FLVParser.h"
#include "SoundInfo.h"
#include "MediaParser.h" // for AudioInfo
-#include "GnashScopedPtr.h"
//#define GNASH_DEBUG_AUDIO_DECODING
@@ -37,9 +36,9 @@ namespace ffmpeg {
AudioDecoderFfmpeg::AudioDecoderFfmpeg(const AudioInfo& info)
:
- _audioCodec(NULL),
- _audioCodecCtx(NULL),
- _parser(NULL),
+ _audioCodec(nullptr),
+ _audioCodecCtx(nullptr),
+ _parser(nullptr),
_needsParsing(false)
{
setup(info);
@@ -57,9 +56,9 @@ AudioDecoderFfmpeg::AudioDecoderFfmpeg(const AudioInfo& info)
AudioDecoderFfmpeg::AudioDecoderFfmpeg(SoundInfo& info)
:
- _audioCodec(NULL),
- _audioCodecCtx(NULL),
- _parser(NULL)
+ _audioCodec(nullptr),
+ _audioCodecCtx(nullptr),
+ _parser(nullptr)
{
setup(info);
@@ -138,13 +137,13 @@ void AudioDecoderFfmpeg::setup(SoundInfo& info)
}
#if LIBAVCODEC_VERSION_INT > AV_VERSION_INT(53,8,0)
- int ret = avcodec_open2(_audioCodecCtx, _audioCodec, NULL);
+ int ret = avcodec_open2(_audioCodecCtx, _audioCodec, nullptr);
#else
int ret = avcodec_open(_audioCodecCtx, _audioCodec);
#endif
if (ret < 0) {
av_free(_audioCodecCtx);
- _audioCodecCtx=0;
+ _audioCodecCtx=nullptr;
boost::format err = boost::format(
_("AudioDecoderFfmpeg: avcodec_open failed to initialize "
"FFmpeg codec %s (%d)")) % _audioCodec->name % (int)codec_id;
@@ -259,7 +258,7 @@ void AudioDecoderFfmpeg::setup(const AudioInfo& info)
}
_parser = av_parser_init(codec_id);
- _needsParsing = (_parser != NULL);
+ _needsParsing = (_parser != nullptr);
// Create an audioCodecCtx from the ffmpeg parser if exists/possible
#if LIBAVCODEC_VERSION_INT > AV_VERSION_INT(53,8,0)
@@ -318,14 +317,14 @@ void AudioDecoderFfmpeg::setup(const AudioInfo& info)
log_debug(" Opening codec");
#endif // GNASH_DEBUG_AUDIO_DECODING
#if LIBAVCODEC_VERSION_INT > AV_VERSION_INT(53,8,0)
- int ret = avcodec_open2(_audioCodecCtx, _audioCodec, NULL);
+ int ret = avcodec_open2(_audioCodecCtx, _audioCodec, nullptr);
#else
int ret = avcodec_open(_audioCodecCtx, _audioCodec);
#endif
if (ret < 0) {
//avcodec_close(_audioCodecCtx);
av_free(_audioCodecCtx);
- _audioCodecCtx = 0;
+ _audioCodecCtx = nullptr;
boost::format err = boost::format(
_("AudioDecoderFfmpeg: avcodec_open failed to initialize "
@@ -335,15 +334,15 @@ void AudioDecoderFfmpeg::setup(const AudioInfo& info)
}
-boost::uint8_t*
-AudioDecoderFfmpeg::decode(const boost::uint8_t* input,
- boost::uint32_t inputSize, boost::uint32_t&
- outputSize, boost::uint32_t& decodedBytes)
+std::uint8_t*
+AudioDecoderFfmpeg::decode(const std::uint8_t* input,
+ std::uint32_t inputSize, std::uint32_t&
+ outputSize, std::uint32_t& decodedBytes)
{
//GNASH_REPORT_FUNCTION;
size_t retCapacity = MAX_AUDIO_FRAME_SIZE;
- boost::uint8_t* retBuf = new boost::uint8_t[retCapacity];
+ std::uint8_t* retBuf = new std::uint8_t[retCapacity];
int retBufSize = 0;
#ifdef GNASH_DEBUG_AUDIO_DECODING
@@ -353,7 +352,7 @@ AudioDecoderFfmpeg::decode(const boost::uint8_t* input,
decodedBytes = 0; // nothing decoded yet
while (decodedBytes < inputSize)
{
- const boost::uint8_t* frame=0; // parsed frame (pointer into input)
+ const std::uint8_t* frame=nullptr; // parsed frame (pointer into input)
int framesize; // parsed frame size
int consumed = parseInput(input+decodedBytes,
@@ -405,8 +404,8 @@ AudioDecoderFfmpeg::decode(const boost::uint8_t* input,
// Now, decode the frame. We use the ::decodeFrame specialized function
// here so resampling is done appropriately
- boost::uint32_t outSize = 0;
- boost::scoped_array<boost::uint8_t> outBuf(
+ std::uint32_t outSize = 0;
+ std::unique_ptr<std::uint8_t[]> outBuf(
decodeFrame(frame, framesize, outSize));
if (!outBuf)
@@ -437,7 +436,7 @@ AudioDecoderFfmpeg::decode(const boost::uint8_t* input,
retBufSize+(unsigned)outSize, retCapacity);
#endif
- boost::uint8_t* tmp = retBuf;
+ std::uint8_t* tmp = retBuf;
retCapacity = std::max(retBufSize+static_cast<size_t>(outSize),
retCapacity * 2);
@@ -446,7 +445,7 @@ AudioDecoderFfmpeg::decode(const boost::uint8_t* input,
retCapacity);
#endif // GNASH_DEBUG_AUDIO_DECODING
- retBuf = new boost::uint8_t[retCapacity];
+ retBuf = new std::uint8_t[retCapacity];
if ( retBufSize ) std::copy(tmp, tmp+retBufSize, retBuf);
delete [] tmp;
}
@@ -460,16 +459,16 @@ AudioDecoderFfmpeg::decode(const boost::uint8_t* input,
}
-boost::uint8_t*
+std::uint8_t*
AudioDecoderFfmpeg::decode(const EncodedAudioFrame& ef,
- boost::uint32_t& outputSize)
+ std::uint32_t& outputSize)
{
return decodeFrame(ef.data.get(), ef.dataSize, outputSize);
}
-boost::uint8_t*
-AudioDecoderFfmpeg::decodeFrame(const boost::uint8_t* input,
- boost::uint32_t inputSize, boost::uint32_t& outputSize)
+std::uint8_t*
+AudioDecoderFfmpeg::decodeFrame(const std::uint8_t* input,
+ std::uint32_t inputSize, std::uint32_t& outputSize)
{
//GNASH_REPORT_FUNCTION;
@@ -478,14 +477,15 @@ AudioDecoderFfmpeg::decodeFrame(const boost::uint8_t* input,
size_t outSize = MAX_AUDIO_FRAME_SIZE;
// TODO: make this a private member, to reuse (see NetStreamFfmpeg in 0.8.3)
- ScopedPtr<boost::int16_t> output( reinterpret_cast<boost::int16_t*>(av_malloc(outSize)), av_free );
+ std::unique_ptr<std::int16_t, decltype(av_free)*> output(
+ reinterpret_cast<std::int16_t*>(av_malloc(outSize)), av_free );
if (!output.get()) {
log_error(_("failed to allocate audio buffer."));
outputSize = 0;
- return NULL;
+ return nullptr;
}
- boost::int16_t* outPtr = output.get();
+ std::int16_t* outPtr = output.get();
#ifdef GNASH_DEBUG_AUDIO_DECODING
@@ -500,10 +500,10 @@ AudioDecoderFfmpeg::decodeFrame(const boost::uint8_t* input,
av_init_packet(&pkt);
pkt.data = const_cast<uint8_t*>(input);
pkt.size = inputSize;
- ScopedPtr<AVFrame> frm ( FRAMEALLOC(), av_free );
+ std::unique_ptr<AVFrame, decltype(av_free)*> frm ( FRAMEALLOC(), av_free );
if (!frm.get()) {
log_error(_("failed to allocate frame."));
- return NULL;
+ return nullptr;
}
int tmp = avcodec_decode_audio4(_audioCodecCtx, frm.get(), &got_frm, &pkt);
@@ -522,7 +522,7 @@ AudioDecoderFfmpeg::decodeFrame(const boost::uint8_t* input,
if (static_cast<int>(outSize) < data_size) {
log_error(_("output buffer size is too small for the current frame "
"(%d < %d)"), outSize, data_size);
- return NULL;
+ return nullptr;
}
memcpy(outPtr, frm->extended_data[0], plane_size);
@@ -552,7 +552,7 @@ AudioDecoderFfmpeg::decodeFrame(const boost::uint8_t* input,
"data."), outputSize, inputSize);
log_error(_("Upgrading ffmpeg/libavcodec might fix this issue."));
outputSize = 0;
- return NULL;
+ return nullptr;
}
// Resampling is needed.
@@ -571,7 +571,7 @@ AudioDecoderFfmpeg::decodeFrame(const boost::uint8_t* input,
int resampledFrameSize = expectedMaxOutSamples*2*2;
// Allocate just the required amount of bytes
- boost::uint8_t* resampledOutput = new boost::uint8_t[resampledFrameSize];
+ std::uint8_t* resampledOutput = new std::uint8_t[resampledFrameSize];
#ifdef GNASH_DEBUG_AUDIO_DECODING
log_debug(" decodeFrame | Calling the resampler, resampleFactor: %d | "
@@ -588,7 +588,7 @@ AudioDecoderFfmpeg::decodeFrame(const boost::uint8_t* input,
&resampledOutput); // output
// make sure to set outPtr *after* we use it as input to the resampler
- outPtr = reinterpret_cast<boost::int16_t*>(resampledOutput);
+ outPtr = reinterpret_cast<std::int16_t*>(resampledOutput);
#ifdef GNASH_DEBUG_AUDIO_DECODING
log_debug("resampler returned %d samples ", outSamples);
@@ -618,9 +618,9 @@ AudioDecoderFfmpeg::decodeFrame(const boost::uint8_t* input,
}
else {
- boost::uint8_t* newOutput = new boost::uint8_t[outSize];
+ std::uint8_t* newOutput = new std::uint8_t[outSize];
std::memcpy(newOutput, outPtr, outSize);
- outPtr = reinterpret_cast<boost::int16_t*>(newOutput);
+ outPtr = reinterpret_cast<std::int16_t*>(newOutput);
}
outputSize = outSize;
@@ -628,9 +628,9 @@ AudioDecoderFfmpeg::decodeFrame(const boost::uint8_t* input,
}
int
-AudioDecoderFfmpeg::parseInput(const boost::uint8_t* input,
- boost::uint32_t inputSize,
- boost::uint8_t const ** outFrame, int* outFrameSize)
+AudioDecoderFfmpeg::parseInput(const std::uint8_t* input,
+ std::uint32_t inputSize,
+ std::uint8_t const ** outFrame, int* outFrameSize)
{
if ( _needsParsing )
{
@@ -641,7 +641,7 @@ AudioDecoderFfmpeg::parseInput(const boost::uint8_t* input,
#endif
// as of 2008-10-28 SVN, ffmpeg doesn't
// accept a pointer to pointer to const..
- const_cast<boost::uint8_t**>(outFrame),
+ const_cast<std::uint8_t**>(outFrame),
outFrameSize,
input, inputSize,
#if LIBAVCODEC_VERSION_MAJOR >= 53
diff --git a/libmedia/ffmpeg/AudioDecoderFfmpeg.h b/libmedia/ffmpeg/AudioDecoderFfmpeg.h
index 9310830..96578bc 100644
--- a/libmedia/ffmpeg/AudioDecoderFfmpeg.h
+++ b/libmedia/ffmpeg/AudioDecoderFfmpeg.h
@@ -56,20 +56,20 @@ public:
~AudioDecoderFfmpeg();
// See dox in AudioDecoder.h
- boost::uint8_t* decode(const boost::uint8_t* input,
- boost::uint32_t inputSize, boost::uint32_t& outputSize,
- boost::uint32_t& decodedBytes);
+ std::uint8_t* decode(const std::uint8_t* input,
+ std::uint32_t inputSize, std::uint32_t& outputSize,
+ std::uint32_t& decodedBytes);
- boost::uint8_t* decode(const EncodedAudioFrame& af,
- boost::uint32_t& outputSize);
+ std::uint8_t* decode(const EncodedAudioFrame& af,
+ std::uint32_t& outputSize);
private:
void setup(const AudioInfo& info);
void setup(SoundInfo& info);
- boost::uint8_t* decodeFrame(const boost::uint8_t* input,
- boost::uint32_t inputSize, boost::uint32_t& outputSize);
+ std::uint8_t* decodeFrame(const std::uint8_t* input,
+ std::uint32_t inputSize, std::uint32_t& outputSize);
AVCodec* _audioCodec;
AVCodecContext* _audioCodecCtx;
@@ -99,8 +99,8 @@ private:
///
/// @return number of input bytes parsed, or -1 on error
///
- int parseInput(const boost::uint8_t* input, boost::uint32_t inputSize,
- boost::uint8_t const ** outFrame, int* outFrameSize);
+ int parseInput(const std::uint8_t* input, std::uint32_t inputSize,
+ std::uint8_t const ** outFrame, int* outFrameSize);
};
} // gnash.media.ffmpeg namespace
diff --git a/libmedia/ffmpeg/AudioInputFfmpeg.h b/libmedia/ffmpeg/AudioInputFfmpeg.h
index 5d647cd..32e7292 100644
--- a/libmedia/ffmpeg/AudioInputFfmpeg.h
+++ b/libmedia/ffmpeg/AudioInputFfmpeg.h
@@ -23,7 +23,7 @@
#include "dsodefs.h" //DSOEXPORT
#include "AudioInput.h"
-#include <boost/cstdint.hpp> // for C99 int types
+#include <cstdint> // for C99 int types
#include <string>
namespace gnash {
diff --git a/libmedia/ffmpeg/AudioResamplerFfmpeg.cpp b/libmedia/ffmpeg/AudioResamplerFfmpeg.cpp
index 41673b4..0b0dc6c 100644
--- a/libmedia/ffmpeg/AudioResamplerFfmpeg.cpp
+++ b/libmedia/ffmpeg/AudioResamplerFfmpeg.cpp
@@ -24,14 +24,13 @@
#include <cmath>
#include <vector>
-#include <boost/scoped_array.hpp>
namespace gnash {
namespace media {
namespace ffmpeg {
AudioResamplerFfmpeg::AudioResamplerFfmpeg()
- :_context(NULL)
+ :_context(nullptr)
{
}
AudioResamplerFfmpeg::~AudioResamplerFfmpeg() {
@@ -86,8 +85,9 @@ AudioResamplerFfmpeg::init(AVCodecContext* ctx) {
}
int
-AudioResamplerFfmpeg::resample(boost::uint8_t** input, int plane_size,
- int samples, boost::uint8_t** output) {
+AudioResamplerFfmpeg::resample(std::uint8_t** input, int plane_size,
+ int samples, std::uint8_t** output) {
+ UNUSED( plane_size );
#ifdef HAVE_SWRESAMPLE_H
return swr_convert(_context,
output, MAX_AUDIO_FRAME_SIZE,
@@ -97,7 +97,6 @@ AudioResamplerFfmpeg::resample(boost::uint8_t** input, int plane_size,
output, 0, MAX_AUDIO_FRAME_SIZE,
input, plane_size, samples);
#else
- UNUSED( plane_size );
return audio_resample(_context, reinterpret_cast<short*>(*output),
reinterpret_cast<short*>(*input), samples);
#endif
diff --git a/libmedia/ffmpeg/AudioResamplerFfmpeg.h b/libmedia/ffmpeg/AudioResamplerFfmpeg.h
index 3dc2748..5b21c83 100644
--- a/libmedia/ffmpeg/AudioResamplerFfmpeg.h
+++ b/libmedia/ffmpeg/AudioResamplerFfmpeg.h
@@ -25,7 +25,7 @@
#include "ffmpegHeaders.h"
-#include <boost/cstdint.hpp>
+#include <cstdint>
namespace gnash {
namespace media {
@@ -67,8 +67,8 @@ public:
///
/// @return the number of samples in the output data.
///
- DSOEXPORT int resample(boost::uint8_t** input, int plane_size,
- int samples, boost::uint8_t** output);
+ DSOEXPORT int resample(std::uint8_t** input, int plane_size,
+ int samples, std::uint8_t** output);
private:
// The container of the resample format information.
diff --git a/libmedia/ffmpeg/MediaHandlerFfmpeg.cpp b/libmedia/ffmpeg/MediaHandlerFfmpeg.cpp
index 2c13eaf..127aaaa 100644
--- a/libmedia/ffmpeg/MediaHandlerFfmpeg.cpp
+++ b/libmedia/ffmpeg/MediaHandlerFfmpeg.cpp
@@ -42,27 +42,27 @@ std::string
MediaHandlerFfmpeg::description() const
{
std::ostringstream ss;
- const boost::uint32_t ver = avcodec_version();
+ const std::uint32_t ver = avcodec_version();
ss << "FFmpeg (avcodec version: " << (ver >> 16) << "."
<< ((ver & 0xff00) >> 8) << "."
<< (ver & 0xff) << ")";
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 a90eef9..634254e 100644
--- a/libmedia/ffmpeg/MediaParserFfmpeg.cpp
+++ b/libmedia/ffmpeg/MediaParserFfmpeg.cpp
@@ -46,15 +46,15 @@ inline double as_double(AVRational time) {
int
-MediaParserFfmpeg::readPacketWrapper(void* opaque, boost::uint8_t* buf,
+MediaParserFfmpeg::readPacketWrapper(void* opaque, std::uint8_t* buf,
int buf_size)
{
MediaParserFfmpeg* p = static_cast<MediaParserFfmpeg*>(opaque);
return p->readPacket(buf, buf_size);
}
-boost::int64_t
-MediaParserFfmpeg::seekMediaWrapper(void *opaque, boost::int64_t offset, int whence)
+std::int64_t
+MediaParserFfmpeg::seekMediaWrapper(void *opaque, std::int64_t offset, int whence)
{
MediaParserFfmpeg* p = static_cast<MediaParserFfmpeg*>(opaque);
return p->seekMedia(offset, whence);
@@ -66,7 +66,7 @@ MediaParserFfmpeg::probeStream()
const size_t probeSize = 4096;
const size_t bufSize = probeSize + FF_INPUT_BUFFER_PADDING_SIZE;
- boost::scoped_array<boost::uint8_t> buffer(new boost::uint8_t[bufSize]);
+ std::unique_ptr<std::uint8_t[]> buffer(new std::uint8_t[bufSize]);
assert(_stream->tell() == static_cast<std::streampos>(0));
size_t actuallyRead = _stream->read(buffer.get(), probeSize);
@@ -92,11 +92,11 @@ MediaParserFfmpeg::probeStream()
}
bool
-MediaParserFfmpeg::seek(boost::uint32_t& pos)
+MediaParserFfmpeg::seek(std::uint32_t& pos)
{
// lock the stream while reading from it, so actionscript
// won't mess with the parser on seek or on getBytesLoaded
- boost::mutex::scoped_lock streamLock(_streamMutex);
+ std::lock_guard<std::mutex> streamLock(_streamMutex);
// NOTE: seeking when timestamps are unknown is a pain
// See https://savannah.gnu.org/bugs/index.php?33085
@@ -158,7 +158,7 @@ MediaParserFfmpeg::parseVideoFrame(AVPacket& packet)
// pkt->pts can be AV_NOPTS_VALUE if the video format has B frames,
// so it is better to rely on pkt->dts if you do not decompress the payload.
//
- boost::uint64_t timestamp = static_cast<boost::uint64_t>(packet.dts * as_double(_videoStream->time_base) * 1000.0);
+ std::uint64_t timestamp = static_cast<std::uint64_t>(packet.dts * as_double(_videoStream->time_base) * 1000.0);
#if 0
LOG_ONCE( log_unimpl("%s", __PRETTY_FUNCTION__) );
@@ -172,11 +172,11 @@ MediaParserFfmpeg::parseVideoFrame(AVPacket& packet)
// we might do proper padding or (better) avoid the copy as a whole by making
// EncodedVideoFrame virtual.
size_t allocSize = packet.size*2;
- boost::uint8_t* data = new boost::uint8_t[allocSize];
+ std::uint8_t* data = new std::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
@@ -197,8 +197,8 @@ MediaParserFfmpeg::parseAudioFrame(AVPacket& packet)
// so it is better to rely on pkt->dts if you do not decompress the payload.
//
- boost::uint64_t dts = packet.dts;
- if ( dts == static_cast<boost::uint64_t>(AV_NOPTS_VALUE) ) {
+ std::uint64_t dts = packet.dts;
+ if ( dts == static_cast<std::uint64_t>(AV_NOPTS_VALUE) ) {
// We'll take 'nopts' value as zero.
// Would likely be better to make it use timestamp
// of previous frame, if any.
@@ -212,23 +212,23 @@ MediaParserFfmpeg::parseAudioFrame(AVPacket& packet)
"timestamp has no value, taking as zero")));
dts = 0;
}
- boost::uint64_t timestamp = static_cast<boost::uint64_t>(dts * as_double(_audioStream->time_base) * 1000.0);
+ std::uint64_t timestamp = static_cast<std::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
// EncodedVideoFrame virtual.
size_t allocSize = packet.size*2;
- boost::uint8_t* data = new boost::uint8_t[allocSize];
+ std::uint8_t* data = new std::uint8_t[allocSize];
std::copy(packet.data, packet.data+packet.size, data);
frame->data.reset(data);
frame->dataSize = packet.size;
frame->timestamp = timestamp;
- pushEncodedAudioFrame(frame);
+ pushEncodedAudioFrame(std::move(frame));
return true;
}
@@ -238,7 +238,7 @@ MediaParserFfmpeg::parseNextFrame()
{
// lock the stream while reading from it, so actionscript
// won't mess with the parser on seek or on getBytesLoaded
- boost::mutex::scoped_lock streamLock(_streamMutex);
+ std::lock_guard<std::mutex> streamLock(_streamMutex);
if ( _parsingComplete )
{
@@ -260,7 +260,7 @@ MediaParserFfmpeg::parseNextFrame()
int rc = av_read_frame(_formatCtx, &packet);
// Update _lastParsedPosition, even in case of error..
- boost::uint64_t curPos = _stream->tell();
+ std::uint64_t curPos = _stream->tell();
if ( curPos > _lastParsedPosition )
{
_lastParsedPosition = curPos;
@@ -314,23 +314,22 @@ MediaParserFfmpeg::parseNextChunk()
return true;
}
-boost::uint64_t
+std::uint64_t
MediaParserFfmpeg::getBytesLoaded() const
{
return _lastParsedPosition;
}
-MediaParserFfmpeg::MediaParserFfmpeg(std::auto_ptr<IOChannel> stream)
+MediaParserFfmpeg::MediaParserFfmpeg(std::unique_ptr<IOChannel> stream)
:
- MediaParser(stream),
- _nextVideoFrame(0),
- _nextAudioFrame(0),
- _inputFmt(0),
- _formatCtx(0),
+ MediaParser(std::move(stream)),
+ _inputFmt(nullptr),
+ _formatCtx(nullptr),
_videoStreamIndex(-1),
- _videoStream(0),
+ _videoStream(nullptr),
_audioStreamIndex(-1),
- _audioStream(0),
+ _audioStream(nullptr),
+ _avIOCxt(nullptr),
_lastParsedPosition(0)
{
initializeParser();
@@ -344,10 +343,6 @@ MediaParserFfmpeg::initializeParser()
{
av_register_all(); // TODO: needs to be invoked only once ?
-#if LIBAVFORMAT_VERSION_INT < AV_VERSION_INT(52,107,0)
- _byteIOCxt.buffer = NULL;
-#endif
-
_inputFmt = probeStream();
#ifdef GNASH_ALLOW_VCODEC_ENV
@@ -368,72 +363,39 @@ MediaParserFfmpeg::initializeParser()
// which isn't needed.
_byteIOBuffer.reset(new unsigned char[byteIOBufferSize]);
-#if LIBAVFORMAT_VERSION_INT < AV_VERSION_INT(52,107,0)
- init_put_byte(&_byteIOCxt,
-#else
_avIOCxt = avio_alloc_context(
-#endif
_byteIOBuffer.get(), // buffer
byteIOBufferSize, // buffer size
0, // write flags
this, // opaque pointer to pass to the callbacks
MediaParserFfmpeg::readPacketWrapper, // packet reader callback
- NULL, // packet writer callback
+ nullptr, // packet writer callback
MediaParserFfmpeg::seekMediaWrapper // seeker callback
);
-#if LIBAVFORMAT_VERSION_INT < AV_VERSION_INT(52,107,0)
- _byteIOCxt.is_streamed = 1;
-#else
_avIOCxt->seekable = 0;
-#endif
-#if !defined(LIBAVCODEC_VERSION_MAJOR) || LIBAVCODEC_VERSION_MAJOR < 52
- // Needed for Lenny.
- _formatCtx = av_alloc_format_context();
-#else
_formatCtx = avformat_alloc_context();
-#endif
-
assert(_formatCtx);
-#if LIBAVFORMAT_VERSION_INT < AV_VERSION_INT(52,107,0)
- // Otherwise av_open_input_stream will reallocate the context.
- AVFormatParameters ap;
- std::memset(&ap, 0, sizeof ap);
- ap.prealloced_context = 1;
-
- if (av_open_input_stream(&_formatCtx, &_byteIOCxt, "", _inputFmt, &ap) < 0)
-#else
-
_formatCtx->pb = _avIOCxt;
- if (avformat_open_input(&_formatCtx, "", _inputFmt, NULL) < 0)
-#endif
+ if (avformat_open_input(&_formatCtx, "", _inputFmt, nullptr) < 0)
{
throw IOException("MediaParserFfmpeg couldn't open input stream");
}
-#if defined(LIBAVCODEC_VERSION_MAJOR) && LIBAVCODEC_VERSION_MAJOR >= 52
// Note: in at least some versions of ffmpeg, av_open_input_stream does
// not parse metadata; not sure why.
-#if LIBAVUTIL_VERSION_INT < AV_VERSION_INT(51,5,0)
- AVMetadata* md = _formatCtx->metadata;
- if (md) {
- AVMetadataTag* tag = av_metadata_get(md, "album", 0,
- AV_METADATA_MATCH_CASE);
-#else
AVDictionary* md = _formatCtx->metadata;
if (md) {
- AVDictionaryEntry* tag = av_dict_get(md, "album", 0,
+ AVDictionaryEntry* tag = av_dict_get(md, "album", nullptr,
AV_DICT_MATCH_CASE);
-#endif
if (tag && tag->value) {
setId3Info(&Id3Info::album, std::string(tag->value),
_id3Object);
}
}
-#endif
log_debug("Parsing FFMPEG media file: format:%s; nstreams:%d",
_inputFmt->name, _formatCtx->nb_streams);
@@ -454,11 +416,7 @@ MediaParserFfmpeg::initializeParser()
}
switch (enc->codec_type) {
-#if LIBAVCODEC_VERSION_MAJOR >= 53
case AVMEDIA_TYPE_AUDIO:
-#else
- case CODEC_TYPE_AUDIO:
-#endif
if (_audioStreamIndex < 0) {
_audioStreamIndex = i;
_audioStream = _formatCtx->streams[i];
@@ -469,11 +427,7 @@ MediaParserFfmpeg::initializeParser()
}
break;
-#if LIBAVCODEC_VERSION_MAJOR >= 53
case AVMEDIA_TYPE_VIDEO:
-#else
- case CODEC_TYPE_VIDEO:
-#endif
if (_videoStreamIndex < 0) {
_videoStreamIndex = i;
_videoStream = _formatCtx->streams[i];
@@ -489,16 +443,16 @@ MediaParserFfmpeg::initializeParser()
// Create VideoInfo
if ( _videoStream) {
const int codec = static_cast<int>(_videoStream->codec->codec_id);
- boost::uint16_t width = _videoStream->codec->width;
- boost::uint16_t height = _videoStream->codec->height;
- boost::uint16_t frameRate = static_cast<boost::uint16_t>(
+ std::uint16_t width = _videoStream->codec->width;
+ std::uint16_t height = _videoStream->codec->height;
+ std::uint16_t frameRate = static_cast<std::uint16_t>(
as_double(_videoStream->avg_frame_rate));
#if !defined(HAVE_LIBAVFORMAT_AVFORMAT_H) && !defined(HAVE_FFMPEG_AVCODEC_H)
- boost::uint64_t duration = _videoStream->codec_info_duration;
+ std::uint64_t duration = _videoStream->codec_info_duration;
#else
- boost::uint64_t duration = _videoStream->duration;
+ std::uint64_t duration = _videoStream->duration;
#endif
- if (duration == static_cast<boost::uint64_t>(AV_NOPTS_VALUE)) {
+ if (duration == static_cast<std::uint64_t>(AV_NOPTS_VALUE)) {
log_error(_("Duration of video stream unknown"));
duration=0; // TODO: guess!
} else {
@@ -519,15 +473,15 @@ MediaParserFfmpeg::initializeParser()
if (_audioStream) {
const int codec = static_cast<int>(_audioStream->codec->codec_id);
- boost::uint16_t sampleRate = _audioStream->codec->sample_rate;
- boost::uint16_t sampleSize = SampleFormatToSampleSize(_audioStream->codec->sample_fmt);
+ std::uint16_t sampleRate = _audioStream->codec->sample_rate;
+ std::uint16_t sampleSize = SampleFormatToSampleSize(_audioStream->codec->sample_fmt);
bool stereo = (_audioStream->codec->channels == 2);
#if !defined(HAVE_LIBAVFORMAT_AVFORMAT_H) && !defined(HAVE_FFMPEG_AVCODEC_H)
- boost::uint64_t duration = _audioStream->codec_info_duration;
+ std::uint64_t duration = _audioStream->codec_info_duration;
#else
- boost::uint64_t duration = _audioStream->duration;
+ std::uint64_t duration = _audioStream->duration;
#endif
- if (duration == static_cast<boost::uint64_t>(AV_NOPTS_VALUE)) {
+ if (duration == static_cast<std::uint64_t>(AV_NOPTS_VALUE)) {
log_error(_("Duration of audio stream unknown to ffmpeg"));
duration=0; // TODO: guess!
}
@@ -552,12 +506,8 @@ MediaParserFfmpeg::~MediaParserFfmpeg()
{
stopParserThread();
- if ( _formatCtx )
- {
- // TODO: check if this is correct (should we create RIIA classes for ffmpeg stuff?)
- //av_close_input_file(_formatCtx); // NOTE: this one triggers a mismatched free/delete on _byteIOBuffer with libavformat.so.52 !
- av_free(_formatCtx);
- }
+
+ avformat_close_input(&_formatCtx);
if ( _inputFmt )
{
@@ -565,6 +515,7 @@ MediaParserFfmpeg::~MediaParserFfmpeg()
//av_free(_inputFmt); // it seems this one blows up, could be due to av_free(_formatCtx) above
}
+ av_free(_avIOCxt);
}
// NOTE: as this function is used as a callback from FFMPEG, it should not
@@ -573,7 +524,7 @@ MediaParserFfmpeg::~MediaParserFfmpeg()
// b) Even if we don't crash and burn, the FFMPEG parser is left in an
// undefined state.
int
-MediaParserFfmpeg::readPacket(boost::uint8_t* buf, int buf_size)
+MediaParserFfmpeg::readPacket(std::uint8_t* buf, int buf_size)
{
//GNASH_REPORT_FUNCTION;
//log_debug("readPacket(%d)", buf_size);
@@ -595,8 +546,8 @@ MediaParserFfmpeg::getId3Info() const
// a) The behaviour of C++ exceptions passed into C code is undefined.
// b) Even if we don't crash and burn, the FFMPEG parser is left in an
// undefined state.
-boost::int64_t
-MediaParserFfmpeg::seekMedia(boost::int64_t offset, int whence)
+std::int64_t
+MediaParserFfmpeg::seekMedia(std::int64_t offset, int whence)
{
//GNASH_REPORT_FUNCTION;
//log_debug("::seekMedia(%1%, %2%)", offset, whence);
@@ -643,35 +594,10 @@ MediaParserFfmpeg::seekMedia(boost::int64_t offset, int whence)
return _stream->tell();
}
-boost::uint16_t
+std::uint16_t
MediaParserFfmpeg::SampleFormatToSampleSize(AVSampleFormat fmt)
{
-#if LIBAVUTIL_VERSION_INT > AV_VERSION_INT(51,4,0)
return av_get_bytes_per_sample(fmt);
-#else
- switch (fmt)
- {
- case AV_SAMPLE_FMT_U8: // unsigned 8 bits
- return 1;
-
- case AV_SAMPLE_FMT_S16: // signed 16 bits
- case AV_SAMPLE_FMT_FLT: // float
- return 2;
-
-#if !defined (LIBAVCODEC_VERSION_MAJOR) || LIBAVCODEC_VERSION_MAJOR < 52
-// Was dropped for version 52.0.0
- case AV_SAMPLE_FMT_S24: // signed 24 bits
- return 3;
-#endif
-
- case AV_SAMPLE_FMT_S32: // signed 32 bits
- return 4;
-
- case AV_SAMPLE_FMT_NONE:
- default:
- return 8; // arbitrary value
- }
-#endif
}
diff --git a/libmedia/ffmpeg/MediaParserFfmpeg.h b/libmedia/ffmpeg/MediaParserFfmpeg.h
index a14cfb6..e9e5fde 100644
--- a/libmedia/ffmpeg/MediaParserFfmpeg.h
+++ b/libmedia/ffmpeg/MediaParserFfmpeg.h
@@ -20,7 +20,6 @@
#ifndef GNASH_MEDIAPARSER_FFMPEG_H
#define GNASH_MEDIAPARSER_FFMPEG_H
-#include <boost/scoped_array.hpp>
#include <memory>
#include <boost/optional.hpp>
@@ -44,13 +43,13 @@ namespace ffmpeg {
class ExtraAudioInfoFfmpeg : public AudioInfo::ExtraInfo
{
public:
- ExtraAudioInfoFfmpeg(boost::uint8_t* nData, size_t nDataSize)
+ ExtraAudioInfoFfmpeg(std::uint8_t* nData, size_t nDataSize)
:
data(nData),
dataSize(nDataSize)
{
}
- boost::uint8_t* data;
+ std::uint8_t* data;
size_t dataSize;
};
@@ -61,13 +60,13 @@ public:
class ExtraVideoInfoFfmpeg : public VideoInfo::ExtraInfo
{
public:
- ExtraVideoInfoFfmpeg(boost::uint8_t* nData, size_t nDataSize)
+ ExtraVideoInfoFfmpeg(std::uint8_t* nData, size_t nDataSize)
:
data(nData),
dataSize(nDataSize)
{
}
- boost::uint8_t* data;
+ std::uint8_t* data;
size_t dataSize;
};
@@ -80,18 +79,18 @@ 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();
// See dox in MediaParser.h
- virtual bool seek(boost::uint32_t&);
+ virtual bool seek(std::uint32_t&);
// See dox in MediaParser.h
virtual bool parseNextChunk();
// See dox in MediaParser.h
- virtual boost::uint64_t getBytesLoaded() const;
+ virtual std::uint64_t getBytesLoaded() const;
virtual boost::optional<Id3Info> getId3Info() const;
@@ -101,20 +100,6 @@ private:
/// creating VideoInfo and AudioInfo objects
void initializeParser();
- /// Video frame cursor position
- //
- /// This is the video frame number that will
- /// be referenced by nextVideoFrame and nextVideoFrameTimestamp
- ///
- size_t _nextVideoFrame;
-
- /// Audio frame cursor position
- //
- /// This is the video frame number that will
- /// be referenced by nextVideoFrame and nextVideoFrameTimestamp
- ///
- size_t _nextAudioFrame;
-
/// Parse next media frame
//
/// @return false on error or eof, true otherwise
@@ -122,16 +107,16 @@ private:
bool parseNextFrame();
/// Input chunk reader, to be called by ffmpeg parser
- int readPacket(boost::uint8_t* buf, int buf_size);
+ int readPacket(std::uint8_t* buf, int buf_size);
/// ffmpeg callback function
- static int readPacketWrapper(void* opaque, boost::uint8_t* buf, int buf_size);
+ static int readPacketWrapper(void* opaque, std::uint8_t* buf, int buf_size);
/// Input stream seeker, to be called by ffmpeg parser
- boost::int64_t seekMedia(boost::int64_t offset, int whence);
+ std::int64_t seekMedia(std::int64_t offset, int whence);
/// ffmpeg callback function
- static boost::int64_t seekMediaWrapper(void *opaque, boost::int64_t offset, int whence);
+ static std::int64_t seekMediaWrapper(void *opaque, std::int64_t offset, int whence);
/// Read some of the input to figure an AVInputFormat
AVInputFormat* probeStream();
@@ -154,13 +139,7 @@ private:
AVStream* _audioStream;
/// ?
-#if LIBAVFORMAT_VERSION_INT < AV_VERSION_INT(52,107,0)
-// AVIOContext was introduced a bit earlier but without version bump, so let's
-// be safe
- ByteIOContext _byteIOCxt;
-#else
AVIOContext* _avIOCxt;
-#endif
/// Size of the ByteIO context buffer
//
@@ -169,16 +148,16 @@ private:
///
static const size_t byteIOBufferSize = 1024;
- boost::scoped_array<unsigned char> _byteIOBuffer;
+ std::unique_ptr<unsigned char[]> _byteIOBuffer;
/// The last parsed position, for getBytesLoaded
- boost::uint64_t _lastParsedPosition;
+ std::uint64_t _lastParsedPosition;
/// Return sample size from SampleFormat
//
/// TODO: move somewhere in ffmpeg utils..
///
- boost::uint16_t SampleFormatToSampleSize(AVSampleFormat fmt);
+ std::uint16_t SampleFormatToSampleSize(AVSampleFormat fmt);
/// Make an EncodedVideoFrame from an AVPacket and push to buffer
//
diff --git a/libmedia/ffmpeg/VideoConverterFfmpeg.cpp b/libmedia/ffmpeg/VideoConverterFfmpeg.cpp
index 5247ce3..74aa55f 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;
@@ -147,8 +147,8 @@ VideoConverterFfmpeg::convert(const ImgBuf& src)
if (!_swsContext.get()) {
_swsContext.reset(new SwsContextWrapper(sws_getContext(width, height,
- src_pixFmt, width, height, dst_pixFmt, SWS_BILINEAR, NULL, NULL,
- NULL)));
+ src_pixFmt, width, height, dst_pixFmt, SWS_BILINEAR, nullptr, nullptr,
+ nullptr)));
if (!_swsContext->getContext()) {
@@ -162,7 +162,7 @@ VideoConverterFfmpeg::convert(const ImgBuf& src)
#endif
- AVPicture srcpicture = {{src.data, 0, 0, 0},
+ AVPicture srcpicture = {{src.data, nullptr, nullptr, nullptr},
{static_cast<int>(src.stride[0]), 0, 0, 0}};
@@ -171,7 +171,7 @@ VideoConverterFfmpeg::convert(const ImgBuf& src)
return ret;
}
- boost::uint8_t* dstbuffer = new boost::uint8_t[bufsize];
+ std::uint8_t* dstbuffer = new std::uint8_t[bufsize];
AVPicture dstpicture;
avpicture_fill(&dstpicture, dstbuffer, dst_pixFmt, width, 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..81256ec 100644
--- a/libmedia/ffmpeg/VideoDecoderFfmpeg.cpp
+++ b/libmedia/ffmpeg/VideoDecoderFfmpeg.cpp
@@ -24,7 +24,6 @@
#include "VideoDecoderFfmpeg.h"
-#include <boost/scoped_array.hpp>
#include <boost/format.hpp>
#include <algorithm>
@@ -51,7 +50,7 @@ namespace {
VaapiContextFfmpeg* get_vaapi_context(AVCodecContext* avctx);
void set_vaapi_context(AVCodecContext* avctx, VaapiContextFfmpeg* vactx);
void clear_vaapi_context(AVCodecContext* avctx);
- void reset_context(AVCodecContext* avctx, VaapiContextFfmpeg* vactx = 0);
+ void reset_context(AVCodecContext* avctx, VaapiContextFfmpeg* vactx = nullptr);
PixelFormat get_format(AVCodecContext* avctx, const PixelFormat* fmt);
#if LIBAVCODEC_VERSION_MAJOR >= 55
int get_buffer(AVCodecContext* avctx, AVFrame* pic, int flags);
@@ -118,7 +117,7 @@ private:
VideoDecoderFfmpeg::VideoDecoderFfmpeg(videoCodecType format, int width, int height)
:
- _videoCodec(NULL)
+ _videoCodec(nullptr)
{
CODECID codec_id = flashToFfmpegCodec(format);
@@ -128,7 +127,7 @@ VideoDecoderFfmpeg::VideoDecoderFfmpeg(videoCodecType format, int width, int hei
VideoDecoderFfmpeg::VideoDecoderFfmpeg(const VideoInfo& info)
:
- _videoCodec(NULL)
+ _videoCodec(nullptr)
{
CODECID codec_id = AV_CODEC_ID_NONE;
@@ -147,7 +146,7 @@ VideoDecoderFfmpeg::VideoDecoderFfmpeg(const VideoInfo& info)
throw MediaException(msg.str());
}
- boost::uint8_t* extradata=0;
+ std::uint8_t* extradata=nullptr;
int extradataSize=0;
if (info.extra.get())
{
@@ -172,7 +171,7 @@ VideoDecoderFfmpeg::VideoDecoderFfmpeg(const VideoInfo& info)
void
VideoDecoderFfmpeg::init(enum CODECID codecId, int /*width*/, int /*height*/,
- boost::uint8_t* extradata, int extradataSize)
+ std::uint8_t* extradata, int extradataSize)
{
// Init the avdecoder-decoder
#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(52,6,2)
@@ -219,7 +218,7 @@ VideoDecoderFfmpeg::init(enum CODECID codecId, int /*width*/, int /*height*/,
#endif
#if LIBAVCODEC_VERSION_INT > AV_VERSION_INT(53,8,0)
- int ret = avcodec_open2(ctx, _videoCodec, NULL);
+ int ret = avcodec_open2(ctx, _videoCodec, nullptr);
#else
int ret = avcodec_open(ctx, _videoCodec);
#endif
@@ -255,7 +254,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 +271,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);
@@ -294,7 +293,7 @@ VideoDecoderFfmpeg::frameToImage(AVCodecContext* srcCtx,
_swsContext.reset(new SwsContextWrapper(
sws_getContext(width, height, srcPixFmt, width, height,
- pixFmt, SWS_BILINEAR, NULL, NULL, NULL)
+ pixFmt, SWS_BILINEAR, nullptr, nullptr, nullptr)
));
// Check that the context was assigned.
@@ -358,15 +357,15 @@ VideoDecoderFfmpeg::frameToImage(AVCodecContext* srcCtx,
}
-std::auto_ptr<image::GnashImage>
-VideoDecoderFfmpeg::decode(const boost::uint8_t* input,
- boost::uint32_t input_size)
+std::unique_ptr<image::GnashImage>
+VideoDecoderFfmpeg::decode(const std::uint8_t* input,
+ std::uint32_t input_size)
{
// This object shouldn't exist if there's no codec, as it can'
// do anything anyway.
assert(_videoCodecCtx.get());
- std::auto_ptr<image::GnashImage> ret;
+ std::unique_ptr<image::GnashImage> ret;
AVFrame* frame = FRAMEALLOC();
if ( ! frame ) {
@@ -408,14 +407,13 @@ 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) {
- ret = decode((*it)->data(), (*it)->dataSize());
+ for (const EncodedVideoFrame* frame : _video_frames) {
+ ret = decode(frame->data(), frame->dataSize());
}
_video_frames.clear();
@@ -465,7 +463,7 @@ get_vaapi_context(AVCodecContext* avctx)
return static_cast<VaapiContextFfmpeg *>(avctx->hwaccel_context);
#else
UNUSED(avctx);
- return 0;
+ return nullptr;
#endif
}
@@ -502,7 +500,7 @@ reset_context(AVCodecContext* avctx, VaapiContextFfmpeg* vactx)
set_vaapi_context(avctx, vactx);
avctx->thread_count = 1;
- avctx->draw_horiz_band = 0;
+ avctx->draw_horiz_band = nullptr;
if (vactx) {
avctx->slice_flags = SLICE_FLAG_CODED_ORDER|SLICE_FLAG_ALLOW_FIELD;
}
diff --git a/libmedia/ffmpeg/VideoDecoderFfmpeg.h b/libmedia/ffmpeg/VideoDecoderFfmpeg.h
index d471a6d..5d05810 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::uint8_t* extradata=nullptr, int extradataSize=0);
- std::auto_ptr<image::GnashImage> decode(const boost::uint8_t* input,
- boost::uint32_t input_size);
+ std::unique_ptr<image::GnashImage> decode(const std::uint8_t* input,
+ std::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/ffmpeg/VideoDecoderFfmpegVaapi.cpp b/libmedia/ffmpeg/VideoDecoderFfmpegVaapi.cpp
index aac3626..95dea86 100644
--- a/libmedia/ffmpeg/VideoDecoderFfmpegVaapi.cpp
+++ b/libmedia/ffmpeg/VideoDecoderFfmpegVaapi.cpp
@@ -95,10 +95,9 @@ void vaapi_set_surface(AVFrame *pic, VaapiSurfaceFfmpeg *surface)
}
VaapiContextFfmpeg::VaapiContextFfmpeg(enum CODECID codec_id)
- : _context(new VaapiContext(get_profile(codec_id), VAEntrypointVLD))
+ : vaapi_context(), // FFmpeg's vaapi_context must be zero-initialized
+ _context(new VaapiContext(get_profile(codec_id), VAEntrypointVLD))
{
- // FFmpeg's vaapi_context must be zero-initialized
- memset(this, 0, sizeof(struct vaapi_context));
}
bool VaapiContextFfmpeg::initDecoder(unsigned int width, unsigned int height)
diff --git a/libmedia/ffmpeg/VideoDecoderFfmpegVaapi.h b/libmedia/ffmpeg/VideoDecoderFfmpegVaapi.h
index 25e8a95..c8bea64 100644
--- a/libmedia/ffmpeg/VideoDecoderFfmpegVaapi.h
+++ b/libmedia/ffmpeg/VideoDecoderFfmpegVaapi.h
@@ -44,8 +44,8 @@ class VaapiSurfaceFfmpeg : public VaapiSurfaceProxy {
unsigned int _pic_num;
public:
- VaapiSurfaceFfmpeg(boost::shared_ptr<VaapiSurface> surface,
- boost::shared_ptr<VaapiContext> context)
+ VaapiSurfaceFfmpeg(std::shared_ptr<VaapiSurface> surface,
+ std::shared_ptr<VaapiContext> context)
: VaapiSurfaceProxy(surface, context), _pic_num(0)
{ }
@@ -65,7 +65,7 @@ static inline VaapiSurfaceFfmpeg *vaapi_get_surface(const AVFrame *pic)
/// VA context implementation for FFmpeg
class VaapiContextFfmpeg : public vaapi_context {
- boost::shared_ptr<VaapiContext> _context;
+ std::shared_ptr<VaapiContext> _context;
public:
VaapiContextFfmpeg(enum CODECID codec_id);
diff --git a/libmedia/ffmpeg/VideoInputFfmpeg.h b/libmedia/ffmpeg/VideoInputFfmpeg.h
index 84b970a..a1c88fd 100644
--- a/libmedia/ffmpeg/VideoInputFfmpeg.h
+++ b/libmedia/ffmpeg/VideoInputFfmpeg.h
@@ -21,7 +21,7 @@
#define GNASH_VIDEOINPUTFFMPEG_H
#include <vector>
-#include <boost/cstdint.hpp> // for C99 int types
+#include <cstdint> // for C99 int types
#include <vector>
#include "VideoInput.h"
diff --git a/libmedia/gst/AudioDecoderGst.cpp b/libmedia/gst/AudioDecoderGst.cpp
index b930d08..ea275c9 100644
--- a/libmedia/gst/AudioDecoderGst.cpp
+++ b/libmedia/gst/AudioDecoderGst.cpp
@@ -32,7 +32,7 @@ namespace gst {
AudioDecoderGst::AudioDecoderGst(SoundInfo& info)
{
// init GStreamer. TODO: what about doing this in MediaHandlerGst ctor?
- gst_init (NULL, NULL);
+ gst_init (nullptr, nullptr);
GstCaps* srccaps = gst_caps_new_simple ("audio/mpeg",
"mpegversion", G_TYPE_INT, 1,
@@ -48,9 +48,9 @@ AudioDecoderGst::AudioDecoderGst(SoundInfo& info)
AudioDecoderGst::AudioDecoderGst(const AudioInfo& info)
{
// init GStreamer. TODO: what about doing this in MediaHandlerGst ctor?
- gst_init (NULL, NULL);
+ gst_init (nullptr, nullptr);
- GstCaps* srccaps=0;
+ GstCaps* srccaps=nullptr;
if (info.type == CODEC_TYPE_FLASH && info.codec == AUDIO_CODEC_MP3)
{
@@ -208,7 +208,7 @@ void AudioDecoderGst::setup(GstCaps* srccaps)
static void
buf_add(gpointer buf, gpointer data)
{
- boost::uint32_t* total = (boost::uint32_t*) data;
+ std::uint32_t* total = (std::uint32_t*) data;
GstBuffer* buffer = (GstBuffer*) buf;
*total += GST_BUFFER_SIZE(buffer);
@@ -216,8 +216,8 @@ buf_add(gpointer buf, gpointer data)
/* private */
-boost::uint8_t*
-AudioDecoderGst::pullBuffers(boost::uint32_t& outputSize)
+std::uint8_t*
+AudioDecoderGst::pullBuffers(std::uint32_t& outputSize)
{
outputSize = 0;
@@ -225,12 +225,12 @@ AudioDecoderGst::pullBuffers(boost::uint32_t& outputSize)
if (!outputSize) {
log_debug(_("Pushed data, but there's nothing to pull (yet)"));
- return 0;
+ return nullptr;
}
- boost::uint8_t* rbuf = new boost::uint8_t[outputSize];
+ std::uint8_t* rbuf = new std::uint8_t[outputSize];
- boost::uint8_t* ptr = rbuf;
+ std::uint8_t* ptr = rbuf;
while (true) {
@@ -248,10 +248,10 @@ AudioDecoderGst::pullBuffers(boost::uint32_t& outputSize)
return rbuf;
}
-boost::uint8_t*
-AudioDecoderGst::decode(const boost::uint8_t* input, boost::uint32_t inputSize,
- boost::uint32_t& outputSize,
- boost::uint32_t& decodedData)
+std::uint8_t*
+AudioDecoderGst::decode(const std::uint8_t* input, std::uint32_t inputSize,
+ std::uint32_t& outputSize,
+ std::uint32_t& decodedData)
{
outputSize = decodedData = 0;
@@ -261,7 +261,7 @@ AudioDecoderGst::decode(const boost::uint8_t* input, boost::uint32_t inputSize,
bool success = swfdec_gst_decoder_push(&_decoder, gstbuf);
if (!success) {
log_error(_("AudioDecoderGst: buffer push failed."));
- return 0;
+ return nullptr;
}
decodedData = inputSize;
@@ -269,8 +269,8 @@ AudioDecoderGst::decode(const boost::uint8_t* input, boost::uint32_t inputSize,
return pullBuffers(outputSize);
}
-boost::uint8_t*
-AudioDecoderGst::decode(const EncodedAudioFrame& ef, boost::uint32_t& outputSize)
+std::uint8_t*
+AudioDecoderGst::decode(const EncodedAudioFrame& ef, std::uint32_t& outputSize)
{
outputSize = 0;
@@ -289,7 +289,7 @@ AudioDecoderGst::decode(const EncodedAudioFrame& ef, boost::uint32_t& outputSize
bool success = swfdec_gst_decoder_push(&_decoder, gstbuf);
if (!success) {
log_error(_("AudioDecoderGst: buffer push failed."));
- return 0;
+ return nullptr;
}
return pullBuffers(outputSize);
diff --git a/libmedia/gst/AudioDecoderGst.h b/libmedia/gst/AudioDecoderGst.h
index f527611..4ff299c 100644
--- a/libmedia/gst/AudioDecoderGst.h
+++ b/libmedia/gst/AudioDecoderGst.h
@@ -49,13 +49,13 @@ public:
~AudioDecoderGst();
- boost::uint8_t* decode(const boost::uint8_t* input, boost::uint32_t inputSize,
- boost::uint32_t& outputSize, boost::uint32_t& decodedData);
- boost::uint8_t* decode(const EncodedAudioFrame& ef, boost::uint32_t& outputSize);
+ std::uint8_t* decode(const std::uint8_t* input, std::uint32_t inputSize,
+ std::uint32_t& outputSize, std::uint32_t& decodedData);
+ std::uint8_t* decode(const EncodedAudioFrame& ef, std::uint32_t& outputSize);
private:
- boost::uint8_t* pullBuffers(boost::uint32_t& outputSize);
+ std::uint8_t* pullBuffers(std::uint32_t& outputSize);
void setup(GstCaps* caps);
diff --git a/libmedia/gst/AudioInputGst.cpp b/libmedia/gst/AudioInputGst.cpp
index 7f8887b..0f5217e 100644
--- a/libmedia/gst/AudioInputGst.cpp
+++ b/libmedia/gst/AudioInputGst.cpp
@@ -42,24 +42,24 @@ namespace media {
namespace gst {
GnashAudio::GnashAudio() {
- _element = NULL;
- _devLocation = NULL;
- _gstreamerSrc = NULL;
- _productName = NULL;
+ _element = nullptr;
+ _devLocation = nullptr;
+ _gstreamerSrc = nullptr;
+ _productName = nullptr;
}
GnashAudioPrivate::GnashAudioPrivate() {
- audioSource = NULL;
- audioEnc = NULL;
- _audioDevice = NULL;
- _deviceName = NULL;
- _pipeline = NULL;
- _audioMainBin = NULL;
- _audioPlaybackBin = NULL;
- _audioSourceBin = NULL;
- _audioSaveBin = NULL;
+ audioSource = nullptr;
+ audioEnc = nullptr;
+ _audioDevice = nullptr;
+ _deviceName = nullptr;
+ _pipeline = nullptr;
+ _audioMainBin = nullptr;
+ _audioPlaybackBin = nullptr;
+ _audioSourceBin = nullptr;
+ _audioSaveBin = nullptr;
_pipelineIsPlaying = false;
- _mux = NULL;
+ _mux = nullptr;
}
AudioInputGst::AudioInputGst()
@@ -73,7 +73,7 @@ AudioInputGst::AudioInputGst()
_silenceTimeout(2000),
_useEchoSuppression(false)
{
- gst_init(NULL,NULL);
+ gst_init(nullptr,nullptr);
findAudioDevs();
@@ -98,7 +98,7 @@ AudioInputGst::findAudioDevs()
GstElement *element;
element = gst_element_factory_make ("audiotestsrc", "audtestsrc");
- if (element == NULL) {
+ if (element == nullptr) {
log_error(_("%s: Could not create audio test source"), __FUNCTION__);
return;
} else {
@@ -112,7 +112,7 @@ AudioInputGst::findAudioDevs()
//detect pulse audio sources
GstPropertyProbe *probe;
GValueArray *devarr;
- element = NULL;
+ element = nullptr;
element = gst_element_factory_make ("pulsesrc", "pulsesrc");
if ( ! element ) {
@@ -126,9 +126,9 @@ AudioInputGst::findAudioDevs()
return;
}
devarr = gst_property_probe_probe_and_get_values_name (probe, "device");
- for (size_t i = 0; devarr != NULL && i < devarr->n_values; ++i) {
+ for (size_t i = 0; devarr != nullptr && i < devarr->n_values; ++i) {
GValue *val;
- gchar *dev_name = NULL;
+ gchar *dev_name = nullptr;
val = g_value_array_get_nth (devarr, i);
g_object_set (element, "device", g_value_get_string (val), NULL);
@@ -136,7 +136,7 @@ AudioInputGst::findAudioDevs()
g_object_get (element, "device-name", &dev_name, NULL);
gst_element_set_state (element, GST_STATE_NULL);
if ((strcmp(dev_name, "null") == 0) ||
- (std::strstr(dev_name, "Monitor") != NULL)) {
+ (std::strstr(dev_name, "Monitor") != nullptr)) {
log_debug("No pulse audio input devices.");
}
else {
@@ -195,7 +195,7 @@ AudioInputGst::getSelectedCaps(int devselect)
GstElement *pipeline;
gchar *command;
- GError *error = NULL;
+ GError *error = nullptr;
GstStateChangeReturn return_val;
GstBus *bus;
GstMessage *message;
@@ -206,11 +206,11 @@ AudioInputGst::getSelectedCaps(int devselect)
command = g_strdup_printf ("%s name=src device=%s ! fakesink",
data_struct->getGstreamerSrc(), data_struct->getDevLocation());
pipeline = gst_parse_launch(command, &error);
- if ((pipeline != NULL) && (error == NULL)) {
+ if ((pipeline != nullptr) && (error == nullptr)) {
//Wait at most 5 seconds for the pipeline to start playing
gst_element_set_state (pipeline, GST_STATE_PLAYING);
return_val =
- gst_element_get_state (pipeline, NULL, NULL, 5 * GST_SECOND);
+ gst_element_get_state (pipeline, nullptr, nullptr, 5 * GST_SECOND);
//errors on bus?
bus = gst_element_get_bus (pipeline);
@@ -223,7 +223,7 @@ AudioInputGst::getSelectedCaps(int devselect)
__FUNCTION__);
}
//if everything above worked properly, begin probing for values
- if ((return_val == GST_STATE_CHANGE_SUCCESS) && (message == NULL)) {
+ if ((return_val == GST_STATE_CHANGE_SUCCESS) && (message == nullptr)) {
GstElement *src;
GstPad *pad;
GstCaps *caps;
@@ -273,7 +273,7 @@ AudioInputGst::transferToPrivate(int devselect) {
exit (EXIT_FAILURE);
}
GnashAudioPrivate *audio = new GnashAudioPrivate;
- if (audio != NULL) {
+ if (audio != nullptr) {
audio->setAudioDevice(_audioVect[devselect]);
audio->setDeviceName(_audioVect[devselect]->getProductName());
_globalAudio = audio;
@@ -286,8 +286,8 @@ AudioInputGst::transferToPrivate(int devselect) {
gboolean
AudioInputGst::audioChangeSourceBin(GnashAudioPrivate *audio)
{
- GError *error = NULL;
- gchar *command = NULL;
+ GError *error = nullptr;
+ gchar *command = nullptr;
if (audio->_pipelineIsPlaying == true) {
audioStop(audio);
@@ -295,10 +295,10 @@ AudioInputGst::audioChangeSourceBin(GnashAudioPrivate *audio)
//delete the old source bin if necessary (please don't delete the == NULL
//here as it breaks things.)
- if (!(GST_ELEMENT_PARENT(audio->_audioSourceBin) == NULL)) {
+ if (!(GST_ELEMENT_PARENT(audio->_audioSourceBin) == nullptr)) {
gst_bin_remove(GST_BIN(audio->_audioMainBin),
audio->_audioSourceBin);
- audio->_audioSourceBin = NULL;
+ audio->_audioSourceBin = nullptr;
}
if (strcmp(audio->_deviceName, "audiotest") == 0) {
@@ -322,7 +322,7 @@ AudioInputGst::audioChangeSourceBin(GnashAudioPrivate *audio)
audio->_audioSourceBin = gst_parse_bin_from_description(command, TRUE,
&error);
- if (audio->_audioSourceBin == NULL) {
+ if (audio->_audioSourceBin == nullptr) {
log_error(_("%s: Creation of the audioSourceBin failed"),
__FUNCTION__);
log_error(_("the error was %s"), error->message);
@@ -356,8 +356,8 @@ AudioInputGst::audioChangeSourceBin(GnashAudioPrivate *audio)
gboolean
AudioInputGst::audioCreateSourceBin(GnashAudioPrivate *audio)
{
- GError *error = NULL;
- gchar *command = NULL;
+ GError *error = nullptr;
+ gchar *command = nullptr;
if(strcmp(audio->_deviceName, "audiotest") == 0) {
log_debug("%s: You don't have any mics chosen, using audiotestsrc",
__FUNCTION__);
@@ -378,7 +378,7 @@ AudioInputGst::audioCreateSourceBin(GnashAudioPrivate *audio)
audio->_audioSourceBin = gst_parse_bin_from_description(command, TRUE,
&error);
- if (audio->_audioSourceBin == NULL) {
+ if (audio->_audioSourceBin == nullptr) {
log_error(_("%s: Creation of the audioSourceBin failed"),
__FUNCTION__);
log_error(_("the error was %s"), error->message);
@@ -408,16 +408,16 @@ AudioInputGst::audioCreateMainBin(GnashAudioPrivate *audio)
log_error(_("%s: audioCreateSourceBin failed!"), __FUNCTION__);
return false;
}
- if ((tee = gst_element_factory_make ("tee", "tee")) == NULL) {
+ if ((tee = gst_element_factory_make ("tee", "tee")) == nullptr) {
log_error(_("%s: problem creating tee element"), __FUNCTION__);
return false;
}
- if ((saveQueue = gst_element_factory_make("queue", "saveQueue")) == NULL) {
+ if ((saveQueue = gst_element_factory_make("queue", "saveQueue")) == nullptr) {
log_error(_("%s: problem creating save_queue element"), __FUNCTION__);
return false;
}
if ((audioPlaybackQueue =
- gst_element_factory_make("queue", "audioPlaybackQueue")) == NULL) {
+ gst_element_factory_make("queue", "audioPlaybackQueue")) == nullptr) {
log_error(_("%s: problem creating audioPlaybackQueue element"), __FUNCTION__);
return false;
}
@@ -443,7 +443,7 @@ AudioInputGst::audioCreateMainBin(GnashAudioPrivate *audio)
//add ghostpad to saveQueue (allows connections between bins)
pad = gst_element_get_pad (saveQueue, "src");
- if (pad == NULL) {
+ if (pad == nullptr) {
log_error(_("%s: couldn't get saveQueueSrcPad"), __FUNCTION__);
return false;
}
@@ -453,7 +453,7 @@ AudioInputGst::audioCreateMainBin(GnashAudioPrivate *audio)
//add ghostpad to video_display_queue
pad = gst_element_get_pad (audioPlaybackQueue, "src");
- if (pad == NULL) {
+ if (pad == nullptr) {
log_error(_("%s: couldn't get audioPlaybackQueue"), __FUNCTION__);
return false;
}
@@ -479,7 +479,7 @@ AudioInputGst::audioCreatePlaybackBin(GnashAudioPrivate *audio)
audio->_audioPlaybackBin = gst_bin_new("playbackBin");
- if ((autosink = gst_element_factory_make ("autoaudiosink", "audiosink")) == NULL) {
+ if ((autosink = gst_element_factory_make ("autoaudiosink", "audiosink")) == nullptr) {
log_error(_("%s: There was a problem making the audiosink!"), __FUNCTION__);
return false;
}
@@ -498,7 +498,7 @@ AudioInputGst::audioCreatePlaybackBin(GnashAudioPrivate *audio)
gboolean
AudioInputGst::makeAudioSourcePlaybackLink(GnashAudioPrivate *audio)
{
- if (gst_bin_get_by_name(GST_BIN(audio->_pipeline), "playbackBin") == NULL) {
+ if (gst_bin_get_by_name(GST_BIN(audio->_pipeline), "playbackBin") == nullptr) {
gst_object_ref(audio->_audioPlaybackBin);
gst_bin_add(GST_BIN(audio->_pipeline), audio->_audioPlaybackBin);
}
@@ -597,19 +597,19 @@ AudioInputGst::audioCreateSaveBin(GnashAudioPrivate* audio)
audio->_audioSaveBin = gst_bin_new ("audioSaveBin");
- if ((audioConvert = gst_element_factory_make("audioconvert", "audio_convert")) == NULL) {
+ if ((audioConvert = gst_element_factory_make("audioconvert", "audio_convert")) == nullptr) {
log_error(_("%s: Couldn't make audioconvert element"), __FUNCTION__);
return false;
}
- if ((audioEnc = gst_element_factory_make("vorbisenc", "audio_enc")) == NULL){
+ if ((audioEnc = gst_element_factory_make("vorbisenc", "audio_enc")) == nullptr){
log_error(_("%s: Couldn't make vorbisenc element"), __FUNCTION__);
return false;
}
- if ((audio->_mux = gst_element_factory_make("oggmux", "mux")) == NULL) {
+ if ((audio->_mux = gst_element_factory_make("oggmux", "mux")) == nullptr) {
log_error(_("%s: Couldn't make oggmux element"), __FUNCTION__);
return false;
}
- if ((filesink = gst_element_factory_make("filesink", "filesink")) == NULL) {
+ if ((filesink = gst_element_factory_make("filesink", "filesink")) == nullptr) {
log_error(_("%s: Couldn't make filesink element"), __FUNCTION__);
return false;
} else {
@@ -639,7 +639,7 @@ AudioInputGst::audioCreateSaveBin(GnashAudioPrivate* audio)
gboolean
AudioInputGst::makeAudioSourceSaveLink (GnashAudioPrivate* audio)
{
- if (gst_bin_get_by_name(GST_BIN(audio->_pipeline), "audioSaveBin") == NULL) {
+ if (gst_bin_get_by_name(GST_BIN(audio->_pipeline), "audioSaveBin") == nullptr) {
gst_object_ref(audio->_audioSaveBin);
gst_bin_add(GST_BIN(audio->_pipeline), audio->_audioSaveBin);
}
diff --git a/libmedia/gst/AudioInputGst.h b/libmedia/gst/AudioInputGst.h
index e7fb608..784fb1c 100644
--- a/libmedia/gst/AudioInputGst.h
+++ b/libmedia/gst/AudioInputGst.h
@@ -23,7 +23,7 @@
#include "gst/gst.h"
#include "AudioInput.h"
#include <string>
-#include <boost/cstdint.hpp> // for C99 int types
+#include <cstdint> // for C99 int types
#include <vector>
#include <cassert>
diff --git a/libmedia/gst/GstUtil.cpp b/libmedia/gst/GstUtil.cpp
index 8fced8a..580bc11 100644
--- a/libmedia/gst/GstUtil.cpp
+++ b/libmedia/gst/GstUtil.cpp
@@ -58,8 +58,8 @@ GstElement* GstUtil::get_audiosink_element()
if(sAudioSink.find('!') != std::string::npos) //Found a non-trivial pipeline - bin it
{
- element = gst_parse_bin_from_description(sAudioSink.c_str(), true, NULL);
- if(element != NULL)
+ element = gst_parse_bin_from_description(sAudioSink.c_str(), true, nullptr);
+ if(element != nullptr)
{
std::ostringstream o;
o << numGnashRcSinks++;
@@ -68,20 +68,20 @@ GstElement* GstUtil::get_audiosink_element()
}
else //Found a trivial pipeline that doesn't need a bin
{
- element = gst_element_factory_make(sAudioSink.c_str(), NULL);
+ element = gst_element_factory_make(sAudioSink.c_str(), nullptr);
}
if(!element)
{
log_debug(_("Unable to retrieve a valid audio sink from ~/.gnashrc"));
- element = gst_element_factory_make("autoaudiosink", NULL);
+ element = gst_element_factory_make("autoaudiosink", nullptr);
if(!element)
{
log_debug(_("Unable to retrieve a valid audio sink from autoaudiosink"));
- element = gst_element_factory_make("gconfaudiosink", NULL);
+ element = gst_element_factory_make("gconfaudiosink", nullptr);
if(!element)
log_error(_("Unable to retrieve a valid audio sink from gconfaudiosink\n%s"),
@@ -124,9 +124,9 @@ GstUtil::check_missing_plugins(GstCaps* caps)
return false;
}
- char* details[] = { detail, 0 };
+ char* details[] = { detail, nullptr };
- GstInstallPluginsReturn ret = gst_install_plugins_sync(details, NULL);
+ GstInstallPluginsReturn ret = gst_install_plugins_sync(details, nullptr);
g_free(details[0]);
// FIXME: what about partial success?
diff --git a/libmedia/gst/MediaHandlerGst.cpp b/libmedia/gst/MediaHandlerGst.cpp
index 3c888bb..21613eb 100644
--- a/libmedia/gst/MediaHandlerGst.cpp
+++ b/libmedia/gst/MediaHandlerGst.cpp
@@ -29,6 +29,7 @@
#include "AudioInputGst.h"
#include "FLVParser.h"
#include "MediaParser.h"
+#include "GnashFactory.h"
#ifdef DECODING_SPEEX
#include "AudioDecoderSpeex.h"
@@ -53,20 +54,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 +80,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,16 +89,16 @@ 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);
int width = info.width;
int height = info.height;
- boost::uint8_t* extradata = 0;
+ std::uint8_t* extradata = nullptr;
size_t datasize = 0;
ExtraVideoInfoFlv* extrainfo = dynamic_cast<ExtraVideoInfoFlv*>(info.extra.get());
@@ -106,14 +107,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 +146,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
{
@@ -185,12 +186,6 @@ MediaHandlerGst::cameraNames(std::vector<std::string>& names) const
VideoInputGst::getNames(names);
}
-#ifdef REGISTER_MEDIA_HANDLERS
-namespace {
- MediaFactory::RegisterHandler<MediaHandlerGst> reg("gst");
-}
-#endif
-
} // gnash.media.gst namespace
} // gnash.media namespace
} // gnash namespace
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..cce8f51 100644
--- a/libmedia/gst/MediaParserGst.cpp
+++ b/libmedia/gst/MediaParserGst.cpp
@@ -28,6 +28,7 @@
#include "swfdec_codec_gst.h"
#include <iostream>
#include <fstream>
+#include <mutex>
#define PUSHBUF_SIZE 1024
@@ -38,22 +39,22 @@ namespace media {
namespace gst {
-MediaParserGst::MediaParserGst(std::auto_ptr<IOChannel> stream)
- : MediaParser(stream),
- _bin(NULL),
- _srcpad(NULL),
- _audiosink(NULL),
- _videosink(NULL),
+MediaParserGst::MediaParserGst(std::unique_ptr<IOChannel> stream)
+ : MediaParser(std::move(stream)),
+ _bin(nullptr),
+ _srcpad(nullptr),
+ _audiosink(nullptr),
+ _videosink(nullptr),
_demux_probe_ended(false)
{
- gst_init (NULL, NULL);
+ gst_init (nullptr, nullptr);
_bin = gst_bin_new ("NULL");
if (!_bin) {
throw GnashException(_("MediaParserGst couldn't create a bin"));
}
- GstElement* typefind = gst_element_factory_make("typefind", NULL);
+ GstElement* typefind = gst_element_factory_make("typefind", nullptr);
if (!typefind) {
throw GnashException(_("MediaParserGst couldn't create a typefind element."));
}
@@ -105,7 +106,7 @@ MediaParserGst::~MediaParserGst()
}
bool
-MediaParserGst::seek(boost::uint32_t& milliseconds)
+MediaParserGst::seek(std::uint32_t& milliseconds)
{
return gst_element_seek_simple(_bin, GST_FORMAT_TIME,
GstSeekFlags(GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_KEY_UNIT),
@@ -121,7 +122,7 @@ MediaParserGst::getId3Info() const
bool
MediaParserGst::parseNextChunk()
{
- boost::mutex::scoped_lock streamLock(_streamMutex);
+ std::lock_guard<std::mutex> streamLock(_streamMutex);
if (emitEncodedFrames()) {
return true;
@@ -137,10 +138,7 @@ MediaParserGst::parseNextChunk()
pushGstBuffer();
- {
- boost::mutex::scoped_lock lock(_bytesLoadedMutex);
- _bytesLoaded = _stream->tell();
- }
+ _bytesLoaded = _stream->tell();
emitEncodedFrames();
@@ -148,11 +146,10 @@ MediaParserGst::parseNextChunk()
}
-boost::uint64_t
+std::uint64_t
MediaParserGst::getBytesLoaded() const
{
- boost::mutex::scoped_lock lock(_bytesLoadedMutex);
- return _bytesLoaded;
+ return _bytesLoaded.load();
}
bool
@@ -197,13 +194,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();
}
@@ -251,7 +248,7 @@ print_caps(GstCaps* caps)
void
MediaParserGst::link_to_fakesink(GstPad* pad)
{
- GstElement* fakesink = gst_element_factory_make("fakesink", NULL);
+ GstElement* fakesink = gst_element_factory_make("fakesink", nullptr);
if (!fakesink) {
throw MediaException(_("MediaParserGst Failed to create fakesink."));
@@ -380,7 +377,7 @@ void MediaParserGst::cb_pad_added(GstElement* /* element */, GstPad* new_pad,
bool already_parsed = parsed || framed;
- GstPad* final_pad = 0;
+ GstPad* final_pad = nullptr;
if (already_parsed) {
final_pad = new_pad;
@@ -396,7 +393,7 @@ void MediaParserGst::cb_pad_added(GstElement* /* element */, GstPad* new_pad,
return;
}
- GstElement* parserel = gst_element_factory_create (parserfactory, NULL);
+ GstElement* parserel = gst_element_factory_create (parserfactory, nullptr);
gst_object_unref (parserfactory);
if (!parserel) {
log_error(_("MediaParserGst: Failed to find a parser. We'll continue, "
@@ -523,7 +520,7 @@ MediaParserGst::cb_chain_func_video (GstPad *pad, GstBuffer *buffer)
frame_num = GST_BUFFER_OFFSET(buffer);
}
- EncodedVideoFrame* frame = new EncodedVideoFrame(NULL, GST_BUFFER_SIZE(buffer), frame_num, timestamp);
+ EncodedVideoFrame* frame = new EncodedVideoFrame(nullptr, GST_BUFFER_SIZE(buffer), frame_num, timestamp);
frame->extradata.reset(new EncodedExtraGstData(buffer));
diff --git a/libmedia/gst/MediaParserGst.h b/libmedia/gst/MediaParserGst.h
index a6e47d5..4c08419 100644
--- a/libmedia/gst/MediaParserGst.h
+++ b/libmedia/gst/MediaParserGst.h
@@ -21,11 +21,11 @@
#define GNASH_MEDIAPARSER_GST_H
#include <deque>
-#include <boost/scoped_array.hpp>
#include <memory>
#include <queue>
#include <gst/gst.h>
#include <boost/optional.hpp>
+#include <boost/utility.hpp> // noncopyable
#include "MediaParser.h" // for inheritance
#include "ClockTime.h"
@@ -95,7 +95,7 @@ public:
}
private:
- boost::uint64_t _start_time;
+ std::uint64_t _start_time;
};
@@ -109,18 +109,18 @@ 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();
// See dox in MediaParser.h
- bool seek(boost::uint32_t&);
+ bool seek(std::uint32_t&);
// See dox in MediaParser.h
bool parseNextChunk();
// See dox in MediaParser.h
- virtual boost::uint64_t getBytesLoaded() const;
+ virtual std::uint64_t getBytesLoaded() const;
virtual boost::optional<Id3Info> getId3Info() const;
diff --git a/libmedia/gst/VideoConverterGst.cpp b/libmedia/gst/VideoConverterGst.cpp
index d165b13..7778b4c 100644
--- a/libmedia/gst/VideoConverterGst.cpp
+++ b/libmedia/gst/VideoConverterGst.cpp
@@ -30,9 +30,9 @@ namespace gst {
VideoConverterGst::VideoConverterGst(ImgBuf::Type4CC srcFormat, ImgBuf::Type4CC dstFormat)
: VideoConverter(srcFormat, dstFormat)
{
- _decoder.bin = 0;
+ _decoder.bin = nullptr;
- gst_init (NULL, NULL);
+ gst_init (nullptr, nullptr);
GstElementFactory* colorspacefactory = gst_element_factory_find ("ffmpegcolorspace");
if (!colorspacefactory) {
@@ -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;
@@ -133,7 +133,7 @@ VideoConverterGst::convert(const ImgBuf& src)
GstBuffer* buffer = gst_buffer_new();
- GST_BUFFER_DATA(buffer) = const_cast<boost::uint8_t*>(src.data);
+ GST_BUFFER_DATA(buffer) = const_cast<std::uint8_t*>(src.data);
GST_BUFFER_SIZE(buffer) = src.size;
GST_BUFFER_FLAG_SET(buffer, GST_BUFFER_FLAG_READONLY);
@@ -153,7 +153,7 @@ VideoConverterGst::convert(const ImgBuf& src)
ret.reset(new ImgBuf(_dst_fmt, GST_BUFFER_DATA(retbuffer),
GST_BUFFER_SIZE(retbuffer), src.width, src.height));
- GST_BUFFER_MALLOCDATA(retbuffer) = 0; // don't free
+ GST_BUFFER_MALLOCDATA(retbuffer) = nullptr; // don't free
gst_buffer_unref(retbuffer);
ret->dealloc = g_free;
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..27d6a59 100644
--- a/libmedia/gst/VideoDecoderGst.cpp
+++ b/libmedia/gst/VideoDecoderGst.cpp
@@ -33,7 +33,7 @@ VideoDecoderGst::VideoDecoderGst(GstCaps* caps)
_height(0)
{
// init GStreamer. TODO: what about doing this in MediaHandlerGst ctor?
- gst_init (NULL, NULL);
+ gst_init (nullptr, nullptr);
setup(caps);
}
@@ -53,20 +53,20 @@ VideoDecoderGst::height() const
// TODO: either use width and height or remove them!
VideoDecoderGst::VideoDecoderGst(videoCodecType codec_type,
int /*width*/, int /*height*/,
- const boost::uint8_t* extradata, size_t extradatasize)
+ const std::uint8_t* extradata, size_t extradatasize)
:
_width(0),
_height(0)
{
// init GStreamer. TODO: what about doing this in MediaHandlerGst ctor?
- gst_init (NULL, NULL);
+ gst_init (nullptr, nullptr);
GstCaps* caps;
switch (codec_type) {
case VIDEO_CODEC_H264:
{
caps = gst_caps_new_simple ("video/x-h264",
- NULL);
+ nullptr);
if (extradata && extradatasize) {
@@ -78,20 +78,20 @@ VideoDecoderGst::VideoDecoderGst(videoCodecType codec_type,
}
case VIDEO_CODEC_H263:
caps = gst_caps_new_simple ("video/x-flash-video",
- NULL);
+ nullptr);
break;
case VIDEO_CODEC_VP6:
caps = gst_caps_new_simple ("video/x-vp6-flash",
- NULL);
+ nullptr);
break;
case VIDEO_CODEC_VP6A:
caps = gst_caps_new_simple ("video/x-vp6-alpha",
- NULL);
+ nullptr);
break;
case VIDEO_CODEC_SCREENVIDEO:
case VIDEO_CODEC_SCREENVIDEO2:
caps = gst_caps_new_simple ("video/x-flash-screen",
- NULL);
+ nullptr);
break;
case NO_VIDEO_CODEC:
throw MediaException(_("Video codec is zero. Streaming video expected later."));
@@ -177,7 +177,7 @@ VideoDecoderGst::push(const EncodedVideoFrame& frame)
} else {
buffer = gst_buffer_new();
- GST_BUFFER_DATA(buffer) = const_cast<boost::uint8_t*>(frame.data());
+ GST_BUFFER_DATA(buffer) = const_cast<std::uint8_t*>(frame.data());
GST_BUFFER_SIZE(buffer) = frame.dataSize();
GST_BUFFER_OFFSET(buffer) = frame.frameNum();
GST_BUFFER_TIMESTAMP(buffer) = GST_CLOCK_TIME_NONE;
@@ -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..193a309 100644
--- a/libmedia/gst/VideoDecoderGst.h
+++ b/libmedia/gst/VideoDecoderGst.h
@@ -36,12 +36,12 @@ 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:
gnashGstBuffer(GstBuffer* buf, int width, int height)
- : image::ImageRGB(NULL, width, height),
+ : image::ImageRGB(nullptr, width, height),
_buffer(buf)
{}
@@ -74,13 +74,13 @@ class DSOEXPORT VideoDecoderGst : public VideoDecoder
{
public:
VideoDecoderGst(videoCodecType codec_type, int width, int height,
- const boost::uint8_t* extradata, size_t extradatasize);
+ const std::uint8_t* extradata, size_t extradatasize);
VideoDecoderGst(GstCaps* caps);
~VideoDecoderGst();
void push(const EncodedVideoFrame& buffer);
- std::auto_ptr<image::GnashImage> pop();
+ std::unique_ptr<image::GnashImage> pop();
bool peek();
diff --git a/libmedia/gst/VideoInputGst.cpp b/libmedia/gst/VideoInputGst.cpp
index 113d92a..86bbf49 100644
--- a/libmedia/gst/VideoInputGst.cpp
+++ b/libmedia/gst/VideoInputGst.cpp
@@ -277,14 +277,13 @@ void
VideoInputGst::getNames(std::vector<std::string>& names)
{
// Make sure gst is initialized
- gst_init(NULL, NULL);
+ gst_init(nullptr, nullptr);
std::vector<GnashWebcam*> cams;
// Check for devices
findVidDevs(cams);
- for (size_t i = 0; i < cams.size(); ++i) {
- GnashWebcam* cam = cams[i];
+ for (GnashWebcam* cam : cams) {
if (cam) names.push_back(cam->getProductName());
}
}
@@ -305,7 +304,7 @@ VideoInputGst::VideoInputGst()
_muted(true),
_quality(0)
{
- gst_init(NULL,NULL);
+ gst_init(nullptr,nullptr);
// TODO: there is really no need to store all the cameras, as a
// VideoInput class should correspond to one camera.
@@ -365,7 +364,7 @@ VideoInputGst::findVidDevs(std::vector<GnashWebcam*>& cameraList)
GstElement *element;
element = gst_element_factory_make ("videotestsrc", "vidtestsrc");
- if (element == NULL) {
+ if (element == nullptr) {
log_error(_("%s: Could not create video test source."), __FUNCTION__);
return;
} else {
@@ -380,7 +379,7 @@ VideoInputGst::findVidDevs(std::vector<GnashWebcam*>& cameraList)
//find v4l devices
GstPropertyProbe *probe;
GValueArray *devarr;
- element = NULL;
+ element = nullptr;
element = gst_element_factory_make ("v4lsrc", "v4lvidsrc");
if ( ! element ) {
@@ -394,9 +393,9 @@ VideoInputGst::findVidDevs(std::vector<GnashWebcam*>& cameraList)
return;
}
devarr = gst_property_probe_probe_and_get_values_name (probe, "device");
- for (size_t i = 0; devarr != NULL && i < devarr->n_values; ++i) {
+ for (size_t i = 0; devarr != nullptr && i < devarr->n_values; ++i) {
GValue *val;
- gchar *dev_name = NULL;
+ gchar *dev_name = nullptr;
val = g_value_array_get_nth (devarr, i);
g_object_set (element, "device", g_value_get_string (val), NULL);
@@ -425,16 +424,16 @@ VideoInputGst::findVidDevs(std::vector<GnashWebcam*>& cameraList)
}
//find v4l2 devices
- probe = NULL;
- devarr = NULL;
- element = NULL;
+ probe = nullptr;
+ devarr = nullptr;
+ element = nullptr;
element = gst_element_factory_make ("v4l2src", "v4l2vidsrc");
probe = GST_PROPERTY_PROBE (element);
devarr = gst_property_probe_probe_and_get_values_name (probe, "device");
- for (size_t i = 0; devarr != NULL && i < devarr->n_values; ++i) {
+ for (size_t i = 0; devarr != nullptr && i < devarr->n_values; ++i) {
GValue *val;
- gchar *dev_name = NULL;
+ gchar *dev_name = nullptr;
val = g_value_array_get_nth (devarr, i);
g_object_set (element, "device", g_value_get_string (val), NULL);
@@ -645,7 +644,7 @@ VideoInputGst::getSelectedCaps(gint dev_select)
{
GstElement *pipeline;
gchar *command;
- GError *error = NULL;
+ GError *error = nullptr;
GstStateChangeReturn return_val;
GstBus *bus;
GstMessage *message;
@@ -669,11 +668,11 @@ VideoInputGst::getSelectedCaps(gint dev_select)
data_struct->getGstreamerSrc(), data_struct->getDevLocation());
}
pipeline = gst_parse_launch(command, &error);
- if ((pipeline != NULL) && (error == NULL)) {
+ if ((pipeline != nullptr) && (error == nullptr)) {
//Wait at most 5 seconds for the pipeline to start playing
gst_element_set_state (pipeline, GST_STATE_PLAYING);
return_val =
- gst_element_get_state (pipeline, NULL, NULL, 5 * GST_SECOND);
+ gst_element_get_state (pipeline, nullptr, nullptr, 5 * GST_SECOND);
//errors on bus?
bus = gst_element_get_bus (pipeline);
@@ -687,7 +686,7 @@ VideoInputGst::getSelectedCaps(gint dev_select)
}
//if everything above worked properly, begin probing for values
- if ((return_val == GST_STATE_CHANGE_SUCCESS) && (message == NULL)) {
+ if ((return_val == GST_STATE_CHANGE_SUCCESS) && (message == nullptr)) {
GstElement *src;
GstPad *pad;
GstCaps *caps;
@@ -831,12 +830,12 @@ VideoInputGst::setWebcam(size_t dev_select)
gboolean
VideoInputGst::webcamCreateSourceBin()
{
- GError *error = NULL;
- gchar *command = NULL;
+ GError *error = nullptr;
+ gchar *command = nullptr;
GnashWebcamPrivate* webcam = _globalWebcam;
- if(webcam->_webcamDevice == NULL) {
+ if(webcam->_webcamDevice == nullptr) {
log_debug("%s: You don't have any webcams chosen, using videotestsrc",
__FUNCTION__);
webcam->_webcamSourceBin = gst_parse_bin_from_description (
@@ -846,7 +845,7 @@ VideoInputGst::webcamCreateSourceBin()
capsfilter name=capsfilter");
}
else {
- WebcamVidFormat *format = NULL;
+ WebcamVidFormat *format = nullptr;
std::ostringstream ss;
ss << _width << 'x' << _height;
@@ -883,10 +882,10 @@ VideoInputGst::webcamCreateSourceBin()
//if format isn't set, something is still going wrong, make generic
//components and see if they work!
- if (format == NULL) {
- if (error != NULL) {
+ if (format == nullptr) {
+ if (error != nullptr) {
g_error_free (error);
- error = NULL;
+ error = nullptr;
}
webcam->_webcamSourceBin =
gst_parse_bin_from_description ("videotestsrc name=video_source",
@@ -896,7 +895,7 @@ VideoInputGst::webcamCreateSourceBin()
"video_source");
//if there are still errors, something's up, return out of function
- if (error != NULL) {
+ if (error != nullptr) {
g_error_free (error);
return false;
}
@@ -927,7 +926,7 @@ VideoInputGst::webcamCreateSourceBin()
webcam->_webcamSourceBin =
gst_parse_bin_from_description (command, TRUE, &error);
- if (webcam->_webcamSourceBin == NULL) {
+ if (webcam->_webcamSourceBin == nullptr) {
log_error(_("%s: Creation of the webcam_source_bin failed"),
__FUNCTION__);
log_error(_("the error was %s"), error->message);
@@ -974,8 +973,8 @@ VideoInputGst::checkForSupportedFramerate(GnashWebcamPrivate *webcam,
gboolean
VideoInputGst::webcamChangeSourceBin()
{
- GError *error = NULL;
- gchar *command = NULL;
+ GError *error = nullptr;
+ gchar *command = nullptr;
assert(_globalWebcam);
@@ -986,11 +985,11 @@ VideoInputGst::webcamChangeSourceBin()
//delete the old source bin
gst_bin_remove(GST_BIN(_globalWebcam->_webcamMainBin),
_globalWebcam->_webcamSourceBin);
- _globalWebcam->_webcamSourceBin = NULL;
+ _globalWebcam->_webcamSourceBin = nullptr;
GnashWebcamPrivate* webcam = _globalWebcam;
- if(webcam->_webcamDevice == NULL) {
+ if(webcam->_webcamDevice == nullptr) {
log_debug("%s: You don't have any webcams chosen, using videotestsrc",
__FUNCTION__);
webcam->_webcamSourceBin = gst_parse_bin_from_description (
@@ -1000,7 +999,7 @@ VideoInputGst::webcamChangeSourceBin()
capsfilter name=capsfilter");
}
else {
- WebcamVidFormat *format = NULL;
+ WebcamVidFormat *format = nullptr;
std::ostringstream ss;
ss << _width << 'x' << _height;
@@ -1037,7 +1036,7 @@ VideoInputGst::webcamChangeSourceBin()
//check here to make sure the fps value is supported (only valid for
//non test sources)
- if (! strcmp(webcam->_webcamDevice->getGstreamerSrc(), "videotestsrc") == 0) {
+ if (strcmp(webcam->_webcamDevice->getGstreamerSrc(), "videotestsrc") == 0) {
int newFps = _fps;
if (checkForSupportedFramerate(webcam, newFps)) {
log_debug("checkforsupportedfr returned true");
@@ -1056,10 +1055,10 @@ VideoInputGst::webcamChangeSourceBin()
//if format isn't set, something is still going wrong, make generic
//components and see if they work!
- if (format == NULL) {
- if (error != NULL) {
+ if (format == nullptr) {
+ if (error != nullptr) {
g_error_free (error);
- error = NULL;
+ error = nullptr;
}
webcam->_webcamSourceBin =
gst_parse_bin_from_description ("videotestsrc name=video_source",
@@ -1069,7 +1068,7 @@ VideoInputGst::webcamChangeSourceBin()
"video_source");
//if there are still errors, something's up, return out of function
- if (error != NULL) {
+ if (error != nullptr) {
g_error_free (error);
return false;
}
@@ -1100,7 +1099,7 @@ VideoInputGst::webcamChangeSourceBin()
webcam->_webcamSourceBin =
gst_parse_bin_from_description (command, TRUE, &error);
- if (webcam->_webcamSourceBin == NULL) {
+ if (webcam->_webcamSourceBin == nullptr) {
log_error(_("%s: Creation of the webcam_source_bin failed"),
__FUNCTION__);
log_error(_("the error was %s"), error->message);
@@ -1172,16 +1171,16 @@ VideoInputGst::webcamCreateMainBin()
assert(webcam->_webcamSourceBin);
- if ((tee = gst_element_factory_make ("tee", "tee")) == NULL) {
+ if ((tee = gst_element_factory_make ("tee", "tee")) == nullptr) {
log_error(_("%s: problem creating tee element"), __FUNCTION__);
return false;
}
- if ((save_queue = gst_element_factory_make("queue", "save_queue")) == NULL) {
+ if ((save_queue = gst_element_factory_make("queue", "save_queue")) == nullptr) {
log_error(_("%s: problem creating save_queue element"), __FUNCTION__);
return false;
}
if ((video_display_queue =
- gst_element_factory_make("queue", "video_display_queue")) == NULL) {
+ gst_element_factory_make("queue", "video_display_queue")) == nullptr) {
log_error(_("%s: problem creating video_display_queue element"),
__FUNCTION__);
return false;
@@ -1214,7 +1213,7 @@ VideoInputGst::webcamCreateMainBin()
//add ghostpad to save_queue (allows connections between bins)
pad = gst_element_get_pad (save_queue, "src");
- if (pad == NULL) {
+ if (pad == nullptr) {
log_error(_("%s: couldn't get save_queue_src_pad"), __FUNCTION__);
return false;
}
@@ -1224,7 +1223,7 @@ VideoInputGst::webcamCreateMainBin()
//add ghostpad to video_display_queue
pad = gst_element_get_pad (video_display_queue, "src");
- if (pad == NULL) {
+ if (pad == nullptr) {
log_error(_("%s: couldn't get video_display_queue_pad"), __FUNCTION__);
return false;
}
@@ -1254,13 +1253,13 @@ VideoInputGst::webcamCreateDisplayBin()
webcam->_videoDisplayBin = gst_bin_new("video_display_bin");
- if (webcam->_videoDisplayBin == NULL) {
+ if (webcam->_videoDisplayBin == nullptr) {
log_error(_("%s: something went wrong creating the new video_display_bin"),
__FUNCTION__);
return false;
}
- if ((video_scale = gst_element_factory_make("videoscale", "video_scale")) == NULL) {
+ if ((video_scale = gst_element_factory_make("videoscale", "video_scale")) == nullptr) {
log_error(_("%s: problem creating video_scale element"), __FUNCTION__);
return false;
}
@@ -1269,7 +1268,7 @@ VideoInputGst::webcamCreateDisplayBin()
g_object_set (video_scale, "method", 1, NULL);
}
- if ((video_sink = gst_element_factory_make("autovideosink", "video_sink")) == NULL) {
+ if ((video_sink = gst_element_factory_make("autovideosink", "video_sink")) == nullptr) {
log_error(_("%s: problem creating the video_sink element"), __FUNCTION__);
return false;
}
@@ -1303,7 +1302,7 @@ VideoInputGst::webcamMakeVideoDisplayLink()
GnashWebcamPrivate* webcam = _globalWebcam;
- if (gst_bin_get_by_name(GST_BIN(webcam->_pipeline), "video_display_bin") == NULL) {
+ if (gst_bin_get_by_name(GST_BIN(webcam->_pipeline), "video_display_bin") == nullptr) {
gst_object_ref(webcam->_videoDisplayBin);
gst_bin_add (GST_BIN(webcam->_pipeline), webcam->_videoDisplayBin);
}
@@ -1366,7 +1365,7 @@ VideoInputGst::webcamMakeVideoSaveLink()
{
GnashWebcamPrivate* webcam = _globalWebcam;
- if (gst_bin_get_by_name(GST_BIN(webcam->_pipeline), "video_save_bin") == NULL) {
+ if (gst_bin_get_by_name(GST_BIN(webcam->_pipeline), "video_save_bin") == nullptr) {
gst_object_ref(webcam->_videoSaveBin);
gst_bin_add(GST_BIN(webcam->_pipeline), webcam->_videoSaveBin);
}
@@ -1449,34 +1448,34 @@ VideoInputGst::webcamCreateSaveBin()
if ((video_save_csp =
gst_element_factory_make("ffmpegcolorspace", "video_save_csp"))
- == NULL) {
+ == nullptr) {
log_error(_("%s: problem with creating video_save_csp element"),
__FUNCTION__);
return false;
}
- if ((video_enc = gst_element_factory_make("theoraenc", "video_enc")) == NULL) {
+ if ((video_enc = gst_element_factory_make("theoraenc", "video_enc")) == nullptr) {
log_error(_("%s: problem with creating video_enc element"), __FUNCTION__);
return false;
} else {
g_object_set (video_enc, "keyframe-force", 1, NULL);
}
- if ((video_save_rate = gst_element_factory_make("videorate", "video_save_rate")) == NULL) {
+ if ((video_save_rate = gst_element_factory_make("videorate", "video_save_rate")) == nullptr) {
log_error(_("%s: problem with creating video_save_rate element"), __FUNCTION__);
return false;
}
- if ((video_save_scale = gst_element_factory_make("videoscale", "video_save_scale")) == NULL) {
+ if ((video_save_scale = gst_element_factory_make("videoscale", "video_save_scale")) == nullptr) {
log_error(_("%s: problem with creating video_save_scale element"), __FUNCTION__);
return false;
} else {
//Use bilinear scaling
g_object_set (video_save_scale, "method", 1, NULL);
}
- if ((mux = gst_element_factory_make("oggmux", "mux")) == NULL) {
+ if ((mux = gst_element_factory_make("oggmux", "mux")) == nullptr) {
log_error(_("%s: problem with creating mux element"), __FUNCTION__);
return false;
}
- if ((webcam->_videoFileSink = gst_element_factory_make("filesink", "video_file_sink")) == NULL) {
+ if ((webcam->_videoFileSink = gst_element_factory_make("filesink", "video_file_sink")) == nullptr) {
log_error(_("%s: problem with creating video_file_sink element"), __FUNCTION__);
return false;
} else {
@@ -1578,7 +1577,7 @@ WebcamVidFormat::WebcamVidFormat() {
width = -1;
height = -1;
numFramerates = -1;
- framerates = NULL;
+ framerates = nullptr;
}
/// Default constructor for the FramerateFraction class. This constructor prepares
@@ -1601,8 +1600,8 @@ FramerateFraction::FramerateFraction(gint num, gint denom) {
/// structure for data that will come in later. Also creates a blank hash table
/// and array.
GnashWebcam::GnashWebcam() {
- setElementPtr(NULL);
- supportedResolutions = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
+ setElementPtr(nullptr);
+ supportedResolutions = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, nullptr);
videoFormats = g_array_new (FALSE, FALSE, sizeof (WebcamVidFormat));
numVideoFormats = 0;
}
@@ -1610,19 +1609,20 @@ GnashWebcam::GnashWebcam() {
/// Constructor that initializes all GnashWebcamPrivate variables to have
/// data dropped in later.
GnashWebcamPrivate::GnashWebcamPrivate() {
- _pipeline = NULL;
- _webcamSourceBin = NULL;
- _webcamMainBin = NULL;
- _videoDisplayBin = NULL;
- _videoSaveBin = NULL;
- _videoSource = NULL;
- _capsFilter = NULL;
- _videoFileSink = NULL;
- _videoEnc = NULL;
+ _pipeline = nullptr;
+ _webcamSourceBin = nullptr;
+ _webcamMainBin = nullptr;
+ _videoDisplayBin = nullptr;
+ _videoSaveBin = nullptr;
+ _videoSource = nullptr;
+ _capsFilter = nullptr;
+ _videoFileSink = nullptr;
+ _videoEnc = nullptr;
_pipelineIsPlaying = false;
+ _webcamDevice = nullptr;
- _currentFormat = NULL;
+ _currentFormat = nullptr;
_eosTimeoutId = 0;
};
diff --git a/libmedia/gst/VideoInputGst.h b/libmedia/gst/VideoInputGst.h
index 38d8b58..2e28b67 100644
--- a/libmedia/gst/VideoInputGst.h
+++ b/libmedia/gst/VideoInputGst.h
@@ -21,7 +21,7 @@
#define GNASH_VIDEOINPUTGST_H
#include <vector>
-#include <boost/cstdint.hpp> // for C99 int types
+#include <cstdint> // for C99 int types
#include "VideoInput.h"
#include "gst/gst.h"
@@ -430,11 +430,6 @@ private:
/// _vidVect
int _devSelection;
- /// \var VideoInputGst::_numdevs
- /// \brief An integer value containing the number of devices attached
- /// to the machine.
- gint _numdevs;
-
/// \var VideoInputGst::_globalWebcam
/// \brief Convienient pointer to the selected device's GnashWebcamPrivate
/// class structure.
diff --git a/libmedia/haiku/AudioDecoderHaiku.cpp b/libmedia/haiku/AudioDecoderHaiku.cpp
index 4b4185d..d86c2ec 100644
--- a/libmedia/haiku/AudioDecoderHaiku.cpp
+++ b/libmedia/haiku/AudioDecoderHaiku.cpp
@@ -51,20 +51,20 @@ AudioDecoderHaiku::~AudioDecoderHaiku()
QQ(2);
}
-boost::uint8_t*
-AudioDecoderHaiku::decode(const boost::uint8_t* input, boost::uint32_t inputSize, boost::uint32_t& outputSize, boost::uint32_t& decodedBytes)
+std::uint8_t*
+AudioDecoderHaiku::decode(const std::uint8_t* input, std::uint32_t inputSize, std::uint32_t& outputSize, std::uint32_t& decodedBytes)
{
(void) input;
(void) parse;
- boost::uint8_t *t;
+ std::uint8_t *t;
outputSize = 2048;
decodedBytes = inputSize;
- t = new boost::uint8_t[outputSize];
+ t = new std::uint8_t[outputSize];
- boost::uint16_t *data =
- reinterpret_cast<boost::uint16_t*>(t);
+ std::uint16_t *data =
+ reinterpret_cast<std::uint16_t*>(t);
- for (size_t i = 0; i < outputSize / sizeof(boost::uint16_t); ++i)
+ for (size_t i = 0; i < outputSize / sizeof(std::uint16_t); ++i)
{
data[i] = 1000 * sin(i/10.);
}
@@ -73,8 +73,8 @@ AudioDecoderHaiku::decode(const boost::uint8_t* input, boost::uint32_t inputSize
return t;
}
-boost::uint8_t*
-AudioDecoderHaiku::decode(const EncodedAudioFrame& af, boost::uint32_t& outputSize)
+std::uint8_t*
+AudioDecoderHaiku::decode(const EncodedAudioFrame& af, std::uint32_t& outputSize)
{
QQ(2);
return NULL;
diff --git a/libmedia/haiku/AudioDecoderHaiku.h b/libmedia/haiku/AudioDecoderHaiku.h
index 92252a1..46f9e5d 100644
--- a/libmedia/haiku/AudioDecoderHaiku.h
+++ b/libmedia/haiku/AudioDecoderHaiku.h
@@ -54,16 +54,16 @@ public:
~AudioDecoderHaiku();
// See dox in AudioDecoder.h
- boost::uint8_t* decode(const boost::uint8_t* input, boost::uint32_t inputSize, boost::uint32_t& outputSize, boost::uint32_t& decodedBytes);
+ std::uint8_t* decode(const std::uint8_t* input, std::uint32_t inputSize, std::uint32_t& outputSize, std::uint32_t& decodedBytes);
- boost::uint8_t* decode(const EncodedAudioFrame& af, boost::uint32_t& outputSize);
+ std::uint8_t* decode(const EncodedAudioFrame& af, std::uint32_t& outputSize);
private:
//
// void setup(const AudioInfo& info);
// void setup(SoundInfo& info);
//
-// boost::uint8_t* decodeFrame(const boost::uint8_t* input, boost::uint32_t inputSize, boost::uint32_t& outputSize);
+// std::uint8_t* decodeFrame(const std::uint8_t* input, std::uint32_t inputSize, std::uint32_t& outputSize);
//
// AVCodec* _audioCodec;
// AVCodecContext* _audioCodecCtx;
@@ -93,8 +93,8 @@ private:
// ///
// /// @return number of input bytes parsed, or -1 on error
// ///
-// int parseInput(const boost::uint8_t* input, boost::uint32_t inputSize,
-// boost::uint8_t const ** outFrame, int* outFrameSize);
+// int parseInput(const std::uint8_t* input, std::uint32_t inputSize,
+// std::uint8_t const ** outFrame, int* outFrameSize);
};
} // gnash.media.haiku namespace
diff --git a/libmedia/haiku/AudioInputHaiku.h b/libmedia/haiku/AudioInputHaiku.h
index d676914..e567122 100644
--- a/libmedia/haiku/AudioInputHaiku.h
+++ b/libmedia/haiku/AudioInputHaiku.h
@@ -23,7 +23,7 @@
#include "dsodefs.h" //DSOEXPORT
#include "AudioInput.h"
-#include <boost/cstdint.hpp> // for C99 int types
+#include <cstdint> // for C99 int types
#include <string>
namespace gnash {
diff --git a/libmedia/haiku/MediaHandlerHaiku.cpp b/libmedia/haiku/MediaHandlerHaiku.cpp
index ca1d939..0d0259e 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
{
@@ -148,12 +148,6 @@ MediaHandlerHaiku::cameraNames(std::vector<std::string>& /*names*/) const
//// return FF_INPUT_BUFFER_PADDING_SIZE;
//}
-#ifdef REGISTER_MEDIA_HANDLERS
-namespace {
- MediaFactory::RegisterHandler<MediaHandlerHaiku> reg("haiku");
-}
-#endif
-
} // gnash.media.haiku namespace
} // gnash.media namespace
} // gnash namespace
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..576ce50 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);
@@ -48,7 +48,7 @@ MediaParserHaiku::~MediaParserHaiku()
}
bool
-MediaParserHaiku::seek(boost::uint32_t&)
+MediaParserHaiku::seek(std::uint32_t&)
{
QQ(2);
}
@@ -59,7 +59,7 @@ MediaParserHaiku::parseNextChunk()
QQ(2);
}
-boost::uint64_t
+std::uint64_t
MediaParserHaiku::getBytesLoaded() const
{
QQ(2);
diff --git a/libmedia/haiku/MediaParserHaiku.h b/libmedia/haiku/MediaParserHaiku.h
index 3a301f3..b6cac92 100644
--- a/libmedia/haiku/MediaParserHaiku.h
+++ b/libmedia/haiku/MediaParserHaiku.h
@@ -22,7 +22,6 @@
#include "MediaParser.h" // for inheritance
-#include <boost/scoped_array.hpp>
#include <memory>
// Forward declaration
@@ -43,18 +42,18 @@ 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();
// See dox in MediaParser.h
- virtual bool seek(boost::uint32_t&);
+ virtual bool seek(std::uint32_t&);
// See dox in MediaParser.h
virtual bool parseNextChunk();
// See dox in MediaParser.h
- virtual boost::uint64_t getBytesLoaded() const;
+ virtual std::uint64_t getBytesLoaded() const;
};
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..91da37f 100644
--- a/libmedia/haiku/VideoDecoderHaiku.cpp
+++ b/libmedia/haiku/VideoDecoderHaiku.cpp
@@ -59,17 +59,17 @@ 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];
+ std::uint8_t *d =
+ new std::uint8_t[100*100*4];
for (int i = 0; i < 100*100*4; ++i)
{
- d[i] *= 1 - (boost::uint8_t) 2*(rand()%2);
- d[i] += (boost::uint8_t) rand()/64;
+ d[i] *= 1 - (std::uint8_t) 2*(rand()%2);
+ d[i] += (std::uint8_t) rand()/64;
}
ret->update(d);
delete [] d;
diff --git a/libmedia/haiku/VideoDecoderHaiku.h b/libmedia/haiku/VideoDecoderHaiku.h
index 32f8d30..aeece62 100644
--- a/libmedia/haiku/VideoDecoderHaiku.h
+++ b/libmedia/haiku/VideoDecoderHaiku.h
@@ -40,14 +40,14 @@ class DSOEXPORT VideoDecoderHaiku : public VideoDecoder
{
public:
//VideoDecoderGst(videoCodecType codec_type, int width, int height,
- // const boost::uint8_t* extradata, size_t extradatasize);
+ // const std::uint8_t* extradata, size_t extradatasize);
//VideoDecoderGst(GstCaps* caps);
VideoDecoderHaiku(const VideoInfo& info);
~VideoDecoderHaiku();
void push(const EncodedVideoFrame& buffer);
- std::auto_ptr<GnashImage> pop();
+ std::unique_ptr<GnashImage> pop();
bool peek();
diff --git a/libmedia/haiku/VideoInputHaiku.h b/libmedia/haiku/VideoInputHaiku.h
index 2e079e6..a2a3f1b 100644
--- a/libmedia/haiku/VideoInputHaiku.h
+++ b/libmedia/haiku/VideoInputHaiku.h
@@ -20,7 +20,7 @@
#define GNASH_VIDEOINPUTHAIKU_H
#include <vector>
-#include <boost/cstdint.hpp> // for C99 int types
+#include <cstdint> // for C99 int types
#include "VideoInput.h"
namespace gnash {
diff --git a/librender/GnashTexture.cpp b/librender/GnashTexture.cpp
index d024296..72c7403 100644
--- a/librender/GnashTexture.cpp
+++ b/librender/GnashTexture.cpp
@@ -20,6 +20,7 @@
#include "GnashTexture.h"
#include <GL/gl.h>
+#include <GL/glu.h>
#define GL_DEBUG 0
@@ -37,37 +38,13 @@ struct gl_errors_t {
const char *str;
};
-// Returns a string representation of an OpenGL error
-static const char *gl_get_error_string(GLenum error)
-{
- gl_errors_t gl_errors[] = {
- { GL_NO_ERROR, "no error" },
- { GL_INVALID_ENUM, "invalid enumerant" },
- { GL_INVALID_VALUE, "invalid value" },
- { GL_INVALID_OPERATION, "invalid operation" },
- { GL_STACK_OVERFLOW, "stack overflow" },
- { GL_STACK_UNDERFLOW, "stack underflow" },
- { GL_OUT_OF_MEMORY, "out of memory" },
-#ifdef GL_INVALID_FRAMEBUFFER_OPERATION_EXT
- { GL_INVALID_FRAMEBUFFER_OPERATION_EXT, "invalid framebuffer operation" },
-#endif
- };
-
- for (gl_errors_t *it = boost::begin(gl_errors), *end = boost::end(gl_errors);
- it != end; ++it) {
- if (it->val == error)
- return it->str;
- }
- return "unknown";
-}
-
static inline bool gl_do_check_error(int report)
{
GLenum error;
bool is_error = false;
while ((error = glGetError()) != GL_NO_ERROR) {
if (report)
- log_error(_("glError: %s caught\n"), gl_get_error_string(error));
+ log_error(_("glError: %s caught\n"), gluErrorString(error));
is_error = true;
}
return is_error;
@@ -103,7 +80,7 @@ static bool check_extension(const char *name, const char *ext)
const char *end;
int name_len, n;
- if (name == NULL || ext == NULL)
+ if (name == nullptr || ext == nullptr)
return false;
end = ext + strlen(ext);
@@ -181,7 +158,7 @@ bool GnashTexture::init()
glPixelStorei(GL_UNPACK_ALIGNMENT, internal_format() == GL_RGBA ? 4 : 1);
glTexImage2D(GL_TEXTURE_2D, 0, internal_format(), _width, _height, 0,
- format(), GL_UNSIGNED_BYTE, NULL);
+ format(), GL_UNSIGNED_BYTE, nullptr);
release();
return true;
}
@@ -227,7 +204,7 @@ void GnashTexture::release()
}
// Update texture with data
-void GnashTexture::update(const boost::uint8_t *data)
+void GnashTexture::update(const std::uint8_t *data)
{
D(bug("GnashTexture::update(): data %p, size %dx%d\n", data, _width, _height));
diff --git a/librender/GnashTexture.h b/librender/GnashTexture.h
index 7df7a0e..6329f40 100644
--- a/librender/GnashTexture.h
+++ b/librender/GnashTexture.h
@@ -22,7 +22,6 @@
#define GNASH_GNASHTEXTURE_H
#include "GnashImage.h"
-#include <boost/shared_ptr.hpp>
namespace gnash {
@@ -110,7 +109,7 @@ public:
/// (or derivative thereof) or unexpected things will happen.
///
/// @param data buffer to copy data from.
- void update(const boost::uint8_t *data);
+ void update(const std::uint8_t *data);
};
} // gnash namespace
diff --git a/librender/Renderer.h b/librender/Renderer.h
index f7ee0b2..097c0be 100644
--- a/librender/Renderer.h
+++ b/librender/Renderer.h
@@ -146,8 +146,6 @@
#include "dsodefs.h" // for DSOEXPORT
-#include "boost/shared_array.hpp"
-#include "boost/scoped_ptr.hpp"
#include "GnashEnums.h"
#include "Range2d.h"
#include "Point2d.h"
@@ -221,7 +219,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 +313,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 "
@@ -348,7 +346,7 @@ public:
/// ==================================================================
///@{
- typedef boost::shared_ptr<GnashVaapiImageProxy> RenderImage;
+ typedef std::shared_ptr<GnashVaapiImageProxy> RenderImage;
typedef std::vector<RenderImage> RenderImages;
// Get first render image
@@ -447,7 +445,7 @@ public:
return false; // avoid compiler warning
}
- void addRenderImage(boost::shared_ptr<GnashVaapiImageProxy> image) {
+ void addRenderImage(std::shared_ptr<GnashVaapiImageProxy> image) {
_render_images.push_back(image);
}
diff --git a/librender/agg/LinearRGB.h b/librender/agg/LinearRGB.h
index 5be8daf..db84b8b 100644
--- a/librender/agg/LinearRGB.h
+++ b/librender/agg/LinearRGB.h
@@ -19,6 +19,8 @@
#ifndef GNASH_AGG_LINEAR_INTERPOLATOR_H
#define GNASH_AGG_LINEAR_INTERPOLATOR_H
+#include <utility>
+
#include <cmath>
namespace gnash {
@@ -55,11 +57,11 @@ struct linear_rgb_interpolator
public:
typedef ColorT color_type;
- linear_rgb_interpolator(const color_type& c1, const color_type& c2,
+ linear_rgb_interpolator(color_type c1, color_type c2,
size_t len)
:
- _c1(c1),
- _c2(c2),
+ _c1(std::move(c1)),
+ _c2(std::move(c2)),
_len(len),
_count(0)
{}
diff --git a/librender/agg/Renderer_agg.cpp b/librender/agg/Renderer_agg.cpp
index 12b4142..e15ca2d 100644
--- a/librender/agg/Renderer_agg.cpp
+++ b/librender/agg/Renderer_agg.cpp
@@ -114,8 +114,7 @@ AGG resources
#include <cmath>
#include <math.h> // We use round()!
#include <climits>
-#include <boost/scoped_array.hpp>
-#include <boost/bind.hpp>
+#include <functional>
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunused-parameter"
@@ -157,6 +156,7 @@ AGG resources
#include "SWFCxForm.h"
#include "FillStyle.h"
#include "Transform.h"
+#include "IOChannel.h"
#ifdef HAVE_VA_VA_H
#include "GnashVaapiImage.h"
@@ -334,11 +334,11 @@ public:
AlphaMask(int width, int height)
:
- _rbuf(0, width, height, width),
+ _rbuf(nullptr, width, height, width),
_pixf(_rbuf),
_rbase(_pixf),
_amask(_rbuf),
- _buffer(new boost::uint8_t[width * height]())
+ _buffer(new std::uint8_t[width * height]())
{
_rbuf.attach(_buffer.get(), width, height, width);
}
@@ -387,7 +387,7 @@ private:
Mask _amask;
// in-memory buffer
- boost::scoped_array<boost::uint8_t> _buffer;
+ std::unique_ptr<std::uint8_t[]> _buffer;
};
@@ -410,11 +410,8 @@ public:
template<typename ScanLine>
void render(ScanLine& sl, Stroke& stroke, const rgba& color)
{
- for (ClipBounds::const_iterator i = _clipbounds.begin(),
- e = _clipbounds.end(); i != e; ++i) {
+ for (const auto& bounds : _clipbounds) {
- const ClipBounds::value_type& bounds = *i;
-
applyClipBox<Rasterizer> (_ras, bounds);
// The vectorial pipeline
@@ -488,10 +485,8 @@ private:
Rasterizer ras;
agg::renderer_scanline_aa_solid<Renderer> ren_sl(rbase);
- for (ClipBounds::const_iterator i = _clipbounds.begin(),
- e = _clipbounds.end(); i != e; ++i)
+ for (const auto& cb : _clipbounds)
{
- const ClipBounds::value_type& cb = *i;
applyClipBox<Rasterizer>(ras, cb);
ras.add_path(path);
@@ -631,10 +626,8 @@ private:
Scanline& sl, SpanGenerator& sg)
{
Rasterizer _ras;
- for (ClipBounds::const_iterator i = _clipbounds.begin(),
- e = _clipbounds.end(); i != e; ++i)
+ for (const auto& cb : _clipbounds)
{
- const ClipBounds::value_type& cb = *i;
applyClipBox<Rasterizer> (_ras, cb);
_ras.add_path(path);
@@ -687,12 +680,12 @@ 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,
+ virtual void renderToImage(std::unique_ptr<IOChannel> io,
FileType type, int quality) const
{
image::ImageRGBA im(xres, yres);
@@ -703,7 +696,7 @@ public:
}
}
- image::Output::writeImageData(type, io, im, quality);
+ image::Output::writeImageData(type, std::move(io), im, quality);
}
template<typename SourceFormat, typename Matrix>
@@ -860,10 +853,9 @@ public:
if ( ! _clipbounds.empty() )
{
const agg::rgba8& col = agg::rgba8_pre(bg.m_r, bg.m_g, bg.m_b, bg.m_a);
- for (ClipBounds::const_iterator i = _clipbounds.begin(),
- e = _clipbounds.end(); i!= e; ++i)
+ for (const auto& bounds : _clipbounds)
{
- clear_framebuffer(*i, col);
+ clear_framebuffer(bounds, col);
}
}
@@ -874,7 +866,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:
@@ -1005,9 +997,8 @@ public:
_alphaMasks.push_back(new AlphaMask(xres, yres));
AlphaMask& new_mask = _alphaMasks.back();
- for (ClipBounds::const_iterator i = _clipbounds.begin(),
- e = _clipbounds.end(); i != e; ++i) {
- new_mask.clear(*i);
+ for (const auto& bounds : _clipbounds ) {
+ new_mask.clear(bounds);
}
}
@@ -1092,11 +1083,10 @@ public:
assert(bounds.getRange().isFinite());
- const int count = _clipbounds.size();
- for (int cno=0; cno<count; ++cno) {
-
- if (_clipbounds[cno].intersects(bounds.getRange()))
- _clipbounds_selected.push_back(&_clipbounds[cno]);
+ for (const auto& clip : _clipbounds) {
+
+ if (clip.intersects(bounds.getRange()))
+ _clipbounds_selected.push_back(&clip);
}
}
@@ -1108,10 +1098,9 @@ public:
_clipbounds_selected.clear();
_clipbounds_selected.reserve(_clipbounds.size());
- for (ClipBounds::iterator i = _clipbounds.begin(),
- e = _clipbounds.end(); i != e; ++i)
+ for (const auto& clip : _clipbounds)
{
- _clipbounds_selected.push_back(&(*i));
+ _clipbounds_selected.push_back(&clip);
}
}
@@ -1127,12 +1116,11 @@ public:
return; // no need to draw
}
- for (SWF::ShapeRecord::Subshapes::const_iterator it = shape.subshapes().begin(),
- end = shape.subshapes().end(); it != end; ++it ) {
+ for (const SWF::Subshape& subshape : shape.subshapes()) {
- const SWF::ShapeRecord::FillStyles& fillStyles = it->fillStyles();
- const SWF::ShapeRecord::LineStyles& lineStyles = it->lineStyles();
- const SWF::ShapeRecord::Paths& paths = it->paths();
+ const SWF::ShapeRecord::FillStyles& fillStyles = subshape.fillStyles();
+ const SWF::ShapeRecord::LineStyles& lineStyles = subshape.lineStyles();
+ const SWF::ShapeRecord::Paths& paths = subshape.paths();
// select ranges
select_clipbounds(shape.getBounds(), xform.matrix);
@@ -1227,7 +1215,8 @@ public:
/// Transform all the paths using the matrix.
std::for_each(paths_out.begin(), paths_out.end(),
- boost::bind(&Path::transform, _1, mat));
+ std::bind(&Path::transform, std::placeholders::_1,
+ std::ref(mat)));
}
// Version of buildPaths that uses rounded coordinates (pixel hinting)
@@ -1487,10 +1476,8 @@ public:
rasc.filling_rule(agg::fill_non_zero);
- for (unsigned int cno=0; cno<_clipbounds_selected.size(); ++cno) {
-
- const geometry::Range2d<int>* bounds = _clipbounds_selected[cno];
-
+ for (const geometry::Range2d<int>* bounds : _clipbounds_selected) {
+
applyClipBox<ras_type> (rasc, *bounds);
// push paths to AGG
@@ -1588,9 +1575,7 @@ public:
agg::path_storage path;
agg::conv_curve<agg::path_storage> curve(path);
- for (size_t pno=0, pcount=paths.size(); pno < pcount; ++pno) {
-
- const Path& this_path = paths[pno];
+ for (const Path& this_path : paths) {
path.remove_all();
@@ -1692,10 +1677,8 @@ public:
agg::renderer_base<PixelFormat> > ren_sl(rbase); // solid fills
- for (unsigned int cno=0; cno<_clipbounds_selected.size(); ++cno) {
-
- const geometry::Range2d<int>* bounds = _clipbounds_selected[cno];
-
+ for (const geometry::Range2d<int>* bounds : _clipbounds_selected) {
+
applyClipBox<ras_type> (ras, *bounds);
for (size_t pno=0, pcount=paths.size(); pno<pcount; ++pno) {
@@ -1821,9 +1804,8 @@ public:
// -- render --
// iterate through clipping bounds
- for (unsigned int cno=0; cno<_clipbounds.size(); ++cno) {
-
- const ClipBounds::value_type& bounds = _clipbounds[cno];
+ for (const auto& bounds : _clipbounds) {
+
applyClipBox<ras_type> (ras, bounds);
@@ -1967,8 +1949,8 @@ public:
Range2d<int> pixbounds = Renderer::world_to_pixel(bounds);
- for (unsigned int cno=0; cno<_clipbounds.size(); ++cno) {
- if (Intersect(pixbounds, _clipbounds[cno]))
+ for (const auto& bounds : _clipbounds) {
+ if (Intersect(pixbounds, bounds))
return true;
}
return false;
@@ -2009,10 +1991,10 @@ private: // private variables
typedef agg::renderer_base<PixelFormat> renderer_base;
// renderer base
- boost::scoped_ptr<renderer_base> m_rbase;
+ std::unique_ptr<renderer_base> m_rbase;
// An external renderer.
- boost::scoped_ptr<Renderer> _external;
+ std::unique_ptr<Renderer> _external;
int xres;
int yres;
@@ -2022,11 +2004,11 @@ private: // private variables
agg::rendering_buffer m_rbuf;
- std::auto_ptr<PixelFormat> m_pixf;
+ std::unique_ptr<PixelFormat> m_pixf;
/// clipping rectangle
ClipBounds _clipbounds;
- std::vector< geometry::Range2d<int>* > _clipbounds_selected;
+ std::vector< geometry::Range2d<int> const* > _clipbounds_selected;
// this flag is set while a mask is drawn
bool m_drawing_mask;
@@ -2047,10 +2029,10 @@ private: // private variables
bool is_little_endian_host() {
union {
- boost::uint16_t word;
+ std::uint16_t word;
struct {
- boost::uint8_t b1;
- boost::uint8_t b2;
+ std::uint8_t b1;
+ std::uint8_t b2;
} s;
} u;
@@ -2065,7 +2047,7 @@ bool is_little_endian_host() {
DSOEXPORT Renderer_agg_base* create_Renderer_agg(const char *pixelformat)
{
- if (!pixelformat) return NULL;
+ if (!pixelformat) return nullptr;
if (is_little_endian_host())
log_debug("Framebuffer pixel format is %s (little-endian host)", pixelformat);
@@ -2115,11 +2097,11 @@ DSOEXPORT Renderer_agg_base* create_Renderer_agg(const char *pixelformat)
#endif
{
log_error(_("Unknown pixelformat: %s\n"), pixelformat);
- return NULL;
+ return nullptr;
//abort();
}
- return NULL; // avoid compiler warning
+ return nullptr; // avoid compiler warning
}
@@ -2200,7 +2182,7 @@ DSOEXPORT const char *agg_detect_pixel_format(unsigned int rofs,
}
- return NULL; // unknown format
+ return nullptr; // unknown format
}
diff --git a/librender/agg/Renderer_agg.h b/librender/agg/Renderer_agg.h
index fd5fdb0..e8c20d5 100644
--- a/librender/agg/Renderer_agg.h
+++ b/librender/agg/Renderer_agg.h
@@ -34,7 +34,7 @@ private:
public:
- Renderer_agg_base() : _testBuffer(0) { }
+ Renderer_agg_base() : _testBuffer(nullptr) { }
// virtual classes should have virtual destructors
virtual ~Renderer_agg_base() {
@@ -53,7 +53,7 @@ public:
int size = width * height * getBytesPerPixel();
unsigned char *tmp = static_cast<unsigned char *>(realloc(_testBuffer, size));
- if (tmp == NULL) {
+ if (tmp == nullptr) {
log_error(_("Memory reallocation error"));
return false;
} else {
diff --git a/librender/agg/Renderer_agg_bitmap.h b/librender/agg/Renderer_agg_bitmap.h
index a8fbc35..4bd6e5d 100644
--- a/librender/agg/Renderer_agg_bitmap.h
+++ b/librender/agg/Renderer_agg_bitmap.h
@@ -19,9 +19,9 @@
#ifndef BACKEND_RENDER_HANDLER_AGG_BITMAP_H
#define BACKEND_RENDER_HANDLER_AGG_BITMAP_H
-#include <boost/scoped_ptr.hpp>
#include <memory>
-#include <boost/cstdint.hpp>
+#include <memory>
+#include <cstdint>
#include "GnashImage.h"
#include "CachedBitmap.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)
@@ -56,11 +56,11 @@ public:
int get_height() const { return _image->height(); }
int get_bpp() const { return _bpp; }
int get_rowlen() const { return _image->stride(); }
- boost::uint8_t* get_data() const { return _image->begin(); }
+ std::uint8_t* get_data() const { return _image->begin(); }
private:
- boost::scoped_ptr<image::GnashImage> _image;
+ std::unique_ptr<image::GnashImage> _image;
int _bpp;
diff --git a/librender/agg/Renderer_agg_style.h b/librender/agg/Renderer_agg_style.h
index 64b06d5..16e177b 100644
--- a/librender/agg/Renderer_agg_style.h
+++ b/librender/agg/Renderer_agg_style.h
@@ -81,10 +81,10 @@ namespace {
class AggStyle
{
public:
- AggStyle(bool solid, const agg::rgba8& color = agg::rgba8(0,0,0,0))
+ AggStyle(bool solid, agg::rgba8 color = agg::rgba8(0,0,0,0))
:
_solid(solid),
- _color(color)
+ _color(std::move(color))
{
}
@@ -242,14 +242,14 @@ class GradientStyle : public AggStyle
public:
GradientStyle(const GradientFill& fs, const SWFMatrix& mat,
- const SWFCxForm& cx, int norm_size, GradientType gr = GradientType())
+ SWFCxForm cx, int norm_size, GradientType gr = GradientType())
:
AggStyle(false),
- m_cx(cx),
+ m_cx(std::move(cx)),
m_tr(mat.a() / 65536.0, mat.b() / 65536.0, mat.c() / 65536.0,
mat.d() / 65536.0, mat.tx(), mat.ty()),
m_span_interpolator(m_tr),
- m_gradient_adaptor(gr),
+ m_gradient_adaptor(std::move(gr)),
m_sg(m_span_interpolator, m_gradient_adaptor, m_gradient_lut, 0,
norm_size),
@@ -364,11 +364,11 @@ class BitmapStyle : public AggStyle
{
public:
- BitmapStyle(int width, int height, int rowlen, boost::uint8_t* data,
- const SWFMatrix& mat, const SWFCxForm& cx)
+ BitmapStyle(int width, int height, int rowlen, std::uint8_t* data,
+ const SWFMatrix& mat, SWFCxForm cx)
:
AggStyle(false),
- m_cx(cx),
+ m_cx(std::move(cx)),
m_rbuf(data, width, height, rowlen),
m_pixf(m_rbuf),
m_img_src(m_pixf),
diff --git a/librender/cairo/PathParser.cpp b/librender/cairo/PathParser.cpp
index 033fd5a..6d9c561 100644
--- a/librender/cairo/PathParser.cpp
+++ b/librender/cairo/PathParser.cpp
@@ -17,10 +17,11 @@
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
//
-#include <boost/utility.hpp>
-#include "PathParser.h"
+#include <functional>
+#include <iterator>
#include <map>
-#include <boost/bind.hpp>
+
+#include "PathParser.h"
#include "log.h"
namespace gnash
@@ -54,20 +55,20 @@ PathParser::run(const SWFCxForm& cx, const SWFMatrix& /*mat*/)
std::vector<UniPathList> unipathvec(_num_styles);
- for (size_t i = 0; i < _paths.size(); ++i) {
+ for (const Path& path : _paths) {
- if (_paths[i].empty()) {
+ if (path.empty()) {
continue;
}
- int leftfill = _paths[i].getLeftFill();
+ int leftfill = path.getLeftFill();
if (leftfill) {
- unipathvec[leftfill-1].push_front(UnivocalPath(&_paths[i], UnivocalPath::FILL_LEFT));
+ unipathvec[leftfill-1].emplace_front(&path, UnivocalPath::FILL_LEFT);
}
- int rightfill = _paths[i].getRightFill();
+ int rightfill = path.getRightFill();
if (rightfill) {
- unipathvec[rightfill-1].push_front(UnivocalPath(&_paths[i], UnivocalPath::FILL_RIGHT));
+ unipathvec[rightfill-1].emplace_front(&path, UnivocalPath::FILL_RIGHT);
}
}
@@ -127,12 +128,12 @@ PathParser::append(const UnivocalPath& append_path)
if (append_path._fill_type == UnivocalPath::FILL_LEFT) {
- std::for_each(edges.begin(), edges.end(), boost::bind(&PathParser::line_to,
- this, _1));
+ std::for_each(edges.begin(), edges.end(), std::bind(&PathParser::line_to,
+ this, std::placeholders::_1));
} else {
for (std::vector<Edge>::const_reverse_iterator prev = edges.rbegin(),
- it = boost::next(prev), end = edges.rend(); it != end; ++it, ++prev) {
+ it = std::next(prev), end = edges.rend(); it != end; ++it, ++prev) {
if ((*prev).straight()) {
lineTo((*it).ap);
} else {
diff --git a/librender/cairo/PathParser.h b/librender/cairo/PathParser.h
index c6f4dc6..2fd86cc 100644
--- a/librender/cairo/PathParser.h
+++ b/librender/cairo/PathParser.h
@@ -19,11 +19,13 @@
#ifndef GNASH_PATH_PARSER_H
#define GNASH_PATH_PARSER_H
-#include "Geometry.h"
#include <vector>
#include <deque>
+#include <boost/utility.hpp>
+#include "Geometry.h"
#include "SWFCxForm.h"
+
namespace gnash
{
@@ -37,7 +39,7 @@ struct UnivocalPath
FILL_LEFT
};
- UnivocalPath() : _path(NULL), _fill_type(FILL_LEFT) {}
+ UnivocalPath() : _path(nullptr), _fill_type(FILL_LEFT) {}
UnivocalPath(const Path* path, fill_type filltype)
: _path(path),
diff --git a/librender/cairo/Renderer_cairo.cpp b/librender/cairo/Renderer_cairo.cpp
index c597dd4..656f2a8 100644
--- a/librender/cairo/Renderer_cairo.cpp
+++ b/librender/cairo/Renderer_cairo.cpp
@@ -40,9 +40,8 @@
#include <cmath>
#include <math.h> // Non standard rint()
#include <cairo/cairo.h>
-#include <boost/scoped_array.hpp>
-#include <boost/scoped_ptr.hpp>
-#include <boost/bind.hpp>
+#include <memory>
+#include <functional>
#include "Renderer.h"
#include "GnashImage.h"
@@ -67,12 +66,12 @@ namespace {
// Converts from RGB image to 32-bit pixels in CAIRO_FORMAT_RGB24 format
static void
-rgb_to_cairo_rgb24(boost::uint8_t* dst, const image::GnashImage* im)
+rgb_to_cairo_rgb24(std::uint8_t* dst, const image::GnashImage* im)
{
- boost::uint32_t* dst32 = reinterpret_cast<boost::uint32_t*>(dst);
+ std::uint32_t* dst32 = reinterpret_cast<std::uint32_t*>(dst);
for (size_t y = 0; y < im->height(); y++)
{
- const boost::uint8_t* src = scanline(*im, y);
+ const std::uint8_t* src = scanline(*im, y);
for (size_t x = 0; x < im->width(); x++, src += 3) {
*dst32++ = (src[0] << 16) | (src[1] << 8) | src[2];
}
@@ -81,15 +80,15 @@ rgb_to_cairo_rgb24(boost::uint8_t* dst, const image::GnashImage* im)
// Converts from RGBA image to 32-bit pixels in CAIRO_FORMAT_ARGB32 format
static void
-rgba_to_cairo_argb(boost::uint8_t* dst, const image::GnashImage* im)
+rgba_to_cairo_argb(std::uint8_t* dst, const image::GnashImage* im)
{
- boost::uint32_t* dst32 = reinterpret_cast<boost::uint32_t*>(dst);
+ std::uint32_t* dst32 = reinterpret_cast<std::uint32_t*>(dst);
for (size_t y = 0; y < im->height(); y++)
{
- const boost::uint8_t* src = scanline(*im, y);
+ const std::uint8_t* src = scanline(*im, y);
for (size_t x = 0; x < im->width(); x++, src += 4)
{
- const boost::uint8_t& r = src[0],
+ const std::uint8_t& r = src[0],
g = src[1],
b = src[2],
a = src[3];
@@ -106,7 +105,7 @@ rgba_to_cairo_argb(boost::uint8_t* dst, const image::GnashImage* im)
class bitmap_info_cairo : public CachedBitmap, boost::noncopyable
{
public:
- bitmap_info_cairo(boost::uint8_t* data, int width, int height,
+ bitmap_info_cairo(std::uint8_t* data, int width, int height,
size_t bpp, cairo_format_t format)
:
_data(data),
@@ -151,8 +150,8 @@ class bitmap_info_cairo : public CachedBitmap, boost::noncopyable
// We assume that cairo uses machine-endian order, as that's what
// the existing conversion functions do.
- boost::uint32_t* start =
- reinterpret_cast<boost::uint32_t*>(_data.get());
+ std::uint32_t* start =
+ reinterpret_cast<std::uint32_t*>(_data.get());
const size_t sz = _width * _height;
std::copy(start, start + sz, image::begin<image::ARGB>(*_image));
return *_image;
@@ -207,8 +206,8 @@ class bitmap_info_cairo : public CachedBitmap, boost::noncopyable
}
private:
- mutable boost::scoped_ptr<image::GnashImage> _image;
- boost::scoped_array<boost::uint8_t> _data;
+ mutable std::unique_ptr<image::GnashImage> _image;
+ std::unique_ptr<std::uint8_t[]> _data;
int _width;
int _height;
size_t _bytes_per_pixel;
@@ -267,7 +266,7 @@ struct StyleHandler : boost::static_visitor<cairo_pattern_t*>
}
}
// We should never get here.
- return 0;
+ return nullptr;
}
cairo_pattern_t* operator()(const SolidFill& f) const {
@@ -339,13 +338,11 @@ get_cairo_pattern(const FillStyle& style, const SWFCxForm& cx)
class CairoPathRunner : public PathParser
{
public:
- CairoPathRunner(Renderer_cairo& renderer,
- const std::vector<Path>& paths,
+ CairoPathRunner(const std::vector<Path>& paths,
const std::vector<FillStyle>& FillStyles, cairo_t* context)
: PathParser(paths, FillStyles.size()),
- _renderer(renderer),
_cr(context),
- _pattern(0),
+ _pattern(nullptr),
_FillStyles(FillStyles)
{
}
@@ -372,7 +369,7 @@ public:
// Surfaces are owned by const bitmap_info_cairo
if (cairo_pattern_get_type(_pattern) != CAIRO_PATTERN_TYPE_SURFACE) {
cairo_pattern_destroy(_pattern);
- _pattern = 0;
+ _pattern = nullptr;
}
}
@@ -410,7 +407,6 @@ public:
}
private:
- Renderer_cairo& _renderer;
cairo_t* _cr;
cairo_pattern_t* _pattern;
const std::vector<FillStyle>& _FillStyles;
@@ -451,7 +447,7 @@ Renderer_cairo::Renderer_cairo()
: _video_bufsize(0),
_drawing_mask(false)
{
- _cr = cairo_create(NULL);
+ _cr = cairo_create(nullptr);
cairo_matrix_init_scale(&_stage_mat, 1/20.0f, 1/20.0f);
}
@@ -461,10 +457,10 @@ 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];
+ std::uint8_t* buffer = new std::uint8_t[buf_size];
switch (im->type())
{
@@ -529,7 +525,7 @@ Renderer_cairo::drawVideoFrame(image::GnashImage* baseframe, const Transform& xf
size_t buf_size = w * h * 4;
if (_video_bufsize < buf_size) {
- _video_buffer.reset(new boost::uint8_t[buf_size]);
+ _video_buffer.reset(new std::uint8_t[buf_size]);
_video_bufsize = buf_size;
}
@@ -561,7 +557,7 @@ Renderer_cairo::drawVideoFrame(image::GnashImage* baseframe, const Transform& xf
cairo_save(_cr);
cairo_set_source(_cr, pattern);
- geometry::Range2d<boost::int32_t> range = bounds->getRange();
+ geometry::Range2d<std::int32_t> range = bounds->getRange();
xform.matrix.transform(range);
cairo_rectangle(_cr, range.getMinX(), range.getMinY(), range.width(),
@@ -634,7 +630,7 @@ Renderer_cairo::begin_display(const rgba& bg_color,
for (size_t rno=0; rno < _invalidated_ranges.size(); rno++) {
- const geometry::Range2d<boost::int32_t>& range =
+ const geometry::Range2d<std::int32_t>& range =
_invalidated_ranges.getRange(rno);
if (range.isNull()) {
continue;
@@ -733,8 +729,8 @@ Renderer_cairo::draw_poly(const std::vector<point>& corners,
cairo_move_to(_cr, corners[0].x, corners[0].y);
- for (size_t i = 0; i < corners.size(); ++i) {
- cairo_line_to(_cr, corners[i].x, corners[i].y);
+ for (const point& corner : corners) {
+ cairo_line_to(_cr, corner.x, corner.y);
}
cairo_close_path(_cr);
@@ -810,10 +806,8 @@ Renderer_cairo::add_path(cairo_t* cr, const Path& cur_path)
snap_to_half_pixel(cr, x, y);
cairo_move_to(cr, x, y);
- for (std::vector<Edge>::const_iterator it = cur_path.m_edges.begin(),
- end = cur_path.m_edges.end(); it != end; ++it) {
- const Edge& cur_edge = *it;
-
+ for (const Edge& cur_edge : cur_path.m_edges) {
+
if (cur_edge.straight()) {
x = cur_edge.ap.x;
y = cur_edge.ap.y;
@@ -924,9 +918,7 @@ Renderer_cairo::draw_outlines(const PathVec& path_vec,
const SWFCxForm& cx,
const SWFMatrix& mat)
{
- for (PathVec::const_iterator it = path_vec.begin(), end = path_vec.end();
- it != end; ++it) {
- const Path& cur_path = *it;
+ for (const Path& cur_path : path_vec) {
if (!cur_path.m_line) {
continue;
@@ -944,7 +936,7 @@ Renderer_cairo::draw_subshape(const PathVec& path_vec, const SWFMatrix& mat,
const std::vector<FillStyle>& FillStyles,
const std::vector<LineStyle>& line_styles)
{
- CairoPathRunner runner(*this, path_vec, FillStyles, _cr);
+ CairoPathRunner runner(path_vec, FillStyles, _cr);
runner.run(cx, mat);
draw_outlines(path_vec, line_styles, cx, mat);
@@ -953,10 +945,8 @@ Renderer_cairo::draw_subshape(const PathVec& path_vec, const SWFMatrix& mat,
void
Renderer_cairo::draw_mask(const PathVec& path_vec)
{
- for (PathVec::const_iterator it = path_vec.begin(), end = path_vec.end();
- it != end; ++it) {
- const Path& cur_path = *it;
-
+ for (const Path& cur_path : path_vec) {
+
if (cur_path.m_fill0 || cur_path.m_fill1) {
_masks.back().push_back(cur_path);
}
@@ -966,10 +956,8 @@ Renderer_cairo::draw_mask(const PathVec& path_vec)
void
Renderer_cairo::add_paths(const PathVec& path_vec)
{
- for (PathVec::const_iterator it = path_vec.begin(), end = path_vec.end();
- it != end; ++it) {
- const Path& cur_path = *it;
-
+ for (const Path& cur_path : path_vec) {
+
add_path(_cr, cur_path);
}
}
@@ -980,7 +968,8 @@ Renderer_cairo::apply_matrix_to_paths(std::vector<Path>& paths,
const SWFMatrix& mat)
{
std::for_each(paths.begin(), paths.end(),
- boost::bind(&Path::transform, _1, boost::ref(mat)));
+ std::bind(&Path::transform, std::placeholders::_1,
+ std::ref(mat)));
}
void
@@ -990,19 +979,18 @@ Renderer_cairo::drawShape(const SWF::ShapeRecord& shape, const Transform& xform)
CairoScopeMatrix mat_transformer(_cr, xform.matrix);
- for (SWF::ShapeRecord::Subshapes::const_iterator it = shape.subshapes().begin(),
- end = shape.subshapes().end(); it != end; ++it) {
+ for (const SWF::Subshape& subshape: shape.subshapes()) {
if (_drawing_mask) {
- PathVec scaled_path_vec = it->paths();
+ PathVec scaled_path_vec = subshape.paths();
apply_matrix_to_paths(scaled_path_vec, xform.matrix);
draw_mask(scaled_path_vec);
continue;
}
- draw_subshape(it->paths(), xform.matrix, xform.colorTransform,
- it->fillStyles(), it->lineStyles());
+ draw_subshape(subshape.paths(), xform.matrix, xform.colorTransform,
+ subshape.fillStyles(), subshape.lineStyles());
}
}
diff --git a/librender/cairo/Renderer_cairo.h b/librender/cairo/Renderer_cairo.h
index 4dca89a..b69d9b6 100644
--- a/librender/cairo/Renderer_cairo.h
+++ b/librender/cairo/Renderer_cairo.h
@@ -21,7 +21,6 @@
#define BACKEND_RENDER_HANDLER_CAIRO_H
#include <vector>
-#include <boost/scoped_array.hpp>
#include <cairo/cairo.h>
#include "Renderer.h"
#include "Geometry.h"
@@ -45,7 +44,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);
@@ -60,7 +59,7 @@ public:
void set_invalidated_regions(const InvalidatedRanges& ranges);
virtual Renderer* startInternalRender(image::GnashImage& /*im*/) {
- return 0;
+ return nullptr;
}
virtual void endInternalRender() {}
@@ -127,7 +126,7 @@ public:
private:
/// The cairo context.
cairo_t* _cr;
- boost::scoped_array<boost::uint8_t> _video_buffer;
+ std::unique_ptr<std::uint8_t[]> _video_buffer;
std::vector<PathVec> _masks;
size_t _video_bufsize;
bool _drawing_mask;
diff --git a/librender/opengl/Renderer_ogl.cpp b/librender/opengl/Renderer_ogl.cpp
index 652ee6e..b377a9e 100644
--- a/librender/opengl/Renderer_ogl.cpp
+++ b/librender/opengl/Renderer_ogl.cpp
@@ -24,11 +24,12 @@
#include "Renderer_ogl.h"
#include <boost/utility.hpp>
-#include <boost/bind.hpp>
+#include <iterator>
+#include <functional>
#include <list>
#include <cstring>
#include <cmath>
-#include <boost/scoped_ptr.hpp>
+#include <memory>
#include "swf/ShapeRecord.h"
#include "GnashEnums.h"
@@ -127,7 +128,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();
@@ -162,10 +163,10 @@ public:
private:
inline bool ogl_accessible() const;
void setup() const;
- void upload(boost::uint8_t* data, size_t width, size_t height) const;
+ void upload(std::uint8_t* data, size_t width, size_t height) const;
- mutable boost::scoped_ptr<image::GnashImage> _img;
- mutable boost::scoped_ptr<image::GnashImage> _cache;
+ mutable std::unique_ptr<image::GnashImage> _img;
+ mutable std::unique_ptr<image::GnashImage> _cache;
GLenum _pixel_format;
GLenum _ogl_img_type;
mutable bool _ogl_accessible;
@@ -223,7 +224,7 @@ public:
OSRenderMesa(size_t width, size_t height)
: _width(width),
_height(height),
- _buffer(new boost::uint8_t[width * height * 3]),
+ _buffer(new std::uint8_t[width * height * 3]),
#if OSMESA_MAJOR_VERSION * 100 + OSMESA_MINOR_VERSION >= 305
_context(OSMesaCreateContextExt(OSMESA_RGB, 0, 2, 0, NULL))
#else
@@ -279,7 +280,7 @@ public:
private:
size_t _width;
size_t _height;
- boost::scoped_array<boost::uint8_t> _buffer;
+ std::unique_ptr<std::uint8_t[]> _buffer;
OSMesaContext _context;
};
@@ -357,7 +358,7 @@ class
PointSerializer
{
public:
- PointSerializer(std::vector<boost::int16_t>& dest)
+ PointSerializer(std::vector<std::int16_t>& dest)
:
_dest(dest)
{}
@@ -368,7 +369,7 @@ public:
_dest.push_back(p.y);
}
private:
- std::vector<boost::int16_t>& _dest;
+ std::vector<std::int16_t>& _dest;
};
}
@@ -413,10 +414,8 @@ std::vector<oglVertex> interpolate(const std::vector<Edge>& edges,
std::vector<oglVertex> shape_points;
shape_points.push_back(oglVertex(anchor));
- for (std::vector<Edge>::const_iterator it = edges.begin(), end = edges.end();
- it != end; ++it) {
- const Edge& the_edge = *it;
-
+ for (const Edge& the_edge : edges) {
+
point target(the_edge.ap.x, the_edge.ap.y);
if (the_edge.straight()) {
@@ -496,9 +495,8 @@ Tesselator::tesselate()
{
gluTessEndPolygon(_tessobj);
- for (std::vector<GLdouble*>::iterator it = _vertices.begin(),
- end = _vertices.end(); it != end; ++it) {
- delete [] *it;
+ for (GLdouble* vertex: _vertices) {
+ delete [] vertex;
}
_vertices.clear();
@@ -540,7 +538,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()),
@@ -596,8 +594,8 @@ bitmap_info_ogl::setup() const
while (h < _img->height()) { h <<= 1; }
}
- boost::scoped_array<boost::uint8_t> resized_data(
- new boost::uint8_t[w * h * _img->channels()]);
+ std::unique_ptr<std::uint8_t[]> resized_data(
+ new std::uint8_t[w * h * _img->channels()]);
// Q: Would mipmapping these textures aid in performance?
GLint rv = gluScaleImage(_pixel_format, _img->width(),
@@ -615,7 +613,7 @@ bitmap_info_ogl::setup() const
}
void
-bitmap_info_ogl::upload(boost::uint8_t* data, size_t width, size_t height) const
+bitmap_info_ogl::upload(std::uint8_t* data, size_t width, size_t height) const
{
glTexParameteri(_ogl_img_type, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
@@ -692,7 +690,7 @@ void
for_each(C& container, R (T::*pmf)(const A&),const A& arg)
{
std::for_each(container.begin(), container.end(),
- boost::bind(pmf, _1, boost::ref(arg)));
+ std::bind(pmf, std::placeholders::_1, std::ref(arg)));
}
@@ -703,6 +701,8 @@ public:
Renderer_ogl()
: _xscale(1.0),
_yscale(1.0),
+ _width(0.0),
+ _height(0.0),
_drawing_mask(false)
{
}
@@ -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();
@@ -773,18 +773,18 @@ public:
*it++ = *(im->begin() + i);
if (!(i % 3)) *it++ = 0xff;
}
- im = rgba;
+ im = std::move(rgba);
}
case image::TYPE_RGBA:
- return new bitmap_info_ogl(im, GL_RGBA, ogl_accessible());
+ return new bitmap_info_ogl(std::move(im), GL_RGBA, ogl_accessible());
default:
std::abort();
}
}
- boost::shared_ptr<GnashTexture> getCachedTexture(image::GnashImage *frame)
+ std::shared_ptr<GnashTexture> getCachedTexture(image::GnashImage *frame)
{
- boost::shared_ptr<GnashTexture> texture;
+ std::shared_ptr<GnashTexture> texture;
GnashTextureFormat frameFormat(frame->type());
unsigned int frameFlags;
@@ -803,7 +803,7 @@ public:
}
// Look for a texture with the same dimensions and type
- std::list< boost::shared_ptr<GnashTexture> >::iterator it;
+ std::list< std::shared_ptr<GnashTexture> >::iterator it;
for (it = _cached_textures.begin(); it != _cached_textures.end(); ++it) {
if ((*it)->width() == frame->width() &&
(*it)->height() == frame->height() &&
@@ -871,7 +871,7 @@ public:
glEndList();
- boost::shared_ptr<GnashTexture> texture = getCachedTexture(frame);
+ std::shared_ptr<GnashTexture> texture = getCachedTexture(frame);
if (!texture.get())
return;
@@ -908,7 +908,7 @@ public:
}
private:
- void reallyDrawVideoFrame(boost::shared_ptr<GnashTexture> texture, const SWFMatrix* m, const SWFRect* bounds)
+ void reallyDrawVideoFrame(std::shared_ptr<GnashTexture> texture, const SWFMatrix* m, const SWFRect* bounds)
{
glPushAttrib(GL_ENABLE_BIT | GL_COLOR_BUFFER_BIT);
glPushMatrix();
@@ -957,7 +957,7 @@ private:
public:
virtual Renderer* startInternalRender(image::GnashImage& /*im*/) {
- return 0;
+ return nullptr;
}
virtual void endInternalRender() {}
@@ -1067,8 +1067,8 @@ public:
glDeleteLists(1, _render_indices.size());
_render_indices.clear();
- for (size_t i = 0; i < _render_textures.size(); i++)
- _cached_textures.push_front(_render_textures[i]);
+ for (auto& texture : _render_textures)
+ _cached_textures.push_front(texture);
_render_textures.clear();
check_error();
@@ -1088,7 +1088,7 @@ public:
glColor3ub(color.m_r, color.m_g, color.m_b);
- std::vector<boost::int16_t> pointList;
+ std::vector<std::int16_t> pointList;
pointList.reserve(numPoints * 2);
std::for_each(coords.begin(), coords.end(), PointSerializer(pointList));
@@ -1099,7 +1099,7 @@ public:
// Draw a dot on the beginning and end coordinates to round lines.
// glVertexPointer: skip all but the first and last coordinates in the line.
- glVertexPointer(2, GL_SHORT, (sizeof(boost::int16_t) * 2) *
+ glVertexPointer(2, GL_SHORT, (sizeof(std::int16_t) * 2) *
(numPoints - 1), &pointList.front());
glEnable(GL_POINT_SMOOTH); // Draw a round (antialiased) point.
glDrawArrays(GL_POINTS, 0, 2);
@@ -1184,7 +1184,7 @@ public:
// Call add_paths for each mask.
std::for_each(_masks.begin(), _masks.end(),
- boost::bind(&Renderer_ogl::add_paths, this, _1));
+ std::bind(&Renderer_ogl::add_paths, this, std::placeholders::_1));
glStencilOp (GL_KEEP, GL_KEEP, GL_KEEP);
glStencilFunc(GL_EQUAL, _masks.size(), _masks.size());
@@ -1296,7 +1296,7 @@ public:
if (target_x == to_connect.ap.x &&
target_y == to_connect.ap.y) {
- return NULL;
+ return nullptr;
}
for (std::list<const Path*>::const_iterator it = path_refs.begin(), end = path_refs.end();
@@ -1320,17 +1320,15 @@ public:
}
- return NULL;
+ return nullptr;
}
PathVec normalize_paths(const PathVec &paths)
{
PathVec normalized;
- for (PathVec::const_iterator it = paths.begin(), end = paths.end();
- it != end; ++it) {
- const Path& cur_path = *it;
-
+ for (const Path& cur_path : paths) {
+
if (cur_path.m_edges.empty()) {
continue;
@@ -1478,9 +1476,7 @@ public:
PathPointMap pathpoints;
- for (PathVec::const_iterator it = path_vec.begin(), end = path_vec.end();
- it != end; ++it) {
- const Path& cur_path = *it;
+ for (const Path& cur_path : path_vec) {
if (!cur_path.m_edges.size()) {
continue;
@@ -1509,10 +1505,8 @@ public:
const std::vector<LineStyle>& line_styles)
{
- for (PathVec::const_iterator it = path_vec.begin(), end = path_vec.end();
- it != end; ++it) {
- const Path& cur_path = *it;
-
+ for (const Path& cur_path : path_vec) {
+
if (!cur_path.m_line) {
continue;
}
@@ -1553,9 +1547,7 @@ public:
std::list<PathPtrVec> contours;
- for (PathPtrVec::const_iterator it = paths.begin(), end = paths.end();
- it != end; ++it) {
- const Path* cur_path = *it;
+ for (const Path* cur_path : paths) {
path_refs.push_back(cur_path);
}
@@ -1581,7 +1573,7 @@ public:
contour.push_back(connector);
const Path* tmp = connector;
- connector = find_connecting_path(*connector, std::list<const Path*>(boost::next(it), end));
+ connector = find_connecting_path(*connector, std::list<const Path*>(std::next(it), end));
// make sure we don't iterate over the connecting path in the for loop.
path_refs.remove(tmp);
@@ -1597,10 +1589,8 @@ public:
void draw_mask(const PathVec& path_vec)
{
- for (PathVec::const_iterator it = path_vec.begin(), end = path_vec.end();
- it != end; ++it) {
- const Path& cur_path = *it;
-
+ for (const Path& cur_path : path_vec) {
+
if (cur_path.m_fill0 || cur_path.m_fill1) {
_masks.back().push_back(cur_path);
_masks.back().back().m_line = 0;
@@ -1612,10 +1602,8 @@ public:
paths_by_style(const PathVec& path_vec, unsigned int style)
{
PathPtrVec paths;
- for (PathVec::const_iterator it = path_vec.begin(), end = path_vec.end();
- it != end; ++it) {
- const Path& cur_path = *it;
-
+ for (const Path& cur_path : path_vec) {
+
if (cur_path.m_fill0 == style) {
paths.push_back(&cur_path);
}
@@ -1634,7 +1622,8 @@ public:
apply_matrix_to_paths(std::vector<Path>& paths, const SWFMatrix& mat)
{
std::for_each(paths.begin(), paths.end(),
- boost::bind(&Path::transform, _1, boost::ref(mat)));
+ std::bind(&Path::transform, std::placeholders::_1,
+ std::ref(mat)));
//for_each(paths, &path::transform, mat);
}
@@ -1666,9 +1655,8 @@ public:
_tesselator.beginContour();
- for (PathPtrVec::const_iterator it = refs.begin(), end = refs.end();
- it != end; ++it) {
- const Path& cur_path = *(*it);
+ for (const auto& ref : refs) {
+ const Path& cur_path = *ref;
assert(pathpoints.find(&cur_path) != pathpoints.end());
@@ -1729,9 +1717,8 @@ public:
oglScopeMatrix scope_mat(xform.matrix);
- for (SWF::ShapeRecord::Subshapes::const_iterator it = shape.subshapes().begin(),
- end = shape.subshapes().end(); it != end; ++it) {
- const PathVec& path_vec = it->paths();
+ for (const SWF::Subshape& subshape : shape.subshapes()) {
+ const PathVec& path_vec = subshape.paths();
if (!path_vec.size()) {
// No paths. Nothing to draw...
@@ -1754,8 +1741,8 @@ public:
continue; // invisible character
}
- draw_subshape(it->paths(), xform.matrix, xform.colorTransform,
- it->fillStyles(), it->lineStyles());
+ draw_subshape(path_vec, xform.matrix, xform.colorTransform,
+ subshape.fillStyles(), subshape.lineStyles());
}
}
@@ -1837,12 +1824,12 @@ private:
std::vector<PathVec> _masks;
bool _drawing_mask;
- std::vector<boost::uint8_t> _render_indices;
- std::vector< boost::shared_ptr<GnashTexture> > _render_textures;
- std::list< boost::shared_ptr<GnashTexture> > _cached_textures;
+ std::vector<std::uint8_t> _render_indices;
+ std::vector< std::shared_ptr<GnashTexture> > _render_textures;
+ std::list< std::shared_ptr<GnashTexture> > _cached_textures;
#ifdef OSMESA_TESTING
- std::auto_ptr<OSRenderMesa> _offscreen;
+ std::unique_ptr<OSRenderMesa> _offscreen;
#endif
}; // class Renderer_ogl
@@ -1861,7 +1848,7 @@ namespace {
// TODO: this function is rubbish and shouldn't survive a rewritten OGL
// renderer.
rgba
-sampleGradient(const GradientFill& fill, boost::uint8_t ratio)
+sampleGradient(const GradientFill& fill, std::uint8_t ratio)
{
// By specs, first gradient should *always* be 0,
@@ -1908,7 +1895,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 +1938,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> >(std::move(im)));
return bi;
}
diff --git a/librender/opengles1/Renderer_gles1.cpp b/librender/opengles1/Renderer_gles1.cpp
index 47a0663..e8b04b1 100644
--- a/librender/opengles1/Renderer_gles1.cpp
+++ b/librender/opengles1/Renderer_gles1.cpp
@@ -56,7 +56,7 @@
#include "swf/ShapeRecord.h"
#include <boost/utility.hpp>
-#include <boost/bind.hpp>
+#include <functional>
#include "Renderer_gles1.h"
#include "GnashDevice.h"
@@ -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..081c3cd 100644
--- a/librender/opengles1/Renderer_gles1.h
+++ b/librender/opengles1/Renderer_gles1.h
@@ -118,9 +118,9 @@ public:
private:
inline bool ogl_accessible() const;
void setup() const;
- void upload(boost::uint8_t* data, size_t width, size_t height) const;
+ void upload(std::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/OpenVGBitmap.cpp b/librender/openvg/OpenVGBitmap.cpp
index 2482981..2fffe61 100644
--- a/librender/openvg/OpenVGBitmap.cpp
+++ b/librender/openvg/OpenVGBitmap.cpp
@@ -16,7 +16,7 @@
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-#include <boost/scoped_ptr.hpp>
+#include <memory>
#include <iostream>
#include "Geometry.h"
@@ -170,7 +170,7 @@ OpenVGBitmap::createRadialBitmap(float cx, float cy, float fx, float fy,
// Color Ramp is the same as for linear gradient
size_t entries = records.size() * 5;
- boost::scoped_array<VGfloat> ramps(new VGfloat[entries]);
+ std::unique_ptr<VGfloat[]> ramps(new VGfloat[entries]);
int j = 0;
for (size_t i=0; i!= records.size(); ++i) {
@@ -235,7 +235,7 @@ OpenVGBitmap::createLinearBitmap(float x0, float y0, float x1, float y1,
// function will generate an error if the number of values
// submitted is not a multiple of 5 (zero is acceptable)
size_t entries = records.size() * 5;
- boost::scoped_array<VGfloat> ramps(new VGfloat[entries]);
+ std::unique_ptr<VGfloat[]> ramps(new VGfloat[entries]);
int j = 0;
for (size_t i=0; i!= records.size(); ++i) {
std::cerr << "The record ratio is: " << records[i].ratio/255.0f;
diff --git a/librender/openvg/OpenVGBitmap.h b/librender/openvg/OpenVGBitmap.h
index fd812d9..cb31955 100644
--- a/librender/openvg/OpenVGBitmap.h
+++ b/librender/openvg/OpenVGBitmap.h
@@ -60,7 +60,7 @@ public:
VGPaint getFillPaint() const { return _vgpaint; }
int getWidth() { return _image->width(); }
int getHeight() { return _image->height(); }
- boost::uint8_t *getData() const { return _image->begin(); }
+ std::uint8_t *getData() const { return _image->begin(); }
OpenVGBitmap *createRadialBitmap(float x0, float y0, float x1, float y1,
float radial, const SWFCxForm& cx,
@@ -76,7 +76,7 @@ public:
CachedBitmap *bitmap, VGPaint paint);
private:
- boost::scoped_ptr<image::GnashImage> _image;
+ std::unique_ptr<image::GnashImage> _image;
VGImageFormat _pixel_format;
VGImage _vgimage;
VGPaint _vgpaint;
diff --git a/librender/openvg/OpenVGRenderer.cpp b/librender/openvg/OpenVGRenderer.cpp
index 8ad89aa..d1f5fbc 100644
--- a/librender/openvg/OpenVGRenderer.cpp
+++ b/librender/openvg/OpenVGRenderer.cpp
@@ -24,8 +24,9 @@
#include <cstring>
#include <cmath>
#include <iostream>
+#include <iterator>
+#include <functional>
#include <boost/utility.hpp>
-#include <boost/bind.hpp>
#include "log.h"
#include "RGBA.h"
@@ -198,7 +199,7 @@ void
for_each(C& container, R (T::*pmf)(const A&),const A& arg)
{
std::for_each(container.begin(), container.end(),
- boost::bind(pmf, _1, boost::ref(arg)));
+ std::bind(pmf, _1, std::ref(arg)));
}
Renderer_ovg::Renderer_ovg()
@@ -298,7 +299,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;
@@ -630,7 +631,7 @@ Renderer_ovg::apply_mask()
#endif
// Call add_paths for each mask.
std::for_each(_masks.begin(), _masks.end(),
- boost::bind(&Renderer_ovg::add_paths, this, _1));
+ std::bind(&Renderer_ovg::add_paths, this, _1));
vgSeti(VG_MASKING, VG_TRUE);
vgLoadMatrix (omat); // restore the current matrix
@@ -960,7 +961,7 @@ Renderer_ovg::get_contours(const PathPtrVec &paths)
contour.push_back(connector);
const Path* tmp = connector;
- connector = find_connecting_path(*connector, std::list<const Path*>(boost::next(it), end));
+ connector = find_connecting_path(*connector, std::list<const Path*>(std::next(it), end));
// make sure we don't iterate over the connecting path in the for loop.
path_refs.remove(tmp);
@@ -1049,7 +1050,7 @@ Renderer_ovg::apply_matrix_to_paths(std::vector<Path>& paths, const SWFMatrix& m
// GNASH_REPORT_FUNCTION;
std::for_each(paths.begin(), paths.end(),
- boost::bind(&Path::transform, _1, boost::ref(mat)));
+ std::bind(&Path::transform, _1, std::ref(mat)));
}
void
diff --git a/librender/openvg/OpenVGRenderer.h b/librender/openvg/OpenVGRenderer.h
index 535a73e..de520a6 100644
--- a/librender/openvg/OpenVGRenderer.h
+++ b/librender/openvg/OpenVGRenderer.h
@@ -32,8 +32,7 @@
#include <EGL/egl.h>
#include <vector>
#include <list>
-#include <boost/scoped_array.hpp>
-#include <boost/scoped_ptr.hpp>
+#include <memory>
#include "Geometry.h"
#include "Renderer.h"
@@ -81,7 +80,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..5fa0ff5 100644
--- a/librender/testr.cpp
+++ b/librender/testr.cpp
@@ -313,7 +313,7 @@ test_device(Renderer *renderer, const std::string &type)
cout << endl << "Testing " << type << " Device" << endl;
#if 0
- boost::shared_array<renderer::GnashDevice::dtype_t> devs = renderer->probeDevices();
+ std::unique_ptr<renderer::GnashDevice::dtype_t[]> devs = renderer->probeDevices();
if (devs) {
runtest.pass("Renderer::probeDevices()");
} else {
@@ -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();
@@ -405,9 +405,9 @@ test_renderer(Renderer *renderer, const std::string &type)
/// @vertex_count the number of x-y coordinates (vertices).
/// @color the color to be used to draw the line strip.
/// @mat the SWFMatrix to be used to transform the vertices.
- boost::uint16_t x = 10;
- boost::uint16_t y = 10;
- boost::uint16_t h = 10;
+ std::uint16_t x = 10;
+ std::uint16_t y = 10;
+ std::uint16_t h = 10;
std::vector<point> box = boost::assign::list_of
(point(x, y))
(point(x, y + h));
@@ -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);
@@ -618,7 +618,7 @@ test_iterators(Renderer *renderer, const std::string &type)
}
#if 0
- typedef boost::shared_ptr<GnashVaapiImageProxy> RenderImage;
+ typedef std::shared_ptr<GnashVaapiImageProxy> RenderImage;
typedef std::vector<RenderImage> RenderImages;
// Get first render 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/AuxStream.h b/libsound/AuxStream.h
index 5f87fea..f81f8e3 100644
--- a/libsound/AuxStream.h
+++ b/libsound/AuxStream.h
@@ -22,14 +22,14 @@
#include "InputStream.h" // for inheritance
-#include <boost/cstdint.hpp> // For C99 int types
+#include <cstdint> // For C99 int types
namespace gnash {
namespace sound {
/// @see sound_handler::attach_aux_streamer
typedef unsigned int (*aux_streamer_ptr)(void *udata,
- boost::int16_t* samples, unsigned int nSamples, bool& eof);
+ std::int16_t* samples, unsigned int nSamples, bool& eof);
class AuxStream : public InputStream {
public:
@@ -42,7 +42,7 @@ public:
{}
// See dox in InputStream.h
- unsigned int fetchSamples(boost::int16_t* to, unsigned int nSamples)
+ unsigned int fetchSamples(std::int16_t* to, unsigned int nSamples)
{
unsigned int wrote = _cb(_cbArg, to, nSamples, _eof);
_samplesFetched += wrote;
diff --git a/libsound/EmbedSound.cpp b/libsound/EmbedSound.cpp
index 9f18ba0..a4853d8 100644
--- a/libsound/EmbedSound.cpp
+++ b/libsound/EmbedSound.cpp
@@ -21,7 +21,7 @@
#include "EmbedSound.h"
#include <vector>
-#include <boost/cstdint.hpp>
+#include <cstdint>
#include "EmbedSoundInst.h"
#include "SoundInfo.h"
@@ -32,10 +32,10 @@
namespace gnash {
namespace sound {
-EmbedSound::EmbedSound(std::auto_ptr<SimpleBuffer> data,
- const media::SoundInfo& info, int nVolume)
+EmbedSound::EmbedSound(std::unique_ptr<SimpleBuffer> data,
+ media::SoundInfo info, int nVolume)
:
- soundinfo(info),
+ soundinfo(std::move(info)),
volume(nVolume),
_buf(data.release())
{
@@ -45,7 +45,7 @@ EmbedSound::EmbedSound(std::auto_ptr<SimpleBuffer> data,
void
EmbedSound::clearInstances()
{
- boost::mutex::scoped_lock lock(_soundInstancesMutex);
+ std::lock_guard<std::mutex> lock(_soundInstancesMutex);
_soundInstances.clear();
}
@@ -56,15 +56,15 @@ 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);
+ std::lock_guard<std::mutex> lock(_soundInstancesMutex);
// Push the sound onto the playing sounds container.
_soundInstances.push_back(ret.get());
@@ -80,7 +80,7 @@ EmbedSound::~EmbedSound()
void
EmbedSound::eraseActiveSound(EmbedSoundInst* inst)
{
- boost::mutex::scoped_lock lock(_soundInstancesMutex);
+ std::lock_guard<std::mutex> lock(_soundInstancesMutex);
Instances::iterator it = std::find( _soundInstances.begin(),
_soundInstances.end(), inst);
@@ -96,32 +96,31 @@ EmbedSound::eraseActiveSound(EmbedSoundInst* inst)
bool
EmbedSound::isPlaying() const
{
- boost::mutex::scoped_lock lock(_soundInstancesMutex);
+ std::lock_guard<std::mutex> lock(_soundInstancesMutex);
return !_soundInstances.empty();
}
size_t
EmbedSound::numPlayingInstances() const
{
- boost::mutex::scoped_lock lock(_soundInstancesMutex);
+ std::lock_guard<std::mutex> lock(_soundInstancesMutex);
return _soundInstances.size();
}
EmbedSoundInst*
EmbedSound::firstPlayingInstance() const
{
- boost::mutex::scoped_lock lock(_soundInstancesMutex);
+ std::lock_guard<std::mutex> lock(_soundInstancesMutex);
return _soundInstances.front();
}
void
EmbedSound::getPlayingInstances(std::vector<InputStream*>& to) const
{
- boost::mutex::scoped_lock lock(_soundInstancesMutex);
- for (Instances::const_iterator i=_soundInstances.begin(), e=_soundInstances.end();
- i!=e; ++i)
+ std::lock_guard<std::mutex> lock(_soundInstancesMutex);
+ for (InputStream* stream : _soundInstances)
{
- to.push_back(*i);
+ to.push_back(stream);
}
}
diff --git a/libsound/EmbedSound.h b/libsound/EmbedSound.h
index 61a0890..5a6063e 100644
--- a/libsound/EmbedSound.h
+++ b/libsound/EmbedSound.h
@@ -21,10 +21,11 @@
#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>
+#include <memory>
+#include <mutex>
+#include <list>
#include "SimpleBuffer.h" // for composition
#include "SoundInfo.h" // for composition
@@ -59,7 +60,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, media::SoundInfo info,
int volume);
~EmbedSound();
@@ -75,7 +76,7 @@ public:
}
/// Return a pointer to the underlying buffer
- const boost::uint8_t* data() const {
+ const std::uint8_t* data() const {
return _buf->data();
}
@@ -84,7 +85,7 @@ public:
/// @param pos The offset value.
/// An assertion will fail if pos > size()
///
- const boost::uint8_t* data(size_t pos) const {
+ const std::uint8_t* data(size_t pos) const {
assert(pos < _buf->size());
return _buf->data()+pos;
}
@@ -136,7 +137,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);
@@ -176,7 +177,7 @@ public:
private:
/// The undecoded data
- boost::scoped_ptr<SimpleBuffer> _buf;
+ std::unique_ptr<SimpleBuffer> _buf;
/// Playing instances of this sound definition
//
@@ -186,7 +187,7 @@ private:
/// Mutex protecting access to _soundInstances
//
- mutable boost::mutex _soundInstancesMutex;
+ mutable std::mutex _soundInstancesMutex;
};
} // gnash.sound namespace
diff --git a/libsound/EmbedSoundInst.cpp b/libsound/EmbedSoundInst.cpp
index cecfb52..9ef4b05 100644
--- a/libsound/EmbedSoundInst.cpp
+++ b/libsound/EmbedSoundInst.cpp
@@ -96,9 +96,9 @@ EmbedSoundInst::decodeNextBlock()
// to decode not to bother further streamlining it
// See https://savannah.gnu.org/bugs/?25456 for a testcase
// showing the benefit of chunked decoding.
- const boost::uint32_t chunkSize = 65535;
+ const std::uint32_t chunkSize = 65535;
- boost::uint32_t inputSize = _soundDef.size() - decodingPosition;
+ std::uint32_t inputSize = _soundDef.size() - decodingPosition;
if ( inputSize > chunkSize ) inputSize = chunkSize;
#ifdef GNASH_DEBUG_SOUNDS_DECODING
@@ -106,11 +106,11 @@ EmbedSoundInst::decodeNextBlock()
#endif
assert(inputSize);
- const boost::uint8_t* input = _soundDef.data(decodingPosition);
+ const std::uint8_t* input = _soundDef.data(decodingPosition);
- boost::uint32_t consumed = 0;
- boost::uint32_t decodedDataSize = 0;
- boost::uint8_t* decodedData = decoder().decode(input, inputSize,
+ std::uint32_t consumed = 0;
+ std::uint32_t decodedDataSize = 0;
+ std::uint8_t* decodedData = decoder().decode(input, inputSize,
decodedDataSize, consumed);
decodingPosition += consumed;
@@ -118,7 +118,7 @@ EmbedSoundInst::decodeNextBlock()
assert(!(decodedDataSize%2));
// @todo I hope there are no alignment issues in this cast from int8_t* to int16_t* !
- boost::int16_t* samples = reinterpret_cast<boost::int16_t*>(decodedData);
+ std::int16_t* samples = reinterpret_cast<std::int16_t*>(decodedData);
unsigned int nSamples = decodedDataSize/2;
#ifdef GNASH_DEBUG_MIXING
@@ -144,11 +144,11 @@ EmbedSoundInst::decodeNextBlock()
// decodedData ownership transferred here
- appendDecodedData(decodedData, decodedDataSize);
+ appendDecodedData(SimpleBuffer(decodedDataSize, decodedData));
}
void
-EmbedSoundInst::applyEnvelopes(boost::int16_t* samples, unsigned int nSamples,
+EmbedSoundInst::applyEnvelopes(std::int16_t* samples, unsigned int nSamples,
unsigned int firstSampleOffset, const SoundEnvelopes& env)
{
@@ -168,7 +168,7 @@ EmbedSoundInst::applyEnvelopes(boost::int16_t* samples, unsigned int nSamples,
assert(env[current_env].m_mark44 < firstSampleOffset+nSamples);
// Get next envelope position (absolute samples offset)
- boost::uint32_t next_env_pos = 0;
+ std::uint32_t next_env_pos = 0;
if (current_env == (env.size() - 1)) {
// If there is no "next envelope" then set the next envelope
// start point to be unreachable
diff --git a/libsound/EmbedSoundInst.h b/libsound/EmbedSoundInst.h
index 27ff8cf..de88ada 100644
--- a/libsound/EmbedSoundInst.h
+++ b/libsound/EmbedSoundInst.h
@@ -21,7 +21,7 @@
#define SOUND_EMBEDSOUNDINST_H
#include <cassert>
-#include <boost/cstdint.hpp> // For C99 int types
+#include <cstdint> // For C99 int types
#include <limits>
#include "EmbedSound.h"
@@ -104,7 +104,7 @@ private:
///
/// @param env
/// SoundEnvelopes to apply.
- void applyEnvelopes(boost::int16_t* samples, unsigned int nSamples,
+ void applyEnvelopes(std::int16_t* samples, unsigned int nSamples,
unsigned int firstSampleNum, const SoundEnvelopes& env);
bool reachedCustomEnd() const;
@@ -135,7 +135,7 @@ private:
const SoundEnvelopes* envelopes;
/// Index of current envelope.
- boost::uint32_t current_env;
+ std::uint32_t current_env;
/// The encoded data
//
diff --git a/libsound/InputStream.h b/libsound/InputStream.h
index e11a451..41e7bed 100644
--- a/libsound/InputStream.h
+++ b/libsound/InputStream.h
@@ -21,7 +21,7 @@
#ifndef SOUND_INPUTSTREAM_H
#define SOUND_INPUTSTREAM_H
-#include <boost/cstdint.hpp> // For C99 int types
+#include <cstdint> // For C99 int types
namespace gnash {
namespace sound {
@@ -68,7 +68,7 @@ public:
/// if unable to process this and further requests due to internal
/// errors (not if it just happens to complete its source)
///
- virtual unsigned int fetchSamples(boost::int16_t* to, unsigned int nSamples)=0;
+ virtual unsigned int fetchSamples(std::int16_t* to, unsigned int nSamples)=0;
/// Return number of samples fetched from this stream
//
diff --git a/libsound/LiveSound.cpp b/libsound/LiveSound.cpp
index a13385e..83df3ef 100644
--- a/libsound/LiveSound.cpp
+++ b/libsound/LiveSound.cpp
@@ -33,9 +33,8 @@ namespace sound {
LiveSound::LiveSound(media::MediaHandler& mh, const media::SoundInfo& info,
size_t inPoint)
:
- _inPoint(inPoint * 4),
- _playbackPosition(_inPoint),
- _samplesFetched(0)
+ _samplesFetched(0),
+ _decodedBuffers(inPoint * 4)
{
createDecoder(mh, info);
}
@@ -51,7 +50,7 @@ LiveSound::createDecoder(media::MediaHandler& mh, const media::SoundInfo& si)
}
unsigned int
-LiveSound::fetchSamples(boost::int16_t* to, unsigned int nSamples)
+LiveSound::fetchSamples(std::int16_t* to, unsigned int nSamples)
{
unsigned int fetchedSamples = 0;
@@ -59,26 +58,16 @@ LiveSound::fetchSamples(boost::int16_t* to, unsigned int nSamples)
unsigned int availableSamples = decodedSamplesAhead();
if (availableSamples) {
- const boost::int16_t* data = getDecodedData(_playbackPosition);
+ size_t bytesCopied = _decodedBuffers.copy(
+ reinterpret_cast<std::uint8_t*>(to), nSamples * 2);
- if (availableSamples >= nSamples) {
- std::copy(data, data + nSamples, to);
- fetchedSamples += nSamples;
-
- // Update playback position (samples are 16bit)
- _playbackPosition += nSamples * 2;
+ fetchedSamples += bytesCopied / 2;
+ if (availableSamples >= nSamples) {
break; // fetched all
- }
- else {
+ } else {
// not enough decoded samples available:
// copy what we have and go on
- std::copy(data, data + availableSamples, to);
- fetchedSamples += availableSamples;
-
- // Update playback position (samples are 16bit)
- _playbackPosition += availableSamples * 2;
-
to += availableSamples;
nSamples -= availableSamples;
assert(nSamples);
diff --git a/libsound/LiveSound.h b/libsound/LiveSound.h
index 8da4719..1463bab 100644
--- a/libsound/LiveSound.h
+++ b/libsound/LiveSound.h
@@ -20,9 +20,10 @@
#ifndef SOUND_LIVESOUND_H
#define SOUND_LIVESOUND_H
-#include <boost/scoped_ptr.hpp>
+#include <memory>
#include <cassert>
-#include <boost/cstdint.hpp> // For C99 int types
+#include <cstdint> // For C99 int types
+#include <iostream>
#include "InputStream.h"
#include "AudioDecoder.h"
@@ -39,6 +40,121 @@ namespace gnash {
namespace gnash {
namespace sound {
+
+/// Maintains a collection of SimpleBuffers, providing stateful sequential
+/// read access to the data contained therein.
+//
+// TODO: this shares some functionality with CursoredBuffer, and the two
+// classes might be merged.
+class Buffers {
+public:
+ Buffers(size_t in_point)
+ : _buffers(),
+ _index(0),
+ _pos(0),
+ _consumed(0),
+ _in_point(in_point)
+ {}
+
+ Buffers(const Buffers&) = delete;
+ Buffers& operator=(const Buffers&) = delete;
+
+ /// Append a buffer of data to be read by the consumer later.
+ void append(SimpleBuffer buf) {
+ _buffers.push_back(std::move(buf));
+ consumeInPoint();
+ }
+
+ void restart()
+ {
+ _index = 0;
+ _consumed = 0;
+ consumeInPoint();
+ }
+
+ /// Copy up to the given number of bytes to the given buffer.
+ //
+ /// @to points to a buffer to be written to.
+ /// @bytes number of bytes to be written.
+ /// @return number of bytes actually written.
+ size_t copy(std::uint8_t* to, size_t bytes) {
+ assert(_consumed >= _in_point);
+
+ size_t bytes_remaining = bytes;
+
+ for (; _index < _buffers.size(); ++_index) {
+ const SimpleBuffer& buffer = _buffers[_index];
+
+ size_t to_copy = std::min(bytes_remaining, buffer.size() - _pos);
+
+ std::copy(buffer.data() + _pos, buffer.data() + _pos + to_copy, to);
+ to += to_copy;
+ bytes_remaining -= to_copy;
+ _pos += to_copy;
+
+ if (_pos == buffer.size()) {
+ ++_index;
+ _pos = 0;
+ break;
+ }
+
+ if (bytes_remaining == 0) {
+ break;
+ }
+ }
+
+ size_t written = bytes - bytes_remaining;
+ _consumed += written;
+ return written;
+ }
+
+ /// @return total number of bytes contained.
+ std::uint64_t countBytes() const
+ {
+ std::uint64_t bytes = 0;
+ for (const SimpleBuffer& buffer : _buffers) {
+ bytes += buffer.size();
+ }
+ return bytes;
+ }
+
+ /// @return number of bytes previously copied by calls to copy().
+ std::uint64_t consumed() const
+ {
+ return std::max<uint64_t>(_consumed, _in_point);
+ }
+
+private:
+ void consumeInPoint() {
+ if (_consumed >= _in_point) {
+ return;
+ }
+ size_t inPoint = _in_point;
+
+ for (const SimpleBuffer& buffer : _buffers) {
+ size_t advance = std::min(inPoint, buffer.size());
+ if (advance == buffer.size()) {
+ ++_index;
+ inPoint -= advance;
+ } else {
+ _pos = advance;
+ break;
+ }
+ }
+ _consumed = _in_point;
+ }
+
+ std::vector<SimpleBuffer> _buffers;
+ /// Zero-based index of the buffer currently being indicated.
+ size_t _index;
+ /// Current position inside the current buffer.
+ size_t _pos;
+ /// Total bytes consumed by calls to copy().
+ std::uint64_t _consumed;
+ /// Number of bytes to skip from the input.
+ size_t _in_point;
+};
+
/// Instance of a defined %sound (LiveSoundData)
//
/// This class contains a pointer to the LiveSoundData used for playing
@@ -57,13 +173,6 @@ protected:
LiveSound(media::MediaHandler& mh, const media::SoundInfo& info,
size_t inPoint);
- // Pointer handling and checking functions
- const boost::int16_t* getDecodedData(unsigned long int pos) const {
- assert(pos < _decodedData.size());
- return reinterpret_cast<const boost::int16_t*>(
- _decodedData.data() + pos);
- }
-
/// Called when more decoded sound data is required.
//
/// This will be called whenever no more decoded data is available
@@ -77,8 +186,8 @@ protected:
/// Start from the beginning again.
void restart() {
- _playbackPosition = _inPoint;
_samplesFetched = 0;
+ _decodedBuffers.restart();
}
/// How many samples have been fetched since the beginning
@@ -88,28 +197,27 @@ protected:
return _samplesFetched;
}
- size_t playbackPosition() const {
- return _playbackPosition;
+ std::uint64_t playbackPosition() const {
+ return _decodedBuffers.consumed();
}
media::AudioDecoder& decoder() const {
return *_decoder;
}
- void appendDecodedData(boost::uint8_t* data, unsigned int size) {
- _decodedData.append(data, size);
- delete [] data;
+ void appendDecodedData(SimpleBuffer data) {
+ _decodedBuffers.append(std::move(data));
}
/// Return number of already-decoded samples available
/// from playback position on
unsigned int decodedSamplesAhead() const {
- const unsigned int dds = _decodedData.size();
- if (dds <= _playbackPosition) return 0;
+ const unsigned int dds = _decodedBuffers.countBytes();
+ if (dds <= playbackPosition()) return 0;
- size_t bytesAhead = dds - _playbackPosition;
- bytesAhead = checkEarlierEnd(bytesAhead, _playbackPosition);
+ size_t bytesAhead = dds - playbackPosition();
+ bytesAhead = checkEarlierEnd(bytesAhead, playbackPosition());
assert(!(bytesAhead % 2));
@@ -128,25 +236,20 @@ private:
}
// See dox in sound_handler.h (InputStream)
- unsigned int fetchSamples(boost::int16_t* to, unsigned int nSamples);
+ unsigned int fetchSamples(std::int16_t* to, unsigned int nSamples);
void createDecoder(media::MediaHandler& mediaHandler,
const media::SoundInfo& info);
virtual bool decodingCompleted() const = 0;
- const size_t _inPoint;
-
- /// Current playback position in the decoded stream
- size_t _playbackPosition;
-
/// Number of samples fetched so far.
unsigned long _samplesFetched;
- boost::scoped_ptr<media::AudioDecoder> _decoder;
+ std::unique_ptr<media::AudioDecoder> _decoder;
- /// The decoded buffer
- SimpleBuffer _decodedData;
+ /// The decoded buffers
+ Buffers _decodedBuffers;
};
diff --git a/libsound/NullSoundHandler.h b/libsound/NullSoundHandler.h
index 40f2343..ac4d4b2 100644
--- a/libsound/NullSoundHandler.h
+++ b/libsound/NullSoundHandler.h
@@ -39,14 +39,14 @@ public:
sound_handler* _mixer;
- NullSoundHandler(media::MediaHandler* m, sound_handler* mixer=0)
+ NullSoundHandler(media::MediaHandler* m, sound_handler* mixer=nullptr)
:
sound_handler(m),
_mixer(mixer)
{}
// If a _mixer was given, let it do the mixing!
- void mix(boost::int16_t* outSamples, boost::int16_t* inSamples,
+ void mix(std::int16_t* outSamples, std::int16_t* inSamples,
unsigned int nSamples, float volume)
{
if ( _mixer ) _mixer->mix(outSamples, inSamples, nSamples, volume);
diff --git a/libsound/SoundEnvelope.h b/libsound/SoundEnvelope.h
index 610df06..8897179 100644
--- a/libsound/SoundEnvelope.h
+++ b/libsound/SoundEnvelope.h
@@ -20,7 +20,7 @@
#ifndef SOUND_SOUNDENVELOPE_H
#define SOUND_SOUNDENVELOPE_H
-#include <boost/cstdint.hpp> // For C99 int types
+#include <cstdint> // For C99 int types
#include <vector> // for SoundEnvelopes typedef
@@ -47,13 +47,13 @@ public:
/// with a sample rate of 5.5K is given as position 8 in
/// the envelope.
///
- boost::uint32_t m_mark44;
+ std::uint32_t m_mark44;
/// Volume for the left channel (0..32768)
- boost::uint16_t m_level0;
+ std::uint16_t m_level0;
/// Volume for the right channel (0..32768)
- boost::uint16_t m_level1;
+ std::uint16_t m_level1;
};
/// A vector of SoundEnvelope objects
diff --git a/libsound/SoundUtils.h b/libsound/SoundUtils.h
index a45e163..d2c0aff 100644
--- a/libsound/SoundUtils.h
+++ b/libsound/SoundUtils.h
@@ -21,8 +21,8 @@
#define GNASH_SOUND_UTILS_H
#include <algorithm>
-#include <boost/bind.hpp>
-#include <boost/cstdint.hpp>
+#include <functional>
+#include <cstdint>
#include "SoundInfo.h"
@@ -39,7 +39,7 @@ inline void
adjustVolume(T* start, T* end, float volume)
{
std::transform(start, end, start,
- boost::bind(std::multiplies<float>(), volume, _1));
+ [volume](const T& volsource) { return volume * volsource; });
}
/// Convert SWF-specified number of samples to output number of samples
diff --git a/libsound/StreamingSound.cpp b/libsound/StreamingSound.cpp
index a85d898..4b56f5f 100644
--- a/libsound/StreamingSound.cpp
+++ b/libsound/StreamingSound.cpp
@@ -77,21 +77,21 @@ StreamingSound::decodeNextBlock()
// If we didn't decode all of a block, do so now. Not sure if this
// can happen.
- const boost::uint32_t inputSize = block.size() - _positionInBlock;
+ const std::uint32_t inputSize = block.size() - _positionInBlock;
- boost::uint32_t consumed = 0;
+ std::uint32_t consumed = 0;
// Empty blocks serve to synchronize, so don't decode but carry on.
if (inputSize) {
- boost::uint32_t decodedDataSize = 0;
- const boost::uint8_t* input = block.data() + _positionInBlock;
- boost::uint8_t* decodedData = decoder().decode(input, inputSize,
+ std::uint32_t decodedDataSize = 0;
+ const std::uint8_t* input = block.data() + _positionInBlock;
+ std::uint8_t* decodedData = decoder().decode(input, inputSize,
decodedDataSize, consumed);
assert(!(decodedDataSize % 2));
- boost::int16_t* samples =
- reinterpret_cast<boost::int16_t*>(decodedData);
+ std::int16_t* samples =
+ reinterpret_cast<std::int16_t*>(decodedData);
unsigned int nSamples = decodedDataSize / 2;
if (_soundDef.volume != 100) {
@@ -99,7 +99,7 @@ StreamingSound::decodeNextBlock()
}
// decodedData ownership transferred here
- appendDecodedData(decodedData, decodedDataSize);
+ appendDecodedData(SimpleBuffer(decodedDataSize, decodedData));
}
// Check if the entire block was consumed.
diff --git a/libsound/StreamingSound.h b/libsound/StreamingSound.h
index 45cfb40..6b5276d 100644
--- a/libsound/StreamingSound.h
+++ b/libsound/StreamingSound.h
@@ -20,9 +20,9 @@
#ifndef SOUND_STREAMINGSOUND_H
#define SOUND_STREAMINGSOUND_H
-#include <boost/scoped_ptr.hpp>
+#include <memory>
#include <cassert>
-#include <boost/cstdint.hpp> // For C99 int types
+#include <cstdint> // For C99 int types
#include "LiveSound.h"
#include "StreamingSoundData.h"
diff --git a/libsound/StreamingSoundData.cpp b/libsound/StreamingSoundData.cpp
index 34c16ba..d02c07f 100644
--- a/libsound/StreamingSoundData.cpp
+++ b/libsound/StreamingSoundData.cpp
@@ -21,7 +21,7 @@
#include "StreamingSoundData.h"
#include <vector>
-#include <boost/cstdint.hpp>
+#include <cstdint>
#include "SoundInfo.h"
#include "MediaHandler.h"
@@ -35,20 +35,19 @@ namespace sound {
size_t
-StreamingSoundData::append(std::auto_ptr<SimpleBuffer> data,
+StreamingSoundData::append(SimpleBuffer data,
size_t sampleCount, int seekSamples)
{
- assert(data.get());
- _buffers.push_back(data);
- _blockData.push_back(BlockData(sampleCount, seekSamples));
+ _buffers.push_back(std::move(data));
+ _blockData.emplace_back(sampleCount, seekSamples);
assert(_blockData.size() == _buffers.size());
return _buffers.size() - 1;
}
-StreamingSoundData::StreamingSoundData(const media::SoundInfo& info,
+StreamingSoundData::StreamingSoundData(media::SoundInfo info,
int nVolume)
:
- soundinfo(info),
+ soundinfo(std::move(info)),
volume(nVolume)
{
}
@@ -63,7 +62,7 @@ StreamingSoundData::playingBlock() const
void
StreamingSoundData::clearInstances()
{
- boost::mutex::scoped_lock lock(_soundInstancesMutex);
+ std::lock_guard<std::mutex> lock(_soundInstancesMutex);
_soundInstances.clear();
}
@@ -74,12 +73,12 @@ 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);
+ std::lock_guard<std::mutex> lock(_soundInstancesMutex);
// Push the sound onto the playing sounds container.
_soundInstances.push_back(ret.get());
@@ -95,7 +94,7 @@ StreamingSoundData::~StreamingSoundData()
void
StreamingSoundData::eraseActiveSound(InputStream* inst)
{
- boost::mutex::scoped_lock lock(_soundInstancesMutex);
+ std::lock_guard<std::mutex> lock(_soundInstancesMutex);
Instances::iterator it = std::find(
_soundInstances.begin(),
@@ -114,33 +113,31 @@ StreamingSoundData::eraseActiveSound(InputStream* inst)
bool
StreamingSoundData::isPlaying() const
{
- boost::mutex::scoped_lock lock(_soundInstancesMutex);
+ std::lock_guard<std::mutex> lock(_soundInstancesMutex);
return !_soundInstances.empty();
}
size_t
StreamingSoundData::numPlayingInstances() const
{
- boost::mutex::scoped_lock lock(_soundInstancesMutex);
+ std::lock_guard<std::mutex> lock(_soundInstancesMutex);
return _soundInstances.size();
}
InputStream*
StreamingSoundData::firstPlayingInstance() const
{
- boost::mutex::scoped_lock lock(_soundInstancesMutex);
+ std::lock_guard<std::mutex> lock(_soundInstancesMutex);
return _soundInstances.front();
}
void
StreamingSoundData::getPlayingInstances(std::vector<InputStream*>& to) const
{
- boost::mutex::scoped_lock lock(_soundInstancesMutex);
- for (Instances::const_iterator i=_soundInstances.begin(),
- e=_soundInstances.end();
- i!=e; ++i)
+ std::lock_guard<std::mutex> lock(_soundInstancesMutex);
+ for (InputStream* stream : _soundInstances)
{
- to.push_back(*i);
+ to.push_back(stream);
}
}
diff --git a/libsound/StreamingSoundData.h b/libsound/StreamingSoundData.h
index 6da7326..997b4b8 100644
--- a/libsound/StreamingSoundData.h
+++ b/libsound/StreamingSoundData.h
@@ -21,11 +21,10 @@
#define SOUND_STREAMING_SOUND_DATA_H
#include <vector>
-#include <memory>
#include <cassert>
-#include <boost/thread/mutex.hpp>
-#include <boost/scoped_ptr.hpp>
-#include <boost/ptr_container/ptr_vector.hpp>
+#include <list>
+#include <memory>
+#include <mutex>
#include "SoundInfo.h"
@@ -58,7 +57,7 @@ public:
//
/// @param info encoding info
/// @param nVolume initial volume (0..100).
- StreamingSoundData(const media::SoundInfo& info, int nVolume);
+ StreamingSoundData(media::SoundInfo info, int nVolume);
~StreamingSoundData();
@@ -68,7 +67,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(SimpleBuffer data, size_t sampleCount,
int seekSamples);
/// Do we have any data?
@@ -125,7 +124,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
@@ -181,9 +180,9 @@ private:
Instances _soundInstances;
/// Mutex protecting access to _soundInstances
- mutable boost::mutex _soundInstancesMutex;
+ mutable std::mutex _soundInstancesMutex;
- boost::ptr_vector<SimpleBuffer> _buffers;
+ std::vector<SimpleBuffer> _buffers;
std::vector<BlockData> _blockData;
};
diff --git a/libsound/WAVWriter.cpp b/libsound/WAVWriter.cpp
index dd1ce17..52ac98c 100644
--- a/libsound/WAVWriter.cpp
+++ b/libsound/WAVWriter.cpp
@@ -19,8 +19,7 @@
#include "WAVWriter.h"
-#include <cstring> // for strncpy
-#include <boost/cstdint.hpp>
+#include <cstdint>
#include <fstream> // for composition (file_stream)
#include <iostream>
@@ -36,23 +35,23 @@ namespace { // anonymous
// http://ftp.iptel.org/pub/sems/doc/full/current/wav__hdr_8c-source.html
struct WAV_HDR {
char rID[4]; // 'RIFF'
- boost::uint32_t rLen;
+ std::uint32_t rLen;
char wID[4]; // 'WAVE'
char fId[4]; // 'fmt '
- boost::uint32_t pcm_header_len; // varies...
- boost::int16_t wFormatTag;
- boost::int16_t nChannels; // 1,2 for stereo data is (l,r) pairs
- boost::uint32_t nSamplesPerSec;
- boost::uint32_t nAvgBytesPerSec;
- boost::int16_t nBlockAlign;
- boost::int16_t nBitsPerSample;
+ std::uint32_t pcm_header_len; // varies...
+ std::int16_t wFormatTag;
+ std::int16_t nChannels; // 1,2 for stereo data is (l,r) pairs
+ std::uint32_t nSamplesPerSec;
+ std::uint32_t nAvgBytesPerSec;
+ std::int16_t nBlockAlign;
+ std::int16_t nBitsPerSample;
};
// Chunk of wave file
// http://ftp.iptel.org/pub/sems/doc/full/current/wav__hdr_8c-source.html
struct CHUNK_HDR{
char dId[4]; // 'data' or 'fact'
- boost::uint32_t dLen;
+ std::uint32_t dLen;
};
} // end of anonymous namespace
@@ -81,10 +80,10 @@ WAVWriter::~WAVWriter()
/* public */
void
-WAVWriter::pushSamples(boost::int16_t* from, unsigned int nSamples)
+WAVWriter::pushSamples(std::int16_t* from, unsigned int nSamples)
{
// NOTE: if muted, the samples will be silent already
- boost::uint8_t* stream = reinterpret_cast<boost::uint8_t*>(from);
+ std::uint8_t* stream = reinterpret_cast<std::uint8_t*>(from);
unsigned int len = nSamples*2;
file_stream.write((char*) stream, len);
@@ -100,9 +99,10 @@ WAVWriter::write_wave_header(std::ofstream& outfile)
CHUNK_HDR chk;
// setup wav header
- std::strncpy(wav.rID, "RIFF", 4);
- std::strncpy(wav.wID, "WAVE", 4);
- std::strncpy(wav.fId, "fmt ", 4);
+ // CID 1149094
+ std::memcpy(wav.rID, "RIFF", 4);
+ std::memcpy(wav.wID, "WAVE", 4);
+ std::memcpy(wav.fId, "fmt ", 4);
wav.nBitsPerSample = 16;
wav.nSamplesPerSec = 44100;
@@ -117,7 +117,7 @@ WAVWriter::write_wave_header(std::ofstream& outfile)
wav.nBlockAlign = 2 * wav.nBitsPerSample / 8;
// setup chunk header
- std::strncpy(chk.dId, "data", 4);
+ std::memcpy(chk.dId, "data", 4);
chk.dLen = 0;
/* write riff/wav header */
diff --git a/libsound/WAVWriter.h b/libsound/WAVWriter.h
index 88a694c..80a52a1 100644
--- a/libsound/WAVWriter.h
+++ b/libsound/WAVWriter.h
@@ -21,7 +21,7 @@
#define GNASH_SOUND_WAVWRITER_H
#include <fstream> // for composition (file_stream)
-#include <boost/cstdint.hpp>
+#include <cstdint>
#include "dsodefs.h"
@@ -54,7 +54,7 @@ public:
/// to give interpretation of what comes back (how many
/// bytes per channel, which format).
///
- void pushSamples(boost::int16_t* from, unsigned int nSamples);
+ void pushSamples(std::int16_t* from, unsigned int nSamples);
private:
diff --git a/libsound/aos4/sound_handler_ahi.cpp b/libsound/aos4/sound_handler_ahi.cpp
index 333e65e..70e866c 100644
--- a/libsound/aos4/sound_handler_ahi.cpp
+++ b/libsound/aos4/sound_handler_ahi.cpp
@@ -32,7 +32,6 @@
//#include <cmath>
#include <vector>
-#include <boost/scoped_array.hpp>
#include <proto/dos.h>
#include <proto/exec.h>
@@ -82,7 +81,7 @@ AOS4_sound_handler::AOS4_sound_handler(media::MediaHandler* m)
AOS4_sound_handler::~AOS4_sound_handler()
{
- boost::mutex::scoped_lock lock(_mutex);
+ std::lock_guard<std::mutex> lock(_mutex);
// on class destruction we must kill the Audio thread
_closing = true;
@@ -179,16 +178,16 @@ AOS4_sound_handler::closeAudio()
void
AOS4_sound_handler::reset()
{
- boost::mutex::scoped_lock lock(_mutex);
+ std::lock_guard<std::mutex> lock(_mutex);
sound_handler::delete_all_sounds();
sound_handler::stop_all_sounds();
}
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);
+ std::lock_guard<std::mutex> lock(_mutex);
return sound_handler::create_sound(data, sinfo);
}
@@ -198,14 +197,14 @@ AOS4_sound_handler::addSoundBlock(unsigned char* data,
int streamId)
{
- boost::mutex::scoped_lock lock(_mutex);
+ std::lock_guard<std::mutex> lock(_mutex);
return sound_handler::addSoundBlock(data, dataBytes, nSamples, streamId);
}
void
AOS4_sound_handler::stop_sound(int soundHandle)
{
- boost::mutex::scoped_lock lock(_mutex);
+ std::lock_guard<std::mutex> lock(_mutex);
sound_handler::stop_sound(soundHandle);
}
@@ -213,14 +212,14 @@ AOS4_sound_handler::stop_sound(int soundHandle)
void
AOS4_sound_handler::delete_sound(int soundHandle)
{
- boost::mutex::scoped_lock lock(_mutex);
+ std::lock_guard<std::mutex> lock(_mutex);
sound_handler::delete_sound(soundHandle);
}
void
AOS4_sound_handler::stop_all_sounds()
{
- boost::mutex::scoped_lock lock(_mutex);
+ std::lock_guard<std::mutex> lock(_mutex);
sound_handler::stop_all_sounds();
}
@@ -228,7 +227,7 @@ AOS4_sound_handler::stop_all_sounds()
int
AOS4_sound_handler::get_volume(int soundHandle)
{
- boost::mutex::scoped_lock lock(_mutex);
+ std::lock_guard<std::mutex> lock(_mutex);
return sound_handler::get_volume(soundHandle);
}
@@ -236,28 +235,28 @@ AOS4_sound_handler::get_volume(int soundHandle)
void
AOS4_sound_handler::set_volume(int soundHandle, int volume)
{
- boost::mutex::scoped_lock lock(_mutex);
+ std::lock_guard<std::mutex> lock(_mutex);
sound_handler::set_volume(soundHandle, volume);
}
media::SoundInfo*
AOS4_sound_handler::get_sound_info(int soundHandle)
{
- boost::mutex::scoped_lock lock(_mutex);
+ std::lock_guard<std::mutex> lock(_mutex);
return sound_handler::get_sound_info(soundHandle);
}
unsigned int
AOS4_sound_handler::get_duration(int soundHandle)
{
- boost::mutex::scoped_lock lock(_mutex);
+ std::lock_guard<std::mutex> lock(_mutex);
return sound_handler::get_duration(soundHandle);
}
unsigned int
AOS4_sound_handler::tell(int soundHandle)
{
- boost::mutex::scoped_lock lock(_mutex);
+ std::lock_guard<std::mutex> lock(_mutex);
return sound_handler::tell(soundHandle);
}
@@ -269,14 +268,14 @@ create_sound_handler_aos4(media::MediaHandler* m)
}
void
-AOS4_sound_handler::fetchSamples(boost::int16_t* to, unsigned int nSamples)
+AOS4_sound_handler::fetchSamples(std::int16_t* to, unsigned int nSamples)
{
if (!_closing)
{
AHIRequest *req = AHIios[AHICurBuf];
UWORD AHIOtherBuf = AHICurBuf^1;
- boost::mutex::scoped_lock lock(_mutex);
+ std::lock_guard<std::mutex> lock(_mutex);
if (!_closing)
{
sound_handler::fetchSamples(to, nSamples);
@@ -330,9 +329,9 @@ AOS4_sound_handler::fetchSamples(boost::int16_t* to, unsigned int nSamples)
}
void
-AOS4_sound_handler::MixAudio (boost::uint8_t *dst, const boost::uint8_t *src, boost::uint32_t len, int volume)
+AOS4_sound_handler::MixAudio (std::uint8_t *dst, const std::uint8_t *src, std::uint32_t len, int volume)
{
- boost::uint16_t format;
+ std::uint16_t format;
if ( volume == 0 )
{
@@ -346,7 +345,7 @@ AOS4_sound_handler::MixAudio (boost::uint8_t *dst, const boost::uint8_t *src, bo
{
case AHIST_S16S:
{
- boost::int16_t src1, src2;
+ std::int16_t src1, src2;
int dst_sample;
const int max_audioval = ((1<<(16-1))-1);
const int min_audioval = -(1<<(16-1));
@@ -380,23 +379,23 @@ AOS4_sound_handler::MixAudio (boost::uint8_t *dst, const boost::uint8_t *src, bo
}
void
-AOS4_sound_handler::mix(boost::int16_t* outSamples, boost::int16_t* inSamples, unsigned int nSamples, float volume)
+AOS4_sound_handler::mix(std::int16_t* outSamples, std::int16_t* inSamples, unsigned int nSamples, float volume)
{
if (!_closing)
{
unsigned int nBytes = nSamples*2;
- boost::uint8_t *out = reinterpret_cast<boost::uint8_t*>(outSamples);
- boost::uint8_t* in = reinterpret_cast<boost::uint8_t*>(inSamples);
+ std::uint8_t *out = reinterpret_cast<std::uint8_t*>(outSamples);
+ std::uint8_t* in = reinterpret_cast<std::uint8_t*>(inSamples);
MixAudio(out, in, nBytes, static_cast<int>(MIX_MAXVOLUME*volume));
}
}
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);
+ std::lock_guard<std::mutex> lock(_mutex);
sound_handler::plugInputStream(newStreamer);
@@ -411,27 +410,6 @@ AOS4_sound_handler::plugInputStream(std::auto_ptr<InputStream> newStreamer)
}
void
-AOS4_sound_handler::mute()
-{
- boost::mutex::scoped_lock lock(_mutedMutex);
- sound_handler::mute();
-}
-
-void
-AOS4_sound_handler::unmute()
-{
- boost::mutex::scoped_lock lock(_mutedMutex);
- sound_handler::unmute();
-}
-
-bool
-AOS4_sound_handler::is_muted() const
-{
- boost::mutex::scoped_lock lock(_mutedMutex);
- return sound_handler::is_muted();
-}
-
-void
AOS4_sound_handler::pause()
{
//closeAudio();
@@ -529,7 +507,7 @@ AOS4_sound_handler::audioTask()
unsigned long clockAdvance = 40;
unsigned int nSamples = (441*clockAdvance) / 10;
unsigned int toFetch = nSamples*2;
- boost::int16_t samples[AHI_BUF_SIZE];
+ std::int16_t samples[AHI_BUF_SIZE];
_closing = false;
@@ -629,7 +607,7 @@ AOS4_sound_handler::audioTask()
while (toFetch && !_closing)
{
unsigned int n = std::min(toFetch, AHI_BUF_SIZE);
- if (!_closing) fetchSamples((boost::int16_t*)&samples, n);
+ if (!_closing) fetchSamples((std::int16_t*)&samples, n);
toFetch -= n;
}
toFetch = nSamples*2;
diff --git a/libsound/aos4/sound_handler_ahi.h b/libsound/aos4/sound_handler_ahi.h
index 381d04f..d6fc079 100644
--- a/libsound/aos4/sound_handler_ahi.h
+++ b/libsound/aos4/sound_handler_ahi.h
@@ -23,7 +23,7 @@
#include "sound_handler.h" // for inheritance
#include <set> // for composition (InputStreams)
-#include <boost/thread/mutex.hpp>
+#include <mutex>
#include <proto/dos.h>
#include <proto/exec.h>
@@ -86,16 +86,13 @@ private:
struct MsgPort *_DMreplyport; // and its port
/// Mutex for making sure threads doesn't mess things up
- boost::mutex _mutex;
-
- /// Mutex protecting _muted (defined in base class)
- mutable boost::mutex _mutedMutex;
+ std::mutex _mutex;
// See dox in sound_handler.h
- void mix(boost::int16_t* outSamples, boost::int16_t* inSamples,
+ void mix(std::int16_t* outSamples, std::int16_t* inSamples,
unsigned int nSamples, float volume);
- void MixAudio (boost::uint8_t *dst, const boost::uint8_t *src, boost::uint32_t len, int volume);
+ void MixAudio (std::uint8_t *dst, const std::uint8_t *src, std::uint32_t len, int volume);
public:
@@ -104,7 +101,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
@@ -135,18 +132,6 @@ public:
virtual media::SoundInfo* get_sound_info(int soundHandle);
// See dox in sound_handler.h
- // overridden to serialize access to the _muted member
- virtual void mute();
-
- // See dox in sound_handler.h
- // overridden to serialize access to the _muted member
- virtual void unmute();
-
- // See dox in sound_handler.h
- // overridden to serialize access to the _muted member
- virtual bool is_muted() const;
-
- // See dox in sound_handler.h
// overridden to close audio card
virtual void pause();
@@ -162,10 +147,10 @@ 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);
+ void fetchSamples(std::int16_t* to, unsigned int nSamples);
int audioTask();
};
diff --git a/libsound/mkit/sound_handler_mkit.cpp b/libsound/mkit/sound_handler_mkit.cpp
index ddfb229..ff17884 100644
--- a/libsound/mkit/sound_handler_mkit.cpp
+++ b/libsound/mkit/sound_handler_mkit.cpp
@@ -28,7 +28,6 @@
#include "GnashException.h" // for SoundException
#include <vector>
-#include <boost/scoped_array.hpp>
#include <SoundPlayer.h>
@@ -81,7 +80,7 @@ Mkit_sound_handler::~Mkit_sound_handler()
if (_soundplayer != NULL)
_soundplayer->Stop(true, true);
-// boost::mutex::scoped_lock lock(_mutex);
+// std::lock_guard<std::mutex> lock(_mutex);
//#ifdef GNASH_DEBUG_HAIKU_AUDIO_PAUSING
// log_debug("Pausing Mkit Audio on destruction");
//#endif
@@ -108,7 +107,7 @@ Mkit_sound_handler::FillNextBuffer(void *cookie, void *buffer, size_t size,
size_t numSamples =
size / sizeof(uint16);
- boost::int16_t *data = (boost::int16_t*) buffer;
+ std::int16_t *data = (std::int16_t*) buffer;
Mkit_sound_handler *that =
reinterpret_cast<Mkit_sound_handler*>(cookie);
@@ -117,16 +116,16 @@ Mkit_sound_handler::FillNextBuffer(void *cookie, void *buffer, size_t size,
}
void
-Mkit_sound_handler::fetchSamples(boost::int16_t* to, unsigned int nSamples)
+Mkit_sound_handler::fetchSamples(std::int16_t* to, unsigned int nSamples)
{
- boost::mutex::scoped_lock lock(_mutex);
+ std::lock_guard<std::mutex> lock(_mutex);
sound_handler::fetchSamples(to, nSamples);
// TODO: move this to base class !
if (file_stream)
{
// NOTE: if muted, the samples will be silent already
- boost::uint8_t* stream = reinterpret_cast<boost::uint8_t*>(to);
+ std::uint8_t* stream = reinterpret_cast<std::uint8_t*>(to);
unsigned int len = nSamples*2;
file_stream.write((char*) stream, len);
@@ -147,16 +146,16 @@ Mkit_sound_handler::fetchSamples(boost::int16_t* to, unsigned int nSamples)
void
Mkit_sound_handler::reset()
{
- boost::mutex::scoped_lock lock(_mutex);
+ std::lock_guard<std::mutex> lock(_mutex);
sound_handler::delete_all_sounds();
sound_handler::stop_all_sounds();
}
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);
+ std::lock_guard<std::mutex> lock(_mutex);
return sound_handler::create_sound(data, sinfo);
}
@@ -166,14 +165,14 @@ Mkit_sound_handler::addSoundBlock(unsigned char* data,
int streamId)
{
- boost::mutex::scoped_lock lock(_mutex);
+ std::lock_guard<std::mutex> lock(_mutex);
return sound_handler::addSoundBlock(data, dataBytes, nSamples, streamId);
}
void
Mkit_sound_handler::stop_sound(int soundHandle)
{
- boost::mutex::scoped_lock lock(_mutex);
+ std::lock_guard<std::mutex> lock(_mutex);
sound_handler::stop_sound(soundHandle);
}
@@ -181,14 +180,14 @@ Mkit_sound_handler::stop_sound(int soundHandle)
void
Mkit_sound_handler::delete_sound(int soundHandle)
{
- boost::mutex::scoped_lock lock(_mutex);
+ std::lock_guard<std::mutex> lock(_mutex);
sound_handler::delete_sound(soundHandle);
}
void
Mkit_sound_handler::stop_all_sounds()
{
- boost::mutex::scoped_lock lock(_mutex);
+ std::lock_guard<std::mutex> lock(_mutex);
sound_handler::stop_all_sounds();
}
@@ -196,7 +195,7 @@ Mkit_sound_handler::stop_all_sounds()
int
Mkit_sound_handler::get_volume(int soundHandle)
{
- boost::mutex::scoped_lock lock(_mutex);
+ std::lock_guard<std::mutex> lock(_mutex);
return sound_handler::get_volume(soundHandle);
}
@@ -204,35 +203,35 @@ Mkit_sound_handler::get_volume(int soundHandle)
void
Mkit_sound_handler::set_volume(int soundHandle, int volume)
{
- boost::mutex::scoped_lock lock(_mutex);
+ std::lock_guard<std::mutex> lock(_mutex);
sound_handler::set_volume(soundHandle, volume);
}
media::SoundInfo*
Mkit_sound_handler::get_sound_info(int soundHandle)
{
- boost::mutex::scoped_lock lock(_mutex);
+ std::lock_guard<std::mutex> lock(_mutex);
return sound_handler::get_sound_info(soundHandle);
}
unsigned int
Mkit_sound_handler::get_duration(int soundHandle)
{
- boost::mutex::scoped_lock lock(_mutex);
+ std::lock_guard<std::mutex> lock(_mutex);
return sound_handler::get_duration(soundHandle);
}
unsigned int
Mkit_sound_handler::tell(int soundHandle)
{
- boost::mutex::scoped_lock lock(_mutex);
+ std::lock_guard<std::mutex> lock(_mutex);
return sound_handler::tell(soundHandle);
}
void
-Mkit_sound_handler::MixAudio (boost::uint8_t *dst, const boost::uint8_t *src, boost::uint32_t len, int volume)
+Mkit_sound_handler::MixAudio (std::uint8_t *dst, const std::uint8_t *src, std::uint32_t len, int volume)
{
- //boost::uint16_t format;
+ //std::uint16_t format;
if ( volume == 0 )
{
@@ -246,7 +245,7 @@ Mkit_sound_handler::MixAudio (boost::uint8_t *dst, const boost::uint8_t *src, bo
{
//case AHIST_S16S:
{
- boost::int16_t src1, src2;
+ std::int16_t src1, src2;
int dst_sample;
const int max_audioval = ((1<<(16-1))-1);
const int min_audioval = -(1<<(16-1));
@@ -280,23 +279,23 @@ Mkit_sound_handler::MixAudio (boost::uint8_t *dst, const boost::uint8_t *src, bo
}
void
-Mkit_sound_handler::mix(boost::int16_t* outSamples, boost::int16_t* inSamples, unsigned int nSamples, float volume)
+Mkit_sound_handler::mix(std::int16_t* outSamples, std::int16_t* inSamples, unsigned int nSamples, float volume)
{
//if (!_closing)
{
unsigned int nBytes = nSamples*2;
- boost::uint8_t *out = reinterpret_cast<boost::uint8_t*>(outSamples);
- boost::uint8_t* in = reinterpret_cast<boost::uint8_t*>(inSamples);
+ std::uint8_t *out = reinterpret_cast<std::uint8_t*>(outSamples);
+ std::uint8_t* in = reinterpret_cast<std::uint8_t*>(inSamples);
MixAudio(out, in, nBytes, MIX_MAXVOLUME*volume);
}
}
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);
+ std::lock_guard<std::mutex> lock(_mutex);
sound_handler::plugInputStream(newStreamer);
@@ -313,27 +312,6 @@ Mkit_sound_handler::plugInputStream(std::auto_ptr<InputStream> newStreamer)
}
void
-Mkit_sound_handler::mute()
-{
- boost::mutex::scoped_lock lock(_mutedMutex);
- sound_handler::mute();
-}
-
-void
-Mkit_sound_handler::unmute()
-{
- boost::mutex::scoped_lock lock(_mutedMutex);
- sound_handler::unmute();
-}
-
-bool
-Mkit_sound_handler::is_muted() const
-{
- boost::mutex::scoped_lock lock(_mutedMutex);
- return sound_handler::is_muted();
-}
-
-void
Mkit_sound_handler::pause()
{
log_debug(_("Mkit: Mkit_sound_handler::pause"));
diff --git a/libsound/mkit/sound_handler_mkit.h b/libsound/mkit/sound_handler_mkit.h
index fdcea45..f77d844 100644
--- a/libsound/mkit/sound_handler_mkit.h
+++ b/libsound/mkit/sound_handler_mkit.h
@@ -23,8 +23,8 @@
#include "sound_handler.h" // for inheritance
#include <set> // for composition (InputStreams)
-#include <boost/thread/mutex.hpp>
-#include <boost/scoped_ptr.hpp>
+#include <mutex>
+#include <memory>
#include <SoundPlayer.h>
@@ -43,7 +43,7 @@ namespace sound {
/// Mkit media kit based sound_handler
class Mkit_sound_handler : public sound_handler
{
- boost::scoped_ptr<BSoundPlayer> _soundplayer;
+ std::unique_ptr<BSoundPlayer> _soundplayer;
/// play buffer handler function
static void FillNextBuffer(void *cookie, void *buffer, size_t size,
@@ -55,16 +55,13 @@ class Mkit_sound_handler : public sound_handler
bool _audioopen;
/// Mutex for making sure threads doesn't mess things up
- boost::mutex _mutex;
-
- /// Mutex protecting _muted (defined in base class)
- mutable boost::mutex _mutedMutex;
+ std::mutex _mutex;
// See dox in sound_handler.h
- void mix(boost::int16_t* outSamples, boost::int16_t* inSamples,
+ void mix(std::int16_t* outSamples, std::int16_t* inSamples,
unsigned int nSamples, float volume);
- void MixAudio (boost::uint8_t *dst, const boost::uint8_t *src, boost::uint32_t len, int volume);
+ void MixAudio (std::uint8_t *dst, const std::uint8_t *src, std::uint32_t len, int volume);
public:
Mkit_sound_handler(media::MediaHandler* m);
@@ -72,7 +69,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
@@ -103,18 +100,6 @@ public:
virtual media::SoundInfo* get_sound_info(int soundHandle);
// See dox in sound_handler.h
- // overridden to serialize access to the _muted member
- virtual void mute();
-
- // See dox in sound_handler.h
- // overridden to serialize access to the _muted member
- virtual void unmute();
-
- // See dox in sound_handler.h
- // overridden to serialize access to the _muted member
- virtual bool is_muted() const;
-
- // See dox in sound_handler.h
// overridden to close audio card
virtual void pause();
@@ -130,10 +115,10 @@ 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);
+ void fetchSamples(std::int16_t* to, unsigned int nSamples);
};
} // gnash.sound namespace
diff --git a/libsound/sdl/sound_handler_sdl.cpp b/libsound/sdl/sound_handler_sdl.cpp
index 8bd8c5a..7516869 100644
--- a/libsound/sdl/sound_handler_sdl.cpp
+++ b/libsound/sdl/sound_handler_sdl.cpp
@@ -31,7 +31,6 @@
#include "GnashException.h" // for SoundException
#include <vector>
-#include <boost/scoped_array.hpp>
#include <SDL.h>
// Define this to get debugging call about pausing/unpausing audio
@@ -87,7 +86,7 @@ SDL_sound_handler::openAudio()
//512 - not enough for videostream
audioSpec.samples = 1024;
- if (SDL_OpenAudio(&audioSpec, NULL) < 0) {
+ if (SDL_OpenAudio(&audioSpec, nullptr) < 0) {
boost::format fmt = boost::format(_("Couldn't open SDL audio: %s"))
% SDL_GetError();
throw SoundException(fmt.str());
@@ -115,13 +114,13 @@ SDL_sound_handler::SDL_sound_handler(media::MediaHandler* m)
void
SDL_sound_handler::reset()
{
- boost::mutex::scoped_lock lock(_mutex);
+ std::lock_guard<std::mutex> lock(_mutex);
sound_handler::stop_all_sounds();
}
SDL_sound_handler::~SDL_sound_handler()
{
- boost::mutex::scoped_lock lock(_mutex);
+ std::lock_guard<std::mutex> lock(_mutex);
#ifdef GNASH_DEBUG_SDL_AUDIO_PAUSING
log_debug("Pausing SDL Audio on destruction");
@@ -136,46 +135,46 @@ SDL_sound_handler::~SDL_sound_handler()
int
SDL_sound_handler::createStreamingSound(const media::SoundInfo& sinfo)
{
- boost::mutex::scoped_lock lock(_mutex);
+ std::lock_guard<std::mutex> lock(_mutex);
return sound_handler::createStreamingSound(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);
+ std::lock_guard<std::mutex> lock(_mutex);
+ 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(SimpleBuffer buf,
size_t sampleCount, int seekSamples, int handle)
{
- boost::mutex::scoped_lock lock(_mutex);
- return sound_handler::addSoundBlock(buf, sampleCount, seekSamples, handle);
+ std::lock_guard<std::mutex> lock(_mutex);
+ return sound_handler::addSoundBlock(std::move(buf), sampleCount, seekSamples, handle);
}
void
SDL_sound_handler::stopEventSound(int soundHandle)
{
- boost::mutex::scoped_lock lock(_mutex);
+ std::lock_guard<std::mutex> lock(_mutex);
sound_handler::stopEventSound(soundHandle);
}
void
SDL_sound_handler::stopAllEventSounds()
{
- boost::mutex::scoped_lock lock(_mutex);
+ std::lock_guard<std::mutex> lock(_mutex);
sound_handler::stopAllEventSounds();
}
void
SDL_sound_handler::stopStreamingSound(int soundHandle)
{
- boost::mutex::scoped_lock lock(_mutex);
+ std::lock_guard<std::mutex> lock(_mutex);
sound_handler::stopStreamingSound(soundHandle);
}
@@ -183,14 +182,14 @@ SDL_sound_handler::stopStreamingSound(int soundHandle)
void
SDL_sound_handler::delete_sound(int soundHandle)
{
- boost::mutex::scoped_lock lock(_mutex);
+ std::lock_guard<std::mutex> lock(_mutex);
sound_handler::delete_sound(soundHandle);
}
void
SDL_sound_handler::stop_all_sounds()
{
- boost::mutex::scoped_lock lock(_mutex);
+ std::lock_guard<std::mutex> lock(_mutex);
sound_handler::stop_all_sounds();
}
@@ -198,7 +197,7 @@ SDL_sound_handler::stop_all_sounds()
int
SDL_sound_handler::get_volume(int soundHandle) const
{
- boost::mutex::scoped_lock lock(_mutex);
+ std::lock_guard<std::mutex> lock(_mutex);
return sound_handler::get_volume(soundHandle);
}
@@ -206,28 +205,28 @@ SDL_sound_handler::get_volume(int soundHandle) const
void
SDL_sound_handler::set_volume(int soundHandle, int volume)
{
- boost::mutex::scoped_lock lock(_mutex);
+ std::lock_guard<std::mutex> lock(_mutex);
sound_handler::set_volume(soundHandle, volume);
}
media::SoundInfo*
SDL_sound_handler::get_sound_info(int soundHandle) const
{
- boost::mutex::scoped_lock lock(_mutex);
+ std::lock_guard<std::mutex> lock(_mutex);
return sound_handler::get_sound_info(soundHandle);
}
unsigned int
SDL_sound_handler::get_duration(int soundHandle) const
{
- boost::mutex::scoped_lock lock(_mutex);
+ std::lock_guard<std::mutex> lock(_mutex);
return sound_handler::get_duration(soundHandle);
}
unsigned int
SDL_sound_handler::tell(int soundHandle) const
{
- boost::mutex::scoped_lock lock(_mutex);
+ std::lock_guard<std::mutex> lock(_mutex);
return sound_handler::tell(soundHandle);
}
@@ -238,9 +237,9 @@ create_sound_handler_sdl(media::MediaHandler* m)
}
void
-SDL_sound_handler::fetchSamples(boost::int16_t* to, unsigned int nSamples)
+SDL_sound_handler::fetchSamples(std::int16_t* to, unsigned int nSamples)
{
- boost::mutex::scoped_lock lock(_mutex);
+ std::lock_guard<std::mutex> lock(_mutex);
sound_handler::fetchSamples(to, nSamples);
// If nothing is left to play there is no reason to keep polling.
@@ -269,7 +268,7 @@ SDL_sound_handler::sdl_audio_callback(void *udata, Uint8 *buf, int bufLenIn)
}
unsigned int bufLen = static_cast<unsigned int>(bufLenIn);
- boost::int16_t* samples = reinterpret_cast<boost::int16_t*>(buf);
+ std::int16_t* samples = reinterpret_cast<std::int16_t*>(buf);
// 16 bit per sample, 2 channels == 4 bytes per fetch ?
assert(!(bufLen%4));
@@ -284,7 +283,7 @@ SDL_sound_handler::sdl_audio_callback(void *udata, Uint8 *buf, int bufLenIn)
}
void
-SDL_sound_handler::mix(boost::int16_t* outSamples, boost::int16_t* inSamples,
+SDL_sound_handler::mix(std::int16_t* outSamples, std::int16_t* inSamples,
unsigned int nSamples, float volume)
{
Uint8* out = reinterpret_cast<Uint8*>(outSamples);
@@ -295,11 +294,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);
+ std::lock_guard<std::mutex> 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.
@@ -313,27 +312,6 @@ SDL_sound_handler::plugInputStream(std::auto_ptr<InputStream> newStreamer)
}
void
-SDL_sound_handler::mute()
-{
- boost::mutex::scoped_lock lock(_mutedMutex);
- sound_handler::mute();
-}
-
-void
-SDL_sound_handler::unmute()
-{
- boost::mutex::scoped_lock lock(_mutedMutex);
- sound_handler::unmute();
-}
-
-bool
-SDL_sound_handler::is_muted() const
-{
- boost::mutex::scoped_lock lock(_mutedMutex);
- return sound_handler::is_muted();
-}
-
-void
SDL_sound_handler::pause()
{
closeAudio();
@@ -354,7 +332,7 @@ SDL_sound_handler::unpause()
void
SDL_sound_handler::unplugInputStream(InputStream* id)
{
- boost::mutex::scoped_lock lock(_mutex);
+ std::lock_guard<std::mutex> lock(_mutex);
sound_handler::unplugInputStream(id);
}
diff --git a/libsound/sdl/sound_handler_sdl.h b/libsound/sdl/sound_handler_sdl.h
index 9d3c830..649f31a 100644
--- a/libsound/sdl/sound_handler_sdl.h
+++ b/libsound/sdl/sound_handler_sdl.h
@@ -25,7 +25,7 @@
#include "sound_handler.h" // for inheritance
#include <SDL_audio.h>
-#include <boost/thread/mutex.hpp>
+#include <mutex>
// Forward declarations
namespace gnash {
@@ -57,13 +57,10 @@ private:
bool _audioOpened;
/// Mutex for making sure threads doesn't mess things up
- mutable boost::mutex _mutex;
-
- /// Mutex protecting _muted (defined in base class)
- mutable boost::mutex _mutedMutex;
+ mutable std::mutex _mutex;
// See dox in sound_handler.h
- void mix(boost::int16_t* outSamples, boost::int16_t* inSamples,
+ void mix(std::int16_t* outSamples, std::int16_t* inSamples,
unsigned int nSamples, float volume);
@@ -94,12 +91,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(SimpleBuffer buf,
size_t sample_count, int seekSamples, int streamId);
// See dox in sound_handler.h
@@ -129,18 +126,6 @@ public:
virtual media::SoundInfo* get_sound_info(int soundHandle) const;
// See dox in sound_handler.h
- // overridden to serialize access to the _muted member
- virtual void mute();
-
- // See dox in sound_handler.h
- // overridden to serialize access to the _muted member
- virtual void unmute();
-
- // See dox in sound_handler.h
- // overridden to serialize access to the _muted member
- virtual bool is_muted() const;
-
- // See dox in sound_handler.h
// overridden to close audio card
virtual void pause();
@@ -156,13 +141,13 @@ 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);
// See dox in sound_handler.h
- void fetchSamples(boost::int16_t* to, unsigned int nSamples);
+ void fetchSamples(std::int16_t* to, unsigned int nSamples);
};
} // gnash.sound namespace
diff --git a/libsound/sound_handler.cpp b/libsound/sound_handler.cpp
index 3c0ae52..78ea118 100644
--- a/libsound/sound_handler.cpp
+++ b/libsound/sound_handler.cpp
@@ -19,10 +19,9 @@
#include "sound_handler.h"
-#include <boost/cstdint.hpp> // For C99 int types
+#include <cstdint> // For C99 int types
#include <vector>
#include <cmath>
-#include <boost/scoped_array.hpp>
#include "EmbedSound.h" // for use
#include "InputStream.h" // for use
@@ -45,7 +44,7 @@ namespace sound {
namespace {
unsigned int
-silentStream(void*, boost::int16_t* stream, unsigned int len, bool& atEOF)
+silentStream(void*, std::int16_t* stream, unsigned int len, bool& atEOF)
{
std::fill(stream, stream + len, 0);
atEOF=false;
@@ -77,7 +76,7 @@ ensurePadding(SimpleBuffer& data, media::MediaHandler* m)
} // anonymous namespace
sound_handler::StreamBlockId
-sound_handler::addSoundBlock(std::auto_ptr<SimpleBuffer> data,
+sound_handler::addSoundBlock(SimpleBuffer data,
size_t sampleCount, int seekSamples, int handle)
{
if (!validHandle(_streamingSounds, handle)) {
@@ -93,20 +92,16 @@ sound_handler::addSoundBlock(std::auto_ptr<SimpleBuffer> data,
return -1;
}
- assert(data.get());
- ensurePadding(*data, _mediaHandler);
+ ensurePadding(data, _mediaHandler);
- return sounddata->append(data, sampleCount, seekSamples);
+ return sounddata->append(std::move(data), sampleCount, seekSamples);
}
void
sound_handler::delete_all_sounds()
{
- for (Sounds::iterator i = _sounds.begin(),
- e = _sounds.end(); i != e; ++i)
+ for (EmbedSound* sdef : _sounds)
{
- EmbedSound* sdef = *i;
-
// The sound may have been deleted already.
if (!sdef) continue;
@@ -117,11 +112,8 @@ sound_handler::delete_all_sounds()
}
_sounds.clear();
- for (StreamingSounds::iterator i = _streamingSounds.begin(),
- e = _streamingSounds.end(); i != e; ++i)
+ for (StreamingSoundData* sdef : _streamingSounds)
{
- StreamingSoundData* sdef = *i;
-
// Streaming sounds are never deleted.
assert(sdef);
@@ -157,25 +149,21 @@ sound_handler::delete_sound(int handle)
stopEmbedSoundInstances(*def);
delete def;
- _sounds[handle] = 0;
+ _sounds[handle] = nullptr;
}
void
sound_handler::stop_all_sounds()
{
- for (Sounds::iterator i = _sounds.begin(),
- e = _sounds.end(); i != e; ++i)
+ for (EmbedSound* sounddata : _sounds)
{
- EmbedSound* sounddata = *i;
if ( ! sounddata ) continue; // could have been deleted already
stopEmbedSoundInstances(*sounddata);
}
- for (StreamingSounds::iterator i = _streamingSounds.begin(),
- e = _streamingSounds.end(); i != e; ++i)
+ for (StreamingSoundData* sounddata : _streamingSounds)
{
- StreamingSoundData* sounddata = *i;
if (!sounddata) continue;
stopEmbedSoundInstances(*sounddata);
}
@@ -205,7 +193,7 @@ sound_handler::get_sound_info(int handle) const
if (validHandle(_streamingSounds, handle)) {
return &_streamingSounds[handle]->soundinfo;
}
- return 0;
+ return nullptr;
}
void
@@ -253,9 +241,8 @@ sound_handler::stopAllEventSounds()
log_debug("stopAllEventSounds called");
#endif
- for (Sounds::iterator i=_sounds.begin(), e=_sounds.end(); i != e; ++i)
+ for (EmbedSound* sounddata : _sounds)
{
- EmbedSound* sounddata = *i;
if (!sounddata) continue; // possible ?
stopEmbedSoundInstances(*sounddata);
@@ -273,8 +260,7 @@ sound_handler::stopEmbedSoundInstances(StreamingSoundData& def)
// Now, for each playing InputStream, unplug it!
// NOTE: could be optimized...
- for (InputStreamVect::iterator i=playing.begin(), e=playing.end();
- i!=e; ++i)
+ for (InputStream* stream : playing)
{
#ifdef GNASH_DEBUG_SOUNDS_MANAGEMENT
log_debug(" unplugging input stream %p from stopEmbedSoundInstances", *i);
@@ -283,7 +269,7 @@ sound_handler::stopEmbedSoundInstances(StreamingSoundData& def)
// Explicitly calling the base class implementation
// is a (dirty?) way to avoid mutex-locking overrides
// in subclasses causing deadlocks.
- sound_handler::unplugInputStream(*i);
+ sound_handler::unplugInputStream(stream);
}
def.clearInstances();
@@ -300,8 +286,7 @@ sound_handler::stopEmbedSoundInstances(EmbedSound& def)
// Now, for each playing InputStream, unplug it!
// NOTE: could be optimized...
- for (InputStreamVect::iterator i=playing.begin(), e=playing.end();
- i!=e; ++i)
+ for (InputStream* stream : playing)
{
#ifdef GNASH_DEBUG_SOUNDS_MANAGEMENT
log_debug(" unplugging input stream %p from stopEmbedSoundInstances", *i);
@@ -310,7 +295,7 @@ sound_handler::stopEmbedSoundInstances(EmbedSound& def)
// Explicitly calling the base class implementation
// is a (dirty?) way to avoid mutex-locking overrides
// in subclasses causing deadlocks.
- sound_handler::unplugInputStream(*i);
+ sound_handler::unplugInputStream(stream);
}
def.clearInstances();
@@ -372,8 +357,8 @@ sound_handler::get_duration(int handle) const
const EmbedSound* sounddata = _sounds[handle];
- const boost::uint32_t sampleCount = sounddata->soundinfo.getSampleCount();
- const boost::uint32_t sampleRate = sounddata->soundinfo.getSampleRate();
+ const std::uint32_t sampleCount = sounddata->soundinfo.getSampleCount();
+ const std::uint32_t sampleRate = sounddata->soundinfo.getSampleRate();
// Return the sound duration in milliseconds
if (sampleCount > 0 && sampleRate > 0) {
@@ -388,7 +373,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 +384,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 +393,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 +432,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 +522,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 +534,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
@@ -574,17 +559,15 @@ sound_handler::plugInputStream(std::auto_ptr<InputStream> newStreamer)
void
sound_handler::unplugAllInputStreams()
{
- for (InputStreams::iterator it=_inputStreams.begin(),
- itE=_inputStreams.end();
- it != itE; ++it)
+ for (const InputStream* stream : _inputStreams)
{
- delete *it;
+ delete stream;
}
_inputStreams.clear();
}
void
-sound_handler::fetchSamples(boost::int16_t* to, unsigned int nSamples)
+sound_handler::fetchSamples(std::int16_t* to, unsigned int nSamples)
{
if (isPaused()) return; // should we write wav file anyway ?
@@ -596,19 +579,15 @@ sound_handler::fetchSamples(boost::int16_t* to, unsigned int nSamples)
if (!_inputStreams.empty()) {
// A buffer to fetch InputStream samples into
- boost::scoped_array<boost::int16_t> buf(new boost::int16_t[nSamples]);
+ std::unique_ptr<std::int16_t[]> buf(new std::int16_t[nSamples]);
#ifdef GNASH_DEBUG_SAMPLES_FETCHING
log_debug("Fetching %d samples from each of %d input streams", nSamples, _inputStreams.size());
#endif
// Loop through the aux streamers sounds
- for (InputStreams::iterator it=_inputStreams.begin(),
- end=_inputStreams.end();
- it != end; ++it)
+ for (InputStream* is : _inputStreams)
{
- InputStream* is = *it;
-
unsigned int wrote = is->fetchSamples(buf.get(), nSamples);
if (wrote < nSamples) {
// fill what wasn't written
@@ -645,7 +624,7 @@ sound_handler::fetchSamples(boost::int16_t* to, unsigned int nSamples)
void
sound_handler::setAudioDump(const std::string& wavefile)
{
- bool wasDumping = (_wavWriter.get() != 0);
+ bool wasDumping = (_wavWriter.get() != nullptr);
if (!wavefile.empty()) {
_wavWriter.reset(new WAVWriter(wavefile));
@@ -665,9 +644,8 @@ sound_handler::streamingSound() const
{
if (_inputStreams.empty()) return false;
- for (StreamingSounds::const_iterator it = _streamingSounds.begin(),
- e = _streamingSounds.end(); it != e; ++it) {
- if ((*it)->isPlaying()) return true;
+ for (StreamingSoundData* const stream : _streamingSounds) {
+ if (stream->isPlaying()) return true;
}
return false;
}
@@ -737,7 +715,7 @@ bool
sound_handler::is_muted() const
{
// TODO: lock a mutex ?
- return _muted;
+ return _muted.load();
}
void
@@ -768,11 +746,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..a5dd629 100644
--- a/libsound/sound_handler.h
+++ b/libsound/sound_handler.h
@@ -23,12 +23,12 @@
#include "gnashconfig.h"
#endif
-#include <string>
-#include <vector>
-#include <memory>
+#include <atomic>
#include <limits>
+#include <memory>
#include <set>
-#include <boost/scoped_ptr.hpp>
+#include <string>
+#include <vector>
#include "dsodefs.h" // for DSOEXPORT
#include "SoundEnvelope.h" // for SoundEnvelopes typedef
@@ -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
@@ -234,7 +234,7 @@ public:
///
/// Gnash's parser calls this to fill up soundstreams data.
///
- /// @param data The sound data to be stored. May not be null.
+ /// @param data The sound data to be stored.
/// This should be appropriately padded (@see
/// MediaHandler::getInputPaddingBytes()), or a
/// reallocation will take place here.
@@ -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(SimpleBuffer data,
size_t sampleCount, int seekSamples, int streamId);
/// Returns a SoundInfo object for the sound with the given id.
@@ -313,15 +313,15 @@ public:
virtual void reset();
/// Call this to mute audio
- virtual void mute();
+ void mute();
/// Call this to unmute audio
- virtual void unmute();
+ void unmute();
/// Returns whether or not sound is muted.
//
/// @return true if muted, false if not
- virtual bool is_muted() const;
+ bool is_muted() const;
/// gnash calls this to pause audio
virtual void pause() { _paused=true; }
@@ -413,7 +413,7 @@ public:
/// to give interpretation of what comes back (how many
/// bytes per channel, which format).
///
- virtual void fetchSamples(boost::int16_t* to, unsigned int nSamples);
+ virtual void fetchSamples(std::int16_t* to, unsigned int nSamples);
/// Mix nSamples from inSamples to outSamples, with given volume
//
@@ -440,7 +440,7 @@ public:
/// Maybe, a Mixer instance should be created, initialized
/// with number of channels, at each fetching.
///
- virtual void mix(boost::int16_t* outSamples, boost::int16_t* inSamples,
+ virtual void mix(std::int16_t* outSamples, std::int16_t* inSamples,
unsigned int nSamples, float volume) = 0;
/// Request to dump audio to the given filename
@@ -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();
@@ -498,7 +498,7 @@ private:
bool _paused;
/// True if sound is muted
- bool _muted;
+ std::atomic<bool> _muted;
/// Final output volume
int _volume;
@@ -535,7 +535,7 @@ private:
/// Unplug any completed input stream
void unplugCompletedInputStreams();
- boost::scoped_ptr<WAVWriter> _wavWriter;
+ std::unique_ptr<WAVWriter> _wavWriter;
};
diff --git a/macros/ax_cxx_compile_stdcxx_11.m4 b/macros/ax_cxx_compile_stdcxx_11.m4
new file mode 100644
index 0000000..7fb06eb
--- /dev/null
+++ b/macros/ax_cxx_compile_stdcxx_11.m4
@@ -0,0 +1,145 @@
+# ============================================================================
+# 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 <bkoz at redhat.com>
+# Copyright (c) 2012 Zack Weinberg <zackw at panix.com>
+# Copyright (c) 2013 Roy Stogner <roystgnr at ices.utexas.edu>
+# Copyright (c) 2014 Alexey Sokolov <sokolov at google.com>
+#
+# 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");
+ };
+
+#if 0
+ // The override keyword is not supported until GCC-4.7.
+ struct Base {
+ virtual void f() {}
+ };
+ struct Child : public Base {
+ virtual void f() override {}
+ };
+#endif
+
+ 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
+])
diff --git a/macros/boost.m4 b/macros/boost.m4
index a098607..280c7ab 100644
--- a/macros/boost.m4
+++ b/macros/boost.m4
@@ -34,10 +34,10 @@ AC_DEFUN([GNASH_PATH_BOOST],
libname=""
dnl this is a list of *required* headers. If any of these are missing, this
dnl test will return a failure, and Gnash won't build.
- boost_headers="detail/lightweight_mutex.hpp thread/thread.hpp multi_index_container.hpp multi_index/key_extractors.hpp thread/mutex.hpp program_options/options_description.hpp iostreams/stream.hpp"
+ boost_headers="multi_index_container.hpp multi_index/key_extractors.hpp program_options/options_description.hpp iostreams/stream.hpp"
dnl this is a list of *required* libraries. If any of these are missing, this
dnl test will return a failure, and Gnash won't build.
- boost_libs="thread program_options system"
+ boost_libs="program_options"
boost_plugin_libs="iostreams"
dnl this is a list of *recommended* libraries. If any of these are missing,
@@ -106,14 +106,6 @@ AC_DEFUN([GNASH_PATH_BOOST],
done
done
- dnl As of boost 1.47, the chrono library is required. You can get a list of
- dnl when a Boost library was added at:
- dnl http://www.boost.org/doc/libs/?sort=boost-version
-
- gnash_boost_version=`grep "define.*BOOST_VERSION " ${gnash_boost_topdir}/version.hpp | cut -d ' ' -f 3`
- if test ${gnash_boost_version} -ge 104700; then
- boost_libs="${boost_libs} chrono"
- fi
dnl this is the default list for paths to search. This gets
dnl redefined if --with-boost-lib= is specified.
newlist=$libslist
diff --git a/macros/npapi.m4 b/macros/npapi.m4
index 7356fb6..2e0147a 100644
--- a/macros/npapi.m4
+++ b/macros/npapi.m4
@@ -34,7 +34,11 @@ AC_DEFUN([GNASH_PATH_NPAPI],
if test x$cross_compiling = xno; then
if test x"$PKG_CONFIG" != x -a x"${ac_cv_path_npapi_incl}" = x; then
- $PKG_CONFIG --exists mozilla-plugin && NPAPI_CFLAGS="`$PKG_CONFIG --cflags mozilla-plugin`"
+ if $PKG_CONFIG --exists npapi-sdk; then
+ NPAPI_CFLAGS="`$PKG_CONFIG --cflags npapi-sdk`"
+ elif $PKG_CONFIG --exists mozilla-plugin; then
+ NPAPI_CFLAGS="`$PKG_CONFIG --cflags mozilla-plugin`"
+ fi
fi
fi
diff --git a/macros/po.m4 b/macros/po.m4
index 47f36a4..3c9884b 100644
--- a/macros/po.m4
+++ b/macros/po.m4
@@ -24,7 +24,7 @@ AC_DEFUN([AM_PO_SUBDIRS],
[
AC_REQUIRE([AC_PROG_MAKE_SET])dnl
AC_REQUIRE([AC_PROG_INSTALL])dnl
- AC_REQUIRE([AM_PROG_MKDIR_P])dnl defined by automake
+ AC_REQUIRE([AC_PROG_MKDIR_P])dnl defined by automake
AC_REQUIRE([AM_NLS])dnl
dnl Release version of the gettext macros. This is used to ensure that
diff --git a/plugin/aos4/plugin.cpp b/plugin/aos4/plugin.cpp
index 4ee69f2..aa1d80f 100644
--- a/plugin/aos4/plugin.cpp
+++ b/plugin/aos4/plugin.cpp
@@ -66,7 +66,7 @@
Compatible Shockwave Flash "FLASH_VERSION
#include <cstdarg>
-#include <boost/cstdint.hpp>
+#include <cstdint>
#include <fstream>
#include "plugin.h"
@@ -344,7 +344,7 @@ nsPluginInstance::shut(void)
NPError
nsPluginInstance::NewStream(NPMIMEType type, NPStream *stream,
- NPBool seekable, boost::uint16_t *stype)
+ NPBool seekable, std::uint16_t *stype)
{
DBG("nsPluginInstance::NewStream\n");
DBG("stream->url: %s\n", stream->url);
@@ -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/npapi/external.cpp b/plugin/npapi/external.cpp
index 6648054..a1c199e 100644
--- a/plugin/npapi/external.cpp
+++ b/plugin/npapi/external.cpp
@@ -21,8 +21,7 @@
#endif
#include <boost/algorithm/string/erase.hpp>
-#include <boost/shared_ptr.hpp>
-#include <boost/scoped_ptr.hpp>
+#include <memory>
#include <string>
#include <sstream>
@@ -200,10 +199,10 @@ ExternalInterface::makeObject (std::map<std::string, std::string> &args)
// <number>135.78</number>
// </arguments>
// </invoke>
-boost::shared_ptr<ExternalInterface::invoke_t>
+std::shared_ptr<ExternalInterface::invoke_t>
ExternalInterface::parseInvoke(const std::string &xml)
{
- boost::shared_ptr<ExternalInterface::invoke_t> invoke;
+ std::shared_ptr<ExternalInterface::invoke_t> invoke;
if (xml.empty()) {
return invoke;
}
@@ -295,10 +294,10 @@ ExternalInterface::parseXML(const std::string &xml)
end = xml.find("</number>");
std::string str = xml.substr(start, end-start);
if (str.find(".") != std::string::npos) {
- double num = strtod(str.c_str(), NULL);
+ double num = strtod(str.c_str(), nullptr);
DOUBLE_TO_NPVARIANT(num, value);
} else {
- int num = strtol(str.c_str(), NULL, 0);
+ int num = strtol(str.c_str(), nullptr, 0);
INT32_TO_NPVARIANT(num, value);
}
} else if (tag == "<string>") {
@@ -324,7 +323,7 @@ ExternalInterface::parseXML(const std::string &xml)
for (it=props.begin(); it != props.end(); ++it) {
NPIdentifier id = NPN_GetStringIdentifier(it->first.c_str());
GnashNPVariant& value = it->second;
- NPN_SetProperty(NULL, obj, id, &value.get());
+ NPN_SetProperty(nullptr, obj, id, &value.get());
}
OBJECT_TO_NPVARIANT(obj, value);
}
@@ -340,7 +339,7 @@ ExternalInterface::parseXML(const std::string &xml)
for (it=props.begin(); it != props.end(); ++it) {
NPIdentifier id = NPN_GetStringIdentifier(it->first.c_str());
GnashNPVariant& value = it->second;
- NPN_SetProperty(NULL, obj, id, &value.get());
+ NPN_SetProperty(nullptr, obj, id, &value.get());
}
OBJECT_TO_NPVARIANT(obj, value);
}
diff --git a/plugin/npapi/external.h b/plugin/npapi/external.h
index 57f7014..7a0aa67 100644
--- a/plugin/npapi/external.h
+++ b/plugin/npapi/external.h
@@ -23,10 +23,10 @@
#include "gnashconfig.h"
#endif
+#include <memory>
#include <string>
#include <vector>
#include <map>
-#include <boost/shared_ptr.hpp>
#include "npapi.h"
#include "npruntime.h"
@@ -62,7 +62,7 @@ struct ExternalInterface
static std::string makeObject (std::map<std::string, std::string> &args);
static GnashNPVariant parseXML(const std::string &xml);
- static boost::shared_ptr<invoke_t> parseInvoke(const std::string &xml);
+ static std::shared_ptr<invoke_t> parseInvoke(const std::string &xml);
static std::map<std::string, GnashNPVariant> parseProperties(const std::string &xml);
static std::vector<GnashNPVariant> parseArguments(const std::string &xml);
diff --git a/plugin/npapi/mozilla-sdk/np_entry.cpp b/plugin/npapi/mozilla-sdk/np_entry.cpp
index 35f4b0c..5573ff5 100644
--- a/plugin/npapi/mozilla-sdk/np_entry.cpp
+++ b/plugin/npapi/mozilla-sdk/np_entry.cpp
@@ -43,7 +43,7 @@ NP_Shutdown()
NPError
fillPluginFunctionTable(NPPluginFuncs* aNPPFuncs)
{
- if(aNPPFuncs == NULL) {
+ if(aNPPFuncs == nullptr) {
return NPERR_INVALID_FUNCTABLE_ERROR;
}
@@ -93,7 +93,7 @@ fillNetscapeFunctionTable(NPNetscapeFuncs* aNPNFuncs)
{
int i = 0, n;
- if(aNPNFuncs == NULL) {
+ if(aNPNFuncs == nullptr) {
return NPERR_INVALID_FUNCTABLE_ERROR;
}
diff --git a/plugin/npapi/mozilla-sdk/npn_gate.cpp b/plugin/npapi/mozilla-sdk/npn_gate.cpp
index ef41572..3778ebe 100644
--- a/plugin/npapi/mozilla-sdk/npn_gate.cpp
+++ b/plugin/npapi/mozilla-sdk/npn_gate.cpp
@@ -165,7 +165,7 @@ NPN_Status(NPP instance, const char *message)
const char *
NPN_UserAgent(NPP instance)
{
- const char * rv = NULL;
+ const char * rv = nullptr;
rv = NPNFuncs.uagent(instance);
return rv;
}
@@ -173,7 +173,7 @@ NPN_UserAgent(NPP instance)
void *
NPN_MemAlloc(uint32_t size)
{
- void * rv = NULL;
+ void * rv = nullptr;
rv = NPNFuncs.memalloc(size);
return rv;
}
diff --git a/plugin/npapi/plugin.cpp b/plugin/npapi/plugin.cpp
index cd0f7a3..3c6f423 100644
--- a/plugin/npapi/plugin.cpp
+++ b/plugin/npapi/plugin.cpp
@@ -22,7 +22,6 @@
#endif
#include <boost/format.hpp>
-#include <boost/scoped_array.hpp>
#include <boost/algorithm/string/replace.hpp>
#include <boost/algorithm/string/find.hpp>
#define BOOST_IOSTREAMS_USE_DEPRECATED
@@ -148,10 +147,10 @@ static const char* getPluginDescription();
static const char*
getPluginDescription()
{
- static const char* desc = NULL;
+ static const char* desc = nullptr;
if (!desc) {
desc = std::getenv("GNASH_PLUGIN_DESCRIPTION");
- if (desc == NULL) desc = PLUGIN_DESCRIPTION;
+ if (desc == nullptr) desc = PLUGIN_DESCRIPTION;
}
return desc;
}
@@ -216,7 +215,7 @@ NS_PluginInitialize()
// First, check for XEmbed support. The NPAPI Gnash plugin
// only works with XEmbed, so tell the plugin API to fail if
// XEmbed is not found.
- err = NPN_GetValue(NULL,NPNVSupportsXEmbedBool,
+ err = NPN_GetValue(nullptr,NPNVSupportsXEmbedBool,
(void *)&supportsXEmbed);
if (err != NPERR_NO_ERROR || !supportsXEmbed) {
@@ -229,7 +228,7 @@ NS_PluginInitialize()
// GTK is not strictly required, but we do use the Glib main event loop,
// so lack of GTK means reduced functionality.
NPNToolkitType toolkit;
- err = NPN_GetValue(NULL, NPNVToolkit, &toolkit);
+ err = NPN_GetValue(nullptr, NPNVToolkit, &toolkit);
if (err != NPERR_NO_ERROR || toolkit != NPNVGtk2) {
gnash::log_error("NPAPI ERROR: No GTK2 support in this browser! Have version %d", (int)toolkit);
@@ -241,7 +240,7 @@ NS_PluginInitialize()
Check for environment variables.
*/
char* opts = std::getenv("GNASH_OPTIONS");
- if (opts != NULL) {
+ if (opts != nullptr) {
gnash::log_debug("GNASH_OPTIONS: %s", opts);
// Should the plugin wait for gdb to be attached?
@@ -266,7 +265,7 @@ NS_PluginInitialize()
newGnashRc.append("/gnashpluginrc");
#endif
- const char *home = NULL;
+ const char *home = nullptr;
#if defined(__amigaos4__)
//on AmigaOS we have a GNASH: assign that point to program dir
home = "/gnash";
@@ -294,7 +293,7 @@ NS_PluginInitialize()
gnash::log_error("WARNING: NPAPI plugin could not find user home dir");
}
- char *gnashrc = std::getenv("GNASHRC");
+ const char *gnashrc = std::getenv("GNASHRC");
if ( gnashrc ) {
newGnashRc.append(":");
newGnashRc.append(gnashrc);
@@ -399,7 +398,7 @@ NS_NewPluginInstance(nsPluginCreateData * aCreateDataStruct)
// gnash::log_debug(__PRETTY_FUNCTION__);
if(!aCreateDataStruct) {
- return NULL;
+ return nullptr;
}
return new gnash::nsPluginInstance(aCreateDataStruct);
@@ -439,7 +438,7 @@ nsPluginInstance::nsPluginInstance(nsPluginCreateData* data)
_childpid(0),
_filefd(-1),
_name(),
- _scriptObject(0)
+ _scriptObject(nullptr)
{
// gnash::log_debug("%s: %x", __PRETTY_FUNCTION__, (void *)this);
@@ -740,7 +739,7 @@ nsPluginInstance::handlePlayerRequests(GIOChannel* iochan, GIOCondition cond)
gchar buffer[buf_size];
do {
- GError* error = 0;
+ GError* error = nullptr;
gsize bytes_read = 0;
GIOStatus status = g_io_channel_read_chars(iochan, buffer, buf_size,
@@ -821,7 +820,7 @@ nsPluginInstance::processPlayerRequest()
// Extract a message from the packet
std::string msg = packet.substr(0, pos + term.size());
- boost::shared_ptr<plugin::ExternalInterface::invoke_t> invoke =
+ std::shared_ptr<plugin::ExternalInterface::invoke_t> invoke =
plugin::ExternalInterface::parseInvoke(msg);
// drop the parsed message from the packet
@@ -934,7 +933,7 @@ nsPluginInstance::processPlayerRequest()
if (!invoke->name.empty() && !invoke->args.empty()) {
//Convert the as_value argument to NPVariant
const size_t count = invoke->args.size() - 1;
- boost::scoped_array<NPVariant> args(new NPVariant[count]);
+ std::unique_ptr<NPVariant[]> args(new NPVariant[count]);
//Skip the first argument
for (size_t i = 0; i < count; ++i) {
invoke->args[i+1].copy(args[i]);
@@ -1073,7 +1072,7 @@ nsPluginInstance::getDocumentProp(const std::string& propname) const
return rv;
}
- boost::shared_ptr<NPObject> window_obj(windowobj, NPN_ReleaseObject);
+ std::shared_ptr<NPObject> window_obj(windowobj, NPN_ReleaseObject);
NPIdentifier doc_id = NPN_GetStringIdentifier("document");
@@ -1082,7 +1081,7 @@ nsPluginInstance::getDocumentProp(const std::string& propname) const
return rv;
}
- boost::shared_ptr<NPVariant> doc_var(&docvar, NPN_ReleaseVariantValue);
+ std::shared_ptr<NPVariant> doc_var(&docvar, NPN_ReleaseVariantValue);
if (!NPVARIANT_IS_OBJECT(docvar)) {
return rv;
@@ -1097,7 +1096,7 @@ nsPluginInstance::getDocumentProp(const std::string& propname) const
return rv;
}
- boost::shared_ptr<NPVariant> prop_var(&propvar, NPN_ReleaseVariantValue);
+ std::shared_ptr<NPVariant> prop_var(&propvar, NPN_ReleaseVariantValue);
if (!NPVARIANT_IS_STRING(propvar)) {
return rv;
@@ -1122,7 +1121,7 @@ nsPluginInstance::setupCookies(const std::string& pageurl)
std::string ncookie;
- char *cookie = 0;
+ char *cookie = nullptr;
uint32_t length = 0;
NPError rv = NPERR_GENERIC_ERROR;
@@ -1197,7 +1196,7 @@ nsPluginInstance::setupProxy(const std::string& url)
if (!NPNFuncs.getvalueforurl) return;
#endif
- char *proxy = 0;
+ char *proxy = nullptr;
uint32_t length = 0;
#if NPAPI_VERSION != 190
NPN_GetValueForURL(_instance, NPNURLVProxy, url.c_str(),
@@ -1405,7 +1404,7 @@ nsPluginInstance::startProc()
std::transform(arg_vec.begin(), arg_vec.end(), std::back_inserter(args),
std::mem_fun_ref(&std::string::c_str));
- args.push_back(0);
+ args.push_back(nullptr);
// Argument List prepared, now fork(), close file descriptors and execv()
@@ -1419,27 +1418,19 @@ nsPluginInstance::startProc()
// If we are the parent and fork() worked, childpid is a positive integer.
if (_childpid > 0) {
-
- // we want to write to p2c pipe, so close read-fd0
- ret = close (p2c_pipe[0]);
- if (ret == -1) {
- // this is not really a fatal error, so continue best as we can
- gnash::log_error("p2c_pipe[0] close() failed: %s",
- strerror(errno));
- }
-
- // we want to read from c2p pipe, so close read-fd1
- ret = close (c2p_pipe[1]);
- if (ret == -1) {
+ // Close the child's end of the pipes.
+ int fdstoclose[] = {p2c_controlpipe[0], p2c_pipe[0], c2p_pipe[1]};
+ int num_failed = std::count_if(fdstoclose, fdstoclose+3, close);
+
+ if (num_failed > 0) {
// this is not really a fatal error, so continue best as we can
- gnash::log_error("c2p_pipe[1] close() failed: %s",
- strerror(errno));
- gnash::log_debug("Forked successfully but with ignorable errors.");
- } else {
- gnash::log_debug("Forked successfully, child process PID is %d",
- _childpid);
+ gnash::log_error("%d fds failed to close: %s (error ignored).",
+ num_failed, strerror(errno));
}
+ gnash::log_debug("Forked successfully, child process PID is %d",
+ _childpid);
+
if (!cookiefile.empty()) {
cookiemap.insert(std::make_pair(_childpid, cookiefile));
gnash::log_debug("Pid %d associated with cookiefile %s",
diff --git a/plugin/npapi/pluginScriptObject.cpp b/plugin/npapi/pluginScriptObject.cpp
index 29d1408..3b599c8 100644
--- a/plugin/npapi/pluginScriptObject.cpp
+++ b/plugin/npapi/pluginScriptObject.cpp
@@ -20,18 +20,8 @@
#include "gnashconfig.h"
#endif
-#include <iostream>
-#include <fstream>
-#include <sstream>
#include <map>
#include <string>
-#include <fcntl.h>
-#include <cstring>
-#include <cstdlib>
-#include <cstdio>
-#include <cerrno>
-#include <sys/types.h>
-#include <unistd.h>
#if defined(HAVE_WINSOCK_H) && !defined(__OS2__)
# include <winsock2.h>
# include <windows.h>
@@ -39,13 +29,9 @@
# include <io.h>
# include <ws2tcpip.h>
#else
-# include <sys/un.h>
# include <sys/ioctl.h>
# include <unistd.h>
-# include <sys/select.h>
-# include <netinet/in.h>
-# include <arpa/inet.h>
-# include <sys/socket.h>
+# include <poll.h>
#endif
#include "npapi.h"
#include "npruntime.h"
@@ -261,7 +247,7 @@ GnashPluginScriptObject::initializeIdentifiers()
// Constructor
GnashPluginScriptObject::GnashPluginScriptObject()
- : _nppinstance (0),
+ : _nppinstance (nullptr),
_controlfd(-1),
_hostfd(-1)
{
@@ -703,8 +689,6 @@ GnashPluginScriptObject::readPlayer()
std::string
GnashPluginScriptObject::readPlayer(int fd)
{
-// log_debug(__PRETTY_FUNCTION__);
-
std::string empty;
if (fd <= 0) {
@@ -714,41 +698,41 @@ GnashPluginScriptObject::readPlayer(int fd)
// Wait for some data from the player
int bytes = 0;
- fd_set fdset;
- FD_ZERO(&fdset);
- FD_SET(fd, &fdset);
- struct timeval tval;
- tval.tv_sec = 2;
- tval.tv_usec = 0;
- // log_debug("Waiting for data... ");
- if (select(fd+1, &fdset, NULL, NULL, &tval)) {
- // log_debug("There is data in the network");
-#ifndef _WIN32
- ioctl(fd, FIONREAD, &bytes);
-#else
- ioctlSocket(fd, FIONREAD, &bytes);
-#endif
- }
+
+ pollfd pfds[1] = { pollfd() };
+ pfds[0].fd = fd;
+ pfds[0].events = POLLIN;
+
+ int rv = poll(pfds, 1 /* arraySize */, 2000 /* ms */);
// No data yet
- if (bytes == 0) {
+ if (rv <= 0) {
return empty;
}
+#ifndef _WIN32
+ rv = ioctl(fd, FIONREAD, &bytes);
+#else
+ rv = ioctlSocket(fd, FIONREAD, &bytes);
+#endif
+ if (rv < 0) {
+ log_error("FIONREAD ioctl failed, unable to get network buffer length");
+ return empty;
+ }
log_debug("There are %d bytes in the network buffer", bytes);
- std::string buf(bytes, '\0');
-
- int ret = ::read(fd, &buf[0], bytes);
- if (ret <= 0) {
+ if (bytes <= 0) {
return empty;
}
- if (ret < bytes) {
- buf.resize(ret);
+ char buf[bytes];
+
+ int ret = ::read(fd, buf, bytes);
+ if (ret <= 0 || ret > bytes) {
+ return empty;
}
- return buf;
+ return std::string(buf, ret);
}
diff --git a/plugin/npapi/test.cpp b/plugin/npapi/test.cpp
index 3498157..1eb2367 100644
--- a/plugin/npapi/test.cpp
+++ b/plugin/npapi/test.cpp
@@ -281,7 +281,7 @@ main(int , char **)
// Parse an invoke message
xml = "<invoke name=\"barbyfoo\" returntype=\"xml\"><arguments><string>barfoo</string><number>135.78</number></arguments></invoke>";
- boost::shared_ptr<plugin::ExternalInterface::invoke_t> invoke ( plugin::ExternalInterface::parseInvoke(xml) );
+ std::shared_ptr<plugin::ExternalInterface::invoke_t> invoke ( plugin::ExternalInterface::parseInvoke(xml) );
str = NPStringToString(NPVARIANT_TO_STRING(invoke->args[0].get()));
if ((invoke->name == "barbyfoo") && (invoke->type == "xml")
&& (NPVARIANT_IS_STRING(invoke->args[0].get()))
diff --git a/plugin/win32/plugin.cpp b/plugin/win32/plugin.cpp
index 771d6e7..6bfaed1 100644
--- a/plugin/win32/plugin.cpp
+++ b/plugin/win32/plugin.cpp
@@ -68,7 +68,7 @@
#include <wingdi.h>
#include <cstdarg>
-#include <boost/cstdint.hpp>
+#include <cstdint>
#include <fstream>
#include "plugin.h"
@@ -341,7 +341,7 @@ nsPluginInstance::shut(void)
NPError
nsPluginInstance::NewStream(NPMIMEType type, NPStream *stream,
- NPBool seekable, boost::uint16_t *stype)
+ NPBool seekable, std::uint16_t *stype)
{
DBG("nsPluginInstance::NewStream\n");
DBG("stream->url: %s\n", stream->url);
@@ -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/po/Makefile.am b/po/Makefile.am
index f12146c..206542b 100644
--- a/po/Makefile.am
+++ b/po/Makefile.am
@@ -19,7 +19,7 @@ AUTOMAKE_OPTIONS = -Wno-portability
POFILES = AUTO
-translations = cs da de en_GB es fi fr it ja el km ne ru zh_TW
+translations = cs da de en_GB es fi fr it ja el km nb ne ru zh_CN zh_TW
# This is GNU make specific, so if you are building Gnash on a BSD
@@ -50,12 +50,13 @@ all: $(gmofiles)
if HAS_GETTEXT
-gnash.pot:
+SRCS = $(shell find $(patsubst %,../%,$(dirs)) -name '*.cpp')
+gnash.pot: $(SRCS)
cd $(top_srcdir); \
pwd; \
rm -f po/POTFILES; \
- for i in `find $(dirs) -name '*.cpp'`; do \
- echo "$$i" >> po/POTFILES;\
+ for i in $(SRCS); do \
+ echo "$$i" |sed 's%../%%' >> $@;\
done; \
$(XGETTEXT) --language=C++ --files-from=po/POTFILES \
-o po/gnash.pot \
@@ -65,7 +66,6 @@ gnash.pot:
rm -f po/POTFILES
update-po:
- rm -f $(srcdir)/gnash.pot # force rebuild of this
$(MAKE) gnash.pot
for i in $(pofiles); do \
echo "Merging $$i..." ; \
diff --git a/po/gnash.pot b/po/gnash.pot
index 5e4ad42..358f1c0 100644
--- a/po/gnash.pot
+++ b/po/gnash.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-01-20 17:11-0700\n"
+"POT-Creation-Date: 2014-04-20 00:26+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
"Language-Team: LANGUAGE <LL at li.org>\n"
@@ -17,6 +17,35 @@ msgstr ""
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
+#: libbase/extension.cpp:115
+#, c-format
+msgid "Loading module: %s from %s"
+msgstr ""
+
+#: libbase/extension.cpp:125 cygnal/handler.cpp:300
+#, c-format
+msgid "Initializing module: \"%s\" from %s"
+msgstr ""
+
+#: libbase/extension.cpp:142
+msgid "Couldn't get class_init symbol"
+msgstr ""
+
+#: libbase/extension.cpp:154
+#, c-format
+msgid "Initializing module: \"%s\""
+msgstr ""
+
+#: libbase/extension.cpp:168
+#, c-format
+msgid "Couldn't get class_init symbol: \"%s\""
+msgstr ""
+
+#: libbase/extension.cpp:196 cygnal/cgi-bin/oflaDemo/oflaDemo.cpp:313
+#, c-format
+msgid "Can't open directory %s"
+msgstr ""
+
#: libbase/RTMP.cpp:222
msgid "Initial connection failed"
msgstr ""
@@ -40,378 +69,468 @@ msgstr ""
msgid "Unknown packet %s received"
msgstr ""
-#: libbase/RTMP.cpp:458
+#: libbase/RTMP.cpp:456
msgid "failed to read RTMP packet header 2nd byte"
msgstr ""
-#: libbase/RTMP.cpp:466
+#: libbase/RTMP.cpp:464
msgid "Failed to read RTMP packet header 3nd byte"
msgstr ""
-#: libbase/RTMP.cpp:484
+#: libbase/RTMP.cpp:482
#, c-format
msgid "Incomplete packet received on channel %s"
msgstr ""
-#: libbase/RTMP.cpp:497
+#: libbase/RTMP.cpp:495
#, c-format
msgid "Failed to read RTMP packet header. type: %s"
msgstr ""
-#: libbase/RTMP.cpp:542
+#: libbase/RTMP.cpp:540
#, c-format
msgid "%s, failed to read extended timestamp"
msgstr ""
-#: libbase/RTMP.cpp:871
+#: libbase/RTMP.cpp:873
msgid "Stage 1 socket not ready. This should not happen."
msgstr ""
-#: libbase/RTMP.cpp:877
+#: libbase/RTMP.cpp:879
msgid "Could not send stage 1 data"
msgstr ""
-#: libbase/RTMP.cpp:899
+#: libbase/RTMP.cpp:901
#, c-format
msgid "Type mismatch: client sent %d, server answered %d"
msgstr ""
-#: libbase/RTMP.cpp:927
+#: libbase/RTMP.cpp:929
msgid "Could not send complete signature."
msgstr ""
-#: libbase/RTMP.cpp:953
+#: libbase/RTMP.cpp:955
msgid "Signatures do not match during handshake!"
msgstr ""
-#: libbase/RTMP.cpp:1041
+#: libbase/RTMP.cpp:1043
msgid "Control packet too short"
msgstr ""
-#: libbase/RTMP.cpp:1049
+#: libbase/RTMP.cpp:1051
#, c-format
msgid "Control packet (%s) data too short"
msgstr ""
-#: libbase/RTMP.cpp:1087
+#: libbase/RTMP.cpp:1089
#, c-format
msgid "Received unknown or unhandled control %s"
msgstr ""
-#: libbase/GnashImagePng.cpp:51
-msgid "PNG error: "
+#: libbase/SharedMem.cpp:69
+#, c-format
+msgid "Error detaching shared memory: %s"
msgstr ""
-#: libbase/StreamProvider.cpp:84 libbase/StreamProvider.cpp:149
-msgid "Could not open file %1%: %2%"
+#: libbase/SharedMem.cpp:76
+#, c-format
+msgid "Error during stat of shared memory segment: %s"
msgstr ""
-#: libbase/StreamProvider.cpp:112
-msgid "Request Headers discarded while getting stream from file: uri"
+#: libbase/SharedMem.cpp:84
+msgid "No shared memory users left. Removing segment and semaphore."
msgstr ""
-#: libbase/StreamProvider.cpp:135
-msgid "POST data discarded while getting a stream from file: uri"
+#: libbase/SharedMem.cpp:137
+msgid "Failed to set semaphore value: %1%"
msgstr ""
-#: libbase/noseek_fd_adapter.cpp:223
-#, c-format
-msgid "Error reading %d bytes from input stream"
+#: libbase/SharedMem.cpp:144
+msgid "Failed to obtain nonexclusive semaphore for shared memory: %1%"
msgstr ""
-#: libbase/Socket.cpp:98
-msgid "XMLSocket: The socket was never available"
+#: libbase/SharedMem.cpp:167
+msgid "Timed out waiting for semaphore initialization."
msgstr ""
-#: libbase/Socket.cpp:125
-msgid "Connection attempt while already connected"
+#: libbase/SharedMem.cpp:171
+msgid "Failed creating semaphore: %1%"
msgstr ""
-#: libbase/Socket.cpp:154
-#, c-format
-msgid "Socket creation failed: %s"
+#: libbase/SharedMem.cpp:218
+msgid "Unable to get shared memory segment!"
msgstr ""
-#: libbase/Socket.cpp:171
+#: libbase/SharedMem.cpp:225
#, c-format
-msgid "Failed to connect socket: %s"
+msgid "Unable to attach shared memory: %s"
msgstr ""
-#: libbase/Socket.cpp:187
-msgid "Setting socket timeout failed"
+#: libbase/GnashImageJpeg.cpp:115
+msgid "JPEG: Empty jpeg source stream."
+msgstr ""
+
+#: libbase/GnashImageJpeg.cpp:260 libbase/GnashImageJpeg.cpp:287
+#: libbase/GnashImageJpeg.cpp:305 libbase/GnashImageJpeg.cpp:361
+msgid "Internal jpeg error: "
+msgstr ""
+
+#: libbase/GnashImageJpeg.cpp:271
+msgid "Lack of data during JPEG header parsing"
msgstr ""
-#: libbase/Socket.cpp:237
+#: libbase/GnashImageJpeg.cpp:281
#, c-format
-msgid "Socket receive error %s"
+msgid "unexpected: jpeg_read_header returned %d"
+msgstr ""
+
+#: libbase/GnashImageJpeg.cpp:317
+msgid "lack of data during JPEG header parsing"
msgstr ""
-#: libbase/Socket.cpp:340
+#: libbase/GnashImageJpeg.cpp:327
#, c-format
-msgid "Socket send error %s"
+msgid "unexpected: jpeg_read_header returned %d [%s:%d]"
msgstr ""
-#: libbase/Socket.cpp:355
-msgid "tell() called for Socket"
+#: libbase/GnashImageJpeg.cpp:335
+msgid "Internal jpeg error during header parsing: "
msgstr ""
-#: libbase/Socket.cpp:362
-msgid "seek() called for Socket"
+#: libbase/GnashImageJpeg.cpp:343
+msgid "Internal jpeg error during decompression: "
msgstr ""
-#: libbase/Socket.cpp:369
-msgid "go_to_end() called for Socket"
+#: libbase/GnashImageJpeg.cpp:518
+msgid "rw_dest_IOChannel couldn't write data."
msgstr ""
-#: libbase/tu_file.cpp:193
-msgid "Error while seeking to end: %1%"
+#: libbase/GnashImageJpeg.cpp:543
+msgid "rw_dest_IOChannel::term_destination couldn't write data."
msgstr ""
-#: libbase/tu_file.cpp:229
-msgid "Could not fstat file"
+#: libbase/URLAccessManager.cpp:95
+#, c-format
+msgid "Load from host %s granted (whitelisted)"
msgstr ""
-#: libbase/rc.cpp:171 libbase/rc.cpp:702
-msgid "Failed to find user settings directory"
+#: libbase/URLAccessManager.cpp:101
+#, c-format
+msgid "Load from host %s forbidden (not in non-empty whitelist)"
msgstr ""
-#: libbase/rc.cpp:382
-msgid "RcInitFile: couldn't open file: "
+#: libbase/URLAccessManager.cpp:115
+#, c-format
+msgid "Load from host %s forbidden (blacklisted)"
msgstr ""
-#: libbase/rc.cpp:422
+#: libbase/URLAccessManager.cpp:120
#, c-format
-msgid "Warning: missing value for variable \"%s\" in rcfile %s, line %d"
+msgid "Load from host %s granted (default)"
msgstr ""
-#: libbase/rc.cpp:625
+#: libbase/URLAccessManager.cpp:152
#, c-format
-msgid "Warning: unrecognized directive \"%s\" in rcfile %s line %d"
+msgid "Load of file %s forbidden (starting URL %s is not a local resource)"
msgstr ""
-#: libbase/rc.cpp:637
+#: libbase/URLAccessManager.cpp:169
#, c-format
-msgid "Warning: empty include specification in rcfile %s, line %d"
+msgid "Load of file %s granted (under local sandbox %s)"
msgstr ""
-#: libbase/rc.cpp:642
+#: libbase/URLAccessManager.cpp:177
#, c-format
-msgid ""
-"Warning: include specification must be an absolute path in rcfile %s, line %d"
+msgid "Load of file %s forbidden (not under local sandboxes)"
msgstr ""
-#: libbase/rc.cpp:651
+#: libbase/URLAccessManager.cpp:217
#, c-format
-msgid "Warning: unrecognized action \"%s\" in rcfile %s, line %d"
+msgid "gethostname failed: %s"
msgstr ""
-#: libbase/rc.cpp:743
+#: libbase/URLAccessManager.cpp:239
#, c-format
-msgid "Couldn't open file %s for writing"
+msgid "Load from host %s forbidden (not in the local domain)"
msgstr ""
-#: libbase/rc.cpp:752
-msgid "# Generated by Gnash. Manual changes to this file may be overridden."
+#: libbase/URLAccessManager.cpp:245
+#, c-format
+msgid "Load from host %s forbidden (not on the local host)"
msgstr ""
-#: libbase/extension.cpp:115
+#: libbase/URLAccessManager.cpp:267
#, c-format
-msgid "Loading module: %s from %s"
+msgid "Attempt to connect to disallowed port %s"
msgstr ""
-#: libbase/extension.cpp:128 cygnal/handler.cpp:300
+#: libbase/URLAccessManager.cpp:277
#, c-format
-msgid "Initializing module: \"%s\" from %s"
+msgid "Checking security of URL '%s'"
msgstr ""
-#: libbase/extension.cpp:145
-msgid "Couldn't get class_init symbol"
+#: libbase/URLAccessManager.cpp:289
+msgid "Network connection without hostname requested"
+msgstr ""
+
+#: libbase/AMF.cpp:90
+msgid "Read past _end of buffer for string length"
+msgstr ""
+
+#: libbase/AMF.cpp:97
+msgid "Read past _end of buffer for string type"
+msgstr ""
+
+#: libbase/AMF.cpp:138
+msgid "writePlainString called with invalid type!"
+msgstr ""
+
+#: libbase/StreamProvider.cpp:84 libbase/StreamProvider.cpp:149
+msgid "Could not open file %1%: %2%"
+msgstr ""
+
+#: libbase/StreamProvider.cpp:112
+msgid "Request Headers discarded while getting stream from file: uri"
+msgstr ""
+
+#: libbase/StreamProvider.cpp:135
+msgid "POST data discarded while getting a stream from file: uri"
msgstr ""
-#: libbase/extension.cpp:159
+#: libbase/GnashVaapiImage.cpp:51
#, c-format
-msgid "Initializing module: \"%s\""
+msgid "GnashVaapiImage::GnashVaapiImage(): surface 0x%08x, size %dx%d\n"
msgstr ""
-#: libbase/extension.cpp:174
+#: libbase/GnashVaapiImage.cpp:57
#, c-format
-msgid "Couldn't get class_init symbol: \"%s\""
+msgid "GnashVaapiImage::~GnashVaapiImage(): surface 0x%08x\n"
msgstr ""
-#: libbase/extension.cpp:202 cygnal/cgi-bin/oflaDemo/oflaDemo.cpp:313
+#: libbase/GnashVaapiImage.cpp:69
#, c-format
-msgid "Can't open directory %s"
+msgid "GnashVaapi::update(): data %p\n"
+msgstr ""
+
+#: libbase/GnashVaapiImage.cpp:101
+msgid "GnashVaapiImage: VA surface to SW pixels are not supported\n"
+msgstr ""
+
+#: libbase/GnashVaapiImage.cpp:112
+#, c-format
+msgid "GnashVaapiImage::data(): surface 0x%08x\n"
+msgstr ""
+
+#: libbase/GnashVaapiImage.cpp:113 libbase/GnashVaapiImage.cpp:129
+#, c-format
+msgid " -> %u usec from creation\n"
+msgstr ""
+
+#: libbase/GnashVaapiImage.cpp:127
+#, c-format
+msgid "GnashVaapiImage::data() const: surface 0x%08x\n"
+msgstr ""
+
+#: libbase/ClockTime.cpp:223
+msgid "Cannot get requested timezone information"
+msgstr ""
+
+#: libbase/GnashImagePng.cpp:51
+msgid "PNG error: "
msgstr ""
-#: libbase/curl_adapter.cpp:48
+#: libbase/NetworkAdapter.cpp:50
msgid ""
"libcurl is not available, but Gnash has attempted to use the curl adapter"
msgstr ""
-#: libbase/curl_adapter.cpp:245
+#: libbase/NetworkAdapter.cpp:247
#, c-format
msgid "Failed cleaning up share handle: %s. Giving up after %d retries."
msgstr ""
-#: libbase/curl_adapter.cpp:249
+#: libbase/NetworkAdapter.cpp:251
#, c-format
msgid "Failed cleaning up share handle: %s. Will try again in a second."
msgstr ""
-#: libbase/curl_adapter.cpp:339
+#: libbase/NetworkAdapter.cpp:341
msgid "lockSharedHandle: SSL session locking unsupported"
msgstr ""
-#: libbase/curl_adapter.cpp:342
+#: libbase/NetworkAdapter.cpp:344
msgid "lockSharedHandle: connect locking unsupported"
msgstr ""
-#: libbase/curl_adapter.cpp:345
+#: libbase/NetworkAdapter.cpp:347
msgid "lockSharedHandle: last locking unsupported ?!"
msgstr ""
-#: libbase/curl_adapter.cpp:348
+#: libbase/NetworkAdapter.cpp:350
#, c-format
msgid "lockSharedHandle: unknown shared data %d"
msgstr ""
-#: libbase/curl_adapter.cpp:374
+#: libbase/NetworkAdapter.cpp:376
msgid "unlockSharedHandle: SSL session locking unsupported"
msgstr ""
-#: libbase/curl_adapter.cpp:377
+#: libbase/NetworkAdapter.cpp:379
msgid "unlockSharedHandle: connect locking unsupported"
msgstr ""
-#: libbase/curl_adapter.cpp:380
+#: libbase/NetworkAdapter.cpp:382
msgid "unlockSharedHandle: last locking unsupported ?!"
msgstr ""
-#: libbase/curl_adapter.cpp:383
+#: libbase/NetworkAdapter.cpp:385
#, c-format
msgid "unlockSharedHandle: unknown shared data %d"
msgstr ""
-#: libbase/curl_adapter.cpp:672
+#: libbase/NetworkAdapter.cpp:674
#, c-format
msgid "FIXME: Timeout (%u milliseconds) while loading from URL %s"
msgstr ""
-#: libbase/curl_adapter.cpp:720
+#: libbase/NetworkAdapter.cpp:722
#, c-format
msgid "Timeout (%u milliseconds) while loading from URL %s"
msgstr ""
-#: libbase/curl_adapter.cpp:763
+#: libbase/NetworkAdapter.cpp:765
#, c-format
msgid "HTTP response %ld from URL %s"
msgstr ""
-#: libbase/curl_adapter.cpp:774
+#: libbase/NetworkAdapter.cpp:776
#, c-format
msgid "CURL: %s"
msgstr ""
-#: libbase/curl_adapter.cpp:807
+#: libbase/NetworkAdapter.cpp:809
msgid ""
"Could not open specified path as cache file. Using a temporary file instead"
msgstr ""
-#: libbase/curl_adapter.cpp:815
+#: libbase/NetworkAdapter.cpp:817
msgid "Could not create temporary cache file"
msgstr ""
-#: libbase/curl_adapter.cpp:825
+#: libbase/NetworkAdapter.cpp:827
msgid "Allowing connections to SSL sites with invalid certificates"
msgstr ""
-#: libbase/curl_adapter.cpp:1091
+#: libbase/NetworkAdapter.cpp:1093
msgid ""
-"curl adaptor's fillCacheNonBlocking set _error rather then throwing an "
-"exception"
+"curl adaptor's fillCacheNonBlocking method sets an error condition rather "
+"than throwing an exception"
msgstr ""
-#: libbase/curl_adapter.cpp:1156
+#: libbase/NetworkAdapter.cpp:1158
#, c-format
msgid "Warning: could not cache enough bytes on seek: %d requested, %d cached"
msgstr ""
-#: libbase/curl_adapter.cpp:1162
+#: libbase/NetworkAdapter.cpp:1164
msgid "Warning: fseek failed"
msgstr ""
-#: libbase/curl_adapter.cpp:1342 libbase/curl_adapter.cpp:1361
-#: libbase/curl_adapter.cpp:1377
+#: libbase/NetworkAdapter.cpp:1353 libbase/NetworkAdapter.cpp:1372
+#: libbase/NetworkAdapter.cpp:1388
#, c-format
msgid "curl stream: %s"
msgstr ""
-#: libbase/ClockTime.cpp:223
-msgid "Cannot get requested timezone information"
+#: libbase/noseek_fd_adapter.cpp:223
+#, c-format
+msgid "Error reading %d bytes from input stream"
msgstr ""
-#: libbase/SharedMem.cpp:68
-#, c-format
-msgid "Error detaching shared memory: %s"
+#: libbase/GnashImageGif.cpp:175
+msgid "GIF: Error retrieving image description"
msgstr ""
-#: libbase/SharedMem.cpp:75
-#, c-format
-msgid "Error during stat of shared memory segment: %s"
+#: libbase/GnashImageGif.cpp:204
+msgid "GIF: invalid image data (bounds outside GIF screen)"
msgstr ""
-#: libbase/SharedMem.cpp:83
-msgid "No shared memory users left. Removing segment and semaphore."
+#: libbase/GnashImageGif.cpp:226 libbase/GnashImageGif.cpp:244
+msgid "GIF: failed reading pixel data"
+msgstr ""
+
+#: libbase/GnashImageGif.cpp:293
+msgid "GIF: Error retrieving record type"
msgstr ""
-#: libbase/SharedMem.cpp:150
-msgid "Failed to get semaphore for shared memory!"
+#: libbase/GnashImage.cpp:198
+msgid "Requested to write image as unsupported filetype"
msgstr ""
-#: libbase/SharedMem.cpp:157
-msgid "Failed to set semaphore value"
+#: libbase/GnashImage.cpp:254
+msgid "Invalid image returned"
msgstr ""
-#: libbase/SharedMem.cpp:167
-msgid "Need semaphore value of 1 for locking. Cannot attach shared memory!"
+#: libbase/GnashImage.cpp:262
+#, c-format
+msgid "Out of memory while trying to create %dx%d image"
msgstr ""
-#: libbase/SharedMem.cpp:182
-msgid "Unable to get shared memory segment!"
+#: libbase/Socket.cpp:106
+msgid "XMLSocket: The socket was never available"
msgstr ""
-#: libbase/SharedMem.cpp:189
+#: libbase/Socket.cpp:138
#, c-format
-msgid "Unable to attach shared memory: %s"
+msgid "getaddrinfo() failed with code: #%d - %s"
msgstr ""
-#: libbase/GnashImage.cpp:179
-msgid "Requested to write image as unsupported filetype"
+#: libbase/Socket.cpp:154
+msgid "Connection attempt while already connected"
msgstr ""
-#: libbase/GnashImage.cpp:235
-msgid "Invalid image returned"
+#: libbase/Socket.cpp:182
+msgid "getnameinfo() failed: %1%"
msgstr ""
-#: libbase/GnashImage.cpp:243
+#: libbase/Socket.cpp:196 cygnal/libnet/network.cpp:623
#, c-format
-msgid "Out of memory while trying to create %dx%d image"
+msgid "Socket creation failed: %s"
msgstr ""
-#: libbase/GnashImageGif.cpp:175
-msgid "GIF: Error retrieving image description"
+#: libbase/Socket.cpp:206
+msgid "Socket creation attempt(s) failed: giving up."
msgstr ""
-#: libbase/GnashImageGif.cpp:204
-msgid "GIF: invalid image data (bounds outside GIF screen)"
+#: libbase/Socket.cpp:222
+#, c-format
+msgid "Failed to connect to socket: %s"
msgstr ""
-#: libbase/GnashImageGif.cpp:226 libbase/GnashImageGif.cpp:244
-msgid "GIF: failed reading pixel data"
+#: libbase/Socket.cpp:238
+msgid "Setting socket timeout failed"
msgstr ""
-#: libbase/GnashImageGif.cpp:283
-msgid "GIF: Error retrieving record type"
+#: libbase/Socket.cpp:281
+#, c-format
+msgid "Socket receive error %s"
+msgstr ""
+
+#: libbase/Socket.cpp:382
+#, c-format
+msgid "Socket send error %s"
+msgstr ""
+
+#: libbase/Socket.cpp:397
+msgid "tell() called for Socket"
+msgstr ""
+
+#: libbase/Socket.cpp:404
+msgid "seek() called for Socket"
+msgstr ""
+
+#: libbase/Socket.cpp:411
+msgid "go_to_end() called for Socket"
msgstr ""
#: libbase/memory.cpp:94
@@ -427,235 +546,112 @@ msgstr ""
msgid "Zero memory leaks for this program"
msgstr ""
-#: libbase/GnashVaapiImage.cpp:51
-#, c-format
-msgid "GnashVaapiImage::GnashVaapiImage(): surface 0x%08x, size %dx%d\n"
+#: libbase/tu_file.cpp:193
+msgid "Error while seeking to end: %1%"
msgstr ""
-#: libbase/GnashVaapiImage.cpp:57
-#, c-format
-msgid "GnashVaapiImage::~GnashVaapiImage(): surface 0x%08x\n"
+#: libbase/tu_file.cpp:229
+msgid "Could not fstat file"
msgstr ""
-#: libbase/GnashVaapiImage.cpp:69
-#, c-format
-msgid "GnashVaapi::update(): data %p\n"
+#: libbase/rc.cpp:170 libbase/rc.cpp:701
+msgid "Failed to find user settings directory"
msgstr ""
-#: libbase/GnashVaapiImage.cpp:101
-msgid "GnashVaapiImage: VA surface to SW pixels are not supported\n"
+#: libbase/rc.cpp:381
+msgid "RcInitFile: couldn't open file: "
msgstr ""
-#: libbase/GnashVaapiImage.cpp:112
+#: libbase/rc.cpp:421
#, c-format
-msgid "GnashVaapiImage::data(): surface 0x%08x\n"
+msgid "Warning: missing value for variable \"%s\" in rcfile %s, line %d"
msgstr ""
-#: libbase/GnashVaapiImage.cpp:113 libbase/GnashVaapiImage.cpp:129
+#: libbase/rc.cpp:624
#, c-format
-msgid " -> %u usec from creation\n"
+msgid "Warning: unrecognized directive \"%s\" in rcfile %s line %d"
msgstr ""
-#: libbase/GnashVaapiImage.cpp:127
+#: libbase/rc.cpp:636
#, c-format
-msgid "GnashVaapiImage::data() const: surface 0x%08x\n"
+msgid "Warning: empty include specification in rcfile %s, line %d"
msgstr ""
-#: libbase/sharedlib.cpp:69
+#: libbase/rc.cpp:641
#, c-format
-msgid "Couldn't initialize ltdl: %s"
+msgid ""
+"Warning: include specification must be an absolute path in rcfile %s, line %d"
msgstr ""
-#: libbase/sharedlib.cpp:98
+#: libbase/rc.cpp:650
#, c-format
-msgid "Trying to open shared library \"%s\""
+msgid "Warning: unrecognized action \"%s\" in rcfile %s, line %d"
msgstr ""
-#: libbase/sharedlib.cpp:112
-#, c-format
-msgid "Opened dynamic library \"%s\""
-msgstr ""
-
-#: libbase/sharedlib.cpp:131
-#, c-format
-msgid "Couldn't find symbol: %s"
-msgstr ""
-
-#: libbase/sharedlib.cpp:134
-#, c-format
-msgid "Found symbol %s @ %p"
-msgstr ""
-
-#: libbase/GnashImageJpeg.cpp:116
-msgid "JPEG: Empty jpeg source stream."
-msgstr ""
-
-#: libbase/GnashImageJpeg.cpp:263 libbase/GnashImageJpeg.cpp:290
-#: libbase/GnashImageJpeg.cpp:308 libbase/GnashImageJpeg.cpp:364
-msgid "Internal jpeg error: "
-msgstr ""
-
-#: libbase/GnashImageJpeg.cpp:274
-msgid "Lack of data during JPEG header parsing"
-msgstr ""
-
-#: libbase/GnashImageJpeg.cpp:284
-#, c-format
-msgid "unexpected: jpeg_read_header returned %d"
-msgstr ""
-
-#: libbase/GnashImageJpeg.cpp:320
-msgid "lack of data during JPEG header parsing"
-msgstr ""
-
-#: libbase/GnashImageJpeg.cpp:330
-#, c-format
-msgid "unexpected: jpeg_read_header returned %d [%s:%d]"
-msgstr ""
-
-#: libbase/GnashImageJpeg.cpp:338
-msgid "Internal jpeg error during header parsing: "
-msgstr ""
-
-#: libbase/GnashImageJpeg.cpp:346
-msgid "Internal jpeg error during decompression: "
-msgstr ""
-
-#: libbase/GnashImageJpeg.cpp:521
-msgid "rw_dest_IOChannel couldn't write data."
-msgstr ""
-
-#: libbase/GnashImageJpeg.cpp:546
-msgid "rw_dest_IOChannel::term_destination couldn't write data."
-msgstr ""
-
-#: libbase/AMF.cpp:90
-msgid "Read past _end of buffer for string length"
-msgstr ""
-
-#: libbase/AMF.cpp:97
-msgid "Read past _end of buffer for string type"
-msgstr ""
-
-#: libbase/AMF.cpp:138
-msgid "writePlainString called with invalid type!"
-msgstr ""
-
-#: libbase/URLAccessManager.cpp:90
-#, c-format
-msgid "Load from host %s granted (whitelisted)"
-msgstr ""
-
-#: libbase/URLAccessManager.cpp:96
-#, c-format
-msgid "Load from host %s forbidden (not in non-empty whitelist)"
-msgstr ""
-
-#: libbase/URLAccessManager.cpp:110
-#, c-format
-msgid "Load from host %s forbidden (blacklisted)"
-msgstr ""
-
-#: libbase/URLAccessManager.cpp:115
-#, c-format
-msgid "Load from host %s granted (default)"
-msgstr ""
-
-#: libbase/URLAccessManager.cpp:147
-#, c-format
-msgid "Load of file %s forbidden (starting URL %s is not a local resource)"
-msgstr ""
-
-#: libbase/URLAccessManager.cpp:164
+#: libbase/rc.cpp:742
#, c-format
-msgid "Load of file %s granted (under local sandbox %s)"
+msgid "Couldn't open file %s for writing"
msgstr ""
-#: libbase/URLAccessManager.cpp:172
-#, c-format
-msgid "Load of file %s forbidden (not under local sandboxes)"
+#: libbase/rc.cpp:751
+msgid "# Generated by Gnash. Manual changes to this file may be overridden."
msgstr ""
-#: libbase/URLAccessManager.cpp:212
+#: libbase/sharedlib.cpp:69
#, c-format
-msgid "gethostname failed: %s"
+msgid "Couldn't initialize ltdl: %s"
msgstr ""
-#: libbase/URLAccessManager.cpp:234
+#: libbase/sharedlib.cpp:98
#, c-format
-msgid "Load from host %s forbidden (not in the local domain)"
+msgid "Trying to open shared library \"%s\""
msgstr ""
-#: libbase/URLAccessManager.cpp:240
+#: libbase/sharedlib.cpp:112
#, c-format
-msgid "Load from host %s forbidden (not on the local host)"
+msgid "Opened dynamic library \"%s\""
msgstr ""
-#: libbase/URLAccessManager.cpp:262
+#: libbase/sharedlib.cpp:131
#, c-format
-msgid "Attempt to connect to disallowed port %s"
+msgid "Couldn't find symbol: %s"
msgstr ""
-#: libbase/URLAccessManager.cpp:272
+#: libbase/sharedlib.cpp:134
#, c-format
-msgid "Checking security of URL '%s'"
-msgstr ""
-
-#: libbase/URLAccessManager.cpp:284
-msgid "Network connection without hostname requested"
-msgstr ""
-
-#: librender/opengl/Renderer_ogl.cpp:234
-msgid "OSMesaCreateContext failed!"
+msgid "Found symbol %s @ %p"
msgstr ""
-#: librender/opengl/Renderer_ogl.cpp:240
-msgid "OSMesaMakeCurrent failed!"
+#: librender/agg/Renderer_agg.cpp:799
+msgid "Can't render this type of frame"
msgstr ""
-#: librender/opengl/Renderer_ogl.cpp:247
-#, c-format
-msgid "OSMesa handle successfully created. with width %d and height %d."
+#: librender/agg/Renderer_agg.cpp:1730
+msgid ""
+"Unidirectionally scaled strokes in AGG renderer (we'll scale by the scalable "
+"one)"
msgstr ""
-#: librender/opengl/Renderer_ogl.cpp:344
+#: librender/agg/Renderer_agg.cpp:2117
#, c-format
-msgid "OpenGL: %s"
+msgid "Unknown pixelformat: %s\n"
msgstr ""
-#: librender/opengl/Renderer_ogl.cpp:517
-#, c-format
-msgid "GLU: %s"
+#: librender/opengles1/Renderer_gles1.cpp:95
+msgid "Couldn't initialize EGL Device!"
msgstr ""
-#: librender/opengl/Renderer_ogl.cpp:868
-msgid ""
-"An insane number of video frames have been requested to be drawn. Further "
-"video frames will be ignored."
+#: librender/opengles1/Renderer_gles1.cpp:124
+#: librender/openvg/OpenVGRenderer.cpp:319
+msgid "drawVideoFrame"
msgstr ""
-#: librender/opengl/Renderer_ogl.cpp:1142
-#: librender/openvg/OpenVGRenderer.cpp:569
#: librender/opengles1/Renderer_gles1.cpp:230
+#: librender/openvg/OpenVGRenderer.cpp:569
+#: librender/opengl/Renderer_ogl.cpp:1142
msgid "set_antialiased"
msgstr ""
-#: librender/opengl/Renderer_ogl.cpp:1436
-#: librender/openvg/OpenVGRenderer.cpp:864
-msgid "Unidirectionally scaled strokes in OGL renderer"
-msgstr ""
-
-#: librender/opengl/Renderer_ogl.cpp:1450
-msgid ""
-"Your OpenGL implementation does not support the line width requested. Lines "
-"will be drawn with reduced width."
-msgstr ""
-
-#: librender/opengl/Renderer_ogl.cpp:1927
-#, c-format
-msgid "two gradients in a FillStyle have the same position/ratio: %d"
-msgstr ""
-
#: librender/openvg/OpenVGBitmap.cpp:82 librender/openvg/OpenVGBitmap.cpp:285
#, c-format
msgid "Failed to create VG image! %s"
@@ -684,21 +680,21 @@ msgstr ""
msgid "VG Extensions are: "
msgstr ""
-#: librender/openvg/OpenVGRenderer.cpp:319
-#: librender/opengles1/Renderer_gles1.cpp:124
-msgid "drawVideoFrame"
-msgstr ""
-
#: librender/openvg/OpenVGRenderer.cpp:836
-#: librender/cairo/Renderer_cairo.cpp:864
+#: librender/cairo/Renderer_cairo.cpp:865
msgid "join style"
msgstr ""
#: librender/openvg/OpenVGRenderer.cpp:850
-#: librender/cairo/Renderer_cairo.cpp:883
+#: librender/cairo/Renderer_cairo.cpp:884
msgid "cap style"
msgstr ""
+#: librender/openvg/OpenVGRenderer.cpp:864
+#: librender/opengl/Renderer_ogl.cpp:1436
+msgid "Unidirectionally scaled strokes in OGL renderer"
+msgstr ""
+
#: librender/openvg/OpenVGRenderer.cpp:1299
msgid "unsupported VG_MATRIX_MODE!"
msgstr ""
@@ -875,19 +871,15 @@ msgstr ""
msgid "VG_PATH_NUM_COORDS is %d"
msgstr ""
-#: librender/opengles1/Renderer_gles1.cpp:95
-msgid "Couldn't initialize EGL Device!"
-msgstr ""
-
-#: librender/cairo/Renderer_cairo.cpp:498
+#: librender/cairo/Renderer_cairo.cpp:499
msgid "Can't render videos with alpha"
msgstr ""
-#: librender/cairo/Renderer_cairo.cpp:869
+#: librender/cairo/Renderer_cairo.cpp:870
msgid "differing start and end cap styles"
msgstr ""
-#: librender/cairo/Renderer_cairo.cpp:911
+#: librender/cairo/Renderer_cairo.cpp:912
msgid "Scaled strokes in Cairo renderer"
msgstr ""
@@ -895,330 +887,406 @@ msgstr ""
msgid "path not closed!"
msgstr ""
-#: librender/agg/Renderer_agg.cpp:794
-msgid "Can't render this type of frame"
-msgstr ""
-
-#: librender/agg/Renderer_agg.cpp:1764
-msgid ""
-"Unidirectionally scaled strokes in AGG renderer (we'll scale by the scalable "
-"one)"
+#: librender/testr.cpp:190
+msgid "Couldn't get Drawable window from X11"
msgstr ""
-#: librender/agg/Renderer_agg.cpp:2151
-#, c-format
-msgid "Unknown pixelformat: %s\n"
+#: librender/opengl/Renderer_ogl.cpp:234
+msgid "OSMesaCreateContext failed!"
msgstr ""
-#: librender/testr.cpp:190
-msgid "Couldn't get Drawable window from X11"
+#: librender/opengl/Renderer_ogl.cpp:240
+msgid "OSMesaMakeCurrent failed!"
msgstr ""
-#: librender/GnashTexture.cpp:70
+#: librender/opengl/Renderer_ogl.cpp:247
#, c-format
-msgid "glError: %s caught\n"
-msgstr ""
-
-#: libmedia/MediaParser.cpp:83
-msgid "No ID3 support implemented in this MediaParser"
+msgid "OSMesa handle successfully created. with width %d and height %d."
msgstr ""
-#: libmedia/ffmpeg/MediaParserFfmpeg.cpp:80
-msgid "MediaParserFfmpeg could not read probe data from input"
+#: librender/opengl/Renderer_ogl.cpp:344
+#, c-format
+msgid "OpenGL: %s"
msgstr ""
-#: libmedia/ffmpeg/MediaParserFfmpeg.cpp:113
-#: libmedia/ffmpeg/MediaParserFfmpeg.cpp:122
+#: librender/opengl/Renderer_ogl.cpp:517
#, c-format
-msgid "%s: seeking failed"
+msgid "GLU: %s"
msgstr ""
-#: libmedia/ffmpeg/MediaParserFfmpeg.cpp:211
+#: librender/opengl/Renderer_ogl.cpp:868
msgid ""
-"FIXME: FFmpeg packet decompression timestamp has no value, taking as zero"
+"An insane number of video frames have been requested to be drawn. Further "
+"video frames will be ignored."
msgstr ""
-#: libmedia/ffmpeg/MediaParserFfmpeg.cpp:272
-#, c-format
+#: librender/opengl/Renderer_ogl.cpp:1450
msgid ""
-"MediaParserFfmpeg::parseNextFrame: Problems parsing next frame "
-"(av_read_frame returned %d). We'll consider the stream fully parsed."
+"Your OpenGL implementation does not support the line width requested. Lines "
+"will be drawn with reduced width."
msgstr ""
-#: libmedia/ffmpeg/MediaParserFfmpeg.cpp:443
+#: librender/opengl/Renderer_ogl.cpp:1895
#, c-format
-msgid " Using stream %d for audio: codec id %d"
+msgid "two gradients in a FillStyle have the same position/ratio: %d"
msgstr ""
-#: libmedia/ffmpeg/MediaParserFfmpeg.cpp:456
+#: librender/GnashTexture.cpp:70
#, c-format
-msgid " Using stream %d for video: codec id %d"
+msgid "glError: %s caught\n"
msgstr ""
-#: libmedia/ffmpeg/MediaParserFfmpeg.cpp:478
-msgid "Duration of video stream unknown"
+#: libmedia/AudioDecoderSpeex.cpp:41
+msgid "AudioDecoderSpeex: state initialization failed."
msgstr ""
-#: libmedia/ffmpeg/MediaParserFfmpeg.cpp:507
-msgid "Duration of audio stream unknown to ffmpeg"
+#: libmedia/AudioDecoderSpeex.cpp:54
+msgid "AudioDecoderSpeex: initialization failed."
msgstr ""
-#: libmedia/ffmpeg/MediaParserFfmpeg.cpp:587
-msgid ""
-"MediaParserFfmpeg couldn't parse input format: tried to seek at negative "
-"offset %1%."
+#: libmedia/AudioDecoderSpeex.cpp:109
+msgid "Corrupt Speex stream!"
msgstr ""
-#: libmedia/ffmpeg/VideoConverterFfmpeg.cpp:122
-msgid "VideoConverterFfmpeg cannot convert to the requested format"
+#: libmedia/AudioDecoderSpeex.cpp:133
+msgid "Failed to resample Speex frame."
msgstr ""
-#: libmedia/ffmpeg/MediaHandlerFfmpeg.cpp:122
+#: libmedia/FLVParser.cpp:170
#, c-format
-msgid "MediaHandlerFfmpeg::createAudioDecoder: %s -- %s"
+msgid ""
+"Unexpected audio tag found at offset %d FLV stream advertising no audio in "
+"header. We'll warn only once for each FLV, expecting any further audio tag."
msgstr ""
-#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:53
-#, c-format
-msgid "AudioDecoderFfmpeg: initialized FFmpeg codec %d (%s)"
+#: libmedia/FLVParser.cpp:187
+msgid "could not read audio frame?"
msgstr ""
-#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:56
+#: libmedia/FLVParser.cpp:225
#, c-format
msgid ""
-"AudioDecoderFfmpeg: initialized FFmpeg codec %d (%s) for flash codec %d (%s)"
+"Unexpected video tag found at offset %d of FLV stream advertising no video "
+"in header. We'll warn only once per FLV, expecting any further video tag."
msgstr ""
-#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:71
+#: libmedia/FLVParser.cpp:245
#, c-format
-msgid "AudioDecoderFfmpeg: initialized FFmpeg codec %s (%d)"
+msgid "AVC packet type: %d"
msgstr ""
-#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:110
-#, c-format
-msgid "Unsupported audio codec %d"
+#: libmedia/FLVParser.cpp:264
+msgid "could not read video frame?"
msgstr ""
-#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:119
+#: libmedia/FLVParser.cpp:322
#, c-format
-msgid "libavcodec could not find a decoder for codec %d (%s)"
+msgid "FLVParser::parseNextTag: can't seek to %d"
msgstr ""
-#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:129
-msgid "AudioDecoderFfmpeg can't initialize MP3 parser"
-msgstr ""
+#: libmedia/FLVParser.cpp:336
+#, c-format
+msgid ""
+"FLVParser::parseNextTag: can't read tag info (needed 12 bytes, only got %d)"
+msgstr ""
+
+#: libmedia/FLVParser.cpp:423
+#, c-format
+msgid "First byte of FLV_META_TAG is %d, expected 0x02 (STRING AMF0 type)"
+msgstr ""
+
+#: libmedia/FLVParser.cpp:435
+#, c-format
+msgid ""
+"FLVParser::parseNextTag: can't read metaTag (%d) body (needed %d bytes, only "
+"got %d)"
+msgstr ""
+
+#: libmedia/FLVParser.cpp:446
+msgid "Corrupt FLV: Meta tag unterminated!"
+msgstr ""
+
+#: libmedia/FLVParser.cpp:454
+#, c-format
+msgid "FLVParser::parseNextTag: unknown FLV tag type %d"
+msgstr ""
+
+#: libmedia/FLVParser.cpp:463
+msgid ""
+"Corrupt FLV: previous tag size record (%1%) unexpected (actual size: %2%)"
+msgstr ""
+
+#: libmedia/FLVParser.cpp:481
+msgid "FLVParser::parseHeader: couldn't read 9 bytes of header"
+msgstr ""
+
+#: libmedia/FLVParser.cpp:533
+#, c-format
+msgid "FLVParser::readAudioFrame: could only read %d/%d bytes"
+msgstr ""
+
+#: libmedia/ffmpeg/VideoConverterFfmpeg.cpp:122
+msgid "VideoConverterFfmpeg cannot convert to the requested format"
+msgstr ""
+
+#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:48
+#, c-format
+msgid "AudioDecoderFfmpeg: initialized FFmpeg codec %d (%s)"
+msgstr ""
+
+#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:51
+#, c-format
+msgid ""
+"AudioDecoderFfmpeg: initialized FFmpeg codec %d (%s) for flash codec %d (%s)"
+msgstr ""
+
+#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:66
+#, c-format
+msgid "AudioDecoderFfmpeg: initialized FFmpeg codec %s (%d)"
+msgstr ""
+
+#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:107
+#, c-format
+msgid "Unsupported audio codec %d"
+msgstr ""
+
+#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:116
+#, c-format
+msgid "libavcodec could not find a decoder for codec %d (%s)"
+msgstr ""
+
+#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:126
+msgid "AudioDecoderFfmpeg can't initialize MP3 parser"
+msgstr ""
-#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:136
-#: libmedia/ffmpeg/VideoDecoderFfmpeg.cpp:185
+#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:137
+#: libmedia/ffmpeg/VideoDecoderFfmpeg.cpp:196
msgid "libavcodec couldn't allocate context"
msgstr ""
-#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:144
-#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:315
+#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:149
+#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:331
#, c-format
msgid ""
"AudioDecoderFfmpeg: avcodec_open failed to initialize FFmpeg codec %s (%d)"
msgstr ""
-#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:149
+#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:154
#, c-format
msgid "AudioDecoder: initialized FFMPEG codec %s (%d)"
msgstr ""
-#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:222
+#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:230
#, c-format
msgid "AudioDecoderFfmpeg: unsupported flash audio codec %d (%s)"
msgstr ""
-#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:231
+#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:239
#, c-format
msgid "AudioDecoderFfmpeg: unknown codec type %d (should never happen)"
msgstr ""
-#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:241
+#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:249
#, c-format
msgid ""
"AudioDecoderFfmpeg: libavcodec could not find a decoder for codec %d (%s)"
msgstr ""
-#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:247
+#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:255
#, c-format
msgid ""
"AudioDecoderFfmpeg: libavcodec could not find a decoder for ffmpeg codec id "
"%s"
msgstr ""
-#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:259
+#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:271
msgid "AudioDecoderFfmpeg: libavcodec couldn't allocate context"
msgstr ""
-#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:348
+#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:364
#, c-format
msgid ""
"av_parser_parse returned %d. Upgrading ffmpeg/libavcodec might fix this "
"issue."
msgstr ""
-#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:401
-#, c-format
-msgid ""
-"AudioDecoderFfmpeg: could not find a complete frame in the last %d bytes of "
-"input (malformed SWF or FLV?)"
+#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:483
+msgid "failed to allocate audio buffer."
msgstr ""
-#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:490
-msgid "failed to allocate audio buffer."
+#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:505
+msgid "failed to allocate frame."
msgstr ""
-#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:528
+#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:523
#, c-format
-msgid ""
-"avcodec_decode_audio returned %d. Upgrading ffmpeg/libavcodec might fix this "
-"issue."
+msgid "output buffer size is too small for the current frame (%d < %d)"
msgstr ""
-#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:537
+#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:549
#, c-format
-msgid ""
-"outputSize:%d after decoding %d bytes of input audio data. Upgrading ffmpeg/"
-"libavcodec might fix this issue."
+msgid "avcodec_decode_audio returned %d."
+msgstr ""
+
+#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:551
+#, c-format
+msgid "outputSize:%d after decoding %d bytes of input audio data."
msgstr ""
-#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:587
+#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:553
+msgid "Upgrading ffmpeg/libavcodec might fix this issue."
+msgstr ""
+
+#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:598
#, c-format
msgid ""
" --- Computation of resampled samples (%d) < then the actual returned "
"samples (%d)"
msgstr ""
-#: libmedia/ffmpeg/VideoDecoderFfmpeg.cpp:141
+#: libmedia/ffmpeg/VideoDecoderFfmpeg.cpp:145
#, c-format
msgid "Cannot find suitable decoder for flash codec %d"
msgstr ""
-#: libmedia/ffmpeg/VideoDecoderFfmpeg.cpp:180
+#: libmedia/ffmpeg/VideoDecoderFfmpeg.cpp:187
msgid "libavcodec can't decode this video format"
msgstr ""
-#: libmedia/ffmpeg/VideoDecoderFfmpeg.cpp:208
+#: libmedia/ffmpeg/VideoDecoderFfmpeg.cpp:227
#, c-format
msgid "libavcodec failed to initialize FFMPEG codec %s (%d)"
msgstr ""
-#: libmedia/ffmpeg/VideoDecoderFfmpeg.cpp:216
+#: libmedia/ffmpeg/VideoDecoderFfmpeg.cpp:235
#, c-format
msgid "VideoDecoder: initialized FFMPEG codec %s (%d)"
msgstr ""
-#: libmedia/ffmpeg/VideoDecoderFfmpeg.cpp:306
+#: libmedia/ffmpeg/VideoDecoderFfmpeg.cpp:325
msgid "Pixel format not handled"
msgstr ""
-#: libmedia/ffmpeg/VideoDecoderFfmpeg.cpp:354
+#: libmedia/ffmpeg/VideoDecoderFfmpeg.cpp:373
msgid "Out of memory while allocating avcodec frame"
msgstr ""
-#: libmedia/ffmpeg/VideoDecoderFfmpeg.cpp:373
+#: libmedia/ffmpeg/VideoDecoderFfmpeg.cpp:392
msgid "Decoding of a video frame failed"
msgstr ""
-#: libmedia/ffmpeg/VideoDecoderFfmpeg.cpp:434
+#: libmedia/ffmpeg/VideoDecoderFfmpeg.cpp:453
#, c-format
msgid "Unsupported video codec %d"
msgstr ""
-#: libmedia/haiku/MediaHandlerHaiku.cpp:115
+#: libmedia/ffmpeg/MediaHandlerFfmpeg.cpp:122
#, c-format
-msgid "MediaHandlerHaiku::createAudioDecoder: %s -- %s"
-msgstr ""
-
-#: libmedia/AudioDecoderSpeex.cpp:41
-msgid "AudioDecoderSpeex: state initialization failed."
+msgid "MediaHandlerFfmpeg::createAudioDecoder: %s -- %s"
msgstr ""
-#: libmedia/AudioDecoderSpeex.cpp:54
-msgid "AudioDecoderSpeex: initialization failed."
+#: libmedia/ffmpeg/MediaParserFfmpeg.cpp:80
+msgid "MediaParserFfmpeg could not read probe data from input"
msgstr ""
-#: libmedia/AudioDecoderSpeex.cpp:109
-msgid "Corrupt Speex stream!"
+#: libmedia/ffmpeg/MediaParserFfmpeg.cpp:113
+#: libmedia/ffmpeg/MediaParserFfmpeg.cpp:122
+#, c-format
+msgid "%s: seeking failed"
msgstr ""
-#: libmedia/AudioDecoderSpeex.cpp:133
-msgid "Failed to resample Speex frame."
+#: libmedia/ffmpeg/MediaParserFfmpeg.cpp:211
+msgid ""
+"FIXME: FFmpeg packet decompression timestamp has no value, taking as zero"
msgstr ""
-#: libmedia/FLVParser.cpp:170
+#: libmedia/ffmpeg/MediaParserFfmpeg.cpp:272
#, c-format
msgid ""
-"Unexpected audio tag found at offset %d FLV stream advertising no audio in "
-"header. We'll warn only once for each FLV, expecting any further audio tag."
+"MediaParserFfmpeg::parseNextFrame: Problems parsing next frame "
+"(av_read_frame returned %d). We'll consider the stream fully parsed."
msgstr ""
-#: libmedia/FLVParser.cpp:187
-msgid "could not read audio frame?"
+#: libmedia/ffmpeg/MediaParserFfmpeg.cpp:467
+#, c-format
+msgid " Using stream %d for audio: codec id %d"
msgstr ""
-#: libmedia/FLVParser.cpp:225
+#: libmedia/ffmpeg/MediaParserFfmpeg.cpp:480
#, c-format
+msgid " Using stream %d for video: codec id %d"
+msgstr ""
+
+#: libmedia/ffmpeg/MediaParserFfmpeg.cpp:502
+msgid "Duration of video stream unknown"
+msgstr ""
+
+#: libmedia/ffmpeg/MediaParserFfmpeg.cpp:531
+msgid "Duration of audio stream unknown to ffmpeg"
+msgstr ""
+
+#: libmedia/ffmpeg/MediaParserFfmpeg.cpp:611
msgid ""
-"Unexpected video tag found at offset %d of FLV stream advertising no video "
-"in header. We'll warn only once per FLV, expecting any further video tag."
+"MediaParserFfmpeg couldn't parse input format: tried to seek at negative "
+"offset %1%."
msgstr ""
-#: libmedia/FLVParser.cpp:245
-#, c-format
-msgid "AVC packet type: %d"
+#: libmedia/MediaHandler.cpp:49
+msgid "MediaHandler::isFLV: Could not read 3 bytes from input stream"
msgstr ""
-#: libmedia/FLVParser.cpp:264
-msgid "could not read video frame?"
+#: libmedia/MediaHandler.cpp:65
+msgid ""
+"MediaHandler::createMediaParser: only FLV input is supported by this "
+"MediaHandler"
msgstr ""
-#: libmedia/FLVParser.cpp:322
+#: libmedia/MediaHandler.cpp:71
#, c-format
-msgid "FLVParser::parseNextTag: can't seek to %d"
+msgid "Exception while reading from stream: %s"
msgstr ""
-#: libmedia/FLVParser.cpp:336
+#: libmedia/MediaHandler.cpp:108
#, c-format
msgid ""
-"FLVParser::parseNextTag: can't read tag info (needed 12 bytes, only got %d)"
+"MediaHandler::createFlashAudioDecoder: no available flash decoders for codec "
+"%d (%s)"
msgstr ""
-#: libmedia/FLVParser.cpp:423
-#, c-format
-msgid "First byte of FLV_META_TAG is %d, expected 0x02 (STRING AMF0 type)"
+#: libmedia/AudioDecoderSimple.cpp:163
+msgid "corrupted ADPCM header"
msgstr ""
-#: libmedia/FLVParser.cpp:435
+#: libmedia/AudioDecoderSimple.cpp:291 libmedia/AudioDecoderSimple.cpp:304
#, c-format
-msgid ""
-"FLVParser::parseNextTag: can't read metaTag (%d) body (needed %d bytes, only "
-"got %d)"
+msgid "AudioDecoderSimple: initialized flash codec %s (%d)"
msgstr ""
-#: libmedia/FLVParser.cpp:446
-msgid "Corrupt FLV: Meta tag unterminated!"
+#: libmedia/AudioDecoderSimple.cpp:330 libmedia/AudioDecoderSimple.cpp:361
+#, c-format
+msgid "AudioDecoderSimple: unsupported flash codec %d (%s)"
msgstr ""
-#: libmedia/FLVParser.cpp:454
+#: libmedia/AudioDecoderSimple.cpp:341
#, c-format
-msgid "FLVParser::parseNextTag: unknown FLV tag type %d"
+msgid "AudioDecoderSimple: unable to intepret custom audio codec id %s"
msgstr ""
-#: libmedia/FLVParser.cpp:463
-msgid ""
-"Corrupt FLV: previous tag size record (%1%) unexpected (actual size: %2%)"
+#: libmedia/AudioDecoderSimple.cpp:428
+msgid "Host endianness not detected in AudioDecoderSimple"
msgstr ""
-#: libmedia/FLVParser.cpp:481
-msgid "FLVParser::parseHeader: couldn't read 9 bytes of header"
+#: libmedia/AudioDecoderSimple.cpp:478
+msgid "Error in sound sample conversion"
msgstr ""
-#: libmedia/FLVParser.cpp:533
+#: libmedia/gst/MediaHandlerGst.cpp:90
+msgid "Wrong arguments given to GST VideoDecoder"
+msgstr ""
+
+#: libmedia/gst/MediaHandlerGst.cpp:137
#, c-format
-msgid "FLVParser::readAudioFrame: could only read %d/%d bytes"
+msgid "MediaHandlerGst::createAudioDecoder: %s -- %s"
msgstr ""
#: libmedia/gst/VideoConverterGst.cpp:39
@@ -1245,6 +1313,37 @@ msgstr ""
msgid "VideoConverterGst: buffer pull failed."
msgstr ""
+#: libmedia/gst/VideoDecoderGst.cpp:97
+msgid "Video codec is zero. Streaming video expected later."
+msgstr ""
+
+#: libmedia/gst/VideoDecoderGst.cpp:100
+#, c-format
+msgid "No support for video codec %s."
+msgstr ""
+
+#: libmedia/gst/VideoDecoderGst.cpp:122 libmedia/gst/VideoDecoderGst.cpp:148
+msgid "VideoDecoderGst: internal error (caps creation failed)"
+msgstr ""
+
+#: libmedia/gst/VideoDecoderGst.cpp:130
+#, c-format
+msgid "Couldn't find a plugin for video type %s!"
+msgstr ""
+
+#: libmedia/gst/VideoDecoderGst.cpp:134
+msgid " Please make sure you have gstreamer-ffmpeg installed."
+msgstr ""
+
+#: libmedia/gst/VideoDecoderGst.cpp:158
+#, c-format
+msgid "VideoDecoderGst: initialisation failed for video type %s!"
+msgstr ""
+
+#: libmedia/gst/VideoDecoderGst.cpp:189
+msgid "VideoDecoderGst: buffer push failed."
+msgstr ""
+
#: libmedia/gst/GstUtil.cpp:76
msgid "Unable to retrieve a valid audio sink from ~/.gnashrc"
msgstr ""
@@ -1289,234 +1388,57 @@ msgstr ""
msgid "Missing plugin, but automatic plugin installation not available."
msgstr ""
-#: libmedia/gst/VideoDecoderGst.cpp:97
-msgid "Video codec is zero. Streaming video expected later."
+#: libmedia/gst/VideoInputGst.cpp:319
+msgid "too high an index value, will cause segfault"
msgstr ""
-#: libmedia/gst/VideoDecoderGst.cpp:100
+#: libmedia/gst/VideoInputGst.cpp:369
#, c-format
-msgid "No support for video codec %s."
+msgid "%s: Could not create video test source."
msgstr ""
-#: libmedia/gst/VideoDecoderGst.cpp:122 libmedia/gst/VideoDecoderGst.cpp:148
-msgid "VideoDecoderGst: internal error (caps creation failed)"
+#: libmedia/gst/VideoInputGst.cpp:387 libmedia/gst/AudioInputGst.cpp:119
+#, c-format
+msgid "%s: Could not create pulsesrc element"
msgstr ""
-#: libmedia/gst/VideoDecoderGst.cpp:130
+#: libmedia/gst/VideoInputGst.cpp:392 libmedia/gst/AudioInputGst.cpp:124
#, c-format
-msgid "Couldn't find a plugin for video type %s!"
+msgid "%s: Could not get property probe from pulsesrc element"
msgstr ""
-#: libmedia/gst/VideoDecoderGst.cpp:134
-msgid " Please make sure you have gstreamer-ffmpeg installed."
+#: libmedia/gst/VideoInputGst.cpp:628
+msgid "You have an invalid camera selected. Please check your gnashrc file"
msgstr ""
-#: libmedia/gst/VideoDecoderGst.cpp:158
+#: libmedia/gst/VideoInputGst.cpp:657
#, c-format
-msgid "VideoDecoderGst: initialisation failed for video type %s!"
-msgstr ""
-
-#: libmedia/gst/VideoDecoderGst.cpp:189
-msgid "VideoDecoderGst: buffer push failed."
+msgid "%s: Passed an invalid argument (not a valid dev_select value)"
msgstr ""
-#: libmedia/gst/MediaParserGst.cpp:55
-msgid "MediaParserGst couldn't create a bin"
+#: libmedia/gst/VideoInputGst.cpp:685 libmedia/gst/AudioInputGst.cpp:222
+#, c-format
+msgid "%s: Pipeline bus isn't an object for some reason"
msgstr ""
-#: libmedia/gst/MediaParserGst.cpp:60
-msgid "MediaParserGst couldn't create a typefind element."
+#: libmedia/gst/VideoInputGst.cpp:705 libmedia/gst/AudioInputGst.cpp:241
+#, c-format
+msgid "%s: Template pad isn't an object for some reason"
msgstr ""
-#: libmedia/gst/MediaParserGst.cpp:72 libmedia/gst/MediaParserGst.cpp:94
-#: libmedia/gst/MediaParserGst.cpp:317 libmedia/gst/MediaParserGst.cpp:374
-#: libmedia/gst/MediaParserGst.cpp:528
-msgid "MediaParserGst could not change element state"
+#: libmedia/gst/VideoInputGst.cpp:718 libmedia/gst/AudioInputGst.cpp:255
+#, c-format
+msgid "%s: pipeline isn't an object for some reason"
msgstr ""
-#: libmedia/gst/MediaParserGst.cpp:85
+#: libmedia/gst/VideoInputGst.cpp:804
#, c-format
-msgid "Needed %d dead iterations to detect audio type."
+msgid "%s: type %s, cannot be handled for resolution width"
msgstr ""
-#: libmedia/gst/MediaParserGst.cpp:89
-msgid "MediaParserGst failed to detect any stream types."
-msgstr ""
-
-#: libmedia/gst/MediaParserGst.cpp:187
-msgid ""
-"MediaParserGst failed to read the stream, but it did not reach EOF or enter "
-"a bad state."
-msgstr ""
-
-#: libmedia/gst/MediaParserGst.cpp:201
-msgid "MediaParserGst failed to push more data into the demuxer! Seeking back."
-msgstr ""
-
-#: libmedia/gst/MediaParserGst.cpp:280
-#, c-format
-msgid "MediaParserGst/typefound: Detected media type %s"
-msgstr ""
-
-#: libmedia/gst/MediaParserGst.cpp:292 libmedia/gst/MediaParserGst.cpp:299
-msgid "MediaParserGst Failed to create fakesink."
-msgstr ""
-
-#: libmedia/gst/MediaParserGst.cpp:305
-msgid "MediaParserGst: couldn't get the fakesink src element."
-msgstr ""
-
-#: libmedia/gst/MediaParserGst.cpp:313
-msgid "MediaParserGst: couln't link fakesink"
-msgstr ""
-
-#: libmedia/gst/MediaParserGst.cpp:337
-msgid "MediaParserGst: couldn't get the typefind src element."
-msgstr ""
-
-#: libmedia/gst/MediaParserGst.cpp:352
-msgid "MediaParserGst: couldn't create the demuxer"
-msgstr ""
-
-#: libmedia/gst/MediaParserGst.cpp:358 libmedia/gst/MediaParserGst.cpp:363
-msgid "MediaParserGst: failed adding demuxer to bin."
-msgstr ""
-
-#: libmedia/gst/MediaParserGst.cpp:390
-msgid "MediaParserGst: couldn't get structure name."
-msgstr ""
-
-#: libmedia/gst/MediaParserGst.cpp:404
-#, c-format
-msgid "MediaParserGst: ignoring stream of type %s."
-msgstr ""
-
-#: libmedia/gst/MediaParserGst.cpp:428
-#, c-format
-msgid "MediaParserGst: Failed to find a parser (media: %s)."
-msgstr ""
-
-#: libmedia/gst/MediaParserGst.cpp:437
-msgid ""
-"MediaParserGst: Failed to find a parser. We'll continue, but either audio or "
-"video will not work!"
-msgstr ""
-
-#: libmedia/gst/MediaParserGst.cpp:446
-msgid "MediaParserGst: couldn't add parser."
-msgstr ""
-
-#: libmedia/gst/MediaParserGst.cpp:459
-msgid "MediaParserGst: couldn't link parser."
-msgstr ""
-
-#: libmedia/gst/MediaParserGst.cpp:471 libmedia/gst/MediaParserGst.cpp:504
-msgid "MediaParserGst: couldn't link \"fake\" sink."
-msgstr ""
-
-#: libmedia/gst/MediaParserGst.cpp:490
-#, c-format
-msgid "MediaParserGst: Linked audio source (type: %s)"
-msgstr ""
-
-#: libmedia/gst/MediaParserGst.cpp:520
-#, c-format
-msgid "MediaParserGst: Linked video source (type: %s)"
-msgstr ""
-
-#: libmedia/gst/AudioDecoderGst.cpp:100
-msgid "Creating AAC decoder without extra data. This will probably fail!"
-msgstr ""
-
-#: libmedia/gst/AudioDecoderGst.cpp:110
-#, c-format
-msgid "AudioDecoderGst: cannot handle codec %d (%s)"
-msgstr ""
-
-#: libmedia/gst/AudioDecoderGst.cpp:120
-#, c-format
-msgid "AudioDecoderGst: cannot handle codec %d (no ExtraInfoGst attached)"
-msgstr ""
-
-#: libmedia/gst/AudioDecoderGst.cpp:149
-msgid ""
-"The best available resampler is 'audioresample'. Please install gstreamer-"
-"ffmpeg 0.10.4 or newer, or you may experience long delays in audio playback!"
-msgstr ""
-
-#: libmedia/gst/AudioDecoderGst.cpp:168 libmedia/gst/AudioDecoderGst.cpp:188
-msgid "AudioDecoderGst: internal error (caps creation failed)"
-msgstr ""
-
-#: libmedia/gst/AudioDecoderGst.cpp:175
-#, c-format
-msgid "Couldn't find a plugin for audio type %s!"
-msgstr ""
-
-#: libmedia/gst/AudioDecoderGst.cpp:199
-#, c-format
-msgid "AudioDecoderGst: initialisation failed for audio type %s!"
-msgstr ""
-
-#: libmedia/gst/AudioDecoderGst.cpp:227
-msgid "Pushed data, but there's nothing to pull (yet)"
-msgstr ""
-
-#: libmedia/gst/AudioDecoderGst.cpp:263 libmedia/gst/AudioDecoderGst.cpp:291
-msgid "AudioDecoderGst: buffer push failed."
-msgstr ""
-
-#: libmedia/gst/VideoInputGst.cpp:317
-msgid "too high an index value, will cause segfault"
-msgstr ""
-
-#: libmedia/gst/VideoInputGst.cpp:367
-#, c-format
-msgid "%s: Could not create video test source."
-msgstr ""
-
-#: libmedia/gst/VideoInputGst.cpp:385 libmedia/gst/AudioInputGst.cpp:117
-#, c-format
-msgid "%s: Could not create pulsesrc element"
-msgstr ""
-
-#: libmedia/gst/VideoInputGst.cpp:390 libmedia/gst/AudioInputGst.cpp:122
-#, c-format
-msgid "%s: Could not get property probe from pulsesrc element"
-msgstr ""
-
-#: libmedia/gst/VideoInputGst.cpp:626
-msgid "You have an invalid camera selected. Please check your gnashrc file"
-msgstr ""
-
-#: libmedia/gst/VideoInputGst.cpp:657
-#, c-format
-msgid "%s: Passed an invalid argument (not a valid dev_select value)"
-msgstr ""
-
-#: libmedia/gst/VideoInputGst.cpp:685 libmedia/gst/AudioInputGst.cpp:220
-#, c-format
-msgid "%s: Pipeline bus isn't an object for some reason"
-msgstr ""
-
-#: libmedia/gst/VideoInputGst.cpp:705 libmedia/gst/AudioInputGst.cpp:239
-#, c-format
-msgid "%s: Template pad isn't an object for some reason"
-msgstr ""
-
-#: libmedia/gst/VideoInputGst.cpp:718 libmedia/gst/AudioInputGst.cpp:253
-#, c-format
-msgid "%s: pipeline isn't an object for some reason"
-msgstr ""
-
-#: libmedia/gst/VideoInputGst.cpp:804
-#, c-format
-msgid "%s: type %s, cannot be handled for resolution width"
-msgstr ""
-
-#: libmedia/gst/VideoInputGst.cpp:825 libmedia/gst/AudioInputGst.cpp:279
-#, c-format
-msgid "%s: was passed a NULL pointer"
+#: libmedia/gst/VideoInputGst.cpp:825 libmedia/gst/AudioInputGst.cpp:281
+#, c-format
+msgid "%s: was passed a NULL pointer"
msgstr ""
#: libmedia/gst/VideoInputGst.cpp:931 libmedia/gst/VideoInputGst.cpp:1104
@@ -1525,29 +1447,27 @@ msgid "%s: Creation of the webcam_source_bin failed"
msgstr ""
#: libmedia/gst/VideoInputGst.cpp:933 libmedia/gst/VideoInputGst.cpp:1106
-#: libmedia/gst/AudioInputGst.cpp:326 libmedia/gst/AudioInputGst.cpp:382
+#: libmedia/gst/AudioInputGst.cpp:328 libmedia/gst/AudioInputGst.cpp:384
#, c-format
msgid "the error was %s"
msgstr ""
#: libmedia/gst/VideoInputGst.cpp:961
#, c-format
-msgid "%s: webam isn't set!"
+msgid "%s: webcam isn't set!"
msgstr ""
#: libmedia/gst/VideoInputGst.cpp:1024
#, c-format
-msgid ""
-"%s: the resolution you chose isn't supported, picking a "
-"supported value"
+msgid "%s: the resolution you chose isn't supported, picking a supported value"
msgstr ""
-#: libmedia/gst/VideoInputGst.cpp:1128 libmedia/gst/AudioInputGst.cpp:337
+#: libmedia/gst/VideoInputGst.cpp:1128 libmedia/gst/AudioInputGst.cpp:339
#, c-format
msgid "%s: couldn't drop the sourcebin back into the main bin"
msgstr ""
-#: libmedia/gst/VideoInputGst.cpp:1137 libmedia/gst/AudioInputGst.cpp:347
+#: libmedia/gst/VideoInputGst.cpp:1137 libmedia/gst/AudioInputGst.cpp:349
#, c-format
msgid "%s: couldn't link up sourcebin and tee"
msgstr ""
@@ -1557,12 +1477,12 @@ msgstr ""
msgid "%s: problem creating source bin"
msgstr ""
-#: libmedia/gst/VideoInputGst.cpp:1176 libmedia/gst/AudioInputGst.cpp:410
+#: libmedia/gst/VideoInputGst.cpp:1176 libmedia/gst/AudioInputGst.cpp:412
#, c-format
msgid "%s: problem creating tee element"
msgstr ""
-#: libmedia/gst/VideoInputGst.cpp:1180 libmedia/gst/AudioInputGst.cpp:414
+#: libmedia/gst/VideoInputGst.cpp:1180 libmedia/gst/AudioInputGst.cpp:416
#, c-format
msgid "%s: problem creating save_queue element"
msgstr ""
@@ -1597,7 +1517,7 @@ msgstr ""
msgid "%s: couldn't get video_display_queue_pad"
msgstr ""
-#: libmedia/gst/VideoInputGst.cpp:1240 libmedia/gst/AudioInputGst.cpp:464
+#: libmedia/gst/VideoInputGst.cpp:1240 libmedia/gst/AudioInputGst.cpp:466
#, c-format
msgid "%s: Unable to create main pipeline"
msgstr ""
@@ -1636,13 +1556,13 @@ msgstr ""
msgid "%s: something went wrong in the make_video_display_link function"
msgstr ""
-#: libmedia/gst/VideoInputGst.cpp:1416 libmedia/gst/AudioInputGst.cpp:540
-#: libmedia/gst/AudioInputGst.cpp:680
+#: libmedia/gst/VideoInputGst.cpp:1416 libmedia/gst/AudioInputGst.cpp:542
+#: libmedia/gst/AudioInputGst.cpp:682
#, c-format
msgid "%s: unlink failed"
msgstr ""
-#: libmedia/gst/VideoInputGst.cpp:1423 libmedia/gst/AudioInputGst.cpp:687
+#: libmedia/gst/VideoInputGst.cpp:1423 libmedia/gst/AudioInputGst.cpp:689
#, c-format
msgid "%s: couldn't remove saveBin from pipeline"
msgstr ""
@@ -1687,1083 +1607,1253 @@ msgstr ""
msgid "%s: there was some problem in linking!"
msgstr ""
-#: libmedia/gst/MediaHandlerGst.cpp:90
-msgid "Wrong arguments given to GST VideoDecoder"
+#: libmedia/gst/MediaParserGst.cpp:53
+msgid "MediaParserGst couldn't create a bin"
msgstr ""
-#: libmedia/gst/MediaHandlerGst.cpp:137
+#: libmedia/gst/MediaParserGst.cpp:58
+msgid "MediaParserGst couldn't create a typefind element."
+msgstr ""
+
+#: libmedia/gst/MediaParserGst.cpp:70 libmedia/gst/MediaParserGst.cpp:74
+#: libmedia/gst/MediaParserGst.cpp:282 libmedia/gst/MediaParserGst.cpp:339
+#: libmedia/gst/MediaParserGst.cpp:493
+msgid "MediaParserGst could not change element state"
+msgstr ""
+
+#: libmedia/gst/MediaParserGst.cpp:167
+msgid ""
+"MediaParserGst failed to read the stream, but it did not reach EOF or enter "
+"a bad state."
+msgstr ""
+
+#: libmedia/gst/MediaParserGst.cpp:184
+msgid "MediaParserGst failed to push more data into the demuxer."
+msgstr ""
+
+#: libmedia/gst/MediaParserGst.cpp:245
#, c-format
-msgid "MediaHandlerGst::createAudioDecoder: %s -- %s"
+msgid "MediaParserGst/typefound: Detected media type %s"
+msgstr ""
+
+#: libmedia/gst/MediaParserGst.cpp:257 libmedia/gst/MediaParserGst.cpp:264
+msgid "MediaParserGst Failed to create fakesink."
+msgstr ""
+
+#: libmedia/gst/MediaParserGst.cpp:270
+msgid "MediaParserGst: couldn't get the fakesink src element."
+msgstr ""
+
+#: libmedia/gst/MediaParserGst.cpp:278
+msgid "MediaParserGst: couln't link fakesink"
+msgstr ""
+
+#: libmedia/gst/MediaParserGst.cpp:302
+msgid "MediaParserGst: couldn't get the typefind src element."
+msgstr ""
+
+#: libmedia/gst/MediaParserGst.cpp:317
+msgid "MediaParserGst: couldn't create the demuxer"
+msgstr ""
+
+#: libmedia/gst/MediaParserGst.cpp:323 libmedia/gst/MediaParserGst.cpp:328
+msgid "MediaParserGst: failed adding demuxer to bin."
+msgstr ""
+
+#: libmedia/gst/MediaParserGst.cpp:355
+msgid "MediaParserGst: couldn't get structure name."
+msgstr ""
+
+#: libmedia/gst/MediaParserGst.cpp:369
+#, c-format
+msgid "MediaParserGst: ignoring stream of type %s."
+msgstr ""
+
+#: libmedia/gst/MediaParserGst.cpp:393
+#, c-format
+msgid "MediaParserGst: Failed to find a parser (media: %s)."
+msgstr ""
+
+#: libmedia/gst/MediaParserGst.cpp:402
+msgid ""
+"MediaParserGst: Failed to find a parser. We'll continue, but either audio or "
+"video will not work!"
+msgstr ""
+
+#: libmedia/gst/MediaParserGst.cpp:411
+msgid "MediaParserGst: couldn't add parser."
+msgstr ""
+
+#: libmedia/gst/MediaParserGst.cpp:424
+msgid "MediaParserGst: couldn't link parser."
+msgstr ""
+
+#: libmedia/gst/MediaParserGst.cpp:436 libmedia/gst/MediaParserGst.cpp:469
+msgid "MediaParserGst: couldn't link \"fake\" sink."
+msgstr ""
+
+#: libmedia/gst/MediaParserGst.cpp:455
+#, c-format
+msgid "MediaParserGst: Linked audio source (type: %s)"
msgstr ""
-#: libmedia/gst/AudioInputGst.cpp:100
+#: libmedia/gst/MediaParserGst.cpp:485
+#, c-format
+msgid "MediaParserGst: Linked video source (type: %s)"
+msgstr ""
+
+#: libmedia/gst/AudioInputGst.cpp:102
#, c-format
msgid "%s: Could not create audio test source"
msgstr ""
-#: libmedia/gst/AudioInputGst.cpp:190
+#: libmedia/gst/AudioInputGst.cpp:192
#, c-format
msgid "%s: passed an invalid devselect argument"
msgstr ""
-#: libmedia/gst/AudioInputGst.cpp:244
+#: libmedia/gst/AudioInputGst.cpp:246
msgid "The input device you selected isn't supported (yet)"
msgstr ""
-#: libmedia/gst/AudioInputGst.cpp:270
+#: libmedia/gst/AudioInputGst.cpp:272
#, c-format
msgid "%s: Passed a bad devselect value"
msgstr ""
-#: libmedia/gst/AudioInputGst.cpp:324 libmedia/gst/AudioInputGst.cpp:380
+#: libmedia/gst/AudioInputGst.cpp:326 libmedia/gst/AudioInputGst.cpp:382
#, c-format
msgid "%s: Creation of the audioSourceBin failed"
msgstr ""
-#: libmedia/gst/AudioInputGst.cpp:406
+#: libmedia/gst/AudioInputGst.cpp:408
#, c-format
msgid "%s: audioCreateSourceBin failed!"
msgstr ""
-#: libmedia/gst/AudioInputGst.cpp:419
+#: libmedia/gst/AudioInputGst.cpp:421
#, c-format
msgid "%s: problem creating audioPlaybackQueue element"
msgstr ""
-#: libmedia/gst/AudioInputGst.cpp:426
+#: libmedia/gst/AudioInputGst.cpp:428
#, c-format
msgid "%s: couldn't link audioSourceBin and tee"
msgstr ""
-#: libmedia/gst/AudioInputGst.cpp:431
+#: libmedia/gst/AudioInputGst.cpp:433
#, c-format
msgid "%s: couldn't link tee and saveQueue"
msgstr ""
-#: libmedia/gst/AudioInputGst.cpp:436
+#: libmedia/gst/AudioInputGst.cpp:438
#, c-format
msgid "%s: couldn't link tee and audioPlaybackQueue"
msgstr ""
-#: libmedia/gst/AudioInputGst.cpp:445
+#: libmedia/gst/AudioInputGst.cpp:447
#, c-format
msgid "%s: couldn't get saveQueueSrcPad"
msgstr ""
-#: libmedia/gst/AudioInputGst.cpp:455
+#: libmedia/gst/AudioInputGst.cpp:457
#, c-format
msgid "%s: couldn't get audioPlaybackQueue"
msgstr ""
-#: libmedia/gst/AudioInputGst.cpp:481
+#: libmedia/gst/AudioInputGst.cpp:483
#, c-format
msgid "%s: There was a problem making the audiosink!"
msgstr ""
-#: libmedia/gst/AudioInputGst.cpp:517
+#: libmedia/gst/AudioInputGst.cpp:519
msgid "something went wrong in the makeSourcePlaybackLink function"
msgstr ""
-#: libmedia/gst/AudioInputGst.cpp:548
+#: libmedia/gst/AudioInputGst.cpp:550
#, c-format
msgid "%s: couldn't remove audioPlaybackBin from pipeline"
msgstr ""
-#: libmedia/gst/AudioInputGst.cpp:555
+#: libmedia/gst/AudioInputGst.cpp:557
#, c-format
msgid "%s: changing state of audioPlaybackBin failed"
msgstr ""
-#: libmedia/gst/AudioInputGst.cpp:579
+#: libmedia/gst/AudioInputGst.cpp:581
#, c-format
msgid "Error: %s"
msgstr ""
-#: libmedia/gst/AudioInputGst.cpp:599
+#: libmedia/gst/AudioInputGst.cpp:601
#, c-format
msgid "%s: Couldn't make audioconvert element"
msgstr ""
-#: libmedia/gst/AudioInputGst.cpp:603
+#: libmedia/gst/AudioInputGst.cpp:605
#, c-format
msgid "%s: Couldn't make vorbisenc element"
msgstr ""
-#: libmedia/gst/AudioInputGst.cpp:607
+#: libmedia/gst/AudioInputGst.cpp:609
#, c-format
msgid "%s: Couldn't make oggmux element"
msgstr ""
-#: libmedia/gst/AudioInputGst.cpp:611
+#: libmedia/gst/AudioInputGst.cpp:613
#, c-format
msgid "%s: Couldn't make filesink element"
msgstr ""
-#: libmedia/gst/AudioInputGst.cpp:630
+#: libmedia/gst/AudioInputGst.cpp:632
#, c-format
msgid "%s: Something went wrong in linking"
msgstr ""
-#: libmedia/gst/AudioInputGst.cpp:658
+#: libmedia/gst/AudioInputGst.cpp:660
msgid "something went wrong in the makeAudioSourceSaveLink function"
msgstr ""
-#: libmedia/gst/AudioInputGst.cpp:694
+#: libmedia/gst/AudioInputGst.cpp:696
#, c-format
msgid "%s: audioSaveBin state change failed"
msgstr ""
-#: libmedia/gst/AudioInputGst.cpp:755
+#: libmedia/gst/AudioInputGst.cpp:757
msgid "You have an invalid microphone selected. Check your gnashrc file"
msgstr ""
-#: libmedia/AudioDecoderSimple.cpp:163
-msgid "corrupted ADPCM header"
+#: libmedia/gst/AudioDecoderGst.cpp:100
+msgid "Creating AAC decoder without extra data. This will probably fail!"
msgstr ""
-#: libmedia/AudioDecoderSimple.cpp:291 libmedia/AudioDecoderSimple.cpp:304
+#: libmedia/gst/AudioDecoderGst.cpp:110
#, c-format
-msgid "AudioDecoderSimple: initialized flash codec %s (%d)"
+msgid "AudioDecoderGst: cannot handle codec %d (%s)"
msgstr ""
-#: libmedia/AudioDecoderSimple.cpp:330 libmedia/AudioDecoderSimple.cpp:361
+#: libmedia/gst/AudioDecoderGst.cpp:120
#, c-format
-msgid "AudioDecoderSimple: unsupported flash codec %d (%s)"
+msgid "AudioDecoderGst: cannot handle codec %d (no ExtraInfoGst attached)"
msgstr ""
-#: libmedia/AudioDecoderSimple.cpp:341
-#, c-format
-msgid "AudioDecoderSimple: unable to intepret custom audio codec id %s"
+#: libmedia/gst/AudioDecoderGst.cpp:149
+msgid ""
+"The best available resampler is 'audioresample'. Please install gstreamer-"
+"ffmpeg 0.10.4 or newer, or you may experience long delays in audio playback!"
msgstr ""
-#: libmedia/AudioDecoderSimple.cpp:428
-msgid "Host endianness not detected in AudioDecoderSimple"
+#: libmedia/gst/AudioDecoderGst.cpp:168 libmedia/gst/AudioDecoderGst.cpp:188
+msgid "AudioDecoderGst: internal error (caps creation failed)"
msgstr ""
-#: libmedia/AudioDecoderSimple.cpp:478
-msgid "Error in sound sample conversion"
+#: libmedia/gst/AudioDecoderGst.cpp:175
+#, c-format
+msgid "Couldn't find a plugin for audio type %s!"
msgstr ""
-#: libmedia/MediaHandler.cpp:49
-msgid "MediaHandler::isFLV: Could not read 3 bytes from input stream"
+#: libmedia/gst/AudioDecoderGst.cpp:199
+#, c-format
+msgid "AudioDecoderGst: initialisation failed for audio type %s!"
msgstr ""
-#: libmedia/MediaHandler.cpp:65
-msgid ""
-"MediaHandler::createMediaParser: only FLV input is supported by this "
-"MediaHandler"
+#: libmedia/gst/AudioDecoderGst.cpp:227
+msgid "Pushed data, but there's nothing to pull (yet)"
msgstr ""
-#: libmedia/MediaHandler.cpp:71
-#, c-format
-msgid "Exception while reading from stream: %s"
+#: libmedia/gst/AudioDecoderGst.cpp:263 libmedia/gst/AudioDecoderGst.cpp:291
+msgid "AudioDecoderGst: buffer push failed."
msgstr ""
-#: libmedia/MediaHandler.cpp:108
+#: libmedia/haiku/MediaHandlerHaiku.cpp:115
#, c-format
-msgid ""
-"MediaHandler::createFlashAudioDecoder: no available flash decoders for codec "
-"%d (%s)"
+msgid "MediaHandlerHaiku::createAudioDecoder: %s -- %s"
msgstr ""
-#: libcore/ExternalInterface.cpp:133
-#, c-format
-msgid "Can't convert unknown type %d"
+#: libmedia/MediaParser.cpp:83
+msgid "No ID3 support implemented in this MediaParser"
msgstr ""
-#: libcore/as_value.cpp:768
-#, c-format
-msgid "serialization of as_value of type %d"
+#: libcore/abc/AbcBlock.cpp:65 libcore/abc/AbcBlock.cpp:133
+msgid "ABC: Finalizing trait yielded bad type for slot."
msgstr ""
-#: libcore/ClassHierarchy.cpp:85
-#, c-format
-msgid "Native class %s is not an object after initialization (%s)"
+#: libcore/abc/AbcBlock.cpp:188
+msgid "ABC: Bad name for trait."
msgstr ""
-#: libcore/ClassHierarchy.cpp:92
-#, c-format
-msgid "Native class %s is not found after initialization"
+#: libcore/abc/AbcBlock.cpp:193
+msgid "ABC: Trait name must be fully qualified."
msgstr ""
-#: libcore/MovieLoader.cpp:259
-#, c-format
-msgid "Can't create Movie instance for definition loaded from %s"
+#: libcore/abc/AbcBlock.cpp:240 libcore/abc/AbcBlock.cpp:266
+msgid "Bad method id in trait."
msgstr ""
-#: libcore/FreetypeGlyphsProvider.cpp:254
-#, c-format
-msgid "Can't init FreeType! Error = %d"
+#: libcore/abc/AbcBlock.cpp:256
+msgid "Bad Class id in trait."
msgstr ""
-#: libcore/FreetypeGlyphsProvider.cpp:266
-#, c-format
-msgid "Can't close FreeType! Error = %d"
+#: libcore/abc/AbcBlock.cpp:274
+msgid "ABC: Unknown type of trait."
msgstr ""
-#: libcore/FreetypeGlyphsProvider.cpp:280
+#: libcore/abc/AbcBlock.cpp:468
#, c-format
-msgid "Failed to find fonts directory, using hard-coded font filename \"%s\""
+msgid "Abc Version: %d.%d"
msgstr ""
-#: libcore/FreetypeGlyphsProvider.cpp:293
-#, c-format
-msgid "Can't init fontconfig library, using hard-coded font filename \"%s\""
+#: libcore/abc/AbcBlock.cpp:567
+msgid "ABC: Bad string given for namespace."
msgstr ""
-#: libcore/FreetypeGlyphsProvider.cpp:355
-#, c-format
-msgid "No device font matches the name '%s', using hard-coded font filename"
+#: libcore/abc/AbcBlock.cpp:609
+msgid "ABC: Bad namespace for namespace set."
msgstr ""
-#: libcore/FreetypeGlyphsProvider.cpp:360
-msgid ""
-"Font filename matching not implemented (no fontconfig support built-in), "
-"using hard-coded font filename"
+#: libcore/abc/AbcBlock.cpp:679
+#, c-format
+msgid "Action Block: Unknown multiname type (%d)."
msgstr ""
-#: libcore/FreetypeGlyphsProvider.cpp:393
-msgid "Freetype not supported"
+#: libcore/abc/AbcBlock.cpp:712 libcore/abc/AbcBlock.cpp:722
+#: libcore/abc/AbcBlock.cpp:732 libcore/abc/AbcBlock.cpp:742
+msgid "Action Block: Bad index in optional argument."
msgstr ""
-#: libcore/FreetypeGlyphsProvider.cpp:434
-#, c-format
-msgid "Can't find font file for font '%s'"
+#: libcore/abc/AbcBlock.cpp:752
+msgid "ABC: Bad index in optional argument, namespaces."
msgstr ""
-#: libcore/FreetypeGlyphsProvider.cpp:447
+#: libcore/abc/AbcBlock.cpp:774
#, c-format
-msgid "Font file '%s' has bad format"
+msgid "ABC: Bad default value type (%X), but continuing."
msgstr ""
-#: libcore/FreetypeGlyphsProvider.cpp:456
-#, c-format
-msgid "Some error opening font '%s'"
+#: libcore/abc/AbcBlock.cpp:812
+msgid "ABC: Bad return type for method info."
msgstr ""
-#: libcore/FreetypeGlyphsProvider.cpp:490
-#, c-format
-msgid "Error loading freetype outline glyph for char '%c' (error: %d)"
+#: libcore/abc/AbcBlock.cpp:825
+msgid "ABC: Unknown return type."
msgstr ""
-#: libcore/FreetypeGlyphsProvider.cpp:506
-#, c-format
-msgid ""
-"FT_Load_Char() returned a glyph format != FT_GLYPH_FORMAT_OUTLINE (%c%c%c%c)"
+#: libcore/abc/AbcBlock.cpp:842
+msgid "ABC: Bad parameter type in method."
msgstr ""
-#: libcore/FreetypeGlyphsProvider.cpp:561
-msgid "Could not release FT face resources"
+#: libcore/abc/AbcBlock.cpp:851
+msgid "ABC: Unknown parameter type."
msgstr ""
-#: libcore/swf/DefineShapeTag.cpp:58
-#, c-format
-msgid "DefineShapeTag(%s): id = %d"
+#: libcore/abc/AbcBlock.cpp:940
+msgid "ABC: Out of bounds instance name."
msgstr ""
-#: libcore/swf/VideoFrameTag.cpp:47
-#, c-format
-msgid "VideoFrame tag refers to unknown video stream id %d"
+#: libcore/abc/AbcBlock.cpp:948
+msgid "ABC: QName required for instance."
msgstr ""
-#: libcore/swf/VideoFrameTag.cpp:57
-#, c-format
-msgid "VideoFrame tag refers to a non-video DisplayObject %d (%s)"
+#: libcore/abc/AbcBlock.cpp:953
+msgid "ABC: No namespace to use for storing class."
msgstr ""
-#: libcore/swf/VideoFrameTag.cpp:90
-msgid ""
-"Could not read enough bytes when parsing VideoFrame tag. Perhaps we reached "
-"the end of the stream!"
+#: libcore/abc/AbcBlock.cpp:968
+msgid "Duplicate class registration."
msgstr ""
-#: libcore/swf/DefineTextTag.cpp:52
-#, c-format
-msgid "DefineTextTag, id = %d"
+#: libcore/abc/AbcBlock.cpp:984
+msgid "ABC: Bad super type."
msgstr ""
-#: libcore/swf/DefineTextTag.cpp:93
+#: libcore/abc/AbcBlock.cpp:995
#, c-format
-msgid "Text DisplayObject, id = %d"
+msgid "ABC: Super type not found (%s)"
msgstr ""
-#: libcore/swf/DefineTextTag.cpp:112
-#, c-format
-msgid "begin text records for DefineTextTag %p"
+#: libcore/abc/AbcBlock.cpp:1002
+msgid "ABC: Can't extend a class which is final."
msgstr ""
-#: libcore/swf/DefaultTagLoaders.cpp:94
-#, c-format
-msgid ""
-"Undocumented tag %s encountered. Please report this to the Gnash developers!"
+#: libcore/abc/AbcBlock.cpp:1008
+msgid "ABC: Can't extend an interface type."
msgstr ""
-#: libcore/swf/DefineFontTag.cpp:60
-msgid "reading code table at offset %1%, %2% glyphs"
+#: libcore/abc/AbcBlock.cpp:1014
+msgid "ABC: Class cannot be its own supertype."
msgstr ""
-#: libcore/swf/DefineFontTag.cpp:120
-msgid "reading DefineFont"
+#: libcore/abc/AbcBlock.cpp:1035
+msgid "ABC: Bad namespace for protected."
msgstr ""
-#: libcore/swf/DefineFontTag.cpp:157
-msgid "Glyphs offset table corrupted in DefineFont tag"
+#: libcore/abc/AbcBlock.cpp:1054
+msgid "ABC: Bad name for interface."
msgstr ""
-#: libcore/swf/DefineFontTag.cpp:172
-msgid "reading DefineFont2 or DefineFont3"
+#: libcore/abc/AbcBlock.cpp:1061
+msgid "ABC: Can't implement a non-interface type."
msgstr ""
-#: libcore/swf/DefineFontTag.cpp:225 libcore/swf/DefineFontTag.cpp:237
-#, c-format
-msgid "Glyph %d at offset %u"
+#: libcore/abc/AbcBlock.cpp:1073
+msgid "ABC: Out of bounds method for initializer."
msgstr ""
-#: libcore/swf/DefineFontTag.cpp:254
-msgid "Glyphs offset table corrupted in DefineFont2/3 tag"
+#: libcore/abc/AbcBlock.cpp:1108
+msgid "ABC: Out of bound static constructor for class."
msgstr ""
-#: libcore/swf/DefineFontTag.cpp:266
-msgid "Bad offset in DefineFont2"
+#: libcore/abc/AbcBlock.cpp:1147
+msgid "ABC: Out of bounds method for script."
msgstr ""
-#: libcore/swf/DefineFontTag.cpp:325
-msgid "Repeated kerning pair found - ignoring"
+#: libcore/abc/AbcBlock.cpp:1183
+msgid "ABC: Out of bounds for method body."
msgstr ""
-#: libcore/swf/DefineFontTag.cpp:344
-#, c-format
-msgid "DefineFontInfo tag loader: can't find font with id %d"
+#: libcore/abc/AbcBlock.cpp:1190
+msgid "ABC: Only one body per method."
msgstr ""
-#: libcore/swf/DefineFontTag.cpp:352
-msgid "DefineFontInfo2 partially implemented"
+#: libcore/abc/AbcBlock.cpp:1236
+msgid "ABC: Out of bound type for exception."
msgstr ""
-#: libcore/swf/CSMTextSettingsTag.cpp:77
+#: libcore/abc/AbcBlock.cpp:1246
#, c-format
-msgid ""
-" CSMTextSettings: TextID=%d, FlashType=%d, GridFit=%d, Thickness=%d, "
-"Sharpness=%d"
+msgid "ABC: Unknown type of object to catch. (%s)"
msgstr ""
-#: libcore/swf/CSMTextSettingsTag.cpp:85
-msgid "CSMTextSettings"
+#: libcore/abc/AbcBlock.cpp:1264
+msgid "ABC: Out of bound name for caught exception."
msgstr ""
-#: libcore/swf/TextRecord.cpp:52
-msgid "end text records"
+#: libcore/ExternalInterface.cpp:137
+#, c-format
+msgid "Can't convert unknown type %d"
msgstr ""
-#: libcore/swf/TextRecord.cpp:78
+#: libcore/MovieClip.cpp:621
#, c-format
-msgid " has_font: font id = %d (%p)"
+msgid "call_frame('%s') -- invalid frame"
msgstr ""
-#: libcore/swf/TextRecord.cpp:90
-msgid " hasColor"
+#: libcore/MovieClip.cpp:667
+msgid "Can't clone root of the movie"
msgstr ""
-#: libcore/swf/TextRecord.cpp:99
+#: libcore/MovieClip.cpp:675
#, c-format
-msgid " xOffset = %g"
+msgid "%s parent is not a movieclip, can't clone"
msgstr ""
-#: libcore/swf/TextRecord.cpp:108
-#, c-format
-msgid " yOffset = %g"
+#: libcore/MovieClip.cpp:852
+msgid "MovieClip.unloadMovie()"
msgstr ""
-#: libcore/swf/TextRecord.cpp:117
+#: libcore/MovieClip.cpp:885
#, c-format
-msgid " textHeight = %g"
+msgid "advance_movieclip: no frames loaded for movieclip/movie %s"
msgstr ""
-#: libcore/swf/TextRecord.cpp:126
-#, c-format
-msgid " GlyphEntries: count = %d"
+#: libcore/MovieClip.cpp:935
+msgid ""
+"Flushing orphaned tags in movieclip %1%. _currentFrame:%2%, _hasLooped:%3%, "
+"frame_count:%4%"
msgstr ""
-#: libcore/swf/TextRecord.cpp:138
+#: libcore/MovieClip.cpp:1046
#, c-format
-msgid " glyph%d: index=%d, advance=%g"
+msgid "Executing %d tags in frame %d/%d of movieclip %s"
msgstr ""
-#: libcore/swf/StartSoundTag.cpp:56
+#: libcore/MovieClip.cpp:1084 libcore/MovieClip.cpp:1125
#, c-format
-msgid "start_sound_loader: sound_id %d is not defined"
+msgid ""
+"Target frame of a gotoFrame(%d) was never loaded, although frame count in "
+"header (%d) said we should have found it"
msgstr ""
-#: libcore/swf/StartSoundTag.cpp:64
+#: libcore/MovieClip.cpp:1116
#, c-format
-msgid "StartSound: id=%d"
+msgid ""
+"GotoFrame(%d) targets a yet to be loaded frame (%d). We'll wait for it but a "
+"more correct form is explicitly using WaitForFrame instead"
msgstr ""
-#: libcore/swf/StartSoundTag.cpp:114
-msgid "STARTSOUND2 tag not parsed and not used"
+#: libcore/MovieClip.cpp:1189
+#, c-format
+msgid "MovieClip::goto_labeled_frame('%s') unknown label"
msgstr ""
-#: libcore/swf/DefineButtonSoundTag.cpp:52
+#: libcore/MovieClip.cpp:1248
#, c-format
-msgid "DEFINEBUTTONSOUND refers to an unknown DisplayObject def %d"
+msgid "MovieClip::add_display_object(): unknown cid = %d"
msgstr ""
-#: libcore/swf/DefineButtonSoundTag.cpp:63
+#: libcore/MovieClip.cpp:1318
#, c-format
-msgid ""
-"DEFINEBUTTONSOUND refers to DisplayObject id %d, a %s (expected a button "
-"DisplayObject)"
+msgid "movieclip::replace_display_object(): unknown cid = %d"
msgstr ""
-#: libcore/swf/DefineButtonSoundTag.cpp:73
-msgid "Attempt to redefine button sound ignored"
+#: libcore/MovieClip.cpp:1327
+#, c-format
+msgid ""
+"MovieClip::replace_display_object: could not find any DisplayObject at depth "
+"%d"
msgstr ""
-#: libcore/swf/DefineButtonSoundTag.cpp:99
+#: libcore/MovieClip.cpp:1905
#, c-format
-msgid "sound tag not found, sound_id=%d, button state #=%i"
+msgid "Could not load variables from %s"
msgstr ""
-#: libcore/swf/tag_loaders.cpp:83
-msgid "anchor-labeled frame not supported"
-msgstr ""
-
-#: libcore/swf/tag_loaders.cpp:87
+#: libcore/MovieClip.cpp:1958
#, c-format
-msgid "frame_label_loader end position %d, read up to %d"
+msgid ""
+"removeMovieClip(%s): movieclip depth (%d) out of the 'dynamic' zone "
+"[0..1048575], won't remove"
msgstr ""
-#: libcore/swf/tag_loaders.cpp:107
+#: libcore/movie_root.cpp:238
#, c-format
-msgid " sprite: char id = %d"
-msgstr ""
-
-#: libcore/swf/tag_loaders.cpp:118
-msgid ""
-"Nested DEFINESPRITE tags. Will add to top-level DisplayObjects dictionary."
+msgid "ActionParserException thrown during setRootMovie: %s"
msgstr ""
-#: libcore/swf/tag_loaders.cpp:128
+#: libcore/movie_root.cpp:253
#, c-format
-msgid "Sprite %d advertise no frames"
+msgid "No user interface registered, assuming 'Yes' answer to question: %s"
msgstr ""
-#: libcore/swf/tag_loaders.cpp:168
+#: libcore/movie_root.cpp:402 libcore/movie_root.cpp:412
#, c-format
-msgid "DEFINESOUNDLOADER: sound sample rate %d (expected 0 to %u)"
+msgid ""
+"%s.swapDepth(%d): movie has a depth (%d) below static depth zone (%d), won't "
+"swap its depth"
msgstr ""
-#: libcore/swf/tag_loaders.cpp:188
-#, c-format
+#: libcore/movie_root.cpp:470
msgid ""
-"define sound: ch=%d, format=%s, rate=%d, 16=%d, stereo=%d, ct=%d, delay=%d"
+"movie_root::dropLevel called against a movie not found in the levels "
+"container"
msgstr ""
-#: libcore/swf/tag_loaders.cpp:216
-msgid "Tag boundary reported past end of SWFStream!"
+#: libcore/movie_root.cpp:477
+msgid "Original root movie can't be removed"
msgstr ""
-#: libcore/swf/tag_loaders.cpp:236
+#: libcore/movie_root.cpp:496
#, c-format
msgid ""
-"There is no sound handler currently active, so DisplayObject with id %d will "
-"not be added to the dictionary"
+"TESTME: loadMovie called on level %d which is not available at load time, "
+"skipped placement for now"
msgstr ""
-#: libcore/swf/tag_loaders.cpp:269
+#: libcore/movie_root.cpp:627
#, c-format
-msgid "File attributes: metadata=%s network=%s"
-msgstr ""
-
-#: libcore/swf/tag_loaders.cpp:270 libcore/swf/tag_loaders.cpp:271
-msgid "true"
-msgstr ""
-
-#: libcore/swf/tag_loaders.cpp:270 libcore/swf/tag_loaders.cpp:271
-msgid "false"
+msgid "ActionLimits hit notifying key listeners: %s."
msgstr ""
-#: libcore/swf/tag_loaders.cpp:275
+#: libcore/movie_root.cpp:865
msgid ""
-"FileAttributes tag in the SWF requests that network access is not granted to "
-"this movie (or application?) when loaded from the filesystem. Anyway Gnash "
-"won't care; use white/black listing in your .gnashrc instead"
+"movie_root tracking a streaming sound, but the sound handler is not "
+"streaming!"
msgstr ""
-#: libcore/swf/tag_loaders.cpp:283
+#: libcore/movie_root.cpp:897
msgid ""
-"This SWF file requires AVM2: there will be no ActionScript interpretation"
+"Time exceeded (%1% secs) while attempting to catch up to streaming sound. "
+"Give up on synchronization?"
msgstr ""
-#: libcore/swf/tag_loaders.cpp:308
+#: libcore/movie_root.cpp:949
#, c-format
-msgid ""
-" RDF metadata (information only): [[\n"
-"%s\n"
-"]]"
+msgid "Buffer overread during advance: %s"
msgstr ""
-#: libcore/swf/tag_loaders.cpp:324
+#: libcore/movie_root.cpp:1068
#, c-format
-msgid "Descriptive metadata from movie %s: %s"
+msgid "ActionLimits hit notifying mouse events: %s."
msgstr ""
-#: libcore/swf/tag_loaders.cpp:386
+#: libcore/movie_root.cpp:1560
#, c-format
-msgid " reflex = \"%c%c%c\""
+msgid "Couldn't process ExternalInterface Call %s"
msgstr ""
-#: libcore/swf/DefineFontAlignZonesTag.cpp:54
-#, c-format
-msgid "DefineFontAlignZones tag references an undefined font %d"
+#: libcore/movie_root.cpp:1605
+msgid "ExternalInterface::GotoFrame()"
msgstr ""
-#: libcore/swf/DefineFontAlignZonesTag.cpp:73
-#, c-format
-msgid "DefineFontAlignZones: font=%d, flags=%d, table int: %s"
+#: libcore/movie_root.cpp:1613
+msgid "ExternalInterface::LoadMovie()"
msgstr ""
-#: libcore/swf/DefineFontAlignZonesTag.cpp:110
-msgid "DefineFontAlignZoneTag"
+#: libcore/movie_root.cpp:1682 gui/Player.cpp:716
+#, c-format
+msgid "Could not write to user-provided host requests fd %d: %s"
msgstr ""
-#: libcore/swf/ShapeRecord.cpp:274
+#: libcore/movie_root.cpp:1843 libcore/movie_root.cpp:1875
+#: libcore/movie_root.cpp:1931
#, c-format
-msgid " bound SWFRect: %s"
+msgid "Could not write to browser fd #%d: %s"
msgstr ""
-#: libcore/swf/ShapeRecord.cpp:301
+#: libcore/movie_root.cpp:2189
#, c-format
-msgid " ShapeRecord(%s): fillbits %d, linebits %d"
+msgid "Fork failed launching URL opener '%s'"
msgstr ""
-#: libcore/swf/ShapeRecord.cpp:379
+#: libcore/movie_root.cpp:2236
#, c-format
-msgid " Shape read: moveto %d %d"
+msgid "Could only write %d bytes to fd #%d"
+msgstr ""
+
+#: libcore/movie_root.cpp:2324
+msgid "Live MovieClips"
msgstr ""
-#: libcore/swf/ShapeRecord.cpp:400
+#: libcore/movie_root.cpp:2453
#, c-format
-msgid ""
-"Invalid fill style %d in fillStyle0Change record for font tag (0 or 1 "
-"valid). Set to 0."
+msgid "%s to UTF8 conversion in LoadableObject input parsing"
msgstr ""
-#: libcore/swf/ShapeRecord.cpp:410
+#: libcore/movie_root.cpp:2476
#, c-format
msgid ""
-"Invalid fill style %d in fillStyle0Change record - %d defined. Set to 0."
+"Hosting application registered no callback for events/queries, can't call %s"
+"(%s)"
msgstr ""
-#: libcore/swf/ShapeRecord.cpp:421
+#: libcore/parser/TypesParser.cpp:145
#, c-format
-msgid " Shape read: fill0 (left) = %d"
+msgid "Invalid rectangle: minx=%g maxx=%g miny=%g maxy=%g"
msgstr ""
-#: libcore/swf/ShapeRecord.cpp:443
+#: libcore/parser/TypesParser.cpp:161
#, c-format
-msgid ""
-"Invalid fill style %d in fillStyle1Change record for font tag (0 or 1 "
-"valid). Set to 0."
+msgid " FillStyle read type = 0x%X"
msgstr ""
-#: libcore/swf/ShapeRecord.cpp:453
+#: libcore/parser/TypesParser.cpp:207
#, c-format
-msgid ""
-"Invalid fill style %d in fillStyle1Change record - %d defined. Set to 0."
+msgid " gradients count: %d"
msgstr ""
-#: libcore/swf/ShapeRecord.cpp:463
-#, c-format
-msgid " Shape read: fill1 (right) = %d"
+#: libcore/parser/TypesParser.cpp:212
+msgid "No gradients!"
msgstr ""
-#: libcore/swf/ShapeRecord.cpp:484
-#, c-format
-msgid ""
-"Invalid line style %d in lineStyleChange record for font tag (0 or 1 valid). "
-"Set to 0."
+#: libcore/parser/TypesParser.cpp:266
+msgid "Illegal spread mode in gradient definition."
msgstr ""
-#: libcore/swf/ShapeRecord.cpp:494
-#, c-format
-msgid "Invalid fill style %d in lineStyleChange record - %d defined. Set to 0."
+#: libcore/parser/TypesParser.cpp:283
+msgid "Illegal interpolation mode in gradient definition."
msgstr ""
-#: libcore/swf/ShapeRecord.cpp:504
+#: libcore/parser/TypesParser.cpp:408
#, c-format
-msgid "ShapeRecord: line %d"
+msgid " color: %s"
msgstr ""
-#: libcore/swf/ShapeRecord.cpp:518
-msgid "ShapeRecord: more fill styles"
+#: libcore/parser/SWFParser.cpp:90
+msgid "SHOWFRAME tag"
msgstr ""
-#: libcore/swf/ShapeRecord.cpp:558
+#: libcore/parser/SWFParser.cpp:100
#, c-format
-msgid "ShapeRecord: curved edge %d %d - %d %d - %d %d"
+msgid ""
+"Encountered unknown tag %d. These usually store creation tool data and do "
+"not affect playback"
msgstr ""
-#: libcore/swf/ShapeRecord.cpp:593
+#: libcore/parser/SWFParser.cpp:105
#, c-format
-msgid "ShapeRecord: straight edge %d %d - %d %d"
+msgid "tag dump follows: %s"
msgstr ""
-#: libcore/swf/ShapeRecord.cpp:642
-msgid " fill styles: %1%"
+#: libcore/parser/SWFParser.cpp:113
+#, c-format
+msgid "Parsing exception: %s"
msgstr ""
-#: libcore/swf/ShapeRecord.cpp:651
-msgid " Read fill: %1%"
+#: libcore/parser/SWFParser.cpp:151 libcore/SWFStream.cpp:302
+#: libcore/SWFStream.cpp:320 libcore/SWFStream.cpp:353
+#: libcore/SWFStream.cpp:384
+msgid "Unexpected end of stream while reading"
msgstr ""
-#: libcore/swf/ShapeRecord.cpp:665
+#: libcore/parser/sprite_definition.cpp:64
#, c-format
-msgid " readLineStyles: count = %d"
+msgid " frames = %d"
msgstr ""
-#: libcore/swf/ShapeRecord.cpp:672
+#: libcore/parser/sprite_definition.cpp:77
#, c-format
-msgid " readLineStyles: count2 = %d"
+msgid ""
+"%d frames advertised in header, but only %d SHOWFRAME tags found in define "
+"sprite."
msgstr ""
-#: libcore/swf/PlaceObject2Tag.cpp:85
-#, c-format
-msgid " PLACEOBJECT: depth=%d(%d) char=%d"
+#: libcore/parser/sprite_definition.cpp:87
+msgid " -- sprite END --"
msgstr ""
-#: libcore/swf/PlaceObject2Tag.cpp:89 libcore/swf/PlaceObject2Tag.cpp:311
+#: libcore/parser/SWFMovieDefinition.cpp:255
#, c-format
-msgid " SWFCxForm: %s"
+msgid "Add sound sample %d assigning id %d"
msgstr ""
-#: libcore/swf/PlaceObject2Tag.cpp:105
-#, c-format
-msgid "Reserved field in PlaceObject actions == %u (expected 0)"
+#: libcore/parser/SWFMovieDefinition.cpp:284
+msgid ""
+"gnash::SWFMovieDefinition::read() -- file does not start with a SWF header"
msgstr ""
-#: libcore/swf/PlaceObject2Tag.cpp:123
+#: libcore/parser/SWFMovieDefinition.cpp:291
#, c-format
-msgid " actions: flags = 0x%X"
+msgid "version: %d, file_length: %d"
msgstr ""
-#: libcore/swf/PlaceObject2Tag.cpp:158
-#, c-format
+#: libcore/parser/SWFMovieDefinition.cpp:296
msgid ""
-"swf_event::read(), even_length = %u, but only %lu bytes left to the end of "
-"current tag. Breaking for safety."
+"SWFMovieDefinition::read(): unable to read zipped SWF data; Gnash was "
+"compiled without zlib support"
msgstr ""
-#: libcore/swf/PlaceObject2Tag.cpp:219
-#, c-format
-msgid ""
-"swf_event::read() -- unknown / unhandled event type received, flags = 0x%x"
+#: libcore/parser/SWFMovieDefinition.cpp:301
+msgid "file is compressed"
msgstr ""
-#: libcore/swf/PlaceObject2Tag.cpp:248
-msgid "Unexpected end of tag while parsing PlaceObject tag events"
+#: libcore/parser/SWFMovieDefinition.cpp:320
+msgid "non-finite movie bounds"
msgstr ""
-#: libcore/swf/PlaceObject2Tag.cpp:304
+#: libcore/parser/SWFMovieDefinition.cpp:336
#, c-format
-msgid " PLACEOBJECT2: depth = %d (%d)"
+msgid "frame size = %s, frame rate = %f, frames = %d"
msgstr ""
-#: libcore/swf/PlaceObject2Tag.cpp:306 libcore/swf/PlaceObject2Tag.cpp:419
-#, c-format
-msgid " char id = %d"
+#: libcore/parser/SWFMovieDefinition.cpp:360
+msgid "Could not start loading thread"
msgstr ""
-#: libcore/swf/PlaceObject2Tag.cpp:308 libcore/swf/PlaceObject2Tag.cpp:420
+#: libcore/parser/SWFMovieDefinition.cpp:431
#, c-format
-msgid " SWFMatrix: %s"
+msgid "Could not find char %d, dump is: %s"
msgstr ""
-#: libcore/swf/PlaceObject2Tag.cpp:313 libcore/swf/PlaceObject2Tag.cpp:422
-#, c-format
-msgid " ratio: %d"
+#: libcore/parser/SWFMovieDefinition.cpp:490
+msgid "Error while parsing SWF stream."
msgstr ""
-#: libcore/swf/PlaceObject2Tag.cpp:314 libcore/swf/PlaceObject2Tag.cpp:423
+#: libcore/parser/SWFMovieDefinition.cpp:502
#, c-format
-msgid " name = %s"
+msgid "%d control tags are NOT followed by a SHOWFRAME tag"
msgstr ""
-#: libcore/swf/PlaceObject2Tag.cpp:316 libcore/swf/PlaceObject2Tag.cpp:425
+#: libcore/parser/SWFMovieDefinition.cpp:510
#, c-format
-msgid " clip_depth = %d (%d)"
+msgid ""
+"%d frames advertised in header, but only %d SHOWFRAME tags found in stream. "
+"Pretending we loaded all advertised frames"
msgstr ""
-#: libcore/swf/PlaceObject2Tag.cpp:319 libcore/swf/PlaceObject2Tag.cpp:428
+#: libcore/parser/SWFMovieDefinition.cpp:538
#, c-format
-msgid " m_place_type: %d"
+msgid ""
+"number of SHOWFRAME tags in SWF stream '%s' (%d) exceeds the advertised "
+"number in header (%d)."
msgstr ""
-#: libcore/swf/PlaceObject2Tag.cpp:417
-#, c-format
-msgid " PLACEOBJECT3: depth = %d (%d)"
+#: libcore/parser/SWFMovieDefinition.cpp:605
+msgid "More than one JPEGTABLES tag found: not resetting JPEG loader"
msgstr ""
-#: libcore/swf/PlaceObject2Tag.cpp:421
+#: libcore/parser/SWFMovieDefinition.cpp:745
#, c-format
-msgid " SWFCxForm: %d"
+msgid "import error: could not find resource '%s' in movie '%s'"
msgstr ""
-#: libcore/swf/PlaceObject2Tag.cpp:424
+#: libcore/parser/filter_factory.cpp:54
#, c-format
-msgid " class name = %s"
+msgid " number of filters: %d"
msgstr ""
-#: libcore/swf/PlaceObject2Tag.cpp:427
-msgid " bitmapCaching enabled"
+#: libcore/parser/filter_factory.cpp:92
+#, c-format
+msgid "Invalid filter type %d."
msgstr ""
-#: libcore/swf/SoundStreamHeadTag.cpp:76
+#: libcore/parser/filter_factory.cpp:102
#, c-format
-msgid "SOUNDSTREAMHEAD: stream sample rate %d (expected 0 to %u)"
+msgid "Filter %d could not read."
msgstr ""
-#: libcore/swf/SoundStreamHeadTag.cpp:86
+#: libcore/parser/filter_factory.cpp:134
#, c-format
-msgid ""
-"Different stream/playback sound rate (%d/%d). This seems common in SWF "
-"files, so we'll warn only once."
+msgid " DropShadowFilter: blurX=%f blurY=%f"
msgstr ""
-#: libcore/swf/SoundStreamHeadTag.cpp:93
+#: libcore/parser/filter_factory.cpp:153
#, c-format
-msgid ""
-"Different stream/playback sample size (%d/%d). This seems common in SWF "
-"files, so we'll warn only once."
+msgid " BlurFilter: blurX=%f blurY=%f quality=%d"
msgstr ""
-#: libcore/swf/SoundStreamHeadTag.cpp:99
-#, c-format
-msgid ""
-"Different stream/playback channels (%s/%s). This seems common in SWF files, "
-"so we'll warn only once."
+#: libcore/parser/filter_factory.cpp:180
+msgid " GlowFilter "
msgstr ""
-#: libcore/swf/SoundStreamHeadTag.cpp:119
-msgid ""
-"No samples advertised for sound stream, pretty common so will warn only once"
+#: libcore/parser/filter_factory.cpp:218
+msgid " BevelFilter "
msgstr ""
-#: libcore/swf/SoundStreamHeadTag.cpp:146
-#, c-format
-msgid ""
-"sound stream head: format=%s, rate=%d, 16=%d, stereo=%d, ct=%d, latency=%d"
+#: libcore/parser/filter_factory.cpp:265
+msgid " GradientGlowFilter "
msgstr ""
-#: libcore/swf/DefineButtonCxformTag.cpp:49
-#, c-format
-msgid "DefineButtonCxform refers to an unknown DisplayObject %d"
+#: libcore/parser/filter_factory.cpp:301
+msgid " ConvolutionFilter "
msgstr ""
-#: libcore/swf/DefineButtonCxformTag.cpp:60
-#, c-format
-msgid ""
-"DefineButtonCxform refers to DisplayObject ID %d (%s). Expected a button "
-"definition"
+#: libcore/parser/filter_factory.cpp:318
+msgid " ColorMatrixFilter: "
msgstr ""
-#: libcore/swf/RemoveObjectTag.cpp:71
+#: libcore/parser/filter_factory.cpp:319 libcore/parser/filter_factory.cpp:322
+#: libcore/parser/filter_factory.cpp:325 libcore/parser/filter_factory.cpp:328
#, c-format
-msgid " remove_object_2(%d)"
+msgid " %g, %g, %g, %g, %g"
msgstr ""
-#: libcore/swf/StreamSoundBlockTag.cpp:75
-msgid "Found SOUNDSTREAMBLOCK tag w/out preceding SOUNDSTREAMHEAD"
+#: libcore/parser/filter_factory.cpp:375
+msgid " GradientBevelFilter "
msgstr ""
-#: libcore/swf/StreamSoundBlockTag.cpp:111
-msgid "Tag boundary reported past end of stream!"
+#: libcore/parser/action_buffer.cpp:57
+#, c-format
+msgid "Empty action buffer starting at offset %lu"
msgstr ""
-#: libcore/swf/DefineButtonTag.cpp:85
+#: libcore/parser/action_buffer.cpp:94
#, c-format
-msgid " DefineButton loader: character id = %d"
+msgid "Action buffer starting at offset %lu doesn't end with an END tag"
msgstr ""
-#: libcore/swf/DefineButtonTag.cpp:102
-#, c-format
-msgid " DefineButton2 loader: chararacter id = %d"
+#: libcore/parser/action_buffer.cpp:132
+msgid "action buffer dict length exceeded"
msgstr ""
-#: libcore/swf/DefineButtonTag.cpp:134
-msgid "Premature end of DEFINEBUTTON tag, won't read actions"
+#: libcore/parser/action_buffer.cpp:537 libcore/SWFStream.cpp:285
+msgid "Native floating point format not recognised"
msgstr ""
-#: libcore/swf/DefineButtonTag.cpp:170
-#, c-format
-msgid "Next Button2 actionOffset (%u) points past the end of tag (%lu)"
+#: libcore/parser/action_buffer.cpp:614
+msgid "Native double floating point format not recognised"
msgstr ""
-#: libcore/swf/DefineButtonTag.cpp:211
-#, c-format
+#: libcore/Font.cpp:130
msgid ""
-"Next action offset (%u) in Button2ActionConditions points past the end of tag"
+"Attempt to set font display or copyright name again. This should mean there "
+"is more than one DefineFontName tag referring to the same Font. Don't know "
+"what to do in this case, so ignoring."
msgstr ""
-#: libcore/swf/DefineButtonTag.cpp:279
-msgid "Premature end of button action input: can't read conditions"
+#: libcore/Font.cpp:167
+msgid ""
+"Attempt to add an embedded glyph CodeTable to a font that already has one. "
+"This should mean there are several DefineFontInfo tags, or a DefineFontInfo "
+"tag refers to a font created by DefineFont2 or DefineFont3. Don't know what "
+"should happen in this case, so ignoring."
msgstr ""
-#: libcore/swf/DefineButtonTag.cpp:289
+#: libcore/Font.cpp:201
#, c-format
-msgid " button actions for conditions 0x%x"
+msgid "Failed to find glyph %s in %s font %s"
msgstr ""
-#: libcore/swf/DefineButtonTag.cpp:362
-msgid " premature end of button record input stream, can't read flags"
+#: libcore/Font.cpp:276
+msgid "Device font provider was not initialized, can't get unitsPerEM"
msgstr ""
-#: libcore/swf/DefineButtonTag.cpp:383
+#: libcore/Font.cpp:298
+#, c-format
msgid ""
-" premature end of button record input stream, can't read DisplayObject id"
+"Could not create shape glyph for DisplayObject code %u (%c) with device font "
+"%s (%p)"
msgstr ""
-#: libcore/swf/DefineButtonTag.cpp:398
-#, c-format
+#: libcore/Font.cpp:332
msgid ""
-" button record for states [%s] refer to DisplayObject with id %d, which is "
-"not found in the chars dictionary"
+"No name associated with this font, can't use device fonts (should I use a "
+"default one?)"
msgstr ""
-#: libcore/swf/DefineButtonTag.cpp:405
+#: libcore/Font.cpp:340
#, c-format
-msgid " button record for states [%s] contain DisplayObject %d (%s)"
+msgid "Could not create a freetype face %s"
msgstr ""
-#: libcore/swf/DefineButtonTag.cpp:413
-msgid ""
-" premature end of button record input stream, can't read button layer "
-"(depth?)"
+#: libcore/TextField.cpp:236
+#, c-format
+msgid "FIXME: attempt to remove a TextField being a child of a %s"
msgstr ""
-#: libcore/swf/DefineBitsTag.cpp:154
-msgid " jpeg_tables_loader"
+#: libcore/TextField.cpp:415 libcore/TextField.cpp:425
+#: libcore/TextField.cpp:443 libcore/TextField.cpp:458
+msgid "invalid restrict string"
msgstr ""
-#: libcore/swf/DefineBitsTag.cpp:165
+#: libcore/TextField.cpp:967
#, c-format
-msgid "No bytes to read in JPEGTABLES tag at offset %d"
+msgid ""
+"TextField: missing glyph for space char (needed for TAB). Make sure "
+"DisplayObject shapes for font %s are being exported into your SWF file."
msgstr ""
-#: libcore/swf/DefineBitsTag.cpp:206
+#: libcore/TextField.cpp:1046
+msgid "No font for TextField!"
+msgstr ""
+
+#: libcore/TextField.cpp:1446
#, c-format
-msgid "DEFINEBITS: Duplicate id (%d) for bitmap DisplayObject - discarding it"
+msgid "Unexpected value '%s' in TextField font color attribute"
msgstr ""
-#: libcore/swf/DefineBitsTag.cpp:235
-msgid "Failed to parse bitmap for character %1%"
+#: libcore/TextField.cpp:1461
+msgid "Expected a font name in FACE attribute."
msgstr ""
-#: libcore/swf/DefineBitsTag.cpp:243
-msgid "No renderer, not adding bitmap %1%"
+#: libcore/TextField.cpp:1515
+msgid "<img> HTML tag in TextField"
msgstr ""
-#: libcore/swf/DefineBitsTag.cpp:250
-msgid "Adding bitmap id %1%"
+#: libcore/TextField.cpp:1553
+msgid "<span> HTML tag in TextField"
msgstr ""
-#: libcore/swf/DefineBitsTag.cpp:269
-msgid ""
-"DEFINEBITS: No jpeg loader registered in movie definition - discarding bitmap"
+#: libcore/TextField.cpp:1625
+msgid "HTML <textformat> tag tabstops attribute"
msgstr ""
-#: libcore/swf/DefineBitsTag.cpp:374
-msgid "gnash is not linked to zlib -- can't load jpeg3 image data"
+#: libcore/TextField.cpp:1708
+#, c-format
+msgid ""
+"TextField: missing embedded glyph for char %d. Make sure DisplayObject "
+"shapes for font %s are being exported into your SWF file"
msgstr ""
-#: libcore/swf/DefineBitsTag.cpp:419
+#: libcore/TextField.cpp:1716
#, c-format
-msgid " defbitslossless2: tag = %d, fmt = %d, w = %d, h = %d"
+msgid ""
+"TextField: missing device glyph for char %d. Maybe you don't have font '%s' "
+"installed in your system."
msgstr ""
-#: libcore/swf/DefineBitsTag.cpp:426
-msgid "Bitmap has a height or width of 0"
+#: libcore/TextField.cpp:1907
+#, c-format
+msgid ""
+"Current environment has no target, can't bind VariableName (%s) associated "
+"to text field. Gnash will try to register again on next access."
msgstr ""
-#: libcore/swf/DefineBitsTag.cpp:432
-msgid "gnash is not linked to zlib -- can't load zipped image data"
+#: libcore/TextField.cpp:1933
+#, c-format
+msgid ""
+"VariableName associated to text field refers to an unknown target (%s). It "
+"is possible that the DisplayObject will be instantiated later in the SWF "
+"stream. Gnash will try to register again on next access."
msgstr ""
-#: libcore/swf/DefineBitsTag.cpp:458
-msgid "Will not allocate %1%x%2% image in DefineBitsLossless tag"
+#: libcore/TextField.cpp:2026 libcore/TextField.cpp:2060
+#: libcore/TextField.cpp:2151
+msgid "invalid HTML tag"
msgstr ""
-#: libcore/swf/DefineBitsTag.cpp:483
-msgid "Unknown bitmap format. Ignoring"
+#: libcore/TextField.cpp:2037 libcore/TextField.cpp:2073
+#: libcore/TextField.cpp:2104
+msgid "found NULL character in htmlText"
msgstr ""
-#: libcore/swf/DefineBitsTag.cpp:597
-#, c-format
-msgid "inflateWrapper() inflateInit() returned %d (%s)"
+#: libcore/TextField.cpp:2077
+msgid "malformed HTML tag, invalid attribute name"
msgstr ""
-#: libcore/swf/DefineBitsTag.cpp:617
-msgid "inflateWrapper(): no end of zstream found within swf tag boundaries"
+#: libcore/TextField.cpp:2127
+msgid "malformed HTML tag, invalid attribute value"
msgstr ""
-#: libcore/swf/DefineBitsTag.cpp:640
-#, c-format
-msgid "inflateWrapper() inflate() returned %d (%s)"
+#: libcore/TextField.cpp:2160
+msgid "I declare this a HTML syntax error"
msgstr ""
-#: libcore/swf/DefineBitsTag.cpp:649
-#, c-format
-msgid "inflateWrapper() inflateEnd() return %d (%s)"
+#: libcore/Video.cpp:57
+msgid "No Media handler registered, won't be able to decode embedded video"
msgstr ""
-#: libcore/LoadVariablesThread.cpp:74
+#: libcore/Video.cpp:69
#, c-format
-msgid "%s to UTF8 conversion in MovieClip.loadVariables input parsing"
+msgid "Could not create Video Decoder: %s"
msgstr ""
-#: libcore/LoadVariablesThread.cpp:123
-#, c-format
-msgid "Stream couldn't seek to end: %s"
+#: libcore/Video.cpp:138
+msgid "No Video info in video definition"
msgstr ""
-#: libcore/LoadVariablesThread.cpp:128
+#: libcore/asobj/Selection_as.cpp:189
#, c-format
-msgid ""
-"Size of 'variables' stream advertised to be %d bytes, but turned out to be "
-"%d bytes."
+msgid "Selection.setFocus: expected 1 argument, got %d"
msgstr ""
-#: libcore/SWFStream.cpp:285 libcore/parser/action_buffer.cpp:537
-msgid "Native floating point format not recognised"
+#: libcore/asobj/Array_as.cpp:631
+#, c-format
+msgid "Unhandled sort flags: %d (0x%X)"
msgstr ""
-#: libcore/SWFStream.cpp:302 libcore/SWFStream.cpp:320
-#: libcore/SWFStream.cpp:353 libcore/SWFStream.cpp:384
-#: libcore/parser/SWFParser.cpp:151
-msgid "Unexpected end of stream while reading"
+#: libcore/asobj/Array_as.cpp:1036
+msgid "Array.splice() needs at least 1 argument, call ignored"
msgstr ""
-#: libcore/SWFStream.cpp:475
-msgid "Attempt to seek past the end of an opened tag"
+#: libcore/asobj/Array_as.cpp:1059
+#, c-format
+msgid "Array.splice(%d,%d): negative length given, call ignored"
msgstr ""
-#: libcore/SWFStream.cpp:483
-msgid "Attempt to seek before start of an opened tag"
+#: libcore/asobj/Array_as.cpp:1157
+msgid "Sort called with invalid arguments."
msgstr ""
-#: libcore/SWFStream.cpp:496
-msgid "Unexpected end of stream"
+#: libcore/asobj/Array_as.cpp:1301
+msgid "SortOn called with invalid arguments."
msgstr ""
-#: libcore/SWFStream.cpp:564
-#, c-format
+#: libcore/asobj/Array_as.cpp:1491
msgid ""
-"Tag %d starting at offset %d is advertised to end at offset %d, which is "
-"after end of previously opened tag starting at offset %d and ending at "
-"offset %d. Making it end where container tag ends."
+"More than 2 arguments to Array.slice, and I don't know what to do with "
+"them. Ignoring them"
msgstr ""
-#: libcore/SWFStream.cpp:581
-#, c-format
-msgid "SWF[%lu]: tag type = %d, tag length = %d, end tag = %lu"
+#: libcore/asobj/TextSnapshot_as.cpp:521
+msgid "TextSnapshot.findText() requires 3 arguments"
msgstr ""
-#: libcore/SWFStream.cpp:602
-msgid "Could not seek to reported end of tag"
+#: libcore/asobj/TextSnapshot_as.cpp:545
+msgid "TextSnapshot.getCount() takes no arguments"
msgstr ""
-#: libcore/SWFStream.cpp:617
-#, c-format
-msgid "SWFStream::consumeInput: underlying stream couldn't go_to_end: %s"
+#: libcore/asobj/TextSnapshot_as.cpp:601
+msgid "TextSnapshot.getText requires exactly 2 arguments"
msgstr ""
-#: libcore/RGBA.cpp:47
-msgid "Failed to convert string to RGBA value! This is a Gnash bug"
+#: libcore/asobj/XMLNode_as.cpp:240
+msgid ""
+"XMLNode.insertBefore(): positional parameter is not a child of this node"
msgstr ""
-#: libcore/Font.cpp:130
-msgid ""
-"Attempt to set font display or copyright name again. This should mean there "
-"is more than one DefineFontName tag referring to the same Font. Don't know "
-"what to do in this case, so ignoring."
+#: libcore/asobj/XMLNode_as.cpp:616
+msgid "XMLNode::appendChild() needs at least one argument"
msgstr ""
-#: libcore/Font.cpp:167
-msgid ""
-"Attempt to add an embedded glyph CodeTable to a font that already has one. "
-"This should mean there are several DefineFontInfo tags, or a DefineFontInfo "
-"tag refers to a font created by DefineFont2 or DefineFont3. Don't know what "
-"should happen in this case, so ignoring."
+#: libcore/asobj/XMLNode_as.cpp:625
+msgid "First argument to XMLNode::appendChild() is not an XMLNode"
msgstr ""
-#: libcore/Font.cpp:201
+#: libcore/asobj/XMLNode_as.cpp:663
#, c-format
-msgid "Failed to find glyph %s in %s font %s"
+msgid "XMLNode.insertBefore(%s) needs at least two arguments"
msgstr ""
-#: libcore/Font.cpp:276
-msgid "Device font provider was not initialized, can't get unitsPerEM"
+#: libcore/asobj/XMLNode_as.cpp:674
+#, c-format
+msgid "First argument to XMLNode.insertBefore(%s) is not an XMLNode"
msgstr ""
-#: libcore/Font.cpp:298
+#: libcore/asobj/XMLNode_as.cpp:685
#, c-format
-msgid ""
-"Could not create shape glyph for DisplayObject code %u (%c) with device font "
-"%s (%p)"
+msgid "Second argument to XMLNode.insertBefore(%s) is not an XMLNode"
msgstr ""
-#: libcore/Font.cpp:332
-msgid ""
-"No name associated with this font, can't use device fonts (should I use a "
-"default one?)"
+#: libcore/asobj/String_as.cpp:451
+msgid "string.slice() called with end < start"
msgstr ""
-#: libcore/Font.cpp:340
+#: libcore/asobj/String_as.cpp:496
#, c-format
-msgid "Could not create a freetype face %s"
+msgid "String.indexOf(%s, %s): second argument casts to invalid offset (%d)"
msgstr ""
-#: libcore/asobj/Stage_as.cpp:146
-msgid "Stage.width is a read-only property!"
+#: libcore/asobj/String_as.cpp:569
+msgid "string.charCodeAt needs one argument"
msgstr ""
-#: libcore/asobj/Stage_as.cpp:163
-msgid "Stage.height is a read-only property!"
+#: libcore/asobj/String_as.cpp:578
+msgid "string.charCodeAt has more than one argument"
msgstr ""
-#: libcore/asobj/Stage_as.cpp:202
-msgid "Stage.showMenu implemented by setting gnashrc option and for gtk only"
+#: libcore/asobj/String_as.cpp:756
+msgid "No fn_call::callerDef in string function call"
msgstr ""
-#: libcore/asobj/Video_as.cpp:114
-msgid "attachVideo needs 1 arg"
+#: libcore/asobj/String_as.cpp:780
+msgid "%1%(%2%) needs %3% argument(s)"
msgstr ""
-#: libcore/asobj/Video_as.cpp:126
-#, c-format
-msgid "attachVideo(%s) first arg is not a NetStream instance"
+#: libcore/asobj/String_as.cpp:791
+msgid "%1%(%2%) has more than %3% argument(s)"
msgstr ""
-#: libcore/asobj/Video_as.cpp:139
-msgid "Video.deblocking"
+#: libcore/asobj/Object.cpp:148
+msgid "Too many args to Object constructor"
msgstr ""
-#: libcore/asobj/TextField_as.cpp:218
+#: libcore/asobj/Object.cpp:192
#, c-format
-msgid "createTextField called with %d args, expected 6 - returning undefined"
+msgid ""
+"Invalid call to Object.addProperty(%s) - expected 3 arguments (<name>, "
+"<getter>, <setter>)"
msgstr ""
-#: libcore/asobj/TextField_as.cpp:232
-#, c-format
-msgid "createTextField: negative width (%d) - reverting sign"
+#: libcore/asobj/Object.cpp:209
+msgid "Invalid call to Object.addProperty() - empty property name"
msgstr ""
-#: libcore/asobj/TextField_as.cpp:242
-#, c-format
-msgid "createTextField: negative height (%d) - reverting sign"
+#: libcore/asobj/Object.cpp:219
+msgid "Invalid call to Object.addProperty() - getter is not an AS function"
msgstr ""
-#: libcore/asobj/TextField_as.cpp:436
+#: libcore/asobj/Object.cpp:233
+#, c-format
+msgid ""
+"Invalid call to Object.addProperty() - setter is not null and not an AS "
+"function (%s)"
+msgstr ""
+
+#: libcore/asobj/Object.cpp:257
+#, c-format
+msgid ""
+"Invalid call to Object.registerClass(%s) - expected 2 arguments (<symbol>, "
+"<constructor>)"
+msgstr ""
+
+#: libcore/asobj/Object.cpp:274
+#, c-format
+msgid ""
+"Invalid call to Object.registerClass(%s) - first argument (symbol id) "
+"evaluates to empty string"
+msgstr ""
+
+#: libcore/asobj/Object.cpp:286
+#, c-format
+msgid ""
+"Invalid call to Object.registerClass(%s) - second argument (class) is not a "
+"function)"
+msgstr ""
+
+#: libcore/asobj/Object.cpp:298
+msgid ""
+"current environment has no target, wouldn't know where to look for symbol "
+"required for registerClass"
+msgstr ""
+
+#: libcore/asobj/Object.cpp:313
+#, c-format
+msgid "Object.registerClass('%s', %s): can't find exported symbol (id: %d)"
+msgstr ""
+
+#: libcore/asobj/Object.cpp:326
+#, c-format
+msgid ""
+"Object.registerClass(%s, %s): exported symbol is not a MovieClip symbol "
+"(sprite_definition), but a %s"
+msgstr ""
+
+#: libcore/asobj/Object.cpp:348
+msgid "Object.hasOwnProperty() requires one arg"
+msgstr ""
+
+#: libcore/asobj/Object.cpp:357
+#, c-format
+msgid "Invalid call to Object.hasOwnProperty('%s')"
+msgstr ""
+
+#: libcore/asobj/Object.cpp:373
+msgid "Object.isPropertyEnumerable() requires one arg"
+msgstr ""
+
+#: libcore/asobj/Object.cpp:382
+#, c-format
+msgid "Invalid call to Object.isPropertyEnumerable('%s')"
+msgstr ""
+
+#: libcore/asobj/Object.cpp:405
+msgid "Object.isPrototypeOf() requires one arg"
+msgstr ""
+
+#: libcore/asobj/Object.cpp:413
+#, c-format
+msgid "First arg to Object.isPrototypeOf(%s) is not an object"
+msgstr ""
+
+#: libcore/asobj/Object.cpp:432
+#, c-format
+msgid "Object.watch(%s): missing arguments"
+msgstr ""
+
+#: libcore/asobj/Object.cpp:443
+#, c-format
+msgid "Object.watch(%s): second argument is not a function"
+msgstr ""
+
+#: libcore/asobj/Object.cpp:469
+#, c-format
+msgid "Object.unwatch(%s): missing argument"
+msgstr ""
+
+#: libcore/asobj/LoadVars_as.cpp:145
+#, c-format
+msgid "new LoadVars(%s) - arguments discarded"
+msgstr ""
+
+#: libcore/asobj/TextFormat_as.cpp:408
+#, c-format
+msgid "Too many args (%d) passed to TextFormat"
+msgstr ""
+
+#: libcore/asobj/TextFormat_as.cpp:486
+msgid "Getter for textformat_tabStops"
+msgstr ""
+
+#: libcore/asobj/TextFormat_as.cpp:564
+msgid "TextFormat.getTextExtent requires at least one argument"
+msgstr ""
+
+#: libcore/asobj/TextFormat_as.cpp:776
+#, c-format
+msgid "Uknown alignment value: %d, take as left"
+msgstr ""
+
+#: libcore/asobj/TextFormat_as.cpp:791
+#, c-format
+msgid "Unknown display value: %d "
+msgstr ""
+
+#: libcore/asobj/TextField_as.cpp:218
+#, c-format
+msgid "createTextField called with %d args, expected 6 - returning undefined"
+msgstr ""
+
+#: libcore/asobj/TextField_as.cpp:232
+#, c-format
+msgid "createTextField: negative width (%d) - reverting sign"
+msgstr ""
+
+#: libcore/asobj/TextField_as.cpp:242
+#, c-format
+msgid "createTextField: negative height (%d) - reverting sign"
+msgstr ""
+
+#: libcore/asobj/TextField_as.cpp:436
#, c-format
msgid "Attempt to set length property of TextField %s"
msgstr ""
@@ -2855,153 +2945,150 @@ msgid ""
"TextField.replaceText(%s): endIndex out of range - taking as end of string"
msgstr ""
-#: libcore/asobj/NetConnection_as.cpp:440
+#: libcore/asobj/Sound_as.cpp:431
#, c-format
-msgid "Gnash is not allowed to open this URL: %s"
+msgid "Could not create audio decoder: %s"
msgstr ""
-#: libcore/asobj/NetConnection_as.cpp:496
-#, c-format
-msgid "Gnash is not allowed to connect to %s"
+#: libcore/asobj/Sound_as.cpp:439
+msgid "No audio in Sound input."
msgstr ""
-#: libcore/asobj/NetConnection_as.cpp:517
+#: libcore/asobj/Sound_as.cpp:593
#, c-format
-msgid "NetConnection.connect(%s): unsupported connection protocol"
+msgid "Gnash could not open this URL: %s"
msgstr ""
-#: libcore/asobj/NetConnection_as.cpp:523
+#: libcore/asobj/Sound_as.cpp:604
#, c-format
-msgid "NetConnection.connect(%s): unknown connection protocol"
+msgid "Unable to create parser for Sound at %s"
msgstr ""
-#: libcore/asobj/NetConnection_as.cpp:569
-msgid "NetConnection.call: can't call while not connected"
+#: libcore/asobj/Sound_as.cpp:694
+msgid "No sound handler, nothing to start..."
msgstr ""
-#: libcore/asobj/NetConnection_as.cpp:658
-msgid "NetConnection.call(): needs at least one argument"
+#: libcore/asobj/Sound_as.cpp:701
+msgid "No MediaParser initialized, can't start an external sound"
msgstr ""
-#: libcore/asobj/NetConnection_as.cpp:681
-#, c-format
-msgid "NetConnection.call(%s): second argument must be an object"
+#: libcore/asobj/Sound_as.cpp:707
+msgid "Sound.start() has no effect on a streaming Sound"
msgstr ""
-#: libcore/asobj/NetConnection_as.cpp:771
-msgid "NetConnection.connect(): needs at least one argument"
+#: libcore/asobj/Sound_as.cpp:755
+msgid "No sound handler, nothing to stop..."
msgstr ""
-#: libcore/asobj/NetConnection_as.cpp:793
-#, c-format
-msgid "NetConnection.connect(%s): args after the first are not supported"
+#: libcore/asobj/Sound_as.cpp:785
+msgid "No sound handler, can't check duration..."
msgstr ""
-#: libcore/asobj/NetConnection_as.cpp:808
-msgid "NetConnection.addHeader()"
+#: libcore/asobj/Sound_as.cpp:810
+msgid ""
+"No sound handler, can't check position (we're likely not playing anyway)..."
msgstr ""
-#: libcore/asobj/NetConnection_as.cpp:892
-msgid "Invoke buffer too short"
+#: libcore/asobj/Sound_as.cpp:878
+#, c-format
+msgid "No samples decoded from input of %d bytes"
msgstr ""
-#: libcore/asobj/NetConnection_as.cpp:899
-msgid "Invoke argument not present"
+#: libcore/asobj/Sound_as.cpp:979
+#, c-format
+msgid "new Sound(%d) : args after first one ignored"
msgstr ""
-#: libcore/asobj/NetConnection_as.cpp:990
+#: libcore/asobj/Sound_as.cpp:993
#, c-format
-msgid "Unknown HTTP Remoting response identifier '%s'"
+msgid ""
+"new Sound(%s) : first argument isn't null or undefined, and isn't a "
+"DisplayObject. We'll take as an invalid DisplayObject ref."
msgstr ""
-#: libcore/asobj/NetConnection_as.cpp:1006
-#, c-format
-msgid "Unsupported HTTP Remoting response callback: '%s' (size %d)"
+#: libcore/asobj/Sound_as.cpp:1011
+msgid "-- start sound"
msgstr ""
-#: libcore/asobj/NetConnection_as.cpp:1155
-#, c-format
-msgid "Error parsing server AMF: %s"
+#: libcore/asobj/Sound_as.cpp:1033
+msgid "-- stop sound "
msgstr ""
-#: libcore/asobj/NetConnection_as.cpp:1202
+#: libcore/asobj/Sound_as.cpp:1049 libcore/asobj/Sound_as.cpp:1104
#, c-format
-msgid "Could not serialize NetConnection.call argument %d"
+msgid "No such export '%s'"
msgstr ""
-#: libcore/asobj/NetConnection_as.cpp:1230
-msgid "Sanity failed. no string method in invoke packet"
+#: libcore/asobj/Sound_as.cpp:1058
+#, c-format
+msgid "Export '%s' is not a sound"
msgstr ""
-#: libcore/asobj/NetConnection_as.cpp:1277
-msgid "Server called _onbwcheck without a callback"
+#: libcore/asobj/Sound_as.cpp:1074
+msgid "-- attach sound"
msgstr ""
-#: libcore/asobj/NetConnection_as.cpp:1307
-msgid "RTMP server sent error"
+#: libcore/asobj/Sound_as.cpp:1079
+msgid "attach sound needs one argument"
msgstr ""
-#: libcore/asobj/Function_as.cpp:105
-msgid "Function.apply() called with no args"
+#: libcore/asobj/Sound_as.cpp:1089
+msgid "attachSound needs a non-empty string"
msgstr ""
-#: libcore/asobj/Function_as.cpp:129
+#: libcore/asobj/Sound_as.cpp:1113
#, c-format
-msgid ""
-"Function.apply() got %d args, expected at most 2 -- discarding the ones in "
-"excess"
+msgid "Export '%s'is not a sound"
msgstr ""
-#: libcore/asobj/Array_as.cpp:535
-#, c-format
-msgid "Unhandled sort flags: %d (0x%X)"
+#: libcore/asobj/Sound_as.cpp:1148
+msgid "Sound.getPan()"
msgstr ""
-#: libcore/asobj/Array_as.cpp:934
-msgid "Array.splice() needs at least 1 argument, call ignored"
+#: libcore/asobj/Sound_as.cpp:1163
+msgid "Sound.setDuration()"
msgstr ""
-#: libcore/asobj/Array_as.cpp:957
-#, c-format
-msgid "Array.splice(%d,%d): negative length given, call ignored"
+#: libcore/asobj/Sound_as.cpp:1178
+msgid "Sound.setPosition()"
msgstr ""
-#: libcore/asobj/Array_as.cpp:1055
-msgid "Sort called with invalid arguments."
+#: libcore/asobj/Sound_as.cpp:1185
+msgid "Sound.getTransform()"
msgstr ""
-#: libcore/asobj/Array_as.cpp:1199
-msgid "SortOn called with invalid arguments."
+#: libcore/asobj/Sound_as.cpp:1198
+#, c-format
+msgid "Sound.getVolume(%s) : arguments ignored"
msgstr ""
-#: libcore/asobj/Array_as.cpp:1389
-msgid ""
-"More than 2 arguments to Array.slice, and I don't know what to do with "
-"them. Ignoring them"
+#: libcore/asobj/Sound_as.cpp:1214
+msgid "Sound.loadSound() needs at least 1 argument"
msgstr ""
-#: libcore/asobj/System_as.cpp:310
-msgid "System.security.allowDomain"
+#: libcore/asobj/Sound_as.cpp:1229
+#, c-format
+msgid "Sound.loadSound(%s): arguments after first 2 discarded"
msgstr ""
-#: libcore/asobj/System_as.cpp:321
-msgid "System.security.allowInsecureDomain"
+#: libcore/asobj/Sound_as.cpp:1243
+msgid "Sound.setPan()"
msgstr ""
-#: libcore/asobj/System_as.cpp:329
-msgid "System.security.loadPolicyFile"
+#: libcore/asobj/Sound_as.cpp:1250
+msgid "Sound.setTransform()"
msgstr ""
-#: libcore/asobj/System_as.cpp:350
-msgid "System.showSettings"
+#: libcore/asobj/Sound_as.cpp:1259
+msgid "set volume of sound needs one argument"
msgstr ""
-#: libcore/asobj/System_as.cpp:367
-msgid "System.exactSettings"
+#: libcore/asobj/Sound_as.cpp:1274
+msgid "Sound.checkPolicyFile"
msgstr ""
-#: libcore/asobj/System_as.cpp:385
-msgid "System.useCodepage"
+#: libcore/asobj/Sound_as.cpp:1287
+msgid "Sound.areSoundsInaccessible()"
msgstr ""
#: libcore/asobj/Key_as.cpp:40
@@ -3021,1371 +3108,1337 @@ msgstr ""
msgid "Key.isToggled"
msgstr ""
-#: libcore/asobj/Object.cpp:148
-msgid "Too many args to Object constructor"
+#: libcore/asobj/XML_as.cpp:467
+msgid "XML data is empty"
msgstr ""
-#: libcore/asobj/Object.cpp:192
-#, c-format
-msgid ""
-"Invalid call to Object.addProperty(%s) - expected 3 arguments (<name>, "
-"<getter>, <setter>)"
+#: libcore/asobj/XML_as.cpp:742
+msgid "no text for text node creation"
msgstr ""
-#: libcore/asobj/Object.cpp:209
-msgid "Invalid call to Object.addProperty() - empty property name"
+#: libcore/asobj/XML_as.cpp:755
+msgid "XML.parseXML() needs one argument"
msgstr ""
-#: libcore/asobj/Object.cpp:219
-msgid "Invalid call to Object.addProperty() - getter is not an AS function"
+#: libcore/asobj/AsBroadcaster.cpp:233
+msgid "AsBroadcaster.initialize() requires one argument, none given"
msgstr ""
-#: libcore/asobj/Object.cpp:233
+#: libcore/asobj/AsBroadcaster.cpp:243
#, c-format
-msgid ""
-"Invalid call to Object.addProperty() - setter is not null and not an AS "
-"function (%s)"
+msgid "AsBroadcaster.initialize(%s): first arg is not an object"
msgstr ""
-#: libcore/asobj/Object.cpp:257
+#: libcore/asobj/AsBroadcaster.cpp:252
#, c-format
msgid ""
-"Invalid call to Object.registerClass(%s) - expected 2 arguments (<symbol>, "
-"<constructor>)"
+"AsBroadcaster.initialize(%s): first arg is an object but doesn't cast to one "
+"(dangling DisplayObject ref?)"
msgstr ""
-#: libcore/asobj/Object.cpp:274
+#: libcore/asobj/AsBroadcaster.cpp:282 libcore/asobj/AsBroadcaster.cpp:327
+#: libcore/asobj/AsBroadcaster.cpp:393
#, c-format
-msgid ""
-"Invalid call to Object.registerClass(%s) - first argument (symbol id) "
-"evaluates to empty string"
+msgid "%p.addListener(%s): this object has no _listeners member"
msgstr ""
-#: libcore/asobj/Object.cpp:286
+#: libcore/asobj/AsBroadcaster.cpp:293 libcore/asobj/AsBroadcaster.cpp:338
+#: libcore/asobj/AsBroadcaster.cpp:404
#, c-format
-msgid ""
-"Invalid call to Object.registerClass(%s) - second argument (class) is not a "
-"function)"
-msgstr ""
-
-#: libcore/asobj/Object.cpp:298
-msgid ""
-"current environment has no target, wouldn't know where to look for symbol "
-"required for registerClass"
+msgid "%p.addListener(%s): this object's _listener isn't an object: %s"
msgstr ""
-#: libcore/asobj/Object.cpp:313
+#: libcore/asobj/AsBroadcaster.cpp:415
#, c-format
-msgid "Object.registerClass('%s', %s): can't find exported symbol (id: %d)"
+msgid "%p.broadcastMessage() needs an argument"
msgstr ""
-#: libcore/asobj/Object.cpp:326
+#: libcore/asobj/MovieClipLoader.cpp:105
#, c-format
-msgid ""
-"Object.registerClass(%s, %s): exported symbol is not a MovieClip symbol "
-"(sprite_definition), but a %s"
+msgid "MovieClipLoader.loadClip(%s): missing arguments"
msgstr ""
-#: libcore/asobj/Object.cpp:348
-msgid "Object.hasOwnProperty() requires one arg"
+#: libcore/asobj/MovieClipLoader.cpp:114
+#, c-format
+msgid "MovieClipLoader.loadClip(%s): first argument must be a string"
msgstr ""
-#: libcore/asobj/Object.cpp:357
+#: libcore/asobj/MovieClipLoader.cpp:132
#, c-format
-msgid "Invalid call to Object.hasOwnProperty('%s')"
+msgid "Could not find target %s (evaluated from %s)"
msgstr ""
-#: libcore/asobj/Object.cpp:373
-msgid "Object.isPropertyEnumerable() requires one arg"
+#: libcore/asobj/MovieClipLoader.cpp:149
+#, c-format
+msgid "MovieClipLoader.unloadClip(%s): expected at least one argument"
msgstr ""
-#: libcore/asobj/Object.cpp:382
+#: libcore/asobj/MovieClipLoader.cpp:156
#, c-format
-msgid "Invalid call to Object.isPropertyEnumerable('%s')"
+msgid "MovieClipLoader.unloadClip: %s"
msgstr ""
-#: libcore/asobj/Object.cpp:405
-msgid "Object.isPrototypeOf() requires one arg"
+#: libcore/asobj/MovieClipLoader.cpp:180
+msgid "MovieClipLoader.getProgress(): missing argument"
msgstr ""
-#: libcore/asobj/Object.cpp:413
+#: libcore/asobj/MovieClipLoader.cpp:189
#, c-format
-msgid "First arg to Object.isPrototypeOf(%s) is not an object"
+msgid "MovieClipLoader.getProgress(%s): first argument is not an object"
msgstr ""
-#: libcore/asobj/Object.cpp:432
+#: libcore/asobj/MovieClipLoader.cpp:198
#, c-format
-msgid "Object.watch(%s): missing arguments"
+msgid "MovieClipLoader.getProgress(%s): first argument is not an sprite"
msgstr ""
-#: libcore/asobj/Object.cpp:443
-#, c-format
-msgid "Object.watch(%s): second argument is not a function"
+#: libcore/asobj/Stage_as.cpp:146
+msgid "Stage.width is a read-only property!"
msgstr ""
-#: libcore/asobj/Object.cpp:469
-#, c-format
-msgid "Object.unwatch(%s): missing argument"
+#: libcore/asobj/Stage_as.cpp:163
+msgid "Stage.height is a read-only property!"
msgstr ""
-#: libcore/asobj/String_as.cpp:451
-msgid "string.slice() called with end < start"
+#: libcore/asobj/Stage_as.cpp:202
+msgid "Stage.showMenu implemented by setting gnashrc option and for gtk only"
msgstr ""
-#: libcore/asobj/String_as.cpp:496
-#, c-format
-msgid "String.indexOf(%s, %s): second argument casts to invalid offset (%d)"
+#: libcore/asobj/Color_as.cpp:153
+msgid "Color.setRGB() : missing argument"
msgstr ""
-#: libcore/asobj/String_as.cpp:569
-msgid "string.charCodeAt needs one argument"
+#: libcore/asobj/Color_as.cpp:186
+msgid "Color.setTransform() : missing argument"
msgstr ""
-#: libcore/asobj/String_as.cpp:578
-msgid "string.charCodeAt has more than one argument"
+#: libcore/asobj/Color_as.cpp:196
+#, c-format
+msgid "Color.setTransform(%s) : first argument doesn't cast to an object"
msgstr ""
-#: libcore/asobj/String_as.cpp:756
-msgid "No fn_call::callerDef in string function call"
+#: libcore/asobj/Number_as.cpp:78
+#, c-format
+msgid "Number.toString(%s): radix must be in the 2..36 range (%d is invalid)"
msgstr ""
-#: libcore/asobj/String_as.cpp:780
-msgid "%1%(%2%) needs %3% argument(s)"
+#: libcore/asobj/Microphone_as.cpp:252
+msgid "No MediaHandler exists! Cannot create a Microphone object"
msgstr ""
-#: libcore/asobj/String_as.cpp:791
-msgid "%1%(%2%) has more than %3% argument(s)"
+#: libcore/asobj/Microphone_as.cpp:284
+msgid "Microphone.gain(): wrong number of parameters passed"
msgstr ""
-#: libcore/asobj/flash/external/ExternalInterface_as.cpp:292
-#, c-format
-msgid "VAL: %s"
+#: libcore/asobj/Microphone_as.cpp:300
+msgid "Microphone.setRate: wrong number of parameters passed"
msgstr ""
-#: libcore/asobj/flash/external/ExternalInterface_as.cpp:343
-#, c-format
-msgid ""
-"ExternalInterface path %s is outside the SWF domain %s. Cannot access this "
-"object."
+#: libcore/asobj/Microphone_as.cpp:313
+msgid "Microphone::activityLevel only has default value (-1)"
msgstr ""
-#: libcore/asobj/flash/net/FileReferenceList_as.cpp:91
-#, c-format
-msgid "FileReferenceList(%s): %s"
+#: libcore/asobj/Microphone_as.cpp:318
+msgid "Attempt to set activity property of Microphone"
msgstr ""
-#: libcore/asobj/flash/net/FileReferenceList_as.cpp:92
-#: libcore/asobj/flash/net/FileReference_as.cpp:160
-#: libcore/asobj/flash/geom/Transform_as.cpp:357
-msgid "arguments discarded"
+#: libcore/asobj/Microphone_as.cpp:353
+msgid "Microphone::muted is always false (always allows access)"
msgstr ""
-#: libcore/asobj/flash/net/FileReference_as.cpp:159
-#, c-format
-msgid "FileReference(%s): %s"
+#: libcore/asobj/Microphone_as.cpp:413
+msgid "Microphone::silenceTimeout can be set, but is unimplemented"
msgstr ""
-#: libcore/asobj/flash/geom/Rectangle_as.cpp:153
+#: libcore/asobj/Microphone_as.cpp:436
#, c-format
-msgid "flash.geom.Rectangle(%s): %s"
+msgid "%s: Too many arguments"
msgstr ""
-#: libcore/asobj/flash/geom/Rectangle_as.cpp:154
-#: libcore/asobj/flash/geom/Point_as.cpp:427
-#: libcore/asobj/flash/geom/Point_as.cpp:511
-#: libcore/asobj/flash/geom/Point_as.cpp:596
-#: libcore/asobj/flash/geom/Point_as.cpp:604
-#: libcore/asobj/MovieClip_as.cpp:532
-msgid "missing arguments"
+#: libcore/asobj/Date_as.cpp:463
+msgid "Date constructor called with more than 7 arguments"
msgstr ""
-#: libcore/asobj/flash/geom/Rectangle_as.cpp:471
-#: libcore/asobj/flash/geom/Rectangle_as.cpp:545
-#: libcore/asobj/flash/geom/Rectangle_as.cpp:603
-#: libcore/asobj/flash/geom/Matrix_as.cpp:421
-#: libcore/asobj/flash/geom/Matrix_as.cpp:747
-msgid "Failed to construct flash.geom.Point!"
+#: libcore/asobj/Date_as.cpp:724
+msgid "Date.setTime needs one argument"
msgstr ""
-#: libcore/asobj/flash/geom/Rectangle_as.cpp:483
-#: libcore/asobj/flash/geom/Rectangle_as.cpp:557
-#: libcore/asobj/flash/geom/Rectangle_as.cpp:616
-#: libcore/asobj/flash/geom/Point_as.cpp:411
-#, c-format
-msgid "Attempt to set read-only property %s"
+#: libcore/asobj/Date_as.cpp:744
+msgid "Date.setTime was called with more than one argument"
msgstr ""
-#: libcore/asobj/flash/geom/Point_as.cpp:119
-#: libcore/asobj/flash/geom/Point_as.cpp:190
-#: libcore/asobj/flash/geom/Point_as.cpp:238
-#: libcore/asobj/flash/geom/Point_as.cpp:323
-#, c-format
-msgid "%s: missing arguments"
+#: libcore/asobj/Date_as.cpp:835
+msgid "Date.setFullYear needs one argument"
msgstr ""
-#: libcore/asobj/flash/geom/Point_as.cpp:128
-#: libcore/asobj/flash/geom/Point_as.cpp:138
-#: libcore/asobj/flash/geom/Point_as.cpp:148
-#: libcore/asobj/flash/geom/Point_as.cpp:156
-#: libcore/asobj/flash/geom/Point_as.cpp:332
-#: libcore/asobj/flash/geom/Point_as.cpp:342
-#: libcore/asobj/flash/geom/Point_as.cpp:352
-#: libcore/asobj/flash/geom/Point_as.cpp:360
-#, c-format
-msgid "Point.add(%s): %s"
+#: libcore/asobj/Date_as.cpp:875
+msgid "Date.setYear needs one argument"
msgstr ""
-#: libcore/asobj/flash/geom/Point_as.cpp:129
-#: libcore/asobj/flash/geom/Point_as.cpp:249
-#: libcore/asobj/flash/geom/Point_as.cpp:333
-msgid "arguments after first discarded"
+#: libcore/asobj/Date_as.cpp:898
+msgid "Date.setYear was called with more than three arguments"
msgstr ""
-#: libcore/asobj/flash/geom/Point_as.cpp:139
-#: libcore/asobj/flash/geom/Point_as.cpp:343
-#: libcore/asobj/flash/geom/Point_as.cpp:532
-msgid "first argument doesn't cast to object"
+#: libcore/asobj/Date_as.cpp:929
+#, c-format
+msgid "Date.set%sMonth needs one argument"
msgstr ""
-#: libcore/asobj/flash/geom/Point_as.cpp:149
-msgid "first argument cast to object doesn't contain an 'x' member"
+#: libcore/asobj/Date_as.cpp:962
+#, c-format
+msgid "Date.set%sMonth was called with more than three arguments"
msgstr ""
-#: libcore/asobj/flash/geom/Point_as.cpp:157
-msgid "first argument cast to object doesn't contain an 'y' member"
+#: libcore/asobj/Date_as.cpp:984
+#, c-format
+msgid "Date.set%sDate needs one argument"
msgstr ""
-#: libcore/asobj/flash/geom/Point_as.cpp:200
+#: libcore/asobj/Date_as.cpp:998
#, c-format
-msgid "Point.equals(%s): %s"
+msgid "Date.set%sDate was called with more than one argument"
msgstr ""
-#: libcore/asobj/flash/geom/Point_as.cpp:201
-#: libcore/asobj/flash/geom/Point_as.cpp:447
-msgid "First arg must be an object"
+#: libcore/asobj/Date_as.cpp:1025
+#, c-format
+msgid "Date.set%sHours needs one argument"
msgstr ""
-#: libcore/asobj/flash/geom/Point_as.cpp:211
-#: libcore/asobj/flash/geom/Point_as.cpp:457
+#: libcore/asobj/Date_as.cpp:1044
#, c-format
-msgid "Point.equals(%s): %s %s"
+msgid "Date.set%sHours was called with more than four arguments"
msgstr ""
-#: libcore/asobj/flash/geom/Point_as.cpp:212
-#: libcore/asobj/flash/geom/Point_as.cpp:458
-msgid "First arg must be an instance of"
+#: libcore/asobj/Date_as.cpp:1070
+#, c-format
+msgid "Date.set%sMinutes needs one argument"
msgstr ""
-#: libcore/asobj/flash/geom/Point_as.cpp:248
+#: libcore/asobj/Date_as.cpp:1088 libcore/asobj/Date_as.cpp:1131
#, c-format
-msgid "Point.normalize(%s): %s"
+msgid "Date.set%sMinutes was called with more than three arguments"
msgstr ""
-#: libcore/asobj/flash/geom/Point_as.cpp:353
-msgid "first argument casted to object doesn't contain an 'x' member"
+#: libcore/asobj/Date_as.cpp:1111
+#, c-format
+msgid "Date.set%sSeconds needs one argument"
msgstr ""
-#: libcore/asobj/flash/geom/Point_as.cpp:361
-msgid "first argument casted to object doesn't contain an 'y' member"
+#: libcore/asobj/Date_as.cpp:1149
+#, c-format
+msgid "Date.set%sMilliseconds needs one argument"
msgstr ""
-#: libcore/asobj/flash/geom/Point_as.cpp:426
-#: libcore/asobj/flash/geom/Point_as.cpp:436
-#: libcore/asobj/flash/geom/Point_as.cpp:446
+#: libcore/asobj/Date_as.cpp:1166
#, c-format
-msgid "Point.distance(%s): %s"
+msgid "Date.set%sMilliseconds was called with more than one argument"
msgstr ""
-#: libcore/asobj/flash/geom/Point_as.cpp:437
-msgid "arguments after first two discarded"
+#: libcore/asobj/Date_as.cpp:1228
+msgid "Date.UTC needs one argument"
msgstr ""
-#: libcore/asobj/flash/geom/Point_as.cpp:510
-#: libcore/asobj/flash/geom/Point_as.cpp:520
-#: libcore/asobj/flash/geom/Point_as.cpp:531
-#: libcore/asobj/flash/geom/Point_as.cpp:547
+#: libcore/asobj/Date_as.cpp:1252
+msgid "Date.UTC was called with more than 7 arguments"
+msgstr ""
+
+#: libcore/asobj/NetStream_as.cpp:315
#, c-format
-msgid "Point.interpolate(%s): %s"
+msgid "::pause(%d) called "
msgstr ""
-#: libcore/asobj/flash/geom/Point_as.cpp:521
-msgid "arguments after first three discarded"
+#: libcore/asobj/NetStream_as.cpp:371
+msgid "No NetConnection associated with this NetStream, won't play"
msgstr ""
-#: libcore/asobj/flash/geom/Point_as.cpp:548
-msgid "second argument doesn't cast to object"
+#: libcore/asobj/NetStream_as.cpp:382
+msgid "NetConnection is not connected. Won't play."
msgstr ""
-#: libcore/asobj/flash/geom/Point_as.cpp:595
-#: libcore/asobj/flash/geom/Point_as.cpp:604
+#: libcore/asobj/NetStream_as.cpp:395
#, c-format
-msgid "Point.polar(%s): %s"
+msgid "Couldn't load URL %s"
msgstr ""
-#: libcore/asobj/flash/geom/ColorTransform_as.cpp:365
+#: libcore/asobj/NetStream_as.cpp:402
#, c-format
-msgid ""
-"ColorTransform(%s): not enough arguments (need 8). Constructing with default "
-"values"
+msgid "Connecting to movie: %s"
msgstr ""
-#: libcore/asobj/flash/geom/ColorTransform_as.cpp:380
+#: libcore/asobj/NetStream_as.cpp:408
#, c-format
-msgid "ColorTransform(%s): discarding extra arguments"
+msgid "NetStream.play(%s): failed starting playback"
msgstr ""
-#: libcore/asobj/flash/geom/Matrix_as.cpp:184
-#, c-format
-msgid "Matrix.concat(%s): needs one argument"
+#: libcore/asobj/NetStream_as.cpp:431
+msgid "NetStream_as::initVideoDecoder: hot-plugging video consumer"
msgstr ""
-#: libcore/asobj/flash/geom/Matrix_as.cpp:198
+#: libcore/asobj/NetStream_as.cpp:436
#, c-format
-msgid "Matrix.concat(%s): needs a Matrix object"
+msgid "NetStream: Could not create Video decoder: %s"
msgstr ""
-#: libcore/asobj/flash/geom/Matrix_as.cpp:255
-#, c-format
-msgid "Matrix.createBox(%s): needs at least two arguments"
+#: libcore/asobj/NetStream_as.cpp:460
+msgid "NetStream_as::initAudioDecoder: hot-plugging audio consumer"
msgstr ""
-#: libcore/asobj/flash/geom/Matrix_as.cpp:314
+#: libcore/asobj/NetStream_as.cpp:467
#, c-format
-msgid "Matrix.createGradientBox(%s): needs at least two arguments"
+msgid "Could not create Audio decoder: %s"
msgstr ""
-#: libcore/asobj/flash/geom/Matrix_as.cpp:388
+#: libcore/asobj/NetStream_as.cpp:493
#, c-format
-msgid "Matrix.deltaTransformPoint(%s): needs one argument"
+msgid "Gnash could not get stream '%s' from NetConnection"
msgstr ""
-#: libcore/asobj/flash/geom/Matrix_as.cpp:402
+#: libcore/asobj/NetStream_as.cpp:503
+msgid "No Media handler registered, can't parse NetStream input"
+msgstr ""
+
+#: libcore/asobj/NetStream_as.cpp:511
+msgid "Unable to create parser for NetStream input"
+msgstr ""
+
+#: libcore/asobj/NetStream_as.cpp:536
#, c-format
-msgid "Matrix.deltaTransformPoint(%s): needs an object"
+msgid "%p.startPlayback: playHead position reset to 0"
msgstr ""
-#: libcore/asobj/flash/geom/Matrix_as.cpp:523
+#: libcore/asobj/NetStream_as.cpp:542
+msgid "Setting playStart status"
+msgstr ""
+
+#: libcore/asobj/NetStream_as.cpp:561
+msgid "getDecodedVideoFrame: no parser available"
+msgstr ""
+
+#: libcore/asobj/NetStream_as.cpp:570
#, c-format
-msgid "Matrix.rotate(%s): needs one argument"
+msgid ""
+"getDecodedVideoFrame(%d): no more video frames in input "
+"(nextVideoFrameTimestamp returned false, parsingComplete=%d)"
msgstr ""
-#: libcore/asobj/flash/geom/Matrix_as.cpp:599
-#: libcore/asobj/flash/geom/Matrix_as.cpp:770
+#: libcore/asobj/NetStream_as.cpp:581
+msgid ""
+"getDecodedVideoFrame setting playStop status (parsing complete and "
+"nextVideoFrameTimestamp() returned false)"
+msgstr ""
+
+#: libcore/asobj/NetStream_as.cpp:592
#, c-format
-msgid "Matrix.translate(%s): needs two arguments"
+msgid "%p.getDecodedVideoFrame(%d): next video frame is in the future (%d)"
msgstr ""
-#: libcore/asobj/flash/geom/Matrix_as.cpp:704
+#: libcore/asobj/NetStream_as.cpp:603
#, c-format
-msgid "Matrix.translate(%s): needs one argument"
+msgid ""
+"nextVideoFrameTimestamp returned true (%d), but decodeNextVideoFrame "
+"returned null, I don't think this should ever happen"
msgstr ""
-#: libcore/asobj/flash/geom/Matrix_as.cpp:717
+#: libcore/asobj/NetStream_as.cpp:613
#, c-format
-msgid "Matrix.transformPoint(%s): needs an object"
+msgid ""
+"%p.getDecodedVideoFrame(%d): last video frame decoded (should set playback "
+"status to STOP?)"
msgstr ""
-#: libcore/asobj/flash/geom/Matrix_as.cpp:729
+#: libcore/asobj/NetStream_as.cpp:621
#, c-format
-msgid "Matrix.transformPoint(%s): object must be a Point"
+msgid ""
+"%p.getDecodedVideoFrame(%d): next video frame is in the future, we'll return "
+"this one"
msgstr ""
-#: libcore/asobj/flash/geom/Transform_as.cpp:122
-#: libcore/asobj/flash/geom/Transform_as.cpp:198
-msgid "Failed to construct flash.geom.ColorTransform!"
+#: libcore/asobj/NetStream_as.cpp:641
+msgid "decodeNextVideoFrame: no parser available"
msgstr ""
-#: libcore/asobj/flash/geom/Transform_as.cpp:145
+#: libcore/asobj/NetStream_as.cpp:648
#, c-format
-msgid "Transform.colorTransform(%s): extra arguments discarded"
+msgid "%p.decodeNextVideoFrame(): no more video frames in input"
msgstr ""
-#: libcore/asobj/flash/geom/Transform_as.cpp:155
-#, c-format
-msgid "Transform.colorTransform(%s): argument is not an object"
+#: libcore/asobj/NetStream_as.cpp:664
+msgid "Error decoding encoded video frame in NetStream input"
msgstr ""
-#: libcore/asobj/flash/geom/Transform_as.cpp:170
+#: libcore/asobj/NetStream_as.cpp:680
#, c-format
-msgid "Transform.colorTransform(%s): argument is not a ColorTransform"
+msgid "%p.decodeNextAudioFrame: no more video frames in input"
msgstr ""
-#: libcore/asobj/flash/geom/Transform_as.cpp:236
-msgid "Failed to construct flash.geom.Matrix!"
+#: libcore/asobj/NetStream_as.cpp:710
+#, c-format
+msgid ""
+"NetStream_as::decodeNextAudioFrame: %d bytes of encoded audio decoded to %d "
+"bytes"
msgstr ""
-#: libcore/asobj/flash/geom/Transform_as.cpp:305
+#: libcore/asobj/NetStream_as.cpp:731
#, c-format
-msgid "Transform.matrix(%s): extra arguments discarded"
+msgid "NetStream_as::seek(%d): no parser, no party"
msgstr ""
-#: libcore/asobj/flash/geom/Transform_as.cpp:315
-#, c-format
-msgid "Transform.matrix(%s): argument is not an object"
+#: libcore/asobj/NetStream_as.cpp:751
+msgid "Setting invalidTime status"
msgstr ""
-#: libcore/asobj/flash/geom/Transform_as.cpp:346
+#: libcore/asobj/NetStream_as.cpp:758
#, c-format
-msgid "flash.geom.Transform(%s): needs one argument"
+msgid "_parser->seek(%d) returned %d"
msgstr ""
-#: libcore/asobj/flash/geom/Transform_as.cpp:356
+#: libcore/asobj/NetStream_as.cpp:765
#, c-format
-msgid "Transform(%s): %s"
+msgid "%p.seek: playHead position set to %d"
msgstr ""
-#: libcore/asobj/flash/display/BitmapData_as.cpp:816
+#: libcore/asobj/NetStream_as.cpp:803
+#, c-format
msgid ""
-"BitmapData.copyChannel(). Multiple destination channels are not supported"
+"%p.refreshAudioBuffer: doing nothing as playhead is paused - bufferLength=%d/"
+"%d"
msgstr ""
-#: libcore/asobj/flash/display/BitmapData_as.cpp:842
+#: libcore/asobj/NetStream_as.cpp:812
+#, c-format
msgid ""
-"BitmapData.copyChannel(): no part of source rectangleoverlaps with the "
-"source BitmapData"
+"%p.refreshAudioBuffer: doing nothing as current position was already decoded "
+"- bufferLength=%d/%d"
msgstr ""
-#: libcore/asobj/flash/display/BitmapData_as.cpp:856
+#: libcore/asobj/NetStream_as.cpp:824
+#, c-format
msgid ""
-"BitmapData.copyChannel(): destination area is wholly outside the destination "
-"BitmapData"
+"%p.refreshAudioBuffer: currentPosition=%d, playHeadState=%d, bufferLength="
+"%d, bufferTime=%d"
msgstr ""
-#: libcore/asobj/flash/display/BitmapData_as.cpp:914
-msgid "BitmapData.copyPixels(): arguments after the first three are discarded"
+#: libcore/asobj/NetStream_as.cpp:962
+#, c-format
+msgid "%p.pushDecodedAudioFrames(%d) : buffer overrun (%d/%d)."
msgstr ""
-#: libcore/asobj/flash/display/BitmapData_as.cpp:964
+#: libcore/asobj/NetStream_as.cpp:978
+#, c-format
msgid ""
-"BitmapData.copyPixels(): no part of source rectangleoverlaps with the source "
-"BitmapData"
+"%p.pushDecodedAudioFrames(%d): no more audio frames in input "
+"(nextAudioFrameTimestamp returned false, parsingComplete=%d)"
msgstr ""
-#: libcore/asobj/flash/display/BitmapData_as.cpp:978
+#: libcore/asobj/NetStream_as.cpp:989
msgid ""
-"BitmapData.copyPixels(): destination area is wholly outside the destination "
-"BitmapData"
+"pushDecodedAudioFrames setting playStop status (parsing complete and "
+"nextAudioFrameTimestamp returned false)"
msgstr ""
-#: libcore/asobj/flash/display/BitmapData_as.cpp:1064
+#: libcore/asobj/NetStream_as.cpp:1002
#, c-format
-msgid "BitmapData.draw(%s) requires at least one argument"
+msgid "%p.pushDecodedAudioFrames(%d): next audio frame is in the future (%d)"
msgstr ""
-#: libcore/asobj/flash/display/BitmapData_as.cpp:1076
-msgid "BitmapData.draw() with BitmapData argument"
+#: libcore/asobj/NetStream_as.cpp:1015
+#, c-format
+msgid ""
+"nextAudioFrameTimestamp returned true (%d), but decodeNextAudioFrame "
+"returned null, I don't think this should ever happen"
msgstr ""
-#: libcore/asobj/flash/display/BitmapData_as.cpp:1083
+#: libcore/asobj/NetStream_as.cpp:1024
#, c-format
-msgid "BitmapData.draw(%s): first argument must be a MovieClip"
+msgid "pushDecodedAudioFrames(%d): Decoded audio frame contains no samples"
msgstr ""
-#: libcore/asobj/flash/display/BitmapData_as.cpp:1120
+#: libcore/asobj/NetStream_as.cpp:1033
#, c-format
-msgid "BitmapData.fillRect(%s): needs an object"
+msgid "pushDecodedAudioFrames(%d) pushing %dth frame with timestamp %d"
msgstr ""
-#: libcore/asobj/flash/display/BitmapData_as.cpp:1157
-msgid "floodFill called on disposed BitmapData!"
+#: libcore/asobj/NetStream_as.cpp:1051
+msgid "resuming playback clock on audio consume"
msgstr ""
-#: libcore/asobj/flash/display/BitmapData_as.cpp:1231
-msgid "getPixel32 called on disposed BitmapData!"
+#: libcore/asobj/NetStream_as.cpp:1116
+#, c-format
+msgid ""
+"%p.refreshVideoFrame: doing nothing as playhead is paused - bufferLength=%d, "
+"bufferTime=%d"
msgstr ""
-#: libcore/asobj/flash/display/BitmapData_as.cpp:1361
-msgid "BitmapData.perlinNoise() stitch value"
+#: libcore/asobj/NetStream_as.cpp:1126
+#, c-format
+msgid ""
+"%p.refreshVideoFrame: doing nothing as current position was already decoded "
+"- bufferLength=%d, bufferTime=%d"
msgstr ""
-#: libcore/asobj/flash/display/BitmapData_as.cpp:1562
-msgid "Failed to construct flash.geom.Rectangle!"
+#: libcore/asobj/NetStream_as.cpp:1138
+#, c-format
+msgid ""
+"%p.refreshVideoFrame: currentPosition=%d, playHeadState=%d, bufferLength=%d, "
+"bufferTime=%d"
msgstr ""
-#: libcore/asobj/flash/display/BitmapData_as.cpp:1584
-msgid "BitmapData.loadBitmap requires one argument"
+#: libcore/asobj/NetStream_as.cpp:1152
+#, c-format
+msgid ""
+"%p.refreshVideoFrame(): no more video frames to decode (DEC_STOPPED, null "
+"from getDeodedVideoFrame)"
msgstr ""
-#: libcore/asobj/flash/display/BitmapData_as.cpp:1649
+#: libcore/asobj/NetStream_as.cpp:1161
+#, c-format
msgid ""
-"BitmapData constructor requires at least two arguments. Will not construct a "
-"BitmapData"
+"%p.refreshVideoFrame(): last video frame was good enough for current position"
msgstr ""
-#: libcore/asobj/flash/display/BitmapData_as.cpp:1663
+#: libcore/asobj/NetStream_as.cpp:1238
+#, c-format
msgid ""
-"BitmapData width and height must be between 1 and 2880. Will not construct a "
-"BitmapData"
+"%p.advance: buffer empty while decoding, setting buffer to buffering and "
+"pausing playback clock"
msgstr ""
-#: libcore/asobj/MovieClipLoader.cpp:105
-#, c-format
-msgid "MovieClipLoader.loadClip(%s): missing arguments"
+#: libcore/asobj/NetStream_as.cpp:1243
+msgid "Setting bufferEmpty status"
msgstr ""
-#: libcore/asobj/MovieClipLoader.cpp:114
+#: libcore/asobj/NetStream_as.cpp:1252
#, c-format
-msgid "MovieClipLoader.loadClip(%s): first argument must be a string"
+msgid "%p.advance : bufferLength=%d, parsing completed"
msgstr ""
-#: libcore/asobj/MovieClipLoader.cpp:132
+#: libcore/asobj/NetStream_as.cpp:1264
#, c-format
-msgid "Could not find target %s (evaluated from %s)"
+msgid "%p.advance: buffering - position=%d, buffer=%d/%d"
msgstr ""
-#: libcore/asobj/MovieClipLoader.cpp:149
+#: libcore/asobj/NetStream_as.cpp:1283
#, c-format
-msgid "MovieClipLoader.unloadClip(%s): expected at least one argument"
+msgid ""
+"%p.advance: buffer full (or parsing completed), resuming playback clock - "
+"position=%d, buffer=%d/%d"
msgstr ""
-#: libcore/asobj/MovieClipLoader.cpp:156
+#: libcore/asobj/NetStream_as.cpp:1304
#, c-format
-msgid "MovieClipLoader.unloadClip: %s"
+msgid "%p.advance: playHead position set to timestamp of first frame: %d"
msgstr ""
-#: libcore/asobj/MovieClipLoader.cpp:180
-msgid "MovieClipLoader.getProgress(): missing argument"
+#: libcore/asobj/NetStream_as.cpp:1311
+#, c-format
+msgid ""
+"%p.advance: playHead position is 0 and parser still doesn't have a frame to "
+"set it to"
msgstr ""
-#: libcore/asobj/MovieClipLoader.cpp:189
+#: libcore/asobj/NetStream_as.cpp:1351
#, c-format
-msgid "MovieClipLoader.getProgress(%s): first argument is not an object"
+msgid ""
+"Moving NetStream playhead from timestamp %d to timestamp %d as there are no "
+"video frames yet, audio buffer is empty and next audio frame timestamp is "
+"there (see bug #26687)"
msgstr ""
-#: libcore/asobj/MovieClipLoader.cpp:198
+#: libcore/asobj/NetStream_as.cpp:1453
+msgid "attachAuxStreamer called while already attached"
+msgstr ""
+
+#: libcore/asobj/NetStream_as.cpp:1464
#, c-format
-msgid "MovieClipLoader.getProgress(%s): first argument is not an sprite"
+msgid "Could not attach NetStream aux streamer to sound handler: %s"
msgstr ""
-#: libcore/asobj/Sound_as.cpp:420
+#: libcore/asobj/NetStream_as.cpp:1603
#, c-format
-msgid "Could not create audio decoder: %s"
+msgid ""
+"First argument to NetStream constructor doesn't cast to a NetConnection (%s)"
msgstr ""
-#: libcore/asobj/Sound_as.cpp:428
-msgid "No audio in Sound input."
+#: libcore/asobj/NetStream_as.cpp:1648
+msgid "NetStream_as play needs args"
msgstr ""
-#: libcore/asobj/Sound_as.cpp:581
+#: libcore/asobj/NetStream_as.cpp:1655
#, c-format
-msgid "Gnash could not open this URL: %s"
+msgid "NetStream.play(%s): stream is not connected"
msgstr ""
-#: libcore/asobj/Sound_as.cpp:592
-#, c-format
-msgid "Unable to create parser for Sound at %s"
+#: libcore/asobj/NetStream_as.cpp:1704
+msgid "NetStream.attachAudio"
msgstr ""
-#: libcore/asobj/Sound_as.cpp:676
-msgid "No sound handler, nothing to start..."
+#: libcore/asobj/NetStream_as.cpp:1715
+msgid "NetStream.attachVideo"
msgstr ""
-#: libcore/asobj/Sound_as.cpp:682
-msgid "No MediaParser initialized, can't start an external sound"
+#: libcore/asobj/NetStream_as.cpp:1726
+msgid "NetStream.publish"
msgstr ""
-#: libcore/asobj/Sound_as.cpp:688
-msgid "Sound.start() has no effect on a streaming Sound"
+#: libcore/asobj/NetStream_as.cpp:1737
+msgid "NetStream.receiveAudio"
msgstr ""
-#: libcore/asobj/Sound_as.cpp:735
-msgid "No sound handler, nothing to stop..."
+#: libcore/asobj/NetStream_as.cpp:1748
+msgid "NetStream.receiveVideo"
msgstr ""
-#: libcore/asobj/Sound_as.cpp:763
-msgid "No sound handler, can't check duration..."
+#: libcore/asobj/NetStream_as.cpp:1759
+msgid "NetStream.send"
msgstr ""
-#: libcore/asobj/Sound_as.cpp:788
-msgid ""
-"No sound handler, can't check position (we're likely not playing anyway)..."
+#: libcore/asobj/NetStream_as.cpp:1843
+msgid "NetStream.liveDelay"
msgstr ""
-#: libcore/asobj/Sound_as.cpp:855
-#, c-format
-msgid "No samples decoded from input of %d bytes"
+#: libcore/asobj/NetStream_as.cpp:1900
+msgid "Invalid AMF data in FLV tag"
msgstr ""
-#: libcore/asobj/Sound_as.cpp:955
-#, c-format
-msgid "new Sound(%d) : args after first one ignored"
+#: libcore/asobj/NetStream_as.cpp:1911
+msgid "Could not convert FLV metatag to as_value, passing undefined"
msgstr ""
-#: libcore/asobj/Sound_as.cpp:969
-#, c-format
-msgid ""
-"new Sound(%s) : first argument isn't null or undefined, and isn't a "
-"DisplayObject. We'll take as an invalid DisplayObject ref."
+#: libcore/asobj/LoadableObject.cpp:176
+msgid "XML.addRequestHeader: XML._customHeaders is not an object"
msgstr ""
-#: libcore/asobj/Sound_as.cpp:987
-msgid "-- start sound"
+#: libcore/asobj/LoadableObject.cpp:193
+msgid "XML.addRequestHeader requires at least one argument"
msgstr ""
-#: libcore/asobj/Sound_as.cpp:1012
-msgid "-- stop sound "
+#: libcore/asobj/LoadableObject.cpp:206
+msgid "XML.addRequestHeader: single argument is not an array"
msgstr ""
-#: libcore/asobj/Sound_as.cpp:1028 libcore/asobj/Sound_as.cpp:1083
+#: libcore/asobj/LoadableObject.cpp:222
#, c-format
-msgid "No such export '%s'"
+msgid "XML.addRequestHeader(%s): arguments after the second will be discarded"
msgstr ""
-#: libcore/asobj/Sound_as.cpp:1037
+#: libcore/asobj/LoadableObject.cpp:237
#, c-format
-msgid "Export '%s' is not a sound"
+msgid "XML.addRequestHeader(%s): both arguments must be a string"
msgstr ""
-#: libcore/asobj/Sound_as.cpp:1053
-msgid "-- attach sound"
+#: libcore/asobj/LoadableObject.cpp:304
+msgid "sendAndLoad() requires at least two arguments"
msgstr ""
-#: libcore/asobj/Sound_as.cpp:1058
-msgid "attach sound needs one argument"
-msgstr ""
-
-#: libcore/asobj/Sound_as.cpp:1068
-msgid "attachSound needs a non-empty string"
+#: libcore/asobj/LoadableObject.cpp:312
+msgid "sendAndLoad(): invalid empty URL"
msgstr ""
-#: libcore/asobj/Sound_as.cpp:1092
-#, c-format
-msgid "Export '%s'is not a sound"
+#: libcore/asobj/LoadableObject.cpp:319
+msgid "sendAndLoad(): invalid target (must be an XML or LoadVars object)"
msgstr ""
-#: libcore/asobj/Sound_as.cpp:1127
-msgid "Sound.getPan()"
+#: libcore/asobj/LoadableObject.cpp:397
+#, c-format
+msgid "Loading from URL: '%s'"
msgstr ""
-#: libcore/asobj/Sound_as.cpp:1142
-msgid "Sound.setDuration()"
+#: libcore/asobj/LoadableObject.cpp:417
+msgid "load() requires at least one argument"
msgstr ""
-#: libcore/asobj/Sound_as.cpp:1157
-msgid "Sound.setPosition()"
+#: libcore/asobj/LoadableObject.cpp:426
+msgid "load(): invalid empty URL"
msgstr ""
-#: libcore/asobj/Sound_as.cpp:1164
-msgid "Sound.getTransform()"
+#: libcore/asobj/Video_as.cpp:114
+msgid "attachVideo needs 1 arg"
msgstr ""
-#: libcore/asobj/Sound_as.cpp:1177
+#: libcore/asobj/Video_as.cpp:126
#, c-format
-msgid "Sound.getVolume(%s) : arguments ignored"
-msgstr ""
-
-#: libcore/asobj/Sound_as.cpp:1193
-msgid "Sound.loadSound() needs at least 1 argument"
+msgid "attachVideo(%s) first arg is not a NetStream instance"
msgstr ""
-#: libcore/asobj/Sound_as.cpp:1208
-#, c-format
-msgid "Sound.loadSound(%s): arguments after first 2 discarded"
+#: libcore/asobj/Video_as.cpp:139
+msgid "Video.deblocking"
msgstr ""
-#: libcore/asobj/Sound_as.cpp:1222
-msgid "Sound.setPan()"
+#: libcore/asobj/LocalConnection_as.cpp:279
+msgid "Attempting to write to disabled LocalConnection!"
msgstr ""
-#: libcore/asobj/Sound_as.cpp:1229
-msgid "Sound.setTransform()"
+#: libcore/asobj/LocalConnection_as.cpp:288
+msgid "Failed to attach shared memory segment"
msgstr ""
-#: libcore/asobj/Sound_as.cpp:1238
-msgid "set volume of sound needs one argument"
+#: libcore/asobj/LocalConnection_as.cpp:296
+msgid "Failed to get shm lock"
msgstr ""
-#: libcore/asobj/Sound_as.cpp:1253
-msgid "Sound.checkPolicyFile"
+#: libcore/asobj/LocalConnection_as.cpp:332
+msgid "Invalid connection name data"
msgstr ""
-#: libcore/asobj/Sound_as.cpp:1266
-msgid "Sound.areSoundsInaccessible()"
+#: libcore/asobj/LocalConnection_as.cpp:431
+msgid "Failed to get lock on shared memory! Will not remove listener"
msgstr ""
-#: libcore/asobj/XML_as.cpp:464
-msgid "XML data is empty"
+#: libcore/asobj/LocalConnection_as.cpp:461
+msgid "Failed to open shared memory segment"
msgstr ""
-#: libcore/asobj/XML_as.cpp:740
-msgid "no text for text node creation"
+#: libcore/asobj/LocalConnection_as.cpp:534
+msgid "LocalConnection.connect() expects exactly 1 argument"
msgstr ""
-#: libcore/asobj/XML_as.cpp:753
-msgid "XML.parseXML() needs one argument"
+#: libcore/asobj/LocalConnection_as.cpp:542
+msgid "LocalConnection.connect(): first argument must be a string"
msgstr ""
-#: libcore/asobj/MovieClip_as.cpp:297
+#: libcore/asobj/LocalConnection_as.cpp:587
+#: libcore/asobj/LocalConnection_as.cpp:599
+#: libcore/asobj/LocalConnection_as.cpp:612
#, c-format
-msgid "createEmptyMovieClip needs 2 args, but %d given, returning undefined"
+msgid "LocalConnection.send(%s): requires at least 2 arguments"
msgstr ""
-#: libcore/asobj/MovieClip_as.cpp:305
-#, c-format
-msgid "createEmptyMovieClip takes 2 args, but %d given, discarding the excess"
+#: libcore/asobj/LocalConnection_as.cpp:783
+msgid "No space for listener in shared memory!"
msgstr ""
-#: libcore/asobj/MovieClip_as.cpp:363
-msgid "MovieClip.cacheAsBitmap()"
+#: libcore/asobj/LocalConnection_as.cpp:844
+#, c-format
+msgid "Invalid domain %s"
msgstr ""
-#: libcore/asobj/MovieClip_as.cpp:375
-msgid "MovieClip.filters()"
+#: libcore/asobj/LocalConnection_as.cpp:851
+#, c-format
+msgid "Invalid function name %s"
msgstr ""
-#: libcore/asobj/MovieClip_as.cpp:394
-msgid "MovieClip.forceSmoothing()"
+#: libcore/asobj/LocalConnection_as.cpp:877
+msgid "Fewer AMF fields than expected."
msgstr ""
-#: libcore/asobj/MovieClip_as.cpp:404
-msgid "MovieClip.opaqueBackground()"
+#: libcore/asobj/Camera_as.cpp:259
+msgid "No MediaHandler exists! Cannot create a Camera object"
msgstr ""
-#: libcore/asobj/MovieClip_as.cpp:414
-msgid "MovieClip.scale9Grid()"
+#: libcore/asobj/Camera_as.cpp:312
+msgid "Camera::motionLevel can be set, but it's not implemented"
msgstr ""
-#: libcore/asobj/MovieClip_as.cpp:424
-msgid "MovieClip.scrollRect()"
+#: libcore/asobj/Camera_as.cpp:331
+msgid "Camera::quality can be set, but it's not implemented"
msgstr ""
-#: libcore/asobj/MovieClip_as.cpp:434
-msgid "MovieClip.tabIndex()"
+#: libcore/asobj/Camera_as.cpp:353
+msgid "Camera::activityLevel only has default value"
msgstr ""
-#: libcore/asobj/MovieClip_as.cpp:449
-#, c-format
-msgid ""
-"attachMovie called with wrong number of arguments expected 3 to 4, got (%d) "
-"- returning undefined"
+#: libcore/asobj/Camera_as.cpp:358
+msgid "Attempt to set activity property of Camera"
msgstr ""
-#: libcore/asobj/MovieClip_as.cpp:464
-#, c-format
-msgid ""
-"attachMovie: exported resource '%s' is not a DisplayObject definition. "
-"Returning undefined"
+#: libcore/asobj/Camera_as.cpp:370
+msgid "Camera::bandwidth only has default value"
msgstr ""
-#: libcore/asobj/MovieClip_as.cpp:484
-#, c-format
-msgid "MovieClip.attachMovie: invalid depth %d passed; not attaching"
+#: libcore/asobj/Camera_as.cpp:375
+msgid "Attempt to set bandwidth property of Camera"
msgstr ""
-#: libcore/asobj/MovieClip_as.cpp:509
-#, c-format
-msgid ""
-"Fourth argument of attachMovie doesn't cast to an object (%s), we'll act as "
-"if it wasn't given"
+#: libcore/asobj/Camera_as.cpp:391
+msgid "Attempt to set currentFPS property of Camera"
msgstr ""
-#: libcore/asobj/MovieClip_as.cpp:531
-#, c-format
-msgid "MovieClip.attachAudio(): %s"
+#: libcore/asobj/Camera_as.cpp:407
+msgid "Attempt to set fps property of Camera"
msgstr ""
-#: libcore/asobj/MovieClip_as.cpp:541
-#, c-format
-msgid "MovieClip.attachAudio(%s): first arg doesn't cast to a NetStream"
+#: libcore/asobj/Camera_as.cpp:423
+msgid "Attempt to set height property of Camera, use setMode"
msgstr ""
-#: libcore/asobj/MovieClip_as.cpp:559
-msgid "MovieClip.attachVideo()"
+#: libcore/asobj/Camera_as.cpp:446
+msgid "Attempt to set index property of Camera"
msgstr ""
-#: libcore/asobj/MovieClip_as.cpp:584
-#, c-format
-msgid "%s.swapDepths() needs one arg"
+#: libcore/asobj/Camera_as.cpp:458
+msgid "Camera::motionLevel only has default value"
msgstr ""
-#: libcore/asobj/MovieClip_as.cpp:595
-#, c-format
-msgid "%s.swapDepths(%s): won't swap a clip below depth %d (%d)"
+#: libcore/asobj/Camera_as.cpp:463
+msgid "Attempt to set motionLevel property of Camera"
msgstr ""
-#: libcore/asobj/MovieClip_as.cpp:613
-#, c-format
-msgid "%s.swapDepths(%s): invalid call, swapping to self?"
+#: libcore/asobj/Camera_as.cpp:475
+msgid "Camera::motionTimeout"
msgstr ""
-#: libcore/asobj/MovieClip_as.cpp:625
-#, c-format
-msgid ""
-"%s.swapDepths(%s): invalid call, the two DisplayObjects don't have the same "
-"parent"
+#: libcore/asobj/Camera_as.cpp:480
+msgid "Attempt to set motionTimeout property of Camera"
msgstr ""
-#: libcore/asobj/MovieClip_as.cpp:642
-#, c-format
-msgid ""
-"%s.swapDepths(%s): ignored, source and target DisplayObjects have the same "
-"depth %d"
+#: libcore/asobj/Camera_as.cpp:492
+msgid "Camera.muted"
msgstr ""
-#: libcore/asobj/MovieClip_as.cpp:657
-#, c-format
-msgid ""
-"%s.swapDepths(%s): first argument invalid (neither a movieclip nor a number)"
+#: libcore/asobj/Camera_as.cpp:497
+msgid "Attempt to set muted property of Camera"
msgstr ""
-#: libcore/asobj/MovieClip_as.cpp:666
-#, c-format
-msgid "%s.swapDepths(%s): requested depth is above the accessible range."
+#: libcore/asobj/Camera_as.cpp:513
+msgid "Attempt to set name property of Camera"
msgstr ""
-#: libcore/asobj/MovieClip_as.cpp:682
-#, c-format
-msgid "%s.swapDepths(%s): ignored, DisplayObject already at depth %d"
+#: libcore/asobj/Camera_as.cpp:524
+msgid "Attempt to set names property of Camera"
msgstr ""
-#: libcore/asobj/MovieClip_as.cpp:716
-msgid "MovieClip.duplicateMovieClip() needs 2 or 3 args"
+#: libcore/asobj/Camera_as.cpp:554
+msgid "Camera::quality has only default values"
msgstr ""
-#: libcore/asobj/MovieClip_as.cpp:732
-#, c-format
-msgid "MovieClip.duplicateMovieClip: invalid depth %d passed; not duplicating"
+#: libcore/asobj/Camera_as.cpp:559
+msgid "Attempt to set quality property of Camera"
msgstr ""
-#: libcore/asobj/MovieClip_as.cpp:764
-msgid "movieclip_goto_and_play needs one arg"
+#: libcore/asobj/Camera_as.cpp:587
+msgid "Camera.setCursor"
msgstr ""
-#: libcore/asobj/MovieClip_as.cpp:774
-#, c-format
-msgid "movieclip_goto_and_play('%s') -- invalid frame"
+#: libcore/asobj/Camera_as.cpp:594
+msgid "Camera.setKeyFrameInterval"
msgstr ""
-#: libcore/asobj/MovieClip_as.cpp:794
-msgid "movieclip_goto_and_stop needs one arg"
+#: libcore/asobj/Camera_as.cpp:608
+msgid "Attempt to set width property of Camera, use setMode"
msgstr ""
-#: libcore/asobj/MovieClip_as.cpp:804
+#: libcore/asobj/SharedObject_as.cpp:163
#, c-format
-msgid "movieclip_goto_and_stop('%s') -- invalid frame"
+msgid "Problems serializing an object's member %s=%s"
msgstr ""
-#: libcore/asobj/MovieClip_as.cpp:879
+#: libcore/asobj/SharedObject_as.cpp:323
#, c-format
msgid ""
-"MovieClip.loadMovie() expected 1 or 2 args, got %d - returning undefined"
+"SharedObject.flush() called with a minimum disk space argument (%d), which "
+"is currently ignored"
msgstr ""
-#: libcore/asobj/MovieClip_as.cpp:891
+#: libcore/asobj/SharedObject_as.cpp:331
#, c-format
-msgid ""
-"First argument of MovieClip.loadMovie(%s) evaluates to an empty string - "
-"returning undefined"
+msgid "Couldn't create dir for flushing SharedObject %s"
msgstr ""
-#: libcore/asobj/MovieClip_as.cpp:941
+#: libcore/asobj/SharedObject_as.cpp:344
#, c-format
msgid ""
-"MovieClip.loadVariables() expected 1 or 2 args, got %d - returning undefined"
+"Attempting to write object %s when it's SOL Read Only is set! Refusing..."
msgstr ""
-#: libcore/asobj/MovieClip_as.cpp:953
+#: libcore/asobj/SharedObject_as.cpp:352
#, c-format
-msgid ""
-"First argument passed to MovieClip.loadVariables(%s) evaluates to an empty "
-"string - returning undefined"
+msgid "SharedObject::flush(): Failed opening file '%s' in binary mode"
msgstr ""
-#: libcore/asobj/MovieClip_as.cpp:995
-#, c-format
-msgid "Can't find hitTest target %s"
+#: libcore/asobj/SharedObject_as.cpp:371
+msgid "Error writing SOL header"
msgstr ""
-#: libcore/asobj/MovieClip_as.cpp:1037
+#: libcore/asobj/SharedObject_as.cpp:378
#, c-format
-msgid "hitTest() called with %u args"
+msgid "Error writing %d bytes to output file %s"
msgstr ""
-#: libcore/asobj/MovieClip_as.cpp:1066
-msgid "MovieClip.getInstanceAtDepth(): missing or undefined depth argument"
+#: libcore/asobj/SharedObject_as.cpp:384
+#, c-format
+msgid "SharedObject '%s' written to filesystem."
msgstr ""
-#: libcore/asobj/MovieClip_as.cpp:1108
-msgid "No arguments passed to MovieClip.getURL()"
+#: libcore/asobj/SharedObject_as.cpp:493
+msgid "Attempting to open SOL file from non localhost-loaded SWF"
msgstr ""
-#: libcore/asobj/MovieClip_as.cpp:1117
+#: libcore/asobj/SharedObject_as.cpp:521
#, c-format
-msgid "MovieClip.getURL(%s): extra arguments dropped"
-msgstr ""
-
-#: libcore/asobj/MovieClip_as.cpp:1195
msgid ""
-"MovieClip.getTextSnapshot: failed to construct TextSnapshot (object probably "
-"overridden)"
+"SharedObject path %s is outside the SWF domain %s. Cannot access this object."
msgstr ""
-#: libcore/asobj/MovieClip_as.cpp:1225
+#: libcore/asobj/SharedObject_as.cpp:534
#, c-format
msgid ""
-"MovieClip.getBounds(%s): invalid call, first arg must be a DisplayObject"
+"SharedObject path %s is not part of the SWF path %s. Cannot access this "
+"object."
msgstr ""
-#: libcore/asobj/MovieClip_as.cpp:1273
-msgid "MovieClip.globalToLocal() takes one arg"
+#: libcore/asobj/SharedObject_as.cpp:703
+msgid "SharedObject.connect(): needs at least one argument"
msgstr ""
-#: libcore/asobj/MovieClip_as.cpp:1281
-#, c-format
-msgid "MovieClip.globalToLocal(%s): first argument doesn't cast to an object"
+#: libcore/asobj/SharedObject_as.cpp:709
+msgid "SharedObject.connect()"
msgstr ""
-#: libcore/asobj/MovieClip_as.cpp:1295
-#, c-format
-msgid ""
-"MovieClip.globalToLocal(%s): object parameter doesn't have an 'x' member"
+#: libcore/asobj/SharedObject_as.cpp:730
+msgid "SharedObject.setFps"
msgstr ""
-#: libcore/asobj/MovieClip_as.cpp:1306
-#, c-format
-msgid ""
-"MovieClip.globalToLocal(%s): object parameter doesn't have an 'y' member"
+#: libcore/asobj/SharedObject_as.cpp:739
+msgid "SharedObject.send"
msgstr ""
-#: libcore/asobj/MovieClip_as.cpp:1334
-msgid "MovieClip.localToGlobal() takes one arg"
+#: libcore/asobj/SharedObject_as.cpp:756
+#, c-format
+msgid "Arguments to SharedObject.flush(%s) will be ignored"
msgstr ""
-#: libcore/asobj/MovieClip_as.cpp:1342
+#: libcore/asobj/SharedObject_as.cpp:787
#, c-format
-msgid "MovieClip.localToGlobal(%s): first argument doesn't cast to an object"
+msgid "SharedObject.getLocal(%s): missing object name"
msgstr ""
-#: libcore/asobj/MovieClip_as.cpp:1355
-#, c-format
-msgid ""
-"MovieClip.localToGlobal(%s): object parameter doesn't have an 'x' member"
+#: libcore/asobj/SharedObject_as.cpp:813
+msgid "SharedObject.getRemote()"
msgstr ""
-#: libcore/asobj/MovieClip_as.cpp:1366
-#, c-format
-msgid ""
-"MovieClip.localToGlobal(%s): object parameter doesn't have an 'y' member"
+#: libcore/asobj/SharedObject_as.cpp:828
+msgid "SharedObject.deleteAll()"
msgstr ""
-#: libcore/asobj/MovieClip_as.cpp:1395
-#, c-format
-msgid "%s.setMask() : needs an argument"
+#: libcore/asobj/SharedObject_as.cpp:843
+msgid "SharedObject.getDiskUsage()"
msgstr ""
-#: libcore/asobj/MovieClip_as.cpp:1414
+#: libcore/asobj/SharedObject_as.cpp:904
#, c-format
-msgid "%s.setMask(%s) : first argument is not a DisplayObject"
+msgid "readSOL: SOL file %s is too short (only %s bytes long) to be valid."
msgstr ""
-#: libcore/asobj/MovieClip_as.cpp:1444
-msgid "MovieClip.lineTo() needs at least two arguments"
+#: libcore/asobj/SharedObject_as.cpp:929
+msgid "readSOL: file ends before data segment"
msgstr ""
-#: libcore/asobj/MovieClip_as.cpp:1470
-msgid "MovieClip.moveTo() takes two args"
+#: libcore/asobj/SharedObject_as.cpp:942
+msgid "SharedObject: end of buffer while reading length"
msgstr ""
-#: libcore/asobj/MovieClip_as.cpp:1521
-#, c-format
-msgid "MovieClip.lineStyle(%s): args after the first three will be discarded"
+#: libcore/asobj/SharedObject_as.cpp:951
+msgid "readSOL: empty property name"
msgstr ""
-#: libcore/asobj/MovieClip_as.cpp:1541
-#, c-format
-msgid ""
-"MovieClip.lineStyle(%s): invalid joinStylevalue '%s' (valid values: %s|%s|%s)"
+#: libcore/asobj/SharedObject_as.cpp:956
+msgid "SharedObject::readSOL: premature end of input"
msgstr ""
-#: libcore/asobj/MovieClip_as.cpp:1557
+#: libcore/asobj/SharedObject_as.cpp:967
#, c-format
-msgid ""
-"MovieClip.lineStyle(%s): invalid capStyle value '%s' (valid values: none|"
-"round|square)"
+msgid "SharedObject: error parsing SharedObject '%s'"
msgstr ""
-#: libcore/asobj/MovieClip_as.cpp:1582
+#: libcore/asobj/SharedObject_as.cpp:986
#, c-format
-msgid ""
-"MovieClip.lineStyle(%s): invalid noScale value '%s' (valid values: %s|%s|%s|"
-"%s)"
-msgstr ""
-
-#: libcore/asobj/MovieClip_as.cpp:1630
-msgid "MovieClip.curveTo() takes four args"
-msgstr ""
-
-#: libcore/asobj/MovieClip_as.cpp:1671
-msgid "beginFill() with no args is a no-op"
+msgid "readSOL: Reading SharedObject %s: %s"
msgstr ""
-#: libcore/asobj/MovieClip_as.cpp:1715
+#: libcore/asobj/MovieClip_as.cpp:297
#, c-format
-msgid "%s.beginGradientFill(%s): invalid call: 5 arguments needed"
+msgid "createEmptyMovieClip needs 2 args, but %d given, returning undefined"
msgstr ""
-#: libcore/asobj/MovieClip_as.cpp:1726
+#: libcore/asobj/MovieClip_as.cpp:305
#, c-format
-msgid "%s.beginGradientFill(%s): extra arguments invalidate call!"
+msgid "createEmptyMovieClip takes 2 args, but %d given, discarding the excess"
msgstr ""
-#: libcore/asobj/MovieClip_as.cpp:1746
-#, c-format
-msgid ""
-"%s.beginGradientFill(%s): first arg must be 'radial', 'focal', or 'linear'"
+#: libcore/asobj/MovieClip_as.cpp:363
+msgid "MovieClip.cacheAsBitmap()"
msgstr ""
-#: libcore/asobj/MovieClip_as.cpp:1762
-#, c-format
-msgid ""
-"%s.beginGradientFill(%s): one or more of the args from 2nd to 5th don't cast "
-"to objects"
+#: libcore/asobj/MovieClip_as.cpp:375
+msgid "MovieClip.filters()"
msgstr ""
-#: libcore/asobj/MovieClip_as.cpp:1776
-#, c-format
-msgid ""
-"%s.beginGradientFill(%s): colors, alphas and ratios args don't have same "
-"length"
+#: libcore/asobj/MovieClip_as.cpp:394
+msgid "MovieClip.forceSmoothing()"
msgstr ""
-#: libcore/asobj/MovieClip_as.cpp:1928
-#, c-format
-msgid "min/max bbox values in MovieClip.startDrag(%s) swapped, fixing"
+#: libcore/asobj/MovieClip_as.cpp:404
+msgid "MovieClip.opaqueBackground()"
msgstr ""
-#: libcore/asobj/MovieClip_as.cpp:1933
-#, c-format
-msgid "non-finite bbox values in MovieClip.startDrag(%s), took as zero"
+#: libcore/asobj/MovieClip_as.cpp:414
+msgid "MovieClip.scale9Grid()"
msgstr ""
-#: libcore/asobj/MovieClip_as.cpp:2077
-msgid "Failed to construct flash.geom.Transform!"
+#: libcore/asobj/MovieClip_as.cpp:424
+msgid "MovieClip.scrollRect()"
msgstr ""
-#: libcore/asobj/MovieClip_as.cpp:2095
-msgid "MovieClip.beginMeshFill"
+#: libcore/asobj/MovieClip_as.cpp:434
+msgid "MovieClip.tabIndex()"
msgstr ""
-#: libcore/asobj/LoadVars_as.cpp:145
+#: libcore/asobj/MovieClip_as.cpp:449
#, c-format
-msgid "new LoadVars(%s) - arguments discarded"
+msgid ""
+"attachMovie called with wrong number of arguments expected 3 to 4, got (%d) "
+"- returning undefined"
msgstr ""
-#: libcore/asobj/Selection_as.cpp:189
+#: libcore/asobj/MovieClip_as.cpp:464
#, c-format
-msgid "Selection.setFocus: expected 1 argument, got %d"
-msgstr ""
-
-#: libcore/asobj/Camera_as.cpp:259
-msgid "No MediaHandler exists! Cannot create a Camera object"
-msgstr ""
-
-#: libcore/asobj/Camera_as.cpp:312
-msgid "Camera::motionLevel can be set, but it's not implemented"
-msgstr ""
-
-#: libcore/asobj/Camera_as.cpp:331
-msgid "Camera::quality can be set, but it's not implemented"
-msgstr ""
-
-#: libcore/asobj/Camera_as.cpp:353
-msgid "Camera::activityLevel only has default value"
-msgstr ""
-
-#: libcore/asobj/Camera_as.cpp:358
-msgid "Attempt to set activity property of Camera"
+msgid ""
+"attachMovie: exported resource '%s' is not a DisplayObject definition. "
+"Returning undefined"
msgstr ""
-#: libcore/asobj/Camera_as.cpp:370
-msgid "Camera::bandwidth only has default value"
+#: libcore/asobj/MovieClip_as.cpp:484
+#, c-format
+msgid "MovieClip.attachMovie: invalid depth %d passed; not attaching"
msgstr ""
-#: libcore/asobj/Camera_as.cpp:375
-msgid "Attempt to set bandwidth property of Camera"
+#: libcore/asobj/MovieClip_as.cpp:509
+#, c-format
+msgid ""
+"Fourth argument of attachMovie doesn't cast to an object (%s), we'll act as "
+"if it wasn't given"
msgstr ""
-#: libcore/asobj/Camera_as.cpp:391
-msgid "Attempt to set currentFPS property of Camera"
+#: libcore/asobj/MovieClip_as.cpp:531
+#, c-format
+msgid "MovieClip.attachAudio(): %s"
msgstr ""
-#: libcore/asobj/Camera_as.cpp:407
-msgid "Attempt to set fps property of Camera"
+#: libcore/asobj/MovieClip_as.cpp:532
+#: libcore/asobj/flash/geom/Point_as.cpp:427
+#: libcore/asobj/flash/geom/Point_as.cpp:511
+#: libcore/asobj/flash/geom/Point_as.cpp:596
+#: libcore/asobj/flash/geom/Point_as.cpp:604
+#: libcore/asobj/flash/geom/Rectangle_as.cpp:154
+msgid "missing arguments"
msgstr ""
-#: libcore/asobj/Camera_as.cpp:423
-msgid "Attempt to set height property of Camera, use setMode"
+#: libcore/asobj/MovieClip_as.cpp:541
+#, c-format
+msgid "MovieClip.attachAudio(%s): first arg doesn't cast to a NetStream"
msgstr ""
-#: libcore/asobj/Camera_as.cpp:446
-msgid "Attempt to set index property of Camera"
+#: libcore/asobj/MovieClip_as.cpp:559
+msgid "MovieClip.attachVideo()"
msgstr ""
-#: libcore/asobj/Camera_as.cpp:458
-msgid "Camera::motionLevel only has default value"
+#: libcore/asobj/MovieClip_as.cpp:584
+#, c-format
+msgid "%s.swapDepths() needs one arg"
msgstr ""
-#: libcore/asobj/Camera_as.cpp:463
-msgid "Attempt to set motionLevel property of Camera"
+#: libcore/asobj/MovieClip_as.cpp:595
+#, c-format
+msgid "%s.swapDepths(%s): won't swap a clip below depth %d (%d)"
msgstr ""
-#: libcore/asobj/Camera_as.cpp:475
-msgid "Camera::motionTimeout"
+#: libcore/asobj/MovieClip_as.cpp:613
+#, c-format
+msgid "%s.swapDepths(%s): invalid call, swapping to self?"
msgstr ""
-#: libcore/asobj/Camera_as.cpp:480
-msgid "Attempt to set motionTimeout property of Camera"
+#: libcore/asobj/MovieClip_as.cpp:625
+#, c-format
+msgid ""
+"%s.swapDepths(%s): invalid call, the two DisplayObjects don't have the same "
+"parent"
msgstr ""
-#: libcore/asobj/Camera_as.cpp:492
-msgid "Camera.muted"
+#: libcore/asobj/MovieClip_as.cpp:642
+#, c-format
+msgid ""
+"%s.swapDepths(%s): ignored, source and target DisplayObjects have the same "
+"depth %d"
msgstr ""
-#: libcore/asobj/Camera_as.cpp:497
-msgid "Attempt to set muted property of Camera"
+#: libcore/asobj/MovieClip_as.cpp:657
+#, c-format
+msgid ""
+"%s.swapDepths(%s): first argument invalid (neither a movieclip nor a number)"
msgstr ""
-#: libcore/asobj/Camera_as.cpp:513
-msgid "Attempt to set name property of Camera"
+#: libcore/asobj/MovieClip_as.cpp:666
+#, c-format
+msgid "%s.swapDepths(%s): requested depth is above the accessible range."
msgstr ""
-#: libcore/asobj/Camera_as.cpp:524
-msgid "Attempt to set names property of Camera"
+#: libcore/asobj/MovieClip_as.cpp:682
+#, c-format
+msgid "%s.swapDepths(%s): ignored, DisplayObject already at depth %d"
msgstr ""
-#: libcore/asobj/Camera_as.cpp:554
-msgid "Camera::quality has only default values"
+#: libcore/asobj/MovieClip_as.cpp:716
+msgid "MovieClip.duplicateMovieClip() needs 2 or 3 args"
msgstr ""
-#: libcore/asobj/Camera_as.cpp:559
-msgid "Attempt to set quality property of Camera"
+#: libcore/asobj/MovieClip_as.cpp:732
+#, c-format
+msgid "MovieClip.duplicateMovieClip: invalid depth %d passed; not duplicating"
msgstr ""
-#: libcore/asobj/Camera_as.cpp:587
-msgid "Camera.setCursor"
+#: libcore/asobj/MovieClip_as.cpp:764
+msgid "movieclip_goto_and_play needs one arg"
msgstr ""
-#: libcore/asobj/Camera_as.cpp:594
-msgid "Camera.setKeyFrameInterval"
+#: libcore/asobj/MovieClip_as.cpp:774
+#, c-format
+msgid "movieclip_goto_and_play('%s') -- invalid frame"
msgstr ""
-#: libcore/asobj/Camera_as.cpp:608
-msgid "Attempt to set width property of Camera, use setMode"
+#: libcore/asobj/MovieClip_as.cpp:794
+msgid "movieclip_goto_and_stop needs one arg"
msgstr ""
-#: libcore/asobj/SharedObject_as.cpp:163
+#: libcore/asobj/MovieClip_as.cpp:804
#, c-format
-msgid "Problems serializing an object's member %s=%s"
+msgid "movieclip_goto_and_stop('%s') -- invalid frame"
msgstr ""
-#: libcore/asobj/SharedObject_as.cpp:323
+#: libcore/asobj/MovieClip_as.cpp:879
#, c-format
msgid ""
-"SharedObject.flush() called with a minimum disk space argument (%d), which "
-"is currently ignored"
+"MovieClip.loadMovie() expected 1 or 2 args, got %d - returning undefined"
msgstr ""
-#: libcore/asobj/SharedObject_as.cpp:331
+#: libcore/asobj/MovieClip_as.cpp:891
#, c-format
-msgid "Couldn't create dir for flushing SharedObject %s"
+msgid ""
+"First argument of MovieClip.loadMovie(%s) evaluates to an empty string - "
+"returning undefined"
msgstr ""
-#: libcore/asobj/SharedObject_as.cpp:344
+#: libcore/asobj/MovieClip_as.cpp:941
#, c-format
msgid ""
-"Attempting to write object %s when it's SOL Read Only is set! Refusing..."
+"MovieClip.loadVariables() expected 1 or 2 args, got %d - returning undefined"
msgstr ""
-#: libcore/asobj/SharedObject_as.cpp:352
+#: libcore/asobj/MovieClip_as.cpp:953
#, c-format
-msgid "SharedObject::flush(): Failed opening file '%s' in binary mode"
+msgid ""
+"First argument passed to MovieClip.loadVariables(%s) evaluates to an empty "
+"string - returning undefined"
msgstr ""
-#: libcore/asobj/SharedObject_as.cpp:371
-msgid "Error writing SOL header"
+#: libcore/asobj/MovieClip_as.cpp:995
+#, c-format
+msgid "Can't find hitTest target %s"
msgstr ""
-#: libcore/asobj/SharedObject_as.cpp:378
+#: libcore/asobj/MovieClip_as.cpp:1037
#, c-format
-msgid "Error writing %d bytes to output file %s"
+msgid "hitTest() called with %u args"
msgstr ""
-#: libcore/asobj/SharedObject_as.cpp:384
-#, c-format
-msgid "SharedObject '%s' written to filesystem."
+#: libcore/asobj/MovieClip_as.cpp:1066
+msgid "MovieClip.getInstanceAtDepth(): missing or undefined depth argument"
msgstr ""
-#: libcore/asobj/SharedObject_as.cpp:493
-msgid "Attempting to open SOL file from non localhost-loaded SWF"
+#: libcore/asobj/MovieClip_as.cpp:1108
+msgid "No arguments passed to MovieClip.getURL()"
msgstr ""
-#: libcore/asobj/SharedObject_as.cpp:521
+#: libcore/asobj/MovieClip_as.cpp:1117
#, c-format
+msgid "MovieClip.getURL(%s): extra arguments dropped"
+msgstr ""
+
+#: libcore/asobj/MovieClip_as.cpp:1196
msgid ""
-"SharedObject path %s is outside the SWF domain %s. Cannot access this object."
+"MovieClip.getTextSnapshot: failed to construct TextSnapshot (object probably "
+"overridden)"
msgstr ""
-#: libcore/asobj/SharedObject_as.cpp:534
+#: libcore/asobj/MovieClip_as.cpp:1226
#, c-format
msgid ""
-"SharedObject path %s is not part of the SWF path %s. Cannot access this "
-"object."
+"MovieClip.getBounds(%s): invalid call, first arg must be a DisplayObject"
msgstr ""
-#: libcore/asobj/SharedObject_as.cpp:703
-msgid "SharedObject.connect(): needs at least one argument"
+#: libcore/asobj/MovieClip_as.cpp:1274
+msgid "MovieClip.globalToLocal() takes one arg"
msgstr ""
-#: libcore/asobj/SharedObject_as.cpp:709
-msgid "SharedObject.connect()"
+#: libcore/asobj/MovieClip_as.cpp:1282
+#, c-format
+msgid "MovieClip.globalToLocal(%s): first argument doesn't cast to an object"
msgstr ""
-#: libcore/asobj/SharedObject_as.cpp:730
-msgid "SharedObject.setFps"
+#: libcore/asobj/MovieClip_as.cpp:1296
+#, c-format
+msgid ""
+"MovieClip.globalToLocal(%s): object parameter doesn't have an 'x' member"
msgstr ""
-#: libcore/asobj/SharedObject_as.cpp:739
-msgid "SharedObject.send"
+#: libcore/asobj/MovieClip_as.cpp:1307
+#, c-format
+msgid ""
+"MovieClip.globalToLocal(%s): object parameter doesn't have an 'y' member"
msgstr ""
-#: libcore/asobj/SharedObject_as.cpp:756
-#, c-format
-msgid "Arguments to SharedObject.flush(%s) will be ignored"
+#: libcore/asobj/MovieClip_as.cpp:1335
+msgid "MovieClip.localToGlobal() takes one arg"
msgstr ""
-#: libcore/asobj/SharedObject_as.cpp:787
+#: libcore/asobj/MovieClip_as.cpp:1343
#, c-format
-msgid "SharedObject.getLocal(%s): missing object name"
+msgid "MovieClip.localToGlobal(%s): first argument doesn't cast to an object"
msgstr ""
-#: libcore/asobj/SharedObject_as.cpp:813
-msgid "SharedObject.getRemote()"
+#: libcore/asobj/MovieClip_as.cpp:1356
+#, c-format
+msgid ""
+"MovieClip.localToGlobal(%s): object parameter doesn't have an 'x' member"
msgstr ""
-#: libcore/asobj/SharedObject_as.cpp:828
-msgid "SharedObject.deleteAll()"
+#: libcore/asobj/MovieClip_as.cpp:1367
+#, c-format
+msgid ""
+"MovieClip.localToGlobal(%s): object parameter doesn't have an 'y' member"
msgstr ""
-#: libcore/asobj/SharedObject_as.cpp:843
-msgid "SharedObject.getDiskUsage()"
+#: libcore/asobj/MovieClip_as.cpp:1396
+#, c-format
+msgid "%s.setMask() : needs an argument"
msgstr ""
-#: libcore/asobj/SharedObject_as.cpp:904
+#: libcore/asobj/MovieClip_as.cpp:1415
#, c-format
-msgid "readSOL: SOL file %s is too short (only %s bytes long) to be valid."
+msgid "%s.setMask(%s) : first argument is not a DisplayObject"
msgstr ""
-#: libcore/asobj/SharedObject_as.cpp:929
-msgid "readSOL: file ends before data segment"
+#: libcore/asobj/MovieClip_as.cpp:1445
+msgid "MovieClip.lineTo() needs at least two arguments"
msgstr ""
-#: libcore/asobj/SharedObject_as.cpp:942
-msgid "SharedObject: end of buffer while reading length"
+#: libcore/asobj/MovieClip_as.cpp:1471
+msgid "MovieClip.moveTo() takes two args"
msgstr ""
-#: libcore/asobj/SharedObject_as.cpp:951
-msgid "readSOL: empty property name"
+#: libcore/asobj/MovieClip_as.cpp:1522
+#, c-format
+msgid "MovieClip.lineStyle(%s): args after the first three will be discarded"
msgstr ""
-#: libcore/asobj/SharedObject_as.cpp:956
-msgid "SharedObject::readSOL: premature end of input"
+#: libcore/asobj/MovieClip_as.cpp:1542
+#, c-format
+msgid ""
+"MovieClip.lineStyle(%s): invalid joinStylevalue '%s' (valid values: %s|%s|%s)"
msgstr ""
-#: libcore/asobj/SharedObject_as.cpp:967
+#: libcore/asobj/MovieClip_as.cpp:1558
#, c-format
-msgid "SharedObject: error parsing SharedObject '%s'"
+msgid ""
+"MovieClip.lineStyle(%s): invalid capStyle value '%s' (valid values: none|"
+"round|square)"
msgstr ""
-#: libcore/asobj/SharedObject_as.cpp:986
+#: libcore/asobj/MovieClip_as.cpp:1583
#, c-format
-msgid "readSOL: Reading SharedObject %s: %s"
+msgid ""
+"MovieClip.lineStyle(%s): invalid noScale value '%s' (valid values: %s|%s|%s|"
+"%s)"
msgstr ""
-#: libcore/asobj/Date_as.cpp:463
-msgid "Date constructor called with more than 7 arguments"
+#: libcore/asobj/MovieClip_as.cpp:1631
+msgid "MovieClip.curveTo() takes four args"
msgstr ""
-#: libcore/asobj/Date_as.cpp:723
-msgid "Date.setTime needs one argument"
+#: libcore/asobj/MovieClip_as.cpp:1672
+msgid "beginFill() with no args is a no-op"
msgstr ""
-#: libcore/asobj/Date_as.cpp:743
-msgid "Date.setTime was called with more than one argument"
+#: libcore/asobj/MovieClip_as.cpp:1716
+#, c-format
+msgid "%s.beginGradientFill(%s): invalid call: 5 arguments needed"
msgstr ""
-#: libcore/asobj/Date_as.cpp:834
-msgid "Date.setFullYear needs one argument"
+#: libcore/asobj/MovieClip_as.cpp:1727
+#, c-format
+msgid "%s.beginGradientFill(%s): extra arguments invalidate call!"
msgstr ""
-#: libcore/asobj/Date_as.cpp:874
-msgid "Date.setYear needs one argument"
+#: libcore/asobj/MovieClip_as.cpp:1747
+#, c-format
+msgid ""
+"%s.beginGradientFill(%s): first arg must be 'radial', 'focal', or 'linear'"
msgstr ""
-#: libcore/asobj/Date_as.cpp:897
-msgid "Date.setYear was called with more than three arguments"
+#: libcore/asobj/MovieClip_as.cpp:1763
+#, c-format
+msgid ""
+"%s.beginGradientFill(%s): one or more of the args from 2nd to 5th don't cast "
+"to objects"
msgstr ""
-#: libcore/asobj/Date_as.cpp:928
+#: libcore/asobj/MovieClip_as.cpp:1777
#, c-format
-msgid "Date.set%sMonth needs one argument"
+msgid ""
+"%s.beginGradientFill(%s): colors, alphas and ratios args don't have same "
+"length"
msgstr ""
-#: libcore/asobj/Date_as.cpp:961
+#: libcore/asobj/MovieClip_as.cpp:1929
#, c-format
-msgid "Date.set%sMonth was called with more than three arguments"
+msgid "min/max bbox values in MovieClip.startDrag(%s) swapped, fixing"
msgstr ""
-#: libcore/asobj/Date_as.cpp:983
+#: libcore/asobj/MovieClip_as.cpp:1934
#, c-format
-msgid "Date.set%sDate needs one argument"
+msgid "non-finite bbox values in MovieClip.startDrag(%s), took as zero"
msgstr ""
-#: libcore/asobj/Date_as.cpp:997
-#, c-format
-msgid "Date.set%sDate was called with more than one argument"
+#: libcore/asobj/MovieClip_as.cpp:2078
+msgid "Failed to construct flash.geom.Transform!"
msgstr ""
-#: libcore/asobj/Date_as.cpp:1024
-#, c-format
-msgid "Date.set%sHours needs one argument"
+#: libcore/asobj/MovieClip_as.cpp:2096
+msgid "MovieClip.beginMeshFill"
msgstr ""
-#: libcore/asobj/Date_as.cpp:1043
-#, c-format
-msgid "Date.set%sHours was called with more than four arguments"
+#: libcore/asobj/System_as.cpp:310
+msgid "System.security.allowDomain"
msgstr ""
-#: libcore/asobj/Date_as.cpp:1069
-#, c-format
-msgid "Date.set%sMinutes needs one argument"
+#: libcore/asobj/System_as.cpp:321
+msgid "System.security.allowInsecureDomain"
msgstr ""
-#: libcore/asobj/Date_as.cpp:1087 libcore/asobj/Date_as.cpp:1130
-#, c-format
-msgid "Date.set%sMinutes was called with more than three arguments"
+#: libcore/asobj/System_as.cpp:329
+msgid "System.security.loadPolicyFile"
msgstr ""
-#: libcore/asobj/Date_as.cpp:1110
-#, c-format
-msgid "Date.set%sSeconds needs one argument"
+#: libcore/asobj/System_as.cpp:350
+msgid "System.showSettings"
msgstr ""
-#: libcore/asobj/Date_as.cpp:1148
-#, c-format
-msgid "Date.set%sMilliseconds needs one argument"
+#: libcore/asobj/System_as.cpp:367
+msgid "System.exactSettings"
msgstr ""
-#: libcore/asobj/Date_as.cpp:1165
-#, c-format
-msgid "Date.set%sMilliseconds was called with more than one argument"
+#: libcore/asobj/System_as.cpp:385
+msgid "System.useCodepage"
msgstr ""
-#: libcore/asobj/Date_as.cpp:1227
-msgid "Date.UTC needs one argument"
+#: libcore/asobj/Function_as.cpp:105
+msgid "Function.apply() called with no args"
msgstr ""
-#: libcore/asobj/Date_as.cpp:1251
-msgid "Date.UTC was called with more than 7 arguments"
+#: libcore/asobj/Function_as.cpp:129
+#, c-format
+msgid ""
+"Function.apply() got %d args, expected at most 2 -- discarding the ones in "
+"excess"
msgstr ""
#: libcore/asobj/Global_as.cpp:100
@@ -4492,411 +4545,443 @@ msgstr ""
msgid "_global.enableDebugConsole"
msgstr ""
-#: libcore/asobj/XMLNode_as.cpp:227
+#: libcore/asobj/flash/net/FileReferenceList_as.cpp:91
+#, c-format
+msgid "FileReferenceList(%s): %s"
+msgstr ""
+
+#: libcore/asobj/flash/net/FileReferenceList_as.cpp:92
+#: libcore/asobj/flash/net/FileReference_as.cpp:160
+#: libcore/asobj/flash/geom/Transform_as.cpp:357
+msgid "arguments discarded"
+msgstr ""
+
+#: libcore/asobj/flash/net/FileReference_as.cpp:159
+#, c-format
+msgid "FileReference(%s): %s"
+msgstr ""
+
+#: libcore/asobj/flash/geom/ColorTransform_as.cpp:365
+#, c-format
msgid ""
-"XMLNode.insertBefore(): positional parameter is not a child of this node"
+"ColorTransform(%s): not enough arguments (need 8). Constructing with default "
+"values"
msgstr ""
-#: libcore/asobj/XMLNode_as.cpp:596
-msgid "XMLNode::appendChild() needs at least one argument"
+#: libcore/asobj/flash/geom/ColorTransform_as.cpp:380
+#, c-format
+msgid "ColorTransform(%s): discarding extra arguments"
msgstr ""
-#: libcore/asobj/XMLNode_as.cpp:605
-msgid "First argument to XMLNode::appendChild() is not an XMLNode"
+#: libcore/asobj/flash/geom/Matrix_as.cpp:184
+#, c-format
+msgid "Matrix.concat(%s): needs one argument"
msgstr ""
-#: libcore/asobj/XMLNode_as.cpp:643
+#: libcore/asobj/flash/geom/Matrix_as.cpp:198
#, c-format
-msgid "XMLNode.insertBefore(%s) needs at least two arguments"
+msgid "Matrix.concat(%s): needs a Matrix object"
msgstr ""
-#: libcore/asobj/XMLNode_as.cpp:654
+#: libcore/asobj/flash/geom/Matrix_as.cpp:255
#, c-format
-msgid "First argument to XMLNode.insertBefore(%s) is not an XMLNode"
+msgid "Matrix.createBox(%s): needs at least two arguments"
msgstr ""
-#: libcore/asobj/XMLNode_as.cpp:665
+#: libcore/asobj/flash/geom/Matrix_as.cpp:314
#, c-format
-msgid "Second argument to XMLNode.insertBefore(%s) is not an XMLNode"
+msgid "Matrix.createGradientBox(%s): needs at least two arguments"
msgstr ""
-#: libcore/asobj/NetStream_as.cpp:299
+#: libcore/asobj/flash/geom/Matrix_as.cpp:388
#, c-format
-msgid "::pause(%d) called "
+msgid "Matrix.deltaTransformPoint(%s): needs one argument"
msgstr ""
-#: libcore/asobj/NetStream_as.cpp:355
-msgid "No NetConnection associated with this NetStream, won't play"
+#: libcore/asobj/flash/geom/Matrix_as.cpp:402
+#, c-format
+msgid "Matrix.deltaTransformPoint(%s): needs an object"
+msgstr ""
+
+#: libcore/asobj/flash/geom/Matrix_as.cpp:421
+#: libcore/asobj/flash/geom/Matrix_as.cpp:747
+#: libcore/asobj/flash/geom/Rectangle_as.cpp:471
+#: libcore/asobj/flash/geom/Rectangle_as.cpp:545
+#: libcore/asobj/flash/geom/Rectangle_as.cpp:603
+msgid "Failed to construct flash.geom.Point!"
+msgstr ""
+
+#: libcore/asobj/flash/geom/Matrix_as.cpp:523
+#, c-format
+msgid "Matrix.rotate(%s): needs one argument"
+msgstr ""
+
+#: libcore/asobj/flash/geom/Matrix_as.cpp:599
+#: libcore/asobj/flash/geom/Matrix_as.cpp:770
+#, c-format
+msgid "Matrix.translate(%s): needs two arguments"
+msgstr ""
+
+#: libcore/asobj/flash/geom/Matrix_as.cpp:704
+#, c-format
+msgid "Matrix.translate(%s): needs one argument"
+msgstr ""
+
+#: libcore/asobj/flash/geom/Matrix_as.cpp:717
+#, c-format
+msgid "Matrix.transformPoint(%s): needs an object"
+msgstr ""
+
+#: libcore/asobj/flash/geom/Matrix_as.cpp:729
+#, c-format
+msgid "Matrix.transformPoint(%s): object must be a Point"
+msgstr ""
+
+#: libcore/asobj/flash/geom/Point_as.cpp:119
+#: libcore/asobj/flash/geom/Point_as.cpp:190
+#: libcore/asobj/flash/geom/Point_as.cpp:238
+#: libcore/asobj/flash/geom/Point_as.cpp:323
+#, c-format
+msgid "%s: missing arguments"
+msgstr ""
+
+#: libcore/asobj/flash/geom/Point_as.cpp:128
+#: libcore/asobj/flash/geom/Point_as.cpp:138
+#: libcore/asobj/flash/geom/Point_as.cpp:148
+#: libcore/asobj/flash/geom/Point_as.cpp:156
+#: libcore/asobj/flash/geom/Point_as.cpp:332
+#: libcore/asobj/flash/geom/Point_as.cpp:342
+#: libcore/asobj/flash/geom/Point_as.cpp:352
+#: libcore/asobj/flash/geom/Point_as.cpp:360
+#, c-format
+msgid "Point.add(%s): %s"
+msgstr ""
+
+#: libcore/asobj/flash/geom/Point_as.cpp:129
+#: libcore/asobj/flash/geom/Point_as.cpp:249
+#: libcore/asobj/flash/geom/Point_as.cpp:333
+msgid "arguments after first discarded"
msgstr ""
-#: libcore/asobj/NetStream_as.cpp:366
-msgid "NetConnection is not connected. Won't play."
+#: libcore/asobj/flash/geom/Point_as.cpp:139
+#: libcore/asobj/flash/geom/Point_as.cpp:343
+#: libcore/asobj/flash/geom/Point_as.cpp:532
+msgid "first argument doesn't cast to object"
msgstr ""
-#: libcore/asobj/NetStream_as.cpp:379
-#, c-format
-msgid "Couldn't load URL %s"
+#: libcore/asobj/flash/geom/Point_as.cpp:149
+msgid "first argument cast to object doesn't contain an 'x' member"
msgstr ""
-#: libcore/asobj/NetStream_as.cpp:386
-#, c-format
-msgid "Connecting to movie: %s"
+#: libcore/asobj/flash/geom/Point_as.cpp:157
+msgid "first argument cast to object doesn't contain an 'y' member"
msgstr ""
-#: libcore/asobj/NetStream_as.cpp:392
+#: libcore/asobj/flash/geom/Point_as.cpp:200
#, c-format
-msgid "NetStream.play(%s): failed starting playback"
+msgid "Point.equals(%s): %s"
msgstr ""
-#: libcore/asobj/NetStream_as.cpp:415
-msgid "NetStream_as::initVideoDecoder: hot-plugging video consumer"
+#: libcore/asobj/flash/geom/Point_as.cpp:201
+#: libcore/asobj/flash/geom/Point_as.cpp:447
+msgid "First arg must be an object"
msgstr ""
-#: libcore/asobj/NetStream_as.cpp:420
+#: libcore/asobj/flash/geom/Point_as.cpp:211
+#: libcore/asobj/flash/geom/Point_as.cpp:457
#, c-format
-msgid "NetStream: Could not create Video decoder: %s"
+msgid "Point.equals(%s): %s %s"
msgstr ""
-#: libcore/asobj/NetStream_as.cpp:444
-msgid "NetStream_as::initAudioDecoder: hot-plugging audio consumer"
+#: libcore/asobj/flash/geom/Point_as.cpp:212
+#: libcore/asobj/flash/geom/Point_as.cpp:458
+msgid "First arg must be an instance of"
msgstr ""
-#: libcore/asobj/NetStream_as.cpp:451
+#: libcore/asobj/flash/geom/Point_as.cpp:248
#, c-format
-msgid "Could not create Audio decoder: %s"
+msgid "Point.normalize(%s): %s"
msgstr ""
-#: libcore/asobj/NetStream_as.cpp:477
-#, c-format
-msgid "Gnash could not get stream '%s' from NetConnection"
+#: libcore/asobj/flash/geom/Point_as.cpp:353
+msgid "first argument casted to object doesn't contain an 'x' member"
msgstr ""
-#: libcore/asobj/NetStream_as.cpp:487
-msgid "No Media handler registered, can't parse NetStream input"
+#: libcore/asobj/flash/geom/Point_as.cpp:361
+msgid "first argument casted to object doesn't contain an 'y' member"
msgstr ""
-#: libcore/asobj/NetStream_as.cpp:495
-msgid "Unable to create parser for NetStream input"
+#: libcore/asobj/flash/geom/Point_as.cpp:411
+#: libcore/asobj/flash/geom/Rectangle_as.cpp:483
+#: libcore/asobj/flash/geom/Rectangle_as.cpp:557
+#: libcore/asobj/flash/geom/Rectangle_as.cpp:616
+#, c-format
+msgid "Attempt to set read-only property %s"
msgstr ""
-#: libcore/asobj/NetStream_as.cpp:520
+#: libcore/asobj/flash/geom/Point_as.cpp:426
+#: libcore/asobj/flash/geom/Point_as.cpp:436
+#: libcore/asobj/flash/geom/Point_as.cpp:446
#, c-format
-msgid "%p.startPlayback: playHead position reset to 0"
+msgid "Point.distance(%s): %s"
msgstr ""
-#: libcore/asobj/NetStream_as.cpp:526
-msgid "Setting playStart status"
+#: libcore/asobj/flash/geom/Point_as.cpp:437
+msgid "arguments after first two discarded"
msgstr ""
-#: libcore/asobj/NetStream_as.cpp:544
-msgid "getDecodedVideoFrame: no parser available"
+#: libcore/asobj/flash/geom/Point_as.cpp:510
+#: libcore/asobj/flash/geom/Point_as.cpp:520
+#: libcore/asobj/flash/geom/Point_as.cpp:531
+#: libcore/asobj/flash/geom/Point_as.cpp:547
+#, c-format
+msgid "Point.interpolate(%s): %s"
msgstr ""
-#: libcore/asobj/NetStream_as.cpp:553
-#, c-format
-msgid ""
-"getDecodedVideoFrame(%d): no more video frames in input "
-"(nextVideoFrameTimestamp returned false, parsingComplete=%d)"
+#: libcore/asobj/flash/geom/Point_as.cpp:521
+msgid "arguments after first three discarded"
msgstr ""
-#: libcore/asobj/NetStream_as.cpp:564
-msgid ""
-"getDecodedVideoFrame setting playStop status (parsing complete and "
-"nextVideoFrameTimestamp() returned false)"
+#: libcore/asobj/flash/geom/Point_as.cpp:548
+msgid "second argument doesn't cast to object"
msgstr ""
-#: libcore/asobj/NetStream_as.cpp:575
+#: libcore/asobj/flash/geom/Point_as.cpp:595
+#: libcore/asobj/flash/geom/Point_as.cpp:604
#, c-format
-msgid "%p.getDecodedVideoFrame(%d): next video frame is in the future (%d)"
+msgid "Point.polar(%s): %s"
msgstr ""
-#: libcore/asobj/NetStream_as.cpp:586
+#: libcore/asobj/flash/geom/Rectangle_as.cpp:153
#, c-format
-msgid ""
-"nextVideoFrameTimestamp returned true (%d), but decodeNextVideoFrame "
-"returned null, I don't think this should ever happen"
+msgid "flash.geom.Rectangle(%s): %s"
msgstr ""
-#: libcore/asobj/NetStream_as.cpp:596
-#, c-format
-msgid ""
-"%p.getDecodedVideoFrame(%d): last video frame decoded (should set playback "
-"status to STOP?)"
+#: libcore/asobj/flash/geom/Transform_as.cpp:122
+#: libcore/asobj/flash/geom/Transform_as.cpp:198
+msgid "Failed to construct flash.geom.ColorTransform!"
msgstr ""
-#: libcore/asobj/NetStream_as.cpp:604
+#: libcore/asobj/flash/geom/Transform_as.cpp:145
#, c-format
-msgid ""
-"%p.getDecodedVideoFrame(%d): next video frame is in the future, we'll return "
-"this one"
+msgid "Transform.colorTransform(%s): extra arguments discarded"
msgstr ""
-#: libcore/asobj/NetStream_as.cpp:622
-msgid "decodeNextVideoFrame: no parser available"
+#: libcore/asobj/flash/geom/Transform_as.cpp:155
+#, c-format
+msgid "Transform.colorTransform(%s): argument is not an object"
msgstr ""
-#: libcore/asobj/NetStream_as.cpp:629
+#: libcore/asobj/flash/geom/Transform_as.cpp:170
#, c-format
-msgid "%p.decodeNextVideoFrame(): no more video frames in input"
+msgid "Transform.colorTransform(%s): argument is not a ColorTransform"
msgstr ""
-#: libcore/asobj/NetStream_as.cpp:645
-msgid "Error decoding encoded video frame in NetStream input"
+#: libcore/asobj/flash/geom/Transform_as.cpp:236
+msgid "Failed to construct flash.geom.Matrix!"
msgstr ""
-#: libcore/asobj/NetStream_as.cpp:659
+#: libcore/asobj/flash/geom/Transform_as.cpp:305
#, c-format
-msgid "%p.decodeNextAudioFrame: no more video frames in input"
+msgid "Transform.matrix(%s): extra arguments discarded"
msgstr ""
-#: libcore/asobj/NetStream_as.cpp:688
+#: libcore/asobj/flash/geom/Transform_as.cpp:315
#, c-format
-msgid ""
-"NetStream_as::decodeNextAudioFrame: %d bytes of encoded audio decoded to %d "
-"bytes"
+msgid "Transform.matrix(%s): argument is not an object"
msgstr ""
-#: libcore/asobj/NetStream_as.cpp:708
+#: libcore/asobj/flash/geom/Transform_as.cpp:346
#, c-format
-msgid "NetStream_as::seek(%d): no parser, no party"
+msgid "flash.geom.Transform(%s): needs one argument"
msgstr ""
-#: libcore/asobj/NetStream_as.cpp:728
-msgid "Setting invalidTime status"
+#: libcore/asobj/flash/geom/Transform_as.cpp:356
+#, c-format
+msgid "Transform(%s): %s"
msgstr ""
-#: libcore/asobj/NetStream_as.cpp:735
+#: libcore/asobj/flash/external/ExternalInterface_as.cpp:292
#, c-format
-msgid "_parser->seek(%d) returned %d"
+msgid "VAL: %s"
msgstr ""
-#: libcore/asobj/NetStream_as.cpp:742
+#: libcore/asobj/flash/external/ExternalInterface_as.cpp:343
#, c-format
-msgid "%p.seek: playHead position set to %d"
+msgid ""
+"ExternalInterface path %s is outside the SWF domain %s. Cannot access this "
+"object."
msgstr ""
-#: libcore/asobj/NetStream_as.cpp:778
-#, c-format
+#: libcore/asobj/flash/display/BitmapData_as.cpp:816
msgid ""
-"%p.refreshAudioBuffer: doing nothing as playhead is paused - bufferLength=%d/"
-"%d"
+"BitmapData.copyChannel(). Multiple destination channels are not supported"
msgstr ""
-#: libcore/asobj/NetStream_as.cpp:787
-#, c-format
+#: libcore/asobj/flash/display/BitmapData_as.cpp:842
msgid ""
-"%p.refreshAudioBuffer: doing nothing as current position was already decoded "
-"- bufferLength=%d/%d"
+"BitmapData.copyChannel(): no part of source rectangleoverlaps with the "
+"source BitmapData"
msgstr ""
-#: libcore/asobj/NetStream_as.cpp:799
-#, c-format
+#: libcore/asobj/flash/display/BitmapData_as.cpp:856
msgid ""
-"%p.refreshAudioBuffer: currentPosition=%d, playHeadState=%d, bufferLength="
-"%d, bufferTime=%d"
+"BitmapData.copyChannel(): destination area is wholly outside the destination "
+"BitmapData"
msgstr ""
-#: libcore/asobj/NetStream_as.cpp:935
-#, c-format
-msgid "%p.pushDecodedAudioFrames(%d) : buffer overrun (%d/%d)."
+#: libcore/asobj/flash/display/BitmapData_as.cpp:914
+msgid "BitmapData.copyPixels(): arguments after the first three are discarded"
msgstr ""
-#: libcore/asobj/NetStream_as.cpp:951
-#, c-format
+#: libcore/asobj/flash/display/BitmapData_as.cpp:964
msgid ""
-"%p.pushDecodedAudioFrames(%d): no more audio frames in input "
-"(nextAudioFrameTimestamp returned false, parsingComplete=%d)"
+"BitmapData.copyPixels(): no part of source rectangleoverlaps with the source "
+"BitmapData"
msgstr ""
-#: libcore/asobj/NetStream_as.cpp:962
+#: libcore/asobj/flash/display/BitmapData_as.cpp:978
msgid ""
-"pushDecodedAudioFrames setting playStop status (parsing complete and "
-"nextAudioFrameTimestamp returned false)"
+"BitmapData.copyPixels(): destination area is wholly outside the destination "
+"BitmapData"
msgstr ""
-#: libcore/asobj/NetStream_as.cpp:975
+#: libcore/asobj/flash/display/BitmapData_as.cpp:1064
#, c-format
-msgid "%p.pushDecodedAudioFrames(%d): next audio frame is in the future (%d)"
+msgid "BitmapData.draw(%s) requires at least one argument"
msgstr ""
-#: libcore/asobj/NetStream_as.cpp:988
-#, c-format
-msgid ""
-"nextAudioFrameTimestamp returned true (%d), but decodeNextAudioFrame "
-"returned null, I don't think this should ever happen"
+#: libcore/asobj/flash/display/BitmapData_as.cpp:1076
+msgid "BitmapData.draw() with BitmapData argument"
msgstr ""
-#: libcore/asobj/NetStream_as.cpp:997
+#: libcore/asobj/flash/display/BitmapData_as.cpp:1083
#, c-format
-msgid "pushDecodedAudioFrames(%d): Decoded audio frame contains no samples"
+msgid "BitmapData.draw(%s): first argument must be a MovieClip"
msgstr ""
-#: libcore/asobj/NetStream_as.cpp:1006
+#: libcore/asobj/flash/display/BitmapData_as.cpp:1124
#, c-format
-msgid "pushDecodedAudioFrames(%d) pushing %dth frame with timestamp %d"
+msgid "BitmapData.fillRect(%s): needs an object"
msgstr ""
-#: libcore/asobj/NetStream_as.cpp:1024
-msgid "resuming playback clock on audio consume"
+#: libcore/asobj/flash/display/BitmapData_as.cpp:1161
+msgid "floodFill called on disposed BitmapData!"
msgstr ""
-#: libcore/asobj/NetStream_as.cpp:1090
-#, c-format
-msgid ""
-"%p.refreshVideoFrame: doing nothing as playhead is paused - bufferLength=%d, "
-"bufferTime=%d"
+#: libcore/asobj/flash/display/BitmapData_as.cpp:1235
+msgid "getPixel32 called on disposed BitmapData!"
msgstr ""
-#: libcore/asobj/NetStream_as.cpp:1100
-#, c-format
-msgid ""
-"%p.refreshVideoFrame: doing nothing as current position was already decoded "
-"- bufferLength=%d, bufferTime=%d"
+#: libcore/asobj/flash/display/BitmapData_as.cpp:1365
+msgid "BitmapData.perlinNoise() stitch value"
msgstr ""
-#: libcore/asobj/NetStream_as.cpp:1112
-#, c-format
-msgid ""
-"%p.refreshVideoFrame: currentPosition=%d, playHeadState=%d, bufferLength=%d, "
-"bufferTime=%d"
+#: libcore/asobj/flash/display/BitmapData_as.cpp:1566
+msgid "Failed to construct flash.geom.Rectangle!"
msgstr ""
-#: libcore/asobj/NetStream_as.cpp:1126
-#, c-format
-msgid ""
-"%p.refreshVideoFrame(): no more video frames to decode (DEC_STOPPED, null "
-"from getDecodedVideoFrame)"
+#: libcore/asobj/flash/display/BitmapData_as.cpp:1588
+msgid "BitmapData.loadBitmap requires one argument"
msgstr ""
-#: libcore/asobj/NetStream_as.cpp:1135
-#, c-format
+#: libcore/asobj/flash/display/BitmapData_as.cpp:1653
msgid ""
-"%p.refreshVideoFrame(): last video frame was good enough for current position"
+"BitmapData constructor requires at least two arguments. Will not construct a "
+"BitmapData"
msgstr ""
-#: libcore/asobj/NetStream_as.cpp:1210
-#, c-format
+#: libcore/asobj/flash/display/BitmapData_as.cpp:1667
msgid ""
-"%p.advance: buffer empty while decoding, setting buffer to buffering and "
-"pausing playback clock"
-msgstr ""
-
-#: libcore/asobj/NetStream_as.cpp:1215
-msgid "Setting bufferEmpty status"
-msgstr ""
-
-#: libcore/asobj/NetStream_as.cpp:1224
-#, c-format
-msgid "%p.advance : bufferLength=%d, parsing completed"
-msgstr ""
-
-#: libcore/asobj/NetStream_as.cpp:1236
-#, c-format
-msgid "%p.advance: buffering - position=%d, buffer=%d/%d"
+"BitmapData width and height must be between 1 and 2880. Will not construct a "
+"BitmapData"
msgstr ""
-#: libcore/asobj/NetStream_as.cpp:1255
+#: libcore/asobj/NetConnection_as.cpp:455
#, c-format
-msgid ""
-"%p.advance: buffer full (or parsing completed), resuming playback clock - "
-"position=%d, buffer=%d/%d"
+msgid "Gnash is not allowed to open this URL: %s"
msgstr ""
-#: libcore/asobj/NetStream_as.cpp:1276
+#: libcore/asobj/NetConnection_as.cpp:525
#, c-format
-msgid "%p.advance: playHead position set to timestamp of first frame: %d"
+msgid "Gnash is not allowed to connect to %s"
msgstr ""
-#: libcore/asobj/NetStream_as.cpp:1283
+#: libcore/asobj/NetConnection_as.cpp:546
#, c-format
-msgid ""
-"%p.advance: playHead position is 0 and parser still doesn't have a frame to "
-"set it to"
+msgid "NetConnection.connect(%s): unsupported connection protocol"
msgstr ""
-#: libcore/asobj/NetStream_as.cpp:1323
+#: libcore/asobj/NetConnection_as.cpp:552
#, c-format
-msgid ""
-"Moving NetStream playhead from timestamp %d to timestamp %d as there are no "
-"video frames yet, audio buffer is empty and next audio frame timestamp is "
-"there (see bug #26687)"
+msgid "NetConnection.connect(%s): unknown connection protocol"
msgstr ""
-#: libcore/asobj/NetStream_as.cpp:1424
-msgid "attachAuxStreamer called while already attached"
+#: libcore/asobj/NetConnection_as.cpp:598
+#: libcore/asobj/NetConnection_as.cpp:617
+msgid "NetConnection.call: can't call while not connected"
msgstr ""
-#: libcore/asobj/NetStream_as.cpp:1435
-#, c-format
-msgid "Could not attach NetStream aux streamer to sound handler: %s"
+#: libcore/asobj/NetConnection_as.cpp:723
+msgid "NetConnection.call(): needs at least one argument"
msgstr ""
-#: libcore/asobj/NetStream_as.cpp:1566
+#: libcore/asobj/NetConnection_as.cpp:746
#, c-format
-msgid ""
-"First argument to NetStream constructor doesn't cast to a NetConnection (%s)"
+msgid "NetConnection.call(%s): second argument must be an object"
msgstr ""
-#: libcore/asobj/NetStream_as.cpp:1612
-msgid "NetStream_as play needs args"
+#: libcore/asobj/NetConnection_as.cpp:836
+msgid "NetConnection.connect(): needs at least one argument"
msgstr ""
-#: libcore/asobj/NetStream_as.cpp:1619
+#: libcore/asobj/NetConnection_as.cpp:858
#, c-format
-msgid "NetStream.play(%s): stream is not connected"
-msgstr ""
-
-#: libcore/asobj/NetStream_as.cpp:1668
-msgid "NetStream.attachAudio"
-msgstr ""
-
-#: libcore/asobj/NetStream_as.cpp:1679
-msgid "NetStream.attachVideo"
-msgstr ""
-
-#: libcore/asobj/NetStream_as.cpp:1690
-msgid "NetStream.publish"
+msgid "NetConnection.connect(%s): args after the first are not supported"
msgstr ""
-#: libcore/asobj/NetStream_as.cpp:1701
-msgid "NetStream.receiveAudio"
+#: libcore/asobj/NetConnection_as.cpp:873
+msgid "NetConnection.addHeader()"
msgstr ""
-#: libcore/asobj/NetStream_as.cpp:1712
-msgid "NetStream.receiveVideo"
+#: libcore/asobj/NetConnection_as.cpp:957
+msgid "Invoke buffer too short"
msgstr ""
-#: libcore/asobj/NetStream_as.cpp:1723
-msgid "NetStream.send"
+#: libcore/asobj/NetConnection_as.cpp:964
+msgid "Invoke argument not present"
msgstr ""
-#: libcore/asobj/NetStream_as.cpp:1807
-msgid "NetStream.liveDelay"
+#: libcore/asobj/NetConnection_as.cpp:1055
+#, c-format
+msgid "Unknown HTTP Remoting response identifier '%s'"
msgstr ""
-#: libcore/asobj/NetStream_as.cpp:1859
-msgid "Invalid AMF data in FLV tag"
+#: libcore/asobj/NetConnection_as.cpp:1071
+#, c-format
+msgid "Unsupported HTTP Remoting response callback: '%s' (size %d)"
msgstr ""
-#: libcore/asobj/NetStream_as.cpp:1870
-msgid "Could not convert FLV metatag to as_value, passing undefined"
+#: libcore/asobj/NetConnection_as.cpp:1220
+#, c-format
+msgid "Error parsing server AMF: %s"
msgstr ""
-#: libcore/asobj/Number_as.cpp:78
+#: libcore/asobj/NetConnection_as.cpp:1267
#, c-format
-msgid "Number.toString(%s): radix must be in the 2..36 range (%d is invalid)"
+msgid "Could not serialize NetConnection.call argument %d"
msgstr ""
-#: libcore/asobj/TextSnapshot_as.cpp:521
-msgid "TextSnapshot.findText() requires 3 arguments"
+#: libcore/asobj/NetConnection_as.cpp:1295
+msgid "Sanity failed. no string method in invoke packet"
msgstr ""
-#: libcore/asobj/TextSnapshot_as.cpp:545
-msgid "TextSnapshot.getCount() takes no arguments"
+#: libcore/asobj/NetConnection_as.cpp:1342
+msgid "Server called _onbwcheck without a callback"
msgstr ""
-#: libcore/asobj/TextSnapshot_as.cpp:601
-msgid "TextSnapshot.getText requires exactly 2 arguments"
+#: libcore/asobj/NetConnection_as.cpp:1372
+msgid "RTMP server sent error"
msgstr ""
#: libcore/asobj/XMLSocket_as.cpp:268
@@ -4919,1930 +5004,1946 @@ msgstr ""
msgid "XMLSocket.send() needs at least one argument"
msgstr ""
-#: libcore/asobj/AsBroadcaster.cpp:233
-msgid "AsBroadcaster.initialize() requires one argument, none given"
-msgstr ""
-
-#: libcore/asobj/AsBroadcaster.cpp:243
-#, c-format
-msgid "AsBroadcaster.initialize(%s): first arg is not an object"
-msgstr ""
-
-#: libcore/asobj/AsBroadcaster.cpp:252
-#, c-format
+#: libcore/LineStyle.cpp:186
msgid ""
-"AsBroadcaster.initialize(%s): first arg is an object but doesn't cast to one "
-"(dangling DisplayObject ref?)"
+"UNTESTED: Do not know how to interpolate line styles with different vertical "
+"thickness scaling"
msgstr ""
-#: libcore/asobj/AsBroadcaster.cpp:282 libcore/asobj/AsBroadcaster.cpp:327
-#: libcore/asobj/AsBroadcaster.cpp:393
-#, c-format
-msgid "%p.addListener(%s): this object has no _listeners member"
+#: libcore/LineStyle.cpp:191
+msgid ""
+"UNTESTED: Do not know how to interpolate line styles with different "
+"horizontal thickness scaling"
msgstr ""
-#: libcore/asobj/AsBroadcaster.cpp:293 libcore/asobj/AsBroadcaster.cpp:338
-#: libcore/asobj/AsBroadcaster.cpp:404
+#: libcore/SWFMovie.cpp:54
#, c-format
-msgid "%p.addListener(%s): this object's _listener isn't an object: %s"
+msgid "Frame %d never loaded. Total frames: %d"
msgstr ""
-#: libcore/asobj/AsBroadcaster.cpp:415
+#: libcore/SWFMovie.cpp:77
#, c-format
-msgid "%p.broadcastMessage() needs an argument"
+msgid "Frame %d never loaded. Total frames: %d."
msgstr ""
-#: libcore/asobj/TextFormat_as.cpp:406
+#: libcore/SWFMovie.cpp:109
#, c-format
-msgid "Too many args (%d) passed to TextFormat"
+msgid ""
+"Attempt to perform initialized for a character %s that does not exist "
+"(either not exported or not defined)"
msgstr ""
-#: libcore/asobj/TextFormat_as.cpp:483
-msgid "Getter for textformat_tabStops"
+#: libcore/swf/StreamSoundBlockTag.cpp:77
+msgid "Found SOUNDSTREAMBLOCK tag w/out preceding SOUNDSTREAMHEAD"
msgstr ""
-#: libcore/asobj/TextFormat_as.cpp:562
-msgid "TextFormat.getTextExtent requires at least one argument"
+#: libcore/swf/StreamSoundBlockTag.cpp:113
+msgid "Tag boundary reported past end of stream!"
msgstr ""
-#: libcore/asobj/TextFormat_as.cpp:726
+#: libcore/swf/DefaultTagLoaders.cpp:94
#, c-format
-msgid "Uknown alignment value: %d, take as left"
+msgid ""
+"Undocumented tag %s encountered. Please report this to the Gnash developers!"
msgstr ""
-#: libcore/asobj/TextFormat_as.cpp:741
+#: libcore/swf/RemoveObjectTag.cpp:71
#, c-format
-msgid "Unknown display value: %d "
+msgid " remove_object_2(%d)"
msgstr ""
-#: libcore/asobj/Color_as.cpp:153
-msgid "Color.setRGB() : missing argument"
+#: libcore/swf/DefineButtonCxformTag.cpp:49
+#, c-format
+msgid "DefineButtonCxform refers to an unknown DisplayObject %d"
msgstr ""
-#: libcore/asobj/Color_as.cpp:186
-msgid "Color.setTransform() : missing argument"
+#: libcore/swf/DefineButtonCxformTag.cpp:60
+#, c-format
+msgid ""
+"DefineButtonCxform refers to DisplayObject ID %d (%s). Expected a button "
+"definition"
msgstr ""
-#: libcore/asobj/Color_as.cpp:196
+#: libcore/swf/DefineTextTag.cpp:52
#, c-format
-msgid "Color.setTransform(%s) : first argument doesn't cast to an object"
+msgid "DefineTextTag, id = %d"
msgstr ""
-#: libcore/asobj/LocalConnection_as.cpp:279
-msgid "Attempting to write to disabled LocalConnection!"
+#: libcore/swf/DefineTextTag.cpp:93
+#, c-format
+msgid "Text DisplayObject, id = %d"
msgstr ""
-#: libcore/asobj/LocalConnection_as.cpp:288
-msgid "Failed to attach shared memory segment"
+#: libcore/swf/DefineTextTag.cpp:112
+#, c-format
+msgid "begin text records for DefineTextTag %p"
msgstr ""
-#: libcore/asobj/LocalConnection_as.cpp:296
-msgid "Failed to get shm lock"
+#: libcore/swf/ShapeRecord.cpp:278
+msgid "Invalid fill style %1% in style change record - %2% defined. Set to 0."
msgstr ""
-#: libcore/asobj/LocalConnection_as.cpp:332
-msgid "Invalid connection name data"
+#: libcore/swf/ShapeRecord.cpp:313
+#, c-format
+msgid " bound SWFRect: %s"
msgstr ""
-#: libcore/asobj/LocalConnection_as.cpp:431
-msgid "Failed to get lock on shared memory! Will not remove listener"
+#: libcore/swf/ShapeRecord.cpp:340
+#, c-format
+msgid " ShapeRecord(%s): fillbits %d, linebits %d"
msgstr ""
-#: libcore/asobj/LocalConnection_as.cpp:461
-msgid "Failed to open shared memory segment"
+#: libcore/swf/ShapeRecord.cpp:418
+#, c-format
+msgid " Shape read: moveto %d %d"
msgstr ""
-#: libcore/asobj/LocalConnection_as.cpp:534
-msgid "LocalConnection.connect() expects exactly 1 argument"
+#: libcore/swf/ShapeRecord.cpp:437
+#, c-format
+msgid " Shape read: fill0 (left) = %d"
msgstr ""
-#: libcore/asobj/LocalConnection_as.cpp:542
-msgid "LocalConnection.connect(): first argument must be a string"
+#: libcore/swf/ShapeRecord.cpp:456
+#, c-format
+msgid " Shape read: fill1 (right) = %d"
msgstr ""
-#: libcore/asobj/LocalConnection_as.cpp:587
-#: libcore/asobj/LocalConnection_as.cpp:599
-#: libcore/asobj/LocalConnection_as.cpp:612
+#: libcore/swf/ShapeRecord.cpp:475
#, c-format
-msgid "LocalConnection.send(%s): requires at least 2 arguments"
+msgid "ShapeRecord: line %d"
msgstr ""
-#: libcore/asobj/LocalConnection_as.cpp:783
-msgid "No space for listener in shared memory!"
+#: libcore/swf/ShapeRecord.cpp:489
+msgid "ShapeRecord: more fill styles"
msgstr ""
-#: libcore/asobj/LocalConnection_as.cpp:844
+#: libcore/swf/ShapeRecord.cpp:525
#, c-format
-msgid "Invalid domain %s"
+msgid "ShapeRecord: curved edge %d %d - %d %d - %d %d"
msgstr ""
-#: libcore/asobj/LocalConnection_as.cpp:851
+#: libcore/swf/ShapeRecord.cpp:559
#, c-format
-msgid "Invalid function name %s"
+msgid "ShapeRecord: straight edge %d %d - %d %d"
msgstr ""
-#: libcore/asobj/LocalConnection_as.cpp:877
-msgid "Fewer AMF fields than expected."
+#: libcore/swf/ShapeRecord.cpp:613
+msgid " fill styles: %1%"
msgstr ""
-#: libcore/asobj/Microphone_as.cpp:252
-msgid "No MediaHandler exists! Cannot create a Microphone object"
+#: libcore/swf/ShapeRecord.cpp:622
+msgid " Read fill: %1%"
msgstr ""
-#: libcore/asobj/Microphone_as.cpp:284
-msgid "Microphone.gain(): wrong number of parameters passed"
+#: libcore/swf/ShapeRecord.cpp:636
+#, c-format
+msgid " readLineStyles: count = %d"
msgstr ""
-#: libcore/asobj/Microphone_as.cpp:300
-msgid "Microphone.setRate: wrong number of parameters passed"
+#: libcore/swf/ShapeRecord.cpp:643
+#, c-format
+msgid " readLineStyles: count2 = %d"
msgstr ""
-#: libcore/asobj/Microphone_as.cpp:313
-msgid "Microphone::activityLevel only has default value (-1)"
+#: libcore/swf/DefineButtonTag.cpp:85
+#, c-format
+msgid " DefineButton loader: character id = %d"
msgstr ""
-#: libcore/asobj/Microphone_as.cpp:318
-msgid "Attempt to set activity property of Microphone"
+#: libcore/swf/DefineButtonTag.cpp:102
+#, c-format
+msgid " DefineButton2 loader: chararacter id = %d"
msgstr ""
-#: libcore/asobj/Microphone_as.cpp:353
-msgid "Microphone::muted is always false (always allows access)"
+#: libcore/swf/DefineButtonTag.cpp:134
+msgid "Premature end of DEFINEBUTTON tag, won't read actions"
msgstr ""
-#: libcore/asobj/Microphone_as.cpp:413
-msgid "Microphone::silenceTimeout can be set, but is unimplemented"
+#: libcore/swf/DefineButtonTag.cpp:170
+#, c-format
+msgid "Next Button2 actionOffset (%u) points past the end of tag (%lu)"
msgstr ""
-#: libcore/asobj/Microphone_as.cpp:436
+#: libcore/swf/DefineButtonTag.cpp:211
#, c-format
-msgid "%s: Too many arguments"
+msgid ""
+"Next action offset (%u) in Button2ActionConditions points past the end of tag"
msgstr ""
-#: libcore/asobj/LoadableObject.cpp:176
-msgid "XML.addRequestHeader: XML._customHeaders is not an object"
+#: libcore/swf/DefineButtonTag.cpp:276
+msgid "Premature end of button action input: can't read conditions"
msgstr ""
-#: libcore/asobj/LoadableObject.cpp:193
-msgid "XML.addRequestHeader requires at least one argument"
+#: libcore/swf/DefineButtonTag.cpp:286
+#, c-format
+msgid " button actions for conditions 0x%x"
msgstr ""
-#: libcore/asobj/LoadableObject.cpp:206
-msgid "XML.addRequestHeader: single argument is not an array"
+#: libcore/swf/DefineButtonTag.cpp:359
+msgid " premature end of button record input stream, can't read flags"
msgstr ""
-#: libcore/asobj/LoadableObject.cpp:222
+#: libcore/swf/DefineButtonTag.cpp:380
+msgid ""
+" premature end of button record input stream, can't read DisplayObject id"
+msgstr ""
+
+#: libcore/swf/DefineButtonTag.cpp:395
#, c-format
-msgid "XML.addRequestHeader(%s): arguments after the second will be discarded"
+msgid ""
+" button record for states [%s] refer to DisplayObject with id %d, which is "
+"not found in the chars dictionary"
msgstr ""
-#: libcore/asobj/LoadableObject.cpp:237
+#: libcore/swf/DefineButtonTag.cpp:402
#, c-format
-msgid "XML.addRequestHeader(%s): both arguments must be a string"
+msgid " button record for states [%s] contain DisplayObject %d (%s)"
msgstr ""
-#: libcore/asobj/LoadableObject.cpp:304
-msgid "sendAndLoad() requires at least two arguments"
+#: libcore/swf/DefineButtonTag.cpp:410
+msgid ""
+" premature end of button record input stream, can't read button layer "
+"(depth?)"
msgstr ""
-#: libcore/asobj/LoadableObject.cpp:312
-msgid "sendAndLoad(): invalid empty URL"
+#: libcore/swf/VideoFrameTag.cpp:47
+#, c-format
+msgid "VideoFrame tag refers to unknown video stream id %d"
msgstr ""
-#: libcore/asobj/LoadableObject.cpp:319
-msgid "sendAndLoad(): invalid target (must be an XML or LoadVars object)"
+#: libcore/swf/VideoFrameTag.cpp:57
+#, c-format
+msgid "VideoFrame tag refers to a non-video DisplayObject %d (%s)"
msgstr ""
-#: libcore/asobj/LoadableObject.cpp:397
+#: libcore/swf/VideoFrameTag.cpp:90
+msgid ""
+"Could not read enough bytes when parsing VideoFrame tag. Perhaps we reached "
+"the end of the stream!"
+msgstr ""
+
+#: libcore/swf/StartSoundTag.cpp:56
#, c-format
-msgid "Loading from URL: '%s'"
+msgid "start_sound_loader: sound_id %d is not defined"
msgstr ""
-#: libcore/asobj/LoadableObject.cpp:417
-msgid "load() requires at least one argument"
+#: libcore/swf/StartSoundTag.cpp:64
+#, c-format
+msgid "StartSound: id=%d"
msgstr ""
-#: libcore/asobj/LoadableObject.cpp:426
-msgid "load(): invalid empty URL"
+#: libcore/swf/StartSoundTag.cpp:116
+msgid "STARTSOUND2 tag not parsed and not used"
msgstr ""
-#: libcore/DisplayObjectContainer.cpp:75
-msgid "Children"
+#: libcore/swf/DefineButtonSoundTag.cpp:52
+#, c-format
+msgid "DEFINEBUTTONSOUND refers to an unknown DisplayObject def %d"
msgstr ""
-#: libcore/DisplayList.cpp:305
+#: libcore/swf/DefineButtonSoundTag.cpp:63
#, c-format
-msgid "moveDisplayObject() -- can't find object at depth %d"
+msgid ""
+"DEFINEBUTTONSOUND refers to DisplayObject id %d, a %s (expected a button "
+"DisplayObject)"
msgstr ""
-#: libcore/DisplayList.cpp:312
-msgid "Request to move an unloaded DisplayObject"
+#: libcore/swf/DefineButtonSoundTag.cpp:73
+msgid "Attempt to redefine button sound ignored"
msgstr ""
-#: libcore/DisplayList.cpp:380
+#: libcore/swf/DefineButtonSoundTag.cpp:99
#, c-format
-msgid "%s.swapDepth(%d) : ignored call with target depth less then %d"
+msgid "sound tag not found, sound_id=%d, button state #=%i"
msgstr ""
-#: libcore/DisplayList.cpp:404
-msgid ""
-"First argument to DisplayList::swapDepth() is NOT a DisplayObject in the "
-"list. Call ignored."
+#: libcore/swf/DefineShapeTag.cpp:58
+#, c-format
+msgid "DefineShapeTag(%s): id = %d"
+msgstr ""
+
+#: libcore/swf/DefineFontTag.cpp:60
+msgid "reading code table at offset %1%, %2% glyphs"
msgstr ""
-#: libcore/DisplayList.cpp:875
-#, c-format
-msgid ""
-"mergeDisplayList: DisplayObject %s (%s at depth %d [%d]) about to be "
-"discarded in given display list is not marked as unloaded and not found in "
-"the merged current displaylist"
+#: libcore/swf/DefineFontTag.cpp:120
+msgid "reading DefineFont"
msgstr ""
-#: libcore/Geometry.cpp:198
-msgid "Collision detection for unidirectionally scaled strokes"
+#: libcore/swf/DefineFontTag.cpp:157
+msgid "Glyphs offset table corrupted in DefineFont tag"
+msgstr ""
+
+#: libcore/swf/DefineFontTag.cpp:172
+msgid "reading DefineFont2 or DefineFont3"
msgstr ""
-#: libcore/TextField.cpp:234
+#: libcore/swf/DefineFontTag.cpp:225 libcore/swf/DefineFontTag.cpp:237
#, c-format
-msgid "FIXME: attempt to remove a TextField being a child of a %s"
+msgid "Glyph %d at offset %u"
msgstr ""
-#: libcore/TextField.cpp:413 libcore/TextField.cpp:423
-#: libcore/TextField.cpp:441 libcore/TextField.cpp:456
-msgid "invalid restrict string"
+#: libcore/swf/DefineFontTag.cpp:254
+msgid "Glyphs offset table corrupted in DefineFont2/3 tag"
msgstr ""
-#: libcore/TextField.cpp:965
-#, c-format
-msgid ""
-"TextField: missing glyph for space char (needed for TAB). Make sure "
-"DisplayObject shapes for font %s are being exported into your SWF file."
+#: libcore/swf/DefineFontTag.cpp:266
+msgid "Bad offset in DefineFont2"
msgstr ""
-#: libcore/TextField.cpp:1044
-msgid "No font for TextField!"
+#: libcore/swf/DefineFontTag.cpp:325
+msgid "Repeated kerning pair found - ignoring"
msgstr ""
-#: libcore/TextField.cpp:1444
+#: libcore/swf/DefineFontTag.cpp:344
#, c-format
-msgid "Unexpected value '%s' in TextField font color attribute"
+msgid "DefineFontInfo tag loader: can't find font with id %d"
msgstr ""
-#: libcore/TextField.cpp:1459
-msgid "Expected a font name in FACE attribute."
+#: libcore/swf/DefineFontTag.cpp:352
+msgid "DefineFontInfo2 partially implemented"
msgstr ""
-#: libcore/TextField.cpp:1513
-msgid "<img> HTML tag in TextField"
+#: libcore/swf/CSMTextSettingsTag.cpp:77
+#, c-format
+msgid ""
+" CSMTextSettings: TextID=%d, FlashType=%d, GridFit=%d, Thickness=%d, "
+"Sharpness=%d"
msgstr ""
-#: libcore/TextField.cpp:1551
-msgid "<span> HTML tag in TextField"
+#: libcore/swf/CSMTextSettingsTag.cpp:85
+msgid "CSMTextSettings"
msgstr ""
-#: libcore/TextField.cpp:1623
-msgid "HTML <textformat> tag tabstops attribute"
+#: libcore/swf/PlaceObject2Tag.cpp:85
+#, c-format
+msgid " PLACEOBJECT: depth=%d(%d) char=%d"
msgstr ""
-#: libcore/TextField.cpp:1706
+#: libcore/swf/PlaceObject2Tag.cpp:89 libcore/swf/PlaceObject2Tag.cpp:319
#, c-format
-msgid ""
-"TextField: missing embedded glyph for char %d. Make sure DisplayObject "
-"shapes for font %s are being exported into your SWF file"
+msgid " SWFCxForm: %s"
msgstr ""
-#: libcore/TextField.cpp:1714
+#: libcore/swf/PlaceObject2Tag.cpp:105
#, c-format
-msgid ""
-"TextField: missing device glyph for char %d. Maybe you don't have font '%s' "
-"installed in your system."
+msgid "Reserved field in PlaceObject actions == %u (expected 0)"
msgstr ""
-#: libcore/TextField.cpp:1905
+#: libcore/swf/PlaceObject2Tag.cpp:123
#, c-format
-msgid ""
-"Current environment has no target, can't bind VariableName (%s) associated "
-"to text field. Gnash will try to register again on next access."
+msgid " actions: flags = 0x%X"
msgstr ""
-#: libcore/TextField.cpp:1931
+#: libcore/swf/PlaceObject2Tag.cpp:158
#, c-format
msgid ""
-"VariableName associated to text field refers to an unknown target (%s). It "
-"is possible that the DisplayObject will be instantiated later in the SWF "
-"stream. Gnash will try to register again on next access."
+"swf_event::read(), even_length = %u, but only %lu bytes left to the end of "
+"current tag. Breaking for safety."
msgstr ""
-#: libcore/TextField.cpp:2024 libcore/TextField.cpp:2058
-#: libcore/TextField.cpp:2149
-msgid "invalid HTML tag"
+#: libcore/swf/PlaceObject2Tag.cpp:169
+msgid "swf_event::read(), event_length = 0 (empty). Skipping."
msgstr ""
-#: libcore/TextField.cpp:2035 libcore/TextField.cpp:2071
-#: libcore/TextField.cpp:2102
-msgid "found NULL character in htmlText"
+#: libcore/swf/PlaceObject2Tag.cpp:227
+#, c-format
+msgid ""
+"swf_event::read() -- unknown / unhandled event type received, flags = 0x%x"
msgstr ""
-#: libcore/TextField.cpp:2075
-msgid "malformed HTML tag, invalid attribute name"
+#: libcore/swf/PlaceObject2Tag.cpp:256
+msgid "Unexpected end of tag while parsing PlaceObject tag events"
msgstr ""
-#: libcore/TextField.cpp:2125
-msgid "malformed HTML tag, invalid attribute value"
+#: libcore/swf/PlaceObject2Tag.cpp:312
+#, c-format
+msgid " PLACEOBJECT2: depth = %d (%d)"
msgstr ""
-#: libcore/TextField.cpp:2158
-msgid "I declare this a HTML syntax error"
+#: libcore/swf/PlaceObject2Tag.cpp:314 libcore/swf/PlaceObject2Tag.cpp:427
+#, c-format
+msgid " char id = %d"
msgstr ""
-#: libcore/SWFMovie.cpp:54
+#: libcore/swf/PlaceObject2Tag.cpp:316 libcore/swf/PlaceObject2Tag.cpp:428
#, c-format
-msgid "Frame %d never loaded. Total frames: %d"
+msgid " SWFMatrix: %s"
msgstr ""
-#: libcore/SWFMovie.cpp:77
+#: libcore/swf/PlaceObject2Tag.cpp:321 libcore/swf/PlaceObject2Tag.cpp:430
#, c-format
-msgid "Frame %d never loaded. Total frames: %d."
+msgid " ratio: %d"
msgstr ""
-#: libcore/SWFMovie.cpp:109
+#: libcore/swf/PlaceObject2Tag.cpp:322 libcore/swf/PlaceObject2Tag.cpp:431
#, c-format
-msgid ""
-"Attempt to perform initialized for a character %s that does not exist "
-"(either not exported or not defined)"
+msgid " name = %s"
msgstr ""
-#: libcore/LineStyle.cpp:186
-msgid ""
-"UNTESTED: Do not know how to interpolate line styles with different vertical "
-"thickness scaling"
+#: libcore/swf/PlaceObject2Tag.cpp:324 libcore/swf/PlaceObject2Tag.cpp:433
+#, c-format
+msgid " clip_depth = %d (%d)"
msgstr ""
-#: libcore/LineStyle.cpp:191
-msgid ""
-"UNTESTED: Do not know how to interpolate line styles with different "
-"horizontal thickness scaling"
+#: libcore/swf/PlaceObject2Tag.cpp:327 libcore/swf/PlaceObject2Tag.cpp:436
+#, c-format
+msgid " m_place_type: %d"
msgstr ""
-#: libcore/DisplayObject.cpp:121
+#: libcore/swf/PlaceObject2Tag.cpp:425
#, c-format
-msgid "loadMovie against a %s DisplayObject"
+msgid " PLACEOBJECT3: depth = %d (%d)"
msgstr ""
-#: libcore/DisplayObject.cpp:258
-msgid "blendMode"
+#: libcore/swf/PlaceObject2Tag.cpp:429
+#, c-format
+msgid " SWFCxForm: %d"
msgstr ""
-#: libcore/DisplayObject.cpp:368
+#: libcore/swf/PlaceObject2Tag.cpp:432
#, c-format
-msgid "Setting _height=%g of DisplayObject %s (%s)"
+msgid " class name = %s"
msgstr ""
-#: libcore/DisplayObject.cpp:796
-msgid "yes"
+#: libcore/swf/PlaceObject2Tag.cpp:435
+msgid " bitmapCaching enabled"
msgstr ""
-#: libcore/DisplayObject.cpp:797
-msgid "no"
+#: libcore/swf/TextRecord.cpp:52
+msgid "end text records"
msgstr ""
-#: libcore/DisplayObject.cpp:803
-msgid "Depth"
+#: libcore/swf/TextRecord.cpp:78
+#, c-format
+msgid " has_font: font id = %d (%p)"
msgstr ""
-#: libcore/DisplayObject.cpp:809
-msgid "Ratio"
+#: libcore/swf/TextRecord.cpp:90
+msgid " hasColor"
msgstr ""
-#: libcore/DisplayObject.cpp:819
-msgid "Clipping depth"
+#: libcore/swf/TextRecord.cpp:99
+#, c-format
+msgid " xOffset = %g"
msgstr ""
-#: libcore/DisplayObject.cpp:824
-msgid "Dimensions"
+#: libcore/swf/TextRecord.cpp:108
+#, c-format
+msgid " yOffset = %g"
msgstr ""
-#: libcore/DisplayObject.cpp:826
-msgid "Dynamic"
+#: libcore/swf/TextRecord.cpp:117
+#, c-format
+msgid " textHeight = %g"
msgstr ""
-#: libcore/DisplayObject.cpp:827
-msgid "Mask"
+#: libcore/swf/TextRecord.cpp:126
+#, c-format
+msgid " GlyphEntries: count = %d"
msgstr ""
-#: libcore/DisplayObject.cpp:828
-msgid "Destroyed"
+#: libcore/swf/TextRecord.cpp:138
+#, c-format
+msgid " glyph%d: index=%d, advance=%g"
msgstr ""
-#: libcore/DisplayObject.cpp:830
-msgid "Unloaded"
+#: libcore/swf/DefineFontAlignZonesTag.cpp:52
+#, c-format
+msgid "DefineFontAlignZones tag references an undefined font %d"
msgstr ""
-#: libcore/DisplayObject.cpp:834
-msgid "Blend mode"
+#: libcore/swf/DefineFontAlignZonesTag.cpp:71
+#, c-format
+msgid "DefineFontAlignZones: font=%d, flags=%d, table int: %s"
msgstr ""
-#: libcore/DisplayObject.cpp:837
-msgid "Invalidated"
+#: libcore/swf/DefineFontAlignZonesTag.cpp:108
+msgid "DefineFontAlignZoneTag"
msgstr ""
-#: libcore/DisplayObject.cpp:839
-msgid "Child invalidated"
+#: libcore/swf/tag_loaders.cpp:83
+msgid "anchor-labeled frame not supported"
msgstr ""
-#: libcore/DisplayObject.cpp:860 libcore/DisplayObject.cpp:1564
+#: libcore/swf/tag_loaders.cpp:87
#, c-format
-msgid "Attempt to set property to %s, refused"
+msgid "frame_label_loader end position %d, read up to %d"
msgstr ""
-#: libcore/DisplayObject.cpp:1095
+#: libcore/swf/tag_loaders.cpp:107
#, c-format
-msgid "Attempt to set %s._y to %s (evaluating to number %g) refused"
+msgid " sprite: char id = %d"
msgstr ""
-#: libcore/DisplayObject.cpp:1126
-#, c-format
-msgid "Attempt to set %s._x to %s (evaluating to number %g) refused"
+#: libcore/swf/tag_loaders.cpp:118
+msgid ""
+"Nested DEFINESPRITE tags. Will add to top-level DisplayObjects dictionary."
msgstr ""
-#: libcore/DisplayObject.cpp:1155
+#: libcore/swf/tag_loaders.cpp:128
#, c-format
-msgid "Attempt to set %s._xscale to %s (evaluating to number %g) refused"
+msgid "Sprite %d advertise no frames"
msgstr ""
-#: libcore/DisplayObject.cpp:1181
+#: libcore/swf/tag_loaders.cpp:169
#, c-format
-msgid "Attempt to set %s._yscale to %s (evaluating to number %g) refused"
+msgid "DEFINESOUNDLOADER: sound sample rate %d (expected 0 to %u)"
msgstr ""
-#: libcore/DisplayObject.cpp:1217
+#: libcore/swf/tag_loaders.cpp:189
#, c-format
-msgid "Attempt to set %s._visible to %s (evaluating to number %g) refused"
+msgid ""
+"define sound: ch=%d, format=%s, rate=%d, 16=%d, stereo=%d, ct=%d, delay=%d"
+msgstr ""
+
+#: libcore/swf/tag_loaders.cpp:217
+msgid "Tag boundary reported past end of SWFStream!"
msgstr ""
-#: libcore/DisplayObject.cpp:1246
+#: libcore/swf/tag_loaders.cpp:237
#, c-format
-msgid "Attempt to set %s._alpha to %s (evaluating to number %g) refused"
+msgid ""
+"There is no sound handler currently active, so DisplayObject with id %d will "
+"not be added to the dictionary"
msgstr ""
-#: libcore/DisplayObject.cpp:1312
+#: libcore/swf/tag_loaders.cpp:271
#, c-format
-msgid "Attempt to set %s._rotation to %s (evaluating to number %g) refused"
+msgid "File attributes: metadata=%s network=%s"
msgstr ""
-#: libcore/DisplayObject.cpp:1352
-msgid "_soundbuftime setting"
+#: libcore/swf/tag_loaders.cpp:272 libcore/swf/tag_loaders.cpp:273
+msgid "true"
msgstr ""
-#: libcore/DisplayObject.cpp:1376
-#, c-format
-msgid "Setting _width=%g of DisplayObject %s (%s)"
+#: libcore/swf/tag_loaders.cpp:272 libcore/swf/tag_loaders.cpp:273
+msgid "false"
msgstr ""
-#: libcore/DisplayObject.cpp:1386 libcore/DisplayObject.cpp:1404
-msgid "_focusrect"
+#: libcore/swf/tag_loaders.cpp:277
+msgid ""
+"FileAttributes tag in the SWF requests that network access is not granted to "
+"this movie (or application?) when loaded from the filesystem. Anyway Gnash "
+"won't care; use white/black listing in your .gnashrc instead"
msgstr ""
-#: libcore/StaticText.cpp:53
-msgid "StaticText::pointInShape"
+#: libcore/swf/tag_loaders.cpp:285
+msgid ""
+"This SWF file requires AVM2: there will be no ActionScript interpretation"
msgstr ""
-#: libcore/AMFConverter.cpp:98
-msgid "Problems serializing an object's member"
+#: libcore/swf/tag_loaders.cpp:310
+#, c-format
+msgid ""
+" RDF metadata (information only): [[\n"
+"%s\n"
+"]]"
msgstr ""
-#: libcore/AMFConverter.cpp:212
+#: libcore/swf/tag_loaders.cpp:326
#, c-format
-msgid "Problems serializing strict array member %d=%s"
+msgid "Descriptive metadata from movie %s: %s"
msgstr ""
-#: libcore/AMFConverter.cpp:242
-msgid "Could not serialize object"
+#: libcore/swf/tag_loaders.cpp:388
+#, c-format
+msgid " reflex = \"%c%c%c\""
msgstr ""
-#: libcore/AMFConverter.cpp:319
+#: libcore/swf/SoundStreamHeadTag.cpp:78
#, c-format
-msgid "Unknown AMF type %s! Cannot proceed"
+msgid "SOUNDSTREAMHEAD: stream sample rate %d (expected 0 to %u)"
msgstr ""
-#: libcore/AMFConverter.cpp:376
+#: libcore/swf/SoundStreamHeadTag.cpp:88
#, c-format
-msgid "AMF parsing error: %s"
+msgid ""
+"Different stream/playback sound rate (%d/%d). This seems common in SWF "
+"files, so we'll warn only once."
msgstr ""
-#: libcore/AMFConverter.cpp:407
-msgid "Read past _end of buffer for strict array length"
+#: libcore/swf/SoundStreamHeadTag.cpp:95
+#, c-format
+msgid ""
+"Different stream/playback sample size (%d/%d). This seems common in SWF "
+"files, so we'll warn only once."
msgstr ""
-#: libcore/AMFConverter.cpp:425
-msgid "Unable to read array elements"
+#: libcore/swf/SoundStreamHeadTag.cpp:101
+#, c-format
+msgid ""
+"Different stream/playback channels (%s/%s). This seems common in SWF files, "
+"so we'll warn only once."
msgstr ""
-#: libcore/AMFConverter.cpp:442
-msgid "Read past _end of buffer for array length"
+#: libcore/swf/SoundStreamHeadTag.cpp:121
+msgid ""
+"No samples advertised for sound stream, pretty common so will warn only once"
msgstr ""
-#: libcore/AMFConverter.cpp:468 libcore/AMFConverter.cpp:489
-msgid "MALFORMED AMF: premature _end of ECMA_ARRAY block"
+#: libcore/swf/SoundStreamHeadTag.cpp:148
+#, c-format
+msgid ""
+"sound stream head: format=%s, rate=%d, 16=%d, stereo=%d, ct=%d, latency=%d"
msgstr ""
-#: libcore/AMFConverter.cpp:480
-msgid "MALFORMED AMF: empty member name not followed by OBJECT_END_AMF0 byte"
+#: libcore/swf/DefineBitsTag.cpp:154
+msgid " jpeg_tables_loader"
msgstr ""
-#: libcore/AMFConverter.cpp:504
-msgid "Unable to read array element"
+#: libcore/swf/DefineBitsTag.cpp:165
+#, c-format
+msgid "No bytes to read in JPEGTABLES tag at offset %d"
+msgstr ""
+
+#: libcore/swf/DefineBitsTag.cpp:206
+#, c-format
+msgid "DEFINEBITS: Duplicate id (%d) for bitmap DisplayObject - discarding it"
msgstr ""
-#: libcore/AMFConverter.cpp:528
-msgid "Could not read object property name"
+#: libcore/swf/DefineBitsTag.cpp:235
+msgid "Failed to parse bitmap for character %1%"
msgstr ""
-#: libcore/AMFConverter.cpp:539
-msgid "AMF buffer terminated just before object _end byte. continuing anyway."
+#: libcore/swf/DefineBitsTag.cpp:243
+msgid "No renderer, not adding bitmap %1%"
msgstr ""
-#: libcore/AMFConverter.cpp:566
-#, c-format
-msgid "readAMF0: invalid reference to object %d (%d known objects)"
+#: libcore/swf/DefineBitsTag.cpp:250
+msgid "Adding bitmap id %1%"
msgstr ""
-#: libcore/AMFConverter.cpp:597
+#: libcore/swf/DefineBitsTag.cpp:269
msgid ""
-"Date type encoded timezone info %1%, even though this field should not be "
-"used."
+"DEFINEBITS: No jpeg loader registered in movie definition - discarding bitmap"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:435
-#, c-format
-msgid "Malformed action code: %s"
+#: libcore/swf/DefineBitsTag.cpp:368
+msgid "gnash is not linked to zlib -- can't load jpeg3 image data"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:450
+#: libcore/swf/DefineBitsTag.cpp:413
#, c-format
-msgid "%s: CHECKME: was broken"
+msgid " defbitslossless2: tag = %d, fmt = %d, w = %d, h = %d"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:595
-#, c-format
-msgid "GetUrl: target=%s URL=%s"
+#: libcore/swf/DefineBitsTag.cpp:420
+msgid "Bitmap has a height or width of 0"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:615
-#, c-format
-msgid "ActionWaitForFrame (0x%X) tag length == %d (expected 3)"
+#: libcore/swf/DefineBitsTag.cpp:426
+msgid "gnash is not linked to zlib -- can't load zipped image data"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:629 libcore/vm/ASHandlers.cpp:1695
-#, c-format
-msgid "%s: environment target is null or not a MovieClip"
+#: libcore/swf/DefineBitsTag.cpp:452
+msgid "Will not allocate %1%x%2% image in DefineBitsLossless tag"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:637
+#: libcore/swf/DefineBitsTag.cpp:477
+msgid "Unknown bitmap format. Ignoring"
+msgstr ""
+
+#: libcore/swf/DefineBitsTag.cpp:591
#, c-format
-msgid "ActionWaitForFrame(%d): target (%s) has only %d frames"
+msgid "inflateWrapper() inflateInit() returned %d (%s)"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:679
-msgid "GotoLabel: environment target is null or not a MovieClip"
+#: libcore/swf/DefineBitsTag.cpp:611
+msgid "inflateWrapper(): no end of zstream found within swf tag boundaries"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:876 libcore/vm/ASHandlers.cpp:1572
-msgid "Negative size passed to ActionSubString, taking as whole length"
+#: libcore/swf/DefineBitsTag.cpp:635
+#, c-format
+msgid "inflateWrapper() inflate() returned %d (%s)"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:893
-msgid "Start is less then 1 in ActionSubString, setting to 1."
+#: libcore/swf/DefineBitsTag.cpp:644
+#, c-format
+msgid "inflateWrapper() inflateEnd() return %d (%s)"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:903
-msgid ""
-"Start goes beyond input string in ActionSubString, returning the empty "
-"string."
+#: libcore/as_function.cpp:94
+#, c-format
+msgid "Native function called as constructor threw exception: %s"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:916
-msgid ""
-"start + size goes beyond input string in ActionSubString, adjusting size"
+#: libcore/FreetypeGlyphsProvider.cpp:256
+#, c-format
+msgid "Can't init FreeType! Error = %d"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:963
+#: libcore/FreetypeGlyphsProvider.cpp:268
#, c-format
-msgid ""
-"Can't assign a sprite/DisplayObject to a variable in SWF%d. We'll return "
-"undefined instead of %s."
+msgid "Can't close FreeType! Error = %d"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:971
+#: libcore/FreetypeGlyphsProvider.cpp:282
#, c-format
-msgid "-- get var: %s=%s"
+msgid "Failed to find fonts directory, using hard-coded font filename \"%s\""
msgstr ""
-#: libcore/vm/ASHandlers.cpp:984
+#: libcore/FreetypeGlyphsProvider.cpp:295
#, c-format
-msgid ""
-"ActionSetVariable: %s=%s: variable name evaluates to invalid (empty) string"
+msgid "Can't init fontconfig library, using hard-coded font filename \"%s\""
msgstr ""
-#: libcore/vm/ASHandlers.cpp:992
+#: libcore/FreetypeGlyphsProvider.cpp:357
#, c-format
-msgid "-- set var: %s = %s"
+msgid "No device font matches the name '%s', using hard-coded font filename"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:1043
+#: libcore/FreetypeGlyphsProvider.cpp:362
msgid ""
-"ActionGetProperty(<empty>) called, but current target is not a DisplayObject"
+"Font filename matching not implemented (no fontconfig support built-in), "
+"using hard-coded font filename"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:1062
-#, c-format
-msgid "Could not find GetProperty target (%s)"
+#: libcore/FreetypeGlyphsProvider.cpp:395
+msgid "Freetype not supported"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:1087
+#: libcore/FreetypeGlyphsProvider.cpp:436
#, c-format
-msgid "ActionSetProperty: can't find target %s for setting property %s"
+msgid "Can't find font file for font '%s'"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:1110
+#: libcore/FreetypeGlyphsProvider.cpp:449
#, c-format
-msgid "duplicateMovieClip: invalid depth %d passed; not duplicating"
+msgid "Font file '%s' has bad format"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:1125
+#: libcore/FreetypeGlyphsProvider.cpp:458
#, c-format
-msgid "Path given to duplicateMovieClip(%s) doesn't point to a DisplayObject"
+msgid "Some error opening font '%s'"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:1136
+#: libcore/FreetypeGlyphsProvider.cpp:492
#, c-format
-msgid "Path given to duplicateMovieClip(%s) is not a sprite"
+msgid "Error loading freetype outline glyph for char '%c' (error: %d)"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:1157
+#: libcore/FreetypeGlyphsProvider.cpp:508
#, c-format
-msgid "Path given to removeMovieClip(%s) doesn't point to a DisplayObject"
+msgid ""
+"FT_Load_Char() returned a glyph format != FT_GLYPH_FORMAT_OUTLINE (%c%c%c%c)"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:1167
-#, c-format
-msgid "Path given to removeMovieClip(%s) is not a sprite"
+#: libcore/FreetypeGlyphsProvider.cpp:563
+msgid "Could not release FT face resources"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:1205
-#, c-format
-msgid "startDrag: unknown target '%s'"
+#: libcore/MovieFactory.cpp:79
+msgid ""
+"Requested to keep from completely loading a movie, but the movie in question "
+"is an image, for which we don't yet have the concept of a 'loading thread'"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:1225
-msgid "Y values in ActionStartDrag swapped, fixing"
+#: libcore/MovieFactory.cpp:94
+msgid "FLV can't be loaded directly as a movie"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:1232
-msgid "X values in ActionStartDrag swapped, fixing"
+#: libcore/MovieFactory.cpp:98
+msgid "Unknown file type"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:1296
+#: libcore/MovieFactory.cpp:133
#, c-format
-msgid "-- %s cast_to %s (invalid args?)"
+msgid "Couldn't load library movie '%s'"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:1335
-#, c-format
-msgid "Stack value on IMPLEMENTSOP is not an object: %s."
+#: libcore/MovieFactory.cpp:173
+msgid "Can't read file header"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:1344
-msgid "Target object for IMPLEMENTSOP has no prototype."
+#: libcore/MovieFactory.cpp:212
+msgid "Can't read 3 bytes after an MZ (.exe) header"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:1351
-#, c-format
-msgid "IMPLEMENTSOP target object's prototype is not an object (%s)"
+#: libcore/MovieFactory.cpp:222
+msgid "Could not find SWF inside an .exe file"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:1359
+#: libcore/MovieFactory.cpp:231
#, c-format
-msgid "Invalid interfaces count (%d) on IMPLEMENTSOP"
+msgid "unknown file type, buffer is %c%c%c"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:1370
+#: libcore/MovieFactory.cpp:273
#, c-format
-msgid "class found on stack on IMPLEMENTSOP is not an object: %s"
-msgstr ""
-
-#: libcore/vm/ASHandlers.cpp:1377
-msgid "Interface object for IMPLEMENTSOP has no prototype."
+msgid "Can't read image file from %s"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:1385
+#: libcore/MovieFactory.cpp:283
#, c-format
-msgid "Prototype of interface object for IMPLEMENTSOP is not an object (%s)."
+msgid "Parsing error: %s"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:1392
+#: libcore/MovieFactory.cpp:309
#, c-format
-msgid "%s (with .prototype %p) implements %s (with .prototype %p)"
+msgid "failed to open '%s'; can't create movie"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:1427
+#: libcore/MovieFactory.cpp:314
#, c-format
-msgid "fscommand2:%s"
+msgid "streamProvider opener can't open '%s'"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:1558
+#: libcore/as_environment.cpp:182
#, c-format
-msgid " ActionMbSubString(%s, %d, %d)"
-msgstr ""
-
-#: libcore/vm/ASHandlers.cpp:1580
-msgid "Base is less then 1 in ActionMbSubString, setting to 1."
+msgid "invalid path '%s' (p=next_slash=%s)"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:1587
-msgid ""
-"base goes beyond input string in ActionMbSubString, returning the empty "
-"string."
+#: libcore/as_environment.cpp:193
+#, c-format
+msgid "invalid path '%s' (dot not allowed after having seen a slash)"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:1599
+#: libcore/as_environment.cpp:332
#, c-format
-msgid ""
-"base+size goes beyond input string in ActionMbSubString, adjusting size "
-"based on length:%d and start:%d"
+msgid "-------------- %s = %s"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:1623 libcore/vm/ASHandlers.cpp:1648
-msgid "Not properly implemented for SWF5"
+#: libcore/as_environment.cpp:346
+#, c-format
+msgid "Path target '%s' not found while setting %s=%s"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:1674
-msgid "ActionStrictMode set to %1%"
+#: libcore/as_environment.cpp:445
+#, c-format
+msgid "Won't set invalid raw variable name: %s"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:1703
+#: libcore/as_environment.cpp:474
#, c-format
msgid ""
-"Frame spec found on stack at ActionWaitForFrame doesn't evaluate to a valid "
-"frame: %s"
+"as_environment::setVariableRaw(%s, %s): neither current target nor original "
+"target are defined, can't set the variable"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:1728
-msgid "Unknown constant '%1%' (no pool registered with VM)"
+#: libcore/as_environment.cpp:486
+#, c-format
+msgid "Won't get invalid raw variable name: %s"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:1736
-msgid "Unknown constant '%1%' (registered pool has %2% entries)"
+#: libcore/as_environment.cpp:567
+#, c-format
+msgid "reference to non-existent variable '%s'"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:1793
-#, c-format
-msgid ""
-"Unknown push type %d. Execution will continue but it is likely to fail due "
-"to lost sync."
+#: libcore/Geometry.cpp:187
+msgid "Collision detection for unidirectionally scaled strokes"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:1835
+#: libcore/as_object.cpp:439
#, c-format
-msgid "Invalid register %d in ActionPush"
+msgid "Caught exception: %s"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:1886
+#: libcore/as_object.cpp:627
#, c-format
-msgid "\t%d) type=%s, value=%s"
+msgid "Attempt to set read-only property '%s'"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:1917
-msgid "Undefined GetUrl2 URL on stack, skipping"
+#: libcore/as_object.cpp:639
+#, c-format
+msgid "%s: %s"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:1949
+#: libcore/as_object.cpp:654
#, c-format
-msgid "branch to offset %d -- this section only runs to %d"
+msgid "Unknown failure in setting property '%s' on object '%p'"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:1983
+#: libcore/as_object.cpp:683
#, c-format
-msgid ""
-"Couldn't find target_sprite \"%s\" in ActionCallFrame! target frame actions "
-"will not be called..."
+msgid "Attempt to initialize read-only property '%s' on object '%p' twice"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:2034
-#, c-format
-msgid ""
-"Frame spec found on stack at ActionGotoExpression doesn't evaluate to a "
-"valid frame: %s"
+#: libcore/as_object.cpp:845
+msgid "Circular inheritance chain detected during isPrototypeOf call"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:2046
-#, c-format
-msgid ""
-"Couldn't find target sprite \"%s\" in ActionGotoExpression. Will not go to "
-"target frame..."
+#: libcore/StaticText.cpp:53
+msgid "StaticText::pointInShape"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:2125
+#: libcore/vm/VM.cpp:222
#, c-format
-msgid "delete %s.%s: no object found to delete"
+msgid "-------------- global register[%d] = '%s'"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:2165
-msgid "delete2 called with a path that does not resolve to an object"
+#: libcore/vm/VM.cpp:250
+#, c-format
+msgid "Recursion limit reached (%u)"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:2191
+#: libcore/vm/CallStack.cpp:64
#, c-format
-msgid "-- set local var: %s = %s"
+msgid "-------------- local register[%d] = '%s'"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:2224
+#: libcore/vm/ASHandlers.cpp:435
#, c-format
-msgid "ActionCallFunction: %s is not an object"
+msgid "Malformed action code: %s"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:2241
+#: libcore/vm/ASHandlers.cpp:450
#, c-format
-msgid ""
-"Attempt to call a function with %u arguments while only %u are available on "
-"the stack."
+msgid "%s: CHECKME: was broken"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:2303
+#: libcore/vm/ASHandlers.cpp:595
#, c-format
-msgid "---new object: %s"
+msgid "GetUrl: target=%s URL=%s"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:2313
+#: libcore/vm/ASHandlers.cpp:615
#, c-format
-msgid "ActionNew: '%s' is not a constructor"
+msgid "ActionWaitForFrame (0x%X) tag length == %d (expected 3)"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:2351
-msgid "The 'var whatever' syntax in timeline context is a no-op."
+#: libcore/vm/ASHandlers.cpp:629 libcore/vm/ASHandlers.cpp:1695
+#, c-format
+msgid "%s: environment target is null or not a MovieClip"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:2439
+#: libcore/vm/ASHandlers.cpp:637
#, c-format
-msgid "Argument to TargetPath(%s) doesn't cast to a DisplayObject"
+msgid "ActionWaitForFrame(%d): target (%s) has only %d frames"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:2474
-#, c-format
-msgid ""
-"Top of stack doesn't evaluate to an object (%s) at ActionEnumerate execution"
+#: libcore/vm/ASHandlers.cpp:679
+msgid "GotoLabel: environment target is null or not a MovieClip"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:2581
-#, c-format
-msgid "getMember called against a value that does not cast to an as_object: %s"
+#: libcore/vm/ASHandlers.cpp:876 libcore/vm/ASHandlers.cpp:1572
+msgid "Negative size passed to ActionSubString, taking as whole length"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:2590
-#, c-format
-msgid " ActionGetMember: target: %s (object %p)"
+#: libcore/vm/ASHandlers.cpp:893
+msgid "Start is less then 1 in ActionSubString, setting to 1."
msgstr ""
-#: libcore/vm/ASHandlers.cpp:2605
-#, c-format
-msgid "-- get_member %s.%s=%s"
+#: libcore/vm/ASHandlers.cpp:903
+msgid ""
+"Start goes beyond input string in ActionSubString, returning the empty "
+"string."
msgstr ""
-#: libcore/vm/ASHandlers.cpp:2624
-#, c-format
+#: libcore/vm/ASHandlers.cpp:916
msgid ""
-"ActionSetMember: %s.%s=%s: member name evaluates to invalid (empty) string"
+"start + size goes beyond input string in ActionSubString, adjusting size"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:2633
+#: libcore/vm/ASHandlers.cpp:963
#, c-format
-msgid "-- set_member %s.%s=%s"
+msgid ""
+"Can't assign a sprite/DisplayObject to a variable in SWF%d. We'll return "
+"undefined instead of %s."
msgstr ""
-#: libcore/vm/ASHandlers.cpp:2645
+#: libcore/vm/ASHandlers.cpp:971
#, c-format
-msgid "-- set_member %s.%s=%s on invalid object!"
+msgid "-- get var: %s=%s"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:2706
+#: libcore/vm/ASHandlers.cpp:984
#, c-format
msgid ""
-"Attempt to call a method with %u arguments while only %u are available on "
-"the stack."
+"ActionSetVariable: %s=%s: variable name evaluates to invalid (empty) string"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:2714
+#: libcore/vm/ASHandlers.cpp:992
#, c-format
-msgid " method name: %s"
+msgid "-- set var: %s = %s"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:2715
-#, c-format
-msgid " method object/func: %s"
+#: libcore/vm/ASHandlers.cpp:1043
+msgid ""
+"ActionGetProperty(<empty>) called, but current target is not a DisplayObject"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:2716
+#: libcore/vm/ASHandlers.cpp:1062
#, c-format
-msgid " method nargs: %d"
+msgid "Could not find GetProperty target (%s)"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:2724
+#: libcore/vm/ASHandlers.cpp:1087
#, c-format
-msgid "ActionCallMethod invoked with non-object object/func (%s)"
+msgid "ActionSetProperty: can't find target %s for setting property %s"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:2758
+#: libcore/vm/ASHandlers.cpp:1110
#, c-format
-msgid "ActionCallMethod: Can't find method %s of object %s"
+msgid "duplicateMovieClip: invalid depth %d passed; not duplicating"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:2770
+#: libcore/vm/ASHandlers.cpp:1125
#, c-format
-msgid "ActionCallMethod: property %d of object %d is not callable (%s)"
+msgid "Path given to duplicateMovieClip(%s) doesn't point to a DisplayObject"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:2843
+#: libcore/vm/ASHandlers.cpp:1136
#, c-format
-msgid ""
-"Attempt to call a constructor with %u arguments while only %u are available "
-"on the stack."
+msgid "Path given to duplicateMovieClip(%s) is not a sprite"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:2855
-msgid "On ActionNewMethod: no object found on stack on ActionMethod"
+#: libcore/vm/ASHandlers.cpp:1157
+#, c-format
+msgid "Path given to removeMovieClip(%s) doesn't point to a DisplayObject"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:2872
+#: libcore/vm/ASHandlers.cpp:1167
#, c-format
-msgid "ActionNewMethod: can't find method %s of object %s"
+msgid "Path given to removeMovieClip(%s) is not a sprite"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:2884
-msgid "ActionNewMethod: method name is undefined and object is not a function"
+#: libcore/vm/ASHandlers.cpp:1205
+#, c-format
+msgid "startDrag: unknown target '%s'"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:2923
-#, c-format
-msgid "-- %s instanceof %s (invalid args?)"
+#: libcore/vm/ASHandlers.cpp:1225
+msgid "Y values in ActionStartDrag swapped, fixing"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:2952
-#, c-format
-msgid "Top of stack not an object %s at ActionEnum2 execution"
+#: libcore/vm/ASHandlers.cpp:1232
+msgid "X values in ActionStartDrag swapped, fixing"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:3086
+#: libcore/vm/ASHandlers.cpp:1296
#, c-format
-msgid "ActionExtends: Super is not an object (%s)"
+msgid "-- %s cast_to %s (invalid args?)"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:3090
+#: libcore/vm/ASHandlers.cpp:1335
#, c-format
-msgid "ActionExtends: Sub is not a function (%s)"
+msgid "Stack value on IMPLEMENTSOP is not an object: %s."
msgstr ""
-#: libcore/vm/ASHandlers.cpp:3191
-#, c-format
-msgid ""
-"function2 code len (%u) overflows DOACTION tag boundaries (DOACTION tag len="
-"%d, function2 code offset=%d). Forcing code len to eat the whole buffer "
-"(would this work?)."
+#: libcore/vm/ASHandlers.cpp:1344
+msgid "Target object for IMPLEMENTSOP has no prototype."
msgstr ""
-#: libcore/vm/ASHandlers.cpp:3213
+#: libcore/vm/ASHandlers.cpp:1351
#, c-format
-msgid "DefineFunction2: named function '%s' starts at PC %d"
+msgid "IMPLEMENTSOP target object's prototype is not an object (%s)"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:3223
+#: libcore/vm/ASHandlers.cpp:1359
#, c-format
-msgid "DefineFunction2: anonymous function starts at PC %d"
+msgid "Invalid interfaces count (%d) on IMPLEMENTSOP"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:3275
+#: libcore/vm/ASHandlers.cpp:1370
#, c-format
-msgid ""
-"ActionTry: reserved:%x doFinally:%d doCatch:%d trySize:%u catchSize:%u "
-"finallySize:%u catchName:%s catchRegister:%u"
+msgid "class found on stack on IMPLEMENTSOP is not an object: %s"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:3304
-msgid "ActionWith tag length != 2; skipping"
+#: libcore/vm/ASHandlers.cpp:1377
+msgid "Interface object for IMPLEMENTSOP has no prototype."
msgstr ""
-#: libcore/vm/ASHandlers.cpp:3314
-msgid "Empty with() block..."
+#: libcore/vm/ASHandlers.cpp:1385
+#, c-format
+msgid "Prototype of interface object for IMPLEMENTSOP is not an object (%s)."
msgstr ""
-#: libcore/vm/ASHandlers.cpp:3325
+#: libcore/vm/ASHandlers.cpp:1392
#, c-format
-msgid "with(%s) : first argument doesn't cast to an object!"
+msgid "%s (with .prototype %p) implements %s (with .prototype %p)"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:3440
+#: libcore/vm/ASHandlers.cpp:1427
#, c-format
-msgid "Unsupported action handler invoked, code at pc is %#x"
+msgid "fscommand2:%s"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:3500
-msgid "Bogus empty GetUrl URL in SWF file, skipping"
+#: libcore/vm/ASHandlers.cpp:1558
+#, c-format
+msgid " ActionMbSubString(%s, %d, %d)"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:3512
-msgid ""
-"Bogus GetUrl2 send vars method in SWF file (both GET and POST requested). "
-"Using GET"
+#: libcore/vm/ASHandlers.cpp:1580
+msgid "Base is less then 1 in ActionMbSubString, setting to 1."
msgstr ""
-#: libcore/vm/ASHandlers.cpp:3571
-#, c-format
-msgid "getURL: target %s not found"
+#: libcore/vm/ASHandlers.cpp:1587
+msgid ""
+"base goes beyond input string in ActionMbSubString, returning the empty "
+"string."
msgstr ""
-#: libcore/vm/ASHandlers.cpp:3577
+#: libcore/vm/ASHandlers.cpp:1599
#, c-format
-msgid "getURL: target %s is not a sprite"
-msgstr ""
-
-#: libcore/vm/ASHandlers.cpp:3596
-msgid "commonGetURL: current target is undefined"
+msgid ""
+"base+size goes beyond input string in ActionMbSubString, adjusting size "
+"based on length:%d and start:%d"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:3616
-#, c-format
-msgid "Unknown loadMovie target: %s"
+#: libcore/vm/ASHandlers.cpp:1623 libcore/vm/ASHandlers.cpp:1648
+msgid "Not properly implemented for SWF5"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:3630
-#, c-format
-msgid "get URL: target %s is not a sprite"
+#: libcore/vm/ASHandlers.cpp:1674
+msgid "ActionStrictMode set to %1%"
msgstr ""
-#: libcore/vm/ASHandlers.cpp:3695
+#: libcore/vm/ASHandlers.cpp:1703
#, c-format
-msgid "Couldn't find movie \"%s\" to set target to! Setting target to NULL..."
+msgid ""
+"Frame spec found on stack at ActionWaitForFrame doesn't evaluate to a valid "
+"frame: %s"
msgstr ""
-#: libcore/vm/CallStack.cpp:64
-#, c-format
-msgid "-------------- local register[%d] = '%s'"
+#: libcore/vm/ASHandlers.cpp:1728
+msgid "Unknown constant '%1%' (no pool registered with VM)"
msgstr ""
-#: libcore/vm/Machine.cpp:895
-#, c-format
-msgid "Can't push a null value onto the scope stack (%s)."
+#: libcore/vm/ASHandlers.cpp:1736
+msgid "Unknown constant '%1%' (registered pool has %2% entries)"
msgstr ""
-#: libcore/vm/Machine.cpp:1438
+#: libcore/vm/ASHandlers.cpp:1793
#, c-format
msgid ""
-"CALLPROP: Can't call a method of a value that doesn't cast to an object (%s)."
+"Unknown push type %d. Execution will continue but it is likely to fail due "
+"to lost sync."
msgstr ""
-#: libcore/vm/Machine.cpp:1455
+#: libcore/vm/ASHandlers.cpp:1835
#, c-format
-msgid "CALLPROP: Property '%s' of object '%s' is '%s', cannot call as method"
+msgid "Invalid register %d in ActionPush"
msgstr ""
-#: libcore/vm/Machine.cpp:1983
+#: libcore/vm/ASHandlers.cpp:1886
#, c-format
-msgid "GETPROPERTY: Looking for property %s of object %s"
+msgid "\t%d) type=%s, value=%s"
msgstr ""
-#: libcore/vm/Machine.cpp:1987
-#, c-format
-msgid "GETPROPERTY: expecting object on stack, got %s."
+#: libcore/vm/ASHandlers.cpp:1917
+msgid "Undefined GetUrl2 URL on stack, skipping"
msgstr ""
-#: libcore/vm/Machine.cpp:2122
+#: libcore/vm/ASHandlers.cpp:1949
#, c-format
-msgid "ABC_ACTION_SETSLOT: unexpected non-object stack value %s"
+msgid "branch to offset %d -- this section only runs to %d"
msgstr ""
-#: libcore/vm/ActionExec.cpp:147
+#: libcore/vm/ASHandlers.cpp:1983
#, c-format
msgid ""
-"at ActionExec operator() start, pc=%d, stop_pc=%d, code.size=%d, func=%d, "
-"codeVersion=%d"
-msgstr ""
-
-#: libcore/vm/ActionExec.cpp:152 libcore/vm/ActionExec.cpp:285
-#: libcore/vm/ActionExec.cpp:296
-#, c-format
-msgid "%s"
+"Couldn't find target_sprite \"%s\" in ActionCallFrame! target frame actions "
+"will not be called..."
msgstr ""
-#: libcore/vm/ActionExec.cpp:222
+#: libcore/vm/ASHandlers.cpp:2034
#, c-format
-msgid "PC:%d - EX: %s"
+msgid ""
+"Frame spec found on stack at ActionGotoExpression doesn't evaluate to a "
+"valid frame: %s"
msgstr ""
-#: libcore/vm/ActionExec.cpp:239
+#: libcore/vm/ASHandlers.cpp:2046
#, c-format
msgid ""
-"Length %u (%d) of action tag id %u at pc %d overflows actions buffer size %d"
+"Couldn't find target sprite \"%s\" in ActionGotoExpression. Will not go to "
+"target frame..."
msgstr ""
-#: libcore/vm/ActionExec.cpp:292
+#: libcore/vm/ASHandlers.cpp:2125
#, c-format
-msgid "After execution: PC %d, next PC %d, stack follows"
+msgid "delete %s.%s: no object found to delete"
msgstr ""
-#: libcore/vm/ActionExec.cpp:306
-msgid ""
-"Time exceeded (%4% secs) while executing code in %1% between pc %2% and %3%. "
-"Disable scripts?"
+#: libcore/vm/ASHandlers.cpp:2165
+msgid "delete2 called with a path that does not resolve to an object"
msgstr ""
-#: libcore/vm/ActionExec.cpp:541
-msgid ""
-"Stack smashed (ActionScript compiler bug, or obfuscated SWF). Taking no "
-"action to fix (as expected)."
+#: libcore/vm/ASHandlers.cpp:2191
+#, c-format
+msgid "-- set local var: %s = %s"
msgstr ""
-#: libcore/vm/ActionExec.cpp:545
+#: libcore/vm/ASHandlers.cpp:2224
#, c-format
-msgid "%d elements left on the stack after block execution."
+msgid "ActionCallFunction: %s is not an object"
msgstr ""
-#: libcore/vm/ActionExec.cpp:564
+#: libcore/vm/ASHandlers.cpp:2241
#, c-format
msgid ""
-"End of DoAction block hit while skipping %d action tags (pc:%d, stop_pc:%d) "
-"(WaitForFrame, probably)"
+"Attempt to call a function with %u arguments while only %u are available on "
+"the stack."
msgstr ""
-#: libcore/vm/ActionExec.cpp:674
+#: libcore/vm/ASHandlers.cpp:2303
#, c-format
-msgid "Jump outside DoAction tag requested (offset %d before tag start)"
+msgid "---new object: %s"
msgstr ""
-#: libcore/vm/VM.cpp:222
+#: libcore/vm/ASHandlers.cpp:2313
#, c-format
-msgid "-------------- global register[%d] = '%s'"
+msgid "ActionNew: '%s' is not a constructor"
msgstr ""
-#: libcore/vm/VM.cpp:250
-#, c-format
-msgid "Recursion limit reached (%u)"
+#: libcore/vm/ASHandlers.cpp:2351
+msgid "The 'var whatever' syntax in timeline context is a no-op."
msgstr ""
-#: libcore/Button.cpp:477
+#: libcore/vm/ASHandlers.cpp:2439
#, c-format
-msgid "Unhandled button event %s"
-msgstr ""
-
-#: libcore/Button.cpp:788
-msgid "Button placed with an init object. This will be ignored."
+msgid "Argument to TargetPath(%s) doesn't cast to a DisplayObject"
msgstr ""
-#: libcore/Button.cpp:956
-msgid "Enabled"
+#: libcore/vm/ASHandlers.cpp:2474
+#, c-format
+msgid ""
+"Top of stack doesn't evaluate to an object (%s) at ActionEnumerate execution"
msgstr ""
-#: libcore/Button.cpp:961
-msgid "Button state"
+#: libcore/vm/ASHandlers.cpp:2581
+#, c-format
+msgid "getMember called against a value that does not cast to an as_object: %s"
msgstr ""
-#: libcore/Button.cpp:965
-msgid "Action characters"
+#: libcore/vm/ASHandlers.cpp:2590
+#, c-format
+msgid " ActionGetMember: target: %s (object %p)"
msgstr ""
-#: libcore/Button.cpp:994
-msgid "Button.blendMode"
+#: libcore/vm/ASHandlers.cpp:2605
+#, c-format
+msgid "-- get_member %s.%s=%s"
msgstr ""
-#: libcore/Button.cpp:1003
-msgid "Button.cacheAsBitmap"
+#: libcore/vm/ASHandlers.cpp:2624
+#, c-format
+msgid ""
+"ActionSetMember: %s.%s=%s: member name evaluates to invalid (empty) string"
msgstr ""
-#: libcore/Button.cpp:1012
-msgid "Button.filters"
+#: libcore/vm/ASHandlers.cpp:2633
+#, c-format
+msgid "-- set_member %s.%s=%s"
msgstr ""
-#: libcore/Button.cpp:1021
-msgid "Button.scale9Grid"
+#: libcore/vm/ASHandlers.cpp:2645
+#, c-format
+msgid "-- set_member %s.%s=%s on invalid object!"
msgstr ""
-#: libcore/Button.cpp:1030
-msgid "Button.getTabIndex"
+#: libcore/vm/ASHandlers.cpp:2706
+#, c-format
+msgid ""
+"Attempt to call a method with %u arguments while only %u are available on "
+"the stack."
msgstr ""
-#: libcore/Button.cpp:1039
-msgid "Button.setTabIndex"
+#: libcore/vm/ASHandlers.cpp:2714
+#, c-format
+msgid " method name: %s"
msgstr ""
-#: libcore/as_environment.cpp:182
+#: libcore/vm/ASHandlers.cpp:2715
#, c-format
-msgid "invalid path '%s' (p=next_slash=%s)"
+msgid " method object/func: %s"
msgstr ""
-#: libcore/as_environment.cpp:193
+#: libcore/vm/ASHandlers.cpp:2716
#, c-format
-msgid "invalid path '%s' (dot not allowed after having seen a slash)"
+msgid " method nargs: %d"
msgstr ""
-#: libcore/as_environment.cpp:332
+#: libcore/vm/ASHandlers.cpp:2724
#, c-format
-msgid "-------------- %s = %s"
+msgid "ActionCallMethod invoked with non-object object/func (%s)"
msgstr ""
-#: libcore/as_environment.cpp:346
+#: libcore/vm/ASHandlers.cpp:2758
#, c-format
-msgid "Path target '%s' not found while setting %s=%s"
+msgid "ActionCallMethod: Can't find method %s of object %s"
msgstr ""
-#: libcore/as_environment.cpp:445
+#: libcore/vm/ASHandlers.cpp:2770
#, c-format
-msgid "Won't set invalid raw variable name: %s"
+msgid "ActionCallMethod: property %d of object %d is not callable (%s)"
msgstr ""
-#: libcore/as_environment.cpp:474
+#: libcore/vm/ASHandlers.cpp:2843
#, c-format
msgid ""
-"as_environment::setVariableRaw(%s, %s): neither current target nor original "
-"target are defined, can't set the variable"
+"Attempt to call a constructor with %u arguments while only %u are available "
+"on the stack."
msgstr ""
-#: libcore/as_environment.cpp:486
-#, c-format
-msgid "Won't get invalid raw variable name: %s"
+#: libcore/vm/ASHandlers.cpp:2855
+msgid "On ActionNewMethod: no object found on stack on ActionMethod"
msgstr ""
-#: libcore/as_environment.cpp:567
+#: libcore/vm/ASHandlers.cpp:2872
#, c-format
-msgid "reference to non-existent variable '%s'"
+msgid "ActionNewMethod: can't find method %s of object %s"
msgstr ""
-#: libcore/MovieClip.cpp:621
-#, c-format
-msgid "call_frame('%s') -- invalid frame"
+#: libcore/vm/ASHandlers.cpp:2884
+msgid "ActionNewMethod: method name is undefined and object is not a function"
msgstr ""
-#: libcore/MovieClip.cpp:667
-msgid "Can't clone root of the movie"
+#: libcore/vm/ASHandlers.cpp:2923
+#, c-format
+msgid "-- %s instanceof %s (invalid args?)"
msgstr ""
-#: libcore/MovieClip.cpp:675
+#: libcore/vm/ASHandlers.cpp:2952
#, c-format
-msgid "%s parent is not a movieclip, can't clone"
+msgid "Top of stack not an object %s at ActionEnum2 execution"
msgstr ""
-#: libcore/MovieClip.cpp:852
-msgid "MovieClip.unloadMovie()"
+#: libcore/vm/ASHandlers.cpp:3089
+#, c-format
+msgid "ActionExtends: Super is not an object (%s)"
msgstr ""
-#: libcore/MovieClip.cpp:885
+#: libcore/vm/ASHandlers.cpp:3093
#, c-format
-msgid "advance_movieclip: no frames loaded for movieclip/movie %s"
+msgid "ActionExtends: Sub is not a function (%s)"
msgstr ""
-#: libcore/MovieClip.cpp:935
+#: libcore/vm/ASHandlers.cpp:3194
+#, c-format
msgid ""
-"Flushing orphaned tags in movieclip %1%. _currentFrame:%2%, _hasLooped:%3%, "
-"frame_count:%4%"
+"function2 code len (%u) overflows DOACTION tag boundaries (DOACTION tag len="
+"%d, function2 code offset=%d). Forcing code len to eat the whole buffer "
+"(would this work?)."
msgstr ""
-#: libcore/MovieClip.cpp:1046
+#: libcore/vm/ASHandlers.cpp:3216
#, c-format
-msgid "Executing %d tags in frame %d/%d of movieclip %s"
+msgid "DefineFunction2: named function '%s' starts at PC %d"
msgstr ""
-#: libcore/MovieClip.cpp:1084 libcore/MovieClip.cpp:1125
+#: libcore/vm/ASHandlers.cpp:3226
#, c-format
-msgid ""
-"Target frame of a gotoFrame(%d) was never loaded, although frame count in "
-"header (%d) said we should have found it"
+msgid "DefineFunction2: anonymous function starts at PC %d"
msgstr ""
-#: libcore/MovieClip.cpp:1116
+#: libcore/vm/ASHandlers.cpp:3278
#, c-format
msgid ""
-"GotoFrame(%d) targets a yet to be loaded frame (%d). We'll wait for it but a "
-"more correct form is explicitly using WaitForFrame instead"
+"ActionTry: reserved:%x doFinally:%d doCatch:%d trySize:%u catchSize:%u "
+"finallySize:%u catchName:%s catchRegister:%u"
msgstr ""
-#: libcore/MovieClip.cpp:1189
-#, c-format
-msgid "MovieClip::goto_labeled_frame('%s') unknown label"
+#: libcore/vm/ASHandlers.cpp:3307
+msgid "ActionWith tag length != 2; skipping"
msgstr ""
-#: libcore/MovieClip.cpp:1248
-#, c-format
-msgid "MovieClip::add_display_object(): unknown cid = %d"
+#: libcore/vm/ASHandlers.cpp:3317
+msgid "Empty with() block..."
msgstr ""
-#: libcore/MovieClip.cpp:1318
+#: libcore/vm/ASHandlers.cpp:3328
#, c-format
-msgid "movieclip::replace_display_object(): unknown cid = %d"
+msgid "with(%s) : first argument doesn't cast to an object!"
msgstr ""
-#: libcore/MovieClip.cpp:1327
+#: libcore/vm/ASHandlers.cpp:3443
#, c-format
+msgid "Unsupported action handler invoked, code at pc is %#x"
+msgstr ""
+
+#: libcore/vm/ASHandlers.cpp:3503
+msgid "Bogus empty GetUrl URL in SWF file, skipping"
+msgstr ""
+
+#: libcore/vm/ASHandlers.cpp:3515
msgid ""
-"MovieClip::replace_display_object: could not find any DisplayObject at depth "
-"%d"
+"Bogus GetUrl2 send vars method in SWF file (both GET and POST requested). "
+"Using GET"
msgstr ""
-#: libcore/MovieClip.cpp:1905
+#: libcore/vm/ASHandlers.cpp:3574
#, c-format
-msgid "Could not load variables from %s"
+msgid "getURL: target %s not found"
msgstr ""
-#: libcore/MovieClip.cpp:1958
+#: libcore/vm/ASHandlers.cpp:3580
#, c-format
-msgid ""
-"removeMovieClip(%s): movieclip depth (%d) out of the 'dynamic' zone "
-"[0..1048575], won't remove"
+msgid "getURL: target %s is not a sprite"
msgstr ""
-#: libcore/parser/TypesParser.cpp:145
-#, c-format
-msgid "Invalid rectangle: minx=%g maxx=%g miny=%g maxy=%g"
+#: libcore/vm/ASHandlers.cpp:3599
+msgid "commonGetURL: current target is undefined"
msgstr ""
-#: libcore/parser/TypesParser.cpp:161
+#: libcore/vm/ASHandlers.cpp:3619
#, c-format
-msgid " FillStyle read type = 0x%X"
+msgid "Unknown loadMovie target: %s"
msgstr ""
-#: libcore/parser/TypesParser.cpp:207
+#: libcore/vm/ASHandlers.cpp:3633
#, c-format
-msgid " gradients count: %d"
+msgid "get URL: target %s is not a sprite"
msgstr ""
-#: libcore/parser/TypesParser.cpp:212
-msgid "No gradients!"
+#: libcore/vm/ASHandlers.cpp:3698
+#, c-format
+msgid "Couldn't find movie \"%s\" to set target to! Setting target to NULL..."
msgstr ""
-#: libcore/parser/TypesParser.cpp:266
-msgid "Illegal spread mode in gradient definition."
+#: libcore/vm/Machine.cpp:895
+#, c-format
+msgid "Can't push a null value onto the scope stack (%s)."
msgstr ""
-#: libcore/parser/TypesParser.cpp:283
-msgid "Illegal interpolation mode in gradient definition."
+#: libcore/vm/Machine.cpp:1438
+#, c-format
+msgid ""
+"CALLPROP: Can't call a method of a value that doesn't cast to an object (%s)."
msgstr ""
-#: libcore/parser/TypesParser.cpp:408
+#: libcore/vm/Machine.cpp:1455
#, c-format
-msgid " color: %s"
+msgid "CALLPROP: Property '%s' of object '%s' is '%s', cannot call as method"
msgstr ""
-#: libcore/parser/sprite_definition.cpp:64
+#: libcore/vm/Machine.cpp:1983
#, c-format
-msgid " frames = %d"
+msgid "GETPROPERTY: Looking for property %s of object %s"
msgstr ""
-#: libcore/parser/sprite_definition.cpp:77
+#: libcore/vm/Machine.cpp:1987
#, c-format
-msgid ""
-"%d frames advertised in header, but only %d SHOWFRAME tags found in define "
-"sprite."
+msgid "GETPROPERTY: expecting object on stack, got %s."
msgstr ""
-#: libcore/parser/sprite_definition.cpp:87
-msgid " -- sprite END --"
+#: libcore/vm/Machine.cpp:2122
+#, c-format
+msgid "ABC_ACTION_SETSLOT: unexpected non-object stack value %s"
msgstr ""
-#: libcore/parser/filter_factory.cpp:54
+#: libcore/vm/ActionExec.cpp:147
#, c-format
-msgid " number of filters: %d"
+msgid ""
+"at ActionExec operator() start, pc=%d, stop_pc=%d, code.size=%d, func=%d, "
+"codeVersion=%d"
msgstr ""
-#: libcore/parser/filter_factory.cpp:92
+#: libcore/vm/ActionExec.cpp:152 libcore/vm/ActionExec.cpp:285
+#: libcore/vm/ActionExec.cpp:296
#, c-format
-msgid "Invalid filter type %d."
+msgid "%s"
msgstr ""
-#: libcore/parser/filter_factory.cpp:102
+#: libcore/vm/ActionExec.cpp:222
#, c-format
-msgid "Filter %d could not read."
+msgid "PC:%d - EX: %s"
msgstr ""
-#: libcore/parser/filter_factory.cpp:134
+#: libcore/vm/ActionExec.cpp:239
#, c-format
-msgid " DropShadowFilter: blurX=%f blurY=%f"
+msgid ""
+"Length %u (%d) of action tag id %u at pc %d overflows actions buffer size %d"
msgstr ""
-#: libcore/parser/filter_factory.cpp:153
+#: libcore/vm/ActionExec.cpp:292
#, c-format
-msgid " BlurFilter: blurX=%f blurY=%f quality=%d"
+msgid "After execution: PC %d, next PC %d, stack follows"
msgstr ""
-#: libcore/parser/filter_factory.cpp:180
-msgid " GlowFilter "
+#: libcore/vm/ActionExec.cpp:306
+msgid ""
+"Time exceeded (%4% secs) while executing code in %1% between pc %2% and %3%. "
+"Disable scripts?"
msgstr ""
-#: libcore/parser/filter_factory.cpp:218
-msgid " BevelFilter "
+#: libcore/vm/ActionExec.cpp:541
+msgid ""
+"Stack smashed (ActionScript compiler bug, or obfuscated SWF). Taking no "
+"action to fix (as expected)."
msgstr ""
-#: libcore/parser/filter_factory.cpp:265
-msgid " GradientGlowFilter "
+#: libcore/vm/ActionExec.cpp:545
+#, c-format
+msgid "%d elements left on the stack after block execution."
msgstr ""
-#: libcore/parser/filter_factory.cpp:301
-msgid " ConvolutionFilter "
+#: libcore/vm/ActionExec.cpp:564
+#, c-format
+msgid ""
+"End of DoAction block hit while skipping %d action tags (pc:%d, stop_pc:%d) "
+"(WaitForFrame, probably)"
msgstr ""
-#: libcore/parser/filter_factory.cpp:318
-msgid " ColorMatrixFilter: "
+#: libcore/vm/ActionExec.cpp:674
+#, c-format
+msgid "Jump outside DoAction tag requested (offset %d before tag start)"
msgstr ""
-#: libcore/parser/filter_factory.cpp:319 libcore/parser/filter_factory.cpp:322
-#: libcore/parser/filter_factory.cpp:325 libcore/parser/filter_factory.cpp:328
+#: libcore/MovieLoader.cpp:260
#, c-format
-msgid " %g, %g, %g, %g, %g"
+msgid "Can't create Movie instance for definition loaded from %s"
msgstr ""
-#: libcore/parser/filter_factory.cpp:375
-msgid " GradientBevelFilter "
+#: libcore/ClassHierarchy.cpp:85
+#, c-format
+msgid "Native class %s is not an object after initialization (%s)"
msgstr ""
-#: libcore/parser/action_buffer.cpp:57
+#: libcore/ClassHierarchy.cpp:92
#, c-format
-msgid "Empty action buffer starting at offset %lu"
+msgid "Native class %s is not found after initialization"
msgstr ""
-#: libcore/parser/action_buffer.cpp:94
-#, c-format
-msgid "Action buffer starting at offset %lu doesn't end with an END tag"
+#: libcore/RGBA.cpp:47
+msgid "Failed to convert string to RGBA value! This is a Gnash bug"
msgstr ""
-#: libcore/parser/action_buffer.cpp:132
-msgid "action buffer dict length exceeded"
+#: libcore/SWFStream.cpp:475
+msgid "Attempt to seek past the end of an opened tag"
msgstr ""
-#: libcore/parser/action_buffer.cpp:614
-msgid "Native double floating point format not recognised"
+#: libcore/SWFStream.cpp:483
+msgid "Attempt to seek before start of an opened tag"
msgstr ""
-#: libcore/parser/SWFParser.cpp:90
-msgid "SHOWFRAME tag"
+#: libcore/SWFStream.cpp:496
+msgid "Unexpected end of stream"
msgstr ""
-#: libcore/parser/SWFParser.cpp:100
+#: libcore/SWFStream.cpp:564
#, c-format
msgid ""
-"Encountered unknown tag %d. These usually store creation tool data and do "
-"not affect playback"
+"Tag %d starting at offset %d is advertised to end at offset %d, which is "
+"after end of previously opened tag starting at offset %d and ending at "
+"offset %d. Making it end where container tag ends."
msgstr ""
-#: libcore/parser/SWFParser.cpp:105
+#: libcore/SWFStream.cpp:581
#, c-format
-msgid "tag dump follows: %s"
+msgid "SWF[%lu]: tag type = %d, tag length = %d, end tag = %lu"
msgstr ""
-#: libcore/parser/SWFParser.cpp:113
-#, c-format
-msgid "Parsing exception: %s"
+#: libcore/SWFStream.cpp:602
+msgid "Could not seek to reported end of tag"
msgstr ""
-#: libcore/parser/SWFMovieDefinition.cpp:255
+#: libcore/SWFStream.cpp:617
#, c-format
-msgid "Add sound sample %d assigning id %d"
-msgstr ""
-
-#: libcore/parser/SWFMovieDefinition.cpp:284
-msgid ""
-"gnash::SWFMovieDefinition::read() -- file does not start with a SWF header"
+msgid "SWFStream::consumeInput: underlying stream couldn't go_to_end: %s"
msgstr ""
-#: libcore/parser/SWFMovieDefinition.cpp:291
+#: libcore/DisplayObject.cpp:124
#, c-format
-msgid "version: %d, file_length: %d"
+msgid "loadMovie against a %s DisplayObject"
msgstr ""
-#: libcore/parser/SWFMovieDefinition.cpp:296
-msgid ""
-"SWFMovieDefinition::read(): unable to read zipped SWF data; gnash was "
-"compiled without zlib support"
+#: libcore/DisplayObject.cpp:261
+msgid "blendMode"
msgstr ""
-#: libcore/parser/SWFMovieDefinition.cpp:301
-msgid "file is compressed"
+#: libcore/DisplayObject.cpp:371
+#, c-format
+msgid "Setting _height=%g of DisplayObject %s (%s)"
msgstr ""
-#: libcore/parser/SWFMovieDefinition.cpp:320
-msgid "non-finite movie bounds"
+#: libcore/DisplayObject.cpp:799
+msgid "yes"
msgstr ""
-#: libcore/parser/SWFMovieDefinition.cpp:336
-#, c-format
-msgid "frame size = %s, frame rate = %f, frames = %d"
+#: libcore/DisplayObject.cpp:800
+msgid "no"
msgstr ""
-#: libcore/parser/SWFMovieDefinition.cpp:360
-msgid "Could not start loading thread"
+#: libcore/DisplayObject.cpp:806
+msgid "Depth"
msgstr ""
-#: libcore/parser/SWFMovieDefinition.cpp:431
-#, c-format
-msgid "Could not find char %d, dump is: %s"
+#: libcore/DisplayObject.cpp:812
+msgid "Ratio"
msgstr ""
-#: libcore/parser/SWFMovieDefinition.cpp:490
-msgid "Error while parsing SWF stream."
+#: libcore/DisplayObject.cpp:822
+msgid "Clipping depth"
msgstr ""
-#: libcore/parser/SWFMovieDefinition.cpp:502
-#, c-format
-msgid "%d control tags are NOT followed by a SHOWFRAME tag"
+#: libcore/DisplayObject.cpp:827
+msgid "Dimensions"
msgstr ""
-#: libcore/parser/SWFMovieDefinition.cpp:510
-#, c-format
-msgid ""
-"%d frames advertised in header, but only %d SHOWFRAME tags found in stream. "
-"Pretending we loaded all advertised frames"
+#: libcore/DisplayObject.cpp:829
+msgid "Dynamic"
msgstr ""
-#: libcore/parser/SWFMovieDefinition.cpp:538
-#, c-format
-msgid ""
-"number of SHOWFRAME tags in SWF stream '%s' (%d) exceeds the advertised "
-"number in header (%d)."
+#: libcore/DisplayObject.cpp:830
+msgid "Mask"
msgstr ""
-#: libcore/parser/SWFMovieDefinition.cpp:605
-msgid "More than one JPEGTABLES tag found: not resetting JPEG loader"
+#: libcore/DisplayObject.cpp:831
+msgid "Destroyed"
msgstr ""
-#: libcore/parser/SWFMovieDefinition.cpp:745
-#, c-format
-msgid "import error: could not find resource '%s' in movie '%s'"
+#: libcore/DisplayObject.cpp:833
+msgid "Unloaded"
msgstr ""
-#: libcore/Video.cpp:57
-msgid "No Media handler registered, won't be able to decode embedded video"
+#: libcore/DisplayObject.cpp:837
+msgid "Blend mode"
msgstr ""
-#: libcore/Video.cpp:69
-#, c-format
-msgid "Could not create Video Decoder: %s"
+#: libcore/DisplayObject.cpp:840
+msgid "Invalidated"
msgstr ""
-#: libcore/Video.cpp:138
-msgid "No Video info in video definition"
+#: libcore/DisplayObject.cpp:842
+msgid "Child invalidated"
msgstr ""
-#: libcore/as_function.cpp:94
+#: libcore/DisplayObject.cpp:863 libcore/DisplayObject.cpp:1567
#, c-format
-msgid "Native function called as constructor threw exception: %s"
+msgid "Attempt to set property to %s, refused"
msgstr ""
-#: libcore/movie_root.cpp:238
+#: libcore/DisplayObject.cpp:1098
#, c-format
-msgid "ActionParserException thrown during setRootMovie: %s"
+msgid "Attempt to set %s._y to %s (evaluating to number %g) refused"
msgstr ""
-#: libcore/movie_root.cpp:253
+#: libcore/DisplayObject.cpp:1129
#, c-format
-msgid "No user interface registered, assuming 'Yes' answer to question: %s"
+msgid "Attempt to set %s._x to %s (evaluating to number %g) refused"
msgstr ""
-#: libcore/movie_root.cpp:402 libcore/movie_root.cpp:412
+#: libcore/DisplayObject.cpp:1158
#, c-format
-msgid ""
-"%s.swapDepth(%d): movie has a depth (%d) below static depth zone (%d), won't "
-"swap its depth"
-msgstr ""
-
-#: libcore/movie_root.cpp:470
-msgid ""
-"movie_root::dropLevel called against a movie not found in the levels "
-"container"
-msgstr ""
-
-#: libcore/movie_root.cpp:477
-msgid "Original root movie can't be removed"
+msgid "Attempt to set %s._xscale to %s (evaluating to number %g) refused"
msgstr ""
-#: libcore/movie_root.cpp:496
+#: libcore/DisplayObject.cpp:1184
#, c-format
-msgid ""
-"TESTME: loadMovie called on level %d which is not available at load time, "
-"skipped placement for now"
+msgid "Attempt to set %s._yscale to %s (evaluating to number %g) refused"
msgstr ""
-#: libcore/movie_root.cpp:627
+#: libcore/DisplayObject.cpp:1220
#, c-format
-msgid "ActionLimits hit notifying key listeners: %s."
-msgstr ""
-
-#: libcore/movie_root.cpp:864
-msgid ""
-"movie_root tracking a streaming sound, but the sound handler is not "
-"streaming!"
+msgid "Attempt to set %s._visible to %s (evaluating to number %g) refused"
msgstr ""
-#: libcore/movie_root.cpp:896
-msgid ""
-"Time exceeded (%1% secs) while attempting to catch up to streaming sound. "
-"Give up on synchronization?"
+#: libcore/DisplayObject.cpp:1249
+#, c-format
+msgid "Attempt to set %s._alpha to %s (evaluating to number %g) refused"
msgstr ""
-#: libcore/movie_root.cpp:948
+#: libcore/DisplayObject.cpp:1315
#, c-format
-msgid "Buffer overread during advance: %s"
+msgid "Attempt to set %s._rotation to %s (evaluating to number %g) refused"
msgstr ""
-#: libcore/movie_root.cpp:1066
-#, c-format
-msgid "ActionLimits hit notifying mouse events: %s."
+#: libcore/DisplayObject.cpp:1355
+msgid "_soundbuftime setting"
msgstr ""
-#: libcore/movie_root.cpp:1558
+#: libcore/DisplayObject.cpp:1379
#, c-format
-msgid "Couldn't process ExternalInterface Call %s"
+msgid "Setting _width=%g of DisplayObject %s (%s)"
msgstr ""
-#: libcore/movie_root.cpp:1603
-msgid "ExternalInterface::GotoFrame()"
+#: libcore/DisplayObject.cpp:1389 libcore/DisplayObject.cpp:1407
+msgid "_focusrect"
msgstr ""
-#: libcore/movie_root.cpp:1611
-msgid "ExternalInterface::LoadMovie()"
+#: libcore/AMFConverter.cpp:98
+msgid "Problems serializing an object's member"
msgstr ""
-#: libcore/movie_root.cpp:1676 gui/Player.cpp:713
+#: libcore/AMFConverter.cpp:212
#, c-format
-msgid "Could not write to user-provided host requests fd %d: %s"
+msgid "Problems serializing strict array member %d=%s"
msgstr ""
-#: libcore/movie_root.cpp:1837 libcore/movie_root.cpp:1869
-#: libcore/movie_root.cpp:1925
-#, c-format
-msgid "Could not write to browser fd #%d: %s"
+#: libcore/AMFConverter.cpp:242
+msgid "Could not serialize object"
msgstr ""
-#: libcore/movie_root.cpp:2155
+#: libcore/AMFConverter.cpp:319
#, c-format
-msgid "Fork failed launching URL opener '%s'"
+msgid "Unknown AMF type %s! Cannot proceed"
msgstr ""
-#: libcore/movie_root.cpp:2202
+#: libcore/AMFConverter.cpp:376
#, c-format
-msgid "Could only write %d bytes to fd #%d"
+msgid "AMF parsing error: %s"
msgstr ""
-#: libcore/movie_root.cpp:2290
-msgid "Live MovieClips"
+#: libcore/AMFConverter.cpp:407
+msgid "Read past _end of buffer for strict array length"
msgstr ""
-#: libcore/movie_root.cpp:2419
-#, c-format
-msgid "%s to UTF8 conversion in LoadableObject input parsing"
+#: libcore/AMFConverter.cpp:425
+msgid "Unable to read array elements"
msgstr ""
-#: libcore/movie_root.cpp:2442
-#, c-format
-msgid ""
-"Hosting application registered no callback for events/queries, can't call %s"
-"(%s)"
+#: libcore/AMFConverter.cpp:442
+msgid "Read past _end of buffer for array length"
msgstr ""
-#: libcore/abc/AbcBlock.cpp:65 libcore/abc/AbcBlock.cpp:133
-msgid "ABC: Finalizing trait yielded bad type for slot."
+#: libcore/AMFConverter.cpp:468 libcore/AMFConverter.cpp:489
+msgid "MALFORMED AMF: premature _end of ECMA_ARRAY block"
msgstr ""
-#: libcore/abc/AbcBlock.cpp:188
-msgid "ABC: Bad name for trait."
+#: libcore/AMFConverter.cpp:480
+msgid "MALFORMED AMF: empty member name not followed by OBJECT_END_AMF0 byte"
+msgstr ""
+
+#: libcore/AMFConverter.cpp:504
+msgid "Unable to read array element"
msgstr ""
-#: libcore/abc/AbcBlock.cpp:193
-msgid "ABC: Trait name must be fully qualified."
+#: libcore/AMFConverter.cpp:528
+msgid "Could not read object property name"
msgstr ""
-#: libcore/abc/AbcBlock.cpp:240 libcore/abc/AbcBlock.cpp:266
-msgid "Bad method id in trait."
+#: libcore/AMFConverter.cpp:539
+msgid "AMF buffer terminated just before object _end byte. continuing anyway."
msgstr ""
-#: libcore/abc/AbcBlock.cpp:256
-msgid "Bad Class id in trait."
+#: libcore/AMFConverter.cpp:566
+#, c-format
+msgid "readAMF0: invalid reference to object %d (%d known objects)"
msgstr ""
-#: libcore/abc/AbcBlock.cpp:274
-msgid "ABC: Unknown type of trait."
+#: libcore/AMFConverter.cpp:597
+msgid ""
+"Date type encoded timezone info %1%, even though this field should not be "
+"used."
msgstr ""
-#: libcore/abc/AbcBlock.cpp:468
+#: libcore/as_value.cpp:768
#, c-format
-msgid "Abc Version: %d.%d"
+msgid "serialization of as_value of type %d"
msgstr ""
-#: libcore/abc/AbcBlock.cpp:567
-msgid "ABC: Bad string given for namespace."
+#: libcore/DisplayList.cpp:305
+#, c-format
+msgid "moveDisplayObject() -- can't find object at depth %d"
msgstr ""
-#: libcore/abc/AbcBlock.cpp:609
-msgid "ABC: Bad namespace for namespace set."
+#: libcore/DisplayList.cpp:312
+msgid "Request to move an unloaded DisplayObject"
msgstr ""
-#: libcore/abc/AbcBlock.cpp:679
+#: libcore/DisplayList.cpp:380
#, c-format
-msgid "Action Block: Unknown multiname type (%d)."
+msgid "%s.swapDepth(%d) : ignored call with target depth less then %d"
msgstr ""
-#: libcore/abc/AbcBlock.cpp:712 libcore/abc/AbcBlock.cpp:722
-#: libcore/abc/AbcBlock.cpp:732 libcore/abc/AbcBlock.cpp:742
-msgid "Action Block: Bad index in optional argument."
+#: libcore/DisplayList.cpp:404
+msgid ""
+"First argument to DisplayList::swapDepth() is NOT a DisplayObject in the "
+"list. Call ignored."
msgstr ""
-#: libcore/abc/AbcBlock.cpp:752
-msgid "ABC: Bad index in optional argument, namespaces."
+#: libcore/DisplayList.cpp:875
+#, c-format
+msgid ""
+"mergeDisplayList: DisplayObject %s (%s at depth %d [%d]) about to be "
+"discarded in given display list is not marked as unloaded and not found in "
+"the merged current displaylist"
msgstr ""
-#: libcore/abc/AbcBlock.cpp:774
+#: libcore/LoadVariablesThread.cpp:75
#, c-format
-msgid "ABC: Bad default value type (%X), but continuing."
+msgid "%s to UTF8 conversion in MovieClip.loadVariables input parsing"
msgstr ""
-#: libcore/abc/AbcBlock.cpp:812
-msgid "ABC: Bad return type for method info."
+#: libcore/LoadVariablesThread.cpp:124
+#, c-format
+msgid "Stream couldn't seek to end: %s"
msgstr ""
-#: libcore/abc/AbcBlock.cpp:825
-msgid "ABC: Unknown return type."
+#: libcore/LoadVariablesThread.cpp:129
+#, c-format
+msgid ""
+"Size of 'variables' stream advertised to be %d bytes, but turned out to be "
+"%d bytes."
msgstr ""
-#: libcore/abc/AbcBlock.cpp:842
-msgid "ABC: Bad parameter type in method."
+#: libcore/Button.cpp:477
+#, c-format
+msgid "Unhandled button event %s"
msgstr ""
-#: libcore/abc/AbcBlock.cpp:851
-msgid "ABC: Unknown parameter type."
+#: libcore/Button.cpp:789
+msgid "Button placed with an init object. This will be ignored."
msgstr ""
-#: libcore/abc/AbcBlock.cpp:940
-msgid "ABC: Out of bounds instance name."
+#: libcore/Button.cpp:957
+msgid "Enabled"
msgstr ""
-#: libcore/abc/AbcBlock.cpp:948
-msgid "ABC: QName required for instance."
+#: libcore/Button.cpp:962
+msgid "Button state"
msgstr ""
-#: libcore/abc/AbcBlock.cpp:953
-msgid "ABC: No namespace to use for storing class."
+#: libcore/Button.cpp:966
+msgid "Action characters"
msgstr ""
-#: libcore/abc/AbcBlock.cpp:968
-msgid "Duplicate class registration."
+#: libcore/Button.cpp:995
+msgid "Button.blendMode"
msgstr ""
-#: libcore/abc/AbcBlock.cpp:984
-msgid "ABC: Bad super type."
+#: libcore/Button.cpp:1004
+msgid "Button.cacheAsBitmap"
msgstr ""
-#: libcore/abc/AbcBlock.cpp:995
-#, c-format
-msgid "ABC: Super type not found (%s)"
+#: libcore/Button.cpp:1013
+msgid "Button.filters"
msgstr ""
-#: libcore/abc/AbcBlock.cpp:1002
-msgid "ABC: Can't extend a class which is final."
+#: libcore/Button.cpp:1022
+msgid "Button.scale9Grid"
msgstr ""
-#: libcore/abc/AbcBlock.cpp:1008
-msgid "ABC: Can't extend an interface type."
+#: libcore/Button.cpp:1031
+msgid "Button.getTabIndex"
msgstr ""
-#: libcore/abc/AbcBlock.cpp:1014
-msgid "ABC: Class cannot be its own supertype."
+#: libcore/Button.cpp:1040
+msgid "Button.setTabIndex"
msgstr ""
-#: libcore/abc/AbcBlock.cpp:1035
-msgid "ABC: Bad namespace for protected."
+#: libcore/DisplayObjectContainer.cpp:74
+msgid "Children"
msgstr ""
-#: libcore/abc/AbcBlock.cpp:1054
-msgid "ABC: Bad name for interface."
+#: libcore/PropertyList.cpp:274
+#, c-format
+msgid "Property %s already exists, can't addDestructiveGetter"
msgstr ""
-#: libcore/abc/AbcBlock.cpp:1061
-msgid "ABC: Can't implement a non-interface type."
+#: libdevice/rawfb/RawFBDevice.cpp:63
+msgid "Couldn't initialize RAWFB device!"
msgstr ""
-#: libcore/abc/AbcBlock.cpp:1073
-msgid "ABC: Out of bounds method for initializer."
+#: libdevice/rawfb/RawFBDevice.cpp:95
+msgid "Freeing framebuffer memory"
msgstr ""
-#: libcore/abc/AbcBlock.cpp:1108
-msgid "ABC: Out of bound static constructor for class."
+#: libdevice/rawfb/RawFBDevice.cpp:100
+msgid "Freeing offscreen buffer"
msgstr ""
-#: libcore/abc/AbcBlock.cpp:1147
-msgid "ABC: Out of bounds method for script."
+#: libdevice/rawfb/RawFBDevice.cpp:119
+#, c-format
+msgid "WARNING: Using %s as a fake framebuffer!"
msgstr ""
-#: libcore/abc/AbcBlock.cpp:1183
-msgid "ABC: Out of bounds for method body."
+#: libdevice/rawfb/RawFBDevice.cpp:138
+#, c-format
+msgid "Could not open framebuffer device: %s"
msgstr ""
-#: libcore/abc/AbcBlock.cpp:1190
-msgid "ABC: Only one body per method."
+#: libdevice/rawfb/RawFBDevice.cpp:141
+#, c-format
+msgid "Opened framebuffer device: %s"
msgstr ""
-#: libcore/abc/AbcBlock.cpp:1236
-msgid "ABC: Out of bound type for exception."
+#: libdevice/rawfb/RawFBDevice.cpp:177
+msgid "LUT8: Setting up colormap"
msgstr ""
-#: libcore/abc/AbcBlock.cpp:1246
+#: libdevice/rawfb/RawFBDevice.cpp:202
#, c-format
-msgid "ABC: Unknown type of object to catch. (%s)"
-msgstr ""
-
-#: libcore/abc/AbcBlock.cpp:1264
-msgid "ABC: Out of bound name for caught exception."
+msgid "LUT8: Error setting colormap: %s"
msgstr ""
-#: libcore/MovieFactory.cpp:79
-msgid ""
-"Requested to keep from completely loading a movie, but the movie in question "
-"is an image, for which we don't yet have the concept of a 'loading thread'"
+#: libdevice/rawfb/RawFBDevice.cpp:407
+msgid "Couldn't write to the fake cmap!"
msgstr ""
-#: libcore/MovieFactory.cpp:94
-msgid "FLV can't be loaded directly as a movie"
+#: libdevice/rawfb/RawFBDevice.cpp:411
+msgid "Couldn't write to the fake cmap, unknown type!"
msgstr ""
-#: libcore/MovieFactory.cpp:98
-msgid "Unknown file type"
+#: libdevice/rawfb/RawFBDevice.cpp:425
+msgid "Signaled fbe to reload it's colormap."
msgstr ""
-#: libcore/MovieFactory.cpp:133
+#: libdevice/rawfb/RawFBDevice.cpp:432
#, c-format
-msgid "Couldn't load library movie '%s'"
+msgid "fakefb_ioctl(%d)"
msgstr ""
-#: libcore/MovieFactory.cpp:173
-msgid "Can't read file header"
+#: libdevice/vaapi/VaapiImage.cpp:38
+#, c-format
+msgid "VaapiImage::VaapiImage(): format '%s'\n"
msgstr ""
-#: libcore/MovieFactory.cpp:212
-msgid "Can't read 3 bytes after an MZ (.exe) header"
+#: libdevice/vaapi/VaapiImage.cpp:82
+#, c-format
+msgid " image 0x%08x, format '%s'\n"
msgstr ""
-#: libcore/MovieFactory.cpp:222
-msgid "Could not find SWF inside an .exe file"
+#: libdevice/vaapi/VaapiSurfaceGLX.cpp:205
+#, c-format
+msgid " -> surface %p\n"
msgstr ""
-#: libcore/MovieFactory.cpp:231
+#: libdevice/vaapi/VaapiSurfaceGLX.cpp:212
#, c-format
-msgid "unknown file type, buffer is %c%c%c"
+msgid "VaapiSurface::~VaapiSurface(): surface %p\n"
msgstr ""
-#: libcore/MovieFactory.cpp:273
+#: libdevice/vaapi/VaapiSurfaceGLX.cpp:266
#, c-format
-msgid "Can't read image file from %s"
+msgid "VaapiSurfaceGLX::update(): from surface 0x%08x\n"
msgstr ""
-#: libcore/MovieFactory.cpp:283
+#: libdevice/vaapi/VaapiSurface.cpp:77
#, c-format
-msgid "Parsing error: %s"
+msgid "VaapiSurface::~VaapiSurface(): surface 0x%08x\n"
msgstr ""
-#: libcore/MovieFactory.cpp:309
+#: libdevice/vaapi/VaapiSubpicture.cpp:35
#, c-format
-msgid "failed to open '%s'; can't create movie"
+msgid "VaapiSubpicture::VaapiSubpicture(): format '%s'\n"
msgstr ""
-#: libcore/MovieFactory.cpp:314
+#: libdevice/vaapi/VaapiSurfaceProxy.cpp:31
#, c-format
-msgid "streamProvider opener can't open '%s'"
+msgid "VaapiSurfaceProxy::VaapiSurfaceProxy(): surface 0x%08x\n"
msgstr ""
-#: libcore/PropertyList.cpp:274
+#: libdevice/vaapi/VaapiSurfaceProxy.cpp:36
#, c-format
-msgid "Property %s already exists, can't addDestructiveGetter"
+msgid "VaapiSurfaceProxy::~VaapiSurfaceProxy(): surface 0x%08x\n"
msgstr ""
-#: libcore/as_object.cpp:439
-#, c-format
-msgid "Caught exception: %s"
+#: libdevice/x11/X11Device.cpp:88 libdevice/x11/X11Device.cpp:106
+msgid "Couldn't initialize X11 device!"
msgstr ""
-#: libcore/as_object.cpp:627
-#, c-format
-msgid "Attempt to set read-only property '%s'"
+#: libdevice/x11/X11Device.cpp:142
+msgid "couldn't open X11 display!"
msgstr ""
-#: libcore/as_object.cpp:639
-#, c-format
-msgid "%s: %s"
+#: libdevice/x11/X11Device.cpp:162
+msgid "Error: couldn't get X visual\n"
msgstr ""
-#: libcore/as_object.cpp:654
-#, c-format
-msgid "Unknown failure in setting property '%s' on object '%p'"
+#: libdevice/x11/X11Device.cpp:199
+msgid "The default Display is not set!"
msgstr ""
-#: libcore/as_object.cpp:683
-#, c-format
-msgid "Attempt to initialize read-only property '%s' on object '%p' twice"
+#: libdevice/x11/X11Device.cpp:212
+msgid "No Display device set!"
msgstr ""
-#: libcore/as_object.cpp:845
-msgid "Circular inheritance chain detected during isPrototypeOf call"
+#: libdevice/x11/X11Device.cpp:217
+msgid "No drawable window set!"
msgstr ""
#: libdevice/egl/eglDevice.cpp:86 libdevice/egl/eglDevice.cpp:108
@@ -6879,18 +6980,18 @@ msgstr ""
msgid "EGL_VERSION = %s, EGL_VENDOR = %s"
msgstr ""
-#: libdevice/egl/eglDevice.cpp:208 libdevice/egl/eglDevice.cpp:543
+#: libdevice/egl/eglDevice.cpp:208 libdevice/egl/eglDevice.cpp:547
#: gui/gtk/gtk_glue_ovg.cpp:383
#, c-format
msgid "eglGetConfigs() failed to retrieve the number of configs (error %s)"
msgstr ""
-#: libdevice/egl/eglDevice.cpp:213 libdevice/egl/eglDevice.cpp:548
+#: libdevice/egl/eglDevice.cpp:213 libdevice/egl/eglDevice.cpp:552
#: gui/gtk/gtk_glue_ovg.cpp:388
msgid "No EGLconfigs found\n"
msgstr ""
-#: libdevice/egl/eglDevice.cpp:216 libdevice/egl/eglDevice.cpp:551
+#: libdevice/egl/eglDevice.cpp:216 libdevice/egl/eglDevice.cpp:555
#, c-format
msgid "Max number of EGL Configs is %d"
msgstr ""
@@ -6975,93 +7076,120 @@ msgstr ""
msgid "Initializing EGL for OpenVG"
msgstr ""
-#: libdevice/egl/eglDevice.cpp:390
+#: libdevice/egl/eglDevice.cpp:394
msgid "Initializing EGL Surface"
msgstr ""
-#: libdevice/egl/eglDevice.cpp:397
+#: libdevice/egl/eglDevice.cpp:401
#, c-format
msgid "eglCreateWindowSurface failed (error %s)"
msgstr ""
-#: libdevice/egl/eglDevice.cpp:411
+#: libdevice/egl/eglDevice.cpp:415
#, c-format
msgid "eglCreateContext failed (error %s)"
msgstr ""
-#: libdevice/egl/eglDevice.cpp:423
+#: libdevice/egl/eglDevice.cpp:427
#, c-format
msgid "eglMakeCurrent failed (error %s)"
msgstr ""
-#: libdevice/egl/eglDevice.cpp:555 gui/gtk/gtk_glue_ovg.cpp:395
+#: libdevice/egl/eglDevice.cpp:559 gui/gtk/gtk_glue_ovg.cpp:395
msgid "Out of memory\n"
msgstr ""
-#: libdevice/egl/eglDevice.cpp:560
+#: libdevice/egl/eglDevice.cpp:564
#, c-format
msgid "eglGetConfigs() failed to retrieve the configs (error %s)"
msgstr ""
-#: libdevice/egl/eglDevice.cpp:773
+#: libdevice/egl/eglDevice.cpp:777
#, c-format
msgid "eglCreatePbufferSurface() failed (error 0x%x)"
msgstr ""
-#: libdevice/egl/eglDevice.cpp:793 libdevice/egl/eglDevice.cpp:814
+#: libdevice/egl/eglDevice.cpp:797 libdevice/egl/eglDevice.cpp:818
#, c-format
msgid "eglCreatePbufferFromClientBuffer() failed (error 0x%x)"
msgstr ""
-#: libdevice/vaapi/VaapiSurfaceProxy.cpp:31
+#: libdevice/events/UinputDevice.cpp:46
+msgid "ioctl(UI_DEV_DESTROY)"
+msgstr ""
+
+#: libdevice/events/UinputDevice.cpp:77 libdevice/events/MouseDevice.cpp:94
+#: libdevice/events/TouchDevice.cpp:312 libdevice/events/EventDevice.cpp:703
#, c-format
-msgid "VaapiSurfaceProxy::VaapiSurfaceProxy(): surface 0x%08x\n"
+msgid "You don't have the proper permissions to open %s"
+msgstr ""
+
+#: libdevice/events/UinputDevice.cpp:82
+#, c-format
+msgid "Found a User mode input device at %s"
+msgstr ""
+
+#: libdevice/events/UinputDevice.cpp:98
+msgid "User Mode Input device not initialized yet!"
+msgstr ""
+
+#: libdevice/events/UinputDevice.cpp:103
+msgid "ioctl(UI_SET_EVBIT, EV_KEY)"
+msgstr ""
+
+#: libdevice/events/UinputDevice.cpp:109
+msgid "ioctl(UI_SET_EVBIT, EV_REL)"
+msgstr ""
+
+#: libdevice/events/UinputDevice.cpp:113
+msgid "ioctl(UI_SET_RELBIT, REL_X)"
+msgstr ""
+
+#: libdevice/events/UinputDevice.cpp:117
+msgid "ioctl( UI_SET_RELBIT, REL_Y)"
msgstr ""
-#: libdevice/vaapi/VaapiSurfaceProxy.cpp:36
-#, c-format
-msgid "VaapiSurfaceProxy::~VaapiSurfaceProxy(): surface 0x%08x\n"
+#: libdevice/events/UinputDevice.cpp:142
+msgid "write uidev"
msgstr ""
-#: libdevice/vaapi/VaapiSubpicture.cpp:35
+#: libdevice/events/UinputDevice.cpp:147
#, c-format
-msgid "VaapiSubpicture::VaapiSubpicture(): format '%s'\n"
+msgid "ioctl(UI_SET_EVBIT, EV_ABS): %s"
msgstr ""
-#: libdevice/vaapi/VaapiSurface.cpp:77
+#: libdevice/events/UinputDevice.cpp:151
#, c-format
-msgid "VaapiSurface::~VaapiSurface(): surface 0x%08x\n"
+msgid "ioctl(UI_SET_ABSBIT,ABS_X): %s"
msgstr ""
-#: libdevice/vaapi/VaapiSurfaceGLX.cpp:205
+#: libdevice/events/UinputDevice.cpp:155
#, c-format
-msgid " -> surface %p\n"
+msgid "ioctl(UI_SET_ABSBIT, ABS_Y): %s"
msgstr ""
-#: libdevice/vaapi/VaapiSurfaceGLX.cpp:212
+#: libdevice/events/UinputDevice.cpp:161
#, c-format
-msgid "VaapiSurface::~VaapiSurface(): surface %p\n"
+msgid "ioctl(UI_SET_KEYBIT, BTN_LEFT)): %s"
msgstr ""
-#: libdevice/vaapi/VaapiSurfaceGLX.cpp:266
+#: libdevice/events/UinputDevice.cpp:165
#, c-format
-msgid "VaapiSurfaceGLX::update(): from surface 0x%08x\n"
+msgid "ioctl(UI_SET_KEYBIT, BTN_RIGHT): %s"
msgstr ""
-#: libdevice/vaapi/VaapiImage.cpp:38
+#: libdevice/events/UinputDevice.cpp:169
#, c-format
-msgid "VaapiImage::VaapiImage(): format '%s'\n"
+msgid "ioctl(UI_SET_EVBIT, ABS_PRESSURE): %s"
msgstr ""
-#: libdevice/vaapi/VaapiImage.cpp:82
+#: libdevice/events/UinputDevice.cpp:177
#, c-format
-msgid " image 0x%08x, format '%s'\n"
+msgid "ioctl(UI_SET_KEYBIT, BTN_MOUSE): %s"
msgstr ""
-#: libdevice/events/MouseDevice.cpp:94 libdevice/events/EventDevice.cpp:699
-#: libdevice/events/TouchDevice.cpp:312 libdevice/events/UinputDevice.cpp:77
-#, c-format
-msgid "You don't have the proper permissions to open %s"
+#: libdevice/events/UinputDevice.cpp:182
+msgid "ioctl(UI_DEV_CREATED) failed!"
msgstr ""
#: libdevice/events/MouseDevice.cpp:99
@@ -7146,15 +7274,50 @@ msgstr ""
msgid "mouse_command: discarded %d bytes from input buffer"
msgstr ""
-#: libdevice/events/InputDevice.cpp:136
+#: libdevice/events/TouchDevice.cpp:83
+msgid "No filespec specified for the touchscreen device."
+msgstr ""
+
+#: libdevice/events/TouchDevice.cpp:89
#, c-format
-msgid "The device has this error: %s"
+msgid "Could not open touchscreen %s: %s"
msgstr ""
-#: libdevice/events/InputDevice.cpp:211
+#: libdevice/events/TouchDevice.cpp:96
+#, c-format
+msgid "Could not get touchscreen fd %s: %s"
+msgstr ""
+
+#: libdevice/events/TouchDevice.cpp:103
+#, c-format
+msgid "Using TSLIB on %s"
+msgstr ""
+
+#: libdevice/events/TouchDevice.cpp:134
+#, c-format
+msgid "Touched x: %d, y: %d"
+msgstr ""
+
+#: libdevice/events/TouchDevice.cpp:138
+#, c-format
+msgid "lifted x: %d y: %d"
+msgstr ""
+
+#: libdevice/events/TouchDevice.cpp:244
+msgid "WARNING: Error parsing calibration data!"
+msgstr ""
+
+#: libdevice/events/TouchDevice.cpp:246
+#, c-format
msgid ""
-"WARNING: PS/2 Mouse support disabled as it conflicts with the input event "
-"support."
+"Using touchscreen calibration data: %.0f / %.0f / %.0f / %.0f / %.0f / %.0f"
+msgstr ""
+
+#: libdevice/events/TouchDevice.cpp:249
+msgid ""
+"WARNING: No touchscreen calibration settings found. The mouse pointer most "
+"probably won't work precisely. Set TSCALIB environment variable with correct "
+"values for better results"
msgstr ""
#: libdevice/events/EventDevice.cpp:80
@@ -7171,22 +7334,22 @@ msgstr ""
msgid "evdev driver version is %d.%d.%d"
msgstr ""
-#: libdevice/events/EventDevice.cpp:102 libdevice/events/EventDevice.cpp:720
+#: libdevice/events/EventDevice.cpp:102 libdevice/events/EventDevice.cpp:724
#, c-format
msgid "ioctl (EVIOCGID): %s"
msgstr ""
-#: libdevice/events/EventDevice.cpp:107 libdevice/events/EventDevice.cpp:714
+#: libdevice/events/EventDevice.cpp:107 libdevice/events/EventDevice.cpp:718
#, c-format
msgid "ioctl (EVIOCGNAME): %s"
msgstr ""
-#: libdevice/events/EventDevice.cpp:109 libdevice/events/EventDevice.cpp:716
+#: libdevice/events/EventDevice.cpp:109 libdevice/events/EventDevice.cpp:720
#, c-format
msgid "The device on %s says its name is %s"
msgstr ""
-#: libdevice/events/EventDevice.cpp:115 libdevice/events/EventDevice.cpp:722
+#: libdevice/events/EventDevice.cpp:115 libdevice/events/EventDevice.cpp:726
#, c-format
msgid "vendor %04hx product %04hx version %04hx"
msgstr ""
@@ -7292,348 +7455,173 @@ msgstr ""
msgid "ioctl (EVIOCGABS(ABS_Y)): %s"
msgstr ""
-#: libdevice/events/EventDevice.cpp:245
-#, c-format
-msgid "ioctl (EVIOCSABS(ABS_Y)): %s"
-msgstr ""
-
-#: libdevice/events/EventDevice.cpp:307
-#, c-format
-msgid "Type is: %s(%hd), Code is: %hd, Val is: %d"
-msgstr ""
-
-#: libdevice/events/EventDevice.cpp:388
-#, c-format
-msgid "REL_X: %d"
-msgstr ""
-
-#: libdevice/events/EventDevice.cpp:392
-#, c-format
-msgid "REL_Y: %d"
-msgstr ""
-
-#: libdevice/events/EventDevice.cpp:396
-#, c-format
-msgid "REL_Z: %d"
-msgstr ""
-
-#: libdevice/events/EventDevice.cpp:400
-#, c-format
-msgid "REL_RX: %d"
-msgstr ""
-
-#: libdevice/events/EventDevice.cpp:404
-#, c-format
-msgid "REL_RY: %d"
-msgstr ""
-
-#: libdevice/events/EventDevice.cpp:408
-#, c-format
-msgid "REL_RZ: %d"
-msgstr ""
-
-#: libdevice/events/EventDevice.cpp:412
-#, c-format
-msgid "REL_HWHEEL: %d"
-msgstr ""
-
-#: libdevice/events/EventDevice.cpp:414
-#, c-format
-msgid "REL_DIAL: %d"
-msgstr ""
-
-#: libdevice/events/EventDevice.cpp:416
-#, c-format
-msgid "REL_WHEEL: %d"
-msgstr ""
-
-#: libdevice/events/EventDevice.cpp:418
-#, c-format
-msgid "REL_MISC: %d"
-msgstr ""
-
-#: libdevice/events/EventDevice.cpp:420
-#, c-format
-msgid "Relative move event %d from Input Event Device"
-msgstr ""
-
-#: libdevice/events/EventDevice.cpp:443
-#, c-format
-msgid "ABS_Z: %d"
-msgstr ""
-
-#: libdevice/events/EventDevice.cpp:450
-#, c-format
-msgid "ABS_VOLUME: %d"
-msgstr ""
-
-#: libdevice/events/EventDevice.cpp:454
-#, c-format
-msgid "ABS_DISTANCE: %d"
-msgstr ""
-
-#: libdevice/events/EventDevice.cpp:458
-#, c-format
-msgid "ABS_RX: %d"
-msgstr ""
-
-#: libdevice/events/EventDevice.cpp:462
-#, c-format
-msgid "ABS_RY: %d"
-msgstr ""
-
-#: libdevice/events/EventDevice.cpp:466
-#, c-format
-msgid "ABS_RZ: %d"
-msgstr ""
-
-#: libdevice/events/EventDevice.cpp:470
-#, c-format
-msgid "ABS_THROTTLE: %d"
-msgstr ""
-
-#: libdevice/events/EventDevice.cpp:474
-#, c-format
-msgid "ABS_RUDDER: %d"
-msgstr ""
-
-#: libdevice/events/EventDevice.cpp:478
-#, c-format
-msgid "ABS_GAS: %d"
-msgstr ""
-
-#: libdevice/events/EventDevice.cpp:482
-#, c-format
-msgid "ABS_BRAKE: %d"
-msgstr ""
-
-#: libdevice/events/EventDevice.cpp:486
-#, c-format
-msgid "ABS_TILT_X: %d"
-msgstr ""
-
-#: libdevice/events/EventDevice.cpp:490
-#, c-format
-msgid "ABS_TILT_Y: %d"
-msgstr ""
-
-#: libdevice/events/EventDevice.cpp:505 libdevice/events/EventDevice.cpp:529
-msgid "Misc event from Input Event Device"
-msgstr ""
-
-#: libdevice/events/EventDevice.cpp:533
-msgid "LED event from Input Event Device"
-msgstr ""
-
-#: libdevice/events/EventDevice.cpp:536
-msgid "Sound event from Input Event Device"
-msgstr ""
-
-#: libdevice/events/EventDevice.cpp:539
-msgid "Key autorepeat event from Input Event Device"
-msgstr ""
-
-#: libdevice/events/EventDevice.cpp:542
-msgid "Force Feedback event from Input Event Device"
-msgstr ""
-
-#: libdevice/events/EventDevice.cpp:545
-msgid "Force Feedback status event from Input Event Device"
-msgstr ""
-
-#: libdevice/events/EventDevice.cpp:548
-msgid "Power event from Input Event Device"
-msgstr ""
-
-#: libdevice/events/EventDevice.cpp:736
-#, c-format
-msgid "Enabling USB device: %s"
-msgstr ""
-
-#: libdevice/events/TouchDevice.cpp:83
-msgid "No filespec specified for the touchscreen device."
-msgstr ""
-
-#: libdevice/events/TouchDevice.cpp:89
-#, c-format
-msgid "Could not open touchscreen %s: %s"
-msgstr ""
-
-#: libdevice/events/TouchDevice.cpp:96
-#, c-format
-msgid "Could not get touchscreen fd %s: %s"
-msgstr ""
-
-#: libdevice/events/TouchDevice.cpp:103
-#, c-format
-msgid "Using TSLIB on %s"
-msgstr ""
-
-#: libdevice/events/TouchDevice.cpp:134
-#, c-format
-msgid "Touched x: %d, y: %d"
-msgstr ""
-
-#: libdevice/events/TouchDevice.cpp:138
-#, c-format
-msgid "lifted x: %d y: %d"
-msgstr ""
-
-#: libdevice/events/TouchDevice.cpp:244
-msgid "WARNING: Error parsing calibration data!"
+#: libdevice/events/EventDevice.cpp:245
+#, c-format
+msgid "ioctl (EVIOCSABS(ABS_Y)): %s"
msgstr ""
-#: libdevice/events/TouchDevice.cpp:246
+#: libdevice/events/EventDevice.cpp:307
#, c-format
-msgid ""
-"Using touchscreen calibration data: %.0f / %.0f / %.0f / %.0f / %.0f / %.0f"
+msgid "Type is: %s(%hd), Code is: %hd, Val is: %d"
msgstr ""
-#: libdevice/events/TouchDevice.cpp:249
-msgid ""
-"WARNING: No touchscreen calibration settings found. The mouse pointer most "
-"probably won't work precisely. Set TSCALIB environment variable with correct "
-"values for better results"
+#: libdevice/events/EventDevice.cpp:388
+#, c-format
+msgid "REL_X: %d"
msgstr ""
-#: libdevice/events/UinputDevice.cpp:46
-msgid "ioctl(UI_DEV_DESTROY)"
+#: libdevice/events/EventDevice.cpp:392
+#, c-format
+msgid "REL_Y: %d"
msgstr ""
-#: libdevice/events/UinputDevice.cpp:82
+#: libdevice/events/EventDevice.cpp:396
#, c-format
-msgid "Found a User mode input device at %s"
+msgid "REL_Z: %d"
msgstr ""
-#: libdevice/events/UinputDevice.cpp:98
-msgid "User Mode Input device not initialized yet!"
+#: libdevice/events/EventDevice.cpp:400
+#, c-format
+msgid "REL_RX: %d"
msgstr ""
-#: libdevice/events/UinputDevice.cpp:103
-msgid "ioctl(UI_SET_EVBIT, EV_KEY)"
+#: libdevice/events/EventDevice.cpp:404
+#, c-format
+msgid "REL_RY: %d"
msgstr ""
-#: libdevice/events/UinputDevice.cpp:109
-msgid "ioctl(UI_SET_EVBIT, EV_REL)"
+#: libdevice/events/EventDevice.cpp:408
+#, c-format
+msgid "REL_RZ: %d"
msgstr ""
-#: libdevice/events/UinputDevice.cpp:113
-msgid "ioctl(UI_SET_RELBIT, REL_X)"
+#: libdevice/events/EventDevice.cpp:412
+#, c-format
+msgid "REL_HWHEEL: %d"
msgstr ""
-#: libdevice/events/UinputDevice.cpp:117
-msgid "ioctl( UI_SET_RELBIT, REL_Y)"
+#: libdevice/events/EventDevice.cpp:415
+#, c-format
+msgid "REL_DIAL: %d"
msgstr ""
-#: libdevice/events/UinputDevice.cpp:142
-msgid "write uidev"
+#: libdevice/events/EventDevice.cpp:418
+#, c-format
+msgid "REL_WHEEL: %d"
msgstr ""
-#: libdevice/events/UinputDevice.cpp:147
+#: libdevice/events/EventDevice.cpp:421
#, c-format
-msgid "ioctl(UI_SET_EVBIT, EV_ABS): %s"
+msgid "REL_MISC: %d"
msgstr ""
-#: libdevice/events/UinputDevice.cpp:151
+#: libdevice/events/EventDevice.cpp:424
#, c-format
-msgid "ioctl(UI_SET_ABSBIT,ABS_X): %s"
+msgid "Relative move event %d from Input Event Device"
msgstr ""
-#: libdevice/events/UinputDevice.cpp:155
+#: libdevice/events/EventDevice.cpp:447
#, c-format
-msgid "ioctl(UI_SET_ABSBIT, ABS_Y): %s"
+msgid "ABS_Z: %d"
msgstr ""
-#: libdevice/events/UinputDevice.cpp:161
+#: libdevice/events/EventDevice.cpp:454
#, c-format
-msgid "ioctl(UI_SET_KEYBIT, BTN_LEFT)): %s"
+msgid "ABS_VOLUME: %d"
msgstr ""
-#: libdevice/events/UinputDevice.cpp:165
+#: libdevice/events/EventDevice.cpp:458
#, c-format
-msgid "ioctl(UI_SET_KEYBIT, BTN_RIGHT): %s"
+msgid "ABS_DISTANCE: %d"
msgstr ""
-#: libdevice/events/UinputDevice.cpp:169
+#: libdevice/events/EventDevice.cpp:462
#, c-format
-msgid "ioctl(UI_SET_EVBIT, ABS_PRESSURE): %s"
+msgid "ABS_RX: %d"
msgstr ""
-#: libdevice/events/UinputDevice.cpp:177
+#: libdevice/events/EventDevice.cpp:466
#, c-format
-msgid "ioctl(UI_SET_KEYBIT, BTN_MOUSE): %s"
+msgid "ABS_RY: %d"
msgstr ""
-#: libdevice/events/UinputDevice.cpp:182
-msgid "ioctl(UI_DEV_CREATED) failed!"
+#: libdevice/events/EventDevice.cpp:470
+#, c-format
+msgid "ABS_RZ: %d"
msgstr ""
-#: libdevice/rawfb/RawFBDevice.cpp:63
-msgid "Couldn't initialize RAWFB device!"
+#: libdevice/events/EventDevice.cpp:474
+#, c-format
+msgid "ABS_THROTTLE: %d"
msgstr ""
-#: libdevice/rawfb/RawFBDevice.cpp:94
-msgid "Freeing framebuffer memory"
+#: libdevice/events/EventDevice.cpp:478
+#, c-format
+msgid "ABS_RUDDER: %d"
msgstr ""
-#: libdevice/rawfb/RawFBDevice.cpp:99
-msgid "Freeing offscreen buffer"
+#: libdevice/events/EventDevice.cpp:482
+#, c-format
+msgid "ABS_GAS: %d"
msgstr ""
-#: libdevice/rawfb/RawFBDevice.cpp:118
+#: libdevice/events/EventDevice.cpp:486
#, c-format
-msgid "WARNING: Using %s as a fake framebuffer!"
+msgid "ABS_BRAKE: %d"
msgstr ""
-#: libdevice/rawfb/RawFBDevice.cpp:133
+#: libdevice/events/EventDevice.cpp:490
#, c-format
-msgid "Could not open framebuffer device: %s"
+msgid "ABS_TILT_X: %d"
msgstr ""
-#: libdevice/rawfb/RawFBDevice.cpp:136
+#: libdevice/events/EventDevice.cpp:494
#, c-format
-msgid "Opened framebuffer device: %s"
+msgid "ABS_TILT_Y: %d"
msgstr ""
-#: libdevice/rawfb/RawFBDevice.cpp:147
-#, c-format
-msgid "Framebuffer device uses %d bytes of memory."
+#: libdevice/events/EventDevice.cpp:509 libdevice/events/EventDevice.cpp:533
+msgid "Misc event from Input Event Device"
msgstr ""
-#: libdevice/rawfb/RawFBDevice.cpp:149
-#, c-format
-msgid "Video mode: %dx%d with %d bits per pixel."
+#: libdevice/events/EventDevice.cpp:537
+msgid "LED event from Input Event Device"
msgstr ""
-#: libdevice/rawfb/RawFBDevice.cpp:153
-#, c-format
-msgid "Framebuffer stride is: %d."
+#: libdevice/events/EventDevice.cpp:540
+msgid "Sound event from Input Event Device"
msgstr ""
-#: libdevice/rawfb/RawFBDevice.cpp:167
-msgid "LUT8: Setting up colormap"
+#: libdevice/events/EventDevice.cpp:543
+msgid "Key autorepeat event from Input Event Device"
msgstr ""
-#: libdevice/rawfb/RawFBDevice.cpp:192
-#, c-format
-msgid "LUT8: Error setting colormap: %s"
+#: libdevice/events/EventDevice.cpp:546
+msgid "Force Feedback event from Input Event Device"
msgstr ""
-#: libdevice/rawfb/RawFBDevice.cpp:376
-msgid "Couldn't write to the fake cmap!"
+#: libdevice/events/EventDevice.cpp:549
+msgid "Force Feedback status event from Input Event Device"
msgstr ""
-#: libdevice/rawfb/RawFBDevice.cpp:380
-msgid "Couldn't write to the fake cmap, unknown type!"
+#: libdevice/events/EventDevice.cpp:552
+msgid "Power event from Input Event Device"
msgstr ""
-#: libdevice/rawfb/RawFBDevice.cpp:394
-msgid "Signaled fbe to reload it's colormap."
+#: libdevice/events/EventDevice.cpp:740
+#, c-format
+msgid "Enabling USB device: %s"
msgstr ""
-#: libdevice/rawfb/RawFBDevice.cpp:401
+#: libdevice/events/InputDevice.cpp:136
#, c-format
-msgid "fakefb_ioctl(%d)"
+msgid "The device has this error: %s"
+msgstr ""
+
+#: libdevice/events/InputDevice.cpp:211
+msgid ""
+"WARNING: PS/2 Mouse support disabled as it conflicts with the input event "
+"support."
msgstr ""
#: libdevice/directfb/DirectFBDevice.cpp:78
@@ -7684,54 +7672,6 @@ msgstr ""
msgid "iDirectFB data not set!"
msgstr ""
-#: libdevice/x11/X11Device.cpp:88 libdevice/x11/X11Device.cpp:106
-msgid "Couldn't initialize X11 device!"
-msgstr ""
-
-#: libdevice/x11/X11Device.cpp:142
-msgid "couldn't open X11 display!"
-msgstr ""
-
-#: libdevice/x11/X11Device.cpp:162
-msgid "Error: couldn't get X visual\n"
-msgstr ""
-
-#: libdevice/x11/X11Device.cpp:199
-msgid "The default Display is not set!"
-msgstr ""
-
-#: libdevice/x11/X11Device.cpp:212
-msgid "No Display device set!"
-msgstr ""
-
-#: libdevice/x11/X11Device.cpp:217
-msgid "No drawable window set!"
-msgstr ""
-
-#: libsound/WAVWriter.cpp:65
-msgid "Unable to write file %1%"
-msgstr ""
-
-#: libsound/mkit/sound_handler_mkit.cpp:75
-msgid "Unable to open audio"
-msgstr ""
-
-#: libsound/mkit/sound_handler_mkit.cpp:339
-msgid "Mkit: Mkit_sound_handler::pause"
-msgstr ""
-
-#: libsound/mkit/sound_handler_mkit.cpp:343
-msgid "Mkit: paused"
-msgstr ""
-
-#: libsound/mkit/sound_handler_mkit.cpp:351
-msgid "Mkit: Mkit_sound_handler::unpause"
-msgstr ""
-
-#: libsound/mkit/sound_handler_mkit.cpp:355
-msgid "Mkit: unpaused"
-msgstr ""
-
#: libsound/aos4/sound_handler_ahi.cpp:125
msgid "AOS4: Spawn Audio Process."
msgstr ""
@@ -7808,6 +7748,26 @@ msgstr ""
msgid "AOS4: audioTask:Close timer."
msgstr ""
+#: libsound/mkit/sound_handler_mkit.cpp:75
+msgid "Unable to open audio"
+msgstr ""
+
+#: libsound/mkit/sound_handler_mkit.cpp:339
+msgid "Mkit: Mkit_sound_handler::pause"
+msgstr ""
+
+#: libsound/mkit/sound_handler_mkit.cpp:343
+msgid "Mkit: paused"
+msgstr ""
+
+#: libsound/mkit/sound_handler_mkit.cpp:351
+msgid "Mkit: Mkit_sound_handler::unpause"
+msgstr ""
+
+#: libsound/mkit/sound_handler_mkit.cpp:355
+msgid "Mkit: unpaused"
+msgstr ""
+
#: libsound/sdl/sound_handler_sdl.cpp:91
#, c-format
msgid "Couldn't open SDL audio: %s"
@@ -7822,158 +7782,128 @@ msgstr ""
msgid "Zero buffer length in sdl_audio_callback"
msgstr ""
-#: libsound/sound_handler.cpp:70
+#: libsound/sound_handler.cpp:71
msgid ""
"Sound data creator didn't appropriately pad buffer. We'll do so now, but "
"will cost memory copies."
msgstr ""
-#: libsound/sound_handler.cpp:83
+#: libsound/sound_handler.cpp:84
#, c-format
msgid "Invalid (%d) handle passed to fill_stream_data, doing nothing"
msgstr ""
-#: libsound/sound_handler.cpp:90
+#: libsound/sound_handler.cpp:91
#, c-format
msgid "handle passed to fill_stream_data (%d) was deleted"
msgstr ""
-#: libsound/sound_handler.cpp:141
+#: libsound/sound_handler.cpp:142
#, c-format
msgid "Invalid (%d) handle passed to delete_sound, doing nothing"
msgstr ""
-#: libsound/sound_handler.cpp:152
+#: libsound/sound_handler.cpp:153
#, c-format
msgid "handle passed to delete_sound (%d) already deleted"
msgstr ""
-#: libsound/sound_handler.cpp:236
+#: libsound/sound_handler.cpp:237
#, c-format
msgid "stop_sound(%d): sound was deleted"
msgstr ""
-#: libsound/sound_handler.cpp:324
+#: libsound/sound_handler.cpp:325
#, c-format
msgid "SDL_sound_handler::unplugInputStream: Aux streamer %p not found. "
msgstr ""
-#: libsound/sound_handler.cpp:454
+#: libsound/sound_handler.cpp:455
#, c-format
msgid "Could not start streaming sound: %s"
msgstr ""
-#: libsound/sound_handler.cpp:465
+#: libsound/sound_handler.cpp:466
#, c-format
msgid "Invalid (%d) sound_handle passed to startSound, doing nothing"
msgstr ""
-#: libsound/sound_handler.cpp:531
+#: libsound/sound_handler.cpp:532
msgid "Trying to play sound with size 0"
msgstr ""
-#: libsound/sound_handler.cpp:545
+#: libsound/sound_handler.cpp:546
#, c-format
msgid "Could not start event sound: %s"
msgstr ""
-#: libsound/sound_handler.cpp:559
+#: libsound/sound_handler.cpp:560
#, c-format
msgid "_inputStreams container still has a pointer to deleted InputStream %p!"
msgstr ""
-#: libsound/sound_handler.cpp:704
+#: libsound/sound_handler.cpp:705
#, c-format
msgid "Expected 1 InputStream element, found %d"
msgstr ""
-#: utilities/soldumper.cpp:72
-msgid "This program dumps the internal data of a .sol file"
-msgstr ""
-
-#: utilities/soldumper.cpp:74
-msgid "Usage: soldumper [h] filename"
+#: libsound/WAVWriter.cpp:64
+msgid "Unable to write file %1%"
msgstr ""
-#: utilities/soldumper.cpp:75 utilities/dumpshm.cpp:344
-#: utilities/flvdumper.cpp:305
-msgid "-h\tHelp"
+#: utilities/processor.cpp:151
+#, c-format
+msgid "fs_callback(%p): %s %s"
msgstr ""
-#: utilities/soldumper.cpp:76
-msgid "-f\tForce local directory access"
+#: utilities/processor.cpp:169
+#, c-format
+msgid "eventCallback: %s %s"
msgstr ""
-#: utilities/soldumper.cpp:77
-msgid "-l\tList all .sol files in default dir"
+#: utilities/processor.cpp:205
+msgid "gprocessor does not handle %1% message"
msgstr ""
-#: utilities/soldumper.cpp:105
+#: utilities/processor.cpp:240 cygnal/cvm.cpp:227
#, c-format
-msgid "Gnash soldumper version: %s, Gnash version: %s\n"
+msgid "Gnash gprocessor version: %s, Gnash version: %s\n"
msgstr ""
-#: utilities/soldumper.cpp:121 utilities/processor.cpp:276
-#: utilities/flvdumper.cpp:154 cygnal/cygnal.cpp:476
-#: cygnal/cgi-bin/echo/echo.cpp:144 cygnal/cgi-bin/echo/gateway.cpp:119
-#: cygnal/cgi-bin/fitcDemo/fitcDemo.cpp:149
+#: utilities/processor.cpp:279 utilities/flvdumper.cpp:154
+#: utilities/soldumper.cpp:121 cygnal/cygnal.cpp:482
#: cygnal/cgi-bin/oflaDemo/oflaDemo.cpp:216
-#: cygnal/testsuite/libnet.all/test_handler.cpp:103
-#: cygnal/testsuite/libnet.all/generate_amfbins.cpp:95
+#: cygnal/cgi-bin/fitcDemo/fitcDemo.cpp:149
+#: cygnal/cgi-bin/echo/gateway.cpp:119 cygnal/cgi-bin/echo/echo.cpp:144
#: cygnal/testsuite/libnet.all/test_rtmp.cpp:110
#: cygnal/testsuite/libnet.all/test_diskstream.cpp:91
+#: cygnal/testsuite/libnet.all/test_handler.cpp:103
+#: cygnal/testsuite/libnet.all/generate_amfbins.cpp:95
#: cygnal/testsuite/libnet.all/test_cache.cpp:94
-#: cygnal/testsuite/libamf.all/test_amfmsg.cpp:103
-#: cygnal/testsuite/libamf.all/test_sol.cpp:103
-#: cygnal/testsuite/libamf.all/test_flv.cpp:92
#: cygnal/testsuite/libamf.all/test_el.cpp:91
-#: cygnal/testsuite/libamf.all/test_buffer.cpp:108
-#: cygnal/testsuite/libamf.all/test_amf.cpp:109
-msgid "Verbose output turned on"
-msgstr ""
-
-#: utilities/soldumper.cpp:125
-msgid "forcing local directory access only"
-msgstr ""
-
-#: utilities/soldumper.cpp:130
-msgid "List .sol files in the default directory"
-msgstr ""
-
-#: utilities/processor.cpp:148
-#, c-format
-msgid "fs_callback(%p): %s %s"
-msgstr ""
-
-#: utilities/processor.cpp:166
-#, c-format
-msgid "eventCallback: %s %s"
-msgstr ""
-
-#: utilities/processor.cpp:202
-msgid "gprocessor does not handle %1% message"
-msgstr ""
-
-#: utilities/processor.cpp:237 cygnal/cvm.cpp:227
-#, c-format
-msgid "Gnash gprocessor version: %s, Gnash version: %s\n"
+#: cygnal/testsuite/libamf.all/test_buffer.cpp:108
+#: cygnal/testsuite/libamf.all/test_flv.cpp:92
+#: cygnal/testsuite/libamf.all/test_amfmsg.cpp:103
+#: cygnal/testsuite/libamf.all/test_sol.cpp:103
+#: cygnal/testsuite/libamf.all/test_amf.cpp:109
+msgid "Verbose output turned on"
msgstr ""
-#: utilities/processor.cpp:285 cygnal/cvm.cpp:282
+#: utilities/processor.cpp:288 cygnal/cvm.cpp:282
msgid "Verbose actions disabled at compile time"
msgstr ""
-#: utilities/processor.cpp:292 cygnal/cvm.cpp:289
+#: utilities/processor.cpp:295 cygnal/cvm.cpp:289
msgid "Verbose parsing disabled at compile time"
msgstr ""
-#: utilities/processor.cpp:456 utilities/processor.cpp:459
+#: utilities/processor.cpp:466 utilities/processor.cpp:469
#: gui/pythonmod/gnash-view.cpp:438 gui/pythonmod/gnash-view.cpp:441
#, c-format
msgid "%s appended to local sandboxes"
msgstr ""
-#: utilities/processor.cpp:631
+#: utilities/processor.cpp:641
#, c-format
msgid ""
"gprocessor -- an SWF processor for Gnash.\n"
@@ -7985,7 +7915,7 @@ msgid ""
"%s%s%s%s"
msgstr ""
-#: utilities/processor.cpp:638
+#: utilities/processor.cpp:648
msgid ""
"options:\n"
"\n"
@@ -7994,15 +7924,15 @@ msgid ""
" -v Be verbose; i.e. print log messages to stdout\n"
msgstr ""
-#: utilities/processor.cpp:645
+#: utilities/processor.cpp:655
msgid " -vp Be verbose about movie parsing\n"
msgstr ""
-#: utilities/processor.cpp:650
+#: utilities/processor.cpp:660
msgid " -va Be verbose about ActionScript\n"
msgstr ""
-#: utilities/processor.cpp:655
+#: utilities/processor.cpp:665
msgid ""
" -d [<ms>]\n"
" Milliseconds delay between advances (0 by default).\n"
@@ -8016,6 +7946,53 @@ msgid ""
" is encountered if set to 0 (default).\n"
msgstr ""
+#: utilities/flvdumper.cpp:172 cygnal/testsuite/libnet.all/test_rtmp.cpp:120
+#: cygnal/testsuite/libnet.all/test_diskstream.cpp:100
+#: cygnal/testsuite/libnet.all/test_handler.cpp:112
+#: cygnal/testsuite/libnet.all/generate_amfbins.cpp:111
+#: cygnal/testsuite/libnet.all/test_cache.cpp:103
+#: cygnal/testsuite/libamf.all/test_el.cpp:107
+#: cygnal/testsuite/libamf.all/test_buffer.cpp:123
+#: cygnal/testsuite/libamf.all/test_flv.cpp:103
+#: cygnal/testsuite/libamf.all/test_amfmsg.cpp:119
+#: cygnal/testsuite/libamf.all/test_sol.cpp:113
+#: cygnal/testsuite/libamf.all/test_amf.cpp:125
+msgid "Error parsing command line options: "
+msgstr ""
+
+#: utilities/flvdumper.cpp:173
+msgid "This is a Gnash flvdumper bug."
+msgstr ""
+
+#: utilities/flvdumper.cpp:178
+msgid "Error: no input file was specified. Exiting."
+msgstr ""
+
+#: utilities/flvdumper.cpp:302
+msgid "This program dumps the internal data of an FLV video file"
+msgstr ""
+
+#: utilities/flvdumper.cpp:304
+msgid "Usage: flvdumper [-h] [-m] [-a] filename"
+msgstr ""
+
+#: utilities/flvdumper.cpp:305 utilities/dumpshm.cpp:344
+#: utilities/soldumper.cpp:75
+msgid "-h\tHelp"
+msgstr ""
+
+#: utilities/flvdumper.cpp:306
+msgid "-m\tPrint only Meta tags (default)"
+msgstr ""
+
+#: utilities/flvdumper.cpp:307
+msgid "-a\tPrint all tags."
+msgstr ""
+
+#: utilities/rtmpget.cpp:445
+msgid "Error parsing command line: "
+msgstr ""
+
#: utilities/dumpshm.cpp:136
#, c-format
msgid "Gnash dumpshm version: %s, Gnash version: %s\n"
@@ -8112,396 +8089,469 @@ msgstr ""
msgid "\tTotal # of bytes: "
msgstr ""
-#: utilities/flvdumper.cpp:172
-#: cygnal/testsuite/libnet.all/test_handler.cpp:112
-#: cygnal/testsuite/libnet.all/generate_amfbins.cpp:111
-#: cygnal/testsuite/libnet.all/test_rtmp.cpp:120
-#: cygnal/testsuite/libnet.all/test_diskstream.cpp:100
-#: cygnal/testsuite/libnet.all/test_cache.cpp:103
-#: cygnal/testsuite/libamf.all/test_amfmsg.cpp:119
-#: cygnal/testsuite/libamf.all/test_sol.cpp:113
-#: cygnal/testsuite/libamf.all/test_flv.cpp:103
-#: cygnal/testsuite/libamf.all/test_el.cpp:107
-#: cygnal/testsuite/libamf.all/test_buffer.cpp:123
-#: cygnal/testsuite/libamf.all/test_amf.cpp:125
-msgid "Error parsing command line options: "
-msgstr ""
-
-#: utilities/flvdumper.cpp:173
-msgid "This is a Gnash flvdumper bug."
+#: utilities/soldumper.cpp:72
+msgid "This program dumps the internal data of a .sol file"
msgstr ""
-#: utilities/flvdumper.cpp:178
-msgid "Error: no input file was specified. Exiting."
+#: utilities/soldumper.cpp:74
+msgid "Usage: soldumper [h] filename"
msgstr ""
-#: utilities/flvdumper.cpp:302
-msgid "This program dumps the internal data of an FLV video file"
+#: utilities/soldumper.cpp:76
+msgid "-f\tForce local directory access"
msgstr ""
-#: utilities/flvdumper.cpp:304
-msgid "Usage: flvdumper [-h] [-m] [-a] filename"
+#: utilities/soldumper.cpp:77
+msgid "-l\tList all .sol files in default dir"
msgstr ""
-#: utilities/flvdumper.cpp:306
-msgid "-m\tPrint only Meta tags (default)"
+#: utilities/soldumper.cpp:105
+#, c-format
+msgid "Gnash soldumper version: %s, Gnash version: %s\n"
msgstr ""
-#: utilities/flvdumper.cpp:307
-msgid "-a\tPrint all tags."
+#: utilities/soldumper.cpp:125
+msgid "forcing local directory access only"
msgstr ""
-#: utilities/rtmpget.cpp:445
-msgid "Error parsing command line: "
+#: utilities/soldumper.cpp:130
+msgid "List .sol files in the default directory"
msgstr ""
-#: plugin/win32/plugin.cpp:590 plugin/aos4/plugin.cpp:593
+#: plugin/aos4/plugin.cpp:593 plugin/win32/plugin.cpp:590
#, c-format
msgid "FSCommand_callback(%p): %s %s"
msgstr ""
-#: cygnal/libamf/flv.cpp:94
-msgid "Bad magic number for FLV file!"
+#: cygnal/rtmp_server.cpp:124
+msgid "Failed to read the handshake from the client."
msgstr ""
-#: cygnal/libamf/flv.cpp:101
-#, c-format
-msgid "Bad version in FLV header! %d"
+#: cygnal/rtmp_server.cpp:139
+msgid "failed to read the handshake from the client."
msgstr ""
-#: cygnal/libamf/flv.cpp:110
-#, c-format
-msgid "Bad FLV file Type: %d"
+#: cygnal/rtmp_server.cpp:149
+msgid "Didn't receive any data in handshake!"
msgstr ""
-#: cygnal/libamf/flv.cpp:123
-#, c-format
-msgid "Bad header size in FLV header! %d"
+#: cygnal/rtmp_server.cpp:160
+msgid "RTMP header had parsing error!"
msgstr ""
-#: cygnal/libamf/flv.cpp:156
+#: cygnal/rtmp_server.cpp:168
#, c-format
-msgid "%d bytes for a string is over the safe limit of %d"
+msgid "NetConnection unusually large! %d"
msgstr ""
-#: cygnal/libamf/flv.cpp:186
-#, c-format
-msgid "Bad FLV Audio Sound Type: %x"
+#: cygnal/rtmp_server.cpp:202
+msgid "failed to read the body of the handshake data from the client."
msgstr ""
-#: cygnal/libamf/flv.cpp:195
-#, c-format
-msgid "Bad FLV Audio Sound size: %d"
+#: cygnal/rtmp_server.cpp:210
+msgid "Didn't receive NetConnection object in handshake!"
msgstr ""
-#: cygnal/libamf/flv.cpp:209
-#, c-format
-msgid "Bad FLV Audio Sound Rate: %d"
+#: cygnal/rtmp_server.cpp:234
+msgid "Couldn't send onBWDone to client!"
msgstr ""
-#: cygnal/libamf/flv.cpp:226
+#: cygnal/rtmp_server.cpp:261 cygnal/rtmp_server.cpp:1704
+msgid "Couldn't send Ping to client!"
+msgstr ""
+
+#: cygnal/rtmp_server.cpp:275
+msgid "Couldn't send response to client!"
+msgstr ""
+
+#: cygnal/rtmp_server.cpp:338
#, c-format
-msgid "Bad FLV Audio Sound format: %d"
+msgid "Couldn't sent RTMP Handshake response at %d!"
msgstr ""
-#: cygnal/libamf/flv.cpp:257
+#: cygnal/rtmp_server.cpp:355
+msgid "No data in original handshake buffer."
+msgstr ""
+
+#: cygnal/rtmp_server.cpp:359
+msgid "No data in response handshake buffer."
+msgstr ""
+
+#: cygnal/rtmp_server.cpp:387
#, c-format
-msgid "Bad FLV Video Codec CodecID: 0x%x"
+msgid "Handshake Finish Data didn't match by %d bytes"
msgstr ""
-#: cygnal/libamf/flv.cpp:267
+#: cygnal/rtmp_server.cpp:555
+msgid "Route"
+msgstr ""
+
+#: cygnal/rtmp_server.cpp:567
+msgid "AMF3 Notify"
+msgstr ""
+
+#: cygnal/rtmp_server.cpp:573
+msgid "AMF3 Invoke"
+msgstr ""
+
+#: cygnal/rtmp_server.cpp:582
+msgid "FLV Dat"
+msgstr ""
+
+#: cygnal/rtmp_server.cpp:585
#, c-format
-msgid "Bad FLV Video Frame CodecID: 0x%x"
+msgid "ERROR: Unidentified RTMP message content type 0x%x"
msgstr ""
-#: cygnal/libamf/flv.cpp:340 cygnal/libamf/flv.cpp:342
-#: cygnal/libamf/flv.cpp:344
+#: cygnal/rtmp_server.cpp:1105
+msgid "Couldn't reliably extract the echo data!"
+msgstr ""
+
+#: cygnal/rtmp_server.cpp:1402
#, c-format
-msgid "FLV MetaData: %s: %s"
+msgid "No stream for client %d"
msgstr ""
-#: cygnal/libamf/lcshm.cpp:372
-msgid "No data pointer to parse!"
+#: cygnal/rtmp_server.cpp:1444
+msgid "Stream Start"
msgstr ""
-#: cygnal/libamf/lcshm.cpp:391
-msgid "Didn't extract an element from the byte stream!"
+#: cygnal/rtmp_server.cpp:1447
+msgid "Stream EOF"
msgstr ""
-#: cygnal/libamf/lcshm.cpp:503
-#, c-format
-msgid " The size of %s is %d "
+#: cygnal/rtmp_server.cpp:1450
+msgid "Stream No Data"
msgstr ""
-#: cygnal/libamf/lcshm.cpp:520
+#: cygnal/rtmp_server.cpp:1453
#, c-format
-msgid "Failed to open shared memory segment: \"%s\""
+msgid "Stream Set Buffer: %d"
msgstr ""
-#: cygnal/libamf/lcshm.cpp:561
+#: cygnal/rtmp_server.cpp:1467
+msgid "Stream Pong"
+msgstr ""
+
+#: cygnal/rtmp_server.cpp:1486
+msgid "Set Chunk Size"
+msgstr ""
+
+#: cygnal/rtmp_server.cpp:1489
+msgid "Bytes Read"
+msgstr ""
+
+#: cygnal/rtmp_server.cpp:1497
+msgid "Set Window Size"
+msgstr ""
+
+#: cygnal/rtmp_server.cpp:1500
+msgid "Set Bandwidth"
+msgstr ""
+
+#: cygnal/rtmp_server.cpp:1511 cygnal/rtmp_server.cpp:1514
+#: cygnal/rtmp_server.cpp:1517 cygnal/rtmp_server.cpp:1520
+#: cygnal/rtmp_server.cpp:1667
#, c-format
-msgid "Failed to open shared memory segment: 0x%x"
+msgid "RTMP type %d"
msgstr ""
-#: cygnal/libamf/lcshm.cpp:660
+#: cygnal/rtmp_server.cpp:1526
#, c-format
-msgid " ***** The size of the data is %s *****"
+msgid "Error INVOKING method \"%s\"!"
msgstr ""
-#: cygnal/libamf/element.cpp:175
-msgid "Can't create remote function calls yet"
+#: cygnal/rtmp_server.cpp:1650
+msgid "Received an _error message from the client!"
msgstr ""
-#: cygnal/libamf/element.cpp:479
+#: cygnal/rtmp_server.cpp:1670
#, c-format
-msgid "Size of Element \"%s\" is: %d"
+msgid "ERROR: Unidentified AMF header data type 0x%x"
msgstr ""
-#: cygnal/libamf/element.cpp:1534
-msgid "FIXME: got AMF3 data!"
+#: cygnal/cygnal.cpp:190
+msgid "cygnal -- a streaming media server."
msgstr ""
-#: cygnal/libamf/sol.cpp:230
-#, c-format
-msgid ""
-"%s: SOL file header is: \n"
-"%s"
+#: cygnal/cygnal.cpp:192
+msgid "Usage: cygnal [options...]"
msgstr ""
-#: cygnal/libamf/sol.cpp:250
-#, c-format
-msgid "Failed opening file '%s' in binary mode"
+#: cygnal/cygnal.cpp:193 cygnal/cgi-bin/oflaDemo/oflaDemo.cpp:596
+#: cygnal/cgi-bin/fitcDemo/fitcDemo.cpp:321
+#: cygnal/cgi-bin/echo/gateway.cpp:406 cygnal/cgi-bin/echo/echo.cpp:316
+#: cygnal/testsuite/libnet.all/test_diskstream.cpp:269
+#: cygnal/testsuite/libnet.all/test_handler.cpp:281
+#: cygnal/testsuite/libnet.all/generate_amfbins.cpp:300
+#: cygnal/testsuite/libnet.all/test_cache.cpp:391
+#: cygnal/testsuite/libamf.all/test_el.cpp:491
+#: cygnal/testsuite/libamf.all/test_buffer.cpp:721
+#: cygnal/testsuite/libamf.all/test_flv.cpp:282
+#: cygnal/testsuite/libamf.all/test_amfmsg.cpp:247
+#: cygnal/testsuite/libamf.all/test_amf.cpp:422
+msgid " -h, --help Print this help and exit"
+msgstr ""
+
+#: cygnal/cygnal.cpp:194
+msgid " -V, --version Print version information and exit"
+msgstr ""
+
+#: cygnal/cygnal.cpp:195 cygnal/cgi-bin/oflaDemo/oflaDemo.cpp:597
+#: cygnal/cgi-bin/fitcDemo/fitcDemo.cpp:322
+#: cygnal/cgi-bin/echo/gateway.cpp:407 cygnal/cgi-bin/echo/echo.cpp:317
+#: cygnal/testsuite/libnet.all/test_diskstream.cpp:270
+#: cygnal/testsuite/libnet.all/test_handler.cpp:282
+#: cygnal/testsuite/libnet.all/generate_amfbins.cpp:301
+#: cygnal/testsuite/libnet.all/test_cache.cpp:392
+#: cygnal/testsuite/libamf.all/test_el.cpp:492
+#: cygnal/testsuite/libamf.all/test_buffer.cpp:722
+#: cygnal/testsuite/libamf.all/test_flv.cpp:283
+#: cygnal/testsuite/libamf.all/test_amfmsg.cpp:248
+#: cygnal/testsuite/libamf.all/test_amf.cpp:423
+msgid " -v, --verbose Output verbose debug info"
msgstr ""
-#: cygnal/libamf/sol.cpp:337
-#, c-format
-msgid "Error writing %d bytes of header to output file %s"
+#: cygnal/cygnal.cpp:196
+msgid " -s, --singlethread Disable Multi Threading"
msgstr ""
-#: cygnal/libamf/sol.cpp:344
-#, c-format
-msgid "Error writing %d bytes of body to output file %s"
+#: cygnal/cygnal.cpp:197 cygnal/cgi-bin/oflaDemo/oflaDemo.cpp:598
+#: cygnal/cgi-bin/fitcDemo/fitcDemo.cpp:323
+#: cygnal/cgi-bin/echo/gateway.cpp:408 cygnal/cgi-bin/echo/echo.cpp:318
+msgid " -n, --netdebug Turn on net debugging messages"
msgstr ""
-#: cygnal/libamf/sol.cpp:404
-#, c-format
-msgid "%s is an SOL file"
+#: cygnal/cygnal.cpp:198
+msgid " -o --only-port Only use port for debugging"
msgstr ""
-#: cygnal/libamf/sol.cpp:407
-#, c-format
-msgid ""
-"%s looks like an SOL file, but the length is wrong. Should be %d, got %d"
+#: cygnal/cygnal.cpp:199
+msgid " -p --port-offset Port offset for debugging"
msgstr ""
-#: cygnal/libamf/sol.cpp:413
-#, c-format
-msgid "%s isn't an SOL file"
+#: cygnal/cygnal.cpp:200
+msgid " -t, --testing Turn on special Gnash testing support"
msgstr ""
-#: cygnal/libamf/sol.cpp:455
-#, c-format
-msgid "Reading SharedObject %s: %s"
+#: cygnal/cygnal.cpp:201
+msgid " -a, --admin Enable the administration thread"
msgstr ""
-#: cygnal/libamf/amf_msg.cpp:178
-msgid "AMF Message 'target' field missing!"
+#: cygnal/cygnal.cpp:202
+msgid " -r, --root Document root for all files"
msgstr ""
-#: cygnal/libamf/amf_msg.cpp:181
-msgid "AMF Message 'reply' field missing!"
+#: cygnal/cygnal.cpp:203
+msgid " -m, --machine Hostname for this machine"
msgstr ""
-#: cygnal/libamf/amf_msg.cpp:184
-msgid "AMF Message 'size' field missing!"
+#: cygnal/cygnal.cpp:266
+msgid ": couldn't open file: "
msgstr ""
-#: cygnal/libamf/amf_msg.cpp:231
+#: cygnal/cygnal.cpp:343
#, c-format
-msgid ""
-"Error parsing the AMF packet: \n"
-"\t%s"
+msgid "Couldn't connect to %s"
msgstr ""
-#: cygnal/libamf/amf.cpp:180
+#: cygnal/cygnal.cpp:363
#, c-format
-msgid "Encoded data size has %d properties"
-msgstr ""
-
-#: cygnal/libamf/amf.cpp:300
-msgid "XML AMF objects not supported yet"
+msgid "%s is active on fd #%d."
msgstr ""
-#: cygnal/libamf/amf.cpp:404
-msgid "Movie Clip AMF objects not supported yet"
+#: cygnal/cygnal.cpp:509
+#, c-format
+msgid "Extraneous argument: %s"
msgstr ""
-#: cygnal/libamf/amf.cpp:495
-msgid "Long String AMF objects not supported yet"
+#: cygnal/cygnal.cpp:513 cygnal/cgi-bin/oflaDemo/oflaDemo.cpp:441
+#, c-format
+msgid "Document Root for media files is: %s"
msgstr ""
-#: cygnal/libamf/amf.cpp:512
-msgid "Reecord Set AMF objects not supported yet"
+#: cygnal/cygnal.cpp:597
+msgid "Cygnal done..."
msgstr ""
-#: cygnal/libamf/amf.cpp:561
-msgid "Encoding a strict array as an ecma array"
+#: cygnal/cygnal.cpp:610
+#, c-format
+msgid "Got a %d interrupt"
msgstr ""
-#: cygnal/libamf/amf.cpp:784
-msgid "FIXME: got AMF3 data type"
+#: cygnal/cygnal.cpp:630
+msgid ""
+"Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.\n"
+"Cygnal comes with NO WARRANTY, to the extent permitted by law.\n"
+"You may redistribute copies of Cygnal under the terms of the GNU General\n"
+"Public License V3 or later. For more information, see the file named "
+"COPYING.\n"
msgstr ""
-#: cygnal/libamf/amf.cpp:913
-msgid "AMF body input data is NULL"
+#: cygnal/cygnal.cpp:652
+#, c-format
+msgid "Starting Admin Handler for port %d"
msgstr ""
-#: cygnal/libamf/amf.cpp:937
-msgid "AMF data too short to contain type field"
+#: cygnal/cygnal.cpp:658
+msgid "Got an incoming Admin request"
msgstr ""
-#: cygnal/libamf/amf.cpp:948
-msgid "Element has no type!"
+#: cygnal/cygnal.cpp:666
+msgid "no more admin data, exiting...\n"
msgstr ""
-#: cygnal/libamf/amf.cpp:958
-msgid "AMF data segment too short to containtype NUMBER"
+#: cygnal/cygnal.cpp:751
+msgid "admin_handler: Done...!\n"
msgstr ""
-#: cygnal/libamf/amf.cpp:978
+#: cygnal/cygnal.cpp:780
#, c-format
-msgid "%d bytes for a string is over the safe limit of %d, line %d"
+msgid "Can't start %s Connection Handler for fd #%d, port %hd"
msgstr ""
-#: cygnal/libamf/amf.cpp:1021
-msgid "AMF0 MovieClip frame"
+#: cygnal/cygnal.cpp:784
+#, c-format
+msgid "Starting %s Connection Handler for fd #%d, port %hd"
msgstr ""
-#: cygnal/libamf/amf.cpp:1151
-msgid "Found object terminator byte"
+#: cygnal/cygnal.cpp:795
+#, c-format
+msgid "This system has %d cpus."
msgstr ""
-#: cygnal/libamf/amf.cpp:1169
+#: cygnal/cygnal.cpp:832
#, c-format
-msgid "%s: type %d"
+msgid "No new %s network connections"
msgstr ""
-#: cygnal/libamf/amf.cpp:1262
+#: cygnal/cygnal.cpp:836
#, c-format
-msgid "No data associated with Property \"%s\""
+msgid "*** New %s network connection for thread ID #%d, fd #%d ***"
msgstr ""
-#: cygnal/libamf/buffer.cpp:179
+#: cygnal/cygnal.cpp:882
#, c-format
-msgid "Buffer %x (%d) stayed in queue for %f seconds"
+msgid "Creating new %s Handler for %s using fd #%d"
msgstr ""
-#: cygnal/libamf/buffer.cpp:711
+#: cygnal/cygnal.cpp:900
#, c-format
-msgid "cygnal::Buffer::resize(%d): Truncating data (%d bytes) while resizing!"
+msgid "Reusing %s Handler for %s using fd #%d"
msgstr ""
-#: cygnal/libamf/buffer.cpp:766
+#: cygnal/cygnal.cpp:926
#, c-format
-msgid "Creating %d errors in the buffer"
+msgid "Creating new %s Handler for: %s for fd %#d"
msgstr ""
-#: cygnal/handler.cpp:128
+#: cygnal/cygnal.cpp:950
#, c-format
-msgid "Protocol %d for Handler::AddClient()"
+msgid "Cygnal Plugin paths are: %s"
msgstr ""
-#: cygnal/handler.cpp:171 cygnal/handler.cpp:196
-msgid "HTTP key couldn't be read!"
+#: cygnal/cygnal.cpp:971
+#, c-format
+msgid "Couldn't load plugin for %s"
msgstr ""
-#: cygnal/handler.cpp:214 cygnal/handler.cpp:244
+#: cygnal/cygnal.cpp:982
#, c-format
-msgid "FD #%d has no protocol handler registered"
+msgid "Number of active Threads is %d"
msgstr ""
-#: cygnal/handler.cpp:319
+#: cygnal/cygnal.cpp:985
#, c-format
-msgid "No %s symbol in plugin"
+msgid "Restarting loop for next connection for port %d..."
msgstr ""
-#: cygnal/handler.cpp:322
+#: cygnal/cygnal.cpp:1043
#, c-format
-msgid "Initialized Plugin: \"%s\": %s"
+msgid "%d active disk streams"
msgstr ""
-#: cygnal/handler.cpp:335 cygnal/handler.cpp:350
+#: cygnal/cygnal.cpp:1083
#, c-format
-msgid "Couldn't get %s symbol"
+msgid "Got a hit for fd #%d, protocol %s"
msgstr ""
-#: cygnal/cvm.cpp:276
-msgid "The debugger has been disabled at configuration time"
+#: cygnal/cygnal.cpp:1087
+msgid "No protocol specified!"
msgstr ""
-#: cygnal/http_server.cpp:154 cygnal/http_server.cpp:211
+#: cygnal/cygnal.cpp:1095 cygnal/cygnal.cpp:1120 cygnal/cygnal.cpp:1131
#, c-format
-msgid "New filestream %s"
+msgid "Done with HTTP connection for fd #%d, CGI %s"
msgstr ""
-#: cygnal/http_server.cpp:213
+#: cygnal/cygnal.cpp:1100
#, c-format
-msgid "Reusing filestream %s"
-msgstr ""
-
-#: cygnal/http_server.cpp:306
-msgid "couldn't read data!"
+msgid "Not Done with HTTP connection for fd #%d, it's a persistent connection."
msgstr ""
-#: cygnal/http_server.cpp:373 cygnal/libnet/http.cpp:592
-msgid "PUT request"
+#: cygnal/cygnal.cpp:1109
+#, c-format
+msgid "Done with RTMP connection for fd #%d, CGI "
msgstr ""
-#: cygnal/http_server.cpp:383 cygnal/libnet/http.cpp:601
-msgid "DELETE request"
+#: cygnal/cygnal.cpp:1143
+#, c-format
+msgid "Unsupported network protocol for fd #%d, %d"
msgstr ""
-#: cygnal/http_server.cpp:393 cygnal/libnet/http.cpp:609
-msgid "CONNECT request"
+#: cygnal/cygnal.cpp:1163
+#, c-format
+msgid "Got no hits, %d retries"
msgstr ""
-#: cygnal/http_server.cpp:403 cygnal/libnet/http.cpp:617
-msgid "OPTIONS request"
+#: cygnal/cvm.cpp:276
+msgid "The debugger has been disabled at configuration time"
msgstr ""
-#: cygnal/http_server.cpp:413 cygnal/libnet/http.cpp:625
-msgid "HEAD request"
+#: cygnal/cgi-bin/oflaDemo/oflaDemo.cpp:233
+#: cygnal/cgi-bin/fitcDemo/fitcDemo.cpp:166
+#: cygnal/cgi-bin/echo/gateway.cpp:139 cygnal/cgi-bin/echo/echo.cpp:161
+#, c-format
+msgid "Error parsing command line options: %s"
msgstr ""
-#: cygnal/http_server.cpp:423 cygnal/libnet/http.cpp:633
-msgid "TRACE request"
+#: cygnal/cgi-bin/oflaDemo/oflaDemo.cpp:309
+#, c-format
+msgid "Scanning directory \"%s\" for %s files"
msgstr ""
-#: cygnal/http_server.cpp:1013
+#: cygnal/cgi-bin/oflaDemo/oflaDemo.cpp:340
#, c-format
-msgid "Processing HTTP data for fd #%d"
+msgid "Gnash media file name: %s"
msgstr ""
-#: cygnal/http_server.cpp:1022
-msgid "FIXME: Existing data in packet!"
+#: cygnal/cgi-bin/oflaDemo/oflaDemo.cpp:595
+#: cygnal/cgi-bin/fitcDemo/fitcDemo.cpp:320
+#: cygnal/cgi-bin/echo/gateway.cpp:405 cygnal/cgi-bin/echo/echo.cpp:315
+#: cygnal/testsuite/libamf.all/test_flv.cpp:281
+#: cygnal/testsuite/libamf.all/test_amfmsg.cpp:246
+#: cygnal/testsuite/libamf.all/test_amf.cpp:421
+msgid "Usage: test_amf [options...]"
msgstr ""
-#: cygnal/http_server.cpp:1024
-msgid "FIXME: No existing data in packet!"
+#: cygnal/cgi-bin/oflaDemo/oflaDemo.cpp:599
+#: cygnal/cgi-bin/fitcDemo/fitcDemo.cpp:324 cygnal/cgi-bin/echo/echo.cpp:319
+msgid " -p, --netdebug port for network"
msgstr ""
-#: cygnal/libnet/cache.cpp:62
-msgid "using this constructor is only allowed for testing purposes."
+#: cygnal/crc.cpp:145
+#, c-format
+msgid "Couldn't open file: %s"
msgstr ""
-#: cygnal/libnet/cache.cpp:105
+#: cygnal/libnet/statistics.cpp:113
#, c-format
-msgid "Adding file %s to cache."
+msgid "Stream type is: %s"
msgstr ""
-#: cygnal/libnet/cache.cpp:148
+#: cygnal/libnet/statistics.cpp:119
#, c-format
-msgid "Trying to find %s in the cache."
+msgid "%d bytes were transferred in %s seconds"
msgstr ""
#: cygnal/libnet/rtmp.cpp:184
@@ -8744,757 +8794,738 @@ msgstr ""
msgid "RTMP header size is out of range! %d"
msgstr ""
-#: cygnal/libnet/sshserver.cpp:145
-#, c-format
-msgid "User %s wants to auth with pass %s\n"
-msgstr ""
-
-#: cygnal/libnet/sshserver.cpp:200 cygnal/libnet/sshclient.cpp:459
-msgid "==== The SSH header breaks down as follows: ===="
-msgstr ""
-
-#: cygnal/libnet/network.cpp:114
-msgid "Could not find a usable WinSock DLL"
-msgstr ""
-
-#: cygnal/libnet/network.cpp:162
-#, c-format
-msgid "already connected to port %hd"
-msgstr ""
-
-#: cygnal/libnet/network.cpp:184
-#, c-format
-msgid "unable to get protocol entry for %s"
-msgstr ""
-
-#: cygnal/libnet/network.cpp:201 cygnal/libnet/network.cpp:425
-#: cygnal/libnet/network.cpp:583
+#: cygnal/libnet/rtmp_client.cpp:152
#, c-format
-msgid "unable to create socket: %s"
-msgstr ""
-
-#: cygnal/libnet/network.cpp:208
-msgid "setsockopt SO_REUSEADDR failed"
+msgid "URL is %s"
msgstr ""
-#: cygnal/libnet/network.cpp:219
+#: cygnal/libnet/rtmp_client.cpp:153
#, c-format
-msgid "unable to bind to port %hd: %s"
+msgid "Protocol is %s"
msgstr ""
-#: cygnal/libnet/network.cpp:229
+#: cygnal/libnet/rtmp_client.cpp:154
#, c-format
-msgid "Server bound to service on %s, port %hd, using fd #%d"
+msgid "Host is %s"
msgstr ""
-#: cygnal/libnet/network.cpp:235
+#: cygnal/libnet/rtmp_client.cpp:155
#, c-format
-msgid "unable to listen on port: %hd: %s "
+msgid "Port is %s"
msgstr ""
-#: cygnal/libnet/network.cpp:291
+#: cygnal/libnet/rtmp_client.cpp:156
#, c-format
-msgid "Waiting to accept net traffic on fd #%d for port %d"
-msgstr ""
-
-#: cygnal/libnet/network.cpp:351
-msgid "There is a new network connection request."
+msgid "Path is %s"
msgstr ""
-#: cygnal/libnet/network.cpp:358
+#: cygnal/libnet/rtmp_client.cpp:157
#, c-format
-msgid "The accept() socket for fd #%d was interrupted by a system call"
+msgid "Filename is %s"
msgstr ""
-#: cygnal/libnet/network.cpp:382
+#: cygnal/libnet/rtmp_client.cpp:158
#, c-format
-msgid "unable to accept: %s"
+msgid "App is %s"
msgstr ""
-#: cygnal/libnet/network.cpp:387
+#: cygnal/libnet/rtmp_client.cpp:159
#, c-format
-msgid "Accepting TCP/IP connection on fd #%d for port %d"
+msgid "Query is %s"
msgstr ""
-#: cygnal/libnet/network.cpp:446 cygnal/libnet/network.cpp:604
+#: cygnal/libnet/rtmp_client.cpp:160
#, c-format
-msgid "The connect() socket for fd %d was interrupted by a system call"
+msgid "tcUrl is %s"
msgstr ""
-#: cygnal/libnet/network.cpp:452 cygnal/libnet/network.cpp:477
-#: cygnal/libnet/network.cpp:610 cygnal/libnet/network.cpp:650
+#: cygnal/libnet/rtmp_client.cpp:161
#, c-format
-msgid "The connect() socket for fd %d never was available for writing"
+msgid "swfUrl is %s"
msgstr ""
-#: cygnal/libnet/network.cpp:463 cygnal/libnet/network.cpp:628
+#: cygnal/libnet/rtmp_client.cpp:162
#, c-format
-msgid "The connect() socket for fd %d timed out waiting to write"
+msgid "pageUrl is %s"
msgstr ""
-#: cygnal/libnet/network.cpp:471
-#, c-format
-msgid "\tsocket name %s for fd %d"
+#: cygnal/libnet/rtmp_client.cpp:313
+msgid "RTMP handshake request failed"
msgstr ""
-#: cygnal/libnet/network.cpp:553
-#, c-format
-msgid "%s: to host %s at port %d"
+#: cygnal/libnet/rtmp_client.cpp:336
+msgid "RTMP handshake completion failed!"
msgstr ""
-#: cygnal/libnet/network.cpp:559
-#, c-format
-msgid "The hostname for this machine is %s"
+#: cygnal/libnet/rtmp_client.cpp:350
+msgid "Sent NetConnection Connect message successfully"
msgstr ""
-#: cygnal/libnet/network.cpp:561
-msgid "Couldn't get the hostname for this machine"
+#: cygnal/libnet/rtmp_client.cpp:353
+msgid "Couldn't send NetConnection Connect message,"
msgstr ""
-#: cygnal/libnet/network.cpp:576
-#, c-format
-msgid "The IP address for this client socket is %s"
+#: cygnal/libnet/rtmp_client.cpp:622
+msgid "Couldn't read data block in handshake!"
msgstr ""
-#: cygnal/libnet/network.cpp:643
+#: cygnal/libnet/rtmp_client.cpp:635
#, c-format
-msgid "\tport %d at IP %s for fd %d"
+msgid "Read data block in handshake, got %d bytes."
msgstr ""
-#: cygnal/libnet/network.cpp:730
+#: cygnal/libnet/rtmp_client.cpp:638
#, c-format
-msgid "Unable to close the socket for fd #%d: %s"
+msgid "Couldn't read data block in handshake, read %d bytes!"
msgstr ""
-#: cygnal/libnet/network.cpp:738
+#: cygnal/libnet/rtmp_client.cpp:645
#, c-format
-msgid "Closed the socket on fd #%d"
+msgid "RTMP Handshake header: Uptime: %u"
msgstr ""
-#: cygnal/libnet/network.cpp:767
+#: cygnal/libnet/rtmp_client.cpp:688
#, c-format
-msgid "%s: Closed fd #%d"
+msgid "About to write %d bytes, data is: %d bytes."
msgstr ""
-#: cygnal/libnet/network.cpp:879
+#: cygnal/libnet/rtmp_client.cpp:691
#, c-format
-msgid "Trying to read %d bytes from fd #%d"
+msgid "Client response header for handshake 2: %s"
msgstr ""
-#: cygnal/libnet/network.cpp:943 cygnal/libnet/network.cpp:1117
+#: cygnal/libnet/rtmp_client.cpp:693
#, c-format
-msgid "The socket for fd #%d was interrupted by a system call"
+msgid "Data in response for handshake 2: %s"
msgstr ""
-#: cygnal/libnet/network.cpp:947
-#, c-format
-msgid "The socket for fd #%d was never available for reading"
+#: cygnal/libnet/rtmp_client.cpp:702
+msgid "Couldn't write the second handshake packet!"
msgstr ""
-#: cygnal/libnet/network.cpp:953
-#, c-format
-msgid "The socket for #fd %d timed out waiting to read"
+#: cygnal/libnet/rtmp_client.cpp:729
+msgid "Got no response from the RTMP server"
msgstr ""
-#: cygnal/libnet/network.cpp:970
-#, c-format
-msgid "The socket for fd #%d was never available for reading data"
+#: cygnal/libnet/rtmp_client.cpp:737
+msgid "Got empty packet in buffer."
msgstr ""
-#: cygnal/libnet/network.cpp:976
-#, c-format
-msgid "The socket for #fd %d timed out waiting to read data"
+#: cygnal/libnet/rtmp_client.cpp:748
+msgid "No response from INVOKE of NetConnection connect"
msgstr ""
-#: cygnal/libnet/network.cpp:982
+#: cygnal/libnet/rtmp_client.cpp:755
#, c-format
-msgid "read %d bytes from fd #%d from port %d"
+msgid ""
+"%s: There are %d channel queues in the RTMP input queue, %d messages in "
+"front queue"
msgstr ""
-#: cygnal/libnet/network.cpp:986
-#, c-format
-msgid ""
-"%s: Read packet data from fd #%d (%d bytes): \n"
-"%s"
+#: cygnal/libnet/rtmp_client.cpp:768
+msgid "Couldn't decode RTMP message header"
msgstr ""
-#: cygnal/libnet/network.cpp:1121
-#, c-format
-msgid "The socket for fd #%d was never available for writing"
+#: cygnal/libnet/rtmp_client.cpp:773
+msgid "RTMP packet can't be of none type!"
msgstr ""
-#: cygnal/libnet/network.cpp:1125
-#, c-format
-msgid "The socket for fd #%d timed out waiting to write"
+#: cygnal/libnet/rtmp_client.cpp:777
+msgid "Server message data packet"
msgstr ""
-#: cygnal/libnet/network.cpp:1139
-#, c-format
-msgid "Wrote zero out of %d bytes to fd #%d: %s"
+#: cygnal/libnet/rtmp_client.cpp:781
+msgid "Abort packet"
msgstr ""
-#: cygnal/libnet/network.cpp:1144
-#, c-format
-msgid "Couldn't write %d bytes to fd #%d: %s"
+#: cygnal/libnet/rtmp_client.cpp:784
+msgid "Bytes Read data packet"
msgstr ""
-#: cygnal/libnet/network.cpp:1152
+#: cygnal/libnet/rtmp_client.cpp:789
#, c-format
-msgid "wrote %d bytes to fd #%d, expected %d"
+msgid "Got a Ping type %s"
msgstr ""
-#: cygnal/libnet/network.cpp:1157
-#, c-format
-msgid "wrote %d bytes to fd #%d for port %d"
+#: cygnal/libnet/rtmp_client.cpp:793
+msgid "Set Window Size message data packet"
msgstr ""
-#: cygnal/libnet/network.cpp:1165
-#, c-format
-msgid ""
-"%s: Wrote packet data to fd #%d: \n"
-"%s"
+#: cygnal/libnet/rtmp_client.cpp:796
+msgid "Set Bandwidthmessage data packet"
msgstr ""
-#: cygnal/libnet/network.cpp:1179
-#, c-format
-msgid "took %d usec to write (%d bytes)"
+#: cygnal/libnet/rtmp_client.cpp:799
+msgid "Route from other server packet"
msgstr ""
-#: cygnal/libnet/network.cpp:1194 cygnal/libnet/network.cpp:1205
-#, c-format
-msgid "%s: adding fd #%d to pollfds"
+#: cygnal/libnet/rtmp_client.cpp:818
+msgid "AMF0 Shared Object data packet message"
msgstr ""
-#: cygnal/libnet/network.cpp:1231
-#, c-format
-msgid "%s: erasing fd #%d from pollfds"
+#: cygnal/libnet/rtmp_client.cpp:821
+msgid "AMF3 Notify data packet message"
msgstr ""
-#: cygnal/libnet/network.cpp:1279
-#, c-format
-msgid "%s: waiting for %d fds"
+#: cygnal/libnet/rtmp_client.cpp:824
+msgid "AMF3 Shared Object data packet message"
msgstr ""
-#: cygnal/libnet/network.cpp:1318
-#, c-format
-msgid "Poll returned: %d, timeout is: %d"
+#: cygnal/libnet/rtmp_client.cpp:827
+msgid "AMF0 Invoke packet message"
msgstr ""
-#: cygnal/libnet/network.cpp:1449
-msgid "Waiting for data was interrupted by a system call"
+#: cygnal/libnet/rtmp_client.cpp:830
+msgid "AMF0 Notify data packet message"
msgstr ""
-#: cygnal/libnet/network.cpp:1453
-msgid "Waiting for data for fdset, was never available for reading"
+#: cygnal/libnet/rtmp_client.cpp:841
+msgid "FLV data packet message"
msgstr ""
-#: cygnal/libnet/network.cpp:1467
-#, c-format
-msgid "select() got an error: %s."
+#: cygnal/libnet/rtmp_client.cpp:844
+msgid "Couldn't decode RTMP message Body"
msgstr ""
-#: cygnal/libnet/network.cpp:1471
-#, c-format
-msgid "select() saw activity on %d file descriptors."
+#: cygnal/libnet/cque.cpp:71
+msgid "CQue::wait(win32)"
msgstr ""
-#: cygnal/libnet/network.cpp:1547
-#, c-format
-msgid "Can't connect to server %s"
+#: cygnal/libnet/cque.cpp:83
+msgid "CQue::notify(win32)"
msgstr ""
-#: cygnal/libnet/network.cpp:1559
+#: cygnal/libnet/http.cpp:176
#, c-format
-msgid "Using default hostname: \"%s\""
+msgid "Setting Content Length to %d"
msgstr ""
-#: cygnal/libnet/network.cpp:1564
+#: cygnal/libnet/http.cpp:189
#, c-format
-msgid "Using default keyfile: \"%s\""
+msgid "Setting Content Type to %d"
msgstr ""
-#: cygnal/libnet/network.cpp:1569
+#: cygnal/libnet/http.cpp:199
#, c-format
-msgid "Using default CA List: \"%s\""
+msgid "Got a request, parsing \"%s\""
msgstr ""
-#: cygnal/libnet/network.cpp:1575
+#: cygnal/libnet/http.cpp:216 cygnal/libnet/http.cpp:1295
#, c-format
-msgid "Using default Password: \"%s\""
+msgid "Parameters for file: \"%s\""
msgstr ""
-#: cygnal/libnet/network.cpp:1580
+#: cygnal/libnet/http.cpp:220
#, c-format
-msgid "Using default Root Path to PEM files: \"%s\""
+msgid "Requesting file: \"%s\""
msgstr ""
-#: cygnal/libnet/network.cpp:1585
-msgid "Connected to SSL server"
+#: cygnal/libnet/http.cpp:225
+msgid "Enabling Keep Alive by default for HTTP > 1.0"
msgstr ""
-#: cygnal/libnet/network.cpp:1587
-msgid "Couldn't connect to SSL server"
+#: cygnal/libnet/http.cpp:422 cygnal/libnet/http.cpp:521
+#, c-format
+msgid "Que empty, net connection dropped for fd #%d"
msgstr ""
-#: cygnal/libnet/network.cpp:1620
-#, c-format
-msgid "#%d bytes waiting in kernel network buffer."
+#: cygnal/libnet/http.cpp:433
+msgid "FIXME: found file in cache!"
msgstr ""
-#: cygnal/libnet/network.cpp:1631
+#: cygnal/libnet/http.cpp:499
#, c-format
-msgid "Got an %d interrupt while blocked on pselect()"
+msgid "http_handler all done transferring requested file \"%s\"."
msgstr ""
-#: cygnal/libnet/statistics.cpp:113
-#, c-format
-msgid "Stream type is: %s"
+#: cygnal/libnet/http.cpp:542
+msgid "Got file data in POST"
msgstr ""
-#: cygnal/libnet/statistics.cpp:119
-#, c-format
-msgid "%d bytes were transferred in %s seconds"
+#: cygnal/libnet/http.cpp:549
+msgid "Got AMF data in POST"
msgstr ""
-#: cygnal/libnet/rtmp_client.cpp:152
-#, c-format
-msgid "URL is %s"
+#: cygnal/libnet/http.cpp:564
+msgid "Got CGI echo request in POST"
msgstr ""
-#: cygnal/libnet/rtmp_client.cpp:153
-#, c-format
-msgid "Protocol is %s"
+#: cygnal/libnet/http.cpp:592 cygnal/http_server.cpp:375
+msgid "PUT request"
msgstr ""
-#: cygnal/libnet/rtmp_client.cpp:154
-#, c-format
-msgid "Host is %s"
+#: cygnal/libnet/http.cpp:601 cygnal/http_server.cpp:385
+msgid "DELETE request"
msgstr ""
-#: cygnal/libnet/rtmp_client.cpp:155
-#, c-format
-msgid "Port is %s"
+#: cygnal/libnet/http.cpp:609 cygnal/http_server.cpp:395
+msgid "CONNECT request"
msgstr ""
-#: cygnal/libnet/rtmp_client.cpp:156
-#, c-format
-msgid "Path is %s"
+#: cygnal/libnet/http.cpp:617 cygnal/http_server.cpp:405
+msgid "OPTIONS request"
msgstr ""
-#: cygnal/libnet/rtmp_client.cpp:157
-#, c-format
-msgid "Filename is %s"
+#: cygnal/libnet/http.cpp:625 cygnal/http_server.cpp:415
+msgid "HEAD request"
msgstr ""
-#: cygnal/libnet/rtmp_client.cpp:158
-#, c-format
-msgid "App is %s"
+#: cygnal/libnet/http.cpp:633 cygnal/http_server.cpp:425
+msgid "TRACE request"
msgstr ""
-#: cygnal/libnet/rtmp_client.cpp:159
+#: cygnal/libnet/http.cpp:1385
#, c-format
-msgid "Query is %s"
+msgid "%s: Total size for first chunk is: %d, data size %d (%d)"
msgstr ""
-#: cygnal/libnet/rtmp_client.cpp:160
+#: cygnal/libnet/http.cpp:1419 cygnal/libnet/http.cpp:1512
#, c-format
-msgid "tcUrl is %s"
+msgid "no data yet for fd #%d, continuing..."
msgstr ""
-#: cygnal/libnet/rtmp_client.cpp:161
+#: cygnal/libnet/http.cpp:1436
#, c-format
-msgid "swfUrl is %s"
+msgid "%s: end of chunks!"
msgstr ""
-#: cygnal/libnet/rtmp_client.cpp:162
+#: cygnal/libnet/http.cpp:1502
#, c-format
-msgid "pageUrl is %s"
+msgid "Starting to wait for data in net for fd #%d"
msgstr ""
-#: cygnal/libnet/rtmp_client.cpp:313
-msgid "RTMP handshake request failed"
+#: cygnal/libnet/http.cpp:1538
+#, c-format
+msgid "no more data for fd #%d, exiting..."
msgstr ""
-#: cygnal/libnet/rtmp_client.cpp:336
-msgid "RTMP handshake completion failed!"
+#: cygnal/libnet/http.cpp:1542
+#, c-format
+msgid "Handler done for fd #%d, can't read any data..."
msgstr ""
-#: cygnal/libnet/rtmp_client.cpp:350
-msgid "Sent NetConnection Connect message successfully"
+#: cygnal/libnet/http.cpp:1548
+#, c-format
+msgid "Done receiving data for fd #%d..."
msgstr ""
-#: cygnal/libnet/rtmp_client.cpp:353
-msgid "Couldn't send NetConnection Connect message,"
+#: cygnal/libnet/http.cpp:1560
+msgid "==== The HTTP header breaks down as follows: ===="
msgstr ""
-#: cygnal/libnet/rtmp_client.cpp:622
-msgid "Couldn't read data block in handshake!"
+#: cygnal/libnet/http.cpp:1561
+#, c-format
+msgid "Filespec: %s"
msgstr ""
-#: cygnal/libnet/rtmp_client.cpp:635
+#: cygnal/libnet/http.cpp:1562
#, c-format
-msgid "Read data block in handshake, got %d bytes."
+msgid "Version: %d.%d"
msgstr ""
-#: cygnal/libnet/rtmp_client.cpp:638
+#: cygnal/libnet/http.cpp:1566
#, c-format
-msgid "Couldn't read data block in handshake, read %d bytes!"
+msgid "Field: \"%s\" = \"%s\""
msgstr ""
-#: cygnal/libnet/rtmp_client.cpp:645
-#, c-format
-msgid "RTMP Handshake header: Uptime: %u"
+#: cygnal/libnet/http.cpp:1570
+msgid "RTMPT optional index is: "
msgstr ""
-#: cygnal/libnet/rtmp_client.cpp:688
-#, c-format
-msgid "About to write %d bytes, data is: %d bytes."
+#: cygnal/libnet/http.cpp:1571
+msgid "RTMPT optional client ID is: "
msgstr ""
-#: cygnal/libnet/rtmp_client.cpp:691
-#, c-format
-msgid "Client response header for handshake 2: %s"
+#: cygnal/libnet/http.cpp:1572
+msgid "==== ==== ===="
msgstr ""
-#: cygnal/libnet/rtmp_client.cpp:693
-#, c-format
-msgid "Data in response for handshake 2: %s"
+#: cygnal/libnet/network.cpp:113
+msgid "Could not find a usable WinSock DLL"
msgstr ""
-#: cygnal/libnet/rtmp_client.cpp:702
-msgid "Couldn't write the second handshake packet!"
+#: cygnal/libnet/network.cpp:165
+#, c-format
+msgid "already connected to port %hd"
msgstr ""
-#: cygnal/libnet/rtmp_client.cpp:729
-msgid "Got no response from the RTMP server"
+#: cygnal/libnet/network.cpp:182 cygnal/libnet/network.cpp:580
+#, c-format
+msgid "getaddrinfo() failed with code: #%d - %s\n"
msgstr ""
-#: cygnal/libnet/rtmp_client.cpp:737
-msgid "Got empty packet in buffer."
+#: cygnal/libnet/network.cpp:231 cygnal/libnet/network.cpp:446
+#, c-format
+msgid "unable to create socket: %s"
msgstr ""
-#: cygnal/libnet/rtmp_client.cpp:748
-msgid "No response from INVOKE of NetConnection connect"
+#: cygnal/libnet/network.cpp:238
+msgid "setsockopt SO_REUSEADDR failed"
msgstr ""
-#: cygnal/libnet/rtmp_client.cpp:755
+#: cygnal/libnet/network.cpp:246
#, c-format
-msgid ""
-"%s: There are %d channel queues in the RTMP input queue, %d messages in "
-"front queue"
+msgid "unable to bind to port %hd: %s"
msgstr ""
-#: cygnal/libnet/rtmp_client.cpp:768
-msgid "Couldn't decode RTMP message header"
+#: cygnal/libnet/network.cpp:253
+#, c-format
+msgid "unable to listen on port: %hd: %s "
msgstr ""
-#: cygnal/libnet/rtmp_client.cpp:773
-msgid "RTMP packet can't be of none type!"
+#: cygnal/libnet/network.cpp:312
+#, c-format
+msgid "Waiting to accept net traffic on fd #%d for port %d"
msgstr ""
-#: cygnal/libnet/rtmp_client.cpp:777
-msgid "Server message data packet"
+#: cygnal/libnet/network.cpp:372
+msgid "There is a new network connection request."
msgstr ""
-#: cygnal/libnet/rtmp_client.cpp:781
-msgid "Abort packet"
+#: cygnal/libnet/network.cpp:379
+#, c-format
+msgid "The accept() socket for fd #%d was interrupted by a system call"
msgstr ""
-#: cygnal/libnet/rtmp_client.cpp:784
-msgid "Bytes Read data packet"
+#: cygnal/libnet/network.cpp:403
+#, c-format
+msgid "unable to accept: %s"
msgstr ""
-#: cygnal/libnet/rtmp_client.cpp:789
+#: cygnal/libnet/network.cpp:408
#, c-format
-msgid "Got a Ping type %s"
+msgid "Accepting TCP/IP connection on fd #%d for port %d"
msgstr ""
-#: cygnal/libnet/rtmp_client.cpp:793
-msgid "Set Window Size message data packet"
+#: cygnal/libnet/network.cpp:467 cygnal/libnet/network.cpp:661
+#, c-format
+msgid "The connect() socket for fd %d was interrupted by a system call"
msgstr ""
-#: cygnal/libnet/rtmp_client.cpp:796
-msgid "Set Bandwidthmessage data packet"
+#: cygnal/libnet/network.cpp:473 cygnal/libnet/network.cpp:498
+#: cygnal/libnet/network.cpp:667 cygnal/libnet/network.cpp:702
+#, c-format
+msgid "The connect() socket for fd %d never was available for writing"
msgstr ""
-#: cygnal/libnet/rtmp_client.cpp:799
-msgid "Route from other server packet"
+#: cygnal/libnet/network.cpp:484 cygnal/libnet/network.cpp:685
+#, c-format
+msgid "The connect() socket for fd %d timed out waiting to write"
msgstr ""
-#: cygnal/libnet/rtmp_client.cpp:818
-msgid "AMF0 Shared Object data packet message"
+#: cygnal/libnet/network.cpp:492
+#, c-format
+msgid "\tsocket name %s for fd %d"
msgstr ""
-#: cygnal/libnet/rtmp_client.cpp:821
-msgid "AMF3 Notify data packet message"
+#: cygnal/libnet/network.cpp:571
+#, c-format
+msgid "%s: to host %s at port %d"
msgstr ""
-#: cygnal/libnet/rtmp_client.cpp:824
-msgid "AMF3 Shared Object data packet message"
+#: cygnal/libnet/network.cpp:695
+#, c-format
+msgid "\tport %d at IP %s for fd %d"
msgstr ""
-#: cygnal/libnet/rtmp_client.cpp:827
-msgid "AMF0 Invoke packet message"
+#: cygnal/libnet/network.cpp:780
+#, c-format
+msgid "Unable to close the socket for fd #%d: %s"
msgstr ""
-#: cygnal/libnet/rtmp_client.cpp:830
-msgid "AMF0 Notify data packet message"
+#: cygnal/libnet/network.cpp:788
+#, c-format
+msgid "Closed the socket on fd #%d"
msgstr ""
-#: cygnal/libnet/rtmp_client.cpp:841
-msgid "FLV data packet message"
+#: cygnal/libnet/network.cpp:817
+#, c-format
+msgid "%s: Closed fd #%d"
msgstr ""
-#: cygnal/libnet/rtmp_client.cpp:844
-msgid "Couldn't decode RTMP message Body"
+#: cygnal/libnet/network.cpp:929
+#, c-format
+msgid "Trying to read %d bytes from fd #%d"
msgstr ""
-#: cygnal/libnet/sslserver.cpp:136
-msgid "SSL!!"
+#: cygnal/libnet/network.cpp:993 cygnal/libnet/network.cpp:1167
+#, c-format
+msgid "The socket for fd #%d was interrupted by a system call"
msgstr ""
-#: cygnal/libnet/sslserver.cpp:159
-msgid "Got an incoming SSL connection request"
+#: cygnal/libnet/network.cpp:997
+#, c-format
+msgid "The socket for fd #%d was never available for reading"
msgstr ""
-#: cygnal/libnet/sslserver.cpp:169 cygnal/libnet/sslclient.cpp:137
-#: cygnal/libnet/sslclient.cpp:161 cygnal/libnet/sslclient.cpp:212
-#: cygnal/libnet/sslclient.cpp:236 cygnal/libnet/sslclient.cpp:314
+#: cygnal/libnet/network.cpp:1003
#, c-format
-msgid "Error was: \"%s\"!"
+msgid "The socket for #fd %d timed out waiting to read"
msgstr ""
-#: cygnal/libnet/sslserver.cpp:182 cygnal/libnet/sslclient.cpp:386
-msgid "==== The SSL header breaks down as follows: ===="
+#: cygnal/libnet/network.cpp:1020
+#, c-format
+msgid "The socket for fd #%d was never available for reading data"
msgstr ""
-#: cygnal/libnet/cque.cpp:71
-msgid "CQue::wait(win32)"
+#: cygnal/libnet/network.cpp:1026
+#, c-format
+msgid "The socket for #fd %d timed out waiting to read data"
msgstr ""
-#: cygnal/libnet/cque.cpp:83
-msgid "CQue::notify(win32)"
+#: cygnal/libnet/network.cpp:1032
+#, c-format
+msgid "read %d bytes from fd #%d from port %d"
msgstr ""
-#: cygnal/libnet/sslclient.cpp:211
+#: cygnal/libnet/network.cpp:1036
#, c-format
-msgid "Can't read CA list from \"%s\"!"
+msgid ""
+"%s: Read packet data from fd #%d (%d bytes): \n"
+"%s"
msgstr ""
-#: cygnal/libnet/sslclient.cpp:216
+#: cygnal/libnet/network.cpp:1171
#, c-format
-msgid "Read CA list from \"%s\""
+msgid "The socket for fd #%d was never available for writing"
msgstr ""
-#: cygnal/libnet/sslclient.cpp:222
+#: cygnal/libnet/network.cpp:1175
#, c-format
-msgid "Can't read certificate file \"%s\"!"
+msgid "The socket for fd #%d timed out waiting to write"
msgstr ""
-#: cygnal/libnet/sslclient.cpp:225
+#: cygnal/libnet/network.cpp:1189
#, c-format
-msgid "Read certificate file \"%s\"."
+msgid "Wrote zero out of %d bytes to fd #%d: %s"
msgstr ""
-#: cygnal/libnet/sslclient.cpp:235
+#: cygnal/libnet/network.cpp:1194
#, c-format
-msgid "Can't read CERT file \"%s\"!"
+msgid "Couldn't write %d bytes to fd #%d: %s"
msgstr ""
-#: cygnal/libnet/sslclient.cpp:240
+#: cygnal/libnet/network.cpp:1202
#, c-format
-msgid "Read key file \"%s\"."
+msgid "wrote %d bytes to fd #%d, expected %d"
msgstr ""
-#: cygnal/libnet/sslclient.cpp:301
+#: cygnal/libnet/network.cpp:1207
#, c-format
-msgid "PORT is: %d"
+msgid "wrote %d bytes to fd #%d for port %d"
msgstr ""
-#: cygnal/libnet/sslclient.cpp:304
+#: cygnal/libnet/network.cpp:1215
#, c-format
-msgid "Error connecting to remote machine: %s"
+msgid ""
+"%s: Wrote packet data to fd #%d: \n"
+"%s"
msgstr ""
-#: cygnal/libnet/sslclient.cpp:313
+#: cygnal/libnet/network.cpp:1229
#, c-format
-msgid "Can't connect to SSL server %s"
+msgid "took %d usec to write (%d bytes)"
msgstr ""
-#: cygnal/libnet/sslclient.cpp:318
+#: cygnal/libnet/network.cpp:1244 cygnal/libnet/network.cpp:1255
#, c-format
-msgid "Connected to SSL server %s"
+msgid "%s: adding fd #%d to pollfds"
msgstr ""
-#: cygnal/libnet/sslclient.cpp:351
-msgid "Certificate doesn't verify"
+#: cygnal/libnet/network.cpp:1281
+#, c-format
+msgid "%s: erasing fd #%d from pollfds"
msgstr ""
-#: cygnal/libnet/sslclient.cpp:354
-msgid "Certificate verified."
+#: cygnal/libnet/network.cpp:1329
+#, c-format
+msgid "%s: waiting for %d fds"
msgstr ""
-#: cygnal/libnet/sslclient.cpp:363
-msgid "Couldn't get Peer certificate!"
+#: cygnal/libnet/network.cpp:1368
+#, c-format
+msgid "Poll returned: %d, timeout is: %d"
msgstr ""
-#: cygnal/libnet/sslclient.cpp:366
-msgid "Got Peer certificate."
+#: cygnal/libnet/network.cpp:1499
+msgid "Waiting for data was interrupted by a system call"
msgstr ""
-#: cygnal/libnet/sslclient.cpp:374
-msgid "Common name doesn't match host name"
+#: cygnal/libnet/network.cpp:1503
+msgid "Waiting for data for fdset, was never available for reading"
msgstr ""
-#: cygnal/libnet/sslclient.cpp:409
+#: cygnal/libnet/network.cpp:1517
#, c-format
-msgid "Callback executed to set the SSL password, size is: %d"
+msgid "select() got an error: %s."
msgstr ""
-#: cygnal/libnet/sslclient.cpp:413
+#: cygnal/libnet/network.cpp:1521
#, c-format
-msgid "The buffer for the password needs to be %d bytes larger"
+msgid "select() saw activity on %d file descriptors."
msgstr ""
-#: cygnal/libnet/sslclient.cpp:439
+#: cygnal/libnet/network.cpp:1597
#, c-format
-msgid "-Error with certificate at depth: %i\n"
+msgid "Can't connect to server %s"
msgstr ""
-#: cygnal/libnet/sslclient.cpp:441
+#: cygnal/libnet/network.cpp:1609
#, c-format
-msgid " issuer = %s\n"
+msgid "Using default hostname: \"%s\""
msgstr ""
-#: cygnal/libnet/sslclient.cpp:443
+#: cygnal/libnet/network.cpp:1614
#, c-format
-msgid " subject = %s\n"
+msgid "Using default keyfile: \"%s\""
msgstr ""
-#: cygnal/libnet/sslclient.cpp:444
+#: cygnal/libnet/network.cpp:1619
#, c-format
-msgid "err %i:%s\n"
+msgid "Using default CA List: \"%s\""
msgstr ""
-#: cygnal/libnet/http.cpp:176
+#: cygnal/libnet/network.cpp:1625
#, c-format
-msgid "Setting Content Length to %d"
+msgid "Using default Password: \"%s\""
msgstr ""
-#: cygnal/libnet/http.cpp:189
+#: cygnal/libnet/network.cpp:1630
#, c-format
-msgid "Setting Content Type to %d"
+msgid "Using default Root Path to PEM files: \"%s\""
msgstr ""
-#: cygnal/libnet/http.cpp:199
-#, c-format
-msgid "Got a request, parsing \"%s\""
+#: cygnal/libnet/network.cpp:1635
+msgid "Connected to SSL server"
msgstr ""
-#: cygnal/libnet/http.cpp:216 cygnal/libnet/http.cpp:1295
-#, c-format
-msgid "Parameters for file: \"%s\""
+#: cygnal/libnet/network.cpp:1637
+msgid "Couldn't connect to SSL server"
msgstr ""
-#: cygnal/libnet/http.cpp:220
+#: cygnal/libnet/network.cpp:1670
#, c-format
-msgid "Requesting file: \"%s\""
+msgid "#%d bytes waiting in kernel network buffer."
msgstr ""
-#: cygnal/libnet/http.cpp:225
-msgid "Enabling Keep Alive by default for HTTP > 1.0"
+#: cygnal/libnet/network.cpp:1692
+msgid "no IP address in addrinfo!"
msgstr ""
-#: cygnal/libnet/http.cpp:422 cygnal/libnet/http.cpp:521
+#: cygnal/libnet/network.cpp:1704
#, c-format
-msgid "Que empty, net connection dropped for fd #%d"
+msgid "Got an %d interrupt while blocked on pselect()"
msgstr ""
-#: cygnal/libnet/http.cpp:433
-msgid "FIXME: found file in cache!"
+#: cygnal/libnet/sslclient.cpp:137 cygnal/libnet/sslclient.cpp:161
+#: cygnal/libnet/sslclient.cpp:212 cygnal/libnet/sslclient.cpp:236
+#: cygnal/libnet/sslclient.cpp:314 cygnal/libnet/sslserver.cpp:169
+#, c-format
+msgid "Error was: \"%s\"!"
msgstr ""
-#: cygnal/libnet/http.cpp:499
+#: cygnal/libnet/sslclient.cpp:211
#, c-format
-msgid "http_handler all done transferring requested file \"%s\"."
+msgid "Can't read CA list from \"%s\"!"
msgstr ""
-#: cygnal/libnet/http.cpp:542
-msgid "Got file data in POST"
+#: cygnal/libnet/sslclient.cpp:216
+#, c-format
+msgid "Read CA list from \"%s\""
msgstr ""
-#: cygnal/libnet/http.cpp:549
-msgid "Got AMF data in POST"
+#: cygnal/libnet/sslclient.cpp:222
+#, c-format
+msgid "Can't read certificate file \"%s\"!"
msgstr ""
-#: cygnal/libnet/http.cpp:564
-msgid "Got CGI echo request in POST"
+#: cygnal/libnet/sslclient.cpp:225
+#, c-format
+msgid "Read certificate file \"%s\"."
msgstr ""
-#: cygnal/libnet/http.cpp:1385
+#: cygnal/libnet/sslclient.cpp:235
#, c-format
-msgid "%s: Total size for first chunk is: %d, data size %d (%d)"
+msgid "Can't read CERT file \"%s\"!"
msgstr ""
-#: cygnal/libnet/http.cpp:1419 cygnal/libnet/http.cpp:1512
+#: cygnal/libnet/sslclient.cpp:240
#, c-format
-msgid "no data yet for fd #%d, continuing..."
+msgid "Read key file \"%s\"."
msgstr ""
-#: cygnal/libnet/http.cpp:1436
+#: cygnal/libnet/sslclient.cpp:301
#, c-format
-msgid "%s: end of chunks!"
+msgid "PORT is: %d"
msgstr ""
-#: cygnal/libnet/http.cpp:1502
+#: cygnal/libnet/sslclient.cpp:304
#, c-format
-msgid "Starting to wait for data in net for fd #%d"
+msgid "Error connecting to remote machine: %s"
msgstr ""
-#: cygnal/libnet/http.cpp:1538
+#: cygnal/libnet/sslclient.cpp:313
#, c-format
-msgid "no more data for fd #%d, exiting..."
+msgid "Can't connect to SSL server %s"
msgstr ""
-#: cygnal/libnet/http.cpp:1542
+#: cygnal/libnet/sslclient.cpp:318
#, c-format
-msgid "Handler done for fd #%d, can't read any data..."
+msgid "Connected to SSL server %s"
+msgstr ""
+
+#: cygnal/libnet/sslclient.cpp:351
+msgid "Certificate doesn't verify"
+msgstr ""
+
+#: cygnal/libnet/sslclient.cpp:354
+msgid "Certificate verified."
+msgstr ""
+
+#: cygnal/libnet/sslclient.cpp:363
+msgid "Couldn't get Peer certificate!"
+msgstr ""
+
+#: cygnal/libnet/sslclient.cpp:366
+msgid "Got Peer certificate."
msgstr ""
-#: cygnal/libnet/http.cpp:1548
-#, c-format
-msgid "Done receiving data for fd #%d..."
+#: cygnal/libnet/sslclient.cpp:374
+msgid "Common name doesn't match host name"
msgstr ""
-#: cygnal/libnet/http.cpp:1560
-msgid "==== The HTTP header breaks down as follows: ===="
+#: cygnal/libnet/sslclient.cpp:386 cygnal/libnet/sslserver.cpp:182
+msgid "==== The SSL header breaks down as follows: ===="
msgstr ""
-#: cygnal/libnet/http.cpp:1561
+#: cygnal/libnet/sslclient.cpp:409
#, c-format
-msgid "Filespec: %s"
+msgid "Callback executed to set the SSL password, size is: %d"
msgstr ""
-#: cygnal/libnet/http.cpp:1562
+#: cygnal/libnet/sslclient.cpp:413
#, c-format
-msgid "Version: %d.%d"
+msgid "The buffer for the password needs to be %d bytes larger"
msgstr ""
-#: cygnal/libnet/http.cpp:1566
+#: cygnal/libnet/sslclient.cpp:439
#, c-format
-msgid "Field: \"%s\" = \"%s\""
+msgid "-Error with certificate at depth: %i\n"
msgstr ""
-#: cygnal/libnet/http.cpp:1570
-msgid "RTMPT optional index is: "
+#: cygnal/libnet/sslclient.cpp:441
+#, c-format
+msgid " issuer = %s\n"
msgstr ""
-#: cygnal/libnet/http.cpp:1571
-msgid "RTMPT optional client ID is: "
+#: cygnal/libnet/sslclient.cpp:443
+#, c-format
+msgid " subject = %s\n"
msgstr ""
-#: cygnal/libnet/http.cpp:1572
-msgid "==== ==== ===="
+#: cygnal/libnet/sslclient.cpp:444
+#, c-format
+msgid "err %i:%s\n"
msgstr ""
#: cygnal/libnet/diskstream.cpp:307
@@ -9555,51 +9586,51 @@ msgstr ""
msgid "Writing data (%d bytes) to disk: \"%s\""
msgstr ""
-#: cygnal/libnet/diskstream.cpp:660
+#: cygnal/libnet/diskstream.cpp:662
#, c-format
msgid "Trying to open %s"
msgstr ""
-#: cygnal/libnet/diskstream.cpp:665
+#: cygnal/libnet/diskstream.cpp:667
#, c-format
msgid "Opening file %s (fd #%d), %lld bytes in size."
msgstr ""
-#: cygnal/libnet/diskstream.cpp:672
+#: cygnal/libnet/diskstream.cpp:674
#, c-format
msgid "File %s doesn't exist"
msgstr ""
-#: cygnal/libnet/diskstream.cpp:727
+#: cygnal/libnet/diskstream.cpp:729
#, c-format
msgid "No Diskstream open %s for net fd #%d"
msgstr ""
-#: cygnal/libnet/diskstream.cpp:733
+#: cygnal/libnet/diskstream.cpp:735
#, c-format
msgid "Diskstream %s is closed on net fd #%d."
msgstr ""
-#: cygnal/libnet/diskstream.cpp:753
+#: cygnal/libnet/diskstream.cpp:755
#, c-format
msgid "In %s(%d): couldn't write %d bytes to net fd #%d! %s"
msgstr ""
-#: cygnal/libnet/diskstream.cpp:758
+#: cygnal/libnet/diskstream.cpp:760
#, c-format
msgid "Done playing file %s, size was: %d"
msgstr ""
-#: cygnal/libnet/diskstream.cpp:771
+#: cygnal/libnet/diskstream.cpp:773
#, c-format
msgid "In %s(%d): couldn't write %d of bytes of data to net fd #%d! Got %d, %s"
msgstr ""
-#: cygnal/libnet/diskstream.cpp:803
+#: cygnal/libnet/diskstream.cpp:805
msgid "Restarting Disk Stream from the beginning"
msgstr ""
-#: cygnal/libnet/diskstream.cpp:956
+#: cygnal/libnet/diskstream.cpp:958
#, c-format
msgid "%s is a directory, appending index.html"
msgstr ""
@@ -9714,485 +9745,403 @@ msgstr ""
msgid "Can't write to a non-existent channel!"
msgstr ""
-#: cygnal/crc.cpp:145
-#, c-format
-msgid "Couldn't open file: %s"
-msgstr ""
-
-#: cygnal/cygnal.cpp:190
-msgid "cygnal -- a streaming media server."
-msgstr ""
-
-#: cygnal/cygnal.cpp:192
-msgid "Usage: cygnal [options...]"
-msgstr ""
-
-#: cygnal/cygnal.cpp:193 cygnal/cgi-bin/echo/echo.cpp:316
-#: cygnal/cgi-bin/echo/gateway.cpp:406
-#: cygnal/cgi-bin/fitcDemo/fitcDemo.cpp:321
-#: cygnal/cgi-bin/oflaDemo/oflaDemo.cpp:596
-#: cygnal/testsuite/libnet.all/test_handler.cpp:281
-#: cygnal/testsuite/libnet.all/generate_amfbins.cpp:300
-#: cygnal/testsuite/libnet.all/test_diskstream.cpp:269
-#: cygnal/testsuite/libnet.all/test_cache.cpp:391
-#: cygnal/testsuite/libamf.all/test_amfmsg.cpp:247
-#: cygnal/testsuite/libamf.all/test_flv.cpp:282
-#: cygnal/testsuite/libamf.all/test_el.cpp:491
-#: cygnal/testsuite/libamf.all/test_buffer.cpp:721
-#: cygnal/testsuite/libamf.all/test_amf.cpp:422
-msgid " -h, --help Print this help and exit"
-msgstr ""
-
-#: cygnal/cygnal.cpp:194
-msgid " -V, --version Print version information and exit"
-msgstr ""
-
-#: cygnal/cygnal.cpp:195 cygnal/cgi-bin/echo/echo.cpp:317
-#: cygnal/cgi-bin/echo/gateway.cpp:407
-#: cygnal/cgi-bin/fitcDemo/fitcDemo.cpp:322
-#: cygnal/cgi-bin/oflaDemo/oflaDemo.cpp:597
-#: cygnal/testsuite/libnet.all/test_handler.cpp:282
-#: cygnal/testsuite/libnet.all/generate_amfbins.cpp:301
-#: cygnal/testsuite/libnet.all/test_diskstream.cpp:270
-#: cygnal/testsuite/libnet.all/test_cache.cpp:392
-#: cygnal/testsuite/libamf.all/test_amfmsg.cpp:248
-#: cygnal/testsuite/libamf.all/test_flv.cpp:283
-#: cygnal/testsuite/libamf.all/test_el.cpp:492
-#: cygnal/testsuite/libamf.all/test_buffer.cpp:722
-#: cygnal/testsuite/libamf.all/test_amf.cpp:423
-msgid " -v, --verbose Output verbose debug info"
-msgstr ""
-
-#: cygnal/cygnal.cpp:196
-msgid " -s, --singlethread Disable Multi Threading"
-msgstr ""
-
-#: cygnal/cygnal.cpp:197 cygnal/cgi-bin/echo/echo.cpp:318
-#: cygnal/cgi-bin/echo/gateway.cpp:408
-#: cygnal/cgi-bin/fitcDemo/fitcDemo.cpp:323
-#: cygnal/cgi-bin/oflaDemo/oflaDemo.cpp:598
-msgid " -n, --netdebug Turn on net debugging messages"
-msgstr ""
-
-#: cygnal/cygnal.cpp:198
-msgid " -o --only-port Only use port for debugging"
-msgstr ""
-
-#: cygnal/cygnal.cpp:199
-msgid " -p --port-offset Port offset for debugging"
-msgstr ""
-
-#: cygnal/cygnal.cpp:200
-msgid " -t, --testing Turn on special Gnash testing support"
-msgstr ""
-
-#: cygnal/cygnal.cpp:201
-msgid " -a, --admin Enable the administration thread"
-msgstr ""
-
-#: cygnal/cygnal.cpp:202
-msgid " -r, --root Document root for all files"
+#: cygnal/libnet/sshclient.cpp:459 cygnal/libnet/sshserver.cpp:200
+msgid "==== The SSH header breaks down as follows: ===="
msgstr ""
-#: cygnal/cygnal.cpp:265
-msgid ": couldn't open file: "
+#: cygnal/libnet/sslserver.cpp:136
+msgid "SSL!!"
msgstr ""
-#: cygnal/cygnal.cpp:342
-#, c-format
-msgid "Couldn't connect to %s"
+#: cygnal/libnet/sslserver.cpp:159
+msgid "Got an incoming SSL connection request"
msgstr ""
-#: cygnal/cygnal.cpp:362
-#, c-format
-msgid "%s is active on fd #%d."
+#: cygnal/libnet/cache.cpp:62
+msgid "using this constructor is only allowed for testing purposes."
msgstr ""
-#: cygnal/cygnal.cpp:500
+#: cygnal/libnet/cache.cpp:105
#, c-format
-msgid "Extraneous argument: %s"
+msgid "Adding file %s to cache."
msgstr ""
-#: cygnal/cygnal.cpp:504 cygnal/cgi-bin/oflaDemo/oflaDemo.cpp:441
+#: cygnal/libnet/cache.cpp:148
#, c-format
-msgid "Document Root for media files is: %s"
-msgstr ""
-
-#: cygnal/cygnal.cpp:586
-msgid "Cygnal done..."
+msgid "Trying to find %s in the cache."
msgstr ""
-#: cygnal/cygnal.cpp:599
+#: cygnal/libnet/sshserver.cpp:145
#, c-format
-msgid "Got a %d interrupt"
+msgid "User %s wants to auth with pass %s\n"
msgstr ""
-#: cygnal/cygnal.cpp:619
-msgid ""
-"Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.\n"
-"Cygnal comes with NO WARRANTY, to the extent permitted by law.\n"
-"You may redistribute copies of Cygnal under the terms of the GNU General\n"
-"Public License V3. For more information, see the file named COPYING.\n"
+#: cygnal/testsuite/libnet.all/test_rtmp.cpp:113
+#: cygnal/testsuite/libnet.all/generate_amfbins.cpp:99
+#: cygnal/testsuite/libamf.all/test_el.cpp:95
+#: cygnal/testsuite/libamf.all/test_buffer.cpp:111
+#: cygnal/testsuite/libamf.all/test_amfmsg.cpp:107
+#: cygnal/testsuite/libamf.all/test_sol.cpp:106
+#: cygnal/testsuite/libamf.all/test_amf.cpp:113
+msgid "Enabling memory statistics"
msgstr ""
-#: cygnal/cygnal.cpp:641
-#, c-format
-msgid "Starting Admin Handler for port %d"
+#: cygnal/testsuite/libnet.all/test_rtmp.cpp:121
+#: cygnal/testsuite/libnet.all/test_diskstream.cpp:101
+#: cygnal/testsuite/libnet.all/test_handler.cpp:113
+#: cygnal/testsuite/libnet.all/generate_amfbins.cpp:112
+#: cygnal/testsuite/libnet.all/test_cache.cpp:104
+#: cygnal/testsuite/libamf.all/test_el.cpp:108
+#: cygnal/testsuite/libamf.all/test_buffer.cpp:124
+#: cygnal/testsuite/libamf.all/test_flv.cpp:104
+#: cygnal/testsuite/libamf.all/test_amfmsg.cpp:120
+#: cygnal/testsuite/libamf.all/test_sol.cpp:114
+#: cygnal/testsuite/libamf.all/test_amf.cpp:126
+msgid "This is a Gnash bug."
msgstr ""
-#: cygnal/cygnal.cpp:643
-msgid "Got an incoming Admin request"
+#: cygnal/testsuite/libnet.all/test_diskstream.cpp:268
+#: cygnal/testsuite/libnet.all/test_handler.cpp:280
+#: cygnal/testsuite/libnet.all/test_cache.cpp:390
+msgid "Usage: test_diskstream [options...]"
msgstr ""
-#: cygnal/cygnal.cpp:651
-msgid "no more admin data, exiting...\n"
+#: cygnal/testsuite/libnet.all/test_diskstream.cpp:271
+#: cygnal/testsuite/libnet.all/test_handler.cpp:283
+#: cygnal/testsuite/libnet.all/test_cache.cpp:393
+msgid " -d, --dump Dump data structures"
msgstr ""
-#: cygnal/cygnal.cpp:736
-msgid "admin_handler: Done...!\n"
+#: cygnal/testsuite/libnet.all/generate_amfbins.cpp:104
+#: cygnal/testsuite/libamf.all/test_el.cpp:100
+#: cygnal/testsuite/libamf.all/test_buffer.cpp:116
+#: cygnal/testsuite/libamf.all/test_flv.cpp:96
+#: cygnal/testsuite/libamf.all/test_amfmsg.cpp:112
+#: cygnal/testsuite/libamf.all/test_amf.cpp:118
+msgid "Logging to disk enabled"
msgstr ""
-#: cygnal/cygnal.cpp:765
-#, c-format
-msgid "Can't start %s Connection Handler for fd #%d, port %hd"
+#: cygnal/testsuite/libnet.all/generate_amfbins.cpp:299
+#: cygnal/testsuite/libamf.all/test_el.cpp:490
+msgid "Usage: test_el [options...]"
msgstr ""
-#: cygnal/cygnal.cpp:769
-#, c-format
-msgid "Starting %s Connection Handler for fd #%d, port %hd"
+#: cygnal/testsuite/libnet.all/generate_amfbins.cpp:302
+#: cygnal/testsuite/libamf.all/test_el.cpp:493
+#: cygnal/testsuite/libamf.all/test_buffer.cpp:723
+#: cygnal/testsuite/libamf.all/test_amfmsg.cpp:249
+#: cygnal/testsuite/libamf.all/test_amf.cpp:424
+msgid " -m, --memdebug Output memory statistics"
msgstr ""
-#: cygnal/cygnal.cpp:780
-#, c-format
-msgid "This system has %d cpus."
+#: cygnal/testsuite/libamf.all/test_buffer.cpp:718
+msgid "test_buffer - test Buffer class"
msgstr ""
-#: cygnal/cygnal.cpp:817
-#, c-format
-msgid "No new %s network connections"
+#: cygnal/testsuite/libamf.all/test_buffer.cpp:720
+msgid "Usage: test_buffer [options...]"
msgstr ""
-#: cygnal/cygnal.cpp:821
-#, c-format
-msgid "*** New %s network connection for thread ID #%d, fd #%d ***"
+#: cygnal/libamf/amf_msg.cpp:178
+msgid "AMF Message 'target' field missing!"
msgstr ""
-#: cygnal/cygnal.cpp:867
-#, c-format
-msgid "Creating new %s Handler for %s using fd #%d"
+#: cygnal/libamf/amf_msg.cpp:181
+msgid "AMF Message 'reply' field missing!"
msgstr ""
-#: cygnal/cygnal.cpp:885
-#, c-format
-msgid "Reusing %s Handler for %s using fd #%d"
+#: cygnal/libamf/amf_msg.cpp:184
+msgid "AMF Message 'size' field missing!"
msgstr ""
-#: cygnal/cygnal.cpp:911
+#: cygnal/libamf/amf_msg.cpp:231
#, c-format
-msgid "Creating new %s Handler for: %s for fd %#d"
+msgid ""
+"Error parsing the AMF packet: \n"
+"\t%s"
msgstr ""
-#: cygnal/cygnal.cpp:935
+#: cygnal/libamf/sol.cpp:212
#, c-format
-msgid "Cygnal Plugin paths are: %s"
+msgid ""
+"%s: SOL file header is: \n"
+"%s"
msgstr ""
-#: cygnal/cygnal.cpp:956
+#: cygnal/libamf/sol.cpp:232
#, c-format
-msgid "Couldn't load plugin for %s"
+msgid "Failed opening file '%s' in binary mode"
msgstr ""
-#: cygnal/cygnal.cpp:967
+#: cygnal/libamf/sol.cpp:319
#, c-format
-msgid "Number of active Threads is %d"
+msgid "Error writing %d bytes of header to output file %s"
msgstr ""
-#: cygnal/cygnal.cpp:970
+#: cygnal/libamf/sol.cpp:326
#, c-format
-msgid "Restarting loop for next connection for port %d..."
+msgid "Error writing %d bytes of body to output file %s"
msgstr ""
-#: cygnal/cygnal.cpp:1028
+#: cygnal/libamf/sol.cpp:386
#, c-format
-msgid "%d active disk streams"
+msgid "%s is an SOL file"
msgstr ""
-#: cygnal/cygnal.cpp:1068
+#: cygnal/libamf/sol.cpp:389
#, c-format
-msgid "Got a hit for fd #%d, protocol %s"
-msgstr ""
-
-#: cygnal/cygnal.cpp:1072
-msgid "No protocol specified!"
+msgid ""
+"%s looks like an SOL file, but the length is wrong. Should be %d, got %d"
msgstr ""
-#: cygnal/cygnal.cpp:1080 cygnal/cygnal.cpp:1105 cygnal/cygnal.cpp:1116
+#: cygnal/libamf/sol.cpp:395
#, c-format
-msgid "Done with HTTP connection for fd #%d, CGI %s"
+msgid "%s isn't an SOL file"
msgstr ""
-#: cygnal/cygnal.cpp:1085
+#: cygnal/libamf/sol.cpp:437
#, c-format
-msgid "Not Done with HTTP connection for fd #%d, it's a persistent connection."
+msgid "Reading SharedObject %s: %s"
msgstr ""
-#: cygnal/cygnal.cpp:1094
-#, c-format
-msgid "Done with RTMP connection for fd #%d, CGI "
+#: cygnal/libamf/flv.cpp:94
+msgid "Bad magic number for FLV file!"
msgstr ""
-#: cygnal/cygnal.cpp:1128
+#: cygnal/libamf/flv.cpp:101
#, c-format
-msgid "Unsupported network protocol for fd #%d, %d"
+msgid "Bad version in FLV header! %d"
msgstr ""
-#: cygnal/cygnal.cpp:1148
+#: cygnal/libamf/flv.cpp:110
#, c-format
-msgid "Got no hits, %d retries"
+msgid "Bad FLV file Type: %d"
msgstr ""
-#: cygnal/cgi-bin/echo/echo.cpp:161 cygnal/cgi-bin/echo/gateway.cpp:139
-#: cygnal/cgi-bin/fitcDemo/fitcDemo.cpp:166
-#: cygnal/cgi-bin/oflaDemo/oflaDemo.cpp:233
+#: cygnal/libamf/flv.cpp:123
#, c-format
-msgid "Error parsing command line options: %s"
+msgid "Bad header size in FLV header! %d"
msgstr ""
-#: cygnal/cgi-bin/echo/echo.cpp:315 cygnal/cgi-bin/echo/gateway.cpp:405
-#: cygnal/cgi-bin/fitcDemo/fitcDemo.cpp:320
-#: cygnal/cgi-bin/oflaDemo/oflaDemo.cpp:595
-#: cygnal/testsuite/libamf.all/test_amfmsg.cpp:246
-#: cygnal/testsuite/libamf.all/test_flv.cpp:281
-#: cygnal/testsuite/libamf.all/test_amf.cpp:421
-msgid "Usage: test_amf [options...]"
+#: cygnal/libamf/flv.cpp:156
+#, c-format
+msgid "%d bytes for a string is over the safe limit of %d"
msgstr ""
-#: cygnal/cgi-bin/echo/echo.cpp:319 cygnal/cgi-bin/fitcDemo/fitcDemo.cpp:324
-#: cygnal/cgi-bin/oflaDemo/oflaDemo.cpp:599
-msgid " -p, --netdebug port for network"
+#: cygnal/libamf/flv.cpp:186
+#, c-format
+msgid "Bad FLV Audio Sound Type: %x"
msgstr ""
-#: cygnal/cgi-bin/oflaDemo/oflaDemo.cpp:309
+#: cygnal/libamf/flv.cpp:195
#, c-format
-msgid "Scanning directory \"%s\" for %s files"
+msgid "Bad FLV Audio Sound size: %d"
msgstr ""
-#: cygnal/cgi-bin/oflaDemo/oflaDemo.cpp:340
+#: cygnal/libamf/flv.cpp:209
#, c-format
-msgid "Gnash media file name: %s"
+msgid "Bad FLV Audio Sound Rate: %d"
msgstr ""
-#: cygnal/rtmp_server.cpp:124
-msgid "Failed to read the handshake from the client."
+#: cygnal/libamf/flv.cpp:226
+#, c-format
+msgid "Bad FLV Audio Sound format: %d"
msgstr ""
-#: cygnal/rtmp_server.cpp:139
-msgid "failed to read the handshake from the client."
+#: cygnal/libamf/flv.cpp:257
+#, c-format
+msgid "Bad FLV Video Codec CodecID: 0x%x"
msgstr ""
-#: cygnal/rtmp_server.cpp:149
-msgid "Didn't receive any data in handshake!"
+#: cygnal/libamf/flv.cpp:267
+#, c-format
+msgid "Bad FLV Video Frame CodecID: 0x%x"
msgstr ""
-#: cygnal/rtmp_server.cpp:160
-msgid "RTMP header had parsing error!"
+#: cygnal/libamf/flv.cpp:340 cygnal/libamf/flv.cpp:342
+#: cygnal/libamf/flv.cpp:344
+#, c-format
+msgid "FLV MetaData: %s: %s"
msgstr ""
-#: cygnal/rtmp_server.cpp:168
-#, c-format
-msgid "NetConnection unusually large! %d"
+#: cygnal/libamf/element.cpp:175
+msgid "Can't create remote function calls yet"
msgstr ""
-#: cygnal/rtmp_server.cpp:202
-msgid "failed to read the body of the handshake data from the client."
+#: cygnal/libamf/element.cpp:479
+#, c-format
+msgid "Size of Element \"%s\" is: %d"
msgstr ""
-#: cygnal/rtmp_server.cpp:210
-msgid "Didn't receive NetConnection object in handshake!"
+#: cygnal/libamf/element.cpp:1534
+msgid "FIXME: got AMF3 data!"
msgstr ""
-#: cygnal/rtmp_server.cpp:234
-msgid "Couldn't send onBWDone to client!"
+#: cygnal/libamf/lcshm.cpp:372
+msgid "No data pointer to parse!"
msgstr ""
-#: cygnal/rtmp_server.cpp:261 cygnal/rtmp_server.cpp:1702
-msgid "Couldn't send Ping to client!"
+#: cygnal/libamf/lcshm.cpp:391
+msgid "Didn't extract an element from the byte stream!"
msgstr ""
-#: cygnal/rtmp_server.cpp:275
-msgid "Couldn't send response to client!"
+#: cygnal/libamf/lcshm.cpp:503
+#, c-format
+msgid " The size of %s is %d "
msgstr ""
-#: cygnal/rtmp_server.cpp:338
+#: cygnal/libamf/lcshm.cpp:520
#, c-format
-msgid "Couldn't sent RTMP Handshake response at %d!"
+msgid "Failed to open shared memory segment: \"%s\""
msgstr ""
-#: cygnal/rtmp_server.cpp:355
-msgid "No data in original handshake buffer."
+#: cygnal/libamf/lcshm.cpp:561
+#, c-format
+msgid "Failed to open shared memory segment: 0x%x"
msgstr ""
-#: cygnal/rtmp_server.cpp:359
-msgid "No data in response handshake buffer."
+#: cygnal/libamf/lcshm.cpp:660
+#, c-format
+msgid " ***** The size of the data is %s *****"
msgstr ""
-#: cygnal/rtmp_server.cpp:387
+#: cygnal/libamf/buffer.cpp:179
#, c-format
-msgid "Handshake Finish Data didn't match by %d bytes"
+msgid "Buffer %x (%d) stayed in queue for %f seconds"
msgstr ""
-#: cygnal/rtmp_server.cpp:555
-msgid "Route"
+#: cygnal/libamf/buffer.cpp:711
+#, c-format
+msgid "cygnal::Buffer::resize(%d): Truncating data (%d bytes) while resizing!"
msgstr ""
-#: cygnal/rtmp_server.cpp:567
-msgid "AMF3 Notify"
+#: cygnal/libamf/buffer.cpp:766
+#, c-format
+msgid "Creating %d errors in the buffer"
msgstr ""
-#: cygnal/rtmp_server.cpp:573
-msgid "AMF3 Invoke"
+#: cygnal/libamf/amf.cpp:180
+#, c-format
+msgid "Encoded data size has %d properties"
msgstr ""
-#: cygnal/rtmp_server.cpp:582
-msgid "FLV Dat"
+#: cygnal/libamf/amf.cpp:300
+msgid "XML AMF objects not supported yet"
msgstr ""
-#: cygnal/rtmp_server.cpp:585
-#, c-format
-msgid "ERROR: Unidentified RTMP message content type 0x%x"
+#: cygnal/libamf/amf.cpp:404
+msgid "Movie Clip AMF objects not supported yet"
msgstr ""
-#: cygnal/rtmp_server.cpp:1105
-msgid "Couldn't reliably extract the echo data!"
+#: cygnal/libamf/amf.cpp:495
+msgid "Long String AMF objects not supported yet"
msgstr ""
-#: cygnal/rtmp_server.cpp:1400
-#, c-format
-msgid "No stream for client %d"
+#: cygnal/libamf/amf.cpp:512
+msgid "Reecord Set AMF objects not supported yet"
msgstr ""
-#: cygnal/rtmp_server.cpp:1442
-msgid "Stream Start"
+#: cygnal/libamf/amf.cpp:561
+msgid "Encoding a strict array as an ecma array"
msgstr ""
-#: cygnal/rtmp_server.cpp:1445
-msgid "Stream EOF"
+#: cygnal/libamf/amf.cpp:784
+msgid "FIXME: got AMF3 data type"
msgstr ""
-#: cygnal/rtmp_server.cpp:1448
-msgid "Stream No Data"
+#: cygnal/libamf/amf.cpp:913
+msgid "AMF body input data is NULL"
msgstr ""
-#: cygnal/rtmp_server.cpp:1451
-#, c-format
-msgid "Stream Set Buffer: %d"
+#: cygnal/libamf/amf.cpp:937
+msgid "AMF data too short to contain type field"
msgstr ""
-#: cygnal/rtmp_server.cpp:1465
-msgid "Stream Pong"
+#: cygnal/libamf/amf.cpp:948
+msgid "Element has no type!"
msgstr ""
-#: cygnal/rtmp_server.cpp:1484
-msgid "Set Chunk Size"
+#: cygnal/libamf/amf.cpp:958
+msgid "AMF data segment too short to containtype NUMBER"
msgstr ""
-#: cygnal/rtmp_server.cpp:1487
-msgid "Bytes Read"
+#: cygnal/libamf/amf.cpp:978
+#, c-format
+msgid "%d bytes for a string is over the safe limit of %d, line %d"
msgstr ""
-#: cygnal/rtmp_server.cpp:1495
-msgid "Set Window Size"
+#: cygnal/libamf/amf.cpp:1021
+msgid "AMF0 MovieClip frame"
msgstr ""
-#: cygnal/rtmp_server.cpp:1498
-msgid "Set Bandwidth"
+#: cygnal/libamf/amf.cpp:1151
+msgid "Found object terminator byte"
msgstr ""
-#: cygnal/rtmp_server.cpp:1509 cygnal/rtmp_server.cpp:1512
-#: cygnal/rtmp_server.cpp:1515 cygnal/rtmp_server.cpp:1518
-#: cygnal/rtmp_server.cpp:1665
+#: cygnal/libamf/amf.cpp:1169
#, c-format
-msgid "RTMP type %d"
+msgid "%s: type %d"
msgstr ""
-#: cygnal/rtmp_server.cpp:1524
+#: cygnal/libamf/amf.cpp:1262
#, c-format
-msgid "Error INVOKING method \"%s\"!"
+msgid "No data associated with Property \"%s\""
msgstr ""
-#: cygnal/rtmp_server.cpp:1648
-msgid "Received an _error message from the client!"
+#: cygnal/http_server.cpp:154 cygnal/http_server.cpp:211
+#, c-format
+msgid "New filestream %s"
msgstr ""
-#: cygnal/rtmp_server.cpp:1668
+#: cygnal/http_server.cpp:213
#, c-format
-msgid "ERROR: Unidentified AMF header data type 0x%x"
+msgid "Reusing filestream %s"
msgstr ""
-#: cygnal/testsuite/libnet.all/test_handler.cpp:113
-#: cygnal/testsuite/libnet.all/generate_amfbins.cpp:112
-#: cygnal/testsuite/libnet.all/test_rtmp.cpp:121
-#: cygnal/testsuite/libnet.all/test_diskstream.cpp:101
-#: cygnal/testsuite/libnet.all/test_cache.cpp:104
-#: cygnal/testsuite/libamf.all/test_amfmsg.cpp:120
-#: cygnal/testsuite/libamf.all/test_sol.cpp:114
-#: cygnal/testsuite/libamf.all/test_flv.cpp:104
-#: cygnal/testsuite/libamf.all/test_el.cpp:108
-#: cygnal/testsuite/libamf.all/test_buffer.cpp:124
-#: cygnal/testsuite/libamf.all/test_amf.cpp:126
-msgid "This is a Gnash bug."
+#: cygnal/http_server.cpp:308
+msgid "couldn't read data!"
msgstr ""
-#: cygnal/testsuite/libnet.all/test_handler.cpp:280
-#: cygnal/testsuite/libnet.all/test_diskstream.cpp:268
-#: cygnal/testsuite/libnet.all/test_cache.cpp:390
-msgid "Usage: test_diskstream [options...]"
+#: cygnal/http_server.cpp:1015
+#, c-format
+msgid "Processing HTTP data for fd #%d"
msgstr ""
-#: cygnal/testsuite/libnet.all/test_handler.cpp:283
-#: cygnal/testsuite/libnet.all/test_diskstream.cpp:271
-#: cygnal/testsuite/libnet.all/test_cache.cpp:393
-msgid " -d, --dump Dump data structures"
+#: cygnal/http_server.cpp:1024
+msgid "FIXME: Existing data in packet!"
msgstr ""
-#: cygnal/testsuite/libnet.all/generate_amfbins.cpp:99
-#: cygnal/testsuite/libnet.all/test_rtmp.cpp:113
-#: cygnal/testsuite/libamf.all/test_amfmsg.cpp:107
-#: cygnal/testsuite/libamf.all/test_sol.cpp:106
-#: cygnal/testsuite/libamf.all/test_el.cpp:95
-#: cygnal/testsuite/libamf.all/test_buffer.cpp:111
-#: cygnal/testsuite/libamf.all/test_amf.cpp:113
-msgid "Enabling memory statistics"
+#: cygnal/http_server.cpp:1026
+msgid "FIXME: No existing data in packet!"
msgstr ""
-#: cygnal/testsuite/libnet.all/generate_amfbins.cpp:104
-#: cygnal/testsuite/libamf.all/test_amfmsg.cpp:112
-#: cygnal/testsuite/libamf.all/test_flv.cpp:96
-#: cygnal/testsuite/libamf.all/test_el.cpp:100
-#: cygnal/testsuite/libamf.all/test_buffer.cpp:116
-#: cygnal/testsuite/libamf.all/test_amf.cpp:118
-msgid "Logging to disk enabled"
+#: cygnal/handler.cpp:128
+#, c-format
+msgid "Protocol %d for Handler::AddClient()"
msgstr ""
-#: cygnal/testsuite/libnet.all/generate_amfbins.cpp:299
-#: cygnal/testsuite/libamf.all/test_el.cpp:490
-msgid "Usage: test_el [options...]"
+#: cygnal/handler.cpp:171 cygnal/handler.cpp:196
+msgid "HTTP key couldn't be read!"
msgstr ""
-#: cygnal/testsuite/libnet.all/generate_amfbins.cpp:302
-#: cygnal/testsuite/libamf.all/test_amfmsg.cpp:249
-#: cygnal/testsuite/libamf.all/test_el.cpp:493
-#: cygnal/testsuite/libamf.all/test_buffer.cpp:723
-#: cygnal/testsuite/libamf.all/test_amf.cpp:424
-msgid " -m, --memdebug Output memory statistics"
+#: cygnal/handler.cpp:214 cygnal/handler.cpp:244
+#, c-format
+msgid "FD #%d has no protocol handler registered"
msgstr ""
-#: cygnal/testsuite/libamf.all/test_buffer.cpp:718
-msgid "test_buffer - test Buffer class"
+#: cygnal/handler.cpp:319
+#, c-format
+msgid "No %s symbol in plugin"
msgstr ""
-#: cygnal/testsuite/libamf.all/test_buffer.cpp:720
-msgid "Usage: test_buffer [options...]"
+#: cygnal/handler.cpp:322
+#, c-format
+msgid "Initialized Plugin: \"%s\": %s"
+msgstr ""
+
+#: cygnal/handler.cpp:335 cygnal/handler.cpp:350
+#, c-format
+msgid "Couldn't get %s symbol"
msgstr ""
#: cygnal/proc.cpp:119
@@ -10200,1246 +10149,1245 @@ msgstr ""
msgid "Invalid filespec for CGI: \"%s\""
msgstr ""
-#: gui/fb/fb.cpp:229
-#, c-format
-msgid "No renderer! %s not supported."
+#: gui/gtk/gtk_glue_agg_vaapi.cpp:163
+msgid "WARNING: failed to create VA-API display."
msgstr ""
-#: gui/fb/fb.cpp:240
-msgid "Found no accessible User mode input event device"
+#: gui/gtk/gtk_glue_agg_vaapi.cpp:204
+#, c-format
+msgid ""
+"GTK-AGG: Unknown RGB format %s reported by VA-API.Please report this to the "
+"gnash-dev mailing list."
msgstr ""
-#: gui/fb/fb.cpp:249
-msgid "Found no accessible input event devices"
+#: gui/gtk/gtk_glue_agg_vaapi.cpp:231 gui/gtk/gtk_glue_agg_vaapi.cpp:289
+msgid "failed to map VA-API image."
msgstr ""
-#: gui/fb/fb.cpp:262
-msgid "WARNING: Mouse support may conflict with the input event support."
+#: gui/gtk/gtk_glue_agg_vaapi.cpp:237
+msgid "failed to associate VA-API subpicture."
msgstr ""
-#: gui/fb/fb.cpp:276
-msgid "Enabling Touchscreen support."
+#: gui/gtk/gtk_glue_agg_vaapi.cpp:371
+#, c-format
+msgid "failed to setup video window for surface 0x%08x."
msgstr ""
-#: gui/fb/fb.cpp:281
-msgid "WARNING: Babbage Tablet support disabled as it conflicts with TSlib"
+#: gui/gtk/gtk_glue_agg_vaapi.cpp:378
+#, c-format
+msgid "failed to associate subpicture to surface 0x%08x."
msgstr ""
-#: gui/fb/fb.cpp:283
-msgid "Enabling Babbage Touchscreen support"
+#: gui/gtk/gtk_glue_gtkglext.cpp:72
+msgid ""
+"Cannot find the double-buffered visual.\n"
+"Trying single-buffered visual."
msgstr ""
-#: gui/fb/fb.cpp:288
-msgid "Enabling Power Button support"
+#: gui/gtk/gtk_glue_gtkglext.cpp:78
+msgid "No appropriate OpenGL-capable visual found."
msgstr ""
-#: gui/fb/fb.cpp:368
+#: gui/gtk/gtk_glue_agg.cpp:96 gui/haiku/haiku_agg_glue.cpp:297
#, c-format
-msgid "Movie Frame Rate is %d, adjusting delay to %dms"
-msgstr ""
-
-#: gui/fb/fb.cpp:462
-msgid "This GUI does not yet support menus"
+msgid "Could not create AGG renderer with pixelformat %s"
msgstr ""
-#: gui/fb/fb.cpp:468
-msgid "This GUI does not yet support a mouse pointer"
+#: gui/gtk/gtk_glue_ovg.cpp:88 gui/fb/fb_glue_ovg.cpp:73
+msgid "Probing found an EGL display device"
msgstr ""
-#: gui/fb/fb.cpp:539
-msgid "Could not detect controlling TTY"
+#: gui/gtk/gtk_glue_ovg.cpp:92 gui/fb/fb_glue_ovg.cpp:77
+msgid "Probing found a raw Framebuffer display device"
msgstr ""
-#: gui/fb/fb.cpp:548 gui/fb/fb.cpp:585 gui/fb/fb.cpp:619 gui/fb/fb.cpp:670
-#, c-format
-msgid "Could not open %s"
+#: gui/gtk/gtk_glue_ovg.cpp:96 gui/fb/fb_glue_ovg.cpp:81
+msgid "Probing found an X11 display device"
msgstr ""
-#: gui/fb/fb.cpp:554
-msgid "Could not get current VT state"
+#: gui/gtk/gtk_glue_ovg.cpp:100 gui/fb/fb_glue_ovg.cpp:85
+msgid "Probing found a DirectFB display device"
msgstr ""
-#: gui/fb/fb.cpp:565
-msgid "Could not request a new VT"
+#: gui/gtk/gtk_glue_ovg.cpp:105 gui/fb/fb_glue_ovg.cpp:90
+msgid "No display devices found by probing!"
msgstr ""
-#: gui/fb/fb.cpp:579 gui/fb/fb.cpp:613 gui/fb/fb.cpp:664
-#, c-format
-msgid "Could not find device for VT number %d"
+#: gui/gtk/gtk_glue_ovg.cpp:182
+msgid "Could not create OPENVG renderer"
msgstr ""
-#: gui/fb/fb.cpp:590 gui/fb/fb.cpp:675
-#, c-format
-msgid "Could not activate VT number %d"
+#: gui/gtk/gtk_glue_ovg.cpp:265 gui/gtk/gtk_glue_ovg.cpp:282
+msgid "No off screen buffer!"
msgstr ""
-#: gui/fb/fb.cpp:596 gui/fb/fb.cpp:681
+#: gui/gtk/gtk_glue_ovg.cpp:400
#, c-format
-msgid "Error waiting for VT %d becoming active"
+msgid "eglGetConfigs() failed to retrive the configs (error %s)"
msgstr ""
-#: gui/fb/fb.cpp:627
-#, c-format
-msgid "Could not attach controlling terminal (%s)"
+#: gui/gtk/gtk_glue_cairo.cpp:223
+msgid "Cairo: failed to create a rendering buffer!"
msgstr ""
-#: gui/fb/fb.cpp:635
-msgid "Could not query current keyboard mode on VT"
+#: gui/gtk/gtk.cpp:155
+msgid "Failed to initialize X threading support\n"
msgstr ""
-#: gui/fb/fb.cpp:639
-msgid "Could not switch to graphics mode on new VT"
+#: gui/gtk/gtk.cpp:198
+msgid "This system lacks a hardware OpenGL driver!"
msgstr ""
-#: gui/fb/fb.cpp:690
-msgid "Could not restore keyboard mode"
+#: gui/gtk/gtk.cpp:210
+msgid "Click to play"
msgstr ""
-#: gui/fb/fb_glue_ovg.cpp:73 gui/gtk/gtk_glue_ovg.cpp:88
-msgid "Probing found an EGL display device"
+#: gui/gtk/gtk.cpp:599
+#, c-format
+msgid "Advance interval timer set to %d ms (~ %d FPS)"
msgstr ""
-#: gui/fb/fb_glue_ovg.cpp:77 gui/gtk/gtk_glue_ovg.cpp:92
-msgid "Probing found a raw Framebuffer display device"
+#: gui/gtk/gtk.cpp:673
+msgid "Sound"
msgstr ""
-#: gui/fb/fb_glue_ovg.cpp:81 gui/gtk/gtk_glue_ovg.cpp:96
-msgid "Probing found an X11 display device"
+#: gui/gtk/gtk.cpp:1226 gui/qt/Qt4Gui.cpp:771
+msgid "Gnash preferences"
msgstr ""
-#: gui/fb/fb_glue_ovg.cpp:85 gui/gtk/gtk_glue_ovg.cpp:100
-msgid "Probing found a DirectFB display device"
+#: gui/gtk/gtk.cpp:1261
+msgid "_Network"
msgstr ""
-#: gui/fb/fb_glue_ovg.cpp:90 gui/gtk/gtk_glue_ovg.cpp:105
-msgid "No display devices found by probing!"
+#: gui/gtk/gtk.cpp:1265 gui/qt/Qt4Gui.cpp:888
+msgid "<b>Network preferences</b>"
msgstr ""
-#: gui/fb/fb_glue_ovg.cpp:156
-msgid "Could not create OpenVG renderer"
+#: gui/gtk/gtk.cpp:1273
+msgid "Network timeout in seconds (0 for no timeout):"
msgstr ""
-#: gui/fb/fb_glue_ovg.cpp:168 gui/fb/fb_glue_agg.cpp:76
-msgid "No renderer set!"
+#: gui/gtk/gtk.cpp:1292
+msgid "_Logging"
msgstr ""
-#: gui/fb/fb_glue_gles1.cpp:98
-msgid "EGL: getDisplay ok"
+#: gui/gtk/gtk.cpp:1297 gui/qt/Qt4Gui.cpp:789
+msgid "<b>Logging options</b>"
msgstr ""
-#: gui/fb/fb_glue_gles1.cpp:104
-msgid "EGL: initialize ok"
+#: gui/gtk/gtk.cpp:1301
+msgid "Verbosity level:"
msgstr ""
-#: gui/fb/fb_glue_gles1.cpp:111
-msgid "EGL: config ok"
+#: gui/gtk/gtk.cpp:1314
+msgid "Log to _file"
msgstr ""
-#: gui/fb/fb_glue_gles1.cpp:118
-msgid "EGL: surface ok"
+#: gui/gtk/gtk.cpp:1320
+msgid "Logfile name:"
msgstr ""
-#: gui/fb/fb_glue_gles1.cpp:124
-msgid "EGL: context ok"
+#: gui/gtk/gtk.cpp:1333
+msgid "Log _parser output"
msgstr ""
-#: gui/fb/fb_glue_gles1.cpp:130
-msgid "EGL: current ok"
+#: gui/gtk/gtk.cpp:1341
+msgid "Log SWF _actions"
msgstr ""
-#: gui/fb/fb_glue_agg.cpp:87
-#, c-format
-msgid "No renderer set in %s!"
+#: gui/gtk/gtk.cpp:1349
+msgid "Log malformed SWF _errors"
msgstr ""
-#: gui/fb/fb_glue_agg.cpp:130
-msgid "failed to create a render handler for AGG!"
+#: gui/gtk/gtk.cpp:1357
+msgid "Log ActionScript _coding errors"
msgstr ""
-#: gui/fb/fb_glue_agg.cpp:151
-msgid "No Device layer initialized yet!"
+#: gui/gtk/gtk.cpp:1373
+msgid "_Security"
msgstr ""
-#: gui/fb/fb_glue_agg.cpp:182
-msgid "The pixel format of your framebuffer could not be detected."
+#: gui/gtk/gtk.cpp:1380 gui/qt/Qt4Gui.cpp:840
+msgid "<b>Network connections</b>"
msgstr ""
-#: gui/fb/fb_glue_agg.cpp:191
-msgid "Double buffering disabled"
+#: gui/gtk/gtk.cpp:1386
+msgid "Connect only to local _host"
msgstr ""
-#: gui/fb/fb_glue_agg.cpp:194
-msgid "Double buffering enabled"
+#: gui/gtk/gtk.cpp:1393
+msgid "Connect only to local _domain"
msgstr ""
-#: gui/fb/fb_glue_agg.cpp:221
-#, c-format
-msgid "No Drawbounds set in %s!"
+#: gui/gtk/gtk.cpp:1400
+msgid "Disable SSL _verification"
msgstr ""
-#: gui/gnash.cpp:125
-#, c-format
-msgid "Error parsing options: %s\n"
+#: gui/gtk/gtk.cpp:1407
+msgid "_Whitelist"
msgstr ""
-#: gui/gnash.cpp:166
-msgid "Error: no input file was specified. Exiting.\n"
+#: gui/gtk/gtk.cpp:1416
+msgid "_Blacklist"
msgstr ""
-#: gui/gnash.cpp:212
-msgid "Invalid host communication filedescriptor %1%\n"
+#: gui/gtk/gtk.cpp:1425 gui/qt/Qt4Gui.cpp:858
+msgid "<b>Privacy</b>"
msgstr ""
-#: gui/gnash.cpp:219
-msgid "Invalid control communication filedescriptor %1%\n"
+#: gui/gtk/gtk.cpp:1429 gui/qt/Qt4Gui.cpp:861
+msgid "Shared objects directory:"
msgstr ""
-#: gui/gnash.cpp:251
-msgid "ERROR: -r must be followed by 0, 1, 2 or 3 "
+#: gui/gtk/gtk.cpp:1441
+msgid "Do _not write Shared Object files"
msgstr ""
-#: gui/gnash.cpp:267
-msgid "Debugging options"
+#: gui/gtk/gtk.cpp:1448
+msgid "Only _access local Shared Object files"
msgstr ""
-#: gui/gnash.cpp:273
-msgid "Produce verbose output"
+#: gui/gtk/gtk.cpp:1455
+msgid "Disable Local _Connection object"
msgstr ""
-#: gui/gnash.cpp:280
-msgid "Produce the disk based debug log"
+#: gui/gtk/gtk.cpp:1469
+msgid "_Media"
msgstr ""
-#: gui/gnash.cpp:285
-msgid "Be (very) verbose about action execution"
+#: gui/gtk/gtk.cpp:1475 gui/qt/Qt4Gui.cpp:906
+msgid "<b>Sound</b>"
msgstr ""
-#: gui/gnash.cpp:291
-msgid "Be (very) verbose about parsing"
+#: gui/gtk/gtk.cpp:1480
+msgid "Use sound _handler"
msgstr ""
-#: gui/gnash.cpp:297
-msgid "Print FPS every num seconds"
+#: gui/gtk/gtk.cpp:1488
+msgid "<b>Media Streams</b>"
msgstr ""
-#: gui/gnash.cpp:320
-msgid "Options"
+#: gui/gtk/gtk.cpp:1494 gui/qt/Qt4Gui.cpp:913
+msgid "Save media streams to disk"
msgstr ""
-#: gui/gnash.cpp:325
-msgid "Print this help and exit"
+#: gui/gtk/gtk.cpp:1503 gui/qt/Qt4Gui.cpp:919
+msgid "Save dynamically loaded media to disk"
msgstr ""
-#: gui/gnash.cpp:328
-msgid "Print version information and exit"
+#: gui/gtk/gtk.cpp:1511 gui/qt/Qt4Gui.cpp:923
+msgid "Saved media directory:"
msgstr ""
-#: gui/gnash.cpp:333
-msgid "Scale the movie by the specified factor"
+#: gui/gtk/gtk.cpp:1531
+msgid "_Player"
msgstr ""
-#: gui/gnash.cpp:337
-msgid "Number of milliseconds to delay in main loop"
+#: gui/gtk/gtk.cpp:1537 gui/qt/Qt4Gui.cpp:935
+msgid "<b>Player description</b>"
msgstr ""
-#: gui/gnash.cpp:341
-msgid "Audio dump file (wave format)"
+#: gui/gtk/gtk.cpp:1545 gui/qt/Qt4Gui.cpp:938
+msgid "Player version:"
msgstr ""
-#: gui/gnash.cpp:346
-msgid "Hardware Video Accelerator to use"
+#: gui/gtk/gtk.cpp:1561 gui/qt/Qt4Gui.cpp:944
+msgid "Operating system:"
msgstr ""
-#: gui/gnash.cpp:351
-msgid "X11 Window ID for display"
+#: gui/gtk/gtk.cpp:1571
+msgid "<i>If blank, Gnash will detect your OS</i>"
msgstr ""
-#: gui/gnash.cpp:355
-msgid "Set window width"
+#: gui/gtk/gtk.cpp:1581 gui/qt/Qt4Gui.cpp:955
+msgid "URL opener:"
msgstr ""
-#: gui/gnash.cpp:359
-msgid "Set window height"
+#: gui/gtk/gtk.cpp:1593 gui/qt/Qt4Gui.cpp:962
+msgid "<b>Performance</b>"
msgstr ""
-#: gui/gnash.cpp:363
-msgid "Set window x position"
+#: gui/gtk/gtk.cpp:1607 gui/qt/Qt4Gui.cpp:965
+msgid "Max size of movie library:"
msgstr ""
-#: gui/gnash.cpp:367
-msgid "Set window y position"
+#: gui/gtk/gtk.cpp:1624
+msgid "Max scripts execution time (in seconds):"
msgstr ""
-#: gui/gnash.cpp:372
-msgid "Exit when/if movie reaches the last frame"
+#: gui/gtk/gtk.cpp:1643
+msgid "Max scripts recursion limit (stack depth):"
msgstr ""
-#: gui/gnash.cpp:378
-msgid "disable rendering and sound"
+#: gui/gtk/gtk.cpp:1659
+msgid "Lock script limits so that SWF tags can't override"
msgstr ""
-#: gui/gnash.cpp:380
-msgid "enable rendering, disable sound"
+#: gui/gtk/gtk.cpp:1671
+msgid "Start _Gnash in pause mode"
msgstr ""
-#: gui/gnash.cpp:382
-msgid "enable sound, disable rendering"
+#: gui/gtk/gtk.cpp:1695 gui/qt/Qt4Gui.cpp:468
+msgid "Movie properties"
msgstr ""
-#: gui/gnash.cpp:384
-msgid "enable rendering and sound"
+#: gui/gtk/gtk.cpp:1765 gui/qt/Qt4Gui.cpp:487
+msgid "Variable"
msgstr ""
-#: gui/gnash.cpp:392
-msgid "The media handler to use"
+#: gui/gtk/gtk.cpp:1777 gui/qt/Qt4Gui.cpp:488
+msgid "Value"
msgstr ""
-#: gui/gnash.cpp:400
-msgid "The renderer to use"
+#: gui/gtk/gtk.cpp:1830
+msgid ""
+"This program is free software; you can redistribute it and/or modify\n"
+"it under the terms of the GNU General Public License as published by\n"
+"the Free Software Foundation; either version 3 of the License, or\n"
+"(at your option) any later version.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+"GNU General Public License for more details.\n"
+"You should have received a copy of the GNU General Public License\n"
+"along with this program; if not, write to the Free Software\n"
+"Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301\n"
+"USA or visit http://www.gnu.org/licenses/."
msgstr ""
-#: gui/gnash.cpp:406
-msgid "Exit after the specified number of seconds"
+#: gui/gtk/gtk.cpp:1846
+msgid "Gnash is the GNU SWF Player based on GameSWF."
msgstr ""
-#: gui/gnash.cpp:409
-msgid "Set \"real\" URL of the movie"
+#: gui/gtk/gtk.cpp:1847
+msgid ""
+"\n"
+"Renderer: "
msgstr ""
-#: gui/gnash.cpp:413
-msgid "Set \"base\" URL for resolving relative URLs"
+#: gui/gtk/gtk.cpp:1849
+msgid ""
+"\n"
+"Hardware Acceleration: "
msgstr ""
-#: gui/gnash.cpp:418
-msgid "Set parameter (e.g. \"FlashVars=A=1&b=2\")"
+#: gui/gtk/gtk.cpp:1851
+msgid ""
+"\n"
+"GUI: "
msgstr ""
-#: gui/gnash.cpp:422
-msgid "Filedescriptor to use for external communications"
+#: gui/gtk/gtk.cpp:1853
+msgid ""
+"\n"
+"Media: "
msgstr ""
-#: gui/gnash.cpp:428
-msgid "Exit after specified number of frame advances"
+#: gui/gtk/gtk.cpp:1883
+msgid "translator-credits"
msgstr ""
-#: gui/gnash.cpp:432
-msgid "Start in fullscreen mode"
+#: gui/gtk/gtk.cpp:1910
+msgid "_File"
msgstr ""
-#: gui/gnash.cpp:437
-msgid "Start without displaying the menu bar"
+#: gui/gtk/gtk.cpp:1963
+msgid "_Edit"
msgstr ""
-#: gui/gnash.cpp:442
-msgid "List of frames to save as screenshots"
+#: gui/gtk/gtk.cpp:1983
+msgid "_Help"
msgstr ""
-#: gui/gnash.cpp:446
-msgid "Filename pattern for screenshot images"
+#: gui/gtk/gtk.cpp:2003
+msgid "_View"
msgstr ""
-#: gui/gnash.cpp:450
-msgid "Quality for screenshot output (not all formats)"
+#: gui/gtk/gtk.cpp:2011
+msgid "Redraw"
msgstr ""
-#: gui/gnash.cpp:453
-msgid "Input files"
+#: gui/gtk/gtk.cpp:2021 gui/gtk/gtk.cpp:2026
+msgid "Toggle fullscreen"
msgstr ""
-#: gui/gnash.cpp:464
-msgid "Dump options"
+#: gui/gtk/gtk.cpp:2035
+msgid "Show updated ranges"
msgstr ""
-#: gui/gnash.cpp:469
-msgid "Video dump file (raw format) and optional video FPS (@<num>)"
+#: gui/gtk/gtk.cpp:2054
+msgid "_Quality"
msgstr ""
-#: gui/gnash.cpp:471
-msgid "Number of milliseconds to sleep between advances"
+#: gui/gtk/gtk.cpp:2064
+msgid "Low"
msgstr ""
-#: gui/gnash.cpp:473
-msgid "Trigger expression to start dumping"
+#: gui/gtk/gtk.cpp:2070
+msgid "Medium"
msgstr ""
-#: gui/gnash.cpp:485
-msgid "Keys:\n"
+#: gui/gtk/gtk.cpp:2076
+msgid "High"
msgstr ""
-#: gui/gnash.cpp:487
-msgid "Quit\n"
+#: gui/gtk/gtk.cpp:2082
+msgid "Best"
msgstr ""
-#: gui/gnash.cpp:489
-msgid "Toggle fullscreen\n"
+#: gui/gtk/gtk.cpp:2095
+msgid "Movie _Control"
msgstr ""
-#: gui/gnash.cpp:491
-msgid "Toggle pause\n"
+#: gui/gtk/gtk.cpp:2106 gui/qt/Qt4Gui.cpp:605
+msgid "Play"
msgstr ""
-#: gui/gnash.cpp:493
-msgid "Restart the movie\n"
+#: gui/gtk/gtk.cpp:2117 gui/qt/Qt4Gui.cpp:609
+msgid "Pause"
msgstr ""
-#: gui/gnash.cpp:495
-msgid "Take a screenshot\n"
+#: gui/gtk/gtk.cpp:2127 gui/qt/Qt4Gui.cpp:613
+msgid "Stop"
msgstr ""
-#: gui/gnash.cpp:497
-msgid "Force immediate redraw\n"
+#: gui/gtk/gtk.cpp:2139 gui/qt/kde.cpp:416
+msgid "Restart Movie"
msgstr ""
-#: gui/gnash.cpp:503
-msgid "Usage: gnash [options] movie_file.swf\n"
+#: gui/gtk/gtk.cpp:2262 gui/gtk/gtk.cpp:2263
+#, c-format
+msgid "Couldn't find pixmap file: %s"
msgstr ""
-#: gui/gnash.cpp:504
-msgid "Plays a SWF (Shockwave Flash) movie\n"
+#: gui/gtk/gtk.cpp:2269
+#, c-format
+msgid "Failed to load pixbuf file: %s: %s"
msgstr ""
-#: gui/gnash.cpp:521
+#: gui/gtk/gtk.cpp:2578 gui/aos4/aos4.cpp:266
+#, c-format
msgid ""
-"Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software "
-"Foundation, Inc.\n"
-"Gnash comes with NO WARRANTY, to the extent permitted by law.\n"
-"You may redistribute copies of Gnash under the terms of the GNU General\n"
-"Public License. For more information, see the file named COPYING.\n"
-"\n"
+"Attempting to open file %s.\n"
+"NOTE: the file open functionality is not yet implemented!"
msgstr ""
-#: gui/gnash.cpp:532
-msgid "Build options "
+#: gui/gtk/gtk.cpp:2595 gui/gtk/gtk.cpp:2608
+msgid "Open file"
msgstr ""
-#: gui/gnash.cpp:533
-msgid " Renderers: "
+#: gui/Player.cpp:132
+msgid "GUI ExternalInterface.Pan event"
msgstr ""
-#: gui/gnash.cpp:534
-msgid " Hardware Acceleration: "
+#: gui/Player.cpp:144
+msgid "GUI ExternalInterface.SetZoomRect event"
msgstr ""
-#: gui/gnash.cpp:535
-msgid " GUI: "
+#: gui/Player.cpp:152
+msgid "GUI ExternalInterface.Zoom event"
msgstr ""
-#: gui/gnash.cpp:536
-msgid " Media handlers: "
+#: gui/Player.cpp:170
+#, c-format
+msgid "Unhandled callback %s with arguments %s"
msgstr ""
-#: gui/gnash.cpp:538
-msgid " Configured with: "
+#: gui/Player.cpp:284 gui/pythonmod/gnash-view.cpp:223
+msgid "Sound requested but no sound support compiled in"
msgstr ""
-#: gui/gnash.cpp:539
-msgid " CXXFLAGS: "
+#: gui/Player.cpp:289 gui/pythonmod/gnash-view.cpp:220
+#, c-format
+msgid "Could not create sound handler: %s. Will continue without sound."
msgstr ""
-#: gui/fltk/fltk_glue_agg.cpp:50
-msgid "Could not create AGG renderer with pixelformat RGB24"
+#: gui/Player.cpp:437
+msgid "Non-existent media handler %1% specified"
msgstr ""
-#: gui/dump/dump.cpp:117
-msgid "Ignoring request to display in X11 window"
+#: gui/Player.cpp:685
+msgid "Got unexpected argument type for message %1%"
msgstr ""
-#: gui/dump/dump.cpp:128 gui/haiku/haiku.cpp:384
-msgid "# FATAL: No filename given with -D argument."
+#: gui/Player.cpp:720
+#, c-format
+msgid ""
+"Could only write %d bytes over %d required to user-provided host requests fd "
+"%d"
msgstr ""
-#: gui/dump/dump.cpp:144
-msgid "# FATAL: No sleep ms value given with -S argument."
+#: gui/Player.cpp:776
+#, c-format
+msgid "FsCommand exec called with argument %s"
msgstr ""
-#: gui/dump/dump.cpp:155
-msgid "# FATAL: No trigger value given with -T argument.\n"
+#: gui/Player.cpp:793
+#, c-format
+msgid "FsCommand trapallkeys called with argument %s"
msgstr ""
-#: gui/dump/dump.cpp:352
+#: gui/Player.cpp:799
#, c-format
-msgid "Unable to write file '%s'."
+msgid "FsCommand '%s(%s)' not handled internally"
msgstr ""
-#: gui/ScreenShotter.cpp:99
+#: gui/aos4/aos4_agg_glue.cpp:116 gui/sdl/sdl_agg_glue.cpp:78
+#: gui/haiku/haiku_agg_glue.cpp:290
#, c-format
-msgid "Failed to open screenshot file \"%s\"!"
+msgid "AGG's bit depth must be 16, 24 or 32 bits, not %d."
msgstr ""
-#: gui/haiku/haiku.cpp:141
-msgid "spawn_thread failed"
+#: gui/aos4/aos4_agg_glue.cpp:216 gui/aos4/aos4_cairo_glue.cpp:212
+msgid "Cannot layout Menu!!\n"
msgstr ""
-#: gui/haiku/haiku.cpp:144
-msgid "resume_thread failed"
+#: gui/aos4/aos4_agg_glue.cpp:220 gui/aos4/aos4_cairo_glue.cpp:216
+msgid "Cannot create Menu!!\n"
msgstr ""
-#: gui/haiku/haiku.cpp:157
-#, c-format
-msgid "pulses thread returned %d"
+#: gui/aos4/aos4_agg_glue.cpp:223 gui/aos4/aos4_cairo_glue.cpp:219
+msgid "Cannot get Visual Info!!\n"
msgstr ""
-#: gui/haiku/haiku.cpp:248
-msgid "send_data failed"
+#: gui/aos4/aos4_agg_glue.cpp:226 gui/aos4/aos4_cairo_glue.cpp:222
+msgid "Cannot get WB Screen pointer!!\n"
msgstr ""
-#: gui/haiku/haiku_agg_glue.cpp:290 gui/aos4/aos4_agg_glue.cpp:116
-#: gui/sdl/sdl_agg_glue.cpp:78
-#, c-format
-msgid "AGG's bit depth must be 16, 24 or 32 bits, not %d."
+#: gui/aos4/aos4_agg_glue.cpp:264 gui/aos4/aos4_cairo_glue.cpp:259
+msgid "prepDrawingArea() failed.\n"
msgstr ""
-#: gui/haiku/haiku_agg_glue.cpp:297 gui/gtk/gtk_glue_agg.cpp:96
+#: gui/aos4/aos4_agg_glue.cpp:277
#, c-format
-msgid "Could not create AGG renderer with pixelformat %s"
+msgid "AOS4-AGG: %i byte offscreen buffer allocated"
msgstr ""
-#: gui/haiku/haiku_agg_glue.cpp:416 gui/sdl/sdl_agg_glue.cpp:132
+#: gui/aos4/aos4.cpp:70
#, c-format
-msgid "SDL-AGG: %i byte offscreen buffer allocated"
+msgid "Exception: %s on file %s line %d"
msgstr ""
-#: gui/qt/Qt4Gui.cpp:120
-msgid "Cairo renderer not supported!"
+#: gui/aos4/aos4.cpp:274
+msgid "Cannot open File Requester!\n"
msgstr ""
-#: gui/qt/Qt4Gui.cpp:128
-msgid "OpenGL renderer not supported!"
+#: gui/aos4/aos4.cpp:609
+msgid "error creating RenderHandler!\n"
msgstr ""
-#: gui/qt/Qt4Gui.cpp:136
-msgid "AGG renderer not supported!"
+#: gui/aos4/aos4_cairo_glue.cpp:124
+#, c-format
+msgid "Cairo's bit depth must be 16, 24 or 32 bits, not %d."
msgstr ""
-#: gui/qt/Qt4Gui.cpp:467 gui/gtk/gtk.cpp:1708
-msgid "Movie properties"
+#: gui/gnash.cpp:127
+#, c-format
+msgid "Error parsing options: %s\n"
msgstr ""
-#: gui/qt/Qt4Gui.cpp:486 gui/gtk/gtk.cpp:1778
-msgid "Variable"
+#: gui/gnash.cpp:168
+msgid "Error: no input file was specified. Exiting.\n"
msgstr ""
-#: gui/qt/Qt4Gui.cpp:487 gui/gtk/gtk.cpp:1790
-msgid "Value"
+#: gui/gnash.cpp:214
+msgid "Invalid host communication filedescriptor %1%\n"
msgstr ""
-#: gui/qt/Qt4Gui.cpp:588
-msgid "Properties"
+#: gui/gnash.cpp:221
+msgid "Invalid control communication filedescriptor %1%\n"
msgstr ""
-#: gui/qt/Qt4Gui.cpp:592 gui/qt/kde.cpp:424
-msgid "Quit Gnash"
+#: gui/gnash.cpp:233
+#, c-format
+msgid "Cookiefile %s does not exist or is not a regular file\n"
msgstr ""
-#: gui/qt/Qt4Gui.cpp:599
-msgid "Preferences"
+#: gui/gnash.cpp:265
+msgid "ERROR: -r must be followed by 0, 1, 2 or 3 "
msgstr ""
-#: gui/qt/Qt4Gui.cpp:604 gui/gtk/gtk.cpp:2119
-msgid "Play"
+#: gui/gnash.cpp:281
+msgid "Debugging options"
msgstr ""
-#: gui/qt/Qt4Gui.cpp:608 gui/gtk/gtk.cpp:2130
-msgid "Pause"
+#: gui/gnash.cpp:287
+msgid "Produce verbose output"
msgstr ""
-#: gui/qt/Qt4Gui.cpp:612 gui/gtk/gtk.cpp:2140
-msgid "Stop"
+#: gui/gnash.cpp:294
+msgid "Produce the disk based debug log"
msgstr ""
-#: gui/qt/Qt4Gui.cpp:616
-msgid "Restart"
+#: gui/gnash.cpp:299
+msgid "Be (very) verbose about action execution"
msgstr ""
-#: gui/qt/Qt4Gui.cpp:621 gui/qt/kde.cpp:423
-msgid "Refresh"
+#: gui/gnash.cpp:305
+msgid "Be (very) verbose about parsing"
msgstr ""
-#: gui/qt/Qt4Gui.cpp:625
-msgid "Fullscreen"
+#: gui/gnash.cpp:311
+msgid "Print FPS every num seconds"
msgstr ""
-#: gui/qt/Qt4Gui.cpp:640
-msgid "File"
+#: gui/gnash.cpp:335
+msgid "Options"
msgstr ""
-#: gui/qt/Qt4Gui.cpp:645
-msgid "Edit"
+#: gui/gnash.cpp:340
+msgid "Print this help and exit"
msgstr ""
-#: gui/qt/Qt4Gui.cpp:649
-msgid "Movie Control"
+#: gui/gnash.cpp:343
+msgid "Print version information and exit"
msgstr ""
-#: gui/qt/Qt4Gui.cpp:656
-msgid "View"
+#: gui/gnash.cpp:348
+msgid "Scale the movie by the specified factor"
msgstr ""
-#: gui/qt/Qt4Gui.cpp:738
-msgid "Click to Play"
+#: gui/gnash.cpp:352
+msgid "Number of milliseconds to delay in main loop"
msgstr ""
-#: gui/qt/Qt4Gui.cpp:770 gui/gtk/gtk.cpp:1239
-msgid "Gnash preferences"
+#: gui/gnash.cpp:356
+msgid "Audio dump file (wave format)"
msgstr ""
-#: gui/qt/Qt4Gui.cpp:785
-msgid "Logging"
+#: gui/gnash.cpp:361
+msgid "Hardware Video Accelerator to use"
msgstr ""
-#: gui/qt/Qt4Gui.cpp:788 gui/gtk/gtk.cpp:1310
-msgid "<b>Logging options</b>"
+#: gui/gnash.cpp:366
+msgid "X11 Window ID for display"
msgstr ""
-#: gui/qt/Qt4Gui.cpp:791
-msgid "Verbosity level"
+#: gui/gnash.cpp:370
+msgid "Set window width"
msgstr ""
-#: gui/qt/Qt4Gui.cpp:809
-msgid "Log to file"
+#: gui/gnash.cpp:374
+msgid "Set window height"
msgstr ""
-#: gui/qt/Qt4Gui.cpp:816
-msgid "Log parser output"
+#: gui/gnash.cpp:378
+msgid "Set window x position"
msgstr ""
-#: gui/qt/Qt4Gui.cpp:820
-msgid "Log SWF actions"
+#: gui/gnash.cpp:382
+msgid "Set window y position"
msgstr ""
-#: gui/qt/Qt4Gui.cpp:824
-msgid "Log malformed SWF errors"
+#: gui/gnash.cpp:387
+msgid "Exit when/if movie reaches the last frame"
msgstr ""
-#: gui/qt/Qt4Gui.cpp:829
-msgid "Log ActionScript coding errors"
+#: gui/gnash.cpp:393
+msgid "disable rendering and sound"
msgstr ""
-#: gui/qt/Qt4Gui.cpp:836
-msgid "Security"
+#: gui/gnash.cpp:395
+msgid "enable rendering, disable sound"
msgstr ""
-#: gui/qt/Qt4Gui.cpp:839 gui/gtk/gtk.cpp:1393
-msgid "<b>Network connections</b>"
+#: gui/gnash.cpp:397
+msgid "enable sound, disable rendering"
msgstr ""
-#: gui/qt/Qt4Gui.cpp:842
-msgid "Connect only to local host"
+#: gui/gnash.cpp:399
+msgid "enable rendering and sound"
msgstr ""
-#: gui/qt/Qt4Gui.cpp:847
-msgid "Connect only to local domain"
+#: gui/gnash.cpp:407
+msgid "The media handler to use"
msgstr ""
-#: gui/qt/Qt4Gui.cpp:852
-msgid "Disable SSL verification"
+#: gui/gnash.cpp:415
+msgid "The renderer to use"
msgstr ""
-#: gui/qt/Qt4Gui.cpp:857 gui/gtk/gtk.cpp:1438
-msgid "<b>Privacy</b>"
+#: gui/gnash.cpp:421
+msgid "Exit after the specified number of seconds"
msgstr ""
-#: gui/qt/Qt4Gui.cpp:860 gui/gtk/gtk.cpp:1442
-msgid "Shared objects directory:"
+#: gui/gnash.cpp:424
+msgid "Set \"real\" URL of the movie"
msgstr ""
-#: gui/qt/Qt4Gui.cpp:866
-msgid "Do not write Shared Object files"
+#: gui/gnash.cpp:428
+msgid "Set \"base\" URL for resolving relative URLs"
msgstr ""
-#: gui/qt/Qt4Gui.cpp:872
-msgid "Only access local Shared Object files"
+#: gui/gnash.cpp:433
+msgid "Set parameter (e.g. \"FlashVars=A=1&b=2\")"
msgstr ""
-#: gui/qt/Qt4Gui.cpp:877
-msgid "Disable Local Connection object"
+#: gui/gnash.cpp:437
+msgid "Filedescriptor to use for external communications"
msgstr ""
-#: gui/qt/Qt4Gui.cpp:884
-msgid "Network"
+#: gui/gnash.cpp:443
+msgid "Cookiefile to use"
msgstr ""
-#: gui/qt/Qt4Gui.cpp:887 gui/gtk/gtk.cpp:1278
-msgid "<b>Network preferences</b>"
+#: gui/gnash.cpp:447
+msgid "Exit after specified number of frame advances"
msgstr ""
-#: gui/qt/Qt4Gui.cpp:890
-msgid "Network timeout in seconds"
+#: gui/gnash.cpp:451
+msgid "Start in fullscreen mode"
msgstr ""
-#: gui/qt/Qt4Gui.cpp:902
-msgid "Media"
+#: gui/gnash.cpp:456
+msgid "Start without displaying the menu bar"
msgstr ""
-#: gui/qt/Qt4Gui.cpp:905 gui/gtk/gtk.cpp:1488
-msgid "<b>Sound</b>"
+#: gui/gnash.cpp:461
+msgid "List of frames to save as screenshots"
msgstr ""
-#: gui/qt/Qt4Gui.cpp:908
-msgid "Use sound handler"
+#: gui/gnash.cpp:465
+msgid "Filename pattern for screenshot images"
msgstr ""
-#: gui/qt/Qt4Gui.cpp:912 gui/gtk/gtk.cpp:1507
-msgid "Save media streams to disk"
+#: gui/gnash.cpp:469
+msgid "Quality for screenshot output (not all formats)"
msgstr ""
-#: gui/qt/Qt4Gui.cpp:918 gui/gtk/gtk.cpp:1516
-msgid "Save dynamically loaded media to disk"
+#: gui/gnash.cpp:472
+msgid "Input files"
msgstr ""
-#: gui/qt/Qt4Gui.cpp:922 gui/gtk/gtk.cpp:1524
-msgid "Saved media directory:"
+#: gui/gnash.cpp:483
+msgid "Dump options"
msgstr ""
-#: gui/qt/Qt4Gui.cpp:931
-msgid "Player"
+#: gui/gnash.cpp:488
+msgid "Video dump file (raw format) and optional video FPS (@<num>)"
msgstr ""
-#: gui/qt/Qt4Gui.cpp:934 gui/gtk/gtk.cpp:1550
-msgid "<b>Player description</b>"
+#: gui/gnash.cpp:490
+msgid "Number of milliseconds to sleep between advances"
msgstr ""
-#: gui/qt/Qt4Gui.cpp:937 gui/gtk/gtk.cpp:1558
-msgid "Player version:"
+#: gui/gnash.cpp:492
+msgid "Trigger expression to start dumping"
msgstr ""
-#: gui/qt/Qt4Gui.cpp:943 gui/gtk/gtk.cpp:1574
-msgid "Operating system:"
+#: gui/gnash.cpp:504
+msgid "Keys:\n"
msgstr ""
-#: gui/qt/Qt4Gui.cpp:948 gui/qt/Qt4Gui.cpp:1021
-msgid "<Autodetect>"
+#: gui/gnash.cpp:506
+msgid "Quit\n"
msgstr ""
-#: gui/qt/Qt4Gui.cpp:954 gui/gtk/gtk.cpp:1594
-msgid "URL opener:"
+#: gui/gnash.cpp:508
+msgid "Toggle fullscreen\n"
msgstr ""
-#: gui/qt/Qt4Gui.cpp:961 gui/gtk/gtk.cpp:1606
-msgid "<b>Performance</b>"
+#: gui/gnash.cpp:510
+msgid "Toggle pause\n"
msgstr ""
-#: gui/qt/Qt4Gui.cpp:964 gui/gtk/gtk.cpp:1620
-msgid "Max size of movie library:"
+#: gui/gnash.cpp:512
+msgid "Restart the movie\n"
msgstr ""
-#: gui/qt/Qt4Gui.cpp:973
-msgid "Start Gnash in pause mode"
+#: gui/gnash.cpp:514
+msgid "Take a screenshot\n"
msgstr ""
-#: gui/qt/Qt4GlueAgg.cpp:115
-msgid "Could not create AGG renderer with pixelformat ABGR32"
+#: gui/gnash.cpp:516
+msgid "Force immediate redraw\n"
msgstr ""
-#: gui/qt/kde_glue_agg.cpp:156
-msgid "Could not create AGG renderer with pixelformat BGRA32"
+#: gui/gnash.cpp:522
+msgid "Usage: gnash [options] movie_file.swf\n"
msgstr ""
-#: gui/qt/kde.cpp:413
-msgid "Play Movie"
+#: gui/gnash.cpp:523
+msgid "Plays a SWF (Shockwave Flash) movie\n"
msgstr ""
-#: gui/qt/kde.cpp:414
-msgid "Pause Movie"
+#: gui/gnash.cpp:540
+msgid ""
+"Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free "
+"Software Foundation, Inc.\n"
+"Gnash comes with NO WARRANTY, to the extent permitted by law.\n"
+"You may redistribute copies of Gnash under the terms of the GNU General\n"
+"Public License. For more information, see the file named COPYING.\n"
+"\n"
msgstr ""
-#: gui/qt/kde.cpp:415
-msgid "Stop Movie"
+#: gui/gnash.cpp:551
+msgid "Build options "
msgstr ""
-#: gui/qt/kde.cpp:416 gui/gtk/gtk.cpp:2152
-msgid "Restart Movie"
+#: gui/gnash.cpp:552
+msgid " Renderers: "
msgstr ""
-#: gui/qt/kde.cpp:418
-msgid "Step Forward"
+#: gui/gnash.cpp:553
+msgid " Hardware Acceleration: "
msgstr ""
-#: gui/qt/kde.cpp:419
-msgid "Step Backward"
+#: gui/gnash.cpp:554
+msgid " GUI: "
msgstr ""
-#: gui/qt/kde.cpp:420
-msgid "Jump Forward"
+#: gui/gnash.cpp:555
+msgid " Media handlers: "
msgstr ""
-#: gui/qt/kde.cpp:421
-msgid "Jump Backward"
+#: gui/gnash.cpp:557
+msgid " Configured with: "
msgstr ""
-#: gui/pythonmod/gnash-view.cpp:220 gui/Player.cpp:288
-#, c-format
-msgid "Could not create sound handler: %s. Will continue without sound."
+#: gui/gnash.cpp:558
+msgid " CXXFLAGS: "
msgstr ""
-#: gui/pythonmod/gnash-view.cpp:223 gui/Player.cpp:283
-msgid "Sound requested but no sound support compiled in"
+#: gui/sdl/sdl_agg_glue.cpp:95
+msgid "SDL_SetVideoMode() failed for SdlAggGlue."
msgstr ""
-#: gui/aos4/aos4.cpp:70
+#: gui/sdl/sdl_agg_glue.cpp:132 gui/haiku/haiku_agg_glue.cpp:416
#, c-format
-msgid "Exception: %s on file %s line %d"
+msgid "SDL-AGG: %i byte offscreen buffer allocated"
msgstr ""
-#: gui/aos4/aos4.cpp:266 gui/gtk/gtk.cpp:2591
-#, c-format
-msgid ""
-"Attempting to open file %s.\n"
-"NOTE: the file open functionality is not yet implemented!"
+#: gui/fltk/fltk_glue_agg.cpp:50
+msgid "Could not create AGG renderer with pixelformat RGB24"
msgstr ""
-#: gui/aos4/aos4.cpp:274
-msgid "Cannot open File Requester!\n"
+#: gui/fb/fb_glue_ovg.cpp:160
+msgid "Could not create OpenVG renderer"
msgstr ""
-#: gui/aos4/aos4.cpp:609
-msgid "error creating RenderHandler!\n"
+#: gui/fb/fb_glue_ovg.cpp:172 gui/fb/fb_glue_agg.cpp:76
+msgid "No renderer set!"
msgstr ""
-#: gui/aos4/aos4_cairo_glue.cpp:124
+#: gui/fb/fb_glue_agg.cpp:87
#, c-format
-msgid "Cairo's bit depth must be 16, 24 or 32 bits, not %d."
+msgid "No renderer set in %s!"
msgstr ""
-#: gui/aos4/aos4_cairo_glue.cpp:212 gui/aos4/aos4_agg_glue.cpp:216
-msgid "Cannot layout Menu!!\n"
+#: gui/fb/fb_glue_agg.cpp:130
+msgid "failed to create a render handler for AGG!"
msgstr ""
-#: gui/aos4/aos4_cairo_glue.cpp:216 gui/aos4/aos4_agg_glue.cpp:220
-msgid "Cannot create Menu!!\n"
+#: gui/fb/fb_glue_agg.cpp:151
+msgid "No Device layer initialized yet!"
msgstr ""
-#: gui/aos4/aos4_cairo_glue.cpp:219 gui/aos4/aos4_agg_glue.cpp:223
-msgid "Cannot get Visual Info!!\n"
+#: gui/fb/fb_glue_agg.cpp:182
+msgid "The pixel format of your framebuffer could not be detected."
msgstr ""
-#: gui/aos4/aos4_cairo_glue.cpp:222 gui/aos4/aos4_agg_glue.cpp:226
-msgid "Cannot get WB Screen pointer!!\n"
+#: gui/fb/fb_glue_agg.cpp:191
+msgid "Double buffering disabled"
msgstr ""
-#: gui/aos4/aos4_cairo_glue.cpp:259 gui/aos4/aos4_agg_glue.cpp:264
-msgid "prepDrawingArea() failed.\n"
+#: gui/fb/fb_glue_agg.cpp:194
+msgid "Double buffering enabled"
msgstr ""
-#: gui/aos4/aos4_agg_glue.cpp:277
+#: gui/fb/fb_glue_agg.cpp:221
#, c-format
-msgid "AOS4-AGG: %i byte offscreen buffer allocated"
-msgstr ""
-
-#: gui/sdl/sdl_agg_glue.cpp:95
-msgid "SDL_SetVideoMode() failed for SdlAggGlue."
+msgid "No Drawbounds set in %s!"
msgstr ""
-#: gui/gui.cpp:193
-msgid "Clipboard not yet supported in this GUI"
+#: gui/fb/fb_glue_gles1.cpp:98
+msgid "EGL: getDisplay ok"
msgstr ""
-#: gui/gui.cpp:199 gui/gui.cpp:211
-msgid "Fullscreen not yet supported in this GUI"
+#: gui/fb/fb_glue_gles1.cpp:104
+msgid "EGL: initialize ok"
msgstr ""
-#: gui/gui.cpp:205
-msgid "Window resize not yet supported in this GUI"
+#: gui/fb/fb_glue_gles1.cpp:112
+msgid "EGL: config ok"
msgstr ""
-#: gui/gui.cpp:229 gui/gui.cpp:242
-msgid "Menu show/hide not yet supported in this GUI"
+#: gui/fb/fb_glue_gles1.cpp:121
+msgid "EGL: surface ok"
msgstr ""
-#: gui/gui.cpp:235
-msgid "Mouse show/hide not yet supported in this GUI"
+#: gui/fb/fb_glue_gles1.cpp:129
+msgid "EGL: context ok"
msgstr ""
-#: gui/gui.cpp:282
-msgid "Can't update stage matrix till VM is initialized"
+#: gui/fb/fb_glue_gles1.cpp:137
+msgid "EGL: current ok"
msgstr ""
-#: gui/gui.cpp:334
+#: gui/fb/fb.cpp:257
#, c-format
-msgid "Invalid scaleMode %d"
+msgid "No renderer! %s not supported."
msgstr ""
-#: gui/gui.cpp:374
-#, c-format
-msgid "Invalid horizontal align %d"
+#: gui/fb/fb.cpp:269
+msgid "Found no accessible User mode input event device"
msgstr ""
-#: gui/gui.cpp:405
-#, c-format
-msgid "Invalid vertical align %d"
+#: gui/fb/fb.cpp:279
+msgid "Found no accessible input event devices"
msgstr ""
-#: gui/gui.cpp:900
-msgid "GUI is in stop mode, won't start application"
+#: gui/fb/fb.cpp:292
+msgid "WARNING: Mouse support may conflict with the input event support."
msgstr ""
-#: gui/gui.cpp:1261
-#, c-format
-msgid "This gui didn't override 'yesno', assuming 'yes' answer to question: %s"
+#: gui/fb/fb.cpp:306
+msgid "Enabling Touchscreen support."
msgstr ""
-#: gui/gui.cpp:1270
-msgid "Gui::setQuality called before a movie_root was available"
+#: gui/fb/fb.cpp:311
+msgid "WARNING: Babbage Tablet support disabled as it conflicts with TSlib"
msgstr ""
-#: gui/gui.cpp:1280
-msgid "Gui::getQuality called before a movie_root was available"
+#: gui/fb/fb.cpp:313
+msgid "Enabling Babbage Touchscreen support"
msgstr ""
-#: gui/Player.cpp:131
-msgid "GUI ExternalInterface.Pan event"
+#: gui/fb/fb.cpp:318
+msgid "Enabling Power Button support"
msgstr ""
-#: gui/Player.cpp:143
-msgid "GUI ExternalInterface.SetZoomRect event"
+#: gui/fb/fb.cpp:492
+msgid "This GUI does not yet support menus"
msgstr ""
-#: gui/Player.cpp:151
-msgid "GUI ExternalInterface.Zoom event"
+#: gui/fb/fb.cpp:498
+msgid "This GUI does not yet support a mouse pointer"
msgstr ""
-#: gui/Player.cpp:169
-#, c-format
-msgid "Unhandled callback %s with arguments %s"
+#: gui/fb/fb.cpp:571
+msgid "Could not detect controlling TTY"
msgstr ""
-#: gui/Player.cpp:434
-msgid "Non-existent media handler %1% specified"
+#: gui/fb/fb.cpp:580 gui/fb/fb.cpp:619 gui/fb/fb.cpp:653 gui/fb/fb.cpp:706
+#, c-format
+msgid "Could not open %s"
msgstr ""
-#: gui/Player.cpp:545
-#, c-format
-msgid "Movie Frame Rate is %d, adjusting delay"
+#: gui/fb/fb.cpp:586
+msgid "Could not get current VT state"
msgstr ""
-#: gui/Player.cpp:682
-msgid "Got unexpected argument type for message %1%"
+#: gui/fb/fb.cpp:599
+msgid "Could not request a new VT"
msgstr ""
-#: gui/Player.cpp:717
+#: gui/fb/fb.cpp:613 gui/fb/fb.cpp:647 gui/fb/fb.cpp:700
#, c-format
-msgid ""
-"Could only write %d bytes over %d required to user-provided host requests fd "
-"%d"
+msgid "Could not find device for VT number %d"
msgstr ""
-#: gui/Player.cpp:773
+#: gui/fb/fb.cpp:624 gui/fb/fb.cpp:711
#, c-format
-msgid "FsCommand exec called with argument %s"
+msgid "Could not activate VT number %d"
msgstr ""
-#: gui/Player.cpp:790
+#: gui/fb/fb.cpp:630 gui/fb/fb.cpp:719
#, c-format
-msgid "FsCommand trapallkeys called with argument %s"
+msgid "Error waiting for VT %d becoming active"
msgstr ""
-#: gui/Player.cpp:796
+#: gui/fb/fb.cpp:661
#, c-format
-msgid "FsCommand '%s(%s)' not handled internally"
+msgid "Could not attach controlling terminal (%s)"
msgstr ""
-#: gui/gtk/gtk_glue_cairo.cpp:223
-msgid "Cairo: failed to create a rendering buffer!"
+#: gui/fb/fb.cpp:669
+msgid "Could not query current keyboard mode on VT"
msgstr ""
-#: gui/gtk/gtk_glue_ovg.cpp:182
-msgid "Could not create OPENVG renderer"
+#: gui/fb/fb.cpp:673
+msgid "Could not switch to graphics mode on new VT"
msgstr ""
-#: gui/gtk/gtk_glue_ovg.cpp:265 gui/gtk/gtk_glue_ovg.cpp:282
-msgid "No off screen buffer!"
+#: gui/fb/fb.cpp:728
+msgid "Could not restore keyboard mode"
msgstr ""
-#: gui/gtk/gtk_glue_ovg.cpp:400
-#, c-format
-msgid "eglGetConfigs() failed to retrive the configs (error %s)"
+#: gui/dump/dump.cpp:118
+msgid "Ignoring request to display in X11 window"
msgstr ""
-#: gui/gtk/gtk_glue_agg_vaapi.cpp:163
-msgid "WARNING: failed to create VA-API display."
+#: gui/dump/dump.cpp:129 gui/haiku/haiku.cpp:384
+msgid "# FATAL: No filename given with -D argument."
msgstr ""
-#: gui/gtk/gtk_glue_agg_vaapi.cpp:204
-#, c-format
-msgid ""
-"GTK-AGG: Unknown RGB format %s reported by VA-API.Please report this to the "
-"gnash-dev mailing list."
+#: gui/dump/dump.cpp:145
+msgid "# FATAL: No sleep ms value given with -S argument."
msgstr ""
-#: gui/gtk/gtk_glue_agg_vaapi.cpp:231 gui/gtk/gtk_glue_agg_vaapi.cpp:289
-msgid "failed to map VA-API image."
+#: gui/dump/dump.cpp:156
+msgid "# FATAL: No trigger value given with -T argument.\n"
msgstr ""
-#: gui/gtk/gtk_glue_agg_vaapi.cpp:237
-msgid "failed to associate VA-API subpicture."
+#: gui/dump/dump.cpp:353
+#, c-format
+msgid "Unable to write file '%s'."
msgstr ""
-#: gui/gtk/gtk_glue_agg_vaapi.cpp:371
+#: gui/ScreenShotter.cpp:99
#, c-format
-msgid "failed to setup video window for surface 0x%08x."
+msgid "Failed to open screenshot file \"%s\"!"
msgstr ""
-#: gui/gtk/gtk_glue_agg_vaapi.cpp:378
-#, c-format
-msgid "failed to associate subpicture to surface 0x%08x."
+#: gui/qt/Qt4GlueAgg.cpp:115
+msgid "Could not create AGG renderer with pixelformat ABGR32"
msgstr ""
-#: gui/gtk/gtk.cpp:159
-msgid "Failed to initialize X threading support\n"
+#: gui/qt/kde.cpp:413
+msgid "Play Movie"
msgstr ""
-#: gui/gtk/gtk.cpp:202
-msgid "This system lacks a hardware OpenGL driver!"
+#: gui/qt/kde.cpp:414
+msgid "Pause Movie"
msgstr ""
-#: gui/gtk/gtk.cpp:223
-msgid "Click to play"
+#: gui/qt/kde.cpp:415
+msgid "Stop Movie"
msgstr ""
-#: gui/gtk/gtk.cpp:612
-#, c-format
-msgid "Advance interval timer set to %d ms (~ %d FPS)"
+#: gui/qt/kde.cpp:418
+msgid "Step Forward"
msgstr ""
-#: gui/gtk/gtk.cpp:686
-msgid "Sound"
+#: gui/qt/kde.cpp:419
+msgid "Step Backward"
msgstr ""
-#: gui/gtk/gtk.cpp:1274
-msgid "_Network"
+#: gui/qt/kde.cpp:420
+msgid "Jump Forward"
msgstr ""
-#: gui/gtk/gtk.cpp:1286
-msgid "Network timeout in seconds (0 for no timeout):"
+#: gui/qt/kde.cpp:421
+msgid "Jump Backward"
msgstr ""
-#: gui/gtk/gtk.cpp:1305
-msgid "_Logging"
+#: gui/qt/kde.cpp:423 gui/qt/Qt4Gui.cpp:622
+msgid "Refresh"
msgstr ""
-#: gui/gtk/gtk.cpp:1314
-msgid "Verbosity level:"
+#: gui/qt/kde.cpp:424 gui/qt/Qt4Gui.cpp:593
+msgid "Quit Gnash"
msgstr ""
-#: gui/gtk/gtk.cpp:1327
-msgid "Log to _file"
+#: gui/qt/kde_glue_agg.cpp:156
+msgid "Could not create AGG renderer with pixelformat BGRA32"
msgstr ""
-#: gui/gtk/gtk.cpp:1333
-msgid "Logfile name:"
+#: gui/qt/Qt4Gui.cpp:121
+msgid "Cairo renderer not supported!"
msgstr ""
-#: gui/gtk/gtk.cpp:1346
-msgid "Log _parser output"
+#: gui/qt/Qt4Gui.cpp:129
+msgid "OpenGL renderer not supported!"
msgstr ""
-#: gui/gtk/gtk.cpp:1354
-msgid "Log SWF _actions"
+#: gui/qt/Qt4Gui.cpp:137
+msgid "AGG renderer not supported!"
msgstr ""
-#: gui/gtk/gtk.cpp:1362
-msgid "Log malformed SWF _errors"
+#: gui/qt/Qt4Gui.cpp:589
+msgid "Properties"
msgstr ""
-#: gui/gtk/gtk.cpp:1370
-msgid "Log ActionScript _coding errors"
+#: gui/qt/Qt4Gui.cpp:600
+msgid "Preferences"
msgstr ""
-#: gui/gtk/gtk.cpp:1386
-msgid "_Security"
+#: gui/qt/Qt4Gui.cpp:617
+msgid "Restart"
msgstr ""
-#: gui/gtk/gtk.cpp:1399
-msgid "Connect only to local _host"
+#: gui/qt/Qt4Gui.cpp:626
+msgid "Fullscreen"
msgstr ""
-#: gui/gtk/gtk.cpp:1406
-msgid "Connect only to local _domain"
+#: gui/qt/Qt4Gui.cpp:641
+msgid "File"
msgstr ""
-#: gui/gtk/gtk.cpp:1413
-msgid "Disable SSL _verification"
+#: gui/qt/Qt4Gui.cpp:646
+msgid "Edit"
msgstr ""
-#: gui/gtk/gtk.cpp:1420
-msgid "_Whitelist"
+#: gui/qt/Qt4Gui.cpp:650
+msgid "Movie Control"
msgstr ""
-#: gui/gtk/gtk.cpp:1429
-msgid "_Blacklist"
+#: gui/qt/Qt4Gui.cpp:657
+msgid "View"
msgstr ""
-#: gui/gtk/gtk.cpp:1454
-msgid "Do _not write Shared Object files"
+#: gui/qt/Qt4Gui.cpp:739
+msgid "Click to Play"
msgstr ""
-#: gui/gtk/gtk.cpp:1461
-msgid "Only _access local Shared Object files"
+#: gui/qt/Qt4Gui.cpp:786
+msgid "Logging"
msgstr ""
-#: gui/gtk/gtk.cpp:1468
-msgid "Disable Local _Connection object"
+#: gui/qt/Qt4Gui.cpp:792
+msgid "Verbosity level"
msgstr ""
-#: gui/gtk/gtk.cpp:1482
-msgid "_Media"
+#: gui/qt/Qt4Gui.cpp:810
+msgid "Log to file"
msgstr ""
-#: gui/gtk/gtk.cpp:1493
-msgid "Use sound _handler"
+#: gui/qt/Qt4Gui.cpp:817
+msgid "Log parser output"
msgstr ""
-#: gui/gtk/gtk.cpp:1501
-msgid "<b>Media Streams</b>"
+#: gui/qt/Qt4Gui.cpp:821
+msgid "Log SWF actions"
msgstr ""
-#: gui/gtk/gtk.cpp:1544
-msgid "_Player"
+#: gui/qt/Qt4Gui.cpp:825
+msgid "Log malformed SWF errors"
msgstr ""
-#: gui/gtk/gtk.cpp:1584
-msgid "<i>If blank, Gnash will detect your OS</i>"
+#: gui/qt/Qt4Gui.cpp:830
+msgid "Log ActionScript coding errors"
msgstr ""
-#: gui/gtk/gtk.cpp:1637
-msgid "Max scripts execution time (in seconds):"
+#: gui/qt/Qt4Gui.cpp:837
+msgid "Security"
msgstr ""
-#: gui/gtk/gtk.cpp:1656
-msgid "Max scripts recursion limit (stack depth):"
+#: gui/qt/Qt4Gui.cpp:843
+msgid "Connect only to local host"
msgstr ""
-#: gui/gtk/gtk.cpp:1672
-msgid "Lock script limits so that SWF tags can't override"
+#: gui/qt/Qt4Gui.cpp:848
+msgid "Connect only to local domain"
msgstr ""
-#: gui/gtk/gtk.cpp:1684
-msgid "Start _Gnash in pause mode"
+#: gui/qt/Qt4Gui.cpp:853
+msgid "Disable SSL verification"
msgstr ""
-#: gui/gtk/gtk.cpp:1843
-msgid ""
-"This program is free software; you can redistribute it and/or modify\n"
-"it under the terms of the GNU General Public License as published by\n"
-"the Free Software Foundation; either version 3 of the License, or\n"
-"(at your option) any later version.\n"
-"\n"
-"This program is distributed in the hope that it will be useful,\n"
-"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
-"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
-"GNU General Public License for more details.\n"
-"You should have received a copy of the GNU General Public License\n"
-"along with this program; if not, write to the Free Software\n"
-"Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301\n"
-"USA or visit http://www.gnu.org/licenses/."
+#: gui/qt/Qt4Gui.cpp:867
+msgid "Do not write Shared Object files"
msgstr ""
-#: gui/gtk/gtk.cpp:1859
-msgid "Gnash is the GNU SWF Player based on GameSWF."
+#: gui/qt/Qt4Gui.cpp:873
+msgid "Only access local Shared Object files"
msgstr ""
-#: gui/gtk/gtk.cpp:1860
-msgid ""
-"\n"
-"Renderer: "
+#: gui/qt/Qt4Gui.cpp:878
+msgid "Disable Local Connection object"
msgstr ""
-#: gui/gtk/gtk.cpp:1862
-msgid ""
-"\n"
-"Hardware Acceleration: "
+#: gui/qt/Qt4Gui.cpp:885
+msgid "Network"
msgstr ""
-#: gui/gtk/gtk.cpp:1864
-msgid ""
-"\n"
-"GUI: "
+#: gui/qt/Qt4Gui.cpp:891
+msgid "Network timeout in seconds"
msgstr ""
-#: gui/gtk/gtk.cpp:1866
-msgid ""
-"\n"
-"Media: "
+#: gui/qt/Qt4Gui.cpp:903
+msgid "Media"
msgstr ""
-#: gui/gtk/gtk.cpp:1896
-msgid "translator-credits"
+#: gui/qt/Qt4Gui.cpp:909
+msgid "Use sound handler"
msgstr ""
-#: gui/gtk/gtk.cpp:1923
-msgid "_File"
+#: gui/qt/Qt4Gui.cpp:932
+msgid "Player"
msgstr ""
-#: gui/gtk/gtk.cpp:1976
-msgid "_Edit"
+#: gui/qt/Qt4Gui.cpp:949 gui/qt/Qt4Gui.cpp:1022
+msgid "<Autodetect>"
msgstr ""
-#: gui/gtk/gtk.cpp:1996
-msgid "_Help"
+#: gui/qt/Qt4Gui.cpp:974
+msgid "Start Gnash in pause mode"
msgstr ""
-#: gui/gtk/gtk.cpp:2016
-msgid "_View"
+#: gui/gui.cpp:194
+msgid "Clipboard not yet supported in this GUI"
msgstr ""
-#: gui/gtk/gtk.cpp:2024
-msgid "Redraw"
+#: gui/gui.cpp:200 gui/gui.cpp:212
+msgid "Fullscreen not yet supported in this GUI"
msgstr ""
-#: gui/gtk/gtk.cpp:2034 gui/gtk/gtk.cpp:2039
-msgid "Toggle fullscreen"
+#: gui/gui.cpp:206
+msgid "Window resize not yet supported in this GUI"
msgstr ""
-#: gui/gtk/gtk.cpp:2048
-msgid "Show updated ranges"
+#: gui/gui.cpp:230 gui/gui.cpp:243
+msgid "Menu show/hide not yet supported in this GUI"
msgstr ""
-#: gui/gtk/gtk.cpp:2067
-msgid "_Quality"
+#: gui/gui.cpp:236
+msgid "Mouse show/hide not yet supported in this GUI"
msgstr ""
-#: gui/gtk/gtk.cpp:2077
-msgid "Low"
+#: gui/gui.cpp:283
+msgid "Can't update stage matrix till VM is initialized"
msgstr ""
-#: gui/gtk/gtk.cpp:2083
-msgid "Medium"
+#: gui/gui.cpp:335
+#, c-format
+msgid "Invalid scaleMode %d"
msgstr ""
-#: gui/gtk/gtk.cpp:2089
-msgid "High"
+#: gui/gui.cpp:375
+#, c-format
+msgid "Invalid horizontal align %d"
msgstr ""
-#: gui/gtk/gtk.cpp:2095
-msgid "Best"
+#: gui/gui.cpp:406
+#, c-format
+msgid "Invalid vertical align %d"
msgstr ""
-#: gui/gtk/gtk.cpp:2108
-msgid "Movie _Control"
+#: gui/gui.cpp:903
+msgid "GUI is in stop mode, won't start application"
msgstr ""
-#: gui/gtk/gtk.cpp:2275 gui/gtk/gtk.cpp:2276
+#: gui/gui.cpp:1266
#, c-format
-msgid "Couldn't find pixmap file: %s"
+msgid "This GUI didn't override 'yesno', assuming 'yes' answer to question: %s"
msgstr ""
-#: gui/gtk/gtk.cpp:2282
-#, c-format
-msgid "Failed to load pixbuf file: %s: %s"
+#: gui/gui.cpp:1275
+msgid "Gui::setQuality called before a movie_root was available"
msgstr ""
-#: gui/gtk/gtk.cpp:2608 gui/gtk/gtk.cpp:2621
-msgid "Open file"
+#: gui/gui.cpp:1285
+msgid "Gui::getQuality called before a movie_root was available"
msgstr ""
-#: gui/gtk/gtk_glue_gtkglext.cpp:72
-msgid ""
-"Cannot find the double-buffered visual.\n"
-"Trying single-buffered visual."
+#: gui/haiku/haiku.cpp:141
+msgid "spawn_thread failed"
msgstr ""
-#: gui/gtk/gtk_glue_gtkglext.cpp:78
-msgid "No appropriate OpenGL-capable visual found."
+#: gui/haiku/haiku.cpp:144
+msgid "resume_thread failed"
+msgstr ""
+
+#: gui/haiku/haiku.cpp:157
+#, c-format
+msgid "pulses thread returned %d"
+msgstr ""
+
+#: gui/haiku/haiku.cpp:248
+msgid "send_data failed"
msgstr ""
#: extensions/mysql/mysql_db.cpp:186
diff --git a/po/nb.po b/po/nb.po
new file mode 100644
index 0000000..920a6f1
--- /dev/null
+++ b/po/nb.po
@@ -0,0 +1,1292 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR Free Software Foundation, Inc.
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2012-01-01 09:28-0700\n"
+"PO-Revision-Date: 2014-04-20 15:41+0200\n"
+"Last-Translator: Petter <pere at hungry.com>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"Language: nb\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Pootle 2.0.5\n"
+
+#: libcore/movie_root.cpp:1676 gui/Player.cpp:713
+#, c-format
+msgid "Could not write to user-provided host requests fd %d: %s"
+msgstr ""
+
+#: libdevice/egl/eglDevice.cpp:209 libdevice/egl/eglDevice.cpp:544
+#: gui/gtk/gtk_glue_ovg.cpp:383
+#, c-format
+msgid "eglGetConfigs() failed to retrieve the number of configs (error %s)"
+msgstr ""
+
+#: libdevice/egl/eglDevice.cpp:214 libdevice/egl/eglDevice.cpp:549
+#: gui/gtk/gtk_glue_ovg.cpp:388
+msgid "No EGLconfigs found\n"
+msgstr "Fant ikke EGLconfigs\n"
+
+#: libdevice/egl/eglDevice.cpp:556 gui/gtk/gtk_glue_ovg.cpp:395
+msgid "Out of memory\n"
+msgstr "Fritt for minne\n"
+
+#: libdevice/egl/eglDevice.cpp:561 gui/gtk/gtk_glue_ovg.cpp:400
+#, c-format
+msgid "eglGetConfigs() failed to retrive the configs (error %s)"
+msgstr ""
+
+#: utilities/processor.cpp:456 utilities/processor.cpp:459
+#: gui/pythonmod/gnash-view.cpp:438 gui/pythonmod/gnash-view.cpp:441
+#, c-format
+msgid "%s appended to local sandboxes"
+msgstr "$s lagt til lokale sandkasser"
+
+#: gui/fb/fb.cpp:229
+#, c-format
+msgid "No renderer! %s not supported."
+msgstr ""
+
+#: gui/fb/fb.cpp:240
+msgid "Found no accessible User mode input event device"
+msgstr ""
+
+#: gui/fb/fb.cpp:249
+msgid "Found no accessible input event devices"
+msgstr ""
+
+#: gui/fb/fb.cpp:262
+msgid "WARNING: Mouse support may conflict with the input event support."
+msgstr ""
+
+#: gui/fb/fb.cpp:276
+msgid "Enabling Touchscreen support."
+msgstr ""
+
+#: gui/fb/fb.cpp:281
+msgid "WARNING: Babbage Tablet support disabled as it conflicts with TSlib"
+msgstr ""
+
+#: gui/fb/fb.cpp:283
+msgid "Enabling Babbage Touchscreen support"
+msgstr ""
+
+#: gui/fb/fb.cpp:288
+msgid "Enabling Power Button support"
+msgstr ""
+
+#: gui/fb/fb.cpp:368
+#, c-format
+msgid "Movie Frame Rate is %d, adjusting delay to %dms"
+msgstr ""
+
+#: gui/fb/fb.cpp:462
+msgid "This GUI does not yet support menus"
+msgstr ""
+
+#: gui/fb/fb.cpp:468
+msgid "This GUI does not yet support a mouse pointer"
+msgstr "Dette grafiske grensesnittet støtter ennå ikke en muspeker"
+
+#: gui/fb/fb.cpp:539
+msgid "Could not detect controlling TTY"
+msgstr "Klarte ikke oppdage kontrollerende TTY"
+
+#: gui/fb/fb.cpp:548 gui/fb/fb.cpp:585 gui/fb/fb.cpp:619 gui/fb/fb.cpp:670
+#, c-format
+msgid "Could not open %s"
+msgstr "Kunne ikke åpne %s"
+
+#: gui/fb/fb.cpp:554
+msgid "Could not get current VT state"
+msgstr ""
+
+#: gui/fb/fb.cpp:565
+msgid "Could not request a new VT"
+msgstr ""
+
+#: gui/fb/fb.cpp:579 gui/fb/fb.cpp:613 gui/fb/fb.cpp:664
+#, c-format
+msgid "Could not find device for VT number %d"
+msgstr ""
+
+#: gui/fb/fb.cpp:590 gui/fb/fb.cpp:675
+#, c-format
+msgid "Could not activate VT number %d"
+msgstr ""
+
+#: gui/fb/fb.cpp:596 gui/fb/fb.cpp:681
+#, c-format
+msgid "Error waiting for VT %d becoming active"
+msgstr ""
+
+#: gui/fb/fb.cpp:627
+#, c-format
+msgid "Could not attach controlling terminal (%s)"
+msgstr ""
+
+#: gui/fb/fb.cpp:635
+msgid "Could not query current keyboard mode on VT"
+msgstr ""
+
+#: gui/fb/fb.cpp:639
+msgid "Could not switch to graphics mode on new VT"
+msgstr ""
+
+#: gui/fb/fb.cpp:690
+msgid "Could not restore keyboard mode"
+msgstr ""
+
+#: gui/fb/fb_glue_ovg.cpp:73 gui/gtk/gtk_glue_ovg.cpp:88
+msgid "Probing found an EGL display device"
+msgstr ""
+
+#: gui/fb/fb_glue_ovg.cpp:77 gui/gtk/gtk_glue_ovg.cpp:92
+msgid "Probing found a raw Framebuffer display device"
+msgstr ""
+
+#: gui/fb/fb_glue_ovg.cpp:81 gui/gtk/gtk_glue_ovg.cpp:96
+msgid "Probing found an X11 display device"
+msgstr ""
+
+#: gui/fb/fb_glue_ovg.cpp:85 gui/gtk/gtk_glue_ovg.cpp:100
+msgid "Probing found a DirectFB display device"
+msgstr ""
+
+#: gui/fb/fb_glue_ovg.cpp:90 gui/gtk/gtk_glue_ovg.cpp:105
+msgid "No display devices found by probing!"
+msgstr ""
+
+#: gui/fb/fb_glue_ovg.cpp:156
+msgid "Could not create OpenVG renderer"
+msgstr ""
+
+#: gui/fb/fb_glue_ovg.cpp:168 gui/fb/fb_glue_agg.cpp:76
+msgid "No renderer set!"
+msgstr ""
+
+#: gui/fb/fb_glue_gles1.cpp:98
+msgid "EGL: getDisplay ok"
+msgstr ""
+
+#: gui/fb/fb_glue_gles1.cpp:104
+msgid "EGL: initialize ok"
+msgstr ""
+
+#: gui/fb/fb_glue_gles1.cpp:111
+msgid "EGL: config ok"
+msgstr ""
+
+#: gui/fb/fb_glue_gles1.cpp:118
+msgid "EGL: surface ok"
+msgstr ""
+
+#: gui/fb/fb_glue_gles1.cpp:124
+msgid "EGL: context ok"
+msgstr ""
+
+#: gui/fb/fb_glue_gles1.cpp:130
+msgid "EGL: current ok"
+msgstr ""
+
+#: gui/fb/fb_glue_agg.cpp:87
+#, c-format
+msgid "No renderer set in %s!"
+msgstr ""
+
+#: gui/fb/fb_glue_agg.cpp:130
+msgid "failed to create a render handler for AGG!"
+msgstr ""
+
+#: gui/fb/fb_glue_agg.cpp:151
+msgid "No Device layer initialized yet!"
+msgstr ""
+
+#: gui/fb/fb_glue_agg.cpp:182
+msgid "The pixel format of your framebuffer could not be detected."
+msgstr ""
+
+#: gui/fb/fb_glue_agg.cpp:191
+msgid "Double buffering disabled"
+msgstr ""
+
+#: gui/fb/fb_glue_agg.cpp:194
+msgid "Double buffering enabled"
+msgstr ""
+
+#: gui/fb/fb_glue_agg.cpp:221
+#, c-format
+msgid "No Drawbounds set in %s!"
+msgstr ""
+
+#: gui/gnash.cpp:125
+#, c-format
+msgid "Error parsing options: %s\n"
+msgstr ""
+
+#: gui/gnash.cpp:166
+msgid "Error: no input file was specified. Exiting.\n"
+msgstr ""
+
+#: gui/gnash.cpp:212
+msgid "Invalid host communication filedescriptor %1%\n"
+msgstr ""
+
+#: gui/gnash.cpp:219
+msgid "Invalid control communication filedescriptor %1%\n"
+msgstr ""
+
+#: gui/gnash.cpp:251
+msgid "ERROR: -r must be followed by 0, 1, 2 or 3 "
+msgstr ""
+
+#: gui/gnash.cpp:267
+msgid "Debugging options"
+msgstr "Feilsøkingsvalg"
+
+#: gui/gnash.cpp:273
+msgid "Produce verbose output"
+msgstr ""
+
+#: gui/gnash.cpp:280
+msgid "Produce the disk based debug log"
+msgstr ""
+
+#: gui/gnash.cpp:285
+msgid "Be (very) verbose about action execution"
+msgstr ""
+
+#: gui/gnash.cpp:291
+msgid "Be (very) verbose about parsing"
+msgstr ""
+
+#: gui/gnash.cpp:297
+msgid "Print FPS every num seconds"
+msgstr ""
+
+#: gui/gnash.cpp:320
+msgid "Options"
+msgstr "Valg"
+
+#: gui/gnash.cpp:325
+msgid "Print this help and exit"
+msgstr ""
+
+#: gui/gnash.cpp:328
+msgid "Print version information and exit"
+msgstr ""
+
+#: gui/gnash.cpp:333
+msgid "Scale the movie by the specified factor"
+msgstr ""
+
+#: gui/gnash.cpp:337
+msgid "Number of milliseconds to delay in main loop"
+msgstr ""
+
+#: gui/gnash.cpp:341
+msgid "Audio dump file (wave format)"
+msgstr ""
+
+#: gui/gnash.cpp:346
+msgid "Hardware Video Accelerator to use"
+msgstr ""
+
+#: gui/gnash.cpp:351
+msgid "X11 Window ID for display"
+msgstr ""
+
+#: gui/gnash.cpp:355
+msgid "Set window width"
+msgstr "Sett vindusbredde"
+
+#: gui/gnash.cpp:359
+msgid "Set window height"
+msgstr "Sett vindushøyde"
+
+#: gui/gnash.cpp:363
+msgid "Set window x position"
+msgstr "Sett x-posisjon for vindu"
+
+#: gui/gnash.cpp:367
+msgid "Set window y position"
+msgstr "Sett y-posisjon for vindu"
+
+#: gui/gnash.cpp:372
+msgid "Exit when/if movie reaches the last frame"
+msgstr ""
+
+#: gui/gnash.cpp:378
+msgid "disable rendering and sound"
+msgstr ""
+
+#: gui/gnash.cpp:380
+msgid "enable rendering, disable sound"
+msgstr ""
+
+#: gui/gnash.cpp:382
+msgid "enable sound, disable rendering"
+msgstr ""
+
+#: gui/gnash.cpp:384
+msgid "enable rendering and sound"
+msgstr ""
+
+#: gui/gnash.cpp:392
+msgid "The media handler to use"
+msgstr ""
+
+#: gui/gnash.cpp:400
+msgid "The renderer to use"
+msgstr ""
+
+#: gui/gnash.cpp:406
+msgid "Exit after the specified number of seconds"
+msgstr ""
+
+#: gui/gnash.cpp:409
+msgid "Set \"real\" URL of the movie"
+msgstr ""
+
+#: gui/gnash.cpp:413
+msgid "Set \"base\" URL for resolving relative URLs"
+msgstr "Sett «utgangs»-URL for å løse relative URL-er"
+
+#: gui/gnash.cpp:418
+msgid "Set parameter (e.g. \"FlashVars=A=1&b=2\")"
+msgstr ""
+
+#: gui/gnash.cpp:422
+msgid "Filedescriptor to use for external communications"
+msgstr ""
+
+#: gui/gnash.cpp:428
+msgid "Exit after specified number of frame advances"
+msgstr ""
+
+#: gui/gnash.cpp:432
+msgid "Start in fullscreen mode"
+msgstr ""
+
+#: gui/gnash.cpp:437
+msgid "Start without displaying the menu bar"
+msgstr ""
+
+#: gui/gnash.cpp:442
+msgid "List of frames to save as screenshots"
+msgstr ""
+
+#: gui/gnash.cpp:446
+msgid "Filename pattern for screenshot images"
+msgstr ""
+
+#: gui/gnash.cpp:450
+msgid "Quality for screenshot output (not all formats)"
+msgstr ""
+
+#: gui/gnash.cpp:453
+msgid "Input files"
+msgstr ""
+
+#: gui/gnash.cpp:464
+msgid "Dump options"
+msgstr ""
+
+#: gui/gnash.cpp:469
+msgid "Video dump file (raw format) and optional video FPS (@<num>)"
+msgstr ""
+
+#: gui/gnash.cpp:471
+msgid "Number of milliseconds to sleep between advances"
+msgstr ""
+
+#: gui/gnash.cpp:473
+msgid "Trigger expression to start dumping"
+msgstr ""
+
+#: gui/gnash.cpp:485
+msgid "Keys:\n"
+msgstr "Nøkler:\n"
+
+#: gui/gnash.cpp:487
+msgid "Quit\n"
+msgstr "Avslutt\n"
+
+#: gui/gnash.cpp:489
+msgid "Toggle fullscreen\n"
+msgstr ""
+
+#: gui/gnash.cpp:491
+msgid "Toggle pause\n"
+msgstr ""
+
+#: gui/gnash.cpp:493
+msgid "Restart the movie\n"
+msgstr "Start filmen på nytt\n"
+
+#: gui/gnash.cpp:495
+msgid "Take a screenshot\n"
+msgstr "Ta et øyeblikksbilde\n"
+
+#: gui/gnash.cpp:497
+msgid "Force immediate redraw\n"
+msgstr "Tving tegning på nytt øyeblikkelig\n"
+
+#: gui/gnash.cpp:503
+msgid "Usage: gnash [options] movie_file.swf\n"
+msgstr "Bruk: gnash [valg] film_fil.swf\n"
+
+#: gui/gnash.cpp:504
+msgid "Plays a SWF (Shockwave Flash) movie\n"
+msgstr ""
+
+#: gui/gnash.cpp:521
+msgid ""
+"Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software "
+"Foundation, Inc.\n"
+"Gnash comes with NO WARRANTY, to the extent permitted by law.\n"
+"You may redistribute copies of Gnash under the terms of the GNU General\n"
+"Public License. For more information, see the file named COPYING.\n"
+"\n"
+msgstr ""
+"Opphavsrettsbeskyttet (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free "
+"Software Foundation, Inc.\n"
+"Gnash kommer helt UTEN GARANTI i den utstrekning tillat i loven.\n"
+"Du kan spre kopier av Gnash i henhold til vilkårene til lisensen GNU\n"
+"General Public License. For mer informasjon, se filen ved navn COPYING.\n"
+"\n"
+
+#: gui/gnash.cpp:532
+msgid "Build options "
+msgstr "Byggevalg "
+
+#: gui/gnash.cpp:533
+msgid " Renderers: "
+msgstr ""
+
+#: gui/gnash.cpp:534
+msgid " Hardware Acceleration: "
+msgstr ""
+
+#: gui/gnash.cpp:535
+msgid " GUI: "
+msgstr ""
+
+#: gui/gnash.cpp:536
+msgid " Media handlers: "
+msgstr ""
+
+#: gui/gnash.cpp:538
+msgid " Configured with: "
+msgstr ""
+
+#: gui/gnash.cpp:539
+msgid " CXXFLAGS: "
+msgstr ""
+
+#: gui/fltk/fltk_glue_agg.cpp:50
+msgid "Could not create AGG renderer with pixelformat RGB24"
+msgstr ""
+
+#: gui/dump/dump.cpp:117
+msgid "Ignoring request to display in X11 window"
+msgstr ""
+
+#: gui/dump/dump.cpp:128 gui/haiku/haiku.cpp:384
+msgid "# FATAL: No filename given with -D argument."
+msgstr ""
+
+#: gui/dump/dump.cpp:144
+msgid "# FATAL: No sleep ms value given with -S argument."
+msgstr ""
+
+#: gui/dump/dump.cpp:155
+msgid "# FATAL: No trigger value given with -T argument.\n"
+msgstr ""
+
+#: gui/dump/dump.cpp:352
+#, c-format
+msgid "Unable to write file '%s'."
+msgstr "Klarte ikke skrive til fil «%s»."
+
+#: gui/ScreenShotter.cpp:99
+#, c-format
+msgid "Failed to open screenshot file \"%s\"!"
+msgstr "Ute av stand til å åpne øyeblikksbildefil «%s»!"
+
+#: gui/haiku/haiku.cpp:141
+msgid "spawn_thread failed"
+msgstr "spawn_thread feilet"
+
+#: gui/haiku/haiku.cpp:144
+msgid "resume_thread failed"
+msgstr "resume_thread feilet"
+
+#: gui/haiku/haiku.cpp:157
+#, c-format
+msgid "pulses thread returned %d"
+msgstr "pulses-tråd returnerte %d"
+
+#: gui/haiku/haiku.cpp:248
+msgid "send_data failed"
+msgstr ""
+
+#: gui/haiku/haiku_agg_glue.cpp:290 gui/aos4/aos4_agg_glue.cpp:116
+#: gui/sdl/sdl_agg_glue.cpp:78
+#, c-format
+msgid "AGG's bit depth must be 16, 24 or 32 bits, not %d."
+msgstr ""
+
+#: gui/haiku/haiku_agg_glue.cpp:297 gui/gtk/gtk_glue_agg.cpp:96
+#, c-format
+msgid "Could not create AGG renderer with pixelformat %s"
+msgstr ""
+
+#: gui/haiku/haiku_agg_glue.cpp:416 gui/sdl/sdl_agg_glue.cpp:132
+#, c-format
+msgid "SDL-AGG: %i byte offscreen buffer allocated"
+msgstr ""
+
+#: gui/qt/Qt4Gui.cpp:120
+msgid "Cairo renderer not supported!"
+msgstr "Cairo-rendreren støttes ikke!"
+
+#: gui/qt/Qt4Gui.cpp:128
+msgid "OpenGL renderer not supported!"
+msgstr "OpenGL-rendreren støttes ikke!"
+
+#: gui/qt/Qt4Gui.cpp:136
+msgid "AGG renderer not supported!"
+msgstr "AGG-rendreren støttes ikke!"
+
+#: gui/qt/Qt4Gui.cpp:467 gui/gtk/gtk.cpp:1708
+msgid "Movie properties"
+msgstr "Filmegenskaper"
+
+#: gui/qt/Qt4Gui.cpp:486 gui/gtk/gtk.cpp:1778
+msgid "Variable"
+msgstr "Variabel"
+
+#: gui/qt/Qt4Gui.cpp:487 gui/gtk/gtk.cpp:1790
+msgid "Value"
+msgstr "Verdi"
+
+#: gui/qt/Qt4Gui.cpp:588
+msgid "Properties"
+msgstr "Egenskaper"
+
+#: gui/qt/Qt4Gui.cpp:592 gui/qt/kde.cpp:424
+msgid "Quit Gnash"
+msgstr "Avslutt Gnash"
+
+#: gui/qt/Qt4Gui.cpp:599
+msgid "Preferences"
+msgstr "Innstillinger"
+
+#: gui/qt/Qt4Gui.cpp:604 gui/gtk/gtk.cpp:2119
+msgid "Play"
+msgstr "Spill av"
+
+#: gui/qt/Qt4Gui.cpp:608 gui/gtk/gtk.cpp:2130
+msgid "Pause"
+msgstr "Pause"
+
+#: gui/qt/Qt4Gui.cpp:612 gui/gtk/gtk.cpp:2140
+msgid "Stop"
+msgstr "Stopp"
+
+#: gui/qt/Qt4Gui.cpp:616
+msgid "Restart"
+msgstr "Start på nytt"
+
+#: gui/qt/Qt4Gui.cpp:621 gui/qt/kde.cpp:423
+msgid "Refresh"
+msgstr "Frisk opp"
+
+#: gui/qt/Qt4Gui.cpp:625
+msgid "Fullscreen"
+msgstr "Fullskjerm"
+
+#: gui/qt/Qt4Gui.cpp:640
+msgid "File"
+msgstr "Fil"
+
+#: gui/qt/Qt4Gui.cpp:645
+msgid "Edit"
+msgstr "Rediger"
+
+#: gui/qt/Qt4Gui.cpp:649
+msgid "Movie Control"
+msgstr "Filmkontroll"
+
+#: gui/qt/Qt4Gui.cpp:656
+msgid "View"
+msgstr "Vis"
+
+#: gui/qt/Qt4Gui.cpp:738
+msgid "Click to Play"
+msgstr "Trykk for å spille av"
+
+#: gui/qt/Qt4Gui.cpp:770 gui/gtk/gtk.cpp:1239
+msgid "Gnash preferences"
+msgstr "Gnash-innstillinger"
+
+#: gui/qt/Qt4Gui.cpp:785
+msgid "Logging"
+msgstr "Logging"
+
+#: gui/qt/Qt4Gui.cpp:788 gui/gtk/gtk.cpp:1310
+msgid "<b>Logging options</b>"
+msgstr "<b>Loggingsinnstillinger</b>"
+
+#: gui/qt/Qt4Gui.cpp:791
+msgid "Verbosity level"
+msgstr ""
+
+#: gui/qt/Qt4Gui.cpp:809
+msgid "Log to file"
+msgstr "Logg til fil"
+
+#: gui/qt/Qt4Gui.cpp:816
+msgid "Log parser output"
+msgstr ""
+
+#: gui/qt/Qt4Gui.cpp:820
+msgid "Log SWF actions"
+msgstr ""
+
+#: gui/qt/Qt4Gui.cpp:824
+msgid "Log malformed SWF errors"
+msgstr ""
+
+#: gui/qt/Qt4Gui.cpp:829
+msgid "Log ActionScript coding errors"
+msgstr ""
+
+#: gui/qt/Qt4Gui.cpp:836
+msgid "Security"
+msgstr "Sikkerhet"
+
+#: gui/qt/Qt4Gui.cpp:839 gui/gtk/gtk.cpp:1393
+msgid "<b>Network connections</b>"
+msgstr "<b>Nettverksforbindelser</b>"
+
+#: gui/qt/Qt4Gui.cpp:842
+msgid "Connect only to local host"
+msgstr "Koble kun til lokal vert"
+
+#: gui/qt/Qt4Gui.cpp:847
+msgid "Connect only to local domain"
+msgstr "Koble kun til lokalt domene"
+
+#: gui/qt/Qt4Gui.cpp:852
+msgid "Disable SSL verification"
+msgstr "Slå av SSL-bekreftelse"
+
+#: gui/qt/Qt4Gui.cpp:857 gui/gtk/gtk.cpp:1438
+msgid "<b>Privacy</b>"
+msgstr "<b>Privatliv</b>"
+
+#: gui/qt/Qt4Gui.cpp:860 gui/gtk/gtk.cpp:1442
+msgid "Shared objects directory:"
+msgstr ""
+
+#: gui/qt/Qt4Gui.cpp:866
+msgid "Do not write Shared Object files"
+msgstr ""
+
+#: gui/qt/Qt4Gui.cpp:872
+msgid "Only access local Shared Object files"
+msgstr ""
+
+#: gui/qt/Qt4Gui.cpp:877
+msgid "Disable Local Connection object"
+msgstr ""
+
+#: gui/qt/Qt4Gui.cpp:884
+msgid "Network"
+msgstr "Nettverk"
+
+#: gui/qt/Qt4Gui.cpp:887 gui/gtk/gtk.cpp:1278
+msgid "<b>Network preferences</b>"
+msgstr "<b>Nettverksinnstillinger</b>"
+
+#: gui/qt/Qt4Gui.cpp:890
+msgid "Network timeout in seconds"
+msgstr ""
+
+#: gui/qt/Qt4Gui.cpp:902
+msgid "Media"
+msgstr ""
+
+#: gui/qt/Qt4Gui.cpp:905 gui/gtk/gtk.cpp:1488
+msgid "<b>Sound</b>"
+msgstr "<b>Lyd</b>"
+
+#: gui/qt/Qt4Gui.cpp:908
+msgid "Use sound handler"
+msgstr ""
+
+#: gui/qt/Qt4Gui.cpp:912 gui/gtk/gtk.cpp:1507
+msgid "Save media streams to disk"
+msgstr ""
+
+#: gui/qt/Qt4Gui.cpp:918 gui/gtk/gtk.cpp:1516
+msgid "Save dynamically loaded media to disk"
+msgstr ""
+
+#: gui/qt/Qt4Gui.cpp:922 gui/gtk/gtk.cpp:1524
+msgid "Saved media directory:"
+msgstr ""
+
+#: gui/qt/Qt4Gui.cpp:931
+msgid "Player"
+msgstr "Avspiller"
+
+#: gui/qt/Qt4Gui.cpp:934 gui/gtk/gtk.cpp:1550
+msgid "<b>Player description</b>"
+msgstr "<b>Avspillerbeskrivelse</b>"
+
+#: gui/qt/Qt4Gui.cpp:937 gui/gtk/gtk.cpp:1558
+msgid "Player version:"
+msgstr "Avspillerversjon:"
+
+#: gui/qt/Qt4Gui.cpp:943 gui/gtk/gtk.cpp:1574
+msgid "Operating system:"
+msgstr "Operativsystem:"
+
+#: gui/qt/Qt4Gui.cpp:948 gui/qt/Qt4Gui.cpp:1021
+msgid "<Autodetect>"
+msgstr ""
+
+#: gui/qt/Qt4Gui.cpp:954 gui/gtk/gtk.cpp:1594
+msgid "URL opener:"
+msgstr "URL-Ã¥pner:"
+
+#: gui/qt/Qt4Gui.cpp:961 gui/gtk/gtk.cpp:1606
+msgid "<b>Performance</b>"
+msgstr "<b>Ytelse</b>"
+
+#: gui/qt/Qt4Gui.cpp:964 gui/gtk/gtk.cpp:1620
+msgid "Max size of movie library:"
+msgstr "Maksimal størrelse på filmbiblioteket:"
+
+#: gui/qt/Qt4Gui.cpp:973
+msgid "Start Gnash in pause mode"
+msgstr "Start Gnash i pausemodus"
+
+#: gui/qt/Qt4GlueAgg.cpp:115
+msgid "Could not create AGG renderer with pixelformat ABGR32"
+msgstr ""
+
+#: gui/qt/kde_glue_agg.cpp:156
+msgid "Could not create AGG renderer with pixelformat BGRA32"
+msgstr ""
+
+#: gui/qt/kde.cpp:413
+msgid "Play Movie"
+msgstr "Spill film"
+
+#: gui/qt/kde.cpp:414
+msgid "Pause Movie"
+msgstr "Pause film"
+
+#: gui/qt/kde.cpp:415
+msgid "Stop Movie"
+msgstr "Stopp film"
+
+#: gui/qt/kde.cpp:416 gui/gtk/gtk.cpp:2152
+msgid "Restart Movie"
+msgstr "Start film på nytt"
+
+#: gui/qt/kde.cpp:418
+msgid "Step Forward"
+msgstr "Steg forover"
+
+#: gui/qt/kde.cpp:419
+msgid "Step Backward"
+msgstr "Steg bakover"
+
+#: gui/qt/kde.cpp:420
+msgid "Jump Forward"
+msgstr "Hopp forover"
+
+#: gui/qt/kde.cpp:421
+msgid "Jump Backward"
+msgstr "Hopp bakover"
+
+#: gui/pythonmod/gnash-view.cpp:220 gui/Player.cpp:288
+#, c-format
+msgid "Could not create sound handler: %s. Will continue without sound."
+msgstr ""
+
+#: gui/pythonmod/gnash-view.cpp:223 gui/Player.cpp:283
+msgid "Sound requested but no sound support compiled in"
+msgstr ""
+
+#: gui/aos4/aos4.cpp:70
+#, c-format
+msgid "Exception: %s on file %s line %d"
+msgstr "Unntak: %s i fil %s linje %d"
+
+#: gui/aos4/aos4.cpp:266 gui/gtk/gtk.cpp:2591
+#, c-format
+msgid ""
+"Attempting to open file %s.\n"
+"NOTE: the file open functionality is not yet implemented!"
+msgstr ""
+
+#: gui/aos4/aos4.cpp:274
+msgid "Cannot open File Requester!\n"
+msgstr ""
+
+#: gui/aos4/aos4.cpp:609
+msgid "error creating RenderHandler!\n"
+msgstr ""
+
+#: gui/aos4/aos4_cairo_glue.cpp:124
+#, c-format
+msgid "Cairo's bit depth must be 16, 24 or 32 bits, not %d."
+msgstr ""
+
+#: gui/aos4/aos4_cairo_glue.cpp:212 gui/aos4/aos4_agg_glue.cpp:216
+msgid "Cannot layout Menu!!\n"
+msgstr ""
+
+#: gui/aos4/aos4_cairo_glue.cpp:216 gui/aos4/aos4_agg_glue.cpp:220
+msgid "Cannot create Menu!!\n"
+msgstr ""
+
+#: gui/aos4/aos4_cairo_glue.cpp:219 gui/aos4/aos4_agg_glue.cpp:223
+msgid "Cannot get Visual Info!!\n"
+msgstr ""
+
+#: gui/aos4/aos4_cairo_glue.cpp:222 gui/aos4/aos4_agg_glue.cpp:226
+msgid "Cannot get WB Screen pointer!!\n"
+msgstr ""
+
+#: gui/aos4/aos4_cairo_glue.cpp:259 gui/aos4/aos4_agg_glue.cpp:264
+msgid "prepDrawingArea() failed.\n"
+msgstr ""
+
+#: gui/aos4/aos4_agg_glue.cpp:277
+#, c-format
+msgid "AOS4-AGG: %i byte offscreen buffer allocated"
+msgstr ""
+
+#: gui/sdl/sdl_agg_glue.cpp:95
+msgid "SDL_SetVideoMode() failed for SdlAggGlue."
+msgstr ""
+
+#: gui/gui.cpp:193
+msgid "Clipboard not yet supported in this GUI"
+msgstr ""
+
+#: gui/gui.cpp:199 gui/gui.cpp:211
+msgid "Fullscreen not yet supported in this GUI"
+msgstr ""
+
+#: gui/gui.cpp:205
+msgid "Window resize not yet supported in this GUI"
+msgstr ""
+
+#: gui/gui.cpp:229 gui/gui.cpp:242
+msgid "Menu show/hide not yet supported in this GUI"
+msgstr ""
+
+#: gui/gui.cpp:235
+msgid "Mouse show/hide not yet supported in this GUI"
+msgstr ""
+
+#: gui/gui.cpp:282
+msgid "Can't update stage matrix till VM is initialized"
+msgstr ""
+
+#: gui/gui.cpp:334
+#, c-format
+msgid "Invalid scaleMode %d"
+msgstr ""
+
+#: gui/gui.cpp:374
+#, c-format
+msgid "Invalid horizontal align %d"
+msgstr ""
+
+#: gui/gui.cpp:405
+#, c-format
+msgid "Invalid vertical align %d"
+msgstr ""
+
+#: gui/gui.cpp:900
+msgid "Gui is in stop mode, won't start application"
+msgstr ""
+
+#: gui/gui.cpp:1261
+#, c-format
+msgid "This gui didn't override 'yesno', assuming 'yes' answer to question: %s"
+msgstr ""
+
+#: gui/gui.cpp:1270
+msgid "Gui::setQuality called before a movie_root was available"
+msgstr ""
+
+#: gui/gui.cpp:1280
+msgid "Gui::getQuality called before a movie_root was available"
+msgstr ""
+
+#: gui/Player.cpp:131
+msgid "GUI ExternalInterface.Pan event"
+msgstr ""
+
+#: gui/Player.cpp:143
+msgid "GUI ExternalInterface.SetZoomRect event"
+msgstr ""
+
+#: gui/Player.cpp:151
+msgid "GUI ExternalInterface.Zoom event"
+msgstr ""
+
+#: gui/Player.cpp:169
+#, c-format
+msgid "Unhandled callback %s with arguments %s"
+msgstr ""
+
+#: gui/Player.cpp:434
+msgid "Non-existent media handler %1% specified"
+msgstr ""
+
+#: gui/Player.cpp:545
+#, c-format
+msgid "Movie Frame Rate is %d, adjusting delay"
+msgstr ""
+
+#: gui/Player.cpp:682
+msgid "Got unexpected argument type for message %1%"
+msgstr ""
+
+#: gui/Player.cpp:717
+#, c-format
+msgid ""
+"Could only write %d bytes over %d required to user-provided host requests fd "
+"%d"
+msgstr ""
+
+#: gui/Player.cpp:773
+#, c-format
+msgid "FsCommand exec called with argument %s"
+msgstr ""
+
+#: gui/Player.cpp:790
+#, c-format
+msgid "FsCommand trapallkeys called with argument %s"
+msgstr ""
+
+#: gui/Player.cpp:796
+#, c-format
+msgid "FsCommand '%s(%s)' not handled internally"
+msgstr ""
+
+#: gui/gtk/gtk_glue_cairo.cpp:223
+msgid "Cairo: failed to create a rendering buffer!"
+msgstr ""
+
+#: gui/gtk/gtk_glue_ovg.cpp:182
+msgid "Could not create OPENVG renderer"
+msgstr ""
+
+#: gui/gtk/gtk_glue_ovg.cpp:265 gui/gtk/gtk_glue_ovg.cpp:282
+msgid "No off screen buffer!"
+msgstr ""
+
+#: gui/gtk/gtk_glue_agg_vaapi.cpp:163
+msgid "WARNING: failed to create VA-API display."
+msgstr ""
+
+#: gui/gtk/gtk_glue_agg_vaapi.cpp:204
+#, c-format
+msgid ""
+"GTK-AGG: Unknown RGB format %s reported by VA-API.Please report this to the "
+"gnash-dev mailing list."
+msgstr ""
+
+#: gui/gtk/gtk_glue_agg_vaapi.cpp:231 gui/gtk/gtk_glue_agg_vaapi.cpp:289
+msgid "failed to map VA-API image."
+msgstr ""
+
+#: gui/gtk/gtk_glue_agg_vaapi.cpp:237
+msgid "failed to associate VA-API subpicture."
+msgstr ""
+
+#: gui/gtk/gtk_glue_agg_vaapi.cpp:371
+#, c-format
+msgid "failed to setup video window for surface 0x%08x."
+msgstr ""
+
+#: gui/gtk/gtk_glue_agg_vaapi.cpp:378
+#, c-format
+msgid "failed to associate subpicture to surface 0x%08x."
+msgstr ""
+
+#: gui/gtk/gtk.cpp:159
+msgid "Failed to initialize X threading support\n"
+msgstr ""
+
+#: gui/gtk/gtk.cpp:202
+msgid "This system lacks a hardware OpenGL driver!"
+msgstr ""
+
+#: gui/gtk/gtk.cpp:223
+msgid "Click to play"
+msgstr ""
+
+#: gui/gtk/gtk.cpp:612
+#, c-format
+msgid "Advance interval timer set to %d ms (~ %d FPS)"
+msgstr ""
+
+#: gui/gtk/gtk.cpp:686
+msgid "Sound"
+msgstr ""
+
+#: gui/gtk/gtk.cpp:1274
+msgid "_Network"
+msgstr ""
+
+#: gui/gtk/gtk.cpp:1286
+msgid "Network timeout in seconds (0 for no timeout):"
+msgstr ""
+
+#: gui/gtk/gtk.cpp:1305
+msgid "_Logging"
+msgstr ""
+
+#: gui/gtk/gtk.cpp:1314
+msgid "Verbosity level:"
+msgstr ""
+
+#: gui/gtk/gtk.cpp:1327
+msgid "Log to _file"
+msgstr ""
+
+#: gui/gtk/gtk.cpp:1333
+msgid "Logfile name:"
+msgstr ""
+
+#: gui/gtk/gtk.cpp:1346
+msgid "Log _parser output"
+msgstr ""
+
+#: gui/gtk/gtk.cpp:1354
+msgid "Log SWF _actions"
+msgstr ""
+
+#: gui/gtk/gtk.cpp:1362
+msgid "Log malformed SWF _errors"
+msgstr ""
+
+#: gui/gtk/gtk.cpp:1370
+msgid "Log ActionScript _coding errors"
+msgstr ""
+
+#: gui/gtk/gtk.cpp:1386
+msgid "_Security"
+msgstr "_Sikkerhet"
+
+#: gui/gtk/gtk.cpp:1399
+msgid "Connect only to local _host"
+msgstr ""
+
+#: gui/gtk/gtk.cpp:1406
+msgid "Connect only to local _domain"
+msgstr ""
+
+#: gui/gtk/gtk.cpp:1413
+msgid "Disable SSL _verification"
+msgstr ""
+
+#: gui/gtk/gtk.cpp:1420
+msgid "_Whitelist"
+msgstr ""
+
+#: gui/gtk/gtk.cpp:1429
+msgid "_Blacklist"
+msgstr ""
+
+#: gui/gtk/gtk.cpp:1454
+msgid "Do _not write Shared Object files"
+msgstr ""
+
+#: gui/gtk/gtk.cpp:1461
+msgid "Only _access local Shared Object files"
+msgstr ""
+
+#: gui/gtk/gtk.cpp:1468
+msgid "Disable Local _Connection object"
+msgstr ""
+
+#: gui/gtk/gtk.cpp:1482
+msgid "_Media"
+msgstr ""
+
+#: gui/gtk/gtk.cpp:1493
+msgid "Use sound _handler"
+msgstr ""
+
+#: gui/gtk/gtk.cpp:1501
+msgid "<b>Media Streams</b>"
+msgstr ""
+
+#: gui/gtk/gtk.cpp:1544
+msgid "_Player"
+msgstr ""
+
+#: gui/gtk/gtk.cpp:1584
+msgid "<i>If blank, Gnash will detect your OS</i>"
+msgstr ""
+
+#: gui/gtk/gtk.cpp:1637
+msgid "Max scripts execution time (in seconds):"
+msgstr ""
+
+#: gui/gtk/gtk.cpp:1656
+msgid "Max scripts recursion limit (stack depth):"
+msgstr ""
+
+#: gui/gtk/gtk.cpp:1672
+msgid "Lock script limits so that SWF tags can't override"
+msgstr ""
+
+#: gui/gtk/gtk.cpp:1684
+msgid "Start _Gnash in pause mode"
+msgstr ""
+
+#: gui/gtk/gtk.cpp:1843
+msgid ""
+"This program is free software; you can redistribute it and/or modify\n"
+"it under the terms of the GNU General Public License as published by\n"
+"the Free Software Foundation; either version 3 of the License, or\n"
+"(at your option) any later version.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+"GNU General Public License for more details.\n"
+"You should have received a copy of the GNU General Public License\n"
+"along with this program; if not, write to the Free Software\n"
+"Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301\n"
+"USA or visit http://www.gnu.org/licenses/."
+msgstr ""
+
+#: gui/gtk/gtk.cpp:1859
+msgid "Gnash is the GNU SWF Player based on GameSWF."
+msgstr ""
+
+#: gui/gtk/gtk.cpp:1860
+msgid ""
+"\n"
+"Renderer: "
+msgstr ""
+
+#: gui/gtk/gtk.cpp:1862
+msgid ""
+"\n"
+"Hardware Acceleration: "
+msgstr ""
+
+#: gui/gtk/gtk.cpp:1864
+msgid ""
+"\n"
+"GUI: "
+msgstr ""
+
+#: gui/gtk/gtk.cpp:1866
+msgid ""
+"\n"
+"Media: "
+msgstr ""
+
+#: gui/gtk/gtk.cpp:1896
+msgid "translator-credits"
+msgstr ""
+
+#: gui/gtk/gtk.cpp:1923
+msgid "_File"
+msgstr "_Fil"
+
+#: gui/gtk/gtk.cpp:1976
+msgid "_Edit"
+msgstr "_Rediger"
+
+#: gui/gtk/gtk.cpp:1996
+msgid "_Help"
+msgstr "_Hjelp"
+
+#: gui/gtk/gtk.cpp:2016
+msgid "_View"
+msgstr "_Vis"
+
+#: gui/gtk/gtk.cpp:2024
+msgid "Redraw"
+msgstr "Tegn på nytt"
+
+#: gui/gtk/gtk.cpp:2034 gui/gtk/gtk.cpp:2039
+msgid "Toggle fullscreen"
+msgstr ""
+
+#: gui/gtk/gtk.cpp:2048
+msgid "Show updated ranges"
+msgstr ""
+
+#: gui/gtk/gtk.cpp:2067
+msgid "_Quality"
+msgstr "_Kvalitet"
+
+#: gui/gtk/gtk.cpp:2077
+msgid "Low"
+msgstr "Lav"
+
+#: gui/gtk/gtk.cpp:2083
+msgid "Medium"
+msgstr "Medium"
+
+#: gui/gtk/gtk.cpp:2089
+msgid "High"
+msgstr "Høy"
+
+#: gui/gtk/gtk.cpp:2095
+msgid "Best"
+msgstr "Best"
+
+#: gui/gtk/gtk.cpp:2108
+msgid "Movie _Control"
+msgstr ""
+
+#: gui/gtk/gtk.cpp:2275 gui/gtk/gtk.cpp:2276
+#, c-format
+msgid "Couldn't find pixmap file: %s"
+msgstr ""
+
+#: gui/gtk/gtk.cpp:2282
+#, c-format
+msgid "Failed to load pixbuf file: %s: %s"
+msgstr ""
+
+#: gui/gtk/gtk.cpp:2608 gui/gtk/gtk.cpp:2621
+msgid "Open file"
+msgstr "Ã
pne fil"
+
+#: gui/gtk/gtk_glue_gtkglext.cpp:72
+msgid ""
+"Cannot find the double-buffered visual.\n"
+"Trying single-buffered visual."
+msgstr ""
+
+#: gui/gtk/gtk_glue_gtkglext.cpp:78
+msgid "No appropriate OpenGL-capable visual found."
+msgstr ""
diff --git a/po/zh_TW.po b/po/zh_CN.po
similarity index 58%
copy from po/zh_TW.po
copy to po/zh_CN.po
index 4b11f0a..e446b7a 100644
--- a/po/zh_TW.po
+++ b/po/zh_CN.po
@@ -6,9 +6,9 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-01-20 17:11-0700\n"
-"PO-Revision-Date: 2012-01-05 04:24+0200\n"
-"Last-Translator: Chris <cjl at laptop.org>\n"
+"POT-Creation-Date: 2014-04-20 00:37+0200\n"
+"PO-Revision-Date: 2013-05-18 17:39+0200\n"
+"Last-Translator: lite <litekok at gmail.com>\n"
"Language-Team: LANGUAGE <LL at li.org>\n"
"Language: zh_CN\n"
"MIME-Version: 1.0\n"
@@ -17,1241 +17,1359 @@ msgstr ""
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Pootle 2.0.5\n"
+#: libbase/extension.cpp:115
+#, c-format
+msgid "Loading module: %s from %s"
+msgstr "è£
载模åï¼ %s æ¥èª %s"
+
+#: libbase/extension.cpp:125 cygnal/handler.cpp:300
+#, c-format
+msgid "Initializing module: \"%s\" from %s"
+msgstr "åå§å模åï¼\"%s\" æ¥èª %s"
+
+#: libbase/extension.cpp:142
+msgid "Couldn't get class_init symbol"
+msgstr "æ æ³è·åclass_init符å·"
+
+#: libbase/extension.cpp:154
+#, c-format
+msgid "Initializing module: \"%s\""
+msgstr "æ£å¨åå§å模åï¼ \"%s\""
+
+#: libbase/extension.cpp:168
+#, c-format
+msgid "Couldn't get class_init symbol: \"%s\""
+msgstr "æ æ³è·åclass_init符å·ï¼\"%s\""
+
+#: libbase/extension.cpp:196 cygnal/cgi-bin/oflaDemo/oflaDemo.cpp:313
+#, c-format
+msgid "Can't open directory %s"
+msgstr "æ æ³æå¼ç®å½%s"
+
#: libbase/RTMP.cpp:222
msgid "Initial connection failed"
-msgstr ""
+msgstr "åå§è¿æ¥å¤±è´¥"
#: libbase/RTMP.cpp:325 libbase/RTMP.cpp:329
msgid "unsupported packet received"
-msgstr ""
+msgstr "æ¶å°äºä¸æ¯æçå
"
#: libbase/RTMP.cpp:334
#, c-format
msgid "partially supported packet %s received"
-msgstr ""
+msgstr "æ¶å°äºé¨åæ¯æå
ï¼å为%s"
#: libbase/RTMP.cpp:344
#, c-format
msgid "packet %s received"
-msgstr ""
+msgstr "æ¶å°äºå为%sçå
"
#: libbase/RTMP.cpp:356
#, c-format
msgid "Unknown packet %s received"
-msgstr ""
+msgstr "æ¶å°äºä¸æçå
%s"
-#: libbase/RTMP.cpp:458
+#: libbase/RTMP.cpp:456
msgid "failed to read RTMP packet header 2nd byte"
-msgstr ""
+msgstr "读åRTMPå
ç第2个åè失败"
-#: libbase/RTMP.cpp:466
+#: libbase/RTMP.cpp:464
msgid "Failed to read RTMP packet header 3nd byte"
-msgstr ""
+msgstr "读åRTMPå
ç第3个åè失败"
-#: libbase/RTMP.cpp:484
+#: libbase/RTMP.cpp:482
#, c-format
msgid "Incomplete packet received on channel %s"
-msgstr ""
+msgstr "å¨éé%s䏿¶å°äºä¸å®æ´çå
"
-#: libbase/RTMP.cpp:497
+#: libbase/RTMP.cpp:495
#, c-format
msgid "Failed to read RTMP packet header. type: %s"
-msgstr ""
+msgstr "读åç±»å«ä¸º%sçRTMPå
失败"
-#: libbase/RTMP.cpp:542
+#: libbase/RTMP.cpp:540
#, c-format
msgid "%s, failed to read extended timestamp"
-msgstr ""
+msgstr "%sï¼è¯»åæ©å±çæ¶é´æ³å¤±è´¥"
-#: libbase/RTMP.cpp:871
+#: libbase/RTMP.cpp:873
msgid "Stage 1 socket not ready. This should not happen."
-msgstr ""
+msgstr "第ä¸é¶æ®µå¥æ¥åæªåå¤å¥½ãè¿æ¯ä¸åºè¯¥åççã"
-#: libbase/RTMP.cpp:877
+#: libbase/RTMP.cpp:879
msgid "Could not send stage 1 data"
-msgstr ""
+msgstr "æ æ³åé第ä¸é¶æ®µæ°æ®"
-#: libbase/RTMP.cpp:899
+#: libbase/RTMP.cpp:901
#, c-format
msgid "Type mismatch: client sent %d, server answered %d"
-msgstr ""
+msgstr "ç±»åä¸å¹é
ï¼å®¢æ·ç«¯åéçæ¯%d, èæå¡å¨ç«¯ååºçæ¯ %d."
-#: libbase/RTMP.cpp:927
+#: libbase/RTMP.cpp:929
msgid "Could not send complete signature."
-msgstr ""
+msgstr "æ æ³åé宿´çç¾å"
-#: libbase/RTMP.cpp:953
+#: libbase/RTMP.cpp:955
msgid "Signatures do not match during handshake!"
-msgstr ""
+msgstr "卿¡æè¿ç¨ä¸ç¾åä¸å¹é
ï¼"
-#: libbase/RTMP.cpp:1041
+#: libbase/RTMP.cpp:1043
msgid "Control packet too short"
-msgstr ""
+msgstr "æ§å¶å
太ç"
-#: libbase/RTMP.cpp:1049
+#: libbase/RTMP.cpp:1051
#, c-format
msgid "Control packet (%s) data too short"
-msgstr ""
+msgstr "æ§å¶å
(%s)çæ°æ®å¤ªç"
-#: libbase/RTMP.cpp:1087
+#: libbase/RTMP.cpp:1089
#, c-format
msgid "Received unknown or unhandled control %s"
-msgstr ""
+msgstr "æ¶å°äºæªç¥ææªå¤ççæ§å¶%s"
-#: libbase/GnashImagePng.cpp:51
-msgid "PNG error: "
-msgstr ""
+#: libbase/SharedMem.cpp:69
+#, c-format
+msgid "Error detaching shared memory: %s"
+msgstr "è±ç¦»å
±äº«å
ååºé: %s"
-#: libbase/StreamProvider.cpp:84 libbase/StreamProvider.cpp:149
-msgid "Could not open file %1%: %2%"
-msgstr ""
+#: libbase/SharedMem.cpp:76
+#, c-format
+msgid "Error during stat of shared memory segment: %s"
+msgstr "å
±äº«å
åæ®µç¶æåºéï¼%s"
-#: libbase/StreamProvider.cpp:112
-msgid "Request Headers discarded while getting stream from file: uri"
-msgstr ""
+#: libbase/SharedMem.cpp:84
+msgid "No shared memory users left. Removing segment and semaphore."
+msgstr "没æç¨æ·å©ä¸çå
±äº«å
åãå 餿®µåä¿¡å·éã"
-#: libbase/StreamProvider.cpp:135
-msgid "POST data discarded while getting a stream from file: uri"
-msgstr ""
+#: libbase/SharedMem.cpp:137
+#, fuzzy
+msgid "Failed to set semaphore value: %1%"
+msgstr "æ æ³è®¾ç½®ä¿¡å·éçå¼"
-#: libbase/noseek_fd_adapter.cpp:223
-#, c-format
-msgid "Error reading %d bytes from input stream"
-msgstr ""
+#: libbase/SharedMem.cpp:144
+#, fuzzy
+msgid "Failed to obtain nonexclusive semaphore for shared memory: %1%"
+msgstr "æ æ³è·åå
±äº«å
åçä¿¡å·éï¼"
-#: libbase/Socket.cpp:98
-msgid "XMLSocket: The socket was never available"
+#: libbase/SharedMem.cpp:167
+msgid "Timed out waiting for semaphore initialization."
msgstr ""
-#: libbase/Socket.cpp:125
-msgid "Connection attempt while already connected"
-msgstr ""
+#: libbase/SharedMem.cpp:171
+#, fuzzy
+msgid "Failed creating semaphore: %1%"
+msgstr "æ æ³è®¾ç½®ä¿¡å·éçå¼"
-#: libbase/Socket.cpp:154
-#, c-format
-msgid "Socket creation failed: %s"
-msgstr ""
+#: libbase/SharedMem.cpp:218
+msgid "Unable to get shared memory segment!"
+msgstr "æ æ³è·åå
±äº«å
åæ®µï¼"
-#: libbase/Socket.cpp:171
+#: libbase/SharedMem.cpp:225
#, c-format
-msgid "Failed to connect socket: %s"
-msgstr ""
+msgid "Unable to attach shared memory: %s"
+msgstr "æ æ³è¿æ¥å
±äº«å
åï¼%s"
-#: libbase/Socket.cpp:187
-msgid "Setting socket timeout failed"
-msgstr ""
+#: libbase/GnashImageJpeg.cpp:115
+msgid "JPEG: Empty jpeg source stream."
+msgstr "JPEGï¼JPEGæºæµä¸ºç©ºã"
+
+#: libbase/GnashImageJpeg.cpp:260 libbase/GnashImageJpeg.cpp:287
+#: libbase/GnashImageJpeg.cpp:305 libbase/GnashImageJpeg.cpp:361
+msgid "Internal jpeg error: "
+msgstr "å
é¨çJPEGé误ï¼"
-#: libbase/Socket.cpp:237
+#: libbase/GnashImageJpeg.cpp:271
+msgid "Lack of data during JPEG header parsing"
+msgstr "JPEG头é¨è§£ææ¶ç¼ºå°æ°æ®"
+
+#: libbase/GnashImageJpeg.cpp:281
#, c-format
-msgid "Socket receive error %s"
-msgstr ""
+msgid "unexpected: jpeg_read_header returned %d"
+msgstr "æå¤ï¼jpeg_read_headerè¿å %d"
+
+#: libbase/GnashImageJpeg.cpp:317
+msgid "lack of data during JPEG header parsing"
+msgstr "JPEG头é¨è§£ææ¶ç¼ºå°æ°æ®"
-#: libbase/Socket.cpp:340
+#: libbase/GnashImageJpeg.cpp:327
#, c-format
-msgid "Socket send error %s"
-msgstr ""
+msgid "unexpected: jpeg_read_header returned %d [%s:%d]"
+msgstr "æå¤ï¼jpeg_read_headerè¿å %d [%s:%d]"
-#: libbase/Socket.cpp:355
-msgid "tell() called for Socket"
-msgstr ""
+#: libbase/GnashImageJpeg.cpp:335
+msgid "Internal jpeg error during header parsing: "
+msgstr "头é¨è§£ææ¶å
é¨JPEGé误ï¼"
-#: libbase/Socket.cpp:362
-msgid "seek() called for Socket"
-msgstr ""
+#: libbase/GnashImageJpeg.cpp:343
+msgid "Internal jpeg error during decompression: "
+msgstr "è§£åæ¶å
é¨JPEGé误ï¼"
-#: libbase/Socket.cpp:369
-msgid "go_to_end() called for Socket"
-msgstr ""
+#: libbase/GnashImageJpeg.cpp:518
+msgid "rw_dest_IOChannel couldn't write data."
+msgstr "rw_dest_IOChannelä¸è½åå
¥æ°æ®ã"
-#: libbase/tu_file.cpp:193
-msgid "Error while seeking to end: %1%"
-msgstr ""
+#: libbase/GnashImageJpeg.cpp:543
+msgid "rw_dest_IOChannel::term_destination couldn't write data."
+msgstr "rw_dest_IOChannel::term_destinationä¸è½åå
¥æ°æ®ã"
-#: libbase/tu_file.cpp:229
-msgid "Could not fstat file"
-msgstr ""
+#: libbase/URLAccessManager.cpp:95
+#, c-format
+msgid "Load from host %s granted (whitelisted)"
+msgstr "仿æä¸»æº%s ï¼ç½ååï¼è½½å
¥"
-#: libbase/rc.cpp:171 libbase/rc.cpp:702
-msgid "Failed to find user settings directory"
-msgstr ""
+#: libbase/URLAccessManager.cpp:101
+#, c-format
+msgid "Load from host %s forbidden (not in non-empty whitelist)"
+msgstr "ä»ç¦æ¢ä¸»æº%s ï¼ä¸å¨é空ç½ååï¼è½½å
¥"
-#: libbase/rc.cpp:382
-msgid "RcInitFile: couldn't open file: "
-msgstr ""
+#: libbase/URLAccessManager.cpp:115
+#, c-format
+msgid "Load from host %s forbidden (blacklisted)"
+msgstr "ä»ç¦æ¢ä¸»æº%s ï¼é»ååï¼è½½å
¥"
-#: libbase/rc.cpp:422
+#: libbase/URLAccessManager.cpp:120
#, c-format
-msgid "Warning: missing value for variable \"%s\" in rcfile %s, line %d"
-msgstr ""
+msgid "Load from host %s granted (default)"
+msgstr "仿æä¸»æº%s ï¼ç¼ºçï¼è½½å
¥"
-#: libbase/rc.cpp:625
+#: libbase/URLAccessManager.cpp:152
#, c-format
-msgid "Warning: unrecognized directive \"%s\" in rcfile %s line %d"
-msgstr ""
+msgid "Load of file %s forbidden (starting URL %s is not a local resource)"
+msgstr "è½½å
¥æä»¶%sè¢«ç¦æ¢ï¼èµ·å§ç½å%s䏿¯ä¸ä¸ªæ¬å°èµæºï¼"
-#: libbase/rc.cpp:637
+#: libbase/URLAccessManager.cpp:169
#, c-format
-msgid "Warning: empty include specification in rcfile %s, line %d"
-msgstr ""
+msgid "Load of file %s granted (under local sandbox %s)"
+msgstr "è½½å
¥æä»¶%s被ææï¼å¨æ¬å°æ²ç%s)"
-#: libbase/rc.cpp:642
+#: libbase/URLAccessManager.cpp:177
#, c-format
-msgid ""
-"Warning: include specification must be an absolute path in rcfile %s, line %d"
-msgstr ""
+msgid "Load of file %s forbidden (not under local sandboxes)"
+msgstr "è½½å
¥æä»¶%sè¢«ç¦æ¢ï¼ä¸å¨æ¬å°æ²ç)"
-#: libbase/rc.cpp:651
+#: libbase/URLAccessManager.cpp:217
#, c-format
-msgid "Warning: unrecognized action \"%s\" in rcfile %s, line %d"
-msgstr ""
+msgid "gethostname failed: %s"
+msgstr "gethostname 失败ï¼%s"
-#: libbase/rc.cpp:743
+#: libbase/URLAccessManager.cpp:239
#, c-format
-msgid "Couldn't open file %s for writing"
-msgstr ""
+msgid "Load from host %s forbidden (not in the local domain)"
+msgstr "ç¦æ¢ä»ä¸»æºï¼
sè½½å
¥ï¼ä¸å¨æ¬å°åï¼"
-#: libbase/rc.cpp:752
-msgid "# Generated by Gnash. Manual changes to this file may be overridden."
-msgstr ""
+#: libbase/URLAccessManager.cpp:245
+#, c-format
+msgid "Load from host %s forbidden (not on the local host)"
+msgstr "ç¦æ¢ä»ä¸»æºï¼
sè½½å
¥ï¼ä¸å¨æ¬ä¸»æºï¼"
-#: libbase/extension.cpp:115
+#: libbase/URLAccessManager.cpp:267
#, c-format
-msgid "Loading module: %s from %s"
-msgstr ""
+msgid "Attempt to connect to disallowed port %s"
+msgstr "è¯å¾è¿æ¥å°ç¦æ¢ç«¯å£ %s"
-#: libbase/extension.cpp:128 cygnal/handler.cpp:300
+#: libbase/URLAccessManager.cpp:277
#, c-format
-msgid "Initializing module: \"%s\" from %s"
-msgstr ""
+msgid "Checking security of URL '%s'"
+msgstr "æ£æ¥é¾æ¥ '%s' çå®å
¨"
-#: libbase/extension.cpp:145
-msgid "Couldn't get class_init symbol"
-msgstr ""
+#: libbase/URLAccessManager.cpp:289
+msgid "Network connection without hostname requested"
+msgstr "æ 主æºå请æ±çç½ç»è¿æ¥"
+
+#: libbase/AMF.cpp:90
+msgid "Read past _end of buffer for string length"
+msgstr "é
读è¿å» _ç¼å²åºç»æçå符串é¿åº¦"
+
+#: libbase/AMF.cpp:97
+msgid "Read past _end of buffer for string type"
+msgstr "é
读è¿å» _ç¼å²åºç»æçå符串类å"
+
+#: libbase/AMF.cpp:138
+msgid "writePlainString called with invalid type!"
+msgstr "writePlainStringè°ç¨æ¶æ æçç±»åï¼"
+
+#: libbase/StreamProvider.cpp:84 libbase/StreamProvider.cpp:149
+msgid "Could not open file %1%: %2%"
+msgstr "ä¸è½æå¼æä»¶ %1%: %2%"
+
+#: libbase/StreamProvider.cpp:112
+msgid "Request Headers discarded while getting stream from file: uri"
+msgstr "仿件: uriè¯»åæµçæ¶å丢å¼äºè¯·æ±ç头é¨ã"
+
+#: libbase/StreamProvider.cpp:135
+msgid "POST data discarded while getting a stream from file: uri"
+msgstr "仿件: uriè¯»åæµæ¶ä¸¢å¼äºPOST请æ±çæ°æ®"
-#: libbase/extension.cpp:159
+#: libbase/GnashVaapiImage.cpp:51
#, c-format
-msgid "Initializing module: \"%s\""
-msgstr ""
+msgid "GnashVaapiImage::GnashVaapiImage(): surface 0x%08x, size %dx%d\n"
+msgstr "GnashVaapiImage::GnashVaapiImage(): è¡¨é¢ 0x%08x, å¤§å° %dx%d\n"
-#: libbase/extension.cpp:174
+#: libbase/GnashVaapiImage.cpp:57
#, c-format
-msgid "Couldn't get class_init symbol: \"%s\""
-msgstr ""
+msgid "GnashVaapiImage::~GnashVaapiImage(): surface 0x%08x\n"
+msgstr "GnashVaapiImage::GnashVaapiImage(): è¡¨é¢ 0x%08x\n"
-#: libbase/extension.cpp:202 cygnal/cgi-bin/oflaDemo/oflaDemo.cpp:313
+#: libbase/GnashVaapiImage.cpp:69
#, c-format
-msgid "Can't open directory %s"
-msgstr ""
+msgid "GnashVaapi::update(): data %p\n"
+msgstr "GnashVaapi::update(): æ°æ® %p\n"
+
+#: libbase/GnashVaapiImage.cpp:101
+msgid "GnashVaapiImage: VA surface to SW pixels are not supported\n"
+msgstr "GnashVaapiImage: 䏿¯æVA表é¢å°SWåç´ \n"
+
+#: libbase/GnashVaapiImage.cpp:112
+#, c-format
+msgid "GnashVaapiImage::data(): surface 0x%08x\n"
+msgstr "GnashVaapiImage::data(): è¡¨é¢ 0x%08x\n"
+
+#: libbase/GnashVaapiImage.cpp:113 libbase/GnashVaapiImage.cpp:129
+#, c-format
+msgid " -> %u usec from creation\n"
+msgstr " -> %u å建åçå¾®ç§æ°\n"
+
+#: libbase/GnashVaapiImage.cpp:127
+#, c-format
+msgid "GnashVaapiImage::data() const: surface 0x%08x\n"
+msgstr "GnashVaapiImage::data() const: è¡¨é¢ 0x%08x\n"
+
+#: libbase/ClockTime.cpp:223
+msgid "Cannot get requested timezone information"
+msgstr "æ æ³è·åè¦æ±çæ¶åºä¿¡æ¯"
+
+#: libbase/GnashImagePng.cpp:51
+msgid "PNG error: "
+msgstr "PNGé误:"
-#: libbase/curl_adapter.cpp:48
+#: libbase/NetworkAdapter.cpp:50
msgid ""
"libcurl is not available, but Gnash has attempted to use the curl adapter"
-msgstr ""
+msgstr "libcurlä¸å¯ç¨ï¼ä½Gnashå·²ç»å°è¯ä½¿ç¨curléé
å¨"
-#: libbase/curl_adapter.cpp:245
+#: libbase/NetworkAdapter.cpp:247
#, c-format
msgid "Failed cleaning up share handle: %s. Giving up after %d retries."
-msgstr ""
+msgstr "æ¸
çå
±äº«å¥æ%s失败ï¼éæ°å°è¯%dæ¬¡åæ¾å¼ã"
-#: libbase/curl_adapter.cpp:249
+#: libbase/NetworkAdapter.cpp:251
#, c-format
msgid "Failed cleaning up share handle: %s. Will try again in a second."
-msgstr ""
+msgstr "æ¸
çå
±äº«å¥æ%s失败ï¼å°å¾å¿«è¿è¡éè¯ã"
-#: libbase/curl_adapter.cpp:339
+#: libbase/NetworkAdapter.cpp:341
msgid "lockSharedHandle: SSL session locking unsupported"
-msgstr ""
+msgstr "lockSharedHandle: 䏿¯æSSLä¼è¯é"
-#: libbase/curl_adapter.cpp:342
+#: libbase/NetworkAdapter.cpp:344
msgid "lockSharedHandle: connect locking unsupported"
-msgstr ""
+msgstr "lockSharedHandle: 䏿¯æè¿æ¥é"
-#: libbase/curl_adapter.cpp:345
+#: libbase/NetworkAdapter.cpp:347
msgid "lockSharedHandle: last locking unsupported ?!"
-msgstr ""
+msgstr "lockSharedHandle: 䏿¯æä¸æ¬¡é ?!"
-#: libbase/curl_adapter.cpp:348
+#: libbase/NetworkAdapter.cpp:350
#, c-format
msgid "lockSharedHandle: unknown shared data %d"
-msgstr ""
+msgstr "lockSharedHandle: æªç¥çå
±äº«æ°æ® %d"
-#: libbase/curl_adapter.cpp:374
+#: libbase/NetworkAdapter.cpp:376
msgid "unlockSharedHandle: SSL session locking unsupported"
-msgstr ""
+msgstr "unlockSharedHandle: 䏿¯æSSLä¼è¯é"
-#: libbase/curl_adapter.cpp:377
+#: libbase/NetworkAdapter.cpp:379
msgid "unlockSharedHandle: connect locking unsupported"
-msgstr ""
+msgstr "unlockSharedHandle: 䏿¯æè¿æ¥é"
-#: libbase/curl_adapter.cpp:380
+#: libbase/NetworkAdapter.cpp:382
msgid "unlockSharedHandle: last locking unsupported ?!"
-msgstr ""
+msgstr "unlockSharedHandle: 䏿¯æä¸æ¬¡é ?!"
-#: libbase/curl_adapter.cpp:383
+#: libbase/NetworkAdapter.cpp:385
#, c-format
msgid "unlockSharedHandle: unknown shared data %d"
-msgstr ""
+msgstr "unlockSharedHandle: æªç¥çå
±äº«æ°æ® %d"
-#: libbase/curl_adapter.cpp:672
+#: libbase/NetworkAdapter.cpp:674
#, c-format
msgid "FIXME: Timeout (%u milliseconds) while loading from URL %s"
-msgstr ""
+msgstr "ä¿®æ¹è¿éï¼è½½å
¥è¶
æ¶(%u milliseconds)ï¼é¾æ¥å°å %s"
-#: libbase/curl_adapter.cpp:720
+#: libbase/NetworkAdapter.cpp:722
#, c-format
msgid "Timeout (%u milliseconds) while loading from URL %s"
-msgstr ""
+msgstr "è½½å
¥è¶
æ¶(%u milliseconds)ï¼é¾æ¥å°å %s"
-#: libbase/curl_adapter.cpp:763
+#: libbase/NetworkAdapter.cpp:765
#, c-format
msgid "HTTP response %ld from URL %s"
-msgstr ""
+msgstr "HTTPååº %ld, 龿¥å°å URL %s"
-#: libbase/curl_adapter.cpp:774
+#: libbase/NetworkAdapter.cpp:776
#, c-format
msgid "CURL: %s"
-msgstr ""
+msgstr "CURL: %s"
-#: libbase/curl_adapter.cpp:807
+#: libbase/NetworkAdapter.cpp:809
msgid ""
"Could not open specified path as cache file. Using a temporary file instead"
-msgstr ""
+msgstr "æ æ³æå¼æå®çç¼åæä»¶è·¯å¾ã使ç¨ä¸´æ¶æä»¶ä»£æ¿"
-#: libbase/curl_adapter.cpp:815
+#: libbase/NetworkAdapter.cpp:817
msgid "Could not create temporary cache file"
-msgstr ""
+msgstr "æ æ³å建临æ¶ç¼åæä»¶"
-#: libbase/curl_adapter.cpp:825
+#: libbase/NetworkAdapter.cpp:827
msgid "Allowing connections to SSL sites with invalid certificates"
-msgstr ""
+msgstr "å
è®¸è¿æ¥å°æ æçSSLè¯ä¹¦çç½ç«"
-#: libbase/curl_adapter.cpp:1091
+#: libbase/NetworkAdapter.cpp:1093
+#, fuzzy
msgid ""
-"curl adaptor's fillCacheNonBlocking set _error rather then throwing an "
-"exception"
-msgstr ""
+"curl adaptor's fillCacheNonBlocking method sets an error condition rather "
+"than throwing an exception"
+msgstr "curl adaptor's fillCacheNonBlocking 设置 _errorï¼è䏿¯æåºä¸ä¸ªå¼å¸¸"
-#: libbase/curl_adapter.cpp:1156
+#: libbase/NetworkAdapter.cpp:1158
#, c-format
msgid "Warning: could not cache enough bytes on seek: %d requested, %d cached"
-msgstr ""
+msgstr "è¦åï¼ä¸è½ç¼åå®ä½è¶³å¤çåèï¼è¯·æ±%dï¼ç¼å%d"
-#: libbase/curl_adapter.cpp:1162
+#: libbase/NetworkAdapter.cpp:1164
msgid "Warning: fseek failed"
-msgstr ""
+msgstr "è¦åï¼ fseek 失败"
-#: libbase/curl_adapter.cpp:1342 libbase/curl_adapter.cpp:1361
-#: libbase/curl_adapter.cpp:1377
+#: libbase/NetworkAdapter.cpp:1353 libbase/NetworkAdapter.cpp:1372
+#: libbase/NetworkAdapter.cpp:1388
#, c-format
msgid "curl stream: %s"
-msgstr ""
-
-#: libbase/ClockTime.cpp:223
-msgid "Cannot get requested timezone information"
-msgstr ""
+msgstr "curl æµ: %s"
-#: libbase/SharedMem.cpp:68
-#, c-format
-msgid "Error detaching shared memory: %s"
-msgstr ""
-
-#: libbase/SharedMem.cpp:75
+#: libbase/noseek_fd_adapter.cpp:223
#, c-format
-msgid "Error during stat of shared memory segment: %s"
-msgstr ""
-
-#: libbase/SharedMem.cpp:83
-msgid "No shared memory users left. Removing segment and semaphore."
-msgstr ""
-
-#: libbase/SharedMem.cpp:150
-msgid "Failed to get semaphore for shared memory!"
-msgstr ""
+msgid "Error reading %d bytes from input stream"
+msgstr "ä»è¾å
¥æµä¸è¯»å
¥%d个åèæ¶åºé"
-#: libbase/SharedMem.cpp:157
-msgid "Failed to set semaphore value"
-msgstr ""
+#: libbase/GnashImageGif.cpp:175
+msgid "GIF: Error retrieving image description"
+msgstr "GIFï¼è·åå¾åæè¿°åºé"
-#: libbase/SharedMem.cpp:167
-msgid "Need semaphore value of 1 for locking. Cannot attach shared memory!"
-msgstr ""
+#: libbase/GnashImageGif.cpp:204
+msgid "GIF: invalid image data (bounds outside GIF screen)"
+msgstr "GIFï¼æ æçå¾åæ°æ®ï¼è¶
åºGIFå±å¹è¾¹çï¼"
-#: libbase/SharedMem.cpp:182
-msgid "Unable to get shared memory segment!"
-msgstr ""
+#: libbase/GnashImageGif.cpp:226 libbase/GnashImageGif.cpp:244
+msgid "GIF: failed reading pixel data"
+msgstr "GIFï¼æ æ³è¯»ååç´ æ°æ®"
-#: libbase/SharedMem.cpp:189
-#, c-format
-msgid "Unable to attach shared memory: %s"
-msgstr ""
+#: libbase/GnashImageGif.cpp:293
+msgid "GIF: Error retrieving record type"
+msgstr "GIFï¼è·åè®°å½ç±»ååºé"
-#: libbase/GnashImage.cpp:179
+#: libbase/GnashImage.cpp:198
msgid "Requested to write image as unsupported filetype"
-msgstr ""
+msgstr "请æ±åå
¥çå¾åæ¯ä¸æ¯æçæ ¼å¼"
-#: libbase/GnashImage.cpp:235
+#: libbase/GnashImage.cpp:254
msgid "Invalid image returned"
-msgstr ""
+msgstr "è¿åæ æçå¾ç"
-#: libbase/GnashImage.cpp:243
+#: libbase/GnashImage.cpp:262
#, c-format
msgid "Out of memory while trying to create %dx%d image"
-msgstr ""
+msgstr "è¯å¾å建 %dx%d å¾åæ¶å
åä¸è¶³"
-#: libbase/GnashImageGif.cpp:175
-msgid "GIF: Error retrieving image description"
-msgstr ""
-
-#: libbase/GnashImageGif.cpp:204
-msgid "GIF: invalid image data (bounds outside GIF screen)"
-msgstr ""
-
-#: libbase/GnashImageGif.cpp:226 libbase/GnashImageGif.cpp:244
-msgid "GIF: failed reading pixel data"
-msgstr ""
-
-#: libbase/GnashImageGif.cpp:283
-msgid "GIF: Error retrieving record type"
-msgstr ""
-
-#: libbase/memory.cpp:94
-#, c-format
-msgid "Allocating buffer for %d data samples"
-msgstr ""
-
-#: libbase/memory.cpp:301
-msgid "Calculations don't equal"
-msgstr ""
-
-#: libbase/memory.cpp:303
-msgid "Zero memory leaks for this program"
-msgstr ""
-
-#: libbase/GnashVaapiImage.cpp:51
-#, c-format
-msgid "GnashVaapiImage::GnashVaapiImage(): surface 0x%08x, size %dx%d\n"
-msgstr ""
-
-#: libbase/GnashVaapiImage.cpp:57
-#, c-format
-msgid "GnashVaapiImage::~GnashVaapiImage(): surface 0x%08x\n"
-msgstr ""
+#: libbase/Socket.cpp:106
+msgid "XMLSocket: The socket was never available"
+msgstr "XMLSocket: 奿¥åä¸ç´ä¸å¯ç¨"
-#: libbase/GnashVaapiImage.cpp:69
+#: libbase/Socket.cpp:138
#, c-format
-msgid "GnashVaapi::update(): data %p\n"
-msgstr ""
-
-#: libbase/GnashVaapiImage.cpp:101
-msgid "GnashVaapiImage: VA surface to SW pixels are not supported\n"
+msgid "getaddrinfo() failed with code: #%d - %s"
msgstr ""
-#: libbase/GnashVaapiImage.cpp:112
-#, c-format
-msgid "GnashVaapiImage::data(): surface 0x%08x\n"
-msgstr ""
+#: libbase/Socket.cpp:154
+msgid "Connection attempt while already connected"
+msgstr "å·²ç»è¿æ¥å¥½ä¹åè¿å¨åè¿æ¥å°è¯"
-#: libbase/GnashVaapiImage.cpp:113 libbase/GnashVaapiImage.cpp:129
-#, c-format
-msgid " -> %u usec from creation\n"
-msgstr ""
+#: libbase/Socket.cpp:182
+#, fuzzy
+msgid "getnameinfo() failed: %1%"
+msgstr "gethostname 失败ï¼%s"
-#: libbase/GnashVaapiImage.cpp:127
+#: libbase/Socket.cpp:196 cygnal/libnet/network.cpp:623
#, c-format
-msgid "GnashVaapiImage::data() const: surface 0x%08x\n"
-msgstr ""
+msgid "Socket creation failed: %s"
+msgstr "åå»ºå¥æ¥ååºé: %s"
-#: libbase/sharedlib.cpp:69
-#, c-format
-msgid "Couldn't initialize ltdl: %s"
-msgstr ""
+#: libbase/Socket.cpp:206
+#, fuzzy
+msgid "Socket creation attempt(s) failed: giving up."
+msgstr "åå»ºå¥æ¥ååºé: %s"
-#: libbase/sharedlib.cpp:98
-#, c-format
-msgid "Trying to open shared library \"%s\""
-msgstr ""
+#: libbase/Socket.cpp:222
+#, fuzzy, c-format
+msgid "Failed to connect to socket: %s"
+msgstr "è¿æ¥å¥æ¥å失败: %s"
-#: libbase/sharedlib.cpp:112
-#, c-format
-msgid "Opened dynamic library \"%s\""
-msgstr ""
+#: libbase/Socket.cpp:238
+msgid "Setting socket timeout failed"
+msgstr "è®¾ç½®å¥æ¥åè¶
æ¶å¤±è´¥"
-#: libbase/sharedlib.cpp:131
+#: libbase/Socket.cpp:281
#, c-format
-msgid "Couldn't find symbol: %s"
-msgstr ""
+msgid "Socket receive error %s"
+msgstr "奿¥åæ¥æ¶é误 %s"
-#: libbase/sharedlib.cpp:134
+#: libbase/Socket.cpp:382
#, c-format
-msgid "Found symbol %s @ %p"
-msgstr ""
-
-#: libbase/GnashImageJpeg.cpp:116
-msgid "JPEG: Empty jpeg source stream."
-msgstr ""
-
-#: libbase/GnashImageJpeg.cpp:263 libbase/GnashImageJpeg.cpp:290
-#: libbase/GnashImageJpeg.cpp:308 libbase/GnashImageJpeg.cpp:364
-msgid "Internal jpeg error: "
-msgstr ""
+msgid "Socket send error %s"
+msgstr "奿¥ååéé误 %s"
-#: libbase/GnashImageJpeg.cpp:274
-msgid "Lack of data during JPEG header parsing"
-msgstr ""
+#: libbase/Socket.cpp:397
+msgid "tell() called for Socket"
+msgstr "tell()彿°è¦æ±å¥æ¥å"
-#: libbase/GnashImageJpeg.cpp:284
-#, c-format
-msgid "unexpected: jpeg_read_header returned %d"
-msgstr ""
+#: libbase/Socket.cpp:404
+msgid "seek() called for Socket"
+msgstr "seek()彿°è¦æ±å¥æ¥å"
-#: libbase/GnashImageJpeg.cpp:320
-msgid "lack of data during JPEG header parsing"
-msgstr ""
+#: libbase/Socket.cpp:411
+msgid "go_to_end() called for Socket"
+msgstr "go_to_end()彿°è¦æ±å¥æ¥å"
-#: libbase/GnashImageJpeg.cpp:330
+#: libbase/memory.cpp:94
#, c-format
-msgid "unexpected: jpeg_read_header returned %d [%s:%d]"
-msgstr ""
-
-#: libbase/GnashImageJpeg.cpp:338
-msgid "Internal jpeg error during header parsing: "
-msgstr ""
+msgid "Allocating buffer for %d data samples"
+msgstr "为 %d æ°æ®æ ·æ¬åé
ç¼å²åº"
-#: libbase/GnashImageJpeg.cpp:346
-msgid "Internal jpeg error during decompression: "
-msgstr ""
+#: libbase/memory.cpp:301
+msgid "Calculations don't equal"
+msgstr "计ç®ä¸ç¸ç"
-#: libbase/GnashImageJpeg.cpp:521
-msgid "rw_dest_IOChannel couldn't write data."
-msgstr ""
+#: libbase/memory.cpp:303
+msgid "Zero memory leaks for this program"
+msgstr "该ç¨åºæ²¡æå
åæ³é²"
-#: libbase/GnashImageJpeg.cpp:546
-msgid "rw_dest_IOChannel::term_destination couldn't write data."
-msgstr ""
+#: libbase/tu_file.cpp:193
+msgid "Error while seeking to end: %1%"
+msgstr "å®ä½æ«å°¾æ¶åºé: %1%"
-#: libbase/AMF.cpp:90
-msgid "Read past _end of buffer for string length"
-msgstr ""
+#: libbase/tu_file.cpp:229
+msgid "Could not fstat file"
+msgstr "æ æ³å¯¹æä»¶è°ç¨fstat彿°è¿åå
¶ä¿¡æ¯"
-#: libbase/AMF.cpp:97
-msgid "Read past _end of buffer for string type"
-msgstr ""
+#: libbase/rc.cpp:170 libbase/rc.cpp:701
+msgid "Failed to find user settings directory"
+msgstr "æ æ³æ¾å°ç¨æ·è®¾ç½®ç®å½"
-#: libbase/AMF.cpp:138
-msgid "writePlainString called with invalid type!"
-msgstr ""
+#: libbase/rc.cpp:381
+msgid "RcInitFile: couldn't open file: "
+msgstr "RcInitFile: æ æ³æå¼æä»¶:"
-#: libbase/URLAccessManager.cpp:90
+#: libbase/rc.cpp:421
#, c-format
-msgid "Load from host %s granted (whitelisted)"
-msgstr ""
+msgid "Warning: missing value for variable \"%s\" in rcfile %s, line %d"
+msgstr "è¦åï¼å¨rcfile %s第%dè¡ä¸ï¼åé\"%s\"缺å°å¼"
-#: libbase/URLAccessManager.cpp:96
+#: libbase/rc.cpp:624
#, c-format
-msgid "Load from host %s forbidden (not in non-empty whitelist)"
-msgstr ""
+msgid "Warning: unrecognized directive \"%s\" in rcfile %s line %d"
+msgstr "è¦åï¼å¨rcfile %s第%dè¡ä¸ææ æ³è¯å«çæä»¤"
-#: libbase/URLAccessManager.cpp:110
+#: libbase/rc.cpp:636
#, c-format
-msgid "Load from host %s forbidden (blacklisted)"
-msgstr ""
+msgid "Warning: empty include specification in rcfile %s, line %d"
+msgstr "è¦åï¼å¨rcfile %s第%dè¡ä¸è§æ ¼å
å«ç©ºç½"
-#: libbase/URLAccessManager.cpp:115
+#: libbase/rc.cpp:641
#, c-format
-msgid "Load from host %s granted (default)"
-msgstr ""
+msgid ""
+"Warning: include specification must be an absolute path in rcfile %s, line %d"
+msgstr "è¦åï¼å¨rcfile %s第%dè¡çincludeå¿
须使ç¨ç»å¯¹è·¯å¾"
-#: libbase/URLAccessManager.cpp:147
+#: libbase/rc.cpp:650
#, c-format
-msgid "Load of file %s forbidden (starting URL %s is not a local resource)"
-msgstr ""
+msgid "Warning: unrecognized action \"%s\" in rcfile %s, line %d"
+msgstr "è¦åï¼å¨rcfile %s第%dè¡ä¸ææ æ³è¯å«çå¨ä½ \"%s\""
-#: libbase/URLAccessManager.cpp:164
+#: libbase/rc.cpp:742
#, c-format
-msgid "Load of file %s granted (under local sandbox %s)"
-msgstr ""
+msgid "Couldn't open file %s for writing"
+msgstr "æ æ³æå¼%sæä»¶è¿è¡åå
¥"
-#: libbase/URLAccessManager.cpp:172
-#, c-format
-msgid "Load of file %s forbidden (not under local sandboxes)"
-msgstr ""
+#: libbase/rc.cpp:751
+msgid "# Generated by Gnash. Manual changes to this file may be overridden."
+msgstr "# Gnashçæã该æä»¶æåçæ´æ¹å¯è½ä¼è¢«è¦çã"
-#: libbase/URLAccessManager.cpp:212
+#: libbase/sharedlib.cpp:69
#, c-format
-msgid "gethostname failed: %s"
-msgstr ""
+msgid "Couldn't initialize ltdl: %s"
+msgstr "ä¸è½åå§å ltdl: %s"
-#: libbase/URLAccessManager.cpp:234
+#: libbase/sharedlib.cpp:98
#, c-format
-msgid "Load from host %s forbidden (not in the local domain)"
-msgstr ""
+msgid "Trying to open shared library \"%s\""
+msgstr "è¯å¾æå¼å
±äº«åº \"%s\""
-#: libbase/URLAccessManager.cpp:240
+#: libbase/sharedlib.cpp:112
#, c-format
-msgid "Load from host %s forbidden (not on the local host)"
-msgstr ""
+msgid "Opened dynamic library \"%s\""
+msgstr "å·²æå¼å¨æåº \"%s\""
-#: libbase/URLAccessManager.cpp:262
+#: libbase/sharedlib.cpp:131
#, c-format
-msgid "Attempt to connect to disallowed port %s"
-msgstr ""
+msgid "Couldn't find symbol: %s"
+msgstr "æ¾ä¸å°ç¬¦å·ï¼%s"
-#: libbase/URLAccessManager.cpp:272
+#: libbase/sharedlib.cpp:134
#, c-format
-msgid "Checking security of URL '%s'"
-msgstr ""
-
-#: libbase/URLAccessManager.cpp:284
-msgid "Network connection without hostname requested"
-msgstr ""
-
-#: librender/opengl/Renderer_ogl.cpp:234
-msgid "OSMesaCreateContext failed!"
-msgstr ""
+msgid "Found symbol %s @ %p"
+msgstr "å·²æ¾ä¸å°ç¬¦å· %s @ %p"
-#: librender/opengl/Renderer_ogl.cpp:240
-msgid "OSMesaMakeCurrent failed!"
-msgstr ""
+#: librender/agg/Renderer_agg.cpp:799
+msgid "Can't render this type of frame"
+msgstr "æ æ³æ¸²æè¯¥å¸§ç±»å"
-#: librender/opengl/Renderer_ogl.cpp:247
-#, c-format
-msgid "OSMesa handle successfully created. with width %d and height %d."
-msgstr ""
+#: librender/agg/Renderer_agg.cpp:1730
+msgid ""
+"Unidirectionally scaled strokes in AGG renderer (we'll scale by the scalable "
+"one)"
+msgstr "AGG渲æå¨çååå»åº¦çº¿ï¼æä»¬å°ææ¯ä¾ä¸º1è¿è¡ç¼©æ¾ï¼"
-#: librender/opengl/Renderer_ogl.cpp:344
+#: librender/agg/Renderer_agg.cpp:2117
#, c-format
-msgid "OpenGL: %s"
-msgstr ""
+msgid "Unknown pixelformat: %s\n"
+msgstr "æªç¥çåç´ æ ¼å¼ï¼%s\n"
-#: librender/opengl/Renderer_ogl.cpp:517
-#, c-format
-msgid "GLU: %s"
-msgstr ""
+#: librender/opengles1/Renderer_gles1.cpp:95
+msgid "Couldn't initialize EGL Device!"
+msgstr "æ æ³åå§åEGL设å¤ï¼"
-#: librender/opengl/Renderer_ogl.cpp:868
-msgid ""
-"An insane number of video frames have been requested to be drawn. Further "
-"video frames will be ignored."
-msgstr ""
+#: librender/opengles1/Renderer_gles1.cpp:124
+#: librender/openvg/OpenVGRenderer.cpp:319
+msgid "drawVideoFrame"
+msgstr "drawVideoFrame"
-#: librender/opengl/Renderer_ogl.cpp:1142
-#: librender/openvg/OpenVGRenderer.cpp:569
#: librender/opengles1/Renderer_gles1.cpp:230
+#: librender/openvg/OpenVGRenderer.cpp:569
+#: librender/opengl/Renderer_ogl.cpp:1142
msgid "set_antialiased"
-msgstr ""
-
-#: librender/opengl/Renderer_ogl.cpp:1436
-#: librender/openvg/OpenVGRenderer.cpp:864
-msgid "Unidirectionally scaled strokes in OGL renderer"
-msgstr ""
-
-#: librender/opengl/Renderer_ogl.cpp:1450
-msgid ""
-"Your OpenGL implementation does not support the line width requested. Lines "
-"will be drawn with reduced width."
-msgstr ""
-
-#: librender/opengl/Renderer_ogl.cpp:1927
-#, c-format
-msgid "two gradients in a FillStyle have the same position/ratio: %d"
-msgstr ""
+msgstr "set_antialiased"
#: librender/openvg/OpenVGBitmap.cpp:82 librender/openvg/OpenVGBitmap.cpp:285
#, c-format
msgid "Failed to create VG image! %s"
-msgstr ""
+msgstr "æ æ³å建 VG å¾åï¼%s"
#: librender/openvg/OpenVGBitmap.cpp:88 librender/openvg/OpenVGBitmap.cpp:291
#, c-format
msgid "Image has RGB Pixel Format, Stride is %d, width is %d, height is %d"
-msgstr ""
+msgstr "å¾å使ç¨RGBæ ¼å¼ï¼è·¨è·æ¯ %d, 宽度 %d, é«åº¦æ¯ %d"
#: librender/openvg/OpenVGBitmap.cpp:94 librender/openvg/OpenVGBitmap.cpp:297
#, c-format
msgid "Image has RGBA Pixel Format, Stride is %d, width is %d, height is %d"
-msgstr ""
+msgstr "å¾å使ç¨RGBAæ ¼å¼ï¼è·¨è·æ¯ %d, 宽度 %d, é«åº¦æ¯ %d"
#: librender/openvg/OpenVGBitmap.cpp:349
msgid "No supported wrap mode specified!"
-msgstr ""
+msgstr "䏿¯ææå®çæ¢è¡æ¨¡å¼ï¼"
#: librender/openvg/OpenVGRenderer.cpp:275
#, c-format
msgid "VG Vendor is %s, VG Version is %s, VG Renderer is %s"
-msgstr ""
+msgstr "VGå忝%sï¼VGçæ¬æ¯%sï¼VGçæ¸²æå¨æ¯%s"
#: librender/openvg/OpenVGRenderer.cpp:278
msgid "VG Extensions are: "
-msgstr ""
-
-#: librender/openvg/OpenVGRenderer.cpp:319
-#: librender/opengles1/Renderer_gles1.cpp:124
-msgid "drawVideoFrame"
-msgstr ""
+msgstr "VG æ©å±æ¯:"
#: librender/openvg/OpenVGRenderer.cpp:836
-#: librender/cairo/Renderer_cairo.cpp:864
+#: librender/cairo/Renderer_cairo.cpp:865
msgid "join style"
-msgstr ""
+msgstr "è¿æ¥æ ·å¼"
#: librender/openvg/OpenVGRenderer.cpp:850
-#: librender/cairo/Renderer_cairo.cpp:883
+#: librender/cairo/Renderer_cairo.cpp:884
msgid "cap style"
-msgstr ""
+msgstr "ç«¯ç¹æ ·å¼"
+
+#: librender/openvg/OpenVGRenderer.cpp:864
+#: librender/opengl/Renderer_ogl.cpp:1436
+msgid "Unidirectionally scaled strokes in OGL renderer"
+msgstr "OGL渲æå¨åå缩æ¾ç»ç¬"
#: librender/openvg/OpenVGRenderer.cpp:1299
msgid "unsupported VG_MATRIX_MODE!"
-msgstr ""
+msgstr "䏿¯æç VG_MATRIX_MODEï¼"
#: librender/openvg/OpenVGRenderer.cpp:1301
#, c-format
msgid "VG_MATRIX_MODE is %s"
-msgstr ""
+msgstr "VG_MATRIX_MODE æ¯ %s"
#: librender/openvg/OpenVGRenderer.cpp:1312
msgid "unsupported VG_FILL_RULE!"
-msgstr ""
+msgstr "䏿¯æç VG_FILL_RULEï¼"
#: librender/openvg/OpenVGRenderer.cpp:1314
#, c-format
msgid "VG_FILL_RULE is %s"
-msgstr ""
+msgstr "VG_FILL_RULE æ¯ %s"
#: librender/openvg/OpenVGRenderer.cpp:1333
msgid "unsupported VG_IMAGE_QUALITY!"
-msgstr ""
+msgstr "䏿¯æç VG_IMAGE_QUALITYï¼"
#: librender/openvg/OpenVGRenderer.cpp:1335
#, c-format
msgid "VG_IMAGE_QUALITY is %s"
-msgstr ""
+msgstr "VG_IMAGE_QUALITY æ¯ %s"
#: librender/openvg/OpenVGRenderer.cpp:1354
msgid "unsupported VG_RENDERING_QUALITY!"
-msgstr ""
+msgstr "䏿¯æç VG_RENDERING_QUALITYï¼"
#: librender/openvg/OpenVGRenderer.cpp:1356
#, c-format
msgid "VG_RENDERING_QUALITY is %s"
-msgstr ""
+msgstr "VG_RENDERING_QUALITY æ¯ %s"
#: librender/openvg/OpenVGRenderer.cpp:1391
msgid "unsupported VG_BLEND_MODE!"
-msgstr ""
+msgstr "䏿¯æç VG_BLEND_MODEï¼"
#: librender/openvg/OpenVGRenderer.cpp:1393
#, c-format
msgid "VG_BLEND_MODE is %s"
-msgstr ""
+msgstr "VG_BLEND_MODE æ¯ %s"
#: librender/openvg/OpenVGRenderer.cpp:1412
msgid "unsupported VG_IMAGE_MODE!"
-msgstr ""
+msgstr "䏿¯æç VG_IMAGE_MODEï¼"
#: librender/openvg/OpenVGRenderer.cpp:1414
#, c-format
msgid "VG_IMAGE_MODE is %s"
-msgstr ""
+msgstr "VG_IMAGE_MODE æ¯ %s"
#: librender/openvg/OpenVGRenderer.cpp:1417
#, c-format
msgid "VG_STROKE_LINE_WIDTH is %d"
-msgstr ""
+msgstr "VG_STROKE_LINE_WIDTH æ¯ %d"
#: librender/openvg/OpenVGRenderer.cpp:1436
msgid "unsupported VG_STROKE_CAP_STYLE!"
-msgstr ""
+msgstr "䏿¯æç VG_STROKE_CAP_STYLEï¼"
#: librender/openvg/OpenVGRenderer.cpp:1438
#, c-format
msgid "VG_STROKE_CAP_STYLE is %s"
-msgstr ""
+msgstr "VG_STROKE_CAP_STYLE æ¯ %s"
#: librender/openvg/OpenVGRenderer.cpp:1457
msgid "unsupported VG_STROKE_JOIN_STYLE!"
-msgstr ""
+msgstr "䏿¯æç VG_STROKE_JOIN_STYLEï¼"
#: librender/openvg/OpenVGRenderer.cpp:1459
#, c-format
msgid "VG_STROKE_JOIN_STYLE is %s"
-msgstr ""
+msgstr "VG_STROKE_JOIN_STYLE æ¯ %s"
#: librender/openvg/OpenVGRenderer.cpp:1462
#, c-format
msgid "VG_STROKE_MITER_LIMIT is %d"
-msgstr ""
+msgstr "VG_STROKE_MITER_LIMIT æ¯ %d"
#: librender/openvg/OpenVGRenderer.cpp:1463
#, c-format
msgid "VG_MASKING is %d"
-msgstr ""
+msgstr "VG_MASKING æ¯ %d"
#: librender/openvg/OpenVGRenderer.cpp:1464
#, c-format
msgid "VG_SCISSORING is %d"
-msgstr ""
+msgstr "VG_SCISSORING æ¯ %d"
#: librender/openvg/OpenVGRenderer.cpp:1489
msgid "unsupported VG_PIXEL_LAYOUT!"
-msgstr ""
+msgstr "䏿¯æç VG_PIXEL_LAYOUTï¼"
#: librender/openvg/OpenVGRenderer.cpp:1491
#, c-format
msgid "VG_PIXEL_LAYOUT is %s"
-msgstr ""
+msgstr "VG_PIXEL_LAYOUT æ¯ %s"
#: librender/openvg/OpenVGRenderer.cpp:1493
#, c-format
msgid "VG_STROKE_DASH_PHASE_RESET is %s"
-msgstr ""
+msgstr "VG_STROKE_DASH_PHASE_RESET æ¯ %s"
#: librender/openvg/OpenVGRenderer.cpp:1495
#, c-format
msgid "VG_FILTER_FORMAT_LINEAR is %s"
-msgstr ""
+msgstr "VG_FILTER_FORMAT_LINEAR æ¯ %s"
#: librender/openvg/OpenVGRenderer.cpp:1497
#, c-format
msgid "VG_FILTER_FORMAT_PREMULTIPLIED is %s"
-msgstr ""
+msgstr "VG_FILTER_FORMAT_PREMULTIPLIED æ¯ %s"
#: librender/openvg/OpenVGRenderer.cpp:1514
#, c-format
msgid "VG_FILTER_CHANNEL_MASK is %s"
-msgstr ""
+msgstr "VG_FILTER_CHANNEL_MASK æ¯ %s"
#: librender/openvg/OpenVGRenderer.cpp:1516
#, c-format
msgid "VG_MAX_IMAGE_WIDTH is %d"
-msgstr ""
+msgstr "VG_MAX_IMAGE_WIDTH æ¯ %d"
#: librender/openvg/OpenVGRenderer.cpp:1517
#, c-format
msgid "VG_MAX_IMAGE_HEIGHT is %d"
-msgstr ""
+msgstr "VG_MAX_IMAGE_HEIGHT æ¯ %d"
#: librender/openvg/OpenVGRenderer.cpp:1518
#, c-format
msgid "VG_MAX_IMAGE_PIXELS is %d"
-msgstr ""
+msgstr "VG_MAX_IMAGE_PIXELS æ¯ %d"
#: librender/openvg/OpenVGRenderer.cpp:1519
#, c-format
msgid "VG_MAX_IMAGE_BYTES is %d"
-msgstr ""
+msgstr "VG_MAX_IMAGE_BYTES æ¯ %d"
#: librender/openvg/OpenVGRenderer.cpp:1526
#, c-format
msgid "VG_PATH_FORMAT is %d"
-msgstr ""
+msgstr "VG_PATH_FORMAT æ¯ %d"
#: librender/openvg/OpenVGRenderer.cpp:1527
#, c-format
msgid "VG_PATH_DATATYPE is %d"
-msgstr ""
+msgstr "VG_PATH_DATATYPE æ¯ %d"
#: librender/openvg/OpenVGRenderer.cpp:1528
#, c-format
msgid "VG_PATH_CAPABILITY_APPEND_TO is %d"
-msgstr ""
+msgstr "VG_PATH_CAPABILITY_APPEND_TO æ¯ %d"
#: librender/openvg/OpenVGRenderer.cpp:1529
#, c-format
msgid "VG_PATH_SCALE is %g"
-msgstr ""
+msgstr "VG_PATH_SCALE æ¯ %g"
#: librender/openvg/OpenVGRenderer.cpp:1530
#, c-format
msgid "VG_PATH_BIA is %g"
-msgstr ""
+msgstr "VG_PATH_BIA æ¯ %g"
#: librender/openvg/OpenVGRenderer.cpp:1532
#, c-format
msgid "VG_PATH_NUM_SEGMENTS is %d"
-msgstr ""
+msgstr "VG_PATH_NUM_SEGMENTS æ¯ %d"
#: librender/openvg/OpenVGRenderer.cpp:1533
#, c-format
msgid "VG_PATH_NUM_COORDS is %d"
-msgstr ""
-
-#: librender/opengles1/Renderer_gles1.cpp:95
-msgid "Couldn't initialize EGL Device!"
-msgstr ""
+msgstr "VG_PATH_NUM_COORDS æ¯ %d"
-#: librender/cairo/Renderer_cairo.cpp:498
+#: librender/cairo/Renderer_cairo.cpp:499
msgid "Can't render videos with alpha"
-msgstr ""
+msgstr "æ æ³æ¸²æåºå¸¦alphaééçè§é¢"
-#: librender/cairo/Renderer_cairo.cpp:869
+#: librender/cairo/Renderer_cairo.cpp:870
msgid "differing start and end cap styles"
-msgstr ""
+msgstr "åºåèµ·ç¹åç»ç¹çæ ·å¼"
-#: librender/cairo/Renderer_cairo.cpp:911
+#: librender/cairo/Renderer_cairo.cpp:912
msgid "Scaled strokes in Cairo renderer"
-msgstr ""
+msgstr "Cairo渲æå¨çå»åº¦çº¿"
#: librender/cairo/PathParser.cpp:90
msgid "path not closed!"
-msgstr ""
+msgstr "è·¯å¾ä¸å°éï¼"
-#: librender/agg/Renderer_agg.cpp:794
-msgid "Can't render this type of frame"
-msgstr ""
+#: librender/testr.cpp:190
+msgid "Couldn't get Drawable window from X11"
+msgstr "æ æ³ä»X11è·åå¯ç»çªå£"
-#: librender/agg/Renderer_agg.cpp:1764
-msgid ""
-"Unidirectionally scaled strokes in AGG renderer (we'll scale by the scalable "
-"one)"
-msgstr ""
+#: librender/opengl/Renderer_ogl.cpp:234
+msgid "OSMesaCreateContext failed!"
+msgstr "OSMesaCreateContext 失败ï¼"
+
+#: librender/opengl/Renderer_ogl.cpp:240
+msgid "OSMesaMakeCurrent failed!"
+msgstr "OSMesaMakeCurrent 失败ï¼"
-#: librender/agg/Renderer_agg.cpp:2151
+#: librender/opengl/Renderer_ogl.cpp:247
#, c-format
-msgid "Unknown pixelformat: %s\n"
-msgstr ""
+msgid "OSMesa handle successfully created. with width %d and height %d."
+msgstr "OSMesa 奿å建æåãå®½åº¦æ¯ %dï¼é«åº¦æ¯ %dã"
-#: librender/testr.cpp:190
-msgid "Couldn't get Drawable window from X11"
-msgstr ""
+#: librender/opengl/Renderer_ogl.cpp:344
+#, c-format
+msgid "OpenGL: %s"
+msgstr "OpenGL: %s"
+
+#: librender/opengl/Renderer_ogl.cpp:517
+#, c-format
+msgid "GLU: %s"
+msgstr "GLU: %s"
+
+#: librender/opengl/Renderer_ogl.cpp:868
+msgid ""
+"An insane number of video frames have been requested to be drawn. Further "
+"video frames will be ignored."
+msgstr "已请æ±ç»å¶å¤§éçè§é¢ã以åçè§é¢å¸§å°è¢«å¿½ç¥ã"
+
+#: librender/opengl/Renderer_ogl.cpp:1450
+msgid ""
+"Your OpenGL implementation does not support the line width requested. Lines "
+"will be drawn with reduced width."
+msgstr "ä½ çOpenGLçå®ç°ä¸æ¯æè¯·æ±ç线宽ã线æ¡å°ç¨åå°ç宽度æ¥ç»å¶ã"
+
+#: librender/opengl/Renderer_ogl.cpp:1895
+#, c-format
+msgid "two gradients in a FillStyle have the same position/ratio: %d"
+msgstr "å¡«å
æ ·å¼ä¸ä¸¤ç§æ¢¯åº¦ä½¿ç¨åæ ·çä½ç½®/æ¯ä¾ï¼%d"
#: librender/GnashTexture.cpp:70
#, c-format
msgid "glError: %s caught\n"
-msgstr ""
+msgstr "glError: åç° %s \n"
-#: libmedia/MediaParser.cpp:83
-msgid "No ID3 support implemented in this MediaParser"
-msgstr ""
+#: libmedia/AudioDecoderSpeex.cpp:41
+msgid "AudioDecoderSpeex: state initialization failed."
+msgstr "AudioDecoderSpeex: ç¶ææ æ³åå§åã"
-#: libmedia/ffmpeg/MediaParserFfmpeg.cpp:80
-msgid "MediaParserFfmpeg could not read probe data from input"
-msgstr ""
+#: libmedia/AudioDecoderSpeex.cpp:54
+msgid "AudioDecoderSpeex: initialization failed."
+msgstr "AudioDecoderSpeex: æ æ³åå§åã"
-#: libmedia/ffmpeg/MediaParserFfmpeg.cpp:113
-#: libmedia/ffmpeg/MediaParserFfmpeg.cpp:122
+#: libmedia/AudioDecoderSpeex.cpp:109
+msgid "Corrupt Speex stream!"
+msgstr "æåçSpeexæµï¼"
+
+#: libmedia/AudioDecoderSpeex.cpp:133
+msgid "Failed to resample Speex frame."
+msgstr "æ æ³éæ°åæ ·Speex帧ã"
+
+#: libmedia/FLVParser.cpp:170
#, c-format
-msgid "%s: seeking failed"
+msgid ""
+"Unexpected audio tag found at offset %d FLV stream advertising no audio in "
+"header. We'll warn only once for each FLV, expecting any further audio tag."
msgstr ""
+"头鍿 é³é¢FLVæµ%dåç§»å¤åç°å¼å¸¸çé³é¢æ ç¾ãå½å¦ä¸äºé³é¢æ ç¾åºç°ï¼æ¯ä¸ªFLVæä»¬"
+"åªä¼è¦å䏿¬¡ã"
-#: libmedia/ffmpeg/MediaParserFfmpeg.cpp:211
+#: libmedia/FLVParser.cpp:187
+msgid "could not read audio frame?"
+msgstr "æ æ³è¯»åé³é¢å¸§ï¼"
+
+#: libmedia/FLVParser.cpp:225
+#, c-format
msgid ""
-"FIXME: FFmpeg packet decompression timestamp has no value, taking as zero"
+"Unexpected video tag found at offset %d of FLV stream advertising no video "
+"in header. We'll warn only once per FLV, expecting any further video tag."
msgstr ""
+"头鍿 è§é¢FLVæµ%dåç§»å¤åç°å¼å¸¸çè§é¢æ ç¾ãå½å¦ä¸äºè§é¢æ ç¾åºç°ï¼æ¯ä¸ªFLVæä»¬"
+"åªä¼è¦å䏿¬¡ã"
-#: libmedia/ffmpeg/MediaParserFfmpeg.cpp:272
+#: libmedia/FLVParser.cpp:245
+#, c-format
+msgid "AVC packet type: %d"
+msgstr "AVCæ°æ®å
ç±»åï¼%d"
+
+#: libmedia/FLVParser.cpp:264
+msgid "could not read video frame?"
+msgstr "æ æ³è¯»åè§é¢å¸§ï¼"
+
+#: libmedia/FLVParser.cpp:322
+#, c-format
+msgid "FLVParser::parseNextTag: can't seek to %d"
+msgstr "FLVParser::parseNextTag: æ æ³å®ä½å° %d"
+
+#: libmedia/FLVParser.cpp:336
#, c-format
msgid ""
-"MediaParserFfmpeg::parseNextFrame: Problems parsing next frame "
-"(av_read_frame returned %d). We'll consider the stream fully parsed."
-msgstr ""
+"FLVParser::parseNextTag: can't read tag info (needed 12 bytes, only got %d)"
+msgstr "FLVParser::parseNextTag: æ æ³è¯»åæ å¿ä¿¡æ¯ (éè¦12åè, åªæ %d)"
-#: libmedia/ffmpeg/MediaParserFfmpeg.cpp:443
+#: libmedia/FLVParser.cpp:423
#, c-format
-msgid " Using stream %d for audio: codec id %d"
-msgstr ""
+msgid "First byte of FLV_META_TAG is %d, expected 0x02 (STRING AMF0 type)"
+msgstr "FLV_META_TAG第ä¸ä¸ªåèæ¯%dï¼åºè¯¥æ¯0x02ï¼STRING AMF0ç±»åï¼"
-#: libmedia/ffmpeg/MediaParserFfmpeg.cpp:456
+#: libmedia/FLVParser.cpp:435
#, c-format
-msgid " Using stream %d for video: codec id %d"
+msgid ""
+"FLVParser::parseNextTag: can't read metaTag (%d) body (needed %d bytes, only "
+"got %d)"
msgstr ""
+"FLVParser:: parseNextTagï¼æ æ³è¯»åå
æ è®°ï¼%dï¼å
容ï¼éè¦%dåèï¼åªæ%dï¼"
-#: libmedia/ffmpeg/MediaParserFfmpeg.cpp:478
-msgid "Duration of video stream unknown"
-msgstr ""
+#: libmedia/FLVParser.cpp:446
+msgid "Corrupt FLV: Meta tag unterminated!"
+msgstr "æåçFLVï¼æªç»æçå
æ ç¾ï¼ "
-#: libmedia/ffmpeg/MediaParserFfmpeg.cpp:507
-msgid "Duration of audio stream unknown to ffmpeg"
-msgstr ""
+#: libmedia/FLVParser.cpp:454
+#, c-format
+msgid "FLVParser::parseNextTag: unknown FLV tag type %d"
+msgstr "FLVParser:: parseNextTagï¼æªç¥çFLVæ ç¾ç±»å%d"
-#: libmedia/ffmpeg/MediaParserFfmpeg.cpp:587
+#: libmedia/FLVParser.cpp:463
msgid ""
-"MediaParserFfmpeg couldn't parse input format: tried to seek at negative "
-"offset %1%."
-msgstr ""
+"Corrupt FLV: previous tag size record (%1%) unexpected (actual size: %2%)"
+msgstr "æåçFLVï¼ä¸ä¸ä¸ªæ ç¾å¤§å°è®°å½ï¼%1%ï¼å¼å¸¸ï¼å®é
大å°ï¼%2%ï¼"
-#: libmedia/ffmpeg/VideoConverterFfmpeg.cpp:122
-msgid "VideoConverterFfmpeg cannot convert to the requested format"
-msgstr ""
+#: libmedia/FLVParser.cpp:481
+msgid "FLVParser::parseHeader: couldn't read 9 bytes of header"
+msgstr "FLVParser:: parseHeaderï¼æ æ³è¯»å头é¨ç9个åè"
-#: libmedia/ffmpeg/MediaHandlerFfmpeg.cpp:122
+#: libmedia/FLVParser.cpp:533
#, c-format
-msgid "MediaHandlerFfmpeg::createAudioDecoder: %s -- %s"
-msgstr ""
+msgid "FLVParser::readAudioFrame: could only read %d/%d bytes"
+msgstr "FLVParser:: readAudioFrameï¼åªè½è¯»å %d/%d åè"
+
+#: libmedia/ffmpeg/VideoConverterFfmpeg.cpp:122
+msgid "VideoConverterFfmpeg cannot convert to the requested format"
+msgstr "VideoConverterFfmpegæ æ³è½¬æ¢å°è¯·æ±çæ ¼å¼"
-#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:53
+#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:48
#, c-format
msgid "AudioDecoderFfmpeg: initialized FFmpeg codec %d (%s)"
-msgstr ""
+msgstr "AudioDecoderFfmpeg: åå§åFFmpegç¼è§£ç %d (%s)"
-#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:56
+#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:51
#, c-format
msgid ""
"AudioDecoderFfmpeg: initialized FFmpeg codec %d (%s) for flash codec %d (%s)"
-msgstr ""
+msgstr "AudioDecoderFfmpeg: 为flashç¼è§£ç %d (%s)åå§åFFmpegç¼è§£ç %d (%s)"
-#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:71
+#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:66
#, c-format
msgid "AudioDecoderFfmpeg: initialized FFmpeg codec %s (%d)"
-msgstr ""
+msgstr "AudioDecoderFfmpeg: åå§åFFmpegç¼è§£ç %s (%d)"
-#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:110
+#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:107
#, c-format
msgid "Unsupported audio codec %d"
-msgstr ""
+msgstr "䏿¯æçé³é¢ç¼è§£ç %d"
-#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:119
+#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:116
#, c-format
msgid "libavcodec could not find a decoder for codec %d (%s)"
-msgstr ""
+msgstr "libavcodec æ æ³ä¸ºç¼è§£ç %d (%s)æ¾å°è§£ç å¨"
-#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:129
+#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:126
msgid "AudioDecoderFfmpeg can't initialize MP3 parser"
-msgstr ""
+msgstr "AudioDecoderFfmpegæ æ³åå§åMP3è§£æå¨"
-#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:136
-#: libmedia/ffmpeg/VideoDecoderFfmpeg.cpp:185
+#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:137
+#: libmedia/ffmpeg/VideoDecoderFfmpeg.cpp:196
msgid "libavcodec couldn't allocate context"
-msgstr ""
+msgstr "libavcodecæ æ³åé
ä¸ä¸æ"
-#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:144
-#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:315
+#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:149
+#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:331
#, c-format
msgid ""
"AudioDecoderFfmpeg: avcodec_open failed to initialize FFmpeg codec %s (%d)"
-msgstr ""
+msgstr "AudioDecoderFfmpegï¼avcodec_openåå§åFFmpegç¼è§£ç å¨ %s (%d)失败"
-#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:149
+#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:154
#, c-format
msgid "AudioDecoder: initialized FFMPEG codec %s (%d)"
-msgstr ""
+msgstr "AudioDecoderï¼åå§å FFMPEG ç¼è§£ç å¨ %s (%d)"
-#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:222
+#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:230
#, c-format
msgid "AudioDecoderFfmpeg: unsupported flash audio codec %d (%s)"
-msgstr ""
+msgstr "AudioDecoderFfmpeg: 䏿¯æçflashé³é¢ç¼è§£ç %d (%s)"
-#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:231
+#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:239
#, c-format
msgid "AudioDecoderFfmpeg: unknown codec type %d (should never happen)"
-msgstr ""
+msgstr "AudioDecoderFfmpegï¼æªç¥çç¼è§£ç ç±»å %d (ä¸åºè¯¥åç)"
-#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:241
+#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:249
#, c-format
msgid ""
"AudioDecoderFfmpeg: libavcodec could not find a decoder for codec %d (%s)"
-msgstr ""
+msgstr "AudioDecoderFfmpeg: libavcodec æ æ³ä¸ºç¼è§£ç %d (%s)æ¾å°è§£ç å¨"
-#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:247
+#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:255
#, c-format
msgid ""
"AudioDecoderFfmpeg: libavcodec could not find a decoder for ffmpeg codec id "
"%s"
-msgstr ""
+msgstr "AudioDecoderFfmpeg: libavcodec æ æ³ä¸º ffmpegç¼è§£ç %sæ¾å°ä¸ä¸ªè§£ç å¨"
-#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:259
+#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:271
msgid "AudioDecoderFfmpeg: libavcodec couldn't allocate context"
-msgstr ""
+msgstr "AudioDecoderFfmpeg: libavcodec æ æ³åé
ä¸ä¸æ"
-#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:348
+#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:364
#, c-format
msgid ""
"av_parser_parse returned %d. Upgrading ffmpeg/libavcodec might fix this "
"issue."
-msgstr ""
-
-#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:401
-#, c-format
-msgid ""
-"AudioDecoderFfmpeg: could not find a complete frame in the last %d bytes of "
-"input (malformed SWF or FLV?)"
-msgstr ""
+msgstr "av_parser_parseè¿å%dãå级ffmpeg/libavcodecä¹è®¸ä¼è§£å³è¯¥é®é¢ã"
-#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:490
+#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:483
msgid "failed to allocate audio buffer."
-msgstr ""
+msgstr "åé
é³é¢ç¼å²å¨å¤±è´¥ã"
+
+#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:505
+#, fuzzy
+msgid "failed to allocate frame."
+msgstr "åé
é³é¢ç¼å²å¨å¤±è´¥ã"
-#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:528
+#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:523
#, c-format
-msgid ""
-"avcodec_decode_audio returned %d. Upgrading ffmpeg/libavcodec might fix this "
-"issue."
+msgid "output buffer size is too small for the current frame (%d < %d)"
msgstr ""
-#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:537
+#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:549
#, c-format
-msgid ""
-"outputSize:%d after decoding %d bytes of input audio data. Upgrading ffmpeg/"
-"libavcodec might fix this issue."
+msgid "avcodec_decode_audio returned %d."
msgstr ""
-#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:587
+#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:551
+#, fuzzy, c-format
+msgid "outputSize:%d after decoding %d bytes of input audio data."
+msgstr ""
+"outputSizeï¼%då¨è§£ç è¾å
¥é³é¢æ°æ®%dåèä¹åãå级ffmpeg/libavcodecä¹è®¸ä¼è§£å³è¯¥"
+"é®é¢ã"
+
+#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:553
+#, fuzzy
+msgid "Upgrading ffmpeg/libavcodec might fix this issue."
+msgstr "av_parser_parseè¿å%dãå级ffmpeg/libavcodecä¹è®¸ä¼è§£å³è¯¥é®é¢ã"
+
+#: libmedia/ffmpeg/AudioDecoderFfmpeg.cpp:598
#, c-format
msgid ""
" --- Computation of resampled samples (%d) < then the actual returned "
"samples (%d)"
-msgstr ""
+msgstr "---忬¡éæ ·çæ ·æ¬è®¡ç®ï¼%dï¼< å®é
åæ¶æ ·æ¬ï¼(%dï¼"
-#: libmedia/ffmpeg/VideoDecoderFfmpeg.cpp:141
+#: libmedia/ffmpeg/VideoDecoderFfmpeg.cpp:145
#, c-format
msgid "Cannot find suitable decoder for flash codec %d"
-msgstr ""
+msgstr "æ æ³ä¸ºflashç¼è§£ç %dæ¾å°éåçè§£ç å¨"
-#: libmedia/ffmpeg/VideoDecoderFfmpeg.cpp:180
+#: libmedia/ffmpeg/VideoDecoderFfmpeg.cpp:187
msgid "libavcodec can't decode this video format"
-msgstr ""
+msgstr "libavcodec æ æ³è§£ç 该è§é¢æ ¼å¼"
-#: libmedia/ffmpeg/VideoDecoderFfmpeg.cpp:208
+#: libmedia/ffmpeg/VideoDecoderFfmpeg.cpp:227
#, c-format
msgid "libavcodec failed to initialize FFMPEG codec %s (%d)"
-msgstr ""
+msgstr "libavcodec æ æ³åå§åFFMPEGç¼è§£ç %s (%d)"
-#: libmedia/ffmpeg/VideoDecoderFfmpeg.cpp:216
+#: libmedia/ffmpeg/VideoDecoderFfmpeg.cpp:235
#, c-format
msgid "VideoDecoder: initialized FFMPEG codec %s (%d)"
-msgstr ""
+msgstr "VideoDecoderï¼åå§åFFMPEGç¼è§£ç %s (%d)"
-#: libmedia/ffmpeg/VideoDecoderFfmpeg.cpp:306
+#: libmedia/ffmpeg/VideoDecoderFfmpeg.cpp:325
msgid "Pixel format not handled"
-msgstr ""
+msgstr "æªå¤çåç´ æ ¼å¼"
-#: libmedia/ffmpeg/VideoDecoderFfmpeg.cpp:354
+#: libmedia/ffmpeg/VideoDecoderFfmpeg.cpp:373
msgid "Out of memory while allocating avcodec frame"
-msgstr ""
+msgstr "åé
avcodec帧æ¶å
åä¸è¶³"
-#: libmedia/ffmpeg/VideoDecoderFfmpeg.cpp:373
+#: libmedia/ffmpeg/VideoDecoderFfmpeg.cpp:392
msgid "Decoding of a video frame failed"
-msgstr ""
+msgstr "è§é¢å¸§è§£ç 失败"
-#: libmedia/ffmpeg/VideoDecoderFfmpeg.cpp:434
+#: libmedia/ffmpeg/VideoDecoderFfmpeg.cpp:453
#, c-format
msgid "Unsupported video codec %d"
-msgstr ""
+msgstr "䏿¯æçè§é¢ç¼è§£ç å¨ %d"
-#: libmedia/haiku/MediaHandlerHaiku.cpp:115
+#: libmedia/ffmpeg/MediaHandlerFfmpeg.cpp:122
#, c-format
-msgid "MediaHandlerHaiku::createAudioDecoder: %s -- %s"
-msgstr ""
-
-#: libmedia/AudioDecoderSpeex.cpp:41
-msgid "AudioDecoderSpeex: state initialization failed."
-msgstr ""
+msgid "MediaHandlerFfmpeg::createAudioDecoder: %s -- %s"
+msgstr "MediaHandlerFfmpeg::createAudioDecoder: %s -- %s"
-#: libmedia/AudioDecoderSpeex.cpp:54
-msgid "AudioDecoderSpeex: initialization failed."
-msgstr ""
+#: libmedia/ffmpeg/MediaParserFfmpeg.cpp:80
+msgid "MediaParserFfmpeg could not read probe data from input"
+msgstr "MediaParserFfmpegæ æ³ä»è¾å
¥è¯»åæ¢å¤´æ°æ®"
-#: libmedia/AudioDecoderSpeex.cpp:109
-msgid "Corrupt Speex stream!"
-msgstr ""
+#: libmedia/ffmpeg/MediaParserFfmpeg.cpp:113
+#: libmedia/ffmpeg/MediaParserFfmpeg.cpp:122
+#, c-format
+msgid "%s: seeking failed"
+msgstr "%sï¼å¯»æ¾å¤±è´¥"
-#: libmedia/AudioDecoderSpeex.cpp:133
-msgid "Failed to resample Speex frame."
-msgstr ""
+#: libmedia/ffmpeg/MediaParserFfmpeg.cpp:211
+msgid ""
+"FIXME: FFmpeg packet decompression timestamp has no value, taking as zero"
+msgstr "éä¿®å¤: FFmpegçå
è§£åçæ¶é´æ³æ²¡æå¼ï¼åå¼ä¸ºé¶"
-#: libmedia/FLVParser.cpp:170
+#: libmedia/ffmpeg/MediaParserFfmpeg.cpp:272
#, c-format
msgid ""
-"Unexpected audio tag found at offset %d FLV stream advertising no audio in "
-"header. We'll warn only once for each FLV, expecting any further audio tag."
-msgstr ""
-
-#: libmedia/FLVParser.cpp:187
-msgid "could not read audio frame?"
+"MediaParserFfmpeg::parseNextFrame: Problems parsing next frame "
+"(av_read_frame returned %d). We'll consider the stream fully parsed."
msgstr ""
+"MediaParserFfmpeg::parseNextFrameï¼è§£æä¸ä¸å¸§æé®é¢ï¼av_read_frameè¿å%dï¼ã"
+"æä»¬å°èèå®å
¨è¢«è§£æçæµã"
-#: libmedia/FLVParser.cpp:225
+#: libmedia/ffmpeg/MediaParserFfmpeg.cpp:467
#, c-format
-msgid ""
-"Unexpected video tag found at offset %d of FLV stream advertising no video "
-"in header. We'll warn only once per FLV, expecting any further video tag."
-msgstr ""
+msgid " Using stream %d for audio: codec id %d"
+msgstr "ä½¿ç¨æµ%dä½ä¸ºé³é¢ï¼ç¼è§£ç 卿 è¯ä¸º%d"
-#: libmedia/FLVParser.cpp:245
+#: libmedia/ffmpeg/MediaParserFfmpeg.cpp:480
#, c-format
-msgid "AVC packet type: %d"
-msgstr ""
+msgid " Using stream %d for video: codec id %d"
+msgstr "ä½¿ç¨æµ%dä½ä¸ºè§é¢ï¼ç¼è§£ç 卿 è¯ä¸º%d"
-#: libmedia/FLVParser.cpp:264
-msgid "could not read video frame?"
-msgstr ""
+#: libmedia/ffmpeg/MediaParserFfmpeg.cpp:502
+msgid "Duration of video stream unknown"
+msgstr "è§é¢æµçæç»æ¶é´æªç¥"
-#: libmedia/FLVParser.cpp:322
-#, c-format
-msgid "FLVParser::parseNextTag: can't seek to %d"
-msgstr ""
+#: libmedia/ffmpeg/MediaParserFfmpeg.cpp:531
+msgid "Duration of audio stream unknown to ffmpeg"
+msgstr "é³é¢æµçæç»æ¶é´ffmepgæªç¥"
-#: libmedia/FLVParser.cpp:336
-#, c-format
+#: libmedia/ffmpeg/MediaParserFfmpeg.cpp:611
msgid ""
-"FLVParser::parseNextTag: can't read tag info (needed 12 bytes, only got %d)"
-msgstr ""
+"MediaParserFfmpeg couldn't parse input format: tried to seek at negative "
+"offset %1%."
+msgstr "MediaParserFfmpegæ æ³è§£æè¾å
¥çæ ¼å¼ï¼è¯å¾å¨è´åç§» %1%æ¥æ¾ã"
-#: libmedia/FLVParser.cpp:423
+#: libmedia/MediaHandler.cpp:49
+msgid "MediaHandler::isFLV: Could not read 3 bytes from input stream"
+msgstr "MediaHandler::isFLV: ä¸è½ä»è¾å
¥æµä¸è¯»å3个åè"
+
+#: libmedia/MediaHandler.cpp:65
+msgid ""
+"MediaHandler::createMediaParser: only FLV input is supported by this "
+"MediaHandler"
+msgstr "MediaHandler::createMediaParser: 该 MediaHandler åªæ¯æ FLV è¾å
¥"
+
+#: libmedia/MediaHandler.cpp:71
#, c-format
-msgid "First byte of FLV_META_TAG is %d, expected 0x02 (STRING AMF0 type)"
-msgstr ""
+msgid "Exception while reading from stream: %s"
+msgstr "仿µä¸è¯»åæ¶åçå¼å¸¸: %s"
-#: libmedia/FLVParser.cpp:435
+#: libmedia/MediaHandler.cpp:108
#, c-format
msgid ""
-"FLVParser::parseNextTag: can't read metaTag (%d) body (needed %d bytes, only "
-"got %d)"
+"MediaHandler::createFlashAudioDecoder: no available flash decoders for codec "
+"%d (%s)"
msgstr ""
+"MediaHandler::createFlashAudioDecoder: 没æå¯ç¨ç flashç¼ç %d çè§£ç å¨ï¼%sï¼"
-#: libmedia/FLVParser.cpp:446
-msgid "Corrupt FLV: Meta tag unterminated!"
-msgstr ""
+#: libmedia/AudioDecoderSimple.cpp:163
+msgid "corrupted ADPCM header"
+msgstr "æåçADPCM头"
-#: libmedia/FLVParser.cpp:454
+#: libmedia/AudioDecoderSimple.cpp:291 libmedia/AudioDecoderSimple.cpp:304
#, c-format
-msgid "FLVParser::parseNextTag: unknown FLV tag type %d"
-msgstr ""
+msgid "AudioDecoderSimple: initialized flash codec %s (%d)"
+msgstr "AudioDecoderSimple: å·²ç»åå§å flash ç¼ç %s (%d)"
-#: libmedia/FLVParser.cpp:463
-msgid ""
-"Corrupt FLV: previous tag size record (%1%) unexpected (actual size: %2%)"
-msgstr ""
+#: libmedia/AudioDecoderSimple.cpp:330 libmedia/AudioDecoderSimple.cpp:361
+#, c-format
+msgid "AudioDecoderSimple: unsupported flash codec %d (%s)"
+msgstr "AudioDecoderSimple: 䏿¯æ flash ç¼ç %d (%s)"
-#: libmedia/FLVParser.cpp:481
-msgid "FLVParser::parseHeader: couldn't read 9 bytes of header"
-msgstr ""
+#: libmedia/AudioDecoderSimple.cpp:341
+#, c-format
+msgid "AudioDecoderSimple: unable to intepret custom audio codec id %s"
+msgstr "AudioDecoderSimple: æ æ³è§£éèªå®ä¹çé³é¢ç¼ç æ è¯ %s"
-#: libmedia/FLVParser.cpp:533
+#: libmedia/AudioDecoderSimple.cpp:428
+msgid "Host endianness not detected in AudioDecoderSimple"
+msgstr "AudioDecoderSimple 䏿²¡ææ£æµå°ä¸»æºåèåº"
+
+#: libmedia/AudioDecoderSimple.cpp:478
+msgid "Error in sound sample conversion"
+msgstr "声é³éæ ·è½¬æ¢ä¸åºé"
+
+#: libmedia/gst/MediaHandlerGst.cpp:90
+msgid "Wrong arguments given to GST VideoDecoder"
+msgstr "ä¼ ç»GSTè§é¢è§£ç å¨äºé误çåæ° "
+
+#: libmedia/gst/MediaHandlerGst.cpp:137
#, c-format
-msgid "FLVParser::readAudioFrame: could only read %d/%d bytes"
-msgstr ""
+msgid "MediaHandlerGst::createAudioDecoder: %s -- %s"
+msgstr "MediaHandlerGst::createAudioDecoder: %s -- %s"
#: libmedia/gst/VideoConverterGst.cpp:39
msgid "VideoConverterGst: ffmpegcolorspace element missing"
-msgstr ""
+msgstr "VideoConverterGstï¼ffmpegcolorspaceå
ç´ ä¸åå¨"
#: libmedia/gst/VideoConverterGst.cpp:72
msgid "VideoConverterGst: can't output requested format"
-msgstr ""
+msgstr "VideoConverterGstï¼ä¸è½è¾åºè¯·æ±çæ ¼å¼"
#: libmedia/gst/VideoConverterGst.cpp:100
msgid "VideoConverterGst: internal error (caps creation failed)"
-msgstr ""
+msgstr "VideoConverterGstï¼å
é¨éè¯¯ï¼æ æ³å建capsï¼"
#: libmedia/gst/VideoConverterGst.cpp:107
+#, fuzzy
msgid "VideoConverterGst: initialization failed."
-msgstr ""
+msgstr "VideoConverterGstï¼åå§å失败ã"
#: libmedia/gst/VideoConverterGst.cpp:142
msgid "VideoConverterGst: buffer push failed."
-msgstr ""
+msgstr "VideoConverterGstï¼ç¼å²åºæ¨å
¥å¤±è´¥ã"
#: libmedia/gst/VideoConverterGst.cpp:149
msgid "VideoConverterGst: buffer pull failed."
-msgstr ""
+msgstr "VideoConverterGstï¼ç¼å²åºæåºå¤±è´¥ã"
+
+#: libmedia/gst/VideoDecoderGst.cpp:97
+msgid "Video codec is zero. Streaming video expected later."
+msgstr "è§é¢ç¼è§£ç 卿¯é¶ãåé¢é¢è®¡æ¯è§é¢æµã"
+
+#: libmedia/gst/VideoDecoderGst.cpp:100
+#, c-format
+msgid "No support for video codec %s."
+msgstr "䏿¯æçè§é¢ç¼è§£ç å¨ %sã"
+
+#: libmedia/gst/VideoDecoderGst.cpp:122 libmedia/gst/VideoDecoderGst.cpp:148
+msgid "VideoDecoderGst: internal error (caps creation failed)"
+msgstr "VideoDecoderGstï¼å
é¨é误ï¼capså建失败ï¼"
+
+#: libmedia/gst/VideoDecoderGst.cpp:130
+#, c-format
+msgid "Couldn't find a plugin for video type %s!"
+msgstr "æ æ³ä¸ºè§é¢ç±»å %s æ¾å°æä»¶ï¼"
+
+#: libmedia/gst/VideoDecoderGst.cpp:134
+msgid " Please make sure you have gstreamer-ffmpeg installed."
+msgstr "è¯·ç¡®ä¿æ¨ç gstreamer-ffmpeg å·²ç»å®è£
ã"
+
+#: libmedia/gst/VideoDecoderGst.cpp:158
+#, c-format
+msgid "VideoDecoderGst: initialisation failed for video type %s!"
+msgstr "VideoDecoderGstï¼åå§åè§é¢ç±»å%s失败ï¼"
+
+#: libmedia/gst/VideoDecoderGst.cpp:189
+msgid "VideoDecoderGst: buffer push failed."
+msgstr "VideoDecoderGstï¼ç¼å²åºæ¨å
¥å¤±è´¥ã"
#: libmedia/gst/GstUtil.cpp:76
msgid "Unable to retrieve a valid audio sink from ~/.gnashrc"
-msgstr ""
+msgstr "æ æ³ä»~/.gnashrcè·åå°ææçé³é¢æ§½"
#: libmedia/gst/GstUtil.cpp:82
msgid "Unable to retrieve a valid audio sink from autoaudiosink"
-msgstr ""
+msgstr "æ æ³ä»autoaudiosinkè·åå°ææçé³é¢æ§½"
#: libmedia/gst/GstUtil.cpp:87
#, c-format
@@ -1259,2518 +1377,2827 @@ msgid ""
"Unable to retrieve a valid audio sink from gconfaudiosink\n"
"%s"
msgstr ""
+"æ æ³ä»gconfaudiosinkè·åå°ææçé³é¢æ§½\n"
+"%s"
#: libmedia/gst/GstUtil.cpp:88
msgid "Sink search exhausted: you won't be able to hear sound!"
-msgstr ""
+msgstr "æ§½æç´¢èå°½ï¼ä½ å°æ æ³å¬å°å£°é³ï¼"
#: libmedia/gst/GstUtil.cpp:94
#, c-format
msgid "Got a non-NULL audio sink; its wrapper name is: %s"
-msgstr ""
+msgstr "å¾å°ä¸ä¸ªé空çé³é¢æ§½ï¼å
åç§°ä¸ºï¼ %s"
#: libmedia/gst/GstUtil.cpp:116
msgid ""
"Missing plugin, but plugin installing not supported. Will try anyway, but "
"expect failure."
-msgstr ""
+msgstr "ç¼ºå°æä»¶ï¼èæä»¶å®è£
䏿¯æãå¯ä»¥ç»§ç»è¯è¯ï¼ä½ä¼°è®¡ä¼å¤±è´¥ã"
#: libmedia/gst/GstUtil.cpp:122
msgid "Missing plugin, but failed to convert it to gst missing plugin detail."
-msgstr ""
+msgstr "ç¼ºå°æä»¶ï¼èä¸è½å°å
¶è½¬æ¢ä¸ºgst缺å°çæä»¶ä¿¡æ¯ã"
#: libmedia/gst/GstUtil.cpp:135
msgid ""
"gst_update_registry failed. You'll need to restart Gnash to use the new "
"plugins."
-msgstr ""
+msgstr "gst_update_registry失败ãä½¿ç¨æ°çæä»¶è¯·éæ°å¯å¨Gnashã"
#: libmedia/gst/GstUtil.cpp:142
msgid "Missing plugin, but automatic plugin installation not available."
-msgstr ""
+msgstr "ç¼ºå°æä»¶ï¼èèªå¨æä»¶å®è£
ä¸å¯ç¨ã"
-#: libmedia/gst/VideoDecoderGst.cpp:97
-msgid "Video codec is zero. Streaming video expected later."
-msgstr ""
+#: libmedia/gst/VideoInputGst.cpp:319
+msgid "too high an index value, will cause segfault"
+msgstr "ç´¢å¼å¼è¿é«ï¼ä¼å¯¼è´æ®µé误"
-#: libmedia/gst/VideoDecoderGst.cpp:100
+#: libmedia/gst/VideoInputGst.cpp:369
#, c-format
-msgid "No support for video codec %s."
-msgstr ""
+msgid "%s: Could not create video test source."
+msgstr "%sï¼æ æ³å建è§é¢æµè¯æºã"
-#: libmedia/gst/VideoDecoderGst.cpp:122 libmedia/gst/VideoDecoderGst.cpp:148
-msgid "VideoDecoderGst: internal error (caps creation failed)"
-msgstr ""
+#: libmedia/gst/VideoInputGst.cpp:387 libmedia/gst/AudioInputGst.cpp:119
+#, c-format
+msgid "%s: Could not create pulsesrc element"
+msgstr "%sï¼æ æ³å建è岿ºç»ä»¶ã"
-#: libmedia/gst/VideoDecoderGst.cpp:130
+#: libmedia/gst/VideoInputGst.cpp:392 libmedia/gst/AudioInputGst.cpp:124
#, c-format
-msgid "Couldn't find a plugin for video type %s!"
-msgstr ""
+msgid "%s: Could not get property probe from pulsesrc element"
+msgstr "%sï¼æ æ³ä»è岿ºç»ä»¶è·å屿§æ¢é"
-#: libmedia/gst/VideoDecoderGst.cpp:134
-msgid " Please make sure you have gstreamer-ffmpeg installed."
-msgstr ""
+#: libmedia/gst/VideoInputGst.cpp:628
+msgid "You have an invalid camera selected. Please check your gnashrc file"
+msgstr "ä½ éæ©äºæ æçç¸æºãè¯·æ£æ¥ gnashrc æä»¶"
-#: libmedia/gst/VideoDecoderGst.cpp:158
+#: libmedia/gst/VideoInputGst.cpp:657
#, c-format
-msgid "VideoDecoderGst: initialisation failed for video type %s!"
-msgstr ""
+msgid "%s: Passed an invalid argument (not a valid dev_select value)"
+msgstr "%sï¼ä¼ éäºä¸ä¸ªæ æçåæ°ï¼ä¸æ¯ææç dev_select å¼ï¼"
-#: libmedia/gst/VideoDecoderGst.cpp:189
-msgid "VideoDecoderGst: buffer push failed."
-msgstr ""
+#: libmedia/gst/VideoInputGst.cpp:685 libmedia/gst/AudioInputGst.cpp:222
+#, c-format
+msgid "%s: Pipeline bus isn't an object for some reason"
+msgstr "%sï¼ç±äºæç§åå ç®¡éæ»çº¿ä¸æ¯ä¸ä¸ªå¯¹è±¡"
-#: libmedia/gst/MediaParserGst.cpp:55
-msgid "MediaParserGst couldn't create a bin"
-msgstr ""
+#: libmedia/gst/VideoInputGst.cpp:705 libmedia/gst/AudioInputGst.cpp:241
+#, c-format
+msgid "%s: Template pad isn't an object for some reason"
+msgstr "%sï¼ç±äºæç§åå æ¨¡æ¿å«å䏿¯ä¸ä¸ªå¯¹è±¡"
-#: libmedia/gst/MediaParserGst.cpp:60
-msgid "MediaParserGst couldn't create a typefind element."
-msgstr ""
+#: libmedia/gst/VideoInputGst.cpp:718 libmedia/gst/AudioInputGst.cpp:255
+#, c-format
+msgid "%s: pipeline isn't an object for some reason"
+msgstr "%sï¼ç±äºæç§åå 管é䏿¯ä¸ä¸ªå¯¹è±¡"
-#: libmedia/gst/MediaParserGst.cpp:72 libmedia/gst/MediaParserGst.cpp:94
-#: libmedia/gst/MediaParserGst.cpp:317 libmedia/gst/MediaParserGst.cpp:374
-#: libmedia/gst/MediaParserGst.cpp:528
-msgid "MediaParserGst could not change element state"
-msgstr ""
+#: libmedia/gst/VideoInputGst.cpp:804
+#, c-format
+msgid "%s: type %s, cannot be handled for resolution width"
+msgstr "%sï¼ç±»å %s, ä¸è½å¤ççå辨ç宽度"
-#: libmedia/gst/MediaParserGst.cpp:85
+#: libmedia/gst/VideoInputGst.cpp:825 libmedia/gst/AudioInputGst.cpp:281
#, c-format
-msgid "Needed %d dead iterations to detect audio type."
-msgstr ""
+msgid "%s: was passed a NULL pointer"
+msgstr "%sï¼ä¼ éäºä¸ä¸ªNULLæé"
-#: libmedia/gst/MediaParserGst.cpp:89
-msgid "MediaParserGst failed to detect any stream types."
-msgstr ""
+#: libmedia/gst/VideoInputGst.cpp:931 libmedia/gst/VideoInputGst.cpp:1104
+#, c-format
+msgid "%s: Creation of the webcam_source_bin failed"
+msgstr "%sï¼å建webcam_source_bin失败"
-#: libmedia/gst/MediaParserGst.cpp:187
-msgid ""
-"MediaParserGst failed to read the stream, but it did not reach EOF or enter "
-"a bad state."
-msgstr ""
+#: libmedia/gst/VideoInputGst.cpp:933 libmedia/gst/VideoInputGst.cpp:1106
+#: libmedia/gst/AudioInputGst.cpp:328 libmedia/gst/AudioInputGst.cpp:384
+#, c-format
+msgid "the error was %s"
+msgstr "éè¯¯æ¯ %s"
-#: libmedia/gst/MediaParserGst.cpp:201
-msgid "MediaParserGst failed to push more data into the demuxer! Seeking back."
-msgstr ""
+#: libmedia/gst/VideoInputGst.cpp:961
+#, fuzzy, c-format
+msgid "%s: webcam isn't set!"
+msgstr "%sï¼æ²¡æè®¾ç½®webamï¼"
+
+#: libmedia/gst/VideoInputGst.cpp:1024
+#, fuzzy, c-format
+msgid "%s: the resolution you chose isn't supported, picking a supported value"
+msgstr "%sï¼ä½ éæ©çå辨ç䏿¯æï¼è¯·éæ©ä¸ä¸ªæ¯æçå¼"
-#: libmedia/gst/MediaParserGst.cpp:280
+#: libmedia/gst/VideoInputGst.cpp:1128 libmedia/gst/AudioInputGst.cpp:339
#, c-format
-msgid "MediaParserGst/typefound: Detected media type %s"
-msgstr ""
+msgid "%s: couldn't drop the sourcebin back into the main bin"
+msgstr "%sï¼æ æ³æ sourcebin æå主 bin ä¸"
-#: libmedia/gst/MediaParserGst.cpp:292 libmedia/gst/MediaParserGst.cpp:299
-msgid "MediaParserGst Failed to create fakesink."
-msgstr ""
+#: libmedia/gst/VideoInputGst.cpp:1137 libmedia/gst/AudioInputGst.cpp:349
+#, c-format
+msgid "%s: couldn't link up sourcebin and tee"
+msgstr "%sï¼æ æ³è¿æ¥ sourcebin å tee"
-#: libmedia/gst/MediaParserGst.cpp:305
-msgid "MediaParserGst: couldn't get the fakesink src element."
-msgstr ""
+#: libmedia/gst/VideoInputGst.cpp:1169
+#, c-format
+msgid "%s: problem creating source bin"
+msgstr "%sï¼åå»ºæº bin æ
é"
-#: libmedia/gst/MediaParserGst.cpp:313
-msgid "MediaParserGst: couln't link fakesink"
-msgstr ""
+#: libmedia/gst/VideoInputGst.cpp:1176 libmedia/gst/AudioInputGst.cpp:412
+#, c-format
+msgid "%s: problem creating tee element"
+msgstr "%sï¼å建 tee ç»ä»¶æ
é"
-#: libmedia/gst/MediaParserGst.cpp:337
-msgid "MediaParserGst: couldn't get the typefind src element."
-msgstr ""
+#: libmedia/gst/VideoInputGst.cpp:1180 libmedia/gst/AudioInputGst.cpp:416
+#, c-format
+msgid "%s: problem creating save_queue element"
+msgstr "%sï¼å建 save_queue ç»ä»¶æ
é"
-#: libmedia/gst/MediaParserGst.cpp:352
-msgid "MediaParserGst: couldn't create the demuxer"
-msgstr ""
+#: libmedia/gst/VideoInputGst.cpp:1185
+#, c-format
+msgid "%s: problem creating video_display_queue element"
+msgstr "%sï¼å建 video_display_queue ç»ä»¶æ
é"
-#: libmedia/gst/MediaParserGst.cpp:358 libmedia/gst/MediaParserGst.cpp:363
-msgid "MediaParserGst: failed adding demuxer to bin."
-msgstr ""
+#: libmedia/gst/VideoInputGst.cpp:1196
+#, c-format
+msgid "%s: couldn't link webcam_source_bin and tee"
+msgstr "%sï¼æ æ³è¿æ¥ webcam_source_bin å tee"
-#: libmedia/gst/MediaParserGst.cpp:390
-msgid "MediaParserGst: couldn't get structure name."
-msgstr ""
+#: libmedia/gst/VideoInputGst.cpp:1203
+#, c-format
+msgid "%s: couldn't link tee and save_queue"
+msgstr "%sï¼æ æ³è¿æ¥ tee å save_queue"
-#: libmedia/gst/MediaParserGst.cpp:404
+#: libmedia/gst/VideoInputGst.cpp:1209
#, c-format
-msgid "MediaParserGst: ignoring stream of type %s."
-msgstr ""
+msgid "%s: couldn't link tee and video_display_queue"
+msgstr "%sï¼æ æ³è¿æ¥ tee å video_display_queue"
-#: libmedia/gst/MediaParserGst.cpp:428
+#: libmedia/gst/VideoInputGst.cpp:1218
#, c-format
-msgid "MediaParserGst: Failed to find a parser (media: %s)."
-msgstr ""
+msgid "%s: couldn't get save_queue_src_pad"
+msgstr "%sï¼æ æ³å¾å° save_queue_src_pad"
-#: libmedia/gst/MediaParserGst.cpp:437
-msgid ""
-"MediaParserGst: Failed to find a parser. We'll continue, but either audio or "
-"video will not work!"
-msgstr ""
+#: libmedia/gst/VideoInputGst.cpp:1228
+#, c-format
+msgid "%s: couldn't get video_display_queue_pad"
+msgstr "%sï¼æ æ³å¾å° video_display_queue_pad"
-#: libmedia/gst/MediaParserGst.cpp:446
-msgid "MediaParserGst: couldn't add parser."
-msgstr ""
+#: libmedia/gst/VideoInputGst.cpp:1240 libmedia/gst/AudioInputGst.cpp:466
+#, c-format
+msgid "%s: Unable to create main pipeline"
+msgstr "%sï¼ä¸è½å建主管é"
-#: libmedia/gst/MediaParserGst.cpp:459
-msgid "MediaParserGst: couldn't link parser."
-msgstr ""
+#: libmedia/gst/VideoInputGst.cpp:1258
+#, c-format
+msgid "%s: something went wrong creating the new video_display_bin"
+msgstr "%sï¼å建æ°ç video_display_bin åçé误"
-#: libmedia/gst/MediaParserGst.cpp:471 libmedia/gst/MediaParserGst.cpp:504
-msgid "MediaParserGst: couldn't link \"fake\" sink."
-msgstr ""
+#: libmedia/gst/VideoInputGst.cpp:1264
+#, c-format
+msgid "%s: problem creating video_scale element"
+msgstr "%sï¼å建 video_scale ç»ä»¶åºé"
-#: libmedia/gst/MediaParserGst.cpp:490
+#: libmedia/gst/VideoInputGst.cpp:1273
#, c-format
-msgid "MediaParserGst: Linked audio source (type: %s)"
-msgstr ""
+msgid "%s: problem creating the video_sink element"
+msgstr "%sï¼å建 video_sink ç»ä»¶åºé"
-#: libmedia/gst/MediaParserGst.cpp:520
+#: libmedia/gst/VideoInputGst.cpp:1282
#, c-format
-msgid "MediaParserGst: Linked video source (type: %s)"
-msgstr ""
+msgid "%s: something went wrong in linking elements in video_display_bin"
+msgstr "%sï¼å¨video_display_binä¸è¿æ¥ç»ä»¶åçé误"
-#: libmedia/gst/AudioDecoderGst.cpp:100
-msgid "Creating AAC decoder without extra data. This will probably fail!"
-msgstr ""
+#: libmedia/gst/VideoInputGst.cpp:1324
+msgid "something went wrong in the make_video_display_link function"
+msgstr "彿° make_video_display_link ä¸åçé误"
-#: libmedia/gst/AudioDecoderGst.cpp:110
+#: libmedia/gst/VideoInputGst.cpp:1356
#, c-format
-msgid "AudioDecoderGst: cannot handle codec %d (%s)"
-msgstr ""
+msgid "%s: the unlinking of the pads failed"
+msgstr "%sï¼å«åæå¼è¿æ¥å¤±è´¥"
-#: libmedia/gst/AudioDecoderGst.cpp:120
+#: libmedia/gst/VideoInputGst.cpp:1386
#, c-format
-msgid "AudioDecoderGst: cannot handle codec %d (no ExtraInfoGst attached)"
-msgstr ""
+msgid "%s: something went wrong in the make_video_display_link function"
+msgstr "%sï¼å½æ° make_video_display_link ä¸åçé误"
-#: libmedia/gst/AudioDecoderGst.cpp:149
-msgid ""
-"The best available resampler is 'audioresample'. Please install gstreamer-"
-"ffmpeg 0.10.4 or newer, or you may experience long delays in audio playback!"
-msgstr ""
-
-#: libmedia/gst/AudioDecoderGst.cpp:168 libmedia/gst/AudioDecoderGst.cpp:188
-msgid "AudioDecoderGst: internal error (caps creation failed)"
-msgstr ""
-
-#: libmedia/gst/AudioDecoderGst.cpp:175
-#, c-format
-msgid "Couldn't find a plugin for audio type %s!"
-msgstr ""
-
-#: libmedia/gst/AudioDecoderGst.cpp:199
+#: libmedia/gst/VideoInputGst.cpp:1416 libmedia/gst/AudioInputGst.cpp:542
+#: libmedia/gst/AudioInputGst.cpp:682
#, c-format
-msgid "AudioDecoderGst: initialisation failed for audio type %s!"
-msgstr ""
-
-#: libmedia/gst/AudioDecoderGst.cpp:227
-msgid "Pushed data, but there's nothing to pull (yet)"
-msgstr ""
-
-#: libmedia/gst/AudioDecoderGst.cpp:263 libmedia/gst/AudioDecoderGst.cpp:291
-msgid "AudioDecoderGst: buffer push failed."
-msgstr ""
-
-#: libmedia/gst/VideoInputGst.cpp:317
-msgid "too high an index value, will cause segfault"
-msgstr ""
+msgid "%s: unlink failed"
+msgstr "%sï¼æå¼è¿æ¥å¤±è´¥"
-#: libmedia/gst/VideoInputGst.cpp:367
+#: libmedia/gst/VideoInputGst.cpp:1423 libmedia/gst/AudioInputGst.cpp:689
#, c-format
-msgid "%s: Could not create video test source."
-msgstr ""
+msgid "%s: couldn't remove saveBin from pipeline"
+msgstr "%sï¼ä¸è½ä»ç®¡éç§»é¤ saveBin"
-#: libmedia/gst/VideoInputGst.cpp:385 libmedia/gst/AudioInputGst.cpp:117
+#: libmedia/gst/VideoInputGst.cpp:1430
#, c-format
-msgid "%s: Could not create pulsesrc element"
-msgstr ""
+msgid "%s: videoSaveBin state change failed"
+msgstr "%sï¼æ¹å videoSaveBin ç¶æå¤±è´¥"
-#: libmedia/gst/VideoInputGst.cpp:390 libmedia/gst/AudioInputGst.cpp:122
+#: libmedia/gst/VideoInputGst.cpp:1453
#, c-format
-msgid "%s: Could not get property probe from pulsesrc element"
-msgstr ""
-
-#: libmedia/gst/VideoInputGst.cpp:626
-msgid "You have an invalid camera selected. Please check your gnashrc file"
-msgstr ""
+msgid "%s: problem with creating video_save_csp element"
+msgstr "%sï¼å建 video_save_csp ç»ä»¶åºé"
-#: libmedia/gst/VideoInputGst.cpp:657
+#: libmedia/gst/VideoInputGst.cpp:1458
#, c-format
-msgid "%s: Passed an invalid argument (not a valid dev_select value)"
-msgstr ""
+msgid "%s: problem with creating video_enc element"
+msgstr "%sï¼å建 video_enc ç»ä»¶åºé"
-#: libmedia/gst/VideoInputGst.cpp:685 libmedia/gst/AudioInputGst.cpp:220
+#: libmedia/gst/VideoInputGst.cpp:1465
#, c-format
-msgid "%s: Pipeline bus isn't an object for some reason"
-msgstr ""
+msgid "%s: problem with creating video_save_rate element"
+msgstr "%sï¼å建 video_save_rate ç»ä»¶åºé"
-#: libmedia/gst/VideoInputGst.cpp:705 libmedia/gst/AudioInputGst.cpp:239
+#: libmedia/gst/VideoInputGst.cpp:1469
#, c-format
-msgid "%s: Template pad isn't an object for some reason"
-msgstr ""
+msgid "%s: problem with creating video_save_scale element"
+msgstr "%sï¼å建 video_save_scale ç»ä»¶åºé"
-#: libmedia/gst/VideoInputGst.cpp:718 libmedia/gst/AudioInputGst.cpp:253
+#: libmedia/gst/VideoInputGst.cpp:1476
#, c-format
-msgid "%s: pipeline isn't an object for some reason"
-msgstr ""
+msgid "%s: problem with creating mux element"
+msgstr "%sï¼å建 mux ç»ä»¶åºé"
-#: libmedia/gst/VideoInputGst.cpp:804
+#: libmedia/gst/VideoInputGst.cpp:1480
#, c-format
-msgid "%s: type %s, cannot be handled for resolution width"
-msgstr ""
+msgid "%s: problem with creating video_file_sink element"
+msgstr "%sï¼å建 video_file_sink ç»ä»¶åºé"
-#: libmedia/gst/VideoInputGst.cpp:825 libmedia/gst/AudioInputGst.cpp:279
+#: libmedia/gst/VideoInputGst.cpp:1500
#, c-format
-msgid "%s: was passed a NULL pointer"
-msgstr ""
+msgid "%s: there was some problem in linking!"
+msgstr "%sï¼é¾æ¥æ¶åºéï¼"
-#: libmedia/gst/VideoInputGst.cpp:931 libmedia/gst/VideoInputGst.cpp:1104
-#, c-format
-msgid "%s: Creation of the webcam_source_bin failed"
-msgstr ""
+#: libmedia/gst/MediaParserGst.cpp:53
+msgid "MediaParserGst couldn't create a bin"
+msgstr "MediaParserGstä¸è½å建ä¸ä¸ªbin"
-#: libmedia/gst/VideoInputGst.cpp:933 libmedia/gst/VideoInputGst.cpp:1106
-#: libmedia/gst/AudioInputGst.cpp:326 libmedia/gst/AudioInputGst.cpp:382
-#, c-format
-msgid "the error was %s"
-msgstr ""
+#: libmedia/gst/MediaParserGst.cpp:58
+msgid "MediaParserGst couldn't create a typefind element."
+msgstr "MediaParserGstä¸è½å建ä¸ä¸ªtypefindå
ç´ ã"
-#: libmedia/gst/VideoInputGst.cpp:961
-#, c-format
-msgid "%s: webam isn't set!"
-msgstr ""
+#: libmedia/gst/MediaParserGst.cpp:70 libmedia/gst/MediaParserGst.cpp:74
+#: libmedia/gst/MediaParserGst.cpp:282 libmedia/gst/MediaParserGst.cpp:339
+#: libmedia/gst/MediaParserGst.cpp:493
+msgid "MediaParserGst could not change element state"
+msgstr "MediaParserGstæ æ³æ¹åå
ç´ çç¶æ"
-#: libmedia/gst/VideoInputGst.cpp:1024
-#, c-format
+#: libmedia/gst/MediaParserGst.cpp:167
msgid ""
-"%s: the resolution you chose isn't supported, picking a "
-"supported value"
-msgstr ""
-
-#: libmedia/gst/VideoInputGst.cpp:1128 libmedia/gst/AudioInputGst.cpp:337
-#, c-format
-msgid "%s: couldn't drop the sourcebin back into the main bin"
-msgstr ""
-
-#: libmedia/gst/VideoInputGst.cpp:1137 libmedia/gst/AudioInputGst.cpp:347
-#, c-format
-msgid "%s: couldn't link up sourcebin and tee"
-msgstr ""
-
-#: libmedia/gst/VideoInputGst.cpp:1169
-#, c-format
-msgid "%s: problem creating source bin"
-msgstr ""
-
-#: libmedia/gst/VideoInputGst.cpp:1176 libmedia/gst/AudioInputGst.cpp:410
-#, c-format
-msgid "%s: problem creating tee element"
-msgstr ""
-
-#: libmedia/gst/VideoInputGst.cpp:1180 libmedia/gst/AudioInputGst.cpp:414
-#, c-format
-msgid "%s: problem creating save_queue element"
-msgstr ""
-
-#: libmedia/gst/VideoInputGst.cpp:1185
-#, c-format
-msgid "%s: problem creating video_display_queue element"
-msgstr ""
-
-#: libmedia/gst/VideoInputGst.cpp:1196
-#, c-format
-msgid "%s: couldn't link webcam_source_bin and tee"
-msgstr ""
-
-#: libmedia/gst/VideoInputGst.cpp:1203
-#, c-format
-msgid "%s: couldn't link tee and save_queue"
-msgstr ""
-
-#: libmedia/gst/VideoInputGst.cpp:1209
-#, c-format
-msgid "%s: couldn't link tee and video_display_queue"
-msgstr ""
-
-#: libmedia/gst/VideoInputGst.cpp:1218
-#, c-format
-msgid "%s: couldn't get save_queue_src_pad"
-msgstr ""
-
-#: libmedia/gst/VideoInputGst.cpp:1228
-#, c-format
-msgid "%s: couldn't get video_display_queue_pad"
-msgstr ""
-
-#: libmedia/gst/VideoInputGst.cpp:1240 libmedia/gst/AudioInputGst.cpp:464
-#, c-format
-msgid "%s: Unable to create main pipeline"
-msgstr ""
-
-#: libmedia/gst/VideoInputGst.cpp:1258
-#, c-format
-msgid "%s: something went wrong creating the new video_display_bin"
-msgstr ""
+"MediaParserGst failed to read the stream, but it did not reach EOF or enter "
+"a bad state."
+msgstr "MediaParserGstæ æ³è¯»åæµï¼ä½å®å¹¶æ²¡æç»ææè¿å
¥ä¸æ£ç¡®çç¶æã"
-#: libmedia/gst/VideoInputGst.cpp:1264
-#, c-format
-msgid "%s: problem creating video_scale element"
-msgstr ""
+#: libmedia/gst/MediaParserGst.cpp:184
+#, fuzzy
+msgid "MediaParserGst failed to push more data into the demuxer."
+msgstr "MediaParserGstæ æ³æ¨å
¥æ´å¤çæ°æ®å°åè·¯å¨ï¼å®ä½å°åé¢ã"
-#: libmedia/gst/VideoInputGst.cpp:1273
+#: libmedia/gst/MediaParserGst.cpp:245
#, c-format
-msgid "%s: problem creating the video_sink element"
-msgstr ""
+msgid "MediaParserGst/typefound: Detected media type %s"
+msgstr "MediaParserGst/ typefoundï¼æ£æµå°åªä½ç±»å %s"
-#: libmedia/gst/VideoInputGst.cpp:1282
-#, c-format
-msgid "%s: something went wrong in linking elements in video_display_bin"
-msgstr ""
+#: libmedia/gst/MediaParserGst.cpp:257 libmedia/gst/MediaParserGst.cpp:264
+msgid "MediaParserGst Failed to create fakesink."
+msgstr "MediaParserGstå建fakesink失败ã"
-#: libmedia/gst/VideoInputGst.cpp:1324
-msgid "something went wrong in the make_video_display_link function"
-msgstr ""
+#: libmedia/gst/MediaParserGst.cpp:270
+msgid "MediaParserGst: couldn't get the fakesink src element."
+msgstr "MediaParserGstï¼æ æ³å¾å°fakesink srcå
ç´ ã"
-#: libmedia/gst/VideoInputGst.cpp:1356
-#, c-format
-msgid "%s: the unlinking of the pads failed"
-msgstr ""
+#: libmedia/gst/MediaParserGst.cpp:278
+msgid "MediaParserGst: couln't link fakesink"
+msgstr "MediaParserGstï¼æ æ³é¾æ¥fakesink"
-#: libmedia/gst/VideoInputGst.cpp:1386
-#, c-format
-msgid "%s: something went wrong in the make_video_display_link function"
-msgstr ""
+#: libmedia/gst/MediaParserGst.cpp:302
+msgid "MediaParserGst: couldn't get the typefind src element."
+msgstr "MediaParserGstï¼æ æ³å¾å°typefind srcå
ç´ ã"
-#: libmedia/gst/VideoInputGst.cpp:1416 libmedia/gst/AudioInputGst.cpp:540
-#: libmedia/gst/AudioInputGst.cpp:680
-#, c-format
-msgid "%s: unlink failed"
-msgstr ""
+#: libmedia/gst/MediaParserGst.cpp:317
+msgid "MediaParserGst: couldn't create the demuxer"
+msgstr "MediaParserGstï¼æ æ³å建åè·¯å¨"
-#: libmedia/gst/VideoInputGst.cpp:1423 libmedia/gst/AudioInputGst.cpp:687
-#, c-format
-msgid "%s: couldn't remove saveBin from pipeline"
-msgstr ""
+#: libmedia/gst/MediaParserGst.cpp:323 libmedia/gst/MediaParserGst.cpp:328
+msgid "MediaParserGst: failed adding demuxer to bin."
+msgstr "MediaParserGstï¼æ·»å åè·¯å¨å°bin失败ã"
-#: libmedia/gst/VideoInputGst.cpp:1430
-#, c-format
-msgid "%s: videoSaveBin state change failed"
-msgstr ""
+#: libmedia/gst/MediaParserGst.cpp:355
+msgid "MediaParserGst: couldn't get structure name."
+msgstr "MediaParserGstï¼æ æ³å¾å°ç»æçåç§°ã"
-#: libmedia/gst/VideoInputGst.cpp:1453
+#: libmedia/gst/MediaParserGst.cpp:369
#, c-format
-msgid "%s: problem with creating video_save_csp element"
-msgstr ""
+msgid "MediaParserGst: ignoring stream of type %s."
+msgstr "MediaParserGstï¼å¿½ç¥ç±»å %s çæµã"
-#: libmedia/gst/VideoInputGst.cpp:1458
+#: libmedia/gst/MediaParserGst.cpp:393
#, c-format
-msgid "%s: problem with creating video_enc element"
-msgstr ""
+msgid "MediaParserGst: Failed to find a parser (media: %s)."
+msgstr "MediaParserGstï¼æ æ³æ¾å°ä¸ä¸ªè§£æå¨ï¼åªä½ï¼%sï¼ã"
-#: libmedia/gst/VideoInputGst.cpp:1465
-#, c-format
-msgid "%s: problem with creating video_save_rate element"
+#: libmedia/gst/MediaParserGst.cpp:402
+msgid ""
+"MediaParserGst: Failed to find a parser. We'll continue, but either audio or "
+"video will not work!"
msgstr ""
+"MediaParserGstï¼æ æ³æ¾å°ä¸ä¸ªè§£æå¨ãæä»¬å°ç»§ç»è¿è¡ï¼ä½é³é¢æè§é¢å°æ æ³æ£å¸¸å·¥"
+"ä½ï¼"
-#: libmedia/gst/VideoInputGst.cpp:1469
-#, c-format
-msgid "%s: problem with creating video_save_scale element"
-msgstr ""
+#: libmedia/gst/MediaParserGst.cpp:411
+msgid "MediaParserGst: couldn't add parser."
+msgstr "MediaParserGstï¼ä¸è½æ·»å è§£æå¨ã"
-#: libmedia/gst/VideoInputGst.cpp:1476
-#, c-format
-msgid "%s: problem with creating mux element"
-msgstr ""
+#: libmedia/gst/MediaParserGst.cpp:424
+msgid "MediaParserGst: couldn't link parser."
+msgstr "MediaParserGstï¼ä¸è½é¾æ¥è§£æå¨ã"
-#: libmedia/gst/VideoInputGst.cpp:1480
-#, c-format
-msgid "%s: problem with creating video_file_sink element"
-msgstr ""
+#: libmedia/gst/MediaParserGst.cpp:436 libmedia/gst/MediaParserGst.cpp:469
+msgid "MediaParserGst: couldn't link \"fake\" sink."
+msgstr "MediaParserGstï¼æ æ³è¿æ¥â伪è£
âæ§½ã"
-#: libmedia/gst/VideoInputGst.cpp:1500
+#: libmedia/gst/MediaParserGst.cpp:455
#, c-format
-msgid "%s: there was some problem in linking!"
-msgstr ""
-
-#: libmedia/gst/MediaHandlerGst.cpp:90
-msgid "Wrong arguments given to GST VideoDecoder"
-msgstr ""
+msgid "MediaParserGst: Linked audio source (type: %s)"
+msgstr "MediaParserGstï¼é¾æ¥çé³é¢æºï¼ç±»åï¼%sï¼"
-#: libmedia/gst/MediaHandlerGst.cpp:137
+#: libmedia/gst/MediaParserGst.cpp:485
#, c-format
-msgid "MediaHandlerGst::createAudioDecoder: %s -- %s"
-msgstr ""
+msgid "MediaParserGst: Linked video source (type: %s)"
+msgstr "MediaParserGstï¼é¾æ¥çè§é¢æºï¼ç±»åï¼%sï¼"
-#: libmedia/gst/AudioInputGst.cpp:100
+#: libmedia/gst/AudioInputGst.cpp:102
#, c-format
msgid "%s: Could not create audio test source"
-msgstr ""
+msgstr "%sï¼æ æ³å建é³é¢æµè¯æº"
-#: libmedia/gst/AudioInputGst.cpp:190
+#: libmedia/gst/AudioInputGst.cpp:192
#, c-format
msgid "%s: passed an invalid devselect argument"
-msgstr ""
+msgstr "%sï¼ä¼ å
¥ä¸ä¸ªæ æç devselect åæ°"
-#: libmedia/gst/AudioInputGst.cpp:244
+#: libmedia/gst/AudioInputGst.cpp:246
msgid "The input device you selected isn't supported (yet)"
-msgstr ""
+msgstr "䏿¯ææ¨æéæ©çè¾å
¥è®¾å¤"
-#: libmedia/gst/AudioInputGst.cpp:270
+#: libmedia/gst/AudioInputGst.cpp:272
#, c-format
msgid "%s: Passed a bad devselect value"
-msgstr ""
+msgstr "%sï¼ä¼ å
¥ä¸ä¸ªé误ç devselect å¼"
-#: libmedia/gst/AudioInputGst.cpp:324 libmedia/gst/AudioInputGst.cpp:380
+#: libmedia/gst/AudioInputGst.cpp:326 libmedia/gst/AudioInputGst.cpp:382
#, c-format
msgid "%s: Creation of the audioSourceBin failed"
-msgstr ""
+msgstr "%sï¼å建 audioSourceBin 失败"
-#: libmedia/gst/AudioInputGst.cpp:406
+#: libmedia/gst/AudioInputGst.cpp:408
#, c-format
msgid "%s: audioCreateSourceBin failed!"
-msgstr ""
+msgstr "%sï¼audioCreateSourceBin 失败"
-#: libmedia/gst/AudioInputGst.cpp:419
+#: libmedia/gst/AudioInputGst.cpp:421
#, c-format
msgid "%s: problem creating audioPlaybackQueue element"
-msgstr ""
+msgstr "%sï¼å建 audioPlaybackQueue ç»ä»¶åºé"
-#: libmedia/gst/AudioInputGst.cpp:426
+#: libmedia/gst/AudioInputGst.cpp:428
#, c-format
msgid "%s: couldn't link audioSourceBin and tee"
-msgstr ""
+msgstr "%sï¼æ æ³è¿æ¥ audioSourceBin å tee"
-#: libmedia/gst/AudioInputGst.cpp:431
+#: libmedia/gst/AudioInputGst.cpp:433
#, c-format
msgid "%s: couldn't link tee and saveQueue"
-msgstr ""
+msgstr "%s: æ æ³è¿æ¥ tee å saveQueue"
-#: libmedia/gst/AudioInputGst.cpp:436
+#: libmedia/gst/AudioInputGst.cpp:438
#, c-format
msgid "%s: couldn't link tee and audioPlaybackQueue"
-msgstr ""
+msgstr "%s: æ æ³è¿æ¥ tee å audioPlaybackQueue"
-#: libmedia/gst/AudioInputGst.cpp:445
+#: libmedia/gst/AudioInputGst.cpp:447
#, c-format
msgid "%s: couldn't get saveQueueSrcPad"
-msgstr ""
+msgstr "%s: æ æ³å¾å° saveQueueSrcPad"
-#: libmedia/gst/AudioInputGst.cpp:455
+#: libmedia/gst/AudioInputGst.cpp:457
#, c-format
msgid "%s: couldn't get audioPlaybackQueue"
-msgstr ""
+msgstr "%s: æ æ³å¾å° audioPlaybackQueue"
-#: libmedia/gst/AudioInputGst.cpp:481
+#: libmedia/gst/AudioInputGst.cpp:483
#, c-format
msgid "%s: There was a problem making the audiosink!"
-msgstr ""
+msgstr "%s: çæ audiosink åºéï¼"
-#: libmedia/gst/AudioInputGst.cpp:517
+#: libmedia/gst/AudioInputGst.cpp:519
msgid "something went wrong in the makeSourcePlaybackLink function"
-msgstr ""
+msgstr "å¨makeSourcePlaybackLink彿°ä¸æå¤åºé"
-#: libmedia/gst/AudioInputGst.cpp:548
+#: libmedia/gst/AudioInputGst.cpp:550
#, c-format
msgid "%s: couldn't remove audioPlaybackBin from pipeline"
-msgstr ""
+msgstr "%s: æ æ³ä»ç®¡éç§»é¤ audioPlaybackBin"
-#: libmedia/gst/AudioInputGst.cpp:555
+#: libmedia/gst/AudioInputGst.cpp:557
#, c-format
msgid "%s: changing state of audioPlaybackBin failed"
-msgstr ""
+msgstr "%s: æ¹åaudioPlaybackBinç¶æå¤±è´¥"
-#: libmedia/gst/AudioInputGst.cpp:579
+#: libmedia/gst/AudioInputGst.cpp:581
#, c-format
msgid "Error: %s"
-msgstr ""
+msgstr "é误ï¼%s"
-#: libmedia/gst/AudioInputGst.cpp:599
+#: libmedia/gst/AudioInputGst.cpp:601
#, c-format
msgid "%s: Couldn't make audioconvert element"
-msgstr ""
+msgstr "%s: æ æ³çæ audioconvert ç»ä»¶"
-#: libmedia/gst/AudioInputGst.cpp:603
+#: libmedia/gst/AudioInputGst.cpp:605
#, c-format
msgid "%s: Couldn't make vorbisenc element"
-msgstr ""
+msgstr "%s: æ æ³çæ vorbisenc ç»ä»¶"
-#: libmedia/gst/AudioInputGst.cpp:607
+#: libmedia/gst/AudioInputGst.cpp:609
#, c-format
msgid "%s: Couldn't make oggmux element"
-msgstr ""
+msgstr "%s: æ æ³çæ oggmux ç»ä»¶"
-#: libmedia/gst/AudioInputGst.cpp:611
+#: libmedia/gst/AudioInputGst.cpp:613
#, c-format
msgid "%s: Couldn't make filesink element"
-msgstr ""
+msgstr "%s: æ æ³çæ filesink ç»ä»¶"
-#: libmedia/gst/AudioInputGst.cpp:630
+#: libmedia/gst/AudioInputGst.cpp:632
#, c-format
msgid "%s: Something went wrong in linking"
-msgstr ""
+msgstr "%s: è¿æ¥åçé误"
-#: libmedia/gst/AudioInputGst.cpp:658
+#: libmedia/gst/AudioInputGst.cpp:660
msgid "something went wrong in the makeAudioSourceSaveLink function"
-msgstr ""
+msgstr "å¨ makeAudioSourceSaveLink 彿°ä¸åçé误"
-#: libmedia/gst/AudioInputGst.cpp:694
+#: libmedia/gst/AudioInputGst.cpp:696
#, c-format
msgid "%s: audioSaveBin state change failed"
-msgstr ""
+msgstr "%s: æ¹å audioSaveBin ç¶æå¤±è´¥"
-#: libmedia/gst/AudioInputGst.cpp:755
+#: libmedia/gst/AudioInputGst.cpp:757
msgid "You have an invalid microphone selected. Check your gnashrc file"
-msgstr ""
+msgstr "éæ©äºä¸ä¸ªæ æç麦å
é£ãæ£æ¥æ¨ç gnashrc æä»¶"
-#: libmedia/AudioDecoderSimple.cpp:163
-msgid "corrupted ADPCM header"
-msgstr ""
+#: libmedia/gst/AudioDecoderGst.cpp:100
+msgid "Creating AAC decoder without extra data. This will probably fail!"
+msgstr "å建ä¸å¸¦é¢å¤æ°æ®çAACè§£ç å¨ãè¿å¯è½ä¼å¤±è´¥ï¼"
-#: libmedia/AudioDecoderSimple.cpp:291 libmedia/AudioDecoderSimple.cpp:304
+#: libmedia/gst/AudioDecoderGst.cpp:110
#, c-format
-msgid "AudioDecoderSimple: initialized flash codec %s (%d)"
-msgstr ""
+msgid "AudioDecoderGst: cannot handle codec %d (%s)"
+msgstr "AudioDecoderGstï¼ä¸è½å¤çç¼è§£ç å¨%d (%s)"
-#: libmedia/AudioDecoderSimple.cpp:330 libmedia/AudioDecoderSimple.cpp:361
+#: libmedia/gst/AudioDecoderGst.cpp:120
#, c-format
-msgid "AudioDecoderSimple: unsupported flash codec %d (%s)"
-msgstr ""
+msgid "AudioDecoderGst: cannot handle codec %d (no ExtraInfoGst attached)"
+msgstr "AudioDecoderGstï¼ä¸è½å¤çç¼è§£ç å¨%d (没æéå ExtraInfoGst)"
-#: libmedia/AudioDecoderSimple.cpp:341
-#, c-format
-msgid "AudioDecoderSimple: unable to intepret custom audio codec id %s"
+#: libmedia/gst/AudioDecoderGst.cpp:149
+msgid ""
+"The best available resampler is 'audioresample'. Please install gstreamer-"
+"ffmpeg 0.10.4 or newer, or you may experience long delays in audio playback!"
msgstr ""
+"æå¥½ç¨çéæ ·å¨æ¯'audioresampleâã请å®è£
gstreamer-ffmpeg 0.10.4ææ´é«çæ¬ï¼å¦"
+"åå¯è½å¨é³é¢ææ¾æ¶ä¼éå°é¿æ¶é´çå»¶è¿ï¼"
-#: libmedia/AudioDecoderSimple.cpp:428
-msgid "Host endianness not detected in AudioDecoderSimple"
-msgstr ""
+#: libmedia/gst/AudioDecoderGst.cpp:168 libmedia/gst/AudioDecoderGst.cpp:188
+msgid "AudioDecoderGst: internal error (caps creation failed)"
+msgstr "AudioDecoderGstï¼å
é¨é误ï¼capså建失败ï¼"
-#: libmedia/AudioDecoderSimple.cpp:478
-msgid "Error in sound sample conversion"
-msgstr ""
+#: libmedia/gst/AudioDecoderGst.cpp:175
+#, c-format
+msgid "Couldn't find a plugin for audio type %s!"
+msgstr "æ æ³æ¾å°ä¸ä¸ªé³é¢ç±»å %sçæä»¶ï¼"
-#: libmedia/MediaHandler.cpp:49
-msgid "MediaHandler::isFLV: Could not read 3 bytes from input stream"
-msgstr ""
+#: libmedia/gst/AudioDecoderGst.cpp:199
+#, c-format
+msgid "AudioDecoderGst: initialisation failed for audio type %s!"
+msgstr "AudioDecoderGstï¼æ æ³åå§åé³é¢ç±»åï¼
sï¼"
-#: libmedia/MediaHandler.cpp:65
-msgid ""
-"MediaHandler::createMediaParser: only FLV input is supported by this "
-"MediaHandler"
-msgstr ""
+#: libmedia/gst/AudioDecoderGst.cpp:227
+msgid "Pushed data, but there's nothing to pull (yet)"
+msgstr "æ°æ®å·²æ¾å
¥ï¼ä½è¿æ²¡æå¯ä»¥ååºçã"
-#: libmedia/MediaHandler.cpp:71
+#: libmedia/gst/AudioDecoderGst.cpp:263 libmedia/gst/AudioDecoderGst.cpp:291
+msgid "AudioDecoderGst: buffer push failed."
+msgstr "AudioDecoderGstï¼æ¾å
¥ç¼å²åºå¤±è´¥ã"
+
+#: libmedia/haiku/MediaHandlerHaiku.cpp:115
#, c-format
-msgid "Exception while reading from stream: %s"
-msgstr ""
+msgid "MediaHandlerHaiku::createAudioDecoder: %s -- %s"
+msgstr "MediaHandlerHaiku::createAudioDecoder: %s -- %s"
-#: libmedia/MediaHandler.cpp:108
+#: libmedia/MediaParser.cpp:83
+msgid "No ID3 support implemented in this MediaParser"
+msgstr "该MediaParser没æå®ç°ID3æ¯æ"
+
+#: libcore/abc/AbcBlock.cpp:65 libcore/abc/AbcBlock.cpp:133
+msgid "ABC: Finalizing trait yielded bad type for slot."
+msgstr "ABC: æç»ç¹å¾äº§çé误ééç±»åã"
+
+#: libcore/abc/AbcBlock.cpp:188
+msgid "ABC: Bad name for trait."
+msgstr "ABC: é误çç¹å¾åç§°ã"
+
+#: libcore/abc/AbcBlock.cpp:193
+msgid "ABC: Trait name must be fully qualified."
+msgstr "ABC: ç¹å¾åç§°å¿
é¡»å®å
¨ç¬¦åã"
+
+#: libcore/abc/AbcBlock.cpp:240 libcore/abc/AbcBlock.cpp:266
+msgid "Bad method id in trait."
+msgstr "ç¹å¾ä¸éè¯¯çæ¹æ³IDã"
+
+#: libcore/abc/AbcBlock.cpp:256
+msgid "Bad Class id in trait."
+msgstr "ç¹å¾ä¸é误çç±»idã"
+
+#: libcore/abc/AbcBlock.cpp:274
+msgid "ABC: Unknown type of trait."
+msgstr "ABC: æªç¥çç¹å¾ç±»åã"
+
+#: libcore/abc/AbcBlock.cpp:468
#, c-format
-msgid ""
-"MediaHandler::createFlashAudioDecoder: no available flash decoders for codec "
-"%d (%s)"
-msgstr ""
+msgid "Abc Version: %d.%d"
+msgstr "Abc çæ¬: %d.%d"
+
+#: libcore/abc/AbcBlock.cpp:567
+msgid "ABC: Bad string given for namespace."
+msgstr "ABC: é误çå½å空é´å符串ã"
+
+#: libcore/abc/AbcBlock.cpp:609
+msgid "ABC: Bad namespace for namespace set."
+msgstr "ABC: é误å½å空é´çå½å空é´éã"
-#: libcore/ExternalInterface.cpp:133
+#: libcore/abc/AbcBlock.cpp:679
#, c-format
-msgid "Can't convert unknown type %d"
-msgstr ""
+msgid "Action Block: Unknown multiname type (%d)."
+msgstr "æä½åºå: æªç¥çå¤åç§°ç±»å (%d)ã"
-#: libcore/as_value.cpp:768
+#: libcore/abc/AbcBlock.cpp:712 libcore/abc/AbcBlock.cpp:722
+#: libcore/abc/AbcBlock.cpp:732 libcore/abc/AbcBlock.cpp:742
+msgid "Action Block: Bad index in optional argument."
+msgstr "æä½åºå: å¯éåæ°çé误索å¼ã"
+
+#: libcore/abc/AbcBlock.cpp:752
+msgid "ABC: Bad index in optional argument, namespaces."
+msgstr "ABC: å¯éåæ°ï¼å½å空é´ä¸çé误索å¼ã"
+
+#: libcore/abc/AbcBlock.cpp:774
#, c-format
-msgid "serialization of as_value of type %d"
-msgstr ""
+msgid "ABC: Bad default value type (%X), but continuing."
+msgstr "ABC: é误ç缺çå¼ç±»å (%X), å¯ä»¥ç»§ç»ã"
-#: libcore/ClassHierarchy.cpp:85
+#: libcore/abc/AbcBlock.cpp:812
+msgid "ABC: Bad return type for method info."
+msgstr "ABC: æ¹æ³ä¿¡æ¯çé误è¿åç±»åã"
+
+#: libcore/abc/AbcBlock.cpp:825
+msgid "ABC: Unknown return type."
+msgstr "ABC: æªç¥çè¿åç±»åã"
+
+#: libcore/abc/AbcBlock.cpp:842
+msgid "ABC: Bad parameter type in method."
+msgstr "ABC: æ¹æ³ä¸é误çåæ°ç±»åã"
+
+#: libcore/abc/AbcBlock.cpp:851
+msgid "ABC: Unknown parameter type."
+msgstr "ABC: æªç¥çåæ°ç±»åã"
+
+#: libcore/abc/AbcBlock.cpp:940
+msgid "ABC: Out of bounds instance name."
+msgstr "ABC: è¶
åºè¾¹ççå®ä¾åç§°ã"
+
+#: libcore/abc/AbcBlock.cpp:948
+msgid "ABC: QName required for instance."
+msgstr "ABC: å®ä¾æéç QNameã"
+
+#: libcore/abc/AbcBlock.cpp:953
+msgid "ABC: No namespace to use for storing class."
+msgstr "ABC: 没æç¨äºåæ¾ç±»çå½å空é´ã"
+
+#: libcore/abc/AbcBlock.cpp:968
+msgid "Duplicate class registration."
+msgstr "éå¤ç类注åã"
+
+#: libcore/abc/AbcBlock.cpp:984
+msgid "ABC: Bad super type."
+msgstr "ABC: é误çè¶
ç±»ã"
+
+#: libcore/abc/AbcBlock.cpp:995
#, c-format
-msgid "Native class %s is not an object after initialization (%s)"
-msgstr ""
+msgid "ABC: Super type not found (%s)"
+msgstr "ABC: æªæ¾å°è¶
ç±» (%s)"
-#: libcore/ClassHierarchy.cpp:92
+#: libcore/abc/AbcBlock.cpp:1002
+msgid "ABC: Can't extend a class which is final."
+msgstr "ABC: æ æ³extend ä¸ä¸ª final ç±»ã"
+
+#: libcore/abc/AbcBlock.cpp:1008
+msgid "ABC: Can't extend an interface type."
+msgstr "ABC: æ æ³ extend ä¸ä¸ªæ¥å£ç±»åã"
+
+#: libcore/abc/AbcBlock.cpp:1014
+msgid "ABC: Class cannot be its own supertype."
+msgstr "ABC: ç±»ä¸è½ä¸ºå®èªå·±çè¶
ç±»ã"
+
+#: libcore/abc/AbcBlock.cpp:1035
+msgid "ABC: Bad namespace for protected."
+msgstr "ABC: é误ç protected å½å空é´ã"
+
+#: libcore/abc/AbcBlock.cpp:1054
+msgid "ABC: Bad name for interface."
+msgstr "ABC: éè¯¯çæ¥å£åç§°ã"
+
+#: libcore/abc/AbcBlock.cpp:1061
+msgid "ABC: Can't implement a non-interface type."
+msgstr "ABC: æ æ³å®ç°ä¸ä¸ªéæ¥å£ç±»åã"
+
+#: libcore/abc/AbcBlock.cpp:1073
+msgid "ABC: Out of bounds method for initializer."
+msgstr "ABC: è¶
åºè¾¹ççåå§åæ¹æ³ã"
+
+#: libcore/abc/AbcBlock.cpp:1108
+msgid "ABC: Out of bound static constructor for class."
+msgstr "ABC: è¶
åºè¾¹ççç±»çéææé 彿°ã"
+
+#: libcore/abc/AbcBlock.cpp:1147
+msgid "ABC: Out of bounds method for script."
+msgstr "ABC: è¶
åºè¾¹ççèæ¬æ¹æ³ã"
+
+#: libcore/abc/AbcBlock.cpp:1183
+msgid "ABC: Out of bounds for method body."
+msgstr "ABC: è¶
åºè¾¹çç䏻使¹æ³ã"
+
+#: libcore/abc/AbcBlock.cpp:1190
+msgid "ABC: Only one body per method."
+msgstr "ABC: æ¯ä¸ªæ¹æ³åªæä¸ä¸ªä¸»ä½ã"
+
+#: libcore/abc/AbcBlock.cpp:1236
+msgid "ABC: Out of bound type for exception."
+msgstr "ABC: è¶
åºè¾¹ççå¼å¸¸ç±»åã"
+
+#: libcore/abc/AbcBlock.cpp:1246
#, c-format
-msgid "Native class %s is not found after initialization"
-msgstr ""
+msgid "ABC: Unknown type of object to catch. (%s)"
+msgstr "ABC: æè·çæªç¥å¯¹è±¡ç±»åã (%s)"
+
+#: libcore/abc/AbcBlock.cpp:1264
+msgid "ABC: Out of bound name for caught exception."
+msgstr "ABC: è¶
åºè¾¹ççæè·å¼å¸¸çåç§°ã"
-#: libcore/MovieLoader.cpp:259
+#: libcore/ExternalInterface.cpp:137
#, c-format
-msgid "Can't create Movie instance for definition loaded from %s"
-msgstr ""
+msgid "Can't convert unknown type %d"
+msgstr "æ æ³è½¬æ¢æªç¥ç±»å %d"
-#: libcore/FreetypeGlyphsProvider.cpp:254
+#: libcore/MovieClip.cpp:621
#, c-format
-msgid "Can't init FreeType! Error = %d"
-msgstr ""
+msgid "call_frame('%s') -- invalid frame"
+msgstr "call_frame('%s') -- ä¸åæ³ç帧"
+
+#: libcore/MovieClip.cpp:667
+msgid "Can't clone root of the movie"
+msgstr "æ æ³å
é该çµå½±çæ ¹èç¹"
-#: libcore/FreetypeGlyphsProvider.cpp:266
+#: libcore/MovieClip.cpp:675
#, c-format
-msgid "Can't close FreeType! Error = %d"
-msgstr ""
+msgid "%s parent is not a movieclip, can't clone"
+msgstr "%s ç¶èç¹ä¸æ¯ä¸ä¸ªçµå½±ç段, æ æ³å
é"
-#: libcore/FreetypeGlyphsProvider.cpp:280
+#: libcore/MovieClip.cpp:852
+msgid "MovieClip.unloadMovie()"
+msgstr "MovieClip.unloadMovie()"
+
+#: libcore/MovieClip.cpp:885
#, c-format
-msgid "Failed to find fonts directory, using hard-coded font filename \"%s\""
+msgid "advance_movieclip: no frames loaded for movieclip/movie %s"
+msgstr "advance_movieclip: 没æå è½½çµå½±ç段/çµå½± %s ç帧"
+
+#: libcore/MovieClip.cpp:935
+msgid ""
+"Flushing orphaned tags in movieclip %1%. _currentFrame:%2%, _hasLooped:%3%, "
+"frame_count:%4%"
msgstr ""
+"ç«å³åå
¥åç¬çæ ç¾å°çµå½±ç段 %1%. _currentFrame:%2%, _hasLooped:%3%, "
+"frame_count:%4%"
-#: libcore/FreetypeGlyphsProvider.cpp:293
+#: libcore/MovieClip.cpp:1046
#, c-format
-msgid "Can't init fontconfig library, using hard-coded font filename \"%s\""
-msgstr ""
+msgid "Executing %d tags in frame %d/%d of movieclip %s"
+msgstr "æ§è¡ %d æ ç¾ï¼å¸§ %d/%dï¼çµå½±ç段 %s"
-#: libcore/FreetypeGlyphsProvider.cpp:355
+#: libcore/MovieClip.cpp:1084 libcore/MovieClip.cpp:1125
#, c-format
-msgid "No device font matches the name '%s', using hard-coded font filename"
+msgid ""
+"Target frame of a gotoFrame(%d) was never loaded, although frame count in "
+"header (%d) said we should have found it"
msgstr ""
+"ä¸ä¸ª gotoFrame(%d) çç®æ 叧仿ªè¢«å è½½ï¼å°½ç®¡å¤´é¨ç帧æ°(%d) åè¯æä»¬åºè¯¥å·²ç»æ¾"
+"å°æ¹å¸§"
-#: libcore/FreetypeGlyphsProvider.cpp:360
+#: libcore/MovieClip.cpp:1116
+#, c-format
msgid ""
-"Font filename matching not implemented (no fontconfig support built-in), "
-"using hard-coded font filename"
+"GotoFrame(%d) targets a yet to be loaded frame (%d). We'll wait for it but a "
+"more correct form is explicitly using WaitForFrame instead"
msgstr ""
+"GotoFrame(%d) å°è·³è½¬å°ä¸ä¸ªè¿å·²å è½½ç帧 (%d)ãæä»¬å°çå¾
ï¼ä½ä½¿ç¨WaitForFrameä¼"
+"æ¯ä¸ä¸ªæ´å æ£ç¡®çæ¹å¼"
-#: libcore/FreetypeGlyphsProvider.cpp:393
-msgid "Freetype not supported"
-msgstr ""
+#: libcore/MovieClip.cpp:1189
+#, c-format
+msgid "MovieClip::goto_labeled_frame('%s') unknown label"
+msgstr "MovieClip::goto_labeled_frame('%s') æªç¥çæ è®°"
-#: libcore/FreetypeGlyphsProvider.cpp:434
+#: libcore/MovieClip.cpp:1248
#, c-format
-msgid "Can't find font file for font '%s'"
-msgstr ""
+msgid "MovieClip::add_display_object(): unknown cid = %d"
+msgstr "MovieClip::add_display_object(): æªç¥ cid = %d"
-#: libcore/FreetypeGlyphsProvider.cpp:447
+#: libcore/MovieClip.cpp:1318
#, c-format
-msgid "Font file '%s' has bad format"
-msgstr ""
+msgid "movieclip::replace_display_object(): unknown cid = %d"
+msgstr "movieclip::replace_display_object(): æªç¥ cid = %d"
-#: libcore/FreetypeGlyphsProvider.cpp:456
+#: libcore/MovieClip.cpp:1327
#, c-format
-msgid "Some error opening font '%s'"
+msgid ""
+"MovieClip::replace_display_object: could not find any DisplayObject at depth "
+"%d"
msgstr ""
+"MovieClip::replace_display_object: æ æ³æ¾å°ä»»ä½å¨æ·±åº¦ %d çDisplayObject"
-#: libcore/FreetypeGlyphsProvider.cpp:490
+#: libcore/MovieClip.cpp:1905
#, c-format
-msgid "Error loading freetype outline glyph for char '%c' (error: %d)"
-msgstr ""
+msgid "Could not load variables from %s"
+msgstr "æ æ³ä» %s å è½½åé"
-#: libcore/FreetypeGlyphsProvider.cpp:506
+#: libcore/MovieClip.cpp:1958
#, c-format
msgid ""
-"FT_Load_Char() returned a glyph format != FT_GLYPH_FORMAT_OUTLINE (%c%c%c%c)"
+"removeMovieClip(%s): movieclip depth (%d) out of the 'dynamic' zone "
+"[0..1048575], won't remove"
msgstr ""
+"removeMovieClip(%s): çµå½±ç段深度 (%d) è¶
åºè¯¥ 'dynamic' åºå [0..1048575], ä¸"
+"ä¼å é¤"
-#: libcore/FreetypeGlyphsProvider.cpp:561
-msgid "Could not release FT face resources"
-msgstr ""
+#: libcore/movie_root.cpp:238
+#, c-format
+msgid "ActionParserException thrown during setRootMovie: %s"
+msgstr "ActionParserException åçå¨ setRootMovie æ¶: %s"
-#: libcore/swf/DefineShapeTag.cpp:58
+#: libcore/movie_root.cpp:253
#, c-format
-msgid "DefineShapeTag(%s): id = %d"
-msgstr ""
-
-#: libcore/swf/VideoFrameTag.cpp:47
-#, c-format
-msgid "VideoFrame tag refers to unknown video stream id %d"
-msgstr ""
+msgid "No user interface registered, assuming 'Yes' answer to question: %s"
+msgstr "æ²¡ææ³¨åç¨æ·æ¥å£, å设ç¨âæ¯âæ¥åçé®é¢: %s"
-#: libcore/swf/VideoFrameTag.cpp:57
+#: libcore/movie_root.cpp:402 libcore/movie_root.cpp:412
#, c-format
-msgid "VideoFrame tag refers to a non-video DisplayObject %d (%s)"
+msgid ""
+"%s.swapDepth(%d): movie has a depth (%d) below static depth zone (%d), won't "
+"swap its depth"
msgstr ""
+"%s.swapDepth(%d): å½±çæä¸ä¸ªæ·±åº¦ (%d) å¨éææ·±åº¦åºå (%d)以ä¸, å°ä¸ä¼äº¤æ¢æ·±åº¦"
-#: libcore/swf/VideoFrameTag.cpp:90
+#: libcore/movie_root.cpp:470
msgid ""
-"Could not read enough bytes when parsing VideoFrame tag. Perhaps we reached "
-"the end of the stream!"
-msgstr ""
+"movie_root::dropLevel called against a movie not found in the levels "
+"container"
+msgstr "movie_root::dropLevel è°ç¨æ¶å¨å级容å¨ä¸æ²¡æåç°å½±ç"
-#: libcore/swf/DefineTextTag.cpp:52
-#, c-format
-msgid "DefineTextTag, id = %d"
-msgstr ""
+#: libcore/movie_root.cpp:477
+msgid "Original root movie can't be removed"
+msgstr "ä¸è½å é¤åå§çæ ¹èç¹å½±ç"
-#: libcore/swf/DefineTextTag.cpp:93
+#: libcore/movie_root.cpp:496
#, c-format
-msgid "Text DisplayObject, id = %d"
-msgstr ""
+msgid ""
+"TESTME: loadMovie called on level %d which is not available at load time, "
+"skipped placement for now"
+msgstr "TESTME: loadMovie å¨å è½½æ¶ä¸å¯ç¨ç %d 级ä¸è¢«è°ç¨ï¼è·³è¿ç°å¨ä½ç½®"
-#: libcore/swf/DefineTextTag.cpp:112
+#: libcore/movie_root.cpp:627
#, c-format
-msgid "begin text records for DefineTextTag %p"
-msgstr ""
+msgid "ActionLimits hit notifying key listeners: %s."
+msgstr "ActionLimits ç¹æ£å¨éç¥å
³é®çå¬è
: %s."
-#: libcore/swf/DefaultTagLoaders.cpp:94
-#, c-format
+#: libcore/movie_root.cpp:865
msgid ""
-"Undocumented tag %s encountered. Please report this to the Gnash developers!"
-msgstr ""
-
-#: libcore/swf/DefineFontTag.cpp:60
-msgid "reading code table at offset %1%, %2% glyphs"
-msgstr ""
+"movie_root tracking a streaming sound, but the sound handler is not "
+"streaming!"
+msgstr "movie_root æ£å¨å¤çä¸ä¸ªå£°é³æµ, ä½è¯¥å£°é³å¤çç¨åºä¸å¨æµç¶æ!"
-#: libcore/swf/DefineFontTag.cpp:120
-msgid "reading DefineFont"
-msgstr ""
+#: libcore/movie_root.cpp:897
+msgid ""
+"Time exceeded (%1% secs) while attempting to catch up to streaming sound. "
+"Give up on synchronization?"
+msgstr "è¯å¾èµ¶ä¸å£°é³æµä½æ¶é´è¶
åº (%1% ç§)ãæ¾å¼åæ¥å?"
-#: libcore/swf/DefineFontTag.cpp:157
-msgid "Glyphs offset table corrupted in DefineFont tag"
-msgstr ""
+#: libcore/movie_root.cpp:949
+#, c-format
+msgid "Buffer overread during advance: %s"
+msgstr "é«çº§æç¼å²åºé¢è¯»ï¼%s"
-#: libcore/swf/DefineFontTag.cpp:172
-msgid "reading DefineFont2 or DefineFont3"
-msgstr ""
+#: libcore/movie_root.cpp:1068
+#, c-format
+msgid "ActionLimits hit notifying mouse events: %s."
+msgstr "ActionLimits ç¹æ£å¨éç¥é¼ æ äºä»¶: %sã"
-#: libcore/swf/DefineFontTag.cpp:225 libcore/swf/DefineFontTag.cpp:237
+#: libcore/movie_root.cpp:1560
#, c-format
-msgid "Glyph %d at offset %u"
-msgstr ""
+msgid "Couldn't process ExternalInterface Call %s"
+msgstr "æ æ³å¤çå¤é¨æ¥å£è°ç¨ %s"
-#: libcore/swf/DefineFontTag.cpp:254
-msgid "Glyphs offset table corrupted in DefineFont2/3 tag"
-msgstr ""
+#: libcore/movie_root.cpp:1605
+msgid "ExternalInterface::GotoFrame()"
+msgstr "ExternalInterface::GotoFrame()"
-#: libcore/swf/DefineFontTag.cpp:266
-msgid "Bad offset in DefineFont2"
-msgstr ""
+#: libcore/movie_root.cpp:1613
+msgid "ExternalInterface::LoadMovie()"
+msgstr "ExternalInterface::LoadMovie()"
-#: libcore/swf/DefineFontTag.cpp:325
-msgid "Repeated kerning pair found - ignoring"
-msgstr ""
+#: libcore/movie_root.cpp:1682 gui/Player.cpp:716
+#, c-format
+msgid "Could not write to user-provided host requests fd %d: %s"
+msgstr "æ æ³åå
¥ç¨æ·æä¾ç主æºè¯·æ±æä»¶æè¿°ç¬¦ %dï¼%s"
-#: libcore/swf/DefineFontTag.cpp:344
+#: libcore/movie_root.cpp:1843 libcore/movie_root.cpp:1875
+#: libcore/movie_root.cpp:1931
#, c-format
-msgid "DefineFontInfo tag loader: can't find font with id %d"
-msgstr ""
+msgid "Could not write to browser fd #%d: %s"
+msgstr "æ æ³åå
¥æµè§å¨æä»¶æè¿°ç¬¦ #%d: %s"
-#: libcore/swf/DefineFontTag.cpp:352
-msgid "DefineFontInfo2 partially implemented"
-msgstr ""
+#: libcore/movie_root.cpp:2189
+#, c-format
+msgid "Fork failed launching URL opener '%s'"
+msgstr "å¯å¨ URL æå¼ç¨åº '%s' 失败"
-#: libcore/swf/CSMTextSettingsTag.cpp:77
+#: libcore/movie_root.cpp:2236
#, c-format
-msgid ""
-" CSMTextSettings: TextID=%d, FlashType=%d, GridFit=%d, Thickness=%d, "
-"Sharpness=%d"
-msgstr ""
+msgid "Could only write %d bytes to fd #%d"
+msgstr "åªè½å %d åèå°æä»¶æè¿°ç¬¦ #%d"
-#: libcore/swf/CSMTextSettingsTag.cpp:85
-msgid "CSMTextSettings"
-msgstr ""
+#: libcore/movie_root.cpp:2324
+msgid "Live MovieClips"
+msgstr "ç°åºå½±çåªè¾"
-#: libcore/swf/TextRecord.cpp:52
-msgid "end text records"
-msgstr ""
+#: libcore/movie_root.cpp:2453
+#, fuzzy, c-format
+msgid "%s to UTF8 conversion in LoadableObject input parsing"
+msgstr "å¨ LoadableObject è¾å
¥è§£æä¸è½¬æ¢ %s å° utf8"
-#: libcore/swf/TextRecord.cpp:78
+#: libcore/movie_root.cpp:2476
#, c-format
-msgid " has_font: font id = %d (%p)"
-msgstr ""
-
-#: libcore/swf/TextRecord.cpp:90
-msgid " hasColor"
-msgstr ""
+msgid ""
+"Hosting application registered no callback for events/queries, can't call %s"
+"(%s)"
+msgstr "æç®¡åºç¨ç¨åºæ³¨åæ äºä»¶/æ¥è¯¢çåè°ï¼ä¸è½è°ç¨ %s(%s)"
-#: libcore/swf/TextRecord.cpp:99
+#: libcore/parser/TypesParser.cpp:145
#, c-format
-msgid " xOffset = %g"
-msgstr ""
+msgid "Invalid rectangle: minx=%g maxx=%g miny=%g maxy=%g"
+msgstr "ä¸åæ³ç©å½¢: minx=%g maxx=%g miny=%g maxy=%g"
-#: libcore/swf/TextRecord.cpp:108
+#: libcore/parser/TypesParser.cpp:161
#, c-format
-msgid " yOffset = %g"
-msgstr ""
+msgid " FillStyle read type = 0x%X"
+msgstr "FillStyle 读åç±»å = 0x%X"
-#: libcore/swf/TextRecord.cpp:117
+#: libcore/parser/TypesParser.cpp:207
#, c-format
-msgid " textHeight = %g"
-msgstr ""
+msgid " gradients count: %d"
+msgstr "梯度æ°ï¼ %d"
-#: libcore/swf/TextRecord.cpp:126
+#: libcore/parser/TypesParser.cpp:212
+msgid "No gradients!"
+msgstr "æ²¡ææ¢¯åº¦ï¼"
+
+#: libcore/parser/TypesParser.cpp:266
+msgid "Illegal spread mode in gradient definition."
+msgstr "梯度å®ä¹ä¸éæ³çæ©æ£æ¨¡å¼ã"
+
+#: libcore/parser/TypesParser.cpp:283
+msgid "Illegal interpolation mode in gradient definition."
+msgstr "梯度å®ä¹ä¸éæ³çæå¼æ¨¡å¼ã"
+
+#: libcore/parser/TypesParser.cpp:408
#, c-format
-msgid " GlyphEntries: count = %d"
-msgstr ""
+msgid " color: %s"
+msgstr "é¢è²: %s"
-#: libcore/swf/TextRecord.cpp:138
+#: libcore/parser/SWFParser.cpp:90
+msgid "SHOWFRAME tag"
+msgstr "SHOWFRAME æ ç¾"
+
+#: libcore/parser/SWFParser.cpp:100
#, c-format
-msgid " glyph%d: index=%d, advance=%g"
-msgstr ""
+msgid ""
+"Encountered unknown tag %d. These usually store creation tool data and do "
+"not affect playback"
+msgstr "éå°æªç¥çæ ç¾ %dãè¿äºé叏忾å建工å
·çæ°æ®ï¼å¹¶ä¸ä¸å½±ååæ¾"
-#: libcore/swf/StartSoundTag.cpp:56
+#: libcore/parser/SWFParser.cpp:105
#, c-format
-msgid "start_sound_loader: sound_id %d is not defined"
-msgstr ""
+msgid "tag dump follows: %s"
+msgstr "æ 记转å¨å¦ä¸ï¼%s"
-#: libcore/swf/StartSoundTag.cpp:64
+#: libcore/parser/SWFParser.cpp:113
#, c-format
-msgid "StartSound: id=%d"
-msgstr ""
+msgid "Parsing exception: %s"
+msgstr "è§£æå¼å¸¸ï¼%s"
-#: libcore/swf/StartSoundTag.cpp:114
-msgid "STARTSOUND2 tag not parsed and not used"
-msgstr ""
+#: libcore/parser/SWFParser.cpp:151 libcore/SWFStream.cpp:302
+#: libcore/SWFStream.cpp:320 libcore/SWFStream.cpp:353
+#: libcore/SWFStream.cpp:384
+msgid "Unexpected end of stream while reading"
+msgstr "è¯»åæ¶æµæå¤ç»æ"
-#: libcore/swf/DefineButtonSoundTag.cpp:52
+#: libcore/parser/sprite_definition.cpp:64
#, c-format
-msgid "DEFINEBUTTONSOUND refers to an unknown DisplayObject def %d"
-msgstr ""
+msgid " frames = %d"
+msgstr "帧 = %d"
-#: libcore/swf/DefineButtonSoundTag.cpp:63
+#: libcore/parser/sprite_definition.cpp:77
#, c-format
msgid ""
-"DEFINEBUTTONSOUND refers to DisplayObject id %d, a %s (expected a button "
-"DisplayObject)"
-msgstr ""
+"%d frames advertised in header, but only %d SHOWFRAME tags found in define "
+"sprite."
+msgstr "å¨å¤´é¨ %d 帧被声æ, ä½å¨éå®ç²¾çµä¸åªåç°äº %d SHOWFRAME æ ç¾ã"
-#: libcore/swf/DefineButtonSoundTag.cpp:73
-msgid "Attempt to redefine button sound ignored"
-msgstr ""
+#: libcore/parser/sprite_definition.cpp:87
+msgid " -- sprite END --"
+msgstr "-- ç²¾çµ ç»æ --"
-#: libcore/swf/DefineButtonSoundTag.cpp:99
+#: libcore/parser/SWFMovieDefinition.cpp:255
#, c-format
-msgid "sound tag not found, sound_id=%d, button state #=%i"
-msgstr ""
+msgid "Add sound sample %d assigning id %d"
+msgstr "æ·»å 声鳿 ·æ¬ %d åé
id %d"
-#: libcore/swf/tag_loaders.cpp:83
-msgid "anchor-labeled frame not supported"
-msgstr ""
+#: libcore/parser/SWFMovieDefinition.cpp:284
+msgid ""
+"gnash::SWFMovieDefinition::read() -- file does not start with a SWF header"
+msgstr "gnash::SWFMovieDefinition::read() -- æä»¶æ²¡æä»¥ä¸ä¸ª SWF 头é¨å¼å§"
-#: libcore/swf/tag_loaders.cpp:87
+#: libcore/parser/SWFMovieDefinition.cpp:291
#, c-format
-msgid "frame_label_loader end position %d, read up to %d"
+msgid "version: %d, file_length: %d"
+msgstr "çæ¬: %d, æä»¶é¿åº¦: %d"
+
+#: libcore/parser/SWFMovieDefinition.cpp:296
+#, fuzzy
+msgid ""
+"SWFMovieDefinition::read(): unable to read zipped SWF data; Gnash was "
+"compiled without zlib support"
msgstr ""
+"SWFMovieDefinition::read(): æ æ³è¯»åå·²å缩ç SWF æ°æ®; ç¼è¯gnashæ¶æ²¡æå å
¥ "
+"zlib æ¯æ"
-#: libcore/swf/tag_loaders.cpp:107
+#: libcore/parser/SWFMovieDefinition.cpp:301
+msgid "file is compressed"
+msgstr "æä»¶è¢«å缩"
+
+#: libcore/parser/SWFMovieDefinition.cpp:320
+msgid "non-finite movie bounds"
+msgstr "æ éçå½±çè¾¹ç"
+
+#: libcore/parser/SWFMovieDefinition.cpp:336
#, c-format
-msgid " sprite: char id = %d"
-msgstr ""
+msgid "frame size = %s, frame rate = %f, frames = %d"
+msgstr "å¸§å¤§å° = %s, 帧éç = %f, å¸§æ° = %d"
-#: libcore/swf/tag_loaders.cpp:118
-msgid ""
-"Nested DEFINESPRITE tags. Will add to top-level DisplayObjects dictionary."
-msgstr ""
+#: libcore/parser/SWFMovieDefinition.cpp:360
+msgid "Could not start loading thread"
+msgstr "æ æ³å¯å¨å è½½ââ线ç¨"
-#: libcore/swf/tag_loaders.cpp:128
+#: libcore/parser/SWFMovieDefinition.cpp:431
#, c-format
-msgid "Sprite %d advertise no frames"
-msgstr ""
+msgid "Could not find char %d, dump is: %s"
+msgstr "æ æ³æ¾å°å符 %d, è½¬å¨æ¯: %s"
-#: libcore/swf/tag_loaders.cpp:168
+#: libcore/parser/SWFMovieDefinition.cpp:490
+msgid "Error while parsing SWF stream."
+msgstr "è§£æ SWF æµæ¶åºéã"
+
+#: libcore/parser/SWFMovieDefinition.cpp:502
#, c-format
-msgid "DEFINESOUNDLOADER: sound sample rate %d (expected 0 to %u)"
-msgstr ""
+msgid "%d control tags are NOT followed by a SHOWFRAME tag"
+msgstr "%d æ§å¶æ ç¾æ²¡æè·éä¸ä¸ª SHOWFRAME æ ç¾"
-#: libcore/swf/tag_loaders.cpp:188
+#: libcore/parser/SWFMovieDefinition.cpp:510
#, c-format
msgid ""
-"define sound: ch=%d, format=%s, rate=%d, 16=%d, stereo=%d, ct=%d, delay=%d"
-msgstr ""
-
-#: libcore/swf/tag_loaders.cpp:216
-msgid "Tag boundary reported past end of SWFStream!"
+"%d frames advertised in header, but only %d SHOWFRAME tags found in stream. "
+"Pretending we loaded all advertised frames"
msgstr ""
+"å¨å¤´é¨ %d 帧被声æ, ä½å¨æµä¸åªåç°äº %d SHOWFRAME æ ç¾ãåè£
æä»¬å·²å è½½ææå·²"
+"声æç帧"
-#: libcore/swf/tag_loaders.cpp:236
+#: libcore/parser/SWFMovieDefinition.cpp:538
#, c-format
msgid ""
-"There is no sound handler currently active, so DisplayObject with id %d will "
-"not be added to the dictionary"
-msgstr ""
+"number of SHOWFRAME tags in SWF stream '%s' (%d) exceeds the advertised "
+"number in header (%d)."
+msgstr "SWF æµä¸ SHOWFRAME æ ç¾ '%s' (%d) è¶
åºå¨å¤´é¨å£°æçæ°ç® (%d)ã"
-#: libcore/swf/tag_loaders.cpp:269
+#: libcore/parser/SWFMovieDefinition.cpp:605
+msgid "More than one JPEGTABLES tag found: not resetting JPEG loader"
+msgstr "åç°è¶
è¿ä¸ä¸ª JPEGTABLES æ ç¾: ä¸é设 JPEG å è½½å¨"
+
+#: libcore/parser/SWFMovieDefinition.cpp:745
#, c-format
-msgid "File attributes: metadata=%s network=%s"
-msgstr ""
+msgid "import error: could not find resource '%s' in movie '%s'"
+msgstr "导å
¥é误: æ æ³æ¾å°èµæº '%s' å¨å½±ç '%s' ä¸"
-#: libcore/swf/tag_loaders.cpp:270 libcore/swf/tag_loaders.cpp:271
-msgid "true"
-msgstr ""
-
-#: libcore/swf/tag_loaders.cpp:270 libcore/swf/tag_loaders.cpp:271
-msgid "false"
-msgstr ""
-
-#: libcore/swf/tag_loaders.cpp:275
-msgid ""
-"FileAttributes tag in the SWF requests that network access is not granted to "
-"this movie (or application?) when loaded from the filesystem. Anyway Gnash "
-"won't care; use white/black listing in your .gnashrc instead"
-msgstr ""
-
-#: libcore/swf/tag_loaders.cpp:283
-msgid ""
-"This SWF file requires AVM2: there will be no ActionScript interpretation"
-msgstr ""
-
-#: libcore/swf/tag_loaders.cpp:308
+#: libcore/parser/filter_factory.cpp:54
#, c-format
-msgid ""
-" RDF metadata (information only): [[\n"
-"%s\n"
-"]]"
-msgstr ""
+msgid " number of filters: %d"
+msgstr "æ»¤éæ°: %d"
-#: libcore/swf/tag_loaders.cpp:324
+#: libcore/parser/filter_factory.cpp:92
#, c-format
-msgid "Descriptive metadata from movie %s: %s"
-msgstr ""
+msgid "Invalid filter type %d."
+msgstr "ä¸åæ³æ»¤éç±»å %dã"
-#: libcore/swf/tag_loaders.cpp:386
+#: libcore/parser/filter_factory.cpp:102
#, c-format
-msgid " reflex = \"%c%c%c\""
-msgstr ""
+msgid "Filter %d could not read."
+msgstr "æ æ³è¯»å滤é %dã"
-#: libcore/swf/DefineFontAlignZonesTag.cpp:54
+#: libcore/parser/filter_factory.cpp:134
#, c-format
-msgid "DefineFontAlignZones tag references an undefined font %d"
-msgstr ""
+msgid " DropShadowFilter: blurX=%f blurY=%f"
+msgstr "é´å½±æ»¤é: blurX=%f blurY=%f"
-#: libcore/swf/DefineFontAlignZonesTag.cpp:73
+#: libcore/parser/filter_factory.cpp:153
#, c-format
-msgid "DefineFontAlignZones: font=%d, flags=%d, table int: %s"
-msgstr ""
+msgid " BlurFilter: blurX=%f blurY=%f quality=%d"
+msgstr "æ¨¡ç³æ»¤é: blurX=%f blurY=%f quality=%d"
-#: libcore/swf/DefineFontAlignZonesTag.cpp:110
-msgid "DefineFontAlignZoneTag"
-msgstr ""
+#: libcore/parser/filter_factory.cpp:180
+msgid " GlowFilter "
+msgstr "åå
滤é"
-#: libcore/swf/ShapeRecord.cpp:274
-#, c-format
-msgid " bound SWFRect: %s"
-msgstr ""
+#: libcore/parser/filter_factory.cpp:218
+msgid " BevelFilter "
+msgstr "æè§æ»¤é"
-#: libcore/swf/ShapeRecord.cpp:301
-#, c-format
-msgid " ShapeRecord(%s): fillbits %d, linebits %d"
-msgstr ""
+#: libcore/parser/filter_factory.cpp:265
+msgid " GradientGlowFilter "
+msgstr "æ¸ååå
滤é"
-#: libcore/swf/ShapeRecord.cpp:379
-#, c-format
-msgid " Shape read: moveto %d %d"
-msgstr ""
+#: libcore/parser/filter_factory.cpp:301
+msgid " ConvolutionFilter "
+msgstr "åææ»¤é"
-#: libcore/swf/ShapeRecord.cpp:400
-#, c-format
-msgid ""
-"Invalid fill style %d in fillStyle0Change record for font tag (0 or 1 "
-"valid). Set to 0."
-msgstr ""
+#: libcore/parser/filter_factory.cpp:318
+msgid " ColorMatrixFilter: "
+msgstr "彩è²ç©éµæ»¤é"
-#: libcore/swf/ShapeRecord.cpp:410
+#: libcore/parser/filter_factory.cpp:319 libcore/parser/filter_factory.cpp:322
+#: libcore/parser/filter_factory.cpp:325 libcore/parser/filter_factory.cpp:328
#, c-format
-msgid ""
-"Invalid fill style %d in fillStyle0Change record - %d defined. Set to 0."
-msgstr ""
+msgid " %g, %g, %g, %g, %g"
+msgstr "%g, %g, %g, %g, %g"
+
+#: libcore/parser/filter_factory.cpp:375
+msgid " GradientBevelFilter "
+msgstr "æ¸åæè§æ»¤é"
-#: libcore/swf/ShapeRecord.cpp:421
+#: libcore/parser/action_buffer.cpp:57
#, c-format
-msgid " Shape read: fill0 (left) = %d"
-msgstr ""
+msgid "Empty action buffer starting at offset %lu"
+msgstr "空æä½ç¼å²åºå¼å§äºåç§» %lu"
-#: libcore/swf/ShapeRecord.cpp:443
+#: libcore/parser/action_buffer.cpp:94
#, c-format
+msgid "Action buffer starting at offset %lu doesn't end with an END tag"
+msgstr "æä½ç¼å²åºå¼å§äºåç§» %lu 没æä»¥ä¸ä¸ª END æ ç¾ç»æ"
+
+#: libcore/parser/action_buffer.cpp:132
+msgid "action buffer dict length exceeded"
+msgstr "æä½ç¼å²åºåå
¸é¿åº¦è¶
åº"
+
+#: libcore/parser/action_buffer.cpp:537 libcore/SWFStream.cpp:285
+msgid "Native floating point format not recognised"
+msgstr "åçæµ®ç¹æ ¼å¼æªè¢«è¯å«"
+
+#: libcore/parser/action_buffer.cpp:614
+msgid "Native double floating point format not recognised"
+msgstr "åçåæµ®ç¹æ ¼å¼æªè¯å«"
+
+#: libcore/Font.cpp:130
msgid ""
-"Invalid fill style %d in fillStyle1Change record for font tag (0 or 1 "
-"valid). Set to 0."
+"Attempt to set font display or copyright name again. This should mean there "
+"is more than one DefineFontName tag referring to the same Font. Don't know "
+"what to do in this case, so ignoring."
msgstr ""
+"忬¡å°è¯è®¾ç½®å使¾ç¤ºæçæåãè¿åºè¯¥æå³çæä¸ä¸ªä»¥ä¸DefineFontNameæ ç¾æåç¸"
+"åçåä½ãå¨è¿ç§æ
åµä¸ä¸ç¥éè¦åä»ä¹ï¼æä»¥å¿½ç¥ã"
-#: libcore/swf/ShapeRecord.cpp:453
-#, c-format
+#: libcore/Font.cpp:167
msgid ""
-"Invalid fill style %d in fillStyle1Change record - %d defined. Set to 0."
+"Attempt to add an embedded glyph CodeTable to a font that already has one. "
+"This should mean there are several DefineFontInfo tags, or a DefineFontInfo "
+"tag refers to a font created by DefineFont2 or DefineFont3. Don't know what "
+"should happen in this case, so ignoring."
msgstr ""
+"å°è¯æ·»å ä¸ä¸ªåµå
¥çåå½¢ç 表å°å·²æçåä½ãè¿åºè¯¥æå³çæå 个DefineFontInfoæ "
+"ç¾ï¼æä¸ä¸ªDefineFontInfoæ ç¾æåä¸ä¸ªç±DefineFont2æDefineFont3å建çåä½ãå¨"
+"è¿ç§æ
åµä¸ä¸ç¥éä¼åçä»ä¹ï¼æä»¥å¿½ç¥ã"
-#: libcore/swf/ShapeRecord.cpp:463
+#: libcore/Font.cpp:201
#, c-format
-msgid " Shape read: fill1 (right) = %d"
-msgstr ""
+msgid "Failed to find glyph %s in %s font %s"
+msgstr "æ æ³æ¾å°åå½¢ %s å¨ %s åä½ %s"
+
+#: libcore/Font.cpp:276
+msgid "Device font provider was not initialized, can't get unitsPerEM"
+msgstr "设å¤åä½ä¾åºå没æè¢«åå§åï¼æ æ³å¾å°unitsPerEM"
-#: libcore/swf/ShapeRecord.cpp:484
+#: libcore/Font.cpp:298
#, c-format
msgid ""
-"Invalid line style %d in lineStyleChange record for font tag (0 or 1 valid). "
-"Set to 0."
-msgstr ""
+"Could not create shape glyph for DisplayObject code %u (%c) with device font "
+"%s (%p)"
+msgstr "æ æ³å建DisplayObject代ç %u (%c) çå½¢ç¶åå½¢å设å¤åä½ %s (%p)"
-#: libcore/swf/ShapeRecord.cpp:494
-#, c-format
-msgid "Invalid fill style %d in lineStyleChange record - %d defined. Set to 0."
-msgstr ""
+#: libcore/Font.cpp:332
+msgid ""
+"No name associated with this font, can't use device fonts (should I use a "
+"default one?)"
+msgstr "è¿ä¸ªå使²¡æç¸å
³çåç§°ï¼ä¸è½ä½¿ç¨è®¾å¤åä½ï¼æåºè¯¥ä½¿ç¨ä¸ä¸ªé»è®¤çåï¼ï¼"
-#: libcore/swf/ShapeRecord.cpp:504
+#: libcore/Font.cpp:340
#, c-format
-msgid "ShapeRecord: line %d"
-msgstr ""
-
-#: libcore/swf/ShapeRecord.cpp:518
-msgid "ShapeRecord: more fill styles"
-msgstr ""
+msgid "Could not create a freetype face %s"
+msgstr "æ æ³å建ä¸ä¸ªfreetype face %s"
-#: libcore/swf/ShapeRecord.cpp:558
+#: libcore/TextField.cpp:236
#, c-format
-msgid "ShapeRecord: curved edge %d %d - %d %d - %d %d"
-msgstr ""
+msgid "FIXME: attempt to remove a TextField being a child of a %s"
+msgstr "FIXME: è¯å¾ç§»é¤%såèç¹çä¸ä¸ªææ¬å段"
-#: libcore/swf/ShapeRecord.cpp:593
-#, c-format
-msgid "ShapeRecord: straight edge %d %d - %d %d"
-msgstr ""
+#: libcore/TextField.cpp:415 libcore/TextField.cpp:425
+#: libcore/TextField.cpp:443 libcore/TextField.cpp:458
+msgid "invalid restrict string"
+msgstr "ä¸åæ³çéå¶å符串"
-#: libcore/swf/ShapeRecord.cpp:642
-msgid " fill styles: %1%"
+#: libcore/TextField.cpp:967
+#, c-format
+msgid ""
+"TextField: missing glyph for space char (needed for TAB). Make sure "
+"DisplayObject shapes for font %s are being exported into your SWF file."
msgstr ""
+"ææ¬åæ®µï¼ç¼ºå°ç©ºæ ¼å符ï¼å¶è¡¨ç¬¦æéï¼çåå½¢ãç¡®ä¿åä½ %s ç DisplayObject å½¢ç¶"
+"被导åºå°ä½ ç SWF æä»¶ã"
-#: libcore/swf/ShapeRecord.cpp:651
-msgid " Read fill: %1%"
-msgstr ""
+#: libcore/TextField.cpp:1046
+msgid "No font for TextField!"
+msgstr "æ²¡æææ¬å段çåä½"
-#: libcore/swf/ShapeRecord.cpp:665
+#: libcore/TextField.cpp:1446
#, c-format
-msgid " readLineStyles: count = %d"
-msgstr ""
+msgid "Unexpected value '%s' in TextField font color attribute"
+msgstr "卿æ¬å段åä½é¢è²å±æ§ä¸åºç°æªé¢æçå¼ '%s' "
-#: libcore/swf/ShapeRecord.cpp:672
-#, c-format
-msgid " readLineStyles: count2 = %d"
-msgstr ""
+#: libcore/TextField.cpp:1461
+msgid "Expected a font name in FACE attribute."
+msgstr "é¢è®¡æä¸ä¸ªåä½åç§°å¨ FACE 屿§ä¸ã"
-#: libcore/swf/PlaceObject2Tag.cpp:85
-#, c-format
-msgid " PLACEOBJECT: depth=%d(%d) char=%d"
-msgstr ""
+#: libcore/TextField.cpp:1515
+#, fuzzy
+msgid "<img> HTML tag in TextField"
+msgstr "ææ¬åæ®µä¸çhtmlæ ç¾ <img> "
-#: libcore/swf/PlaceObject2Tag.cpp:89 libcore/swf/PlaceObject2Tag.cpp:311
-#, c-format
-msgid " SWFCxForm: %s"
-msgstr ""
+#: libcore/TextField.cpp:1553
+#, fuzzy
+msgid "<span> HTML tag in TextField"
+msgstr "ææ¬åæ®µä¸çhtmlæ ç¾ <span> "
-#: libcore/swf/PlaceObject2Tag.cpp:105
+#: libcore/TextField.cpp:1625
+#, fuzzy
+msgid "HTML <textformat> tag tabstops attribute"
+msgstr "htmlæ ç¾ <textformat> ç tabstops 屿§"
+
+#: libcore/TextField.cpp:1708
#, c-format
-msgid "Reserved field in PlaceObject actions == %u (expected 0)"
+msgid ""
+"TextField: missing embedded glyph for char %d. Make sure DisplayObject "
+"shapes for font %s are being exported into your SWF file"
msgstr ""
+"ææ¬åæ®µï¼ç¼ºå°å符 %d çåµå
¥åå½¢ãç¡®ä¿åä½ %s ç DisplayObject å½¢ç¶å¯¼åºå°ä½ ç"
+"SWFæä»¶"
-#: libcore/swf/PlaceObject2Tag.cpp:123
+#: libcore/TextField.cpp:1716
#, c-format
-msgid " actions: flags = 0x%X"
-msgstr ""
+msgid ""
+"TextField: missing device glyph for char %d. Maybe you don't have font '%s' "
+"installed in your system."
+msgstr "ææ¬åæ®µï¼ç¼ºå°å符 %d 设å¤åå½¢ãä¹è®¸ä½ çç³»ç»ä¸æ²¡æå®è£
åä½ '%s'ã"
-#: libcore/swf/PlaceObject2Tag.cpp:158
+#: libcore/TextField.cpp:1907
#, c-format
msgid ""
-"swf_event::read(), even_length = %u, but only %lu bytes left to the end of "
-"current tag. Breaking for safety."
+"Current environment has no target, can't bind VariableName (%s) associated "
+"to text field. Gnash will try to register again on next access."
msgstr ""
+"å½åçç¯å¢æ²¡æç®æ ï¼ä¸è½ç»å®å°å
³èææ¬åæ®µç VariableName (%s)ãGnashå°å¨ä¸ä¸"
+"æ¬¡è®¿é®æ¶å次注åã "
-#: libcore/swf/PlaceObject2Tag.cpp:219
+#: libcore/TextField.cpp:1933
#, c-format
msgid ""
-"swf_event::read() -- unknown / unhandled event type received, flags = 0x%x"
+"VariableName associated to text field refers to an unknown target (%s). It "
+"is possible that the DisplayObject will be instantiated later in the SWF "
+"stream. Gnash will try to register again on next access."
msgstr ""
+"å
³èå°ææ¬å段ç VariableName æåä¸ä¸ªæªç¥çç®æ (%s)ãæå¯è½è¯¥ "
+"DisplayObject ä¼ç¨åå¨ SWF æµä¸è¢«å®ä¾åãGnash å°å¨ä¸ä¸æ¬¡è®¿é®æ¶å次注åã"
-#: libcore/swf/PlaceObject2Tag.cpp:248
-msgid "Unexpected end of tag while parsing PlaceObject tag events"
-msgstr ""
+#: libcore/TextField.cpp:2026 libcore/TextField.cpp:2060
+#: libcore/TextField.cpp:2151
+#, fuzzy
+msgid "invalid HTML tag"
+msgstr "ä¸åæ³ç html æ ç¾"
-#: libcore/swf/PlaceObject2Tag.cpp:304
-#, c-format
-msgid " PLACEOBJECT2: depth = %d (%d)"
-msgstr ""
+#: libcore/TextField.cpp:2037 libcore/TextField.cpp:2073
+#: libcore/TextField.cpp:2104
+msgid "found NULL character in htmlText"
+msgstr "å¨ htmlText ä¸åç° NULL"
-#: libcore/swf/PlaceObject2Tag.cpp:306 libcore/swf/PlaceObject2Tag.cpp:419
-#, c-format
-msgid " char id = %d"
-msgstr ""
+#: libcore/TextField.cpp:2077
+msgid "malformed HTML tag, invalid attribute name"
+msgstr "éè¯¯æ ¼å¼ç HTML æ ç¾ï¼ä¸åæ³ç屿§å"
-#: libcore/swf/PlaceObject2Tag.cpp:308 libcore/swf/PlaceObject2Tag.cpp:420
-#, c-format
-msgid " SWFMatrix: %s"
-msgstr ""
+#: libcore/TextField.cpp:2127
+msgid "malformed HTML tag, invalid attribute value"
+msgstr "éè¯¯æ ¼å¼ç HTML æ ç¾ï¼ä¸åæ³ç屿§å¼"
-#: libcore/swf/PlaceObject2Tag.cpp:313 libcore/swf/PlaceObject2Tag.cpp:422
-#, c-format
-msgid " ratio: %d"
-msgstr ""
+#: libcore/TextField.cpp:2160
+msgid "I declare this a HTML syntax error"
+msgstr "æè®¤ä¸ºè¿æ¯ä¸ä¸ªHTMLçè¯æ³é误"
-#: libcore/swf/PlaceObject2Tag.cpp:314 libcore/swf/PlaceObject2Tag.cpp:423
-#, c-format
-msgid " name = %s"
-msgstr ""
+#: libcore/Video.cpp:57
+msgid "No Media handler registered, won't be able to decode embedded video"
+msgstr "æ²¡ææ³¨ååªä½å¤çç¨åºï¼å°ä¸è½è§£ç åµå
¥çè§é¢"
-#: libcore/swf/PlaceObject2Tag.cpp:316 libcore/swf/PlaceObject2Tag.cpp:425
+#: libcore/Video.cpp:69
#, c-format
-msgid " clip_depth = %d (%d)"
-msgstr ""
+msgid "Could not create Video Decoder: %s"
+msgstr "æ æ³å建è§é¢è§£ç å¨: %s"
-#: libcore/swf/PlaceObject2Tag.cpp:319 libcore/swf/PlaceObject2Tag.cpp:428
-#, c-format
-msgid " m_place_type: %d"
-msgstr ""
+#: libcore/Video.cpp:138
+msgid "No Video info in video definition"
+msgstr "è§é¢å®ä¹ä¸æ²¡æè§é¢ä¿¡æ¯"
-#: libcore/swf/PlaceObject2Tag.cpp:417
+#: libcore/asobj/Selection_as.cpp:189
#, c-format
-msgid " PLACEOBJECT3: depth = %d (%d)"
-msgstr ""
+msgid "Selection.setFocus: expected 1 argument, got %d"
+msgstr "Selection.setFocus: é¢è®¡1ä¸ªåæ°ï¼ç»åºäº %d 个"
-#: libcore/swf/PlaceObject2Tag.cpp:421
+#: libcore/asobj/Array_as.cpp:631
#, c-format
-msgid " SWFCxForm: %d"
-msgstr ""
+msgid "Unhandled sort flags: %d (0x%X)"
+msgstr "æªå¤ççæåºæ å¿ï¼%d (0x%X)"
-#: libcore/swf/PlaceObject2Tag.cpp:424
+#: libcore/asobj/Array_as.cpp:1036
+msgid "Array.splice() needs at least 1 argument, call ignored"
+msgstr "Array.splice() æå°éè¦1ä¸ªåæ°, è°ç¨è¢«å¿½ç¥"
+
+#: libcore/asobj/Array_as.cpp:1059
#, c-format
-msgid " class name = %s"
-msgstr ""
+msgid "Array.splice(%d,%d): negative length given, call ignored"
+msgstr "Array.splice(%d,%d): é¿åº¦ä¸è½ä¸ºè´æ°ï¼è°ç¨è¢«å¿½ç¥"
-#: libcore/swf/PlaceObject2Tag.cpp:427
-msgid " bitmapCaching enabled"
-msgstr ""
+#: libcore/asobj/Array_as.cpp:1157
+msgid "Sort called with invalid arguments."
+msgstr "è°ç¨ Sort çåæ°æ æã"
-#: libcore/swf/SoundStreamHeadTag.cpp:76
-#, c-format
-msgid "SOUNDSTREAMHEAD: stream sample rate %d (expected 0 to %u)"
-msgstr ""
+#: libcore/asobj/Array_as.cpp:1301
+msgid "SortOn called with invalid arguments."
+msgstr "è°ç¨ SortOn çåæ°æ æã"
-#: libcore/swf/SoundStreamHeadTag.cpp:86
-#, c-format
+#: libcore/asobj/Array_as.cpp:1491
msgid ""
-"Different stream/playback sound rate (%d/%d). This seems common in SWF "
-"files, so we'll warn only once."
-msgstr ""
+"More than 2 arguments to Array.slice, and I don't know what to do with "
+"them. Ignoring them"
+msgstr "Array.slice æè¶
è¿2ä¸ªåæ°ï¼æä¸ç¥éå¦ä½å¤çã忽ç¥ä»ä»¬"
-#: libcore/swf/SoundStreamHeadTag.cpp:93
-#, c-format
-msgid ""
-"Different stream/playback sample size (%d/%d). This seems common in SWF "
-"files, so we'll warn only once."
-msgstr ""
+#: libcore/asobj/TextSnapshot_as.cpp:521
+msgid "TextSnapshot.findText() requires 3 arguments"
+msgstr "TextSnapshot.findText() éè¦3ä¸ªåæ°"
-#: libcore/swf/SoundStreamHeadTag.cpp:99
-#, c-format
-msgid ""
-"Different stream/playback channels (%s/%s). This seems common in SWF files, "
-"so we'll warn only once."
-msgstr ""
+#: libcore/asobj/TextSnapshot_as.cpp:545
+msgid "TextSnapshot.getCount() takes no arguments"
+msgstr "TextSnapshot.getCount() ä¸å¸¦åæ°"
-#: libcore/swf/SoundStreamHeadTag.cpp:119
-msgid ""
-"No samples advertised for sound stream, pretty common so will warn only once"
-msgstr ""
+#: libcore/asobj/TextSnapshot_as.cpp:601
+msgid "TextSnapshot.getText requires exactly 2 arguments"
+msgstr "TextSnapshot.getText åªéè¦2ä¸ªåæ°"
-#: libcore/swf/SoundStreamHeadTag.cpp:146
-#, c-format
+#: libcore/asobj/XMLNode_as.cpp:240
msgid ""
-"sound stream head: format=%s, rate=%d, 16=%d, stereo=%d, ct=%d, latency=%d"
-msgstr ""
+"XMLNode.insertBefore(): positional parameter is not a child of this node"
+msgstr "XMLNode.insertBefore(): positional 忰䏿¯è¯¥èç¹çå©å"
-#: libcore/swf/DefineButtonCxformTag.cpp:49
-#, c-format
-msgid "DefineButtonCxform refers to an unknown DisplayObject %d"
-msgstr ""
+#: libcore/asobj/XMLNode_as.cpp:616
+msgid "XMLNode::appendChild() needs at least one argument"
+msgstr "XMLNode::appendChild() è³å°éè¦ä¸ä¸ªåæ°"
-#: libcore/swf/DefineButtonCxformTag.cpp:60
+#: libcore/asobj/XMLNode_as.cpp:625
+msgid "First argument to XMLNode::appendChild() is not an XMLNode"
+msgstr "XMLNode::appendChild() ç第ä¸ä¸ªåæ°ä¸æ¯ä¸ä¸ª XMLNode"
+
+#: libcore/asobj/XMLNode_as.cpp:663
#, c-format
-msgid ""
-"DefineButtonCxform refers to DisplayObject ID %d (%s). Expected a button "
-"definition"
-msgstr ""
+msgid "XMLNode.insertBefore(%s) needs at least two arguments"
+msgstr "XMLNode.insertBefore(%s) è³å°éè¦ä¸¤ä¸ªåæ°"
-#: libcore/swf/RemoveObjectTag.cpp:71
+#: libcore/asobj/XMLNode_as.cpp:674
#, c-format
-msgid " remove_object_2(%d)"
-msgstr ""
+msgid "First argument to XMLNode.insertBefore(%s) is not an XMLNode"
+msgstr "XMLNode.insertBefore(%s) ç第ä¸ä¸ªåæ°ä¸æ¯ä¸ä¸ª XMLNode"
-#: libcore/swf/StreamSoundBlockTag.cpp:75
-msgid "Found SOUNDSTREAMBLOCK tag w/out preceding SOUNDSTREAMHEAD"
-msgstr ""
+#: libcore/asobj/XMLNode_as.cpp:685
+#, c-format
+msgid "Second argument to XMLNode.insertBefore(%s) is not an XMLNode"
+msgstr "XMLNode.insertBefore(%s) ç第äºä¸ªåæ°ä¸æ¯ä¸ä¸ª XMLNode"
-#: libcore/swf/StreamSoundBlockTag.cpp:111
-msgid "Tag boundary reported past end of stream!"
-msgstr ""
+#: libcore/asobj/String_as.cpp:451
+msgid "string.slice() called with end < start"
+msgstr "string.slice() è°ç¨æ¶ end å°äº start"
-#: libcore/swf/DefineButtonTag.cpp:85
+#: libcore/asobj/String_as.cpp:496
#, c-format
-msgid " DefineButton loader: character id = %d"
-msgstr ""
+msgid "String.indexOf(%s, %s): second argument casts to invalid offset (%d)"
+msgstr "String.indexOf(%s, %s): 第äºä¸ªåæ°è½¬æ¢ä¸ºæ æçåç§»(%d)"
-#: libcore/swf/DefineButtonTag.cpp:102
-#, c-format
-msgid " DefineButton2 loader: chararacter id = %d"
-msgstr ""
+#: libcore/asobj/String_as.cpp:569
+msgid "string.charCodeAt needs one argument"
+msgstr "string.charCodeAt éè¦ä¸ä¸ªåæ°"
-#: libcore/swf/DefineButtonTag.cpp:134
-msgid "Premature end of DEFINEBUTTON tag, won't read actions"
-msgstr ""
+#: libcore/asobj/String_as.cpp:578
+msgid "string.charCodeAt has more than one argument"
+msgstr "string.charCodeAt åæ°è¶
è¿ä¸ä¸ª"
-#: libcore/swf/DefineButtonTag.cpp:170
-#, c-format
-msgid "Next Button2 actionOffset (%u) points past the end of tag (%lu)"
-msgstr ""
+#: libcore/asobj/String_as.cpp:756
+msgid "No fn_call::callerDef in string function call"
+msgstr "string 彿°è°ç¨æ¶æ²¡æ fn_call::callerDef"
-#: libcore/swf/DefineButtonTag.cpp:211
-#, c-format
-msgid ""
-"Next action offset (%u) in Button2ActionConditions points past the end of tag"
-msgstr ""
+#: libcore/asobj/String_as.cpp:780
+msgid "%1%(%2%) needs %3% argument(s)"
+msgstr "%1%(%2%) éè¦ %3% åæ°"
-#: libcore/swf/DefineButtonTag.cpp:279
-msgid "Premature end of button action input: can't read conditions"
-msgstr ""
+#: libcore/asobj/String_as.cpp:791
+msgid "%1%(%2%) has more than %3% argument(s)"
+msgstr "%1%(%2%) åæ°è¶
è¿ %3% 个"
+
+#: libcore/asobj/Object.cpp:148
+msgid "Too many args to Object constructor"
+msgstr "对象æé 彿°çåæ°å¤ªå¤ã"
-#: libcore/swf/DefineButtonTag.cpp:289
+#: libcore/asobj/Object.cpp:192
#, c-format
-msgid " button actions for conditions 0x%x"
+msgid ""
+"Invalid call to Object.addProperty(%s) - expected 3 arguments (<name>, "
+"<getter>, <setter>)"
msgstr ""
+"æ æè°ç¨ Object.addProperty(%s) - é¢è®¡3ä¸ªåæ°(<name>, <getter>, <setter>)"
-#: libcore/swf/DefineButtonTag.cpp:362
-msgid " premature end of button record input stream, can't read flags"
-msgstr ""
+#: libcore/asobj/Object.cpp:209
+msgid "Invalid call to Object.addProperty() - empty property name"
+msgstr "æ æè°ç¨ Object.addProperty() - 空ç½å±æ§å"
+
+#: libcore/asobj/Object.cpp:219
+msgid "Invalid call to Object.addProperty() - getter is not an AS function"
+msgstr "æ æè°ç¨ Object.addProperty() - getter 䏿¯ä¸ä¸ª AS 彿°"
-#: libcore/swf/DefineButtonTag.cpp:383
+#: libcore/asobj/Object.cpp:233
+#, c-format
msgid ""
-" premature end of button record input stream, can't read DisplayObject id"
-msgstr ""
+"Invalid call to Object.addProperty() - setter is not null and not an AS "
+"function (%s)"
+msgstr "æ æè°ç¨ Object.addProperty() - setter ä¸ä¸ºç©ºä¹ä¸æ¯ä¸ä¸ª AS 彿° (%s)"
-#: libcore/swf/DefineButtonTag.cpp:398
+#: libcore/asobj/Object.cpp:257
#, c-format
msgid ""
-" button record for states [%s] refer to DisplayObject with id %d, which is "
-"not found in the chars dictionary"
+"Invalid call to Object.registerClass(%s) - expected 2 arguments (<symbol>, "
+"<constructor>)"
msgstr ""
+"æ æè°ç¨ Object.registerClass(%s) - é¢è®¡3ä¸ªåæ°(<symbol>, <constructor>)"
-#: libcore/swf/DefineButtonTag.cpp:405
+#: libcore/asobj/Object.cpp:274
#, c-format
-msgid " button record for states [%s] contain DisplayObject %d (%s)"
-msgstr ""
+msgid ""
+"Invalid call to Object.registerClass(%s) - first argument (symbol id) "
+"evaluates to empty string"
+msgstr "æ æè°ç¨ Object.registerClass(%s) - 第ä¸ä¸ªåæ°ï¼ç¬¦å·IDï¼å¼ä¸ºç©ºå符串"
-#: libcore/swf/DefineButtonTag.cpp:413
+#: libcore/asobj/Object.cpp:286
+#, c-format
msgid ""
-" premature end of button record input stream, can't read button layer "
-"(depth?)"
-msgstr ""
+"Invalid call to Object.registerClass(%s) - second argument (class) is not a "
+"function)"
+msgstr "æ æè°ç¨ Object.registerClass(%s) - 第äºä¸ªåæ° (class)䏿¯ä¸ä¸ªå½æ°"
-#: libcore/swf/DefineBitsTag.cpp:154
-msgid " jpeg_tables_loader"
-msgstr ""
+#: libcore/asobj/Object.cpp:298
+msgid ""
+"current environment has no target, wouldn't know where to look for symbol "
+"required for registerClass"
+msgstr "ç®åçç¯å¢æ²¡æä¸ä¸ªç®æ ï¼ä¸ç¥éä»åªéæ¥æ¾registerClassæéç符å·"
-#: libcore/swf/DefineBitsTag.cpp:165
+#: libcore/asobj/Object.cpp:313
#, c-format
-msgid "No bytes to read in JPEGTABLES tag at offset %d"
-msgstr ""
+msgid "Object.registerClass('%s', %s): can't find exported symbol (id: %d)"
+msgstr "Object.registerClass('%s', %s): æ æ³æ¾å°å¯¼åºçç¬¦å· (id: %d)"
-#: libcore/swf/DefineBitsTag.cpp:206
+#: libcore/asobj/Object.cpp:326
#, c-format
-msgid "DEFINEBITS: Duplicate id (%d) for bitmap DisplayObject - discarding it"
+msgid ""
+"Object.registerClass(%s, %s): exported symbol is not a MovieClip symbol "
+"(sprite_definition), but a %s"
msgstr ""
+"Object.registerClass(%s, %s): 导åºç符å·ä¸æ¯ä¸ä¸ª MovieClip ç¬¦å· "
+"(sprite_definition), èæ¯ä¸ä¸ª %s"
-#: libcore/swf/DefineBitsTag.cpp:235
-msgid "Failed to parse bitmap for character %1%"
-msgstr ""
+#: libcore/asobj/Object.cpp:348
+msgid "Object.hasOwnProperty() requires one arg"
+msgstr "Object.hasOwnProperty() éè¦ä¸ä¸ªåæ°"
-#: libcore/swf/DefineBitsTag.cpp:243
-msgid "No renderer, not adding bitmap %1%"
-msgstr ""
+#: libcore/asobj/Object.cpp:357
+#, c-format
+msgid "Invalid call to Object.hasOwnProperty('%s')"
+msgstr "éæ³è°ç¨ Object.hasOwnProperty('%s')"
-#: libcore/swf/DefineBitsTag.cpp:250
-msgid "Adding bitmap id %1%"
-msgstr ""
+#: libcore/asobj/Object.cpp:373
+msgid "Object.isPropertyEnumerable() requires one arg"
+msgstr "Object.isPropertyEnumerable() éè¦ä¸ä¸ªåæ°"
-#: libcore/swf/DefineBitsTag.cpp:269
-msgid ""
-"DEFINEBITS: No jpeg loader registered in movie definition - discarding bitmap"
-msgstr ""
+#: libcore/asobj/Object.cpp:382
+#, c-format
+msgid "Invalid call to Object.isPropertyEnumerable('%s')"
+msgstr "éæ³è°ç¨ Object.isPropertyEnumerable('%s')"
-#: libcore/swf/DefineBitsTag.cpp:374
-msgid "gnash is not linked to zlib -- can't load jpeg3 image data"
-msgstr ""
+#: libcore/asobj/Object.cpp:405
+msgid "Object.isPrototypeOf() requires one arg"
+msgstr "Object.isPrototypeOf() éè¦ä¸ä¸ªåæ°"
-#: libcore/swf/DefineBitsTag.cpp:419
+#: libcore/asobj/Object.cpp:413
#, c-format
-msgid " defbitslossless2: tag = %d, fmt = %d, w = %d, h = %d"
-msgstr ""
+msgid "First arg to Object.isPrototypeOf(%s) is not an object"
+msgstr "Object.isPrototypeOf(%s) ç第ä¸ä¸ªåæ°ä¸æ¯ä¸ä¸ªå¯¹è±¡"
-#: libcore/swf/DefineBitsTag.cpp:426
-msgid "Bitmap has a height or width of 0"
-msgstr ""
+#: libcore/asobj/Object.cpp:432
+#, c-format
+msgid "Object.watch(%s): missing arguments"
+msgstr "Object.watch(%s): 缺å°åæ°"
-#: libcore/swf/DefineBitsTag.cpp:432
-msgid "gnash is not linked to zlib -- can't load zipped image data"
-msgstr ""
+#: libcore/asobj/Object.cpp:443
+#, c-format
+msgid "Object.watch(%s): second argument is not a function"
+msgstr "Object.watch(%s): 第äºä¸ªåæ°ä¸æ¯ä¸ä¸ªå½æ°"
-#: libcore/swf/DefineBitsTag.cpp:458
-msgid "Will not allocate %1%x%2% image in DefineBitsLossless tag"
-msgstr ""
+#: libcore/asobj/Object.cpp:469
+#, c-format
+msgid "Object.unwatch(%s): missing argument"
+msgstr "Object.unwatch(%s): 缺å°åæ°"
-#: libcore/swf/DefineBitsTag.cpp:483
-msgid "Unknown bitmap format. Ignoring"
-msgstr ""
+#: libcore/asobj/LoadVars_as.cpp:145
+#, c-format
+msgid "new LoadVars(%s) - arguments discarded"
+msgstr "æ°ç LoadVars(%s) - 丢å¼åæ°"
-#: libcore/swf/DefineBitsTag.cpp:597
+#: libcore/asobj/TextFormat_as.cpp:408
#, c-format
-msgid "inflateWrapper() inflateInit() returned %d (%s)"
-msgstr ""
+msgid "Too many args (%d) passed to TextFormat"
+msgstr "太å¤åæ°(%d) ä¼ ç» TextFormat"
-#: libcore/swf/DefineBitsTag.cpp:617
-msgid "inflateWrapper(): no end of zstream found within swf tag boundaries"
-msgstr ""
+#: libcore/asobj/TextFormat_as.cpp:486
+msgid "Getter for textformat_tabStops"
+msgstr "textformat_tabStops ç Getter"
+
+#: libcore/asobj/TextFormat_as.cpp:564
+msgid "TextFormat.getTextExtent requires at least one argument"
+msgstr "TextFormat.getTextExtent è³å°éè¦ä¸ä¸ªåæ°"
-#: libcore/swf/DefineBitsTag.cpp:640
+#: libcore/asobj/TextFormat_as.cpp:776
#, c-format
-msgid "inflateWrapper() inflate() returned %d (%s)"
-msgstr ""
+msgid "Uknown alignment value: %d, take as left"
+msgstr "æªç¥ç对é½å¼: %d, 使ç¨å·¦è¾¹"
-#: libcore/swf/DefineBitsTag.cpp:649
+#: libcore/asobj/TextFormat_as.cpp:791
#, c-format
-msgid "inflateWrapper() inflateEnd() return %d (%s)"
-msgstr ""
+msgid "Unknown display value: %d "
+msgstr "æªç¥çæ¾ç¤ºå¼: %d"
-#: libcore/LoadVariablesThread.cpp:74
+#: libcore/asobj/TextField_as.cpp:218
#, c-format
-msgid "%s to UTF8 conversion in MovieClip.loadVariables input parsing"
-msgstr ""
+msgid "createTextField called with %d args, expected 6 - returning undefined"
+msgstr "createTextField 被è°ç¨æ¶å¸¦æ %d ä¸ªåæ°, ææ6 - è¿åæªå®ä¹"
-#: libcore/LoadVariablesThread.cpp:123
+#: libcore/asobj/TextField_as.cpp:232
#, c-format
-msgid "Stream couldn't seek to end: %s"
-msgstr ""
+msgid "createTextField: negative width (%d) - reverting sign"
+msgstr "createTextField: è´å®½åº¦ (%d) - åå½ç¬¦å·"
-#: libcore/LoadVariablesThread.cpp:128
+#: libcore/asobj/TextField_as.cpp:242
#, c-format
-msgid ""
-"Size of 'variables' stream advertised to be %d bytes, but turned out to be "
-"%d bytes."
-msgstr ""
+msgid "createTextField: negative height (%d) - reverting sign"
+msgstr "createTextField: è´é«åº¦ (%d) - åå½ç¬¦å·"
-#: libcore/SWFStream.cpp:285 libcore/parser/action_buffer.cpp:537
-msgid "Native floating point format not recognised"
-msgstr ""
+#: libcore/asobj/TextField_as.cpp:436
+#, c-format
+msgid "Attempt to set length property of TextField %s"
+msgstr "è¯å¾è®¾ç½® TextField %s çé¿åº¦å±æ§"
-#: libcore/SWFStream.cpp:302 libcore/SWFStream.cpp:320
-#: libcore/SWFStream.cpp:353 libcore/SWFStream.cpp:384
-#: libcore/parser/SWFParser.cpp:151
-msgid "Unexpected end of stream while reading"
-msgstr ""
+#: libcore/asobj/TextField_as.cpp:462 libcore/asobj/TextField_as.cpp:488
+#, c-format
+msgid "Attempt to set read-only %s property of TextField %s"
+msgstr "è¯å¾è®¾ç½® TextField %s ç åªè¯»å±æ§ %s "
-#: libcore/SWFStream.cpp:475
-msgid "Attempt to seek past the end of an opened tag"
-msgstr ""
+#: libcore/asobj/TextField_as.cpp:544
+#, c-format
+msgid "Invalid value given to TextField.type: %s"
+msgstr "æ æ TextField.type å¼: %s"
-#: libcore/SWFStream.cpp:483
-msgid "Attempt to seek before start of an opened tag"
-msgstr ""
+#: libcore/asobj/TextField_as.cpp:597
+msgid "TextField.getFontList()"
+msgstr "TextField.getFontList()"
-#: libcore/SWFStream.cpp:496
-msgid "Unexpected end of stream"
-msgstr ""
+#: libcore/asobj/TextField_as.cpp:608
+msgid "TextField.getNewTextFormat()"
+msgstr "TextField.getNewTextFormat()"
-#: libcore/SWFStream.cpp:564
-#, c-format
+#: libcore/asobj/TextField_as.cpp:658
msgid ""
-"Tag %d starting at offset %d is advertised to end at offset %d, which is "
-"after end of previously opened tag starting at offset %d and ending at "
-"offset %d. Making it end where container tag ends."
+"TextField.getTextFormat() discards URL, target, tabStops, bullet and display"
msgstr ""
+"TextField.getTextFormat() 丢å¼äº URL, target, tabStops, bullet å display"
-#: libcore/SWFStream.cpp:581
+#: libcore/asobj/TextField_as.cpp:672 libcore/asobj/TextField_as.cpp:694
#, c-format
-msgid "SWF[%lu]: tag type = %d, tag length = %d, end tag = %lu"
-msgstr ""
+msgid "TextField.setTextFormat(%s) : %s"
+msgstr "TextField.setTextFormat(%s) : %s"
-#: libcore/SWFStream.cpp:602
-msgid "Could not seek to reported end of tag"
-msgstr ""
+#: libcore/asobj/TextField_as.cpp:673
+msgid "missing arg"
+msgstr "缺å°åæ°"
-#: libcore/SWFStream.cpp:617
+#: libcore/asobj/TextField_as.cpp:679
#, c-format
-msgid "SWFStream::consumeInput: underlying stream couldn't go_to_end: %s"
-msgstr ""
-
-#: libcore/RGBA.cpp:47
-msgid "Failed to convert string to RGBA value! This is a Gnash bug"
-msgstr ""
-
-#: libcore/Font.cpp:130
msgid ""
-"Attempt to set font display or copyright name again. This should mean there "
-"is more than one DefineFontName tag referring to the same Font. Don't know "
-"what to do in this case, so ignoring."
-msgstr ""
-
-#: libcore/Font.cpp:167
-msgid ""
-"Attempt to add an embedded glyph CodeTable to a font that already has one. "
-"This should mean there are several DefineFontInfo tags, or a DefineFontInfo "
-"tag refers to a font created by DefineFont2 or DefineFont3. Don't know what "
-"should happen in this case, so ignoring."
-msgstr ""
-
-#: libcore/Font.cpp:201
-#, c-format
-msgid "Failed to find glyph %s in %s font %s"
-msgstr ""
-
-#: libcore/Font.cpp:276
-msgid "Device font provider was not initialized, can't get unitsPerEM"
-msgstr ""
-
-#: libcore/Font.cpp:298
-#, c-format
-msgid ""
-"Could not create shape glyph for DisplayObject code %u (%c) with device font "
-"%s (%p)"
-msgstr ""
-
-#: libcore/Font.cpp:332
-msgid ""
-"No name associated with this font, can't use device fonts (should I use a "
-"default one?)"
-msgstr ""
-
-#: libcore/Font.cpp:340
-#, c-format
-msgid "Could not create a freetype face %s"
-msgstr ""
-
-#: libcore/asobj/Stage_as.cpp:146
-msgid "Stage.width is a read-only property!"
-msgstr ""
-
-#: libcore/asobj/Stage_as.cpp:163
-msgid "Stage.height is a read-only property!"
-msgstr ""
-
-#: libcore/asobj/Stage_as.cpp:202
-msgid "Stage.showMenu implemented by setting gnashrc option and for gtk only"
-msgstr ""
-
-#: libcore/asobj/Video_as.cpp:114
-msgid "attachVideo needs 1 arg"
-msgstr ""
-
-#: libcore/asobj/Video_as.cpp:126
-#, c-format
-msgid "attachVideo(%s) first arg is not a NetStream instance"
-msgstr ""
-
-#: libcore/asobj/Video_as.cpp:139
-msgid "Video.deblocking"
-msgstr ""
-
-#: libcore/asobj/TextField_as.cpp:218
-#, c-format
-msgid "createTextField called with %d args, expected 6 - returning undefined"
-msgstr ""
-
-#: libcore/asobj/TextField_as.cpp:232
-#, c-format
-msgid "createTextField: negative width (%d) - reverting sign"
-msgstr ""
-
-#: libcore/asobj/TextField_as.cpp:242
-#, c-format
-msgid "createTextField: negative height (%d) - reverting sign"
-msgstr ""
-
-#: libcore/asobj/TextField_as.cpp:436
-#, c-format
-msgid "Attempt to set length property of TextField %s"
-msgstr ""
-
-#: libcore/asobj/TextField_as.cpp:462 libcore/asobj/TextField_as.cpp:488
-#, c-format
-msgid "Attempt to set read-only %s property of TextField %s"
-msgstr ""
-
-#: libcore/asobj/TextField_as.cpp:544
-#, c-format
-msgid "Invalid value given to TextField.type: %s"
-msgstr ""
-
-#: libcore/asobj/TextField_as.cpp:597
-msgid "TextField.getFontList()"
-msgstr ""
-
-#: libcore/asobj/TextField_as.cpp:608
-msgid "TextField.getNewTextFormat()"
-msgstr ""
-
-#: libcore/asobj/TextField_as.cpp:658
-msgid ""
-"TextField.getTextFormat() discards URL, target, tabStops, bullet and display"
-msgstr ""
-
-#: libcore/asobj/TextField_as.cpp:672 libcore/asobj/TextField_as.cpp:694
-#, c-format
-msgid "TextField.setTextFormat(%s) : %s"
-msgstr ""
-
-#: libcore/asobj/TextField_as.cpp:673
-msgid "missing arg"
-msgstr ""
-
-#: libcore/asobj/TextField_as.cpp:679
-#, c-format
-msgid ""
-"TextField.setTextFormat(%s) : args past the first are unhandled by Gnash"
-msgstr ""
+"TextField.setTextFormat(%s) : args past the first are unhandled by Gnash"
+msgstr "TextField.setTextFormat(%s) : Gnash没æå¤çä¼ å
¥ç第ä¸ä¸ªåæ°"
#: libcore/asobj/TextField_as.cpp:695
msgid "first argument is not a TextFormat"
-msgstr ""
+msgstr "第ä¸ä¸ªåæ°ä¸æ¯ä¸ä¸ª TextFormat"
#: libcore/asobj/TextField_as.cpp:729
msgid "TextField.setNewTextFormat(), we'll delegate to setTextFormat"
-msgstr ""
+msgstr "TextField.setNewTextFormat(), æä»¬å°å§æç» setTextFormat"
#: libcore/asobj/TextField_as.cpp:789
msgid "TextField.bottomScroll is not complete"
-msgstr ""
+msgstr "TextField.bottomScroll æ¯æªå®æç"
#: libcore/asobj/TextField_as.cpp:809
msgid "TextField.maxhscroll is not complete"
-msgstr ""
+msgstr "TextField.maxhscroll æ¯æªå®æç"
#: libcore/asobj/TextField_as.cpp:905
#, c-format
msgid "TextField.replaceSel(%s) requires exactly one argument"
-msgstr ""
+msgstr "TextField.replaceSel(%s) è¦æ±åªæä¸ä¸ªåæ°"
#: libcore/asobj/TextField_as.cpp:944
msgid "TextField._hscroll is not complete"
-msgstr ""
+msgstr "TextField._hscroll æ¯æªå®æç"
#: libcore/asobj/TextField_as.cpp:962
msgid "TextField.maxscroll is not complete"
-msgstr ""
+msgstr "TextField.maxscroll æ¯æªå®æç"
#: libcore/asobj/TextField_as.cpp:983
msgid "TextField.replaceText() called with less than 3 args"
-msgstr ""
+msgstr "TextField.replaceText() 被è°ç¨æ¶å°äº3ä¸ªåæ°"
#: libcore/asobj/TextField_as.cpp:993
#, c-format
msgid "TextField.replaceText(%s): negative endIndex - doing nothing"
-msgstr ""
+msgstr "TextField.replaceText(%s): endIndexä¸ºè´æ° - ä»ä¹é½ä¸å"
#: libcore/asobj/TextField_as.cpp:1019
#, c-format
msgid "TextField.replaceText(%s): beginIndex out of range - doing nothing"
-msgstr ""
+msgstr "TextField.replaceText(%s): beginIndex è¶
åºèå´ - ä»ä¹é½ä¸å"
#: libcore/asobj/TextField_as.cpp:1036
#, c-format
msgid ""
"TextField.replaceText(%s): endIndex out of range - taking as end of string"
-msgstr ""
+msgstr "TextField.replaceText(%s): endIndex è¶
åºèå´ - åå符串çç»å°¾"
-#: libcore/asobj/NetConnection_as.cpp:440
+#: libcore/asobj/Sound_as.cpp:431
#, c-format
-msgid "Gnash is not allowed to open this URL: %s"
-msgstr ""
+msgid "Could not create audio decoder: %s"
+msgstr "æ æ³å建é³é¢è§£ç å¨: %s"
-#: libcore/asobj/NetConnection_as.cpp:496
-#, c-format
-msgid "Gnash is not allowed to connect to %s"
-msgstr ""
+#: libcore/asobj/Sound_as.cpp:439
+msgid "No audio in Sound input."
+msgstr "声é³è¾å
¥ä¸æ²¡æé³æã"
-#: libcore/asobj/NetConnection_as.cpp:517
+#: libcore/asobj/Sound_as.cpp:593
#, c-format
-msgid "NetConnection.connect(%s): unsupported connection protocol"
-msgstr ""
+msgid "Gnash could not open this URL: %s"
+msgstr "Gnash æ æ³æå¼è¯¥é¾æ¥: %s"
-#: libcore/asobj/NetConnection_as.cpp:523
+#: libcore/asobj/Sound_as.cpp:604
#, c-format
-msgid "NetConnection.connect(%s): unknown connection protocol"
-msgstr ""
-
-#: libcore/asobj/NetConnection_as.cpp:569
-msgid "NetConnection.call: can't call while not connected"
-msgstr ""
-
-#: libcore/asobj/NetConnection_as.cpp:658
-msgid "NetConnection.call(): needs at least one argument"
-msgstr ""
+msgid "Unable to create parser for Sound at %s"
+msgstr "æ æ³åå»ºå¨ %s ç声é³è§£æå¨"
-#: libcore/asobj/NetConnection_as.cpp:681
-#, c-format
-msgid "NetConnection.call(%s): second argument must be an object"
-msgstr ""
+#: libcore/asobj/Sound_as.cpp:694
+msgid "No sound handler, nothing to start..."
+msgstr "æ 声é³å¤çç¨åºï¼æ²¡æå¼å§..."
-#: libcore/asobj/NetConnection_as.cpp:771
-msgid "NetConnection.connect(): needs at least one argument"
-msgstr ""
+#: libcore/asobj/Sound_as.cpp:701
+msgid "No MediaParser initialized, can't start an external sound"
+msgstr "MediaParseræ æ³åå§åï¼æ æ³å¯å¨å¤é¨å£°é³"
-#: libcore/asobj/NetConnection_as.cpp:793
-#, c-format
-msgid "NetConnection.connect(%s): args after the first are not supported"
-msgstr ""
+#: libcore/asobj/Sound_as.cpp:707
+msgid "Sound.start() has no effect on a streaming Sound"
+msgstr "Sound.start() å¨é³é¢æµä¸æ²¡æææ"
-#: libcore/asobj/NetConnection_as.cpp:808
-msgid "NetConnection.addHeader()"
-msgstr ""
+#: libcore/asobj/Sound_as.cpp:755
+msgid "No sound handler, nothing to stop..."
+msgstr "æ 声é³å¤çç¨åºï¼æ²¡æç»æ..."
-#: libcore/asobj/NetConnection_as.cpp:892
-msgid "Invoke buffer too short"
-msgstr ""
+#: libcore/asobj/Sound_as.cpp:785
+msgid "No sound handler, can't check duration..."
+msgstr "æ 声é³å¤çç¨åºï¼æ æ³æ£æ¥æç»æ¶é´..."
-#: libcore/asobj/NetConnection_as.cpp:899
-msgid "Invoke argument not present"
-msgstr ""
+#: libcore/asobj/Sound_as.cpp:810
+msgid ""
+"No sound handler, can't check position (we're likely not playing anyway)..."
+msgstr "æ 声é³å¤çç¨åºï¼æ æ³æ¥è¯¢ä½ç½®ï¼å¾å¯è½ç°å¨æ²¡æææ¾å¢ï¼..."
-#: libcore/asobj/NetConnection_as.cpp:990
+#: libcore/asobj/Sound_as.cpp:878
#, c-format
-msgid "Unknown HTTP Remoting response identifier '%s'"
-msgstr ""
+msgid "No samples decoded from input of %d bytes"
+msgstr "%d åèçè¾å
¥ä¸æ²¡æéæ ·è¢«è§£ç "
-#: libcore/asobj/NetConnection_as.cpp:1006
+#: libcore/asobj/Sound_as.cpp:979
#, c-format
-msgid "Unsupported HTTP Remoting response callback: '%s' (size %d)"
-msgstr ""
+msgid "new Sound(%d) : args after first one ignored"
+msgstr "æ°ç声é³ï¼%dï¼ï¼å¿½ç¥ç¬¬ä¸ä¸ªä»¥åçåæ°"
-#: libcore/asobj/NetConnection_as.cpp:1155
+#: libcore/asobj/Sound_as.cpp:993
#, c-format
-msgid "Error parsing server AMF: %s"
+msgid ""
+"new Sound(%s) : first argument isn't null or undefined, and isn't a "
+"DisplayObject. We'll take as an invalid DisplayObject ref."
msgstr ""
+"æ°ç声é³ï¼%sï¼ï¼ç¬¬ä¸ä¸ªåæ°ä¸ä¸ºç©ºææªå®ä¹ï¼å¹¶ä¸ä¸æ¯ä¸ä¸ªDisplayObjectãæä»¬å°å®"
+"å½åä¸ä¸ªæ æçDisplayObjectå¼ç¨ã"
+
+#: libcore/asobj/Sound_as.cpp:1011
+msgid "-- start sound"
+msgstr "- å¼å§å£°é³"
+
+#: libcore/asobj/Sound_as.cpp:1033
+msgid "-- stop sound "
+msgstr "- 忢声é³"
-#: libcore/asobj/NetConnection_as.cpp:1202
+#: libcore/asobj/Sound_as.cpp:1049 libcore/asobj/Sound_as.cpp:1104
#, c-format
-msgid "Could not serialize NetConnection.call argument %d"
-msgstr ""
+msgid "No such export '%s'"
+msgstr "没æè¿æ ·çè¾åº '%s'"
-#: libcore/asobj/NetConnection_as.cpp:1230
-msgid "Sanity failed. no string method in invoke packet"
-msgstr ""
+#: libcore/asobj/Sound_as.cpp:1058
+#, c-format
+msgid "Export '%s' is not a sound"
+msgstr "è¾åº '%s' 䏿¯ä¸ä¸ªå£°é³"
-#: libcore/asobj/NetConnection_as.cpp:1277
-msgid "Server called _onbwcheck without a callback"
-msgstr ""
+#: libcore/asobj/Sound_as.cpp:1074
+msgid "-- attach sound"
+msgstr "- æ·»å 声é³"
-#: libcore/asobj/NetConnection_as.cpp:1307
-msgid "RTMP server sent error"
-msgstr ""
+#: libcore/asobj/Sound_as.cpp:1079
+msgid "attach sound needs one argument"
+msgstr "æ·»å 声é³éè¦ä¸ä¸ªåæ°"
-#: libcore/asobj/Function_as.cpp:105
-msgid "Function.apply() called with no args"
-msgstr ""
+#: libcore/asobj/Sound_as.cpp:1089
+msgid "attachSound needs a non-empty string"
+msgstr "attachSound éè¦ä¸ä¸ªé空å符串"
-#: libcore/asobj/Function_as.cpp:129
+#: libcore/asobj/Sound_as.cpp:1113
#, c-format
-msgid ""
-"Function.apply() got %d args, expected at most 2 -- discarding the ones in "
-"excess"
-msgstr ""
+msgid "Export '%s'is not a sound"
+msgstr "è¾åº '%s' 䏿¯ä¸ä¸ªå£°é³"
-#: libcore/asobj/Array_as.cpp:535
-#, c-format
-msgid "Unhandled sort flags: %d (0x%X)"
-msgstr ""
+#: libcore/asobj/Sound_as.cpp:1148
+msgid "Sound.getPan()"
+msgstr "Sound.getPan()"
-#: libcore/asobj/Array_as.cpp:934
-msgid "Array.splice() needs at least 1 argument, call ignored"
-msgstr ""
+#: libcore/asobj/Sound_as.cpp:1163
+msgid "Sound.setDuration()"
+msgstr "Sound.setDuration()"
-#: libcore/asobj/Array_as.cpp:957
-#, c-format
-msgid "Array.splice(%d,%d): negative length given, call ignored"
-msgstr ""
+#: libcore/asobj/Sound_as.cpp:1178
+msgid "Sound.setPosition()"
+msgstr "Sound.setPosition()"
-#: libcore/asobj/Array_as.cpp:1055
-msgid "Sort called with invalid arguments."
-msgstr ""
+#: libcore/asobj/Sound_as.cpp:1185
+msgid "Sound.getTransform()"
+msgstr "Sound.getTransform()"
-#: libcore/asobj/Array_as.cpp:1199
-msgid "SortOn called with invalid arguments."
-msgstr ""
+#: libcore/asobj/Sound_as.cpp:1198
+#, c-format
+msgid "Sound.getVolume(%s) : arguments ignored"
+msgstr "Sound.getVolume(%s) : 忽ç¥åæ°"
-#: libcore/asobj/Array_as.cpp:1389
-msgid ""
-"More than 2 arguments to Array.slice, and I don't know what to do with "
-"them. Ignoring them"
-msgstr ""
+#: libcore/asobj/Sound_as.cpp:1214
+msgid "Sound.loadSound() needs at least 1 argument"
+msgstr "Sound.loadSound() è³å°éè¦ä¸ä¸ªåæ°"
-#: libcore/asobj/System_as.cpp:310
-msgid "System.security.allowDomain"
-msgstr ""
+#: libcore/asobj/Sound_as.cpp:1229
+#, c-format
+msgid "Sound.loadSound(%s): arguments after first 2 discarded"
+msgstr "Sound.loadSound(%s): 丢å¼ç¬¬ä¸¤ä¸ªä¹åçåæ°"
-#: libcore/asobj/System_as.cpp:321
-msgid "System.security.allowInsecureDomain"
-msgstr ""
+#: libcore/asobj/Sound_as.cpp:1243
+msgid "Sound.setPan()"
+msgstr "Sound.setPan()"
-#: libcore/asobj/System_as.cpp:329
-msgid "System.security.loadPolicyFile"
-msgstr ""
+#: libcore/asobj/Sound_as.cpp:1250
+msgid "Sound.setTransform()"
+msgstr "Sound.setTransform()"
-#: libcore/asobj/System_as.cpp:350
-msgid "System.showSettings"
-msgstr ""
+#: libcore/asobj/Sound_as.cpp:1259
+msgid "set volume of sound needs one argument"
+msgstr "设置é³ééè¦ä¸ä¸ªåæ°"
-#: libcore/asobj/System_as.cpp:367
-msgid "System.exactSettings"
-msgstr ""
+#: libcore/asobj/Sound_as.cpp:1274
+msgid "Sound.checkPolicyFile"
+msgstr "Sound.checkPolicyFile"
-#: libcore/asobj/System_as.cpp:385
-msgid "System.useCodepage"
-msgstr ""
+#: libcore/asobj/Sound_as.cpp:1287
+msgid "Sound.areSoundsInaccessible()"
+msgstr "Sound.areSoundsInaccessible()"
#: libcore/asobj/Key_as.cpp:40
msgid "Key.isAccessible"
-msgstr ""
+msgstr "Key.isAccessible"
#: libcore/asobj/Key_as.cpp:70
msgid "Key.isDown needs one argument (the key code)"
-msgstr ""
+msgstr "Key.isDown éè¦ä¸ä¸ªåæ°ï¼é®ç å¼ï¼"
#: libcore/asobj/Key_as.cpp:79
#, c-format
msgid "Key.isKeyDown(%d): keycode out of range"
-msgstr ""
+msgstr "Key.isKeyDown(%d): é®ç å¼è¶
åºèå´"
#: libcore/asobj/Key_as.cpp:97
msgid "Key.isToggled"
-msgstr ""
+msgstr "Key.isToggled"
-#: libcore/asobj/Object.cpp:148
-msgid "Too many args to Object constructor"
-msgstr ""
+#: libcore/asobj/XML_as.cpp:467
+msgid "XML data is empty"
+msgstr "XML æ°æ®ä¸ºç©º"
-#: libcore/asobj/Object.cpp:192
-#, c-format
-msgid ""
-"Invalid call to Object.addProperty(%s) - expected 3 arguments (<name>, "
-"<getter>, <setter>)"
-msgstr ""
+#: libcore/asobj/XML_as.cpp:742
+msgid "no text for text node creation"
+msgstr "ææ¬èç¹å建æ¶ç¼ºå°ææ¬"
-#: libcore/asobj/Object.cpp:209
-msgid "Invalid call to Object.addProperty() - empty property name"
-msgstr ""
+#: libcore/asobj/XML_as.cpp:755
+msgid "XML.parseXML() needs one argument"
+msgstr "XML.parseXML() éè¦ä¸ä¸ªåæ°"
-#: libcore/asobj/Object.cpp:219
-msgid "Invalid call to Object.addProperty() - getter is not an AS function"
-msgstr ""
+#: libcore/asobj/AsBroadcaster.cpp:233
+msgid "AsBroadcaster.initialize() requires one argument, none given"
+msgstr "AsBroadcaster.initialize() éè¦ä¸ä¸ªåæ°ï¼æ²¡æç»åºåæ°"
-#: libcore/asobj/Object.cpp:233
+#: libcore/asobj/AsBroadcaster.cpp:243
#, c-format
-msgid ""
-"Invalid call to Object.addProperty() - setter is not null and not an AS "
-"function (%s)"
-msgstr ""
+msgid "AsBroadcaster.initialize(%s): first arg is not an object"
+msgstr "AsBroadcaster.initialize(%s): 第ä¸ä¸ªåæ°ä¸æ¯ä¸ä¸ªå¯¹è±¡"
-#: libcore/asobj/Object.cpp:257
+#: libcore/asobj/AsBroadcaster.cpp:252
#, c-format
msgid ""
-"Invalid call to Object.registerClass(%s) - expected 2 arguments (<symbol>, "
-"<constructor>)"
+"AsBroadcaster.initialize(%s): first arg is an object but doesn't cast to one "
+"(dangling DisplayObject ref?)"
msgstr ""
+"AsBroadcaster.initialize(%s): 第ä¸ä¸ªåæ°ä¸æ¯ä¸ä¸ªå¯¹è±¡ä¹ä¸è½è½¬æ¢ä¸ºå¯¹è±¡"
+"( DisplayObject å¼ç¨è¢«ä¿®æ¹?)"
-#: libcore/asobj/Object.cpp:274
+#: libcore/asobj/AsBroadcaster.cpp:282 libcore/asobj/AsBroadcaster.cpp:327
+#: libcore/asobj/AsBroadcaster.cpp:393
#, c-format
-msgid ""
-"Invalid call to Object.registerClass(%s) - first argument (symbol id) "
-"evaluates to empty string"
-msgstr ""
+msgid "%p.addListener(%s): this object has no _listeners member"
+msgstr "%p.addListener(%s): 该对象没æ _listeners æå"
-#: libcore/asobj/Object.cpp:286
+#: libcore/asobj/AsBroadcaster.cpp:293 libcore/asobj/AsBroadcaster.cpp:338
+#: libcore/asobj/AsBroadcaster.cpp:404
#, c-format
-msgid ""
-"Invalid call to Object.registerClass(%s) - second argument (class) is not a "
-"function)"
-msgstr ""
-
-#: libcore/asobj/Object.cpp:298
-msgid ""
-"current environment has no target, wouldn't know where to look for symbol "
-"required for registerClass"
-msgstr ""
+msgid "%p.addListener(%s): this object's _listener isn't an object: %s"
+msgstr "%p.addListener(%s): 该对象ç _listener 䏿¯ä¸ä¸ªå¯¹è±¡: %s"
-#: libcore/asobj/Object.cpp:313
+#: libcore/asobj/AsBroadcaster.cpp:415
#, c-format
-msgid "Object.registerClass('%s', %s): can't find exported symbol (id: %d)"
-msgstr ""
+msgid "%p.broadcastMessage() needs an argument"
+msgstr "%p.broadcastMessage() éè¦ä¸ä¸ªåæ°"
-#: libcore/asobj/Object.cpp:326
+#: libcore/asobj/MovieClipLoader.cpp:105
#, c-format
-msgid ""
-"Object.registerClass(%s, %s): exported symbol is not a MovieClip symbol "
-"(sprite_definition), but a %s"
-msgstr ""
+msgid "MovieClipLoader.loadClip(%s): missing arguments"
+msgstr "MovieClipLoader.loadClip(%s): 缺å°åæ°"
-#: libcore/asobj/Object.cpp:348
-msgid "Object.hasOwnProperty() requires one arg"
-msgstr ""
+#: libcore/asobj/MovieClipLoader.cpp:114
+#, c-format
+msgid "MovieClipLoader.loadClip(%s): first argument must be a string"
+msgstr "MovieClipLoader.loadClip(%s): 第ä¸ä¸ªåæ°å¿
é¡»æ¯ä¸ä¸ªå符串"
-#: libcore/asobj/Object.cpp:357
+#: libcore/asobj/MovieClipLoader.cpp:132
#, c-format
-msgid "Invalid call to Object.hasOwnProperty('%s')"
-msgstr ""
+msgid "Could not find target %s (evaluated from %s)"
+msgstr "æ æ³æ¾å°ç®æ %s (ä» %s è¯ä¼°ï¼"
-#: libcore/asobj/Object.cpp:373
-msgid "Object.isPropertyEnumerable() requires one arg"
-msgstr ""
+#: libcore/asobj/MovieClipLoader.cpp:149
+#, c-format
+msgid "MovieClipLoader.unloadClip(%s): expected at least one argument"
+msgstr "MovieClipLoader.unloadClip(%s): ææè³å°ä¸ä¸ªåæ°"
-#: libcore/asobj/Object.cpp:382
+#: libcore/asobj/MovieClipLoader.cpp:156
#, c-format
-msgid "Invalid call to Object.isPropertyEnumerable('%s')"
-msgstr ""
+msgid "MovieClipLoader.unloadClip: %s"
+msgstr "MovieClipLoader.unloadClip: %s"
-#: libcore/asobj/Object.cpp:405
-msgid "Object.isPrototypeOf() requires one arg"
-msgstr ""
+#: libcore/asobj/MovieClipLoader.cpp:180
+msgid "MovieClipLoader.getProgress(): missing argument"
+msgstr "MovieClipLoader.getProgress(): 缺å°åæ°"
-#: libcore/asobj/Object.cpp:413
+#: libcore/asobj/MovieClipLoader.cpp:189
#, c-format
-msgid "First arg to Object.isPrototypeOf(%s) is not an object"
-msgstr ""
+msgid "MovieClipLoader.getProgress(%s): first argument is not an object"
+msgstr "MovieClipLoader.getProgress(%s): 第ä¸ä¸ªåæ°ä¸æ¯ä¸ä¸ªå¯¹è±¡"
-#: libcore/asobj/Object.cpp:432
+#: libcore/asobj/MovieClipLoader.cpp:198
#, c-format
-msgid "Object.watch(%s): missing arguments"
-msgstr ""
+msgid "MovieClipLoader.getProgress(%s): first argument is not an sprite"
+msgstr "MovieClipLoader.getProgress(%s): 第ä¸ä¸ªåæ°ä¸æ¯ä¸ä¸ª sprite"
-#: libcore/asobj/Object.cpp:443
+#: libcore/asobj/Stage_as.cpp:146
+msgid "Stage.width is a read-only property!"
+msgstr "Stage.widthæ¯ä¸ä¸ªåªè¯»å±æ§ï¼"
+
+#: libcore/asobj/Stage_as.cpp:163
+msgid "Stage.height is a read-only property!"
+msgstr "Stage. heightæ¯ä¸ä¸ªåªè¯»å±æ§ï¼"
+
+#: libcore/asobj/Stage_as.cpp:202
+msgid "Stage.showMenu implemented by setting gnashrc option and for gtk only"
+msgstr "Stage.showMenu为设置gnashrcé项èå®ç°ï¼å¹¶ä¸ä»
ç¨äºGTK"
+
+#: libcore/asobj/Color_as.cpp:153
+msgid "Color.setRGB() : missing argument"
+msgstr "Color.setRGB() : 缺å°åæ°"
+
+#: libcore/asobj/Color_as.cpp:186
+msgid "Color.setTransform() : missing argument"
+msgstr "Color.setTransform() : 缺å°åæ°"
+
+#: libcore/asobj/Color_as.cpp:196
#, c-format
-msgid "Object.watch(%s): second argument is not a function"
-msgstr ""
+msgid "Color.setTransform(%s) : first argument doesn't cast to an object"
+msgstr "Color.setTransform(%s) : 第ä¸ä¸ªåæ°ä¸è½è½¬æ¢ä¸ºä¸ä¸ªå¯¹è±¡"
-#: libcore/asobj/Object.cpp:469
+#: libcore/asobj/Number_as.cpp:78
#, c-format
-msgid "Object.unwatch(%s): missing argument"
-msgstr ""
+msgid "Number.toString(%s): radix must be in the 2..36 range (%d is invalid)"
+msgstr "Number.toString(%s): radix å¿
é¡»å¨ 2..36 èå´ä¹å
(%d æ¯ä¸åæ³ç)"
-#: libcore/asobj/String_as.cpp:451
-msgid "string.slice() called with end < start"
-msgstr ""
+#: libcore/asobj/Microphone_as.cpp:252
+msgid "No MediaHandler exists! Cannot create a Microphone object"
+msgstr "没æMediaHandleråå¨ï¼ä¸è½å建ä¸ä¸ªMicrophone对象"
-#: libcore/asobj/String_as.cpp:496
+#: libcore/asobj/Microphone_as.cpp:284
+msgid "Microphone.gain(): wrong number of parameters passed"
+msgstr "Microphone.gain(): é误æ°éçåæ°è¢«ä¼ å
¥"
+
+#: libcore/asobj/Microphone_as.cpp:300
+msgid "Microphone.setRate: wrong number of parameters passed"
+msgstr "Microphone.setRate: é误æ°éçåæ°è¢«ä¼ å
¥"
+
+#: libcore/asobj/Microphone_as.cpp:313
+msgid "Microphone::activityLevel only has default value (-1)"
+msgstr "Microphone::activityLevel åªæç¼ºçå¼ (-1)"
+
+#: libcore/asobj/Microphone_as.cpp:318
+msgid "Attempt to set activity property of Microphone"
+msgstr "è¯å¾è®¾ç½® Microphone çæ´»å¨å±æ§"
+
+#: libcore/asobj/Microphone_as.cpp:353
+msgid "Microphone::muted is always false (always allows access)"
+msgstr "Microphone::muted æ»ä¸º false (æ»æ¯å
许读å)"
+
+#: libcore/asobj/Microphone_as.cpp:413
+msgid "Microphone::silenceTimeout can be set, but is unimplemented"
+msgstr "Microphone::silenceTimeout å¯ä»¥è¢«è®¾ç½®, ä½è¯¥åè½è¿æªå®ç°"
+
+#: libcore/asobj/Microphone_as.cpp:436
#, c-format
-msgid "String.indexOf(%s, %s): second argument casts to invalid offset (%d)"
-msgstr ""
+msgid "%s: Too many arguments"
+msgstr "%s: 太å¤åæ°"
-#: libcore/asobj/String_as.cpp:569
-msgid "string.charCodeAt needs one argument"
-msgstr ""
+#: libcore/asobj/Date_as.cpp:463
+msgid "Date constructor called with more than 7 arguments"
+msgstr "Date æé å¨è°ç¨å¸¦æè¶
è¿ 7 ä¸ªåæ°"
-#: libcore/asobj/String_as.cpp:578
-msgid "string.charCodeAt has more than one argument"
-msgstr ""
+#: libcore/asobj/Date_as.cpp:724
+msgid "Date.setTime needs one argument"
+msgstr "Date.setTime éè¦ä¸ä¸ªåæ°"
-#: libcore/asobj/String_as.cpp:756
-msgid "No fn_call::callerDef in string function call"
-msgstr ""
+#: libcore/asobj/Date_as.cpp:744
+msgid "Date.setTime was called with more than one argument"
+msgstr "Date.setTime è°ç¨æ¶å¸¦æè¶
è¿ä¸ä¸ªåæ°"
-#: libcore/asobj/String_as.cpp:780
-msgid "%1%(%2%) needs %3% argument(s)"
-msgstr ""
+#: libcore/asobj/Date_as.cpp:835
+msgid "Date.setFullYear needs one argument"
+msgstr "Date.setFullYear éè¦ä¸ä¸ªåæ°"
-#: libcore/asobj/String_as.cpp:791
-msgid "%1%(%2%) has more than %3% argument(s)"
-msgstr ""
+#: libcore/asobj/Date_as.cpp:875
+msgid "Date.setYear needs one argument"
+msgstr "Date.setYear éè¦ä¸ä¸ªåæ°"
-#: libcore/asobj/flash/external/ExternalInterface_as.cpp:292
+#: libcore/asobj/Date_as.cpp:898
+msgid "Date.setYear was called with more than three arguments"
+msgstr "Date.setYear è°ç¨æ¶å¸¦æè¶
è¿ä¸ä¸ªåæ°"
+
+#: libcore/asobj/Date_as.cpp:929
#, c-format
-msgid "VAL: %s"
-msgstr ""
+msgid "Date.set%sMonth needs one argument"
+msgstr "Date.set%sMonth éè¦ä¸ä¸ªåæ°"
-#: libcore/asobj/flash/external/ExternalInterface_as.cpp:343
+#: libcore/asobj/Date_as.cpp:962
#, c-format
-msgid ""
-"ExternalInterface path %s is outside the SWF domain %s. Cannot access this "
-"object."
-msgstr ""
+msgid "Date.set%sMonth was called with more than three arguments"
+msgstr "Date.set%sMonth è°ç¨æ¶å¸¦æè¶
è¿ä¸ä¸ªåæ°"
-#: libcore/asobj/flash/net/FileReferenceList_as.cpp:91
+#: libcore/asobj/Date_as.cpp:984
#, c-format
-msgid "FileReferenceList(%s): %s"
-msgstr ""
+msgid "Date.set%sDate needs one argument"
+msgstr "Date.set%sDate éè¦ä¸ä¸ªåæ°"
-#: libcore/asobj/flash/net/FileReferenceList_as.cpp:92
-#: libcore/asobj/flash/net/FileReference_as.cpp:160
-#: libcore/asobj/flash/geom/Transform_as.cpp:357
-msgid "arguments discarded"
-msgstr ""
+#: libcore/asobj/Date_as.cpp:998
+#, c-format
+msgid "Date.set%sDate was called with more than one argument"
+msgstr "Date.set%sDate è°ç¨æ¶å¸¦æè¶
è¿ä¸ä¸ªåæ°"
-#: libcore/asobj/flash/net/FileReference_as.cpp:159
+#: libcore/asobj/Date_as.cpp:1025
#, c-format
-msgid "FileReference(%s): %s"
-msgstr ""
+msgid "Date.set%sHours needs one argument"
+msgstr "Date.set%sHours éè¦ä¸ä¸ªåæ°"
-#: libcore/asobj/flash/geom/Rectangle_as.cpp:153
+#: libcore/asobj/Date_as.cpp:1044
#, c-format
-msgid "flash.geom.Rectangle(%s): %s"
-msgstr ""
+msgid "Date.set%sHours was called with more than four arguments"
+msgstr "Date.set%sHours è°ç¨æ¶å¸¦æè¶
è¿åä¸ªåæ°"
-#: libcore/asobj/flash/geom/Rectangle_as.cpp:154
-#: libcore/asobj/flash/geom/Point_as.cpp:427
-#: libcore/asobj/flash/geom/Point_as.cpp:511
-#: libcore/asobj/flash/geom/Point_as.cpp:596
-#: libcore/asobj/flash/geom/Point_as.cpp:604
-#: libcore/asobj/MovieClip_as.cpp:532
-msgid "missing arguments"
-msgstr ""
+#: libcore/asobj/Date_as.cpp:1070
+#, c-format
+msgid "Date.set%sMinutes needs one argument"
+msgstr "Date.set%sMinutes éè¦ä¸ä¸ªåæ°"
-#: libcore/asobj/flash/geom/Rectangle_as.cpp:471
-#: libcore/asobj/flash/geom/Rectangle_as.cpp:545
-#: libcore/asobj/flash/geom/Rectangle_as.cpp:603
-#: libcore/asobj/flash/geom/Matrix_as.cpp:421
-#: libcore/asobj/flash/geom/Matrix_as.cpp:747
-msgid "Failed to construct flash.geom.Point!"
-msgstr ""
+#: libcore/asobj/Date_as.cpp:1088 libcore/asobj/Date_as.cpp:1131
+#, c-format
+msgid "Date.set%sMinutes was called with more than three arguments"
+msgstr "Date.set%sMinutes è°ç¨æ¶å¸¦æè¶
è¿ä¸ä¸ªåæ°"
-#: libcore/asobj/flash/geom/Rectangle_as.cpp:483
-#: libcore/asobj/flash/geom/Rectangle_as.cpp:557
-#: libcore/asobj/flash/geom/Rectangle_as.cpp:616
-#: libcore/asobj/flash/geom/Point_as.cpp:411
+#: libcore/asobj/Date_as.cpp:1111
#, c-format
-msgid "Attempt to set read-only property %s"
-msgstr ""
+msgid "Date.set%sSeconds needs one argument"
+msgstr "Date.set%sSeconds éè¦ä¸ä¸ªåæ°"
-#: libcore/asobj/flash/geom/Point_as.cpp:119
-#: libcore/asobj/flash/geom/Point_as.cpp:190
-#: libcore/asobj/flash/geom/Point_as.cpp:238
-#: libcore/asobj/flash/geom/Point_as.cpp:323
+#: libcore/asobj/Date_as.cpp:1149
#, c-format
-msgid "%s: missing arguments"
-msgstr ""
+msgid "Date.set%sMilliseconds needs one argument"
+msgstr "Date.set%sMilliseconds éè¦ä¸ä¸ªåæ°"
-#: libcore/asobj/flash/geom/Point_as.cpp:128
-#: libcore/asobj/flash/geom/Point_as.cpp:138
-#: libcore/asobj/flash/geom/Point_as.cpp:148
-#: libcore/asobj/flash/geom/Point_as.cpp:156
-#: libcore/asobj/flash/geom/Point_as.cpp:332
-#: libcore/asobj/flash/geom/Point_as.cpp:342
-#: libcore/asobj/flash/geom/Point_as.cpp:352
-#: libcore/asobj/flash/geom/Point_as.cpp:360
+#: libcore/asobj/Date_as.cpp:1166
#, c-format
-msgid "Point.add(%s): %s"
-msgstr ""
+msgid "Date.set%sMilliseconds was called with more than one argument"
+msgstr "Date.set%sMilliseconds è°ç¨æ¶å¸¦æè¶
è¿ä¸ä¸ªåæ°"
-#: libcore/asobj/flash/geom/Point_as.cpp:129
-#: libcore/asobj/flash/geom/Point_as.cpp:249
-#: libcore/asobj/flash/geom/Point_as.cpp:333
-msgid "arguments after first discarded"
-msgstr ""
+#: libcore/asobj/Date_as.cpp:1228
+msgid "Date.UTC needs one argument"
+msgstr "Date.UTC éè¦ä¸ä¸ªåæ°"
-#: libcore/asobj/flash/geom/Point_as.cpp:139
-#: libcore/asobj/flash/geom/Point_as.cpp:343
-#: libcore/asobj/flash/geom/Point_as.cpp:532
-msgid "first argument doesn't cast to object"
-msgstr ""
+#: libcore/asobj/Date_as.cpp:1252
+msgid "Date.UTC was called with more than 7 arguments"
+msgstr "Date.UTC è°ç¨æ¶å¸¦æè¶
è¿ 7 ä¸ªåæ°"
-#: libcore/asobj/flash/geom/Point_as.cpp:149
-msgid "first argument cast to object doesn't contain an 'x' member"
-msgstr ""
+#: libcore/asobj/NetStream_as.cpp:315
+#, c-format
+msgid "::pause(%d) called "
+msgstr "::pause(%d) 被è°ç¨"
-#: libcore/asobj/flash/geom/Point_as.cpp:157
-msgid "first argument cast to object doesn't contain an 'y' member"
-msgstr ""
+#: libcore/asobj/NetStream_as.cpp:371
+msgid "No NetConnection associated with this NetStream, won't play"
+msgstr "没æ NetConnection å
³èå°è¯¥ NetStream, å°ä¸ä¼ææ¾"
-#: libcore/asobj/flash/geom/Point_as.cpp:200
+#: libcore/asobj/NetStream_as.cpp:382
+msgid "NetConnection is not connected. Won't play."
+msgstr "NetConnection æªè¿æ¥ãå°ä¸ä¼ææ¾"
+
+#: libcore/asobj/NetStream_as.cpp:395
#, c-format
-msgid "Point.equals(%s): %s"
-msgstr ""
+msgid "Couldn't load URL %s"
+msgstr "æ æ³å è½½ URL %s"
-#: libcore/asobj/flash/geom/Point_as.cpp:201
-#: libcore/asobj/flash/geom/Point_as.cpp:447
-msgid "First arg must be an object"
-msgstr ""
+#: libcore/asobj/NetStream_as.cpp:402
+#, c-format
+msgid "Connecting to movie: %s"
+msgstr "è¿æ¥å°çµå½±ï¼%s"
-#: libcore/asobj/flash/geom/Point_as.cpp:211
-#: libcore/asobj/flash/geom/Point_as.cpp:457
+#: libcore/asobj/NetStream_as.cpp:408
#, c-format
-msgid "Point.equals(%s): %s %s"
-msgstr ""
+msgid "NetStream.play(%s): failed starting playback"
+msgstr "NetStream.play(%s): æ æ³å¼å§åæ¾"
-#: libcore/asobj/flash/geom/Point_as.cpp:212
-#: libcore/asobj/flash/geom/Point_as.cpp:458
-msgid "First arg must be an instance of"
-msgstr ""
+#: libcore/asobj/NetStream_as.cpp:431
+msgid "NetStream_as::initVideoDecoder: hot-plugging video consumer"
+msgstr "NetStream_as::initVideoDecoderï¼çææè§é¢æ¶è"
-#: libcore/asobj/flash/geom/Point_as.cpp:248
+#: libcore/asobj/NetStream_as.cpp:436
#, c-format
-msgid "Point.normalize(%s): %s"
-msgstr ""
+msgid "NetStream: Could not create Video decoder: %s"
+msgstr "NetStreamï¼æ æ³å建è§é¢è§£ç å¨ï¼%s"
-#: libcore/asobj/flash/geom/Point_as.cpp:353
-msgid "first argument casted to object doesn't contain an 'x' member"
-msgstr ""
+#: libcore/asobj/NetStream_as.cpp:460
+msgid "NetStream_as::initAudioDecoder: hot-plugging audio consumer"
+msgstr "NetStream_as::initAudioDecoder: çææå®¶åºé³é¢"
-#: libcore/asobj/flash/geom/Point_as.cpp:361
-msgid "first argument casted to object doesn't contain an 'y' member"
-msgstr ""
+#: libcore/asobj/NetStream_as.cpp:467
+#, c-format
+msgid "Could not create Audio decoder: %s"
+msgstr "æ æ³å建é³é¢è§£ç å¨ï¼%s"
-#: libcore/asobj/flash/geom/Point_as.cpp:426
-#: libcore/asobj/flash/geom/Point_as.cpp:436
-#: libcore/asobj/flash/geom/Point_as.cpp:446
+#: libcore/asobj/NetStream_as.cpp:493
#, c-format
-msgid "Point.distance(%s): %s"
-msgstr ""
+msgid "Gnash could not get stream '%s' from NetConnection"
+msgstr "Gnash æ æ³ä» NetConnection è·åæµ '%s'"
-#: libcore/asobj/flash/geom/Point_as.cpp:437
-msgid "arguments after first two discarded"
-msgstr ""
+#: libcore/asobj/NetStream_as.cpp:503
+msgid "No Media handler registered, can't parse NetStream input"
+msgstr "没æå·²æ³¨åçåªä½å¤çå¨ï¼æ æ³è§£æ NetStream è¾å
¥"
-#: libcore/asobj/flash/geom/Point_as.cpp:510
-#: libcore/asobj/flash/geom/Point_as.cpp:520
-#: libcore/asobj/flash/geom/Point_as.cpp:531
-#: libcore/asobj/flash/geom/Point_as.cpp:547
+#: libcore/asobj/NetStream_as.cpp:511
+msgid "Unable to create parser for NetStream input"
+msgstr "ä¸è½ä¸º NetStream è¾å
¥å建解æå¨"
+
+#: libcore/asobj/NetStream_as.cpp:536
#, c-format
-msgid "Point.interpolate(%s): %s"
-msgstr ""
+msgid "%p.startPlayback: playHead position reset to 0"
+msgstr "%p.startPlayback: playHead ä½ç½®é设为0"
-#: libcore/asobj/flash/geom/Point_as.cpp:521
-msgid "arguments after first three discarded"
-msgstr ""
+#: libcore/asobj/NetStream_as.cpp:542
+msgid "Setting playStart status"
+msgstr "设置 playStart ç¶æ"
-#: libcore/asobj/flash/geom/Point_as.cpp:548
-msgid "second argument doesn't cast to object"
-msgstr ""
+#: libcore/asobj/NetStream_as.cpp:561
+msgid "getDecodedVideoFrame: no parser available"
+msgstr "getDecodedVideoFrameï¼æ²¡æå¯ç¨çè§£æå¨"
-#: libcore/asobj/flash/geom/Point_as.cpp:595
-#: libcore/asobj/flash/geom/Point_as.cpp:604
+#: libcore/asobj/NetStream_as.cpp:570
#, c-format
-msgid "Point.polar(%s): %s"
+msgid ""
+"getDecodedVideoFrame(%d): no more video frames in input "
+"(nextVideoFrameTimestamp returned false, parsingComplete=%d)"
msgstr ""
+"getDecodedVideoFrame(%d): è¾å
¥ä¸æ²¡ææ´å¤çè§é¢å¸§ (nextVideoFrameTimestamp è¿"
+"å false, parsingComplete=%d)"
-#: libcore/asobj/flash/geom/ColorTransform_as.cpp:365
-#, c-format
+#: libcore/asobj/NetStream_as.cpp:581
msgid ""
-"ColorTransform(%s): not enough arguments (need 8). Constructing with default "
-"values"
+"getDecodedVideoFrame setting playStop status (parsing complete and "
+"nextVideoFrameTimestamp() returned false)"
msgstr ""
+"getDecodedVideoFrame 设置 playStop ç¶æ (è§£æå®æï¼ nextVideoFrameTimestamp"
+"() è¿å false)"
-#: libcore/asobj/flash/geom/ColorTransform_as.cpp:380
+#: libcore/asobj/NetStream_as.cpp:592
#, c-format
-msgid "ColorTransform(%s): discarding extra arguments"
-msgstr ""
+msgid "%p.getDecodedVideoFrame(%d): next video frame is in the future (%d)"
+msgstr "%p.getDecodedVideoFrame(%d): ä¸ä¸ä¸ªè§é¢å¸§å¨åé¢ (%d)"
-#: libcore/asobj/flash/geom/Matrix_as.cpp:184
+#: libcore/asobj/NetStream_as.cpp:603
#, c-format
-msgid "Matrix.concat(%s): needs one argument"
+msgid ""
+"nextVideoFrameTimestamp returned true (%d), but decodeNextVideoFrame "
+"returned null, I don't think this should ever happen"
msgstr ""
+"nextVideoFrameTimestamp è¿å true (%d), ä½ decodeNextVideoFrame è¿å为空, æ"
+"认为è¿ä¸åºè¯¥åçã"
-#: libcore/asobj/flash/geom/Matrix_as.cpp:198
+#: libcore/asobj/NetStream_as.cpp:613
#, c-format
-msgid "Matrix.concat(%s): needs a Matrix object"
+msgid ""
+"%p.getDecodedVideoFrame(%d): last video frame decoded (should set playback "
+"status to STOP?)"
msgstr ""
+"%p.getDecodedVideoFrame(%d): ä¸ä¸ä¸ªè§é¢å¸§è¢«è§£ç (æ¯å¦åºè¯¥è®¾ç½®åæ¾ç¶æä¸º "
+"STOP?)"
-#: libcore/asobj/flash/geom/Matrix_as.cpp:255
+#: libcore/asobj/NetStream_as.cpp:621
#, c-format
-msgid "Matrix.createBox(%s): needs at least two arguments"
-msgstr ""
+msgid ""
+"%p.getDecodedVideoFrame(%d): next video frame is in the future, we'll return "
+"this one"
+msgstr "%p.getDecodedVideoFrame(%d): ä¸ä¸ä¸ªè§é¢å¸§å¨åé¢ï¼æä»¬ä¼è¿åå®"
-#: libcore/asobj/flash/geom/Matrix_as.cpp:314
-#, c-format
-msgid "Matrix.createGradientBox(%s): needs at least two arguments"
-msgstr ""
+#: libcore/asobj/NetStream_as.cpp:641
+msgid "decodeNextVideoFrame: no parser available"
+msgstr "decodeNextVideoFrame: 没æå¯ç¨çè§£æå¨"
-#: libcore/asobj/flash/geom/Matrix_as.cpp:388
+#: libcore/asobj/NetStream_as.cpp:648
#, c-format
-msgid "Matrix.deltaTransformPoint(%s): needs one argument"
-msgstr ""
+msgid "%p.decodeNextVideoFrame(): no more video frames in input"
+msgstr "%p.decodeNextVideoFrame(): è¾å
¥ä¸æ²¡ææ´å¤çè§é¢å¸§"
-#: libcore/asobj/flash/geom/Matrix_as.cpp:402
+#: libcore/asobj/NetStream_as.cpp:664
+msgid "Error decoding encoded video frame in NetStream input"
+msgstr "NetStream è¾å
¥ä¸çç¼ç è§é¢å¸§åçè§£ç é误"
+
+#: libcore/asobj/NetStream_as.cpp:680
#, c-format
-msgid "Matrix.deltaTransformPoint(%s): needs an object"
-msgstr ""
+msgid "%p.decodeNextAudioFrame: no more video frames in input"
+msgstr "%p.decodeNextAudioFrame: è¾å
¥ä¸æ²¡ææ´å¤çè§é¢å¸§"
-#: libcore/asobj/flash/geom/Matrix_as.cpp:523
+#: libcore/asobj/NetStream_as.cpp:710
#, c-format
-msgid "Matrix.rotate(%s): needs one argument"
+msgid ""
+"NetStream_as::decodeNextAudioFrame: %d bytes of encoded audio decoded to %d "
+"bytes"
msgstr ""
+"NetStream_as::decodeNextAudioFrame: ç¼ç é³é¢ä¸ç %d åèè¢«è§£ç æ %d åè"
-#: libcore/asobj/flash/geom/Matrix_as.cpp:599
-#: libcore/asobj/flash/geom/Matrix_as.cpp:770
+#: libcore/asobj/NetStream_as.cpp:731
#, c-format
-msgid "Matrix.translate(%s): needs two arguments"
-msgstr ""
+msgid "NetStream_as::seek(%d): no parser, no party"
+msgstr "NetStream_as::seek(%d): 没æè§£æå¨ï¼æ²¡æ party"
-#: libcore/asobj/flash/geom/Matrix_as.cpp:704
+#: libcore/asobj/NetStream_as.cpp:751
+msgid "Setting invalidTime status"
+msgstr "设置 invalidTime ç¶æ"
+
+#: libcore/asobj/NetStream_as.cpp:758
#, c-format
-msgid "Matrix.translate(%s): needs one argument"
-msgstr ""
+msgid "_parser->seek(%d) returned %d"
+msgstr "_parser->seek(%d) è¿å %d"
-#: libcore/asobj/flash/geom/Matrix_as.cpp:717
+#: libcore/asobj/NetStream_as.cpp:765
#, c-format
-msgid "Matrix.transformPoint(%s): needs an object"
-msgstr ""
+msgid "%p.seek: playHead position set to %d"
+msgstr "%p.seek: playHead ä½ç½®è®¾ä¸º %d"
-#: libcore/asobj/flash/geom/Matrix_as.cpp:729
+#: libcore/asobj/NetStream_as.cpp:803
#, c-format
-msgid "Matrix.transformPoint(%s): object must be a Point"
+msgid ""
+"%p.refreshAudioBuffer: doing nothing as playhead is paused - bufferLength=%d/"
+"%d"
msgstr ""
+"%p.refreshAudioBuffer: ä»ä¹ä¹ä¸åï¼å 为 playhead 被æå - bufferLength=%d/%d"
-#: libcore/asobj/flash/geom/Transform_as.cpp:122
-#: libcore/asobj/flash/geom/Transform_as.cpp:198
-msgid "Failed to construct flash.geom.ColorTransform!"
+#: libcore/asobj/NetStream_as.cpp:812
+#, c-format
+msgid ""
+"%p.refreshAudioBuffer: doing nothing as current position was already decoded "
+"- bufferLength=%d/%d"
msgstr ""
+"%p.refreshAudioBuffer: ä»ä¹ä¹ä¸åï¼å 为å½åä½ç½®å·²ç»è§£ç - bufferLength=%d/%d"
-#: libcore/asobj/flash/geom/Transform_as.cpp:145
+#: libcore/asobj/NetStream_as.cpp:824
#, c-format
-msgid "Transform.colorTransform(%s): extra arguments discarded"
+msgid ""
+"%p.refreshAudioBuffer: currentPosition=%d, playHeadState=%d, bufferLength="
+"%d, bufferTime=%d"
msgstr ""
+"%p.refreshAudioBuffer: currentPosition=%d, playHeadState=%d, bufferLength="
+"%d, bufferTime=%d"
-#: libcore/asobj/flash/geom/Transform_as.cpp:155
+#: libcore/asobj/NetStream_as.cpp:962
#, c-format
-msgid "Transform.colorTransform(%s): argument is not an object"
-msgstr ""
+msgid "%p.pushDecodedAudioFrames(%d) : buffer overrun (%d/%d)."
+msgstr "%p.pushDecodedAudioFrames(%d) : ç¼å²åºæº¢åº (%d/%d)."
-#: libcore/asobj/flash/geom/Transform_as.cpp:170
+#: libcore/asobj/NetStream_as.cpp:978
#, c-format
-msgid "Transform.colorTransform(%s): argument is not a ColorTransform"
+msgid ""
+"%p.pushDecodedAudioFrames(%d): no more audio frames in input "
+"(nextAudioFrameTimestamp returned false, parsingComplete=%d)"
msgstr ""
+"%p.pushDecodedAudioFrames(%d): è¾å
¥ä¸æ²¡ææ´å¤çé³é¢å¸§ "
+"(nextAudioFrameTimestamp è¿å false, parsingComplete=%d)"
-#: libcore/asobj/flash/geom/Transform_as.cpp:236
-msgid "Failed to construct flash.geom.Matrix!"
+#: libcore/asobj/NetStream_as.cpp:989
+msgid ""
+"pushDecodedAudioFrames setting playStop status (parsing complete and "
+"nextAudioFrameTimestamp returned false)"
msgstr ""
+"pushDecodedAudioFrames 设置 playStop ç¶æ (è§£æå®æï¼ "
+"nextAudioFrameTimestamp è¿å false)"
-#: libcore/asobj/flash/geom/Transform_as.cpp:305
+#: libcore/asobj/NetStream_as.cpp:1002
#, c-format
-msgid "Transform.matrix(%s): extra arguments discarded"
-msgstr ""
+msgid "%p.pushDecodedAudioFrames(%d): next audio frame is in the future (%d)"
+msgstr "%p.pushDecodedAudioFrames(%d): ä¸ä¸ä¸ªé³é¢å¸§å¨åé¢ (%d)"
-#: libcore/asobj/flash/geom/Transform_as.cpp:315
+#: libcore/asobj/NetStream_as.cpp:1015
#, c-format
-msgid "Transform.matrix(%s): argument is not an object"
+msgid ""
+"nextAudioFrameTimestamp returned true (%d), but decodeNextAudioFrame "
+"returned null, I don't think this should ever happen"
msgstr ""
+"nextAudioFrameTimestamp è¿å true (%d), è decodeNextAudioFrame è¿å空, æè®¤"
+"为è¿ä¸åºè¯¥åç"
-#: libcore/asobj/flash/geom/Transform_as.cpp:346
+#: libcore/asobj/NetStream_as.cpp:1024
#, c-format
-msgid "flash.geom.Transform(%s): needs one argument"
-msgstr ""
+msgid "pushDecodedAudioFrames(%d): Decoded audio frame contains no samples"
+msgstr "pushDecodedAudioFrames(%d)ï¼è§£ç åçé³é¢å¸§ä¸å
å«ä»»ä½æ ·æ¬"
-#: libcore/asobj/flash/geom/Transform_as.cpp:356
+#: libcore/asobj/NetStream_as.cpp:1033
#, c-format
-msgid "Transform(%s): %s"
-msgstr ""
+msgid "pushDecodedAudioFrames(%d) pushing %dth frame with timestamp %d"
+msgstr "pushDecodedAudioFrames(%d) æ¨å
¥ç¬¬ %d 帧å¾
æ¶é´æ³ %d"
-#: libcore/asobj/flash/display/BitmapData_as.cpp:816
-msgid ""
-"BitmapData.copyChannel(). Multiple destination channels are not supported"
-msgstr ""
+#: libcore/asobj/NetStream_as.cpp:1051
+msgid "resuming playback clock on audio consume"
+msgstr "å¨é³é¢æ¶è䏿¢å¤åæ¾æ¶é"
-#: libcore/asobj/flash/display/BitmapData_as.cpp:842
+#: libcore/asobj/NetStream_as.cpp:1116
+#, c-format
msgid ""
-"BitmapData.copyChannel(): no part of source rectangleoverlaps with the "
-"source BitmapData"
+"%p.refreshVideoFrame: doing nothing as playhead is paused - bufferLength=%d, "
+"bufferTime=%d"
msgstr ""
+"%p.refreshVideoFrame: ä»ä¹ä¹ä¸åï¼å 为 playhead 被æå - bufferLength=%d, "
+"bufferTime=%d"
-#: libcore/asobj/flash/display/BitmapData_as.cpp:856
+#: libcore/asobj/NetStream_as.cpp:1126
+#, c-format
msgid ""
-"BitmapData.copyChannel(): destination area is wholly outside the destination "
-"BitmapData"
+"%p.refreshVideoFrame: doing nothing as current position was already decoded "
+"- bufferLength=%d, bufferTime=%d"
msgstr ""
+"%p.refreshVideoFrame: ä»ä¹ä¹ä¸åï¼å 为 current position å·²ç»è¢«è§£ç - "
+"bufferLength=%d, bufferTime=%d"
-#: libcore/asobj/flash/display/BitmapData_as.cpp:914
-msgid "BitmapData.copyPixels(): arguments after the first three are discarded"
+#: libcore/asobj/NetStream_as.cpp:1138
+#, c-format
+msgid ""
+"%p.refreshVideoFrame: currentPosition=%d, playHeadState=%d, bufferLength=%d, "
+"bufferTime=%d"
msgstr ""
+"%p.refreshVideoFrame: currentPosition=%d, playHeadState=%d, bufferLength=%d, "
+"bufferTime=%d"
-#: libcore/asobj/flash/display/BitmapData_as.cpp:964
+#: libcore/asobj/NetStream_as.cpp:1152
+#, fuzzy, c-format
msgid ""
-"BitmapData.copyPixels(): no part of source rectangleoverlaps with the source "
-"BitmapData"
+"%p.refreshVideoFrame(): no more video frames to decode (DEC_STOPPED, null "
+"from getDeodedVideoFrame)"
msgstr ""
+"%p.refreshVideoFrame(): æ²¡ææ´å¤è¦è§£ç çè§é¢å¸§(DEC_STOPPED, 为空æ¥èª "
+"getDecodedVideoFrame)"
-#: libcore/asobj/flash/display/BitmapData_as.cpp:978
+#: libcore/asobj/NetStream_as.cpp:1161
+#, c-format
msgid ""
-"BitmapData.copyPixels(): destination area is wholly outside the destination "
-"BitmapData"
-msgstr ""
+"%p.refreshVideoFrame(): last video frame was good enough for current position"
+msgstr "%p.refreshVideoFrame()ï¼ä¸ä¸ä¸ªè§é¢å¸§æ£å¥½å¨å½åä½ç½®å¥½"
-#: libcore/asobj/flash/display/BitmapData_as.cpp:1064
+#: libcore/asobj/NetStream_as.cpp:1238
#, c-format
-msgid "BitmapData.draw(%s) requires at least one argument"
-msgstr ""
+msgid ""
+"%p.advance: buffer empty while decoding, setting buffer to buffering and "
+"pausing playback clock"
+msgstr "%p.advanceï¼è§£ç æ¶ç¼å²åºä¸ºç©ºï¼è®¾ç½®ç¨äºç¼å²åææ¾åæ¾æ¶éçç¼å²åº"
-#: libcore/asobj/flash/display/BitmapData_as.cpp:1076
-msgid "BitmapData.draw() with BitmapData argument"
-msgstr ""
+#: libcore/asobj/NetStream_as.cpp:1243
+msgid "Setting bufferEmpty status"
+msgstr "设置 bufferEmpty ç¶æ"
-#: libcore/asobj/flash/display/BitmapData_as.cpp:1083
+#: libcore/asobj/NetStream_as.cpp:1252
#, c-format
-msgid "BitmapData.draw(%s): first argument must be a MovieClip"
-msgstr ""
+msgid "%p.advance : bufferLength=%d, parsing completed"
+msgstr "%p.advance : bufferLength=%d, è§£æå®æ"
-#: libcore/asobj/flash/display/BitmapData_as.cpp:1120
+#: libcore/asobj/NetStream_as.cpp:1264
#, c-format
-msgid "BitmapData.fillRect(%s): needs an object"
-msgstr ""
+msgid "%p.advance: buffering - position=%d, buffer=%d/%d"
+msgstr "%p.advance: æ£å¨ç¼å² - position=%d, buffer=%d/%d"
-#: libcore/asobj/flash/display/BitmapData_as.cpp:1157
-msgid "floodFill called on disposed BitmapData!"
-msgstr ""
-
-#: libcore/asobj/flash/display/BitmapData_as.cpp:1231
-msgid "getPixel32 called on disposed BitmapData!"
-msgstr ""
-
-#: libcore/asobj/flash/display/BitmapData_as.cpp:1361
-msgid "BitmapData.perlinNoise() stitch value"
-msgstr ""
-
-#: libcore/asobj/flash/display/BitmapData_as.cpp:1562
-msgid "Failed to construct flash.geom.Rectangle!"
-msgstr ""
-
-#: libcore/asobj/flash/display/BitmapData_as.cpp:1584
-msgid "BitmapData.loadBitmap requires one argument"
-msgstr ""
-
-#: libcore/asobj/flash/display/BitmapData_as.cpp:1649
-msgid ""
-"BitmapData constructor requires at least two arguments. Will not construct a "
-"BitmapData"
-msgstr ""
-
-#: libcore/asobj/flash/display/BitmapData_as.cpp:1663
+#: libcore/asobj/NetStream_as.cpp:1283
+#, c-format
msgid ""
-"BitmapData width and height must be between 1 and 2880. Will not construct a "
-"BitmapData"
+"%p.advance: buffer full (or parsing completed), resuming playback clock - "
+"position=%d, buffer=%d/%d"
msgstr ""
+"%p.advance: ç¼å²åºå·²æ»¡ (æè§£æå®æ)ï¼ç»§ç»åæ¾æ¶é - position=%d, buffer=%d/%d"
-#: libcore/asobj/MovieClipLoader.cpp:105
+#: libcore/asobj/NetStream_as.cpp:1304
#, c-format
-msgid "MovieClipLoader.loadClip(%s): missing arguments"
-msgstr ""
+msgid "%p.advance: playHead position set to timestamp of first frame: %d"
+msgstr "%p.advance: playHead ä½ç½®è®¾ç½®ä¸ºç¬¬ä¸å¸§çæ¶é´æ³: %d"
-#: libcore/asobj/MovieClipLoader.cpp:114
+#: libcore/asobj/NetStream_as.cpp:1311
#, c-format
-msgid "MovieClipLoader.loadClip(%s): first argument must be a string"
-msgstr ""
+msgid ""
+"%p.advance: playHead position is 0 and parser still doesn't have a frame to "
+"set it to"
+msgstr "%p.advance: playHead ä½ç½®ä¸º0ï¼èä¸è¿æ²¡æè®¾ç½®è§£æå¨å°æä¸å¸§"
-#: libcore/asobj/MovieClipLoader.cpp:132
+#: libcore/asobj/NetStream_as.cpp:1351
#, c-format
-msgid "Could not find target %s (evaluated from %s)"
+msgid ""
+"Moving NetStream playhead from timestamp %d to timestamp %d as there are no "
+"video frames yet, audio buffer is empty and next audio frame timestamp is "
+"there (see bug #26687)"
msgstr ""
+"å 为没æè§é¢å¸§ï¼ä»æ¶é´æ³ %d ç§»å¨NetStreamææ¾å¤´å°æ¶é´æ³ %dï¼é³é¢ç¼å²åºæ¯ç©º"
+"çï¼ä¸ä¸ä¸ªé³é¢å¸§æ¶é´æ³å¨é£éï¼è§bugï¼26687ï¼"
-#: libcore/asobj/MovieClipLoader.cpp:149
+#: libcore/asobj/NetStream_as.cpp:1453
+msgid "attachAuxStreamer called while already attached"
+msgstr "attachAuxStreamer å¨å·²è¿æ¥æ¶è¢«è°ç¨"
+
+#: libcore/asobj/NetStream_as.cpp:1464
#, c-format
-msgid "MovieClipLoader.unloadClip(%s): expected at least one argument"
-msgstr ""
+msgid "Could not attach NetStream aux streamer to sound handler: %s"
+msgstr "æ æ³è¿æ¥ NetStream è¾
婿µå°å£°é³å¤çå¨: %s"
-#: libcore/asobj/MovieClipLoader.cpp:156
+#: libcore/asobj/NetStream_as.cpp:1603
#, c-format
-msgid "MovieClipLoader.unloadClip: %s"
-msgstr ""
+msgid ""
+"First argument to NetStream constructor doesn't cast to a NetConnection (%s)"
+msgstr "NetStream æé å¨ç第ä¸ä¸ªåæ°æ²¡æè½¬æ¢ä¸ºä¸ä¸ª NetConnection (%s)"
-#: libcore/asobj/MovieClipLoader.cpp:180
-msgid "MovieClipLoader.getProgress(): missing argument"
-msgstr ""
+#: libcore/asobj/NetStream_as.cpp:1648
+msgid "NetStream_as play needs args"
+msgstr "NetStream_as ææ¾éè¦åæ°"
-#: libcore/asobj/MovieClipLoader.cpp:189
+#: libcore/asobj/NetStream_as.cpp:1655
#, c-format
-msgid "MovieClipLoader.getProgress(%s): first argument is not an object"
-msgstr ""
+msgid "NetStream.play(%s): stream is not connected"
+msgstr "NetStream.play(%s): æªè¿æ¥å°æµ"
-#: libcore/asobj/MovieClipLoader.cpp:198
-#, c-format
-msgid "MovieClipLoader.getProgress(%s): first argument is not an sprite"
-msgstr ""
+#: libcore/asobj/NetStream_as.cpp:1704
+msgid "NetStream.attachAudio"
+msgstr "NetStream.attachAudio"
-#: libcore/asobj/Sound_as.cpp:420
-#, c-format
-msgid "Could not create audio decoder: %s"
-msgstr ""
+#: libcore/asobj/NetStream_as.cpp:1715
+msgid "NetStream.attachVideo"
+msgstr "NetStream.attachVideo"
-#: libcore/asobj/Sound_as.cpp:428
-msgid "No audio in Sound input."
-msgstr ""
+#: libcore/asobj/NetStream_as.cpp:1726
+msgid "NetStream.publish"
+msgstr "NetStream.publish"
-#: libcore/asobj/Sound_as.cpp:581
-#, c-format
-msgid "Gnash could not open this URL: %s"
-msgstr ""
+#: libcore/asobj/NetStream_as.cpp:1737
+msgid "NetStream.receiveAudio"
+msgstr "NetStream.receiveAudio"
-#: libcore/asobj/Sound_as.cpp:592
-#, c-format
-msgid "Unable to create parser for Sound at %s"
-msgstr ""
+#: libcore/asobj/NetStream_as.cpp:1748
+msgid "NetStream.receiveVideo"
+msgstr "NetStream.receiveVideo"
-#: libcore/asobj/Sound_as.cpp:676
-msgid "No sound handler, nothing to start..."
-msgstr ""
+#: libcore/asobj/NetStream_as.cpp:1759
+msgid "NetStream.send"
+msgstr "NetStream.send"
-#: libcore/asobj/Sound_as.cpp:682
-msgid "No MediaParser initialized, can't start an external sound"
-msgstr ""
+#: libcore/asobj/NetStream_as.cpp:1843
+msgid "NetStream.liveDelay"
+msgstr "NetStream.liveDelay"
-#: libcore/asobj/Sound_as.cpp:688
-msgid "Sound.start() has no effect on a streaming Sound"
-msgstr ""
+#: libcore/asobj/NetStream_as.cpp:1900
+msgid "Invalid AMF data in FLV tag"
+msgstr "ä¸åæ³ç FLV æ ç¾ä¸ç AMF æ°æ®"
-#: libcore/asobj/Sound_as.cpp:735
-msgid "No sound handler, nothing to stop..."
-msgstr ""
+#: libcore/asobj/NetStream_as.cpp:1911
+msgid "Could not convert FLV metatag to as_value, passing undefined"
+msgstr "æ æ³è½¬æ¢ FLV å
æ ç¾å° as_value, ä¼ å
¥æªå®ä¹"
-#: libcore/asobj/Sound_as.cpp:763
-msgid "No sound handler, can't check duration..."
-msgstr ""
+#: libcore/asobj/LoadableObject.cpp:176
+msgid "XML.addRequestHeader: XML._customHeaders is not an object"
+msgstr "XML.addRequestHeader: XML._customHeaders 䏿¯ä¸ä¸ªå¯¹è±¡"
-#: libcore/asobj/Sound_as.cpp:788
-msgid ""
-"No sound handler, can't check position (we're likely not playing anyway)..."
-msgstr ""
+#: libcore/asobj/LoadableObject.cpp:193
+msgid "XML.addRequestHeader requires at least one argument"
+msgstr "XML.addRequestHeader è³å°éè¦ä¸ä¸ªåæ°"
-#: libcore/asobj/Sound_as.cpp:855
-#, c-format
-msgid "No samples decoded from input of %d bytes"
-msgstr ""
+#: libcore/asobj/LoadableObject.cpp:206
+msgid "XML.addRequestHeader: single argument is not an array"
+msgstr "XML.addRequestHeader: åä¸ªåæ°ä¸æ¯ä¸ä¸ªæ°ç»"
-#: libcore/asobj/Sound_as.cpp:955
+#: libcore/asobj/LoadableObject.cpp:222
#, c-format
-msgid "new Sound(%d) : args after first one ignored"
-msgstr ""
+msgid "XML.addRequestHeader(%s): arguments after the second will be discarded"
+msgstr "XML.addRequestHeader(%s): 第äºä¸ªä¹åçåæ°å°è¢«ä¸¢å¼"
-#: libcore/asobj/Sound_as.cpp:969
+#: libcore/asobj/LoadableObject.cpp:237
#, c-format
-msgid ""
-"new Sound(%s) : first argument isn't null or undefined, and isn't a "
-"DisplayObject. We'll take as an invalid DisplayObject ref."
-msgstr ""
+msgid "XML.addRequestHeader(%s): both arguments must be a string"
+msgstr "XML.addRequestHeader(%s): ææåæ°å¿
é¡»æ¯å符串"
-#: libcore/asobj/Sound_as.cpp:987
-msgid "-- start sound"
-msgstr ""
+#: libcore/asobj/LoadableObject.cpp:304
+msgid "sendAndLoad() requires at least two arguments"
+msgstr "sendAndLoad() è³å°éè¦ä¸¤ä¸ªåæ°"
-#: libcore/asobj/Sound_as.cpp:1012
-msgid "-- stop sound "
-msgstr ""
+#: libcore/asobj/LoadableObject.cpp:312
+msgid "sendAndLoad(): invalid empty URL"
+msgstr "sendAndLoad(): ä¸åæ³ç空 URL"
-#: libcore/asobj/Sound_as.cpp:1028 libcore/asobj/Sound_as.cpp:1083
-#, c-format
-msgid "No such export '%s'"
-msgstr ""
+#: libcore/asobj/LoadableObject.cpp:319
+msgid "sendAndLoad(): invalid target (must be an XML or LoadVars object)"
+msgstr "sendAndLoad(): ä¸åæ³çç®æ (å¿
é¡»æ¯ä¸ä¸ª XML æ LoadVars 对象)"
-#: libcore/asobj/Sound_as.cpp:1037
+#: libcore/asobj/LoadableObject.cpp:397
#, c-format
-msgid "Export '%s' is not a sound"
-msgstr ""
+msgid "Loading from URL: '%s'"
+msgstr "å è½½èª URL: '%s'"
-#: libcore/asobj/Sound_as.cpp:1053
-msgid "-- attach sound"
-msgstr ""
+#: libcore/asobj/LoadableObject.cpp:417
+msgid "load() requires at least one argument"
+msgstr "load() è³å°éè¦ä¸ä¸ªåæ°"
-#: libcore/asobj/Sound_as.cpp:1058
-msgid "attach sound needs one argument"
-msgstr ""
+#: libcore/asobj/LoadableObject.cpp:426
+msgid "load(): invalid empty URL"
+msgstr "load(): ä¸åæ³ç空 URL"
-#: libcore/asobj/Sound_as.cpp:1068
-msgid "attachSound needs a non-empty string"
-msgstr ""
+#: libcore/asobj/Video_as.cpp:114
+msgid "attachVideo needs 1 arg"
+msgstr "attachVideo éè¦ 1 ä¸ªåæ°"
-#: libcore/asobj/Sound_as.cpp:1092
+#: libcore/asobj/Video_as.cpp:126
#, c-format
-msgid "Export '%s'is not a sound"
-msgstr ""
+msgid "attachVideo(%s) first arg is not a NetStream instance"
+msgstr "attachVideo(%s) 第ä¸ä¸ªåæ°ä¸æ¯ä¸ä¸ª NetStream å®ä¾"
-#: libcore/asobj/Sound_as.cpp:1127
-msgid "Sound.getPan()"
-msgstr ""
+#: libcore/asobj/Video_as.cpp:139
+msgid "Video.deblocking"
+msgstr "Video.deblocking"
-#: libcore/asobj/Sound_as.cpp:1142
-msgid "Sound.setDuration()"
-msgstr ""
+#: libcore/asobj/LocalConnection_as.cpp:279
+msgid "Attempting to write to disabled LocalConnection!"
+msgstr "è¯å¾åå
¥ç¦ç¨çæ¬å°è¿æ¥ï¼"
-#: libcore/asobj/Sound_as.cpp:1157
-msgid "Sound.setPosition()"
-msgstr ""
+#: libcore/asobj/LocalConnection_as.cpp:288
+msgid "Failed to attach shared memory segment"
+msgstr "æ æ³è¿æ¥å
±äº«å
åæ®µ"
-#: libcore/asobj/Sound_as.cpp:1164
-msgid "Sound.getTransform()"
-msgstr ""
+#: libcore/asobj/LocalConnection_as.cpp:296
+msgid "Failed to get shm lock"
+msgstr "æ æ³å¾å° shm é"
-#: libcore/asobj/Sound_as.cpp:1177
-#, c-format
-msgid "Sound.getVolume(%s) : arguments ignored"
-msgstr ""
+#: libcore/asobj/LocalConnection_as.cpp:332
+msgid "Invalid connection name data"
+msgstr "ä¸åæ³çè¿æ¥åæ°æ®"
-#: libcore/asobj/Sound_as.cpp:1193
-msgid "Sound.loadSound() needs at least 1 argument"
-msgstr ""
+#: libcore/asobj/LocalConnection_as.cpp:431
+msgid "Failed to get lock on shared memory! Will not remove listener"
+msgstr "æ æ³å¨å
±äº«å
åä¸è·å¾éï¼ä¸ä¼ç§»é¤çå¬å¨"
-#: libcore/asobj/Sound_as.cpp:1208
-#, c-format
-msgid "Sound.loadSound(%s): arguments after first 2 discarded"
-msgstr ""
+#: libcore/asobj/LocalConnection_as.cpp:461
+msgid "Failed to open shared memory segment"
+msgstr "æ æ³æå¼å
±äº«å
åæ®µ"
-#: libcore/asobj/Sound_as.cpp:1222
-msgid "Sound.setPan()"
-msgstr ""
+#: libcore/asobj/LocalConnection_as.cpp:534
+msgid "LocalConnection.connect() expects exactly 1 argument"
+msgstr "LocalConnection.connect() åªéè¦1ä¸ªåæ°"
-#: libcore/asobj/Sound_as.cpp:1229
-msgid "Sound.setTransform()"
-msgstr ""
+#: libcore/asobj/LocalConnection_as.cpp:542
+msgid "LocalConnection.connect(): first argument must be a string"
+msgstr "LocalConnection.connect(): 第ä¸ä¸ªåæ°å¿
é¡»æ¯ä¸ªå符串"
-#: libcore/asobj/Sound_as.cpp:1238
-msgid "set volume of sound needs one argument"
-msgstr ""
+#: libcore/asobj/LocalConnection_as.cpp:587
+#: libcore/asobj/LocalConnection_as.cpp:599
+#: libcore/asobj/LocalConnection_as.cpp:612
+#, c-format
+msgid "LocalConnection.send(%s): requires at least 2 arguments"
+msgstr "LocalConnection.send(%s): è³å°éè¦2ä¸ªåæ°"
-#: libcore/asobj/Sound_as.cpp:1253
-msgid "Sound.checkPolicyFile"
-msgstr ""
+#: libcore/asobj/LocalConnection_as.cpp:783
+msgid "No space for listener in shared memory!"
+msgstr "å¨å
±äº«å
å䏿²¡æçå¬å¨çè¶³å¤ç©ºé´ï¼"
-#: libcore/asobj/Sound_as.cpp:1266
-msgid "Sound.areSoundsInaccessible()"
-msgstr ""
+#: libcore/asobj/LocalConnection_as.cpp:844
+#, c-format
+msgid "Invalid domain %s"
+msgstr "ä¸åæ³åå %s"
-#: libcore/asobj/XML_as.cpp:464
-msgid "XML data is empty"
-msgstr ""
+#: libcore/asobj/LocalConnection_as.cpp:851
+#, c-format
+msgid "Invalid function name %s"
+msgstr "ä¸åæ³ç彿°åç§° %s"
-#: libcore/asobj/XML_as.cpp:740
-msgid "no text for text node creation"
-msgstr ""
+#: libcore/asobj/LocalConnection_as.cpp:877
+msgid "Fewer AMF fields than expected."
+msgstr "å°äºé¢æçAMFåæ®µã"
-#: libcore/asobj/XML_as.cpp:753
-msgid "XML.parseXML() needs one argument"
-msgstr ""
+#: libcore/asobj/Camera_as.cpp:259
+msgid "No MediaHandler exists! Cannot create a Camera object"
+msgstr "MediaHandler ä¸åå¨! ä¸è½å建 Camera 对象"
-#: libcore/asobj/MovieClip_as.cpp:297
-#, c-format
-msgid "createEmptyMovieClip needs 2 args, but %d given, returning undefined"
-msgstr ""
+#: libcore/asobj/Camera_as.cpp:312
+msgid "Camera::motionLevel can be set, but it's not implemented"
+msgstr "Camera::motionLevel å¯ä»¥è®¾ç½®ï¼ä½è¿æ²¡æå®ç°"
-#: libcore/asobj/MovieClip_as.cpp:305
-#, c-format
-msgid "createEmptyMovieClip takes 2 args, but %d given, discarding the excess"
-msgstr ""
+#: libcore/asobj/Camera_as.cpp:331
+msgid "Camera::quality can be set, but it's not implemented"
+msgstr "Camera::quality å¯ä»¥è®¾ç½®ï¼ä½è¿æ²¡æå®ç°"
-#: libcore/asobj/MovieClip_as.cpp:363
-msgid "MovieClip.cacheAsBitmap()"
-msgstr ""
+#: libcore/asobj/Camera_as.cpp:353
+msgid "Camera::activityLevel only has default value"
+msgstr "Camera::activityLevel æ¯é»è®¤å¼"
-#: libcore/asobj/MovieClip_as.cpp:375
-msgid "MovieClip.filters()"
-msgstr ""
+#: libcore/asobj/Camera_as.cpp:358
+msgid "Attempt to set activity property of Camera"
+msgstr "è¯å¾è®¾ç½® Camera ç activity 屿§"
-#: libcore/asobj/MovieClip_as.cpp:394
-msgid "MovieClip.forceSmoothing()"
-msgstr ""
+#: libcore/asobj/Camera_as.cpp:370
+msgid "Camera::bandwidth only has default value"
+msgstr "Camera::bandwidth æ¯é»è®¤å¼"
-#: libcore/asobj/MovieClip_as.cpp:404
-msgid "MovieClip.opaqueBackground()"
-msgstr ""
+#: libcore/asobj/Camera_as.cpp:375
+msgid "Attempt to set bandwidth property of Camera"
+msgstr "è¯å¾è®¾ç½® Camera ç bandwidth 屿§"
-#: libcore/asobj/MovieClip_as.cpp:414
-msgid "MovieClip.scale9Grid()"
-msgstr ""
+#: libcore/asobj/Camera_as.cpp:391
+msgid "Attempt to set currentFPS property of Camera"
+msgstr "è¯å¾è®¾ç½® Camera ç currentFPS 屿§"
+
+#: libcore/asobj/Camera_as.cpp:407
+msgid "Attempt to set fps property of Camera"
+msgstr "è¯å¾è®¾ç½® Camera ç fps 屿§"
+
+#: libcore/asobj/Camera_as.cpp:423
+msgid "Attempt to set height property of Camera, use setMode"
+msgstr "è¯å¾è®¾ç½® Camera ç height 屿§ï¼ä½¿ç¨ setMode"
+
+#: libcore/asobj/Camera_as.cpp:446
+msgid "Attempt to set index property of Camera"
+msgstr "è¯å¾è®¾ç½® Camera ç index 屿§"
+
+#: libcore/asobj/Camera_as.cpp:458
+msgid "Camera::motionLevel only has default value"
+msgstr "Camera::motionLevel åªæé»è®¤å¼"
+
+#: libcore/asobj/Camera_as.cpp:463
+msgid "Attempt to set motionLevel property of Camera"
+msgstr "è¯å¾è®¾ç½® Camera ç motionLevel 屿§"
+
+#: libcore/asobj/Camera_as.cpp:475
+msgid "Camera::motionTimeout"
+msgstr "Camera::motionTimeout"
+
+#: libcore/asobj/Camera_as.cpp:480
+msgid "Attempt to set motionTimeout property of Camera"
+msgstr "è¯å¾è®¾ç½® Camera ç motionTimeout 屿§"
+
+#: libcore/asobj/Camera_as.cpp:492
+msgid "Camera.muted"
+msgstr "Camera.muted"
+
+#: libcore/asobj/Camera_as.cpp:497
+msgid "Attempt to set muted property of Camera"
+msgstr "è¯å¾è®¾ç½® Camera ç muted 屿§"
+
+#: libcore/asobj/Camera_as.cpp:513
+msgid "Attempt to set name property of Camera"
+msgstr "è¯å¾è®¾ç½® Camera ç name 屿§"
+
+#: libcore/asobj/Camera_as.cpp:524
+msgid "Attempt to set names property of Camera"
+msgstr "è¯å¾è®¾ç½® Camera ç names 屿§"
+
+#: libcore/asobj/Camera_as.cpp:554
+msgid "Camera::quality has only default values"
+msgstr "Camera::quality åªæé»è®¤å¼"
+
+#: libcore/asobj/Camera_as.cpp:559
+msgid "Attempt to set quality property of Camera"
+msgstr "è¯å¾è®¾ç½® Camera ç quality 屿§"
+
+#: libcore/asobj/Camera_as.cpp:587
+msgid "Camera.setCursor"
+msgstr "Camera.setCursor"
+
+#: libcore/asobj/Camera_as.cpp:594
+msgid "Camera.setKeyFrameInterval"
+msgstr "Camera.setKeyFrameInterval"
+
+#: libcore/asobj/Camera_as.cpp:608
+msgid "Attempt to set width property of Camera, use setMode"
+msgstr "è¯å¾è®¾ç½® Camera ç width 屿§ï¼ä½¿ç¨ setMode"
+
+#: libcore/asobj/SharedObject_as.cpp:163
+#, c-format
+msgid "Problems serializing an object's member %s=%s"
+msgstr "åºååä¸ä¸ªå¯¹è±¡çæå %s=%s æ¶åºç°é®é¢"
+
+#: libcore/asobj/SharedObject_as.cpp:323
+#, c-format
+msgid ""
+"SharedObject.flush() called with a minimum disk space argument (%d), which "
+"is currently ignored"
+msgstr "SharedObject.flush() è°ç¨æ¶å¸¦æä¸ä¸ªæå°çç£ç空é´åæ° (%d)ï¼å½å被忽ç¥"
+
+#: libcore/asobj/SharedObject_as.cpp:331
+#, c-format
+msgid "Couldn't create dir for flushing SharedObject %s"
+msgstr "æ æ³ä¸ºåå
¥ SharedObject %s å建ç®å½"
+
+#: libcore/asobj/SharedObject_as.cpp:344
+#, c-format
+msgid ""
+"Attempting to write object %s when it's SOL Read Only is set! Refusing..."
+msgstr "å½SOL设置为åªè¯»æ¶ï¼è¯å¾åå
¥å¯¹è±¡ %sï¼æç»..."
+
+#: libcore/asobj/SharedObject_as.cpp:352
+#, c-format
+msgid "SharedObject::flush(): Failed opening file '%s' in binary mode"
+msgstr "SharedObject::flush(): æ æ³ä»¥äºè¿å¶æ¨¡å¼æå¼æä»¶ '%s'"
+
+#: libcore/asobj/SharedObject_as.cpp:371
+msgid "Error writing SOL header"
+msgstr "åå
¥ SOL 头åºé"
+
+#: libcore/asobj/SharedObject_as.cpp:378
+#, c-format
+msgid "Error writing %d bytes to output file %s"
+msgstr "åå
¥ %d åèå°è¾åºæä»¶ %s æ¶åºé"
+
+#: libcore/asobj/SharedObject_as.cpp:384
+#, c-format
+msgid "SharedObject '%s' written to filesystem."
+msgstr "SharedObject '%s' å·²åå
¥å°æä»¶ç³»ç»ã"
+
+#: libcore/asobj/SharedObject_as.cpp:493
+msgid "Attempting to open SOL file from non localhost-loaded SWF"
+msgstr "è¯å¾ä»éæ¬å°å è½½ç SWF æå¼ SOL æä»¶"
+
+#: libcore/asobj/SharedObject_as.cpp:521
+#, c-format
+msgid ""
+"SharedObject path %s is outside the SWF domain %s. Cannot access this object."
+msgstr "SharedObject è·¯å¾ %s å¨è¯¥ SWF åå %s ä¹å¤ãä¸è½è®¿é®è¯¥å¯¹è±¡ã"
+
+#: libcore/asobj/SharedObject_as.cpp:534
+#, c-format
+msgid ""
+"SharedObject path %s is not part of the SWF path %s. Cannot access this "
+"object."
+msgstr "SharedObject è·¯å¾ %s 䏿¯ SWF è·¯å¾ %s çä¸é¨åãä¸è½è®¿é®è¯¥å¯¹è±¡ã"
+
+#: libcore/asobj/SharedObject_as.cpp:703
+msgid "SharedObject.connect(): needs at least one argument"
+msgstr "SharedObject.connect(): è³å°éè¦ä¸ä¸ªåæ°"
+
+#: libcore/asobj/SharedObject_as.cpp:709
+msgid "SharedObject.connect()"
+msgstr "SharedObject.connect()"
+
+#: libcore/asobj/SharedObject_as.cpp:730
+msgid "SharedObject.setFps"
+msgstr "SharedObject.setFps"
+
+#: libcore/asobj/SharedObject_as.cpp:739
+msgid "SharedObject.send"
+msgstr "SharedObject.send"
+
+#: libcore/asobj/SharedObject_as.cpp:756
+#, c-format
+msgid "Arguments to SharedObject.flush(%s) will be ignored"
+msgstr "SharedObject.flush(%s) åæ°å°è¢«å¿½ç¥"
+
+#: libcore/asobj/SharedObject_as.cpp:787
+#, c-format
+msgid "SharedObject.getLocal(%s): missing object name"
+msgstr "SharedObject.getLocal(%s): 缺å°å¯¹è±¡åç§°"
+
+#: libcore/asobj/SharedObject_as.cpp:813
+msgid "SharedObject.getRemote()"
+msgstr "SharedObject.getRemote()"
+
+#: libcore/asobj/SharedObject_as.cpp:828
+msgid "SharedObject.deleteAll()"
+msgstr "SharedObject.deleteAll()"
+
+#: libcore/asobj/SharedObject_as.cpp:843
+msgid "SharedObject.getDiskUsage()"
+msgstr "SharedObject.getDiskUsage()"
+
+#: libcore/asobj/SharedObject_as.cpp:904
+#, c-format
+msgid "readSOL: SOL file %s is too short (only %s bytes long) to be valid."
+msgstr "readSOL: SOL æä»¶ %s 太çäº (åªæ %s åèé¿)ï¼ä¸åæ³ã"
+
+#: libcore/asobj/SharedObject_as.cpp:929
+msgid "readSOL: file ends before data segment"
+msgstr "readSOL: æ°æ®æ®µä¹åæä»¶å·²ç»æ"
+
+#: libcore/asobj/SharedObject_as.cpp:942
+msgid "SharedObject: end of buffer while reading length"
+msgstr "SharedObject: å½è¯»åé¿åº¦æ¶ç¼å²åºå·²ç»æ"
+
+#: libcore/asobj/SharedObject_as.cpp:951
+msgid "readSOL: empty property name"
+msgstr "readSOL: ç©ºå±æ§åç¨"
+
+#: libcore/asobj/SharedObject_as.cpp:956
+msgid "SharedObject::readSOL: premature end of input"
+msgstr "SharedObject::readSOL: premature è¾å
¥å·²ç»æ"
+
+#: libcore/asobj/SharedObject_as.cpp:967
+#, c-format
+msgid "SharedObject: error parsing SharedObject '%s'"
+msgstr "SharedObject: é误解æ SharedObject '%s'"
+
+#: libcore/asobj/SharedObject_as.cpp:986
+#, c-format
+msgid "readSOL: Reading SharedObject %s: %s"
+msgstr "readSOL: 读å SharedObject %s: %s"
+
+#: libcore/asobj/MovieClip_as.cpp:297
+#, c-format
+msgid "createEmptyMovieClip needs 2 args, but %d given, returning undefined"
+msgstr "createEmptyMovieClip éè¦2ä¸ªåæ°ï¼ä½ç»å®äº %d 个,è¿åæªå®ä¹"
+
+#: libcore/asobj/MovieClip_as.cpp:305
+#, c-format
+msgid "createEmptyMovieClip takes 2 args, but %d given, discarding the excess"
+msgstr "createEmptyMovieClip 使ç¨2ä¸ªåæ°, ä½ç»å®äº %d 个,丢å¼å¤ä½ç"
+
+#: libcore/asobj/MovieClip_as.cpp:363
+msgid "MovieClip.cacheAsBitmap()"
+msgstr "MovieClip.cacheAsBitmap()"
+
+#: libcore/asobj/MovieClip_as.cpp:375
+msgid "MovieClip.filters()"
+msgstr "MovieClip.filters()"
+
+#: libcore/asobj/MovieClip_as.cpp:394
+msgid "MovieClip.forceSmoothing()"
+msgstr "MovieClip.forceSmoothing()"
+
+#: libcore/asobj/MovieClip_as.cpp:404
+msgid "MovieClip.opaqueBackground()"
+msgstr "MovieClip.opaqueBackground()"
+
+#: libcore/asobj/MovieClip_as.cpp:414
+msgid "MovieClip.scale9Grid()"
+msgstr "MovieClip.scale9Grid()"
#: libcore/asobj/MovieClip_as.cpp:424
msgid "MovieClip.scrollRect()"
-msgstr ""
+msgstr "MovieClip.scrollRect()"
#: libcore/asobj/MovieClip_as.cpp:434
msgid "MovieClip.tabIndex()"
-msgstr ""
+msgstr "MovieClip.tabIndex()"
#: libcore/asobj/MovieClip_as.cpp:449
#, c-format
msgid ""
"attachMovie called with wrong number of arguments expected 3 to 4, got (%d) "
"- returning undefined"
-msgstr ""
+msgstr "attachMovie éè¦3å°4ä¸ªåæ°ï¼è°ç¨æ¶åæ°æ°éé误ï¼ç°æ (%d) - è¿åæªå®ä¹"
#: libcore/asobj/MovieClip_as.cpp:464
#, c-format
msgid ""
"attachMovie: exported resource '%s' is not a DisplayObject definition. "
"Returning undefined"
-msgstr ""
+msgstr "attachMovie: è¾åºèµæº '%s' 䏿¯ä¸ä¸ª DisplayObject å®ä¹ã è¿åæªå®ä¹"
#: libcore/asobj/MovieClip_as.cpp:484
#, c-format
msgid "MovieClip.attachMovie: invalid depth %d passed; not attaching"
-msgstr ""
+msgstr "MovieClip.attachMovie: ä¼ å
¥éæ³ç深度; ä¸ä¼æ·»å "
#: libcore/asobj/MovieClip_as.cpp:509
#, c-format
@@ -3778,111 +4205,121 @@ msgid ""
"Fourth argument of attachMovie doesn't cast to an object (%s), we'll act as "
"if it wasn't given"
msgstr ""
+"attachMovie ç第åä¸ªåæ°ä¸è½è½¬æ¢å°ä¸ä¸ªå¯¹è±¡ (%s), 彿²¡æç»å®æ¶ä¼ä½¿ç¨æä»¬"
#: libcore/asobj/MovieClip_as.cpp:531
#, c-format
msgid "MovieClip.attachAudio(): %s"
-msgstr ""
+msgstr "MovieClip.attachAudio(): %s"
+
+#: libcore/asobj/MovieClip_as.cpp:532
+#: libcore/asobj/flash/geom/Point_as.cpp:427
+#: libcore/asobj/flash/geom/Point_as.cpp:511
+#: libcore/asobj/flash/geom/Point_as.cpp:596
+#: libcore/asobj/flash/geom/Point_as.cpp:604
+#: libcore/asobj/flash/geom/Rectangle_as.cpp:154
+msgid "missing arguments"
+msgstr "缺å°åæ°"
#: libcore/asobj/MovieClip_as.cpp:541
#, c-format
msgid "MovieClip.attachAudio(%s): first arg doesn't cast to a NetStream"
-msgstr ""
+msgstr "MovieClip.attachAudio(%s): 第ä¸ä¸ªåæ°ä¸ä¼è½¬æ¢å°ä¸ä¸ª NetStream"
#: libcore/asobj/MovieClip_as.cpp:559
msgid "MovieClip.attachVideo()"
-msgstr ""
+msgstr "MovieClip.attachVideo()"
#: libcore/asobj/MovieClip_as.cpp:584
#, c-format
msgid "%s.swapDepths() needs one arg"
-msgstr ""
+msgstr "%s.swapDepths() éè¦ä¸ä¸ªåæ°"
#: libcore/asobj/MovieClip_as.cpp:595
#, c-format
msgid "%s.swapDepths(%s): won't swap a clip below depth %d (%d)"
-msgstr ""
+msgstr "%s.swapDepths(%s): å°ä¸ä¼äº¤æ¢æ·±åº¦ä½äº%d (%d) ççæ®µ"
#: libcore/asobj/MovieClip_as.cpp:613
#, c-format
msgid "%s.swapDepths(%s): invalid call, swapping to self?"
-msgstr ""
+msgstr "%s.swapDepths(%s): éæ³è°ç¨,转æ¢å° self?"
#: libcore/asobj/MovieClip_as.cpp:625
#, c-format
msgid ""
"%s.swapDepths(%s): invalid call, the two DisplayObjects don't have the same "
"parent"
-msgstr ""
+msgstr "%s.swapDepths(%s): éæ³è°ç¨, 两个DisplayObjects没æåä¸ä¸ªç¶æ¯"
#: libcore/asobj/MovieClip_as.cpp:642
#, c-format
msgid ""
"%s.swapDepths(%s): ignored, source and target DisplayObjects have the same "
"depth %d"
-msgstr ""
+msgstr "%s.swapDepths(%s): 已忽ç¥, æºåç®æ DisplayObjects æç¸åçæ·±åº¦ %d"
#: libcore/asobj/MovieClip_as.cpp:657
#, c-format
msgid ""
"%s.swapDepths(%s): first argument invalid (neither a movieclip nor a number)"
-msgstr ""
+msgstr "%s.swapDepths(%s): 第ä¸ä¸ªåæ°éæ³ (䏿¯ä¸ä¸ª movieclip ææ°å)"
#: libcore/asobj/MovieClip_as.cpp:666
#, c-format
msgid "%s.swapDepths(%s): requested depth is above the accessible range."
-msgstr ""
+msgstr "%s.swapDepths(%s): 请æ±ç深度å¨è®¿é®èå´ä¹ä¸ã"
#: libcore/asobj/MovieClip_as.cpp:682
#, c-format
msgid "%s.swapDepths(%s): ignored, DisplayObject already at depth %d"
-msgstr ""
+msgstr "%s.swapDepths(%s): 已忽ç¥, DisplayObject å·²ç»åå¨äºæ·±åº¦ %d"
#: libcore/asobj/MovieClip_as.cpp:716
msgid "MovieClip.duplicateMovieClip() needs 2 or 3 args"
-msgstr ""
+msgstr "MovieClip.duplicateMovieClip() éè¦2æ3ä¸ªåæ°"
#: libcore/asobj/MovieClip_as.cpp:732
#, c-format
msgid "MovieClip.duplicateMovieClip: invalid depth %d passed; not duplicating"
-msgstr ""
+msgstr "MovieClip.duplicateMovieClip: ä¼ å
¥éæ³æ·±åº¦ %d ; ä¸è½å¤å¶"
#: libcore/asobj/MovieClip_as.cpp:764
msgid "movieclip_goto_and_play needs one arg"
-msgstr ""
+msgstr "movieclip_goto_and_play éè¦ä¸ä¸ªåæ°"
#: libcore/asobj/MovieClip_as.cpp:774
#, c-format
msgid "movieclip_goto_and_play('%s') -- invalid frame"
-msgstr ""
+msgstr "movieclip_goto_and_play('%s') -- 鿳叧"
#: libcore/asobj/MovieClip_as.cpp:794
msgid "movieclip_goto_and_stop needs one arg"
-msgstr ""
+msgstr "movieclip_goto_and_stop éè¦ä¸ä¸ªåæ°"
#: libcore/asobj/MovieClip_as.cpp:804
#, c-format
msgid "movieclip_goto_and_stop('%s') -- invalid frame"
-msgstr ""
+msgstr "movieclip_goto_and_stop('%s') -- 鿳叧"
#: libcore/asobj/MovieClip_as.cpp:879
#, c-format
msgid ""
"MovieClip.loadMovie() expected 1 or 2 args, got %d - returning undefined"
-msgstr ""
+msgstr "MovieClip.loadMovie() éè¦ 1 æ 2 ä¸ªåæ°, ç»åºäº %d 个- è¿åæªå®ä¹"
#: libcore/asobj/MovieClip_as.cpp:891
#, c-format
msgid ""
"First argument of MovieClip.loadMovie(%s) evaluates to an empty string - "
"returning undefined"
-msgstr ""
+msgstr "MovieClip.loadMovie(%s) ç第ä¸ä¸ªåæ°è®¡ç®ç»æä¸ºç©ºå符串 - è¿åæªå®ä¹"
#: libcore/asobj/MovieClip_as.cpp:941
#, c-format
msgid ""
"MovieClip.loadVariables() expected 1 or 2 args, got %d - returning undefined"
-msgstr ""
+msgstr "MovieClip.loadVariables() éè¦ 1 æ 2 ä¸ªåæ°, ç»åºäº %d - è¿åæªå®ä¹"
#: libcore/asobj/MovieClip_as.cpp:953
#, c-format
@@ -3890,1640 +4327,1739 @@ msgid ""
"First argument passed to MovieClip.loadVariables(%s) evaluates to an empty "
"string - returning undefined"
msgstr ""
+"MovieClip.loadVariables(%s) ç第ä¸ä¸ªåæ°è®¡ç®ç»æä¸ºç©ºå符串 - è¿åæªå®ä¹"
#: libcore/asobj/MovieClip_as.cpp:995
#, c-format
msgid "Can't find hitTest target %s"
-msgstr ""
+msgstr "æ æ³æ¾å°ç hitTest ç®æ ï¼
s"
#: libcore/asobj/MovieClip_as.cpp:1037
#, c-format
msgid "hitTest() called with %u args"
-msgstr ""
+msgstr "hitTest() è°ç¨æ¶å¸¦ %u ä¸ªåæ°"
#: libcore/asobj/MovieClip_as.cpp:1066
msgid "MovieClip.getInstanceAtDepth(): missing or undefined depth argument"
-msgstr ""
+msgstr "MovieClip.getInstanceAtDepth(): ç¼ºå°ææªå®ä¹æ·±åº¦åæ°"
#: libcore/asobj/MovieClip_as.cpp:1108
msgid "No arguments passed to MovieClip.getURL()"
-msgstr ""
+msgstr "没æç» MovieClip.getURL() ä¼ å
¥åæ°"
#: libcore/asobj/MovieClip_as.cpp:1117
#, c-format
msgid "MovieClip.getURL(%s): extra arguments dropped"
-msgstr ""
+msgstr "MovieClip.getURL(%s): 丢å¼é¢å¤çåæ°"
-#: libcore/asobj/MovieClip_as.cpp:1195
+#: libcore/asobj/MovieClip_as.cpp:1196
msgid ""
"MovieClip.getTextSnapshot: failed to construct TextSnapshot (object probably "
"overridden)"
-msgstr ""
+msgstr "MovieClip.getTextSnapshot: æ æ³æå»ºTextSnapshotï¼å¯¹è±¡å¯è½è¦çï¼"
-#: libcore/asobj/MovieClip_as.cpp:1225
+#: libcore/asobj/MovieClip_as.cpp:1226
#, c-format
msgid ""
"MovieClip.getBounds(%s): invalid call, first arg must be a DisplayObject"
-msgstr ""
+msgstr "MovieClip.getBounds(%s): éæ³è°ç¨ï¼ç¬¬ä¸ä¸ªåæ°å¿
é¡»æ¯ DisplayObject"
-#: libcore/asobj/MovieClip_as.cpp:1273
+#: libcore/asobj/MovieClip_as.cpp:1274
msgid "MovieClip.globalToLocal() takes one arg"
-msgstr ""
+msgstr "MovieClip.globalToLocal() éè¦ä¸ä¸ªåæ°"
-#: libcore/asobj/MovieClip_as.cpp:1281
+#: libcore/asobj/MovieClip_as.cpp:1282
#, c-format
msgid "MovieClip.globalToLocal(%s): first argument doesn't cast to an object"
-msgstr ""
+msgstr "MovieClip.globalToLocal(%s): 第ä¸ä¸ªåæ°ä¸è½è½¬æ¢ä¸ºä¸ä¸ªå¯¹è±¡"
-#: libcore/asobj/MovieClip_as.cpp:1295
+#: libcore/asobj/MovieClip_as.cpp:1296
#, c-format
msgid ""
"MovieClip.globalToLocal(%s): object parameter doesn't have an 'x' member"
-msgstr ""
+msgstr "MovieClip.globalToLocal(%s): å¯¹è±¡åæ°æ²¡æä¸ä¸ªæå 'x'"
-#: libcore/asobj/MovieClip_as.cpp:1306
+#: libcore/asobj/MovieClip_as.cpp:1307
#, c-format
msgid ""
"MovieClip.globalToLocal(%s): object parameter doesn't have an 'y' member"
-msgstr ""
+msgstr "MovieClip.globalToLocal(%s): å¯¹è±¡åæ°æ²¡æä¸ä¸ªæå 'y'"
-#: libcore/asobj/MovieClip_as.cpp:1334
+#: libcore/asobj/MovieClip_as.cpp:1335
msgid "MovieClip.localToGlobal() takes one arg"
-msgstr ""
+msgstr "MovieClip.localToGlobal() éè¦ä¸ä¸ªåæ°"
-#: libcore/asobj/MovieClip_as.cpp:1342
+#: libcore/asobj/MovieClip_as.cpp:1343
#, c-format
msgid "MovieClip.localToGlobal(%s): first argument doesn't cast to an object"
-msgstr ""
+msgstr "MovieClip.localToGlobal(%s): 第ä¸ä¸ªåæ°ä¸è½è½¬æ¢ä¸ºä¸ä¸ªå¯¹è±¡"
-#: libcore/asobj/MovieClip_as.cpp:1355
+#: libcore/asobj/MovieClip_as.cpp:1356
#, c-format
msgid ""
"MovieClip.localToGlobal(%s): object parameter doesn't have an 'x' member"
-msgstr ""
+msgstr "MovieClip.localToGlobal(%s): å¯¹è±¡åæ°æ²¡æä¸ä¸ªæå 'x'"
-#: libcore/asobj/MovieClip_as.cpp:1366
+#: libcore/asobj/MovieClip_as.cpp:1367
#, c-format
msgid ""
"MovieClip.localToGlobal(%s): object parameter doesn't have an 'y' member"
-msgstr ""
+msgstr "MovieClip.localToGlobal(%s): å¯¹è±¡åæ°æ²¡æä¸ä¸ªæå 'y'"
-#: libcore/asobj/MovieClip_as.cpp:1395
+#: libcore/asobj/MovieClip_as.cpp:1396
#, c-format
msgid "%s.setMask() : needs an argument"
-msgstr ""
+msgstr "%s.setMask() : éè¦ä¸ä¸ªåæ°"
-#: libcore/asobj/MovieClip_as.cpp:1414
+#: libcore/asobj/MovieClip_as.cpp:1415
#, c-format
msgid "%s.setMask(%s) : first argument is not a DisplayObject"
-msgstr ""
+msgstr "%s.setMask(%s) : 第ä¸ä¸ªåæ°ä¸æ¯ä¸ä¸ª DisplayObject"
-#: libcore/asobj/MovieClip_as.cpp:1444
+#: libcore/asobj/MovieClip_as.cpp:1445
msgid "MovieClip.lineTo() needs at least two arguments"
-msgstr ""
+msgstr "MovieClip.lineTo() è³å°éè¦ä¸¤ä¸ªåæ°"
-#: libcore/asobj/MovieClip_as.cpp:1470
+#: libcore/asobj/MovieClip_as.cpp:1471
msgid "MovieClip.moveTo() takes two args"
-msgstr ""
+msgstr "MovieClip.moveTo() éè¦ä¸¤ä¸ªåæ°"
-#: libcore/asobj/MovieClip_as.cpp:1521
+#: libcore/asobj/MovieClip_as.cpp:1522
#, c-format
msgid "MovieClip.lineStyle(%s): args after the first three will be discarded"
-msgstr ""
+msgstr "MovieClip.lineStyle(%s): 第ä¸ä¸ªä¹åçåæ°å°è¢«ä¸¢å¼"
-#: libcore/asobj/MovieClip_as.cpp:1541
+#: libcore/asobj/MovieClip_as.cpp:1542
#, c-format
msgid ""
"MovieClip.lineStyle(%s): invalid joinStylevalue '%s' (valid values: %s|%s|%s)"
-msgstr ""
+msgstr "MovieClip.lineStyle(%s): éæ³ç joinStyle å¼ '%s' (åæ³å¼: %s|%s|%s)"
-#: libcore/asobj/MovieClip_as.cpp:1557
+#: libcore/asobj/MovieClip_as.cpp:1558
#, c-format
msgid ""
"MovieClip.lineStyle(%s): invalid capStyle value '%s' (valid values: none|"
"round|square)"
msgstr ""
+"MovieClip.lineStyle(%s): éæ³ç capStyle å¼ '%s' (åæ³å¼: none|round|square)"
-#: libcore/asobj/MovieClip_as.cpp:1582
+#: libcore/asobj/MovieClip_as.cpp:1583
#, c-format
msgid ""
"MovieClip.lineStyle(%s): invalid noScale value '%s' (valid values: %s|%s|%s|"
"%s)"
-msgstr ""
+msgstr "MovieClip.lineStyle(%s): éæ³ç noScale å¼ '%s' (åæ³å¼: %s|%s|%s|%s)"
-#: libcore/asobj/MovieClip_as.cpp:1630
+#: libcore/asobj/MovieClip_as.cpp:1631
msgid "MovieClip.curveTo() takes four args"
-msgstr ""
+msgstr "MovieClip.curveTo() éè¦åä¸ªåæ°"
-#: libcore/asobj/MovieClip_as.cpp:1671
+#: libcore/asobj/MovieClip_as.cpp:1672
msgid "beginFill() with no args is a no-op"
-msgstr ""
+msgstr "beginFill() ä¸å¸¦åæ°æ¯ä¸ä¸ªä¸æ§è¡ä»»ä½æä½ç no-op 彿°"
-#: libcore/asobj/MovieClip_as.cpp:1715
+#: libcore/asobj/MovieClip_as.cpp:1716
#, c-format
msgid "%s.beginGradientFill(%s): invalid call: 5 arguments needed"
-msgstr ""
+msgstr "%s.beginGradientFill(%s): éæ³è°ç¨: éè¦5ä¸ªåæ°"
-#: libcore/asobj/MovieClip_as.cpp:1726
+#: libcore/asobj/MovieClip_as.cpp:1727
#, c-format
msgid "%s.beginGradientFill(%s): extra arguments invalidate call!"
-msgstr ""
+msgstr "%s.beginGradientFill(%s): åæ°å¤ä½çéæ³è°ç¨ï¼"
-#: libcore/asobj/MovieClip_as.cpp:1746
+#: libcore/asobj/MovieClip_as.cpp:1747
#, c-format
msgid ""
"%s.beginGradientFill(%s): first arg must be 'radial', 'focal', or 'linear'"
msgstr ""
+"%s.beginGradientFill(%s): 第ä¸ä¸ªåæ°å¿
é¡»æ¯ 'radial', 'focal', æ 'linear'"
-#: libcore/asobj/MovieClip_as.cpp:1762
+#: libcore/asobj/MovieClip_as.cpp:1763
#, c-format
msgid ""
"%s.beginGradientFill(%s): one or more of the args from 2nd to 5th don't cast "
"to objects"
-msgstr ""
+msgstr "%s.beginGradientFill(%s): 第2å°ç¬¬5ä¸ªåæ°ä¸çä¸ä¸ªæå¤ä¸ªä¸è½è½¬æ¢ä¸ºå¯¹è±¡"
-#: libcore/asobj/MovieClip_as.cpp:1776
+#: libcore/asobj/MovieClip_as.cpp:1777
#, c-format
msgid ""
"%s.beginGradientFill(%s): colors, alphas and ratios args don't have same "
"length"
-msgstr ""
+msgstr "%s.beginGradientFill(%s): colors, alphas å ratios åæ°æ²¡æåæ ·çé¿åº¦"
-#: libcore/asobj/MovieClip_as.cpp:1928
+#: libcore/asobj/MovieClip_as.cpp:1929
#, c-format
msgid "min/max bbox values in MovieClip.startDrag(%s) swapped, fixing"
-msgstr ""
+msgstr "MovieClip.startDrag(%s) 䏿å°/æå¤§ bbox å¼å·²äº¤æ¢, åºå®"
-#: libcore/asobj/MovieClip_as.cpp:1933
+#: libcore/asobj/MovieClip_as.cpp:1934
#, c-format
msgid "non-finite bbox values in MovieClip.startDrag(%s), took as zero"
-msgstr ""
+msgstr "MovieClip.startDrag(%s) ä¸ééå® bbox å¼, å0å¼"
-#: libcore/asobj/MovieClip_as.cpp:2077
+#: libcore/asobj/MovieClip_as.cpp:2078
msgid "Failed to construct flash.geom.Transform!"
-msgstr ""
+msgstr "æ æ³æå»º flash.geom.Transformï¼"
-#: libcore/asobj/MovieClip_as.cpp:2095
+#: libcore/asobj/MovieClip_as.cpp:2096
msgid "MovieClip.beginMeshFill"
-msgstr ""
+msgstr "MovieClip.beginMeshFill"
-#: libcore/asobj/LoadVars_as.cpp:145
-#, c-format
-msgid "new LoadVars(%s) - arguments discarded"
-msgstr ""
+#: libcore/asobj/System_as.cpp:310
+msgid "System.security.allowDomain"
+msgstr "System.security.allowDomain"
-#: libcore/asobj/Selection_as.cpp:189
-#, c-format
-msgid "Selection.setFocus: expected 1 argument, got %d"
-msgstr ""
+#: libcore/asobj/System_as.cpp:321
+msgid "System.security.allowInsecureDomain"
+msgstr "System.security.allowInsecureDomain"
-#: libcore/asobj/Camera_as.cpp:259
-msgid "No MediaHandler exists! Cannot create a Camera object"
-msgstr ""
+#: libcore/asobj/System_as.cpp:329
+msgid "System.security.loadPolicyFile"
+msgstr "System.security.loadPolicyFile"
-#: libcore/asobj/Camera_as.cpp:312
-msgid "Camera::motionLevel can be set, but it's not implemented"
-msgstr ""
-
-#: libcore/asobj/Camera_as.cpp:331
-msgid "Camera::quality can be set, but it's not implemented"
-msgstr ""
-
-#: libcore/asobj/Camera_as.cpp:353
-msgid "Camera::activityLevel only has default value"
-msgstr ""
-
-#: libcore/asobj/Camera_as.cpp:358
-msgid "Attempt to set activity property of Camera"
-msgstr ""
-
-#: libcore/asobj/Camera_as.cpp:370
-msgid "Camera::bandwidth only has default value"
-msgstr ""
+#: libcore/asobj/System_as.cpp:350
+msgid "System.showSettings"
+msgstr "System.showSettings"
-#: libcore/asobj/Camera_as.cpp:375
-msgid "Attempt to set bandwidth property of Camera"
-msgstr ""
+#: libcore/asobj/System_as.cpp:367
+msgid "System.exactSettings"
+msgstr "System.exactSettings"
-#: libcore/asobj/Camera_as.cpp:391
-msgid "Attempt to set currentFPS property of Camera"
-msgstr ""
+#: libcore/asobj/System_as.cpp:385
+msgid "System.useCodepage"
+msgstr "System.useCodepage"
-#: libcore/asobj/Camera_as.cpp:407
-msgid "Attempt to set fps property of Camera"
-msgstr ""
+#: libcore/asobj/Function_as.cpp:105
+msgid "Function.apply() called with no args"
+msgstr "Function.apply() è°ç¨æ¶æ²¡æåæ°"
-#: libcore/asobj/Camera_as.cpp:423
-msgid "Attempt to set height property of Camera, use setMode"
-msgstr ""
+#: libcore/asobj/Function_as.cpp:129
+#, c-format
+msgid ""
+"Function.apply() got %d args, expected at most 2 -- discarding the ones in "
+"excess"
+msgstr "Function.apply() æ %d ä¸ªåæ°ï¼é¢è®¡æå¤2ä¸ªåæ°ï¼- 丢å¼å¤ä½çåæ°"
-#: libcore/asobj/Camera_as.cpp:446
-msgid "Attempt to set index property of Camera"
-msgstr ""
+#: libcore/asobj/Global_as.cpp:100
+#, c-format
+msgid "%s needs one argument"
+msgstr "%s éè¦ä¸ä¸ªåæ°"
-#: libcore/asobj/Camera_as.cpp:458
-msgid "Camera::motionLevel only has default value"
-msgstr ""
+#: libcore/asobj/Global_as.cpp:106
+#, c-format
+msgid "%s has more than one argument"
+msgstr "%s æä¸ä¸ªä»¥ä¸çåæ°"
-#: libcore/asobj/Camera_as.cpp:463
-msgid "Attempt to set motionLevel property of Camera"
-msgstr ""
+#: libcore/asobj/Global_as.cpp:323
+msgid "Extensions enabled, scanning plugin dir for load"
+msgstr "æ©å±è¢«å¯ç¨ï¼æ«æå è½½çæä»¶ç®å½"
-#: libcore/asobj/Camera_as.cpp:475
-msgid "Camera::motionTimeout"
-msgstr ""
+#: libcore/asobj/Global_as.cpp:328
+msgid "Extensions disabled"
+msgstr "æ©å±è¢«ç¦ç¨"
-#: libcore/asobj/Camera_as.cpp:480
-msgid "Attempt to set motionTimeout property of Camera"
-msgstr ""
+#: libcore/asobj/Global_as.cpp:493
+#, c-format
+msgid "%s needs at least one argument"
+msgstr "%s éè¦è³å°ä¸ä¸ªåæ°"
-#: libcore/asobj/Camera_as.cpp:492
-msgid "Camera.muted"
-msgstr ""
+#: libcore/asobj/Global_as.cpp:500
+#, c-format
+msgid "%s has more than two arguments"
+msgstr "%s æä¸¤ä¸ªä»¥ä¸çåæ°"
-#: libcore/asobj/Camera_as.cpp:497
-msgid "Attempt to set muted property of Camera"
-msgstr ""
+#: libcore/asobj/Global_as.cpp:594
+#, c-format
+msgid "%s needs at least three arguments"
+msgstr "%s è³å°éè¦ä¸ä¸ªåæ°"
-#: libcore/asobj/Camera_as.cpp:513
-msgid "Attempt to set name property of Camera"
-msgstr ""
+#: libcore/asobj/Global_as.cpp:601
+#, c-format
+msgid "%s has more than four arguments"
+msgstr "%s æå个以ä¸çåæ°"
-#: libcore/asobj/Camera_as.cpp:524
-msgid "Attempt to set names property of Camera"
-msgstr ""
+#: libcore/asobj/Global_as.cpp:609
+#, c-format
+msgid "Invalid call to ASSetPropFlags: first argument is not an object: %s"
+msgstr "ASSetPropFlags è°ç¨ä¸åæ³ï¼ç¬¬ä¸ä¸ªåæ°ä¸æ¯ä¸ä¸ªå¯¹è±¡ï¼%s"
-#: libcore/asobj/Camera_as.cpp:554
-msgid "Camera::quality has only default values"
-msgstr ""
+#: libcore/asobj/Global_as.cpp:657 libcore/asobj/Global_as.cpp:700
+#, c-format
+msgid "ASNative(%s): needs at least two arguments"
+msgstr "ASNative(%s)ï¼è³å°éè¦ä¸¤ä¸ªåæ°"
-#: libcore/asobj/Camera_as.cpp:559
-msgid "Attempt to set quality property of Camera"
-msgstr ""
+#: libcore/asobj/Global_as.cpp:669
+#, c-format
+msgid "ASconstructor(%s): args must be 0 or above"
+msgstr "ASconstructor(%s): åæ°å¿
é¡»å¤§äºæçäº0"
-#: libcore/asobj/Camera_as.cpp:587
-msgid "Camera.setCursor"
-msgstr ""
+#: libcore/asobj/Global_as.cpp:712
+#, c-format
+msgid "ASnative(%s): args must be 0 or above"
+msgstr "ASnative(%s): åæ°å¿
é¡»å¤§äºæçäº0"
-#: libcore/asobj/Camera_as.cpp:594
-msgid "Camera.setKeyFrameInterval"
-msgstr ""
+#: libcore/asobj/Global_as.cpp:734
+msgid "ASNative (2, 0) - old ASnew"
+msgstr "ASNative (2, 0) - æ§ç ASnew"
-#: libcore/asobj/Camera_as.cpp:608
-msgid "Attempt to set width property of Camera, use setMode"
-msgstr ""
+#: libcore/asobj/Global_as.cpp:884
+msgid "updateAfterEvent()"
+msgstr "updateAfterEvent()"
-#: libcore/asobj/SharedObject_as.cpp:163
+#: libcore/asobj/Global_as.cpp:946
#, c-format
-msgid "Problems serializing an object's member %s=%s"
-msgstr ""
+msgid "Invalid call to setInterval(%s) - need at least 2 arguments"
+msgstr "setInterval(%s) è°ç¨ä¸åæ³ - è³å°éè¦ 2 ä¸ªåæ°"
-#: libcore/asobj/SharedObject_as.cpp:323
+#: libcore/asobj/Global_as.cpp:960 libcore/asobj/Global_as.cpp:1032
#, c-format
msgid ""
-"SharedObject.flush() called with a minimum disk space argument (%d), which "
-"is currently ignored"
-msgstr ""
+"Invalid call to setInterval(%s) - first argument is not an object or function"
+msgstr "setInterval(%s) è°ç¨ä¸åæ³ - 第ä¸ä¸ªåæ°ä¸æ¯ä¸ä¸ªå¯¹è±¡æå½æ°"
-#: libcore/asobj/SharedObject_as.cpp:331
+#: libcore/asobj/Global_as.cpp:980
#, c-format
-msgid "Couldn't create dir for flushing SharedObject %s"
-msgstr ""
+msgid "Invalid call to setInterval(%s) - missing timeout argument"
+msgstr "setInterval(%s) è°ç¨ä¸åæ³ - ç¼ºå° timeout åæ°"
-#: libcore/asobj/SharedObject_as.cpp:344
+#: libcore/asobj/Global_as.cpp:1019
#, c-format
-msgid ""
-"Attempting to write object %s when it's SOL Read Only is set! Refusing..."
-msgstr ""
+msgid "Invalid call to setTimeout(%s) - need at least 2 arguments"
+msgstr "setTimeout(%s) è°ç¨ä¸åæ³ - è³å°éè¦ 2 ä¸ªåæ°"
-#: libcore/asobj/SharedObject_as.cpp:352
+#: libcore/asobj/Global_as.cpp:1052
#, c-format
-msgid "SharedObject::flush(): Failed opening file '%s' in binary mode"
-msgstr ""
+msgid "Invalid call to setTimeout(%s): missing timeout argument"
+msgstr "setTimeout(%s) è°ç¨ä¸åæ³ï¼ç¼ºå° timeout åæ°"
-#: libcore/asobj/SharedObject_as.cpp:371
-msgid "Error writing SOL header"
-msgstr ""
+#: libcore/asobj/Global_as.cpp:1088
+msgid "clearInterval requires one argument, got none"
+msgstr "clearInterval éè¦ä¸ä¸ªåæ°ï¼æ²¡å¸¦åæ°"
-#: libcore/asobj/SharedObject_as.cpp:378
-#, c-format
-msgid "Error writing %d bytes to output file %s"
-msgstr ""
+#: libcore/asobj/Global_as.cpp:1102
+msgid "_global.showRedrawRegions"
+msgstr "_global.showRedrawRegions"
-#: libcore/asobj/SharedObject_as.cpp:384
+#: libcore/asobj/Global_as.cpp:1109
+msgid "_global.enableDebugConsole"
+msgstr "_global.enableDebugConsole"
+
+#: libcore/asobj/flash/net/FileReferenceList_as.cpp:91
#, c-format
-msgid "SharedObject '%s' written to filesystem."
-msgstr ""
+msgid "FileReferenceList(%s): %s"
+msgstr "FileReferenceList(%s): %s"
-#: libcore/asobj/SharedObject_as.cpp:493
-msgid "Attempting to open SOL file from non localhost-loaded SWF"
-msgstr ""
+#: libcore/asobj/flash/net/FileReferenceList_as.cpp:92
+#: libcore/asobj/flash/net/FileReference_as.cpp:160
+#: libcore/asobj/flash/geom/Transform_as.cpp:357
+msgid "arguments discarded"
+msgstr "忰䏢å¼"
-#: libcore/asobj/SharedObject_as.cpp:521
+#: libcore/asobj/flash/net/FileReference_as.cpp:159
#, c-format
-msgid ""
-"SharedObject path %s is outside the SWF domain %s. Cannot access this object."
-msgstr ""
+msgid "FileReference(%s): %s"
+msgstr "FileReference(%s): %s"
-#: libcore/asobj/SharedObject_as.cpp:534
+#: libcore/asobj/flash/geom/ColorTransform_as.cpp:365
#, c-format
msgid ""
-"SharedObject path %s is not part of the SWF path %s. Cannot access this "
-"object."
-msgstr ""
+"ColorTransform(%s): not enough arguments (need 8). Constructing with default "
+"values"
+msgstr "ColorTransform(%s): 没æè¶³å¤çåæ°(éè¦8ä¸ªåæ°)ã ç¨é»è®¤å¼æå»º"
-#: libcore/asobj/SharedObject_as.cpp:703
-msgid "SharedObject.connect(): needs at least one argument"
-msgstr ""
+#: libcore/asobj/flash/geom/ColorTransform_as.cpp:380
+#, c-format
+msgid "ColorTransform(%s): discarding extra arguments"
+msgstr "ColorTransform(%s): 丢å¼é¢å¤çåæ°"
-#: libcore/asobj/SharedObject_as.cpp:709
-msgid "SharedObject.connect()"
-msgstr ""
+#: libcore/asobj/flash/geom/Matrix_as.cpp:184
+#, c-format
+msgid "Matrix.concat(%s): needs one argument"
+msgstr "Matrix.concat(%s): éè¦è³å°ä¸ä¸ªåæ°"
-#: libcore/asobj/SharedObject_as.cpp:730
-msgid "SharedObject.setFps"
-msgstr ""
+#: libcore/asobj/flash/geom/Matrix_as.cpp:198
+#, c-format
+msgid "Matrix.concat(%s): needs a Matrix object"
+msgstr "Matrix.concat(%s): éè¦ä¸ä¸ªMatrix对象"
-#: libcore/asobj/SharedObject_as.cpp:739
-msgid "SharedObject.send"
-msgstr ""
+#: libcore/asobj/flash/geom/Matrix_as.cpp:255
+#, c-format
+msgid "Matrix.createBox(%s): needs at least two arguments"
+msgstr "Matrix.createBox(%s): éè¦è³å°ä¸¤ä¸ªåæ°"
-#: libcore/asobj/SharedObject_as.cpp:756
+#: libcore/asobj/flash/geom/Matrix_as.cpp:314
#, c-format
-msgid "Arguments to SharedObject.flush(%s) will be ignored"
-msgstr ""
+msgid "Matrix.createGradientBox(%s): needs at least two arguments"
+msgstr "Matrix.createGradientBox(%s): éè¦è³å°ä¸¤ä¸ªåæ°"
-#: libcore/asobj/SharedObject_as.cpp:787
+#: libcore/asobj/flash/geom/Matrix_as.cpp:388
#, c-format
-msgid "SharedObject.getLocal(%s): missing object name"
-msgstr ""
+msgid "Matrix.deltaTransformPoint(%s): needs one argument"
+msgstr "Matrix.deltaTransformPoint(%s): éè¦ä¸ä¸ªåæ°"
-#: libcore/asobj/SharedObject_as.cpp:813
-msgid "SharedObject.getRemote()"
-msgstr ""
+#: libcore/asobj/flash/geom/Matrix_as.cpp:402
+#, c-format
+msgid "Matrix.deltaTransformPoint(%s): needs an object"
+msgstr "Matrix.deltaTransformPoint(%s): éè¦ä¸ä¸ªå¯¹è±¡"
-#: libcore/asobj/SharedObject_as.cpp:828
-msgid "SharedObject.deleteAll()"
-msgstr ""
+#: libcore/asobj/flash/geom/Matrix_as.cpp:421
+#: libcore/asobj/flash/geom/Matrix_as.cpp:747
+#: libcore/asobj/flash/geom/Rectangle_as.cpp:471
+#: libcore/asobj/flash/geom/Rectangle_as.cpp:545
+#: libcore/asobj/flash/geom/Rectangle_as.cpp:603
+msgid "Failed to construct flash.geom.Point!"
+msgstr "æ æ³æå»º flash.geom.Pointï¼"
-#: libcore/asobj/SharedObject_as.cpp:843
-msgid "SharedObject.getDiskUsage()"
-msgstr ""
+#: libcore/asobj/flash/geom/Matrix_as.cpp:523
+#, c-format
+msgid "Matrix.rotate(%s): needs one argument"
+msgstr "Matrix.rotate(%s): éè¦ä¸ä¸ªåæ°"
-#: libcore/asobj/SharedObject_as.cpp:904
+#: libcore/asobj/flash/geom/Matrix_as.cpp:599
+#: libcore/asobj/flash/geom/Matrix_as.cpp:770
#, c-format
-msgid "readSOL: SOL file %s is too short (only %s bytes long) to be valid."
-msgstr ""
+msgid "Matrix.translate(%s): needs two arguments"
+msgstr "Matrix.translate(%s): éè¦ä¸¤ä¸ªåæ°"
-#: libcore/asobj/SharedObject_as.cpp:929
-msgid "readSOL: file ends before data segment"
-msgstr ""
+#: libcore/asobj/flash/geom/Matrix_as.cpp:704
+#, c-format
+msgid "Matrix.translate(%s): needs one argument"
+msgstr "Matrix.translate(%s): éè¦ä¸ä¸ªåæ°"
-#: libcore/asobj/SharedObject_as.cpp:942
-msgid "SharedObject: end of buffer while reading length"
-msgstr ""
-
-#: libcore/asobj/SharedObject_as.cpp:951
-msgid "readSOL: empty property name"
-msgstr ""
-
-#: libcore/asobj/SharedObject_as.cpp:956
-msgid "SharedObject::readSOL: premature end of input"
-msgstr ""
-
-#: libcore/asobj/SharedObject_as.cpp:967
+#: libcore/asobj/flash/geom/Matrix_as.cpp:717
#, c-format
-msgid "SharedObject: error parsing SharedObject '%s'"
-msgstr ""
+msgid "Matrix.transformPoint(%s): needs an object"
+msgstr "Matrix.transformPoint(%s): éè¦ä¸ä¸ªå¯¹è±¡"
-#: libcore/asobj/SharedObject_as.cpp:986
+#: libcore/asobj/flash/geom/Matrix_as.cpp:729
#, c-format
-msgid "readSOL: Reading SharedObject %s: %s"
-msgstr ""
+msgid "Matrix.transformPoint(%s): object must be a Point"
+msgstr "Matrix.transformPoint(%s): 对象å¿
é¡»æ¯ä¸ä¸ª Point"
-#: libcore/asobj/Date_as.cpp:463
-msgid "Date constructor called with more than 7 arguments"
-msgstr ""
+#: libcore/asobj/flash/geom/Point_as.cpp:119
+#: libcore/asobj/flash/geom/Point_as.cpp:190
+#: libcore/asobj/flash/geom/Point_as.cpp:238
+#: libcore/asobj/flash/geom/Point_as.cpp:323
+#, c-format
+msgid "%s: missing arguments"
+msgstr "%s: 缺å°åæ°"
-#: libcore/asobj/Date_as.cpp:723
-msgid "Date.setTime needs one argument"
-msgstr ""
+#: libcore/asobj/flash/geom/Point_as.cpp:128
+#: libcore/asobj/flash/geom/Point_as.cpp:138
+#: libcore/asobj/flash/geom/Point_as.cpp:148
+#: libcore/asobj/flash/geom/Point_as.cpp:156
+#: libcore/asobj/flash/geom/Point_as.cpp:332
+#: libcore/asobj/flash/geom/Point_as.cpp:342
+#: libcore/asobj/flash/geom/Point_as.cpp:352
+#: libcore/asobj/flash/geom/Point_as.cpp:360
+#, c-format
+msgid "Point.add(%s): %s"
+msgstr "Point.add(%s): %s"
-#: libcore/asobj/Date_as.cpp:743
-msgid "Date.setTime was called with more than one argument"
-msgstr ""
+#: libcore/asobj/flash/geom/Point_as.cpp:129
+#: libcore/asobj/flash/geom/Point_as.cpp:249
+#: libcore/asobj/flash/geom/Point_as.cpp:333
+msgid "arguments after first discarded"
+msgstr "丢å¼ç¬¬ä¸ä¸ªåæ°ä¹åçå
¶ä½åæ°"
-#: libcore/asobj/Date_as.cpp:834
-msgid "Date.setFullYear needs one argument"
-msgstr ""
+#: libcore/asobj/flash/geom/Point_as.cpp:139
+#: libcore/asobj/flash/geom/Point_as.cpp:343
+#: libcore/asobj/flash/geom/Point_as.cpp:532
+msgid "first argument doesn't cast to object"
+msgstr "第ä¸ä¸ªåæ°ä¸è½è½¬æ¢æå¯¹è±¡"
-#: libcore/asobj/Date_as.cpp:874
-msgid "Date.setYear needs one argument"
-msgstr ""
+#: libcore/asobj/flash/geom/Point_as.cpp:149
+msgid "first argument cast to object doesn't contain an 'x' member"
+msgstr "第ä¸ä¸ªè½¬æ¢ä¸ºå¯¹è±¡çåæ°ä¸å
嫿åâxâ"
-#: libcore/asobj/Date_as.cpp:897
-msgid "Date.setYear was called with more than three arguments"
-msgstr ""
+#: libcore/asobj/flash/geom/Point_as.cpp:157
+msgid "first argument cast to object doesn't contain an 'y' member"
+msgstr "第ä¸ä¸ªè½¬æ¢ä¸ºå¯¹è±¡çåæ°ä¸å
嫿åâyâ"
-#: libcore/asobj/Date_as.cpp:928
+#: libcore/asobj/flash/geom/Point_as.cpp:200
#, c-format
-msgid "Date.set%sMonth needs one argument"
-msgstr ""
+msgid "Point.equals(%s): %s"
+msgstr "Point.equals(%s): %s"
-#: libcore/asobj/Date_as.cpp:961
-#, c-format
-msgid "Date.set%sMonth was called with more than three arguments"
-msgstr ""
+#: libcore/asobj/flash/geom/Point_as.cpp:201
+#: libcore/asobj/flash/geom/Point_as.cpp:447
+msgid "First arg must be an object"
+msgstr "第ä¸ä¸ªåæ°å¿
é¡»æ¯ä¸ä¸ªå¯¹è±¡"
-#: libcore/asobj/Date_as.cpp:983
+#: libcore/asobj/flash/geom/Point_as.cpp:211
+#: libcore/asobj/flash/geom/Point_as.cpp:457
#, c-format
-msgid "Date.set%sDate needs one argument"
-msgstr ""
+msgid "Point.equals(%s): %s %s"
+msgstr "Point.equals(%s): %s %s"
-#: libcore/asobj/Date_as.cpp:997
-#, c-format
-msgid "Date.set%sDate was called with more than one argument"
-msgstr ""
+#: libcore/asobj/flash/geom/Point_as.cpp:212
+#: libcore/asobj/flash/geom/Point_as.cpp:458
+msgid "First arg must be an instance of"
+msgstr "第ä¸ä¸ªåæ°å¿
é¡»æ¯ä¸ä¸ªå®ä¾"
-#: libcore/asobj/Date_as.cpp:1024
+#: libcore/asobj/flash/geom/Point_as.cpp:248
#, c-format
-msgid "Date.set%sHours needs one argument"
-msgstr ""
+msgid "Point.normalize(%s): %s"
+msgstr "Point.normalize(%s): %s"
-#: libcore/asobj/Date_as.cpp:1043
-#, c-format
-msgid "Date.set%sHours was called with more than four arguments"
-msgstr ""
+#: libcore/asobj/flash/geom/Point_as.cpp:353
+msgid "first argument casted to object doesn't contain an 'x' member"
+msgstr "第ä¸ä¸ªåæ°è½¬æ¢ä¸ºå¯¹è±¡ä¸å
嫿å 'x'"
-#: libcore/asobj/Date_as.cpp:1069
-#, c-format
-msgid "Date.set%sMinutes needs one argument"
-msgstr ""
+#: libcore/asobj/flash/geom/Point_as.cpp:361
+msgid "first argument casted to object doesn't contain an 'y' member"
+msgstr "第ä¸ä¸ªåæ°è½¬æ¢ä¸ºå¯¹è±¡ä¸å
嫿å 'y'"
-#: libcore/asobj/Date_as.cpp:1087 libcore/asobj/Date_as.cpp:1130
+#: libcore/asobj/flash/geom/Point_as.cpp:411
+#: libcore/asobj/flash/geom/Rectangle_as.cpp:483
+#: libcore/asobj/flash/geom/Rectangle_as.cpp:557
+#: libcore/asobj/flash/geom/Rectangle_as.cpp:616
#, c-format
-msgid "Date.set%sMinutes was called with more than three arguments"
-msgstr ""
+msgid "Attempt to set read-only property %s"
+msgstr "å°è¯è®¾ç½®åªè¯»å±æ§ %s"
-#: libcore/asobj/Date_as.cpp:1110
+#: libcore/asobj/flash/geom/Point_as.cpp:426
+#: libcore/asobj/flash/geom/Point_as.cpp:436
+#: libcore/asobj/flash/geom/Point_as.cpp:446
#, c-format
-msgid "Date.set%sSeconds needs one argument"
-msgstr ""
+msgid "Point.distance(%s): %s"
+msgstr "Point.distance(%s): %s"
-#: libcore/asobj/Date_as.cpp:1148
-#, c-format
-msgid "Date.set%sMilliseconds needs one argument"
-msgstr ""
+#: libcore/asobj/flash/geom/Point_as.cpp:437
+msgid "arguments after first two discarded"
+msgstr "丢å¼ç¬¬äºä¸ªä¹åçåæ°"
-#: libcore/asobj/Date_as.cpp:1165
+#: libcore/asobj/flash/geom/Point_as.cpp:510
+#: libcore/asobj/flash/geom/Point_as.cpp:520
+#: libcore/asobj/flash/geom/Point_as.cpp:531
+#: libcore/asobj/flash/geom/Point_as.cpp:547
#, c-format
-msgid "Date.set%sMilliseconds was called with more than one argument"
-msgstr ""
+msgid "Point.interpolate(%s): %s"
+msgstr "Point.interpolate(%s): %s"
-#: libcore/asobj/Date_as.cpp:1227
-msgid "Date.UTC needs one argument"
-msgstr ""
+#: libcore/asobj/flash/geom/Point_as.cpp:521
+msgid "arguments after first three discarded"
+msgstr "丢å¼ç¬¬ä¸ä¸ªä¹åçåæ°"
-#: libcore/asobj/Date_as.cpp:1251
-msgid "Date.UTC was called with more than 7 arguments"
-msgstr ""
+#: libcore/asobj/flash/geom/Point_as.cpp:548
+msgid "second argument doesn't cast to object"
+msgstr "第äºä¸ªåæ°ä¸è½è½¬æ¢ä¸ºå¯¹è±¡"
-#: libcore/asobj/Global_as.cpp:100
+#: libcore/asobj/flash/geom/Point_as.cpp:595
+#: libcore/asobj/flash/geom/Point_as.cpp:604
#, c-format
-msgid "%s needs one argument"
-msgstr ""
+msgid "Point.polar(%s): %s"
+msgstr "Point.polar(%s): %s"
-#: libcore/asobj/Global_as.cpp:106
+#: libcore/asobj/flash/geom/Rectangle_as.cpp:153
#, c-format
-msgid "%s has more than one argument"
-msgstr ""
+msgid "flash.geom.Rectangle(%s): %s"
+msgstr "flash.geom.Rectangle(%s): %s"
-#: libcore/asobj/Global_as.cpp:323
-msgid "Extensions enabled, scanning plugin dir for load"
-msgstr ""
+#: libcore/asobj/flash/geom/Transform_as.cpp:122
+#: libcore/asobj/flash/geom/Transform_as.cpp:198
+msgid "Failed to construct flash.geom.ColorTransform!"
+msgstr "æ æ³æé flash.geom.ColorTransform!"
-#: libcore/asobj/Global_as.cpp:328
-msgid "Extensions disabled"
-msgstr ""
+#: libcore/asobj/flash/geom/Transform_as.cpp:145
+#, c-format
+msgid "Transform.colorTransform(%s): extra arguments discarded"
+msgstr "Transform.colorTransform(%s): 丢å¼å¤ä½çåæ°"
-#: libcore/asobj/Global_as.cpp:493
+#: libcore/asobj/flash/geom/Transform_as.cpp:155
#, c-format
-msgid "%s needs at least one argument"
-msgstr ""
+msgid "Transform.colorTransform(%s): argument is not an object"
+msgstr "Transform.colorTransform(%s): 忰䏿¯ä¸ä¸ªå¯¹è±¡"
-#: libcore/asobj/Global_as.cpp:500
+#: libcore/asobj/flash/geom/Transform_as.cpp:170
#, c-format
-msgid "%s has more than two arguments"
-msgstr ""
+msgid "Transform.colorTransform(%s): argument is not a ColorTransform"
+msgstr "Transform.colorTransform(%s): 忰䏿¯ä¸ä¸ªColorTransform"
-#: libcore/asobj/Global_as.cpp:594
+#: libcore/asobj/flash/geom/Transform_as.cpp:236
+msgid "Failed to construct flash.geom.Matrix!"
+msgstr "æ æ³æé flash.geom.Matrix!"
+
+#: libcore/asobj/flash/geom/Transform_as.cpp:305
#, c-format
-msgid "%s needs at least three arguments"
-msgstr ""
+msgid "Transform.matrix(%s): extra arguments discarded"
+msgstr "Transform.matrix(%s): 丢å¼å¤ä½çåæ°"
-#: libcore/asobj/Global_as.cpp:601
+#: libcore/asobj/flash/geom/Transform_as.cpp:315
#, c-format
-msgid "%s has more than four arguments"
-msgstr ""
+msgid "Transform.matrix(%s): argument is not an object"
+msgstr "Transform.matrix(%s): 忰䏿¯ä¸ä¸ªå¯¹è±¡"
-#: libcore/asobj/Global_as.cpp:609
+#: libcore/asobj/flash/geom/Transform_as.cpp:346
#, c-format
-msgid "Invalid call to ASSetPropFlags: first argument is not an object: %s"
-msgstr ""
+msgid "flash.geom.Transform(%s): needs one argument"
+msgstr "flash.geom.Transform(%s): éè¦ä¸ä¸ªåæ°"
-#: libcore/asobj/Global_as.cpp:657 libcore/asobj/Global_as.cpp:700
+#: libcore/asobj/flash/geom/Transform_as.cpp:356
#, c-format
-msgid "ASNative(%s): needs at least two arguments"
-msgstr ""
+msgid "Transform(%s): %s"
+msgstr "Transform(%s): %s"
-#: libcore/asobj/Global_as.cpp:669
+#: libcore/asobj/flash/external/ExternalInterface_as.cpp:292
#, c-format
-msgid "ASconstructor(%s): args must be 0 or above"
-msgstr ""
+msgid "VAL: %s"
+msgstr "VAL: %s"
-#: libcore/asobj/Global_as.cpp:712
+#: libcore/asobj/flash/external/ExternalInterface_as.cpp:343
#, c-format
-msgid "ASnative(%s): args must be 0 or above"
-msgstr ""
+msgid ""
+"ExternalInterface path %s is outside the SWF domain %s. Cannot access this "
+"object."
+msgstr "ExternalInterface è·¯å¾ %s å¨SWFå %s ä¹å¤ãæ æ³è®¿é®è¯¥å¯¹è±¡ã"
-#: libcore/asobj/Global_as.cpp:734
-msgid "ASNative (2, 0) - old ASnew"
-msgstr ""
+#: libcore/asobj/flash/display/BitmapData_as.cpp:816
+msgid ""
+"BitmapData.copyChannel(). Multiple destination channels are not supported"
+msgstr "BitmapData.copyChannel()ã䏿¯æå¤ç®æ éé"
-#: libcore/asobj/Global_as.cpp:884
-msgid "updateAfterEvent()"
-msgstr ""
+#: libcore/asobj/flash/display/BitmapData_as.cpp:842
+msgid ""
+"BitmapData.copyChannel(): no part of source rectangleoverlaps with the "
+"source BitmapData"
+msgstr "BitmapData.copyChannel(): æºç©å½¢åæº BitmapData 没æéå çé¨å"
-#: libcore/asobj/Global_as.cpp:946
-#, c-format
-msgid "Invalid call to setInterval(%s) - need at least 2 arguments"
-msgstr ""
+#: libcore/asobj/flash/display/BitmapData_as.cpp:856
+msgid ""
+"BitmapData.copyChannel(): destination area is wholly outside the destination "
+"BitmapData"
+msgstr "BitmapData.copyChannel(): ç®æ åºåå
¨é¨å¨ç®æ BitmapData ä¹å¤"
-#: libcore/asobj/Global_as.cpp:960 libcore/asobj/Global_as.cpp:1032
-#, c-format
+#: libcore/asobj/flash/display/BitmapData_as.cpp:914
+msgid "BitmapData.copyPixels(): arguments after the first three are discarded"
+msgstr "BitmapData.copyPixels(): 第ä¸ä¸ªä¹åçåæ°è¢«ä¸¢å¼"
+
+#: libcore/asobj/flash/display/BitmapData_as.cpp:964
msgid ""
-"Invalid call to setInterval(%s) - first argument is not an object or function"
-msgstr ""
+"BitmapData.copyPixels(): no part of source rectangleoverlaps with the source "
+"BitmapData"
+msgstr "BitmapData.copyPixels(): æºç©å½¢åæº BitmapData 没æéå çé¨å"
-#: libcore/asobj/Global_as.cpp:980
+#: libcore/asobj/flash/display/BitmapData_as.cpp:978
+msgid ""
+"BitmapData.copyPixels(): destination area is wholly outside the destination "
+"BitmapData"
+msgstr "BitmapData.copyPixels(): ç®æ åºåå
¨é¨å¨ç®æ BitmapData ä¹å¤"
+
+#: libcore/asobj/flash/display/BitmapData_as.cpp:1064
#, c-format
-msgid "Invalid call to setInterval(%s) - missing timeout argument"
-msgstr ""
+msgid "BitmapData.draw(%s) requires at least one argument"
+msgstr "BitmapData.draw(%s) è³å°éè¦ä¸ä¸ªåæ°"
-#: libcore/asobj/Global_as.cpp:1019
+#: libcore/asobj/flash/display/BitmapData_as.cpp:1076
+msgid "BitmapData.draw() with BitmapData argument"
+msgstr "BitmapData.draw() åæ°ä¸º BitmapData"
+
+#: libcore/asobj/flash/display/BitmapData_as.cpp:1083
#, c-format
-msgid "Invalid call to setTimeout(%s) - need at least 2 arguments"
-msgstr ""
+msgid "BitmapData.draw(%s): first argument must be a MovieClip"
+msgstr "BitmapData.draw(%s): 第ä¸ä¸ªåæ°å¿
é¡»æ¯ä¸ä¸ª MovieClip"
-#: libcore/asobj/Global_as.cpp:1052
+#: libcore/asobj/flash/display/BitmapData_as.cpp:1124
#, c-format
-msgid "Invalid call to setTimeout(%s): missing timeout argument"
-msgstr ""
+msgid "BitmapData.fillRect(%s): needs an object"
+msgstr "BitmapData.fillRect(%s): éè¦ä¸ä¸ªå¯¹è±¡"
-#: libcore/asobj/Global_as.cpp:1088
-msgid "clearInterval requires one argument, got none"
-msgstr ""
+#: libcore/asobj/flash/display/BitmapData_as.cpp:1161
+msgid "floodFill called on disposed BitmapData!"
+msgstr "鿝 BitmapData æ¶ floodFill 被è°ç¨ !"
-#: libcore/asobj/Global_as.cpp:1102
-msgid "_global.showRedrawRegions"
-msgstr ""
+#: libcore/asobj/flash/display/BitmapData_as.cpp:1235
+msgid "getPixel32 called on disposed BitmapData!"
+msgstr "鿝 BitmapData æ¶ getPixel32 被è°ç¨!"
-#: libcore/asobj/Global_as.cpp:1109
-msgid "_global.enableDebugConsole"
-msgstr ""
+#: libcore/asobj/flash/display/BitmapData_as.cpp:1365
+msgid "BitmapData.perlinNoise() stitch value"
+msgstr "BitmapData.perlinNoise() stitch å¼"
-#: libcore/asobj/XMLNode_as.cpp:227
-msgid ""
-"XMLNode.insertBefore(): positional parameter is not a child of this node"
-msgstr ""
+#: libcore/asobj/flash/display/BitmapData_as.cpp:1566
+msgid "Failed to construct flash.geom.Rectangle!"
+msgstr "æ æ³æé flash.geom.Rectangleï¼"
-#: libcore/asobj/XMLNode_as.cpp:596
-msgid "XMLNode::appendChild() needs at least one argument"
-msgstr ""
+#: libcore/asobj/flash/display/BitmapData_as.cpp:1588
+msgid "BitmapData.loadBitmap requires one argument"
+msgstr "BitmapData.loadBitmap éè¦ä¸ä¸ªåæ°"
-#: libcore/asobj/XMLNode_as.cpp:605
-msgid "First argument to XMLNode::appendChild() is not an XMLNode"
-msgstr ""
+#: libcore/asobj/flash/display/BitmapData_as.cpp:1653
+msgid ""
+"BitmapData constructor requires at least two arguments. Will not construct a "
+"BitmapData"
+msgstr "BitmapData æé å¨éè¦è³å°ä¸¤ä¸ªåæ°ãä¸ä¼æé ä¸ä¸ª BitmapData"
+
+#: libcore/asobj/flash/display/BitmapData_as.cpp:1667
+msgid ""
+"BitmapData width and height must be between 1 and 2880. Will not construct a "
+"BitmapData"
+msgstr "BitmapData 宽度河é«åº¦å¿
é¡»å¨ 1 å 2880ä¹é´ãä¸ä¼æé ä¸ä¸ª BitmapData"
-#: libcore/asobj/XMLNode_as.cpp:643
+#: libcore/asobj/NetConnection_as.cpp:455
#, c-format
-msgid "XMLNode.insertBefore(%s) needs at least two arguments"
-msgstr ""
+msgid "Gnash is not allowed to open this URL: %s"
+msgstr "Gnash ä¸å
许æå¼è¯¥ URL: %s"
-#: libcore/asobj/XMLNode_as.cpp:654
+#: libcore/asobj/NetConnection_as.cpp:525
#, c-format
-msgid "First argument to XMLNode.insertBefore(%s) is not an XMLNode"
-msgstr ""
+msgid "Gnash is not allowed to connect to %s"
+msgstr "Gnash ä¸å
è®¸è¿æ¥å° %s"
-#: libcore/asobj/XMLNode_as.cpp:665
+#: libcore/asobj/NetConnection_as.cpp:546
#, c-format
-msgid "Second argument to XMLNode.insertBefore(%s) is not an XMLNode"
-msgstr ""
+msgid "NetConnection.connect(%s): unsupported connection protocol"
+msgstr "NetConnection.connect(%s): è¿æ¥åè®®ä¸æ¯æ"
-#: libcore/asobj/NetStream_as.cpp:299
+#: libcore/asobj/NetConnection_as.cpp:552
#, c-format
-msgid "::pause(%d) called "
-msgstr ""
+msgid "NetConnection.connect(%s): unknown connection protocol"
+msgstr "NetConnection.connect(%s): è¿æ¥åè®®æªç¥"
-#: libcore/asobj/NetStream_as.cpp:355
-msgid "No NetConnection associated with this NetStream, won't play"
-msgstr ""
+#: libcore/asobj/NetConnection_as.cpp:598
+#: libcore/asobj/NetConnection_as.cpp:617
+msgid "NetConnection.call: can't call while not connected"
+msgstr "NetConnection.call: æªè¿æ¥æ¶ä¸è½è°ç¨"
-#: libcore/asobj/NetStream_as.cpp:366
-msgid "NetConnection is not connected. Won't play."
-msgstr ""
+#: libcore/asobj/NetConnection_as.cpp:723
+msgid "NetConnection.call(): needs at least one argument"
+msgstr "NetConnection.call(): è³å°éè¦ä¸ä¸ªåæ°"
-#: libcore/asobj/NetStream_as.cpp:379
+#: libcore/asobj/NetConnection_as.cpp:746
#, c-format
-msgid "Couldn't load URL %s"
-msgstr ""
+msgid "NetConnection.call(%s): second argument must be an object"
+msgstr "NetConnection.call(%s): 第äºä¸ªåæ°å¿
é¡»æ¯å¯¹è±¡"
-#: libcore/asobj/NetStream_as.cpp:386
-#, c-format
-msgid "Connecting to movie: %s"
-msgstr ""
+#: libcore/asobj/NetConnection_as.cpp:836
+msgid "NetConnection.connect(): needs at least one argument"
+msgstr "NetConnection.connect(): è³å°éè¦ä¸ä¸ªåæ°"
-#: libcore/asobj/NetStream_as.cpp:392
+#: libcore/asobj/NetConnection_as.cpp:858
#, c-format
-msgid "NetStream.play(%s): failed starting playback"
-msgstr ""
+msgid "NetConnection.connect(%s): args after the first are not supported"
+msgstr "NetConnection.connect(%s):第ä¸ä¸ªåæ°ä¹åçæ¯ä¸æ¯æç"
-#: libcore/asobj/NetStream_as.cpp:415
-msgid "NetStream_as::initVideoDecoder: hot-plugging video consumer"
-msgstr ""
+#: libcore/asobj/NetConnection_as.cpp:873
+msgid "NetConnection.addHeader()"
+msgstr "NetConnection.addHeader()"
+
+#: libcore/asobj/NetConnection_as.cpp:957
+msgid "Invoke buffer too short"
+msgstr "è°ç¨ç¼å²åºå¤ªç"
-#: libcore/asobj/NetStream_as.cpp:420
+#: libcore/asobj/NetConnection_as.cpp:964
+msgid "Invoke argument not present"
+msgstr "è°ç¨åæ°ä¸åå¨"
+
+#: libcore/asobj/NetConnection_as.cpp:1055
#, c-format
-msgid "NetStream: Could not create Video decoder: %s"
-msgstr ""
+msgid "Unknown HTTP Remoting response identifier '%s'"
+msgstr "æªç¥çHTTPè¿ç¨ååºæ è¯ç¬¦ '%s'"
-#: libcore/asobj/NetStream_as.cpp:444
-msgid "NetStream_as::initAudioDecoder: hot-plugging audio consumer"
-msgstr ""
+#: libcore/asobj/NetConnection_as.cpp:1071
+#, c-format
+msgid "Unsupported HTTP Remoting response callback: '%s' (size %d)"
+msgstr "䏿¯æç HTTPè¿ç¨ååºåè°: '%s' (å¤§å° %d)"
-#: libcore/asobj/NetStream_as.cpp:451
+#: libcore/asobj/NetConnection_as.cpp:1220
#, c-format
-msgid "Could not create Audio decoder: %s"
-msgstr ""
+msgid "Error parsing server AMF: %s"
+msgstr "é误解ææå¡å¨ AMF: %s"
-#: libcore/asobj/NetStream_as.cpp:477
+#: libcore/asobj/NetConnection_as.cpp:1267
#, c-format
-msgid "Gnash could not get stream '%s' from NetConnection"
-msgstr ""
+msgid "Could not serialize NetConnection.call argument %d"
+msgstr "æ æ³åºååNetConnection.callåæ° %d"
-#: libcore/asobj/NetStream_as.cpp:487
-msgid "No Media handler registered, can't parse NetStream input"
-msgstr ""
+#: libcore/asobj/NetConnection_as.cpp:1295
+msgid "Sanity failed. no string method in invoke packet"
+msgstr "åçæ§å¤±è´¥ãè°ç¨å
䏿²¡æstringæ¹æ³"
-#: libcore/asobj/NetStream_as.cpp:495
-msgid "Unable to create parser for NetStream input"
-msgstr ""
+#: libcore/asobj/NetConnection_as.cpp:1342
+msgid "Server called _onbwcheck without a callback"
+msgstr "æå¡å¨è°ç¨_onbwcheckæ¶æ²¡æåè°å½æ°"
-#: libcore/asobj/NetStream_as.cpp:520
-#, c-format
-msgid "%p.startPlayback: playHead position reset to 0"
-msgstr ""
+#: libcore/asobj/NetConnection_as.cpp:1372
+#, fuzzy
+msgid "RTMP server sent error"
+msgstr "rtmp æå¡å¨åéé误"
-#: libcore/asobj/NetStream_as.cpp:526
-msgid "Setting playStart status"
-msgstr ""
+#: libcore/asobj/XMLSocket_as.cpp:268
+msgid "XMLSocket.send(): socket not initialized"
+msgstr "XMLSocket.send(): æªåå§åsocket"
-#: libcore/asobj/NetStream_as.cpp:544
-msgid "getDecodedVideoFrame: no parser available"
-msgstr ""
+#: libcore/asobj/XMLSocket_as.cpp:312
+msgid "XMLSocket.connect() called while already connected, ignored"
+msgstr "XMLSocket.connect() å¨å·²è¿æ¥æ¶è°ç¨ï¼ä¼è¢«å¿½ç¥"
-#: libcore/asobj/NetStream_as.cpp:553
-#, c-format
+#: libcore/asobj/XMLSocket_as.cpp:319
+msgid "XMLSocket.connect() needs two arguments"
+msgstr "XMLSocket.connect() éè¦ä¸¤ä¸ªåæ°"
+
+#: libcore/asobj/XMLSocket_as.cpp:344
+msgid "XMLSocket.connect(): connection failed"
+msgstr "XMLSocket.connect(): è¿æ¥å¤±è´¥"
+
+#: libcore/asobj/XMLSocket_as.cpp:360
+msgid "XMLSocket.send() needs at least one argument"
+msgstr "XMLSocket.send() è³å°éè¦ä¸ä¸ªåæ°"
+
+#: libcore/LineStyle.cpp:186
msgid ""
-"getDecodedVideoFrame(%d): no more video frames in input "
-"(nextVideoFrameTimestamp returned false, parsingComplete=%d)"
-msgstr ""
+"UNTESTED: Do not know how to interpolate line styles with different vertical "
+"thickness scaling"
+msgstr "UNTESTED: ä¸ç¥éå¦ä½ç¨ä¸ååç´å度æ¯ä¾æå
¥âçº¿æ¡æ ·å¼"
-#: libcore/asobj/NetStream_as.cpp:564
+#: libcore/LineStyle.cpp:191
msgid ""
-"getDecodedVideoFrame setting playStop status (parsing complete and "
-"nextVideoFrameTimestamp() returned false)"
-msgstr ""
+"UNTESTED: Do not know how to interpolate line styles with different "
+"horizontal thickness scaling"
+msgstr "UNTESTED: ä¸ç¥éå¦ä½ç¨ä¸åæ°´å¹³å度æ¯ä¾æå
¥âçº¿æ¡æ ·å¼"
-#: libcore/asobj/NetStream_as.cpp:575
+#: libcore/SWFMovie.cpp:54
#, c-format
-msgid "%p.getDecodedVideoFrame(%d): next video frame is in the future (%d)"
-msgstr ""
+msgid "Frame %d never loaded. Total frames: %d"
+msgstr "帧 %d æªå è½½ãæ»å¸§æ°: %d"
-#: libcore/asobj/NetStream_as.cpp:586
+#: libcore/SWFMovie.cpp:77
#, c-format
-msgid ""
-"nextVideoFrameTimestamp returned true (%d), but decodeNextVideoFrame "
-"returned null, I don't think this should ever happen"
-msgstr ""
+msgid "Frame %d never loaded. Total frames: %d."
+msgstr "帧 %d æªå è½½ãæ»å¸§æ°: %dã"
-#: libcore/asobj/NetStream_as.cpp:596
+#: libcore/SWFMovie.cpp:109
#, c-format
msgid ""
-"%p.getDecodedVideoFrame(%d): last video frame decoded (should set playback "
-"status to STOP?)"
-msgstr ""
+"Attempt to perform initialized for a character %s that does not exist "
+"(either not exported or not defined)"
+msgstr "è¯å¾åå§åä¸ä¸ªä¸åå¨çå符 %s ï¼ä¹è®¸æ²¡æå¯¼åºæè¢«æªå®ä¹ï¼"
-#: libcore/asobj/NetStream_as.cpp:604
+#: libcore/swf/StreamSoundBlockTag.cpp:77
+msgid "Found SOUNDSTREAMBLOCK tag w/out preceding SOUNDSTREAMHEAD"
+msgstr "SOUNDSTREAMHEADååç° SOUNDSTREAMBLOCK æ ç¾ w/out "
+
+#: libcore/swf/StreamSoundBlockTag.cpp:113
+msgid "Tag boundary reported past end of stream!"
+msgstr "æµç»å°¾å¤åç°æ ç¾è¾¹çï¼"
+
+#: libcore/swf/DefaultTagLoaders.cpp:94
#, c-format
msgid ""
-"%p.getDecodedVideoFrame(%d): next video frame is in the future, we'll return "
-"this one"
-msgstr ""
+"Undocumented tag %s encountered. Please report this to the Gnash developers!"
+msgstr "éå°æªå
¬å¼çæ è®° %sã请å Gnash å¼åè
å鿥åï¼"
-#: libcore/asobj/NetStream_as.cpp:622
-msgid "decodeNextVideoFrame: no parser available"
-msgstr ""
+#: libcore/swf/RemoveObjectTag.cpp:71
+#, c-format
+msgid " remove_object_2(%d)"
+msgstr "remove_object_2(%d)"
-#: libcore/asobj/NetStream_as.cpp:629
+#: libcore/swf/DefineButtonCxformTag.cpp:49
#, c-format
-msgid "%p.decodeNextVideoFrame(): no more video frames in input"
-msgstr ""
+msgid "DefineButtonCxform refers to an unknown DisplayObject %d"
+msgstr "DefineButtonCxform æåä¸ä¸ªæªç¥ DisplayObject %d"
-#: libcore/asobj/NetStream_as.cpp:645
-msgid "Error decoding encoded video frame in NetStream input"
-msgstr ""
+#: libcore/swf/DefineButtonCxformTag.cpp:60
+#, c-format
+msgid ""
+"DefineButtonCxform refers to DisplayObject ID %d (%s). Expected a button "
+"definition"
+msgstr "DefineButtonCxform æå DisplayObject ID %d (%s). éè¦ä¸ä¸ªæé®å®ä¹"
-#: libcore/asobj/NetStream_as.cpp:659
+#: libcore/swf/DefineTextTag.cpp:52
#, c-format
-msgid "%p.decodeNextAudioFrame: no more video frames in input"
-msgstr ""
+msgid "DefineTextTag, id = %d"
+msgstr "DefineTextTag, id = %d"
-#: libcore/asobj/NetStream_as.cpp:688
+#: libcore/swf/DefineTextTag.cpp:93
#, c-format
-msgid ""
-"NetStream_as::decodeNextAudioFrame: %d bytes of encoded audio decoded to %d "
-"bytes"
-msgstr ""
+msgid "Text DisplayObject, id = %d"
+msgstr "ææ¬æ¾ç¤ºå¯¹è±¡, id = %d"
-#: libcore/asobj/NetStream_as.cpp:708
+#: libcore/swf/DefineTextTag.cpp:112
#, c-format
-msgid "NetStream_as::seek(%d): no parser, no party"
-msgstr ""
+msgid "begin text records for DefineTextTag %p"
+msgstr "å¼å§ DefineTextTag %p çææ¬è®°å½"
-#: libcore/asobj/NetStream_as.cpp:728
-msgid "Setting invalidTime status"
-msgstr ""
+#: libcore/swf/ShapeRecord.cpp:278
+#, fuzzy
+msgid "Invalid fill style %1% in style change record - %2% defined. Set to 0."
+msgstr "æ æçå¡«å
æ ·å¼ %d å¨lineStyleChangeè®°å½ä¸ - %d å·²å®ä¹ã设置为0ã"
-#: libcore/asobj/NetStream_as.cpp:735
+#: libcore/swf/ShapeRecord.cpp:313
#, c-format
-msgid "_parser->seek(%d) returned %d"
-msgstr ""
+msgid " bound SWFRect: %s"
+msgstr "è¾¹ç SWFRect: %s"
-#: libcore/asobj/NetStream_as.cpp:742
+#: libcore/swf/ShapeRecord.cpp:340
#, c-format
-msgid "%p.seek: playHead position set to %d"
-msgstr ""
+msgid " ShapeRecord(%s): fillbits %d, linebits %d"
+msgstr "ShapeRecord(%s): fillbits %d, linebits %d"
-#: libcore/asobj/NetStream_as.cpp:778
+#: libcore/swf/ShapeRecord.cpp:418
#, c-format
-msgid ""
-"%p.refreshAudioBuffer: doing nothing as playhead is paused - bufferLength=%d/"
-"%d"
-msgstr ""
+msgid " Shape read: moveto %d %d"
+msgstr "å½¢ç¶è¯»åï¼ç§»å¨å° %d %d"
-#: libcore/asobj/NetStream_as.cpp:787
+#: libcore/swf/ShapeRecord.cpp:437
#, c-format
-msgid ""
-"%p.refreshAudioBuffer: doing nothing as current position was already decoded "
-"- bufferLength=%d/%d"
-msgstr ""
+msgid " Shape read: fill0 (left) = %d"
+msgstr "å½¢ç¶è¯»åï¼fill0 (left) = %d"
-#: libcore/asobj/NetStream_as.cpp:799
+#: libcore/swf/ShapeRecord.cpp:456
#, c-format
-msgid ""
-"%p.refreshAudioBuffer: currentPosition=%d, playHeadState=%d, bufferLength="
-"%d, bufferTime=%d"
-msgstr ""
+msgid " Shape read: fill1 (right) = %d"
+msgstr "å½¢ç¶è¯»åï¼fill1 (right) = %d"
-#: libcore/asobj/NetStream_as.cpp:935
+#: libcore/swf/ShapeRecord.cpp:475
#, c-format
-msgid "%p.pushDecodedAudioFrames(%d) : buffer overrun (%d/%d)."
-msgstr ""
+msgid "ShapeRecord: line %d"
+msgstr "ShapeRecord: %dè¡"
+
+#: libcore/swf/ShapeRecord.cpp:489
+msgid "ShapeRecord: more fill styles"
+msgstr "ShapeRecord: æ´å¤çå¡«å
æ ·å¼"
-#: libcore/asobj/NetStream_as.cpp:951
+#: libcore/swf/ShapeRecord.cpp:525
#, c-format
-msgid ""
-"%p.pushDecodedAudioFrames(%d): no more audio frames in input "
-"(nextAudioFrameTimestamp returned false, parsingComplete=%d)"
-msgstr ""
+msgid "ShapeRecord: curved edge %d %d - %d %d - %d %d"
+msgstr "ShapeRecord: å¼§å½¢è¾¹ç¼ %d %d - %d %d - %d %d"
-#: libcore/asobj/NetStream_as.cpp:962
-msgid ""
-"pushDecodedAudioFrames setting playStop status (parsing complete and "
-"nextAudioFrameTimestamp returned false)"
-msgstr ""
+#: libcore/swf/ShapeRecord.cpp:559
+#, c-format
+msgid "ShapeRecord: straight edge %d %d - %d %d"
+msgstr "ShapeRecord: ç´çº¿è¾¹ç¼ %d %d - %d %d"
-#: libcore/asobj/NetStream_as.cpp:975
+#: libcore/swf/ShapeRecord.cpp:613
+msgid " fill styles: %1%"
+msgstr "å¡«å
æ ·å¼: %1%"
+
+#: libcore/swf/ShapeRecord.cpp:622
+msgid " Read fill: %1%"
+msgstr "读åå¡«å
: %1%"
+
+#: libcore/swf/ShapeRecord.cpp:636
#, c-format
-msgid "%p.pushDecodedAudioFrames(%d): next audio frame is in the future (%d)"
-msgstr ""
+msgid " readLineStyles: count = %d"
+msgstr "readLineStylesï¼count = %d"
-#: libcore/asobj/NetStream_as.cpp:988
+#: libcore/swf/ShapeRecord.cpp:643
#, c-format
-msgid ""
-"nextAudioFrameTimestamp returned true (%d), but decodeNextAudioFrame "
-"returned null, I don't think this should ever happen"
-msgstr ""
+msgid " readLineStyles: count2 = %d"
+msgstr "readLineStyles: count2 = %d"
-#: libcore/asobj/NetStream_as.cpp:997
+#: libcore/swf/DefineButtonTag.cpp:85
#, c-format
-msgid "pushDecodedAudioFrames(%d): Decoded audio frame contains no samples"
-msgstr ""
+msgid " DefineButton loader: character id = %d"
+msgstr "DefineButton å è½½å¨: å符 id = %d"
-#: libcore/asobj/NetStream_as.cpp:1006
+#: libcore/swf/DefineButtonTag.cpp:102
#, c-format
-msgid "pushDecodedAudioFrames(%d) pushing %dth frame with timestamp %d"
-msgstr ""
+msgid " DefineButton2 loader: chararacter id = %d"
+msgstr "DefineButton2 å è½½å¨: å符 id = %d"
-#: libcore/asobj/NetStream_as.cpp:1024
-msgid "resuming playback clock on audio consume"
-msgstr ""
+#: libcore/swf/DefineButtonTag.cpp:134
+msgid "Premature end of DEFINEBUTTON tag, won't read actions"
+msgstr "è¿æ©ç»æç DEFINEBUTTON æ ç¾ï¼å°æ æ³è¯»åæä½"
-#: libcore/asobj/NetStream_as.cpp:1090
+#: libcore/swf/DefineButtonTag.cpp:170
#, c-format
-msgid ""
-"%p.refreshVideoFrame: doing nothing as playhead is paused - bufferLength=%d, "
-"bufferTime=%d"
-msgstr ""
+msgid "Next Button2 actionOffset (%u) points past the end of tag (%lu)"
+msgstr "ä¸ä¸ä¸ª Button2 çactionOffset (%u) ç¹æäºç»ææ è®°(%lu)"
-#: libcore/asobj/NetStream_as.cpp:1100
+#: libcore/swf/DefineButtonTag.cpp:211
#, c-format
msgid ""
-"%p.refreshVideoFrame: doing nothing as current position was already decoded "
-"- bufferLength=%d, bufferTime=%d"
-msgstr ""
+"Next action offset (%u) in Button2ActionConditions points past the end of tag"
+msgstr "ä¸ä¸ä¸ª æä½Button2ActionConditionsç¹çåç§» (%u) æäºç»ææ è®°"
-#: libcore/asobj/NetStream_as.cpp:1112
+#: libcore/swf/DefineButtonTag.cpp:276
+msgid "Premature end of button action input: can't read conditions"
+msgstr "è¿æ©ç»æçæé®å¨ä½è¾å
¥ï¼æ æ³è¯»åæ¡ä»¶"
+
+#: libcore/swf/DefineButtonTag.cpp:286
#, c-format
+msgid " button actions for conditions 0x%x"
+msgstr "æ¡ä»¶ä¸º 0x%x çæé®æä½"
+
+#: libcore/swf/DefineButtonTag.cpp:359
+msgid " premature end of button record input stream, can't read flags"
+msgstr "æé®è®°å½è¾å
¥æµè¿æ©ç»æï¼æ æ³è¯»åæ å¿"
+
+#: libcore/swf/DefineButtonTag.cpp:380
msgid ""
-"%p.refreshVideoFrame: currentPosition=%d, playHeadState=%d, bufferLength=%d, "
-"bufferTime=%d"
-msgstr ""
+" premature end of button record input stream, can't read DisplayObject id"
+msgstr "æé®è®°å½è¾å
¥æµè¿æ©ç»æï¼æ æ³è¯»åDisplayObject ID"
-#: libcore/asobj/NetStream_as.cpp:1126
+#: libcore/swf/DefineButtonTag.cpp:395
#, c-format
msgid ""
-"%p.refreshVideoFrame(): no more video frames to decode (DEC_STOPPED, null "
-"from getDecodedVideoFrame)"
-msgstr ""
+" button record for states [%s] refer to DisplayObject with id %d, which is "
+"not found in the chars dictionary"
+msgstr "æåDisplayObject ID为 %d çç¶æ [%s] çæé®è®°å½ï¼æ²¡æå¨å符åå
¸ä¸æ¾å°"
-#: libcore/asobj/NetStream_as.cpp:1135
+#: libcore/swf/DefineButtonTag.cpp:402
#, c-format
-msgid ""
-"%p.refreshVideoFrame(): last video frame was good enough for current position"
-msgstr ""
+msgid " button record for states [%s] contain DisplayObject %d (%s)"
+msgstr "ç¶æ [%s] çæé®è®°å½å
å«DisplayObject %d (%s)"
-#: libcore/asobj/NetStream_as.cpp:1210
-#, c-format
+#: libcore/swf/DefineButtonTag.cpp:410
msgid ""
-"%p.advance: buffer empty while decoding, setting buffer to buffering and "
-"pausing playback clock"
-msgstr ""
-
-#: libcore/asobj/NetStream_as.cpp:1215
-msgid "Setting bufferEmpty status"
-msgstr ""
+" premature end of button record input stream, can't read button layer "
+"(depth?)"
+msgstr "æé®è®°å½è¾å
¥æµè¿æ©ç»æï¼æ æ³è¯»åæé®å±ï¼æ·±åº¦?ï¼"
-#: libcore/asobj/NetStream_as.cpp:1224
+#: libcore/swf/VideoFrameTag.cpp:47
#, c-format
-msgid "%p.advance : bufferLength=%d, parsing completed"
-msgstr ""
+msgid "VideoFrame tag refers to unknown video stream id %d"
+msgstr "VideoFrame æ è®°æåæªç¥çè§é¢æµæ è¯ %d"
-#: libcore/asobj/NetStream_as.cpp:1236
+#: libcore/swf/VideoFrameTag.cpp:57
#, c-format
-msgid "%p.advance: buffering - position=%d, buffer=%d/%d"
-msgstr ""
+msgid "VideoFrame tag refers to a non-video DisplayObject %d (%s)"
+msgstr "VideoFrame æ è®°æåéè§é¢æ¾ç¤ºå¯¹è±¡ %d(%s)"
-#: libcore/asobj/NetStream_as.cpp:1255
-#, c-format
+#: libcore/swf/VideoFrameTag.cpp:90
msgid ""
-"%p.advance: buffer full (or parsing completed), resuming playback clock - "
-"position=%d, buffer=%d/%d"
-msgstr ""
-
-#: libcore/asobj/NetStream_as.cpp:1276
-#, c-format
-msgid "%p.advance: playHead position set to timestamp of first frame: %d"
-msgstr ""
+"Could not read enough bytes when parsing VideoFrame tag. Perhaps we reached "
+"the end of the stream!"
+msgstr "è§£æVideoFrameæ ç¾æ¶æ æ³è¯»åå°è¶³å¤çåèãä¹è®¸å·²å°è¾¾æµçæ«å°¾ï¼"
-#: libcore/asobj/NetStream_as.cpp:1283
+#: libcore/swf/StartSoundTag.cpp:56
#, c-format
-msgid ""
-"%p.advance: playHead position is 0 and parser still doesn't have a frame to "
-"set it to"
-msgstr ""
+msgid "start_sound_loader: sound_id %d is not defined"
+msgstr "start_sound_loader: sound_id %d æªå®ä¹"
-#: libcore/asobj/NetStream_as.cpp:1323
+#: libcore/swf/StartSoundTag.cpp:64
#, c-format
-msgid ""
-"Moving NetStream playhead from timestamp %d to timestamp %d as there are no "
-"video frames yet, audio buffer is empty and next audio frame timestamp is "
-"there (see bug #26687)"
-msgstr ""
+msgid "StartSound: id=%d"
+msgstr "StartSound: id=%d"
-#: libcore/asobj/NetStream_as.cpp:1424
-msgid "attachAuxStreamer called while already attached"
-msgstr ""
+#: libcore/swf/StartSoundTag.cpp:116
+msgid "STARTSOUND2 tag not parsed and not used"
+msgstr "STARTSOUND2 tag æªè§£æå使ç¨"
-#: libcore/asobj/NetStream_as.cpp:1435
+#: libcore/swf/DefineButtonSoundTag.cpp:52
#, c-format
-msgid "Could not attach NetStream aux streamer to sound handler: %s"
-msgstr ""
+msgid "DEFINEBUTTONSOUND refers to an unknown DisplayObject def %d"
+msgstr "DEFINEBUTTONSOUND æåä¸ä¸ªæªç¥çæ¾ç¤ºå¯¹è±¡ %d"
-#: libcore/asobj/NetStream_as.cpp:1566
+#: libcore/swf/DefineButtonSoundTag.cpp:63
#, c-format
msgid ""
-"First argument to NetStream constructor doesn't cast to a NetConnection (%s)"
+"DEFINEBUTTONSOUND refers to DisplayObject id %d, a %s (expected a button "
+"DisplayObject)"
msgstr ""
+"DEFINEBUTTONSOUND æåæ è¯ä¸º%dçæ¾ç¤ºå¯¹è±¡ï¼ä¸ä¸ª %sï¼åºè¯¥æ¯ä¸ä¸ªæé®æ¾ç¤ºå¯¹è±¡ï¼"
-#: libcore/asobj/NetStream_as.cpp:1612
-msgid "NetStream_as play needs args"
-msgstr ""
+#: libcore/swf/DefineButtonSoundTag.cpp:73
+msgid "Attempt to redefine button sound ignored"
+msgstr "è¯å¾éæ°å®ä¹è¢«å¿½ç¥çæé®å£°é³"
-#: libcore/asobj/NetStream_as.cpp:1619
+#: libcore/swf/DefineButtonSoundTag.cpp:99
#, c-format
-msgid "NetStream.play(%s): stream is not connected"
-msgstr ""
+msgid "sound tag not found, sound_id=%d, button state #=%i"
+msgstr "没æ¾å°å£°é³æ ç¾ï¼å£°é³id=%d, æé®ç¶æ #=%i"
-#: libcore/asobj/NetStream_as.cpp:1668
-msgid "NetStream.attachAudio"
-msgstr ""
+#: libcore/swf/DefineShapeTag.cpp:58
+#, c-format
+msgid "DefineShapeTag(%s): id = %d"
+msgstr "DefineShapeTag(%s): id = %d"
-#: libcore/asobj/NetStream_as.cpp:1679
-msgid "NetStream.attachVideo"
-msgstr ""
+#: libcore/swf/DefineFontTag.cpp:60
+msgid "reading code table at offset %1%, %2% glyphs"
+msgstr "å¨åç§» %1%, %2% å形读å代ç 表"
-#: libcore/asobj/NetStream_as.cpp:1690
-msgid "NetStream.publish"
-msgstr ""
+#: libcore/swf/DefineFontTag.cpp:120
+msgid "reading DefineFont"
+msgstr "读å DefineFont"
-#: libcore/asobj/NetStream_as.cpp:1701
-msgid "NetStream.receiveAudio"
-msgstr ""
+#: libcore/swf/DefineFontTag.cpp:157
+msgid "Glyphs offset table corrupted in DefineFont tag"
+msgstr "DefineFontæ ç¾ä¸åå½¢å移表æå"
-#: libcore/asobj/NetStream_as.cpp:1712
-msgid "NetStream.receiveVideo"
-msgstr ""
+#: libcore/swf/DefineFontTag.cpp:172
+msgid "reading DefineFont2 or DefineFont3"
+msgstr "读å DefineFont2 æ DefineFont3"
-#: libcore/asobj/NetStream_as.cpp:1723
-msgid "NetStream.send"
-msgstr ""
+#: libcore/swf/DefineFontTag.cpp:225 libcore/swf/DefineFontTag.cpp:237
+#, c-format
+msgid "Glyph %d at offset %u"
+msgstr "åç§» %u å¤ç åå½¢ %d"
-#: libcore/asobj/NetStream_as.cpp:1807
-msgid "NetStream.liveDelay"
-msgstr ""
+#: libcore/swf/DefineFontTag.cpp:254
+msgid "Glyphs offset table corrupted in DefineFont2/3 tag"
+msgstr "å¨ DefineFont2/3 æ ç¾ä¸åå½¢å移表æå"
-#: libcore/asobj/NetStream_as.cpp:1859
-msgid "Invalid AMF data in FLV tag"
-msgstr ""
+#: libcore/swf/DefineFontTag.cpp:266
+msgid "Bad offset in DefineFont2"
+msgstr "DefineFont2 ä¸é误çåç§»"
-#: libcore/asobj/NetStream_as.cpp:1870
-msgid "Could not convert FLV metatag to as_value, passing undefined"
-msgstr ""
+#: libcore/swf/DefineFontTag.cpp:325
+msgid "Repeated kerning pair found - ignoring"
+msgstr "åç°éå¤çåè·é
对 - 忽ç¥"
-#: libcore/asobj/Number_as.cpp:78
+#: libcore/swf/DefineFontTag.cpp:344
#, c-format
-msgid "Number.toString(%s): radix must be in the 2..36 range (%d is invalid)"
-msgstr ""
-
-#: libcore/asobj/TextSnapshot_as.cpp:521
-msgid "TextSnapshot.findText() requires 3 arguments"
-msgstr ""
+msgid "DefineFontInfo tag loader: can't find font with id %d"
+msgstr "DefineFontInfo æ ç¾å è½½å¨ï¼æ æ³æ¾å°æ è¯ä¸º %d çåä½"
-#: libcore/asobj/TextSnapshot_as.cpp:545
-msgid "TextSnapshot.getCount() takes no arguments"
-msgstr ""
+#: libcore/swf/DefineFontTag.cpp:352
+msgid "DefineFontInfo2 partially implemented"
+msgstr "DefineFontInfo2 é¨åå®ç°"
-#: libcore/asobj/TextSnapshot_as.cpp:601
-msgid "TextSnapshot.getText requires exactly 2 arguments"
+#: libcore/swf/CSMTextSettingsTag.cpp:77
+#, c-format
+msgid ""
+" CSMTextSettings: TextID=%d, FlashType=%d, GridFit=%d, Thickness=%d, "
+"Sharpness=%d"
msgstr ""
+"CSMTextSettings: TextID=%d, FlashType=%d, GridFit=%d, Thickness=%d, "
+"Sharpness=%d"
-#: libcore/asobj/XMLSocket_as.cpp:268
-msgid "XMLSocket.send(): socket not initialized"
-msgstr ""
+#: libcore/swf/CSMTextSettingsTag.cpp:85
+msgid "CSMTextSettings"
+msgstr "CSMTextSettings"
-#: libcore/asobj/XMLSocket_as.cpp:312
-msgid "XMLSocket.connect() called while already connected, ignored"
-msgstr ""
+#: libcore/swf/PlaceObject2Tag.cpp:85
+#, c-format
+msgid " PLACEOBJECT: depth=%d(%d) char=%d"
+msgstr "PLACEOBJECT: depth=%d(%d) char=%d"
-#: libcore/asobj/XMLSocket_as.cpp:319
-msgid "XMLSocket.connect() needs two arguments"
-msgstr ""
+#: libcore/swf/PlaceObject2Tag.cpp:89 libcore/swf/PlaceObject2Tag.cpp:319
+#, c-format
+msgid " SWFCxForm: %s"
+msgstr "SWFCxForm: %s"
-#: libcore/asobj/XMLSocket_as.cpp:344
-msgid "XMLSocket.connect(): connection failed"
-msgstr ""
+#: libcore/swf/PlaceObject2Tag.cpp:105
+#, c-format
+msgid "Reserved field in PlaceObject actions == %u (expected 0)"
+msgstr "PlaceObject ä¸ä¿çåæ®µ actions == %uï¼é¢è®¡å¼0ï¼"
-#: libcore/asobj/XMLSocket_as.cpp:360
-msgid "XMLSocket.send() needs at least one argument"
-msgstr ""
+#: libcore/swf/PlaceObject2Tag.cpp:123
+#, c-format
+msgid " actions: flags = 0x%X"
+msgstr "actions: flags = 0x%X"
-#: libcore/asobj/AsBroadcaster.cpp:233
-msgid "AsBroadcaster.initialize() requires one argument, none given"
+#: libcore/swf/PlaceObject2Tag.cpp:158
+#, c-format
+msgid ""
+"swf_event::read(), even_length = %u, but only %lu bytes left to the end of "
+"current tag. Breaking for safety."
msgstr ""
+"swf_event::read(), even_length = %u, å°å½åæ ç¾ç»æåªçä¸ %lu åèãåºäºå®å
¨"
+"æ§è䏿ã"
-#: libcore/asobj/AsBroadcaster.cpp:243
-#, c-format
-msgid "AsBroadcaster.initialize(%s): first arg is not an object"
+#: libcore/swf/PlaceObject2Tag.cpp:169
+msgid "swf_event::read(), event_length = 0 (empty). Skipping."
msgstr ""
-#: libcore/asobj/AsBroadcaster.cpp:252
+#: libcore/swf/PlaceObject2Tag.cpp:227
#, c-format
msgid ""
-"AsBroadcaster.initialize(%s): first arg is an object but doesn't cast to one "
-"(dangling DisplayObject ref?)"
-msgstr ""
+"swf_event::read() -- unknown / unhandled event type received, flags = 0x%x"
+msgstr "swf_event::read() -- æ¶å°æªç¥/æªå¤ççäºä»¶ç±»å, flags = 0x%x"
-#: libcore/asobj/AsBroadcaster.cpp:282 libcore/asobj/AsBroadcaster.cpp:327
-#: libcore/asobj/AsBroadcaster.cpp:393
-#, c-format
-msgid "%p.addListener(%s): this object has no _listeners member"
-msgstr ""
+#: libcore/swf/PlaceObject2Tag.cpp:256
+msgid "Unexpected end of tag while parsing PlaceObject tag events"
+msgstr "è§£æPlaceObjectæ ç¾äºä»¶æ¶æå¤çæ ç¾ç»æ"
-#: libcore/asobj/AsBroadcaster.cpp:293 libcore/asobj/AsBroadcaster.cpp:338
-#: libcore/asobj/AsBroadcaster.cpp:404
+#: libcore/swf/PlaceObject2Tag.cpp:312
#, c-format
-msgid "%p.addListener(%s): this object's _listener isn't an object: %s"
-msgstr ""
+msgid " PLACEOBJECT2: depth = %d (%d)"
+msgstr "PLACEOBJECT2: depth = %d (%d)"
-#: libcore/asobj/AsBroadcaster.cpp:415
+#: libcore/swf/PlaceObject2Tag.cpp:314 libcore/swf/PlaceObject2Tag.cpp:427
#, c-format
-msgid "%p.broadcastMessage() needs an argument"
-msgstr ""
+msgid " char id = %d"
+msgstr "å符 id = %d"
-#: libcore/asobj/TextFormat_as.cpp:406
+#: libcore/swf/PlaceObject2Tag.cpp:316 libcore/swf/PlaceObject2Tag.cpp:428
#, c-format
-msgid "Too many args (%d) passed to TextFormat"
-msgstr ""
+msgid " SWFMatrix: %s"
+msgstr "SWFMatrix: %s"
-#: libcore/asobj/TextFormat_as.cpp:483
-msgid "Getter for textformat_tabStops"
-msgstr ""
+#: libcore/swf/PlaceObject2Tag.cpp:321 libcore/swf/PlaceObject2Tag.cpp:430
+#, c-format
+msgid " ratio: %d"
+msgstr "æ¯æ°: %d"
-#: libcore/asobj/TextFormat_as.cpp:562
-msgid "TextFormat.getTextExtent requires at least one argument"
-msgstr ""
+#: libcore/swf/PlaceObject2Tag.cpp:322 libcore/swf/PlaceObject2Tag.cpp:431
+#, c-format
+msgid " name = %s"
+msgstr "åç§° = %s"
-#: libcore/asobj/TextFormat_as.cpp:726
+#: libcore/swf/PlaceObject2Tag.cpp:324 libcore/swf/PlaceObject2Tag.cpp:433
#, c-format
-msgid "Uknown alignment value: %d, take as left"
-msgstr ""
+msgid " clip_depth = %d (%d)"
+msgstr "clip_depth = %d (%d)"
-#: libcore/asobj/TextFormat_as.cpp:741
+#: libcore/swf/PlaceObject2Tag.cpp:327 libcore/swf/PlaceObject2Tag.cpp:436
#, c-format
-msgid "Unknown display value: %d "
-msgstr ""
+msgid " m_place_type: %d"
+msgstr "m_place_type: %d"
-#: libcore/asobj/Color_as.cpp:153
-msgid "Color.setRGB() : missing argument"
-msgstr ""
+#: libcore/swf/PlaceObject2Tag.cpp:425
+#, c-format
+msgid " PLACEOBJECT3: depth = %d (%d)"
+msgstr "PLACEOBJECT3: depth = %d (%d)"
-#: libcore/asobj/Color_as.cpp:186
-msgid "Color.setTransform() : missing argument"
-msgstr ""
+#: libcore/swf/PlaceObject2Tag.cpp:429
+#, c-format
+msgid " SWFCxForm: %d"
+msgstr "SWFCxForm: %d"
-#: libcore/asobj/Color_as.cpp:196
+#: libcore/swf/PlaceObject2Tag.cpp:432
#, c-format
-msgid "Color.setTransform(%s) : first argument doesn't cast to an object"
-msgstr ""
+msgid " class name = %s"
+msgstr "ç±»å = %s"
-#: libcore/asobj/LocalConnection_as.cpp:279
-msgid "Attempting to write to disabled LocalConnection!"
-msgstr ""
+#: libcore/swf/PlaceObject2Tag.cpp:435
+msgid " bitmapCaching enabled"
+msgstr "å¯ç¨ bitmapCaching"
-#: libcore/asobj/LocalConnection_as.cpp:288
-msgid "Failed to attach shared memory segment"
-msgstr ""
+#: libcore/swf/TextRecord.cpp:52
+msgid "end text records"
+msgstr "ç»æææ¬è®°å½"
-#: libcore/asobj/LocalConnection_as.cpp:296
-msgid "Failed to get shm lock"
-msgstr ""
+#: libcore/swf/TextRecord.cpp:78
+#, c-format
+msgid " has_font: font id = %d (%p)"
+msgstr "has_font: åä½ id = %d (%p)"
-#: libcore/asobj/LocalConnection_as.cpp:332
-msgid "Invalid connection name data"
-msgstr ""
+#: libcore/swf/TextRecord.cpp:90
+msgid " hasColor"
+msgstr "hasColor"
-#: libcore/asobj/LocalConnection_as.cpp:431
-msgid "Failed to get lock on shared memory! Will not remove listener"
-msgstr ""
+#: libcore/swf/TextRecord.cpp:99
+#, c-format
+msgid " xOffset = %g"
+msgstr "xOffset = %g"
-#: libcore/asobj/LocalConnection_as.cpp:461
-msgid "Failed to open shared memory segment"
-msgstr ""
+#: libcore/swf/TextRecord.cpp:108
+#, c-format
+msgid " yOffset = %g"
+msgstr "yOffset = %g"
-#: libcore/asobj/LocalConnection_as.cpp:534
-msgid "LocalConnection.connect() expects exactly 1 argument"
-msgstr ""
+#: libcore/swf/TextRecord.cpp:117
+#, c-format
+msgid " textHeight = %g"
+msgstr "textHeight = %g"
-#: libcore/asobj/LocalConnection_as.cpp:542
-msgid "LocalConnection.connect(): first argument must be a string"
-msgstr ""
-
-#: libcore/asobj/LocalConnection_as.cpp:587
-#: libcore/asobj/LocalConnection_as.cpp:599
-#: libcore/asobj/LocalConnection_as.cpp:612
+#: libcore/swf/TextRecord.cpp:126
#, c-format
-msgid "LocalConnection.send(%s): requires at least 2 arguments"
-msgstr ""
-
-#: libcore/asobj/LocalConnection_as.cpp:783
-msgid "No space for listener in shared memory!"
-msgstr ""
+msgid " GlyphEntries: count = %d"
+msgstr "GlyphEntries: count = %d"
-#: libcore/asobj/LocalConnection_as.cpp:844
+#: libcore/swf/TextRecord.cpp:138
#, c-format
-msgid "Invalid domain %s"
-msgstr ""
+msgid " glyph%d: index=%d, advance=%g"
+msgstr "glyph%d: index=%d, advance=%g"
-#: libcore/asobj/LocalConnection_as.cpp:851
+#: libcore/swf/DefineFontAlignZonesTag.cpp:52
#, c-format
-msgid "Invalid function name %s"
-msgstr ""
-
-#: libcore/asobj/LocalConnection_as.cpp:877
-msgid "Fewer AMF fields than expected."
-msgstr ""
-
-#: libcore/asobj/Microphone_as.cpp:252
-msgid "No MediaHandler exists! Cannot create a Microphone object"
-msgstr ""
+msgid "DefineFontAlignZones tag references an undefined font %d"
+msgstr "DefineFontAlignZones æ è®°å¼ç¨äºä¸ä¸ªæªå®ä¹çåä½ %d"
-#: libcore/asobj/Microphone_as.cpp:284
-msgid "Microphone.gain(): wrong number of parameters passed"
-msgstr ""
+#: libcore/swf/DefineFontAlignZonesTag.cpp:71
+#, c-format
+msgid "DefineFontAlignZones: font=%d, flags=%d, table int: %s"
+msgstr "DefineFontAlignZones: font=%d, flags=%d, table int: %s"
-#: libcore/asobj/Microphone_as.cpp:300
-msgid "Microphone.setRate: wrong number of parameters passed"
-msgstr ""
+#: libcore/swf/DefineFontAlignZonesTag.cpp:108
+msgid "DefineFontAlignZoneTag"
+msgstr "DefineFontAlignZoneTag"
-#: libcore/asobj/Microphone_as.cpp:313
-msgid "Microphone::activityLevel only has default value (-1)"
-msgstr ""
+#: libcore/swf/tag_loaders.cpp:83
+msgid "anchor-labeled frame not supported"
+msgstr "䏿¯æéæ è®°ç帧"
-#: libcore/asobj/Microphone_as.cpp:318
-msgid "Attempt to set activity property of Microphone"
-msgstr ""
+#: libcore/swf/tag_loaders.cpp:87
+#, c-format
+msgid "frame_label_loader end position %d, read up to %d"
+msgstr "frame_label_loader ç»æä½ç½® %dï¼æå¤è¯»åå° %d"
-#: libcore/asobj/Microphone_as.cpp:353
-msgid "Microphone::muted is always false (always allows access)"
-msgstr ""
+#: libcore/swf/tag_loaders.cpp:107
+#, c-format
+msgid " sprite: char id = %d"
+msgstr "ç²¾çµï¼å符id = %d"
-#: libcore/asobj/Microphone_as.cpp:413
-msgid "Microphone::silenceTimeout can be set, but is unimplemented"
-msgstr ""
+#: libcore/swf/tag_loaders.cpp:118
+msgid ""
+"Nested DEFINESPRITE tags. Will add to top-level DisplayObjects dictionary."
+msgstr "åµå¥DEFINESPRITEæ ç¾ãå°å å
¥å°é¡¶å±çDisplayObjectåå
¸ä¸ã"
-#: libcore/asobj/Microphone_as.cpp:436
+#: libcore/swf/tag_loaders.cpp:128
#, c-format
-msgid "%s: Too many arguments"
-msgstr ""
+msgid "Sprite %d advertise no frames"
+msgstr "ç²¾çµ%dçå¹¿åæ²¡æå¸§ã"
-#: libcore/asobj/LoadableObject.cpp:176
-msgid "XML.addRequestHeader: XML._customHeaders is not an object"
-msgstr ""
+#: libcore/swf/tag_loaders.cpp:169
+#, c-format
+msgid "DEFINESOUNDLOADER: sound sample rate %d (expected 0 to %u)"
+msgstr "DEFINESOUNDLOADER: 声é³éæ ·ç %d (é¢è®¡0è³ %u)"
-#: libcore/asobj/LoadableObject.cpp:193
-msgid "XML.addRequestHeader requires at least one argument"
-msgstr ""
+#: libcore/swf/tag_loaders.cpp:189
+#, c-format
+msgid ""
+"define sound: ch=%d, format=%s, rate=%d, 16=%d, stereo=%d, ct=%d, delay=%d"
+msgstr "å®ä¹å£°é³ï¼ch=%d, format=%s, rate=%d, 16=%d, stereo=%d, ct=%d, delay=%d"
-#: libcore/asobj/LoadableObject.cpp:206
-msgid "XML.addRequestHeader: single argument is not an array"
-msgstr ""
+#: libcore/swf/tag_loaders.cpp:217
+msgid "Tag boundary reported past end of SWFStream!"
+msgstr "æ ç¾è¾¹çè¶
è¿SWFStreamçç»å°¾ï¼"
-#: libcore/asobj/LoadableObject.cpp:222
+#: libcore/swf/tag_loaders.cpp:237
#, c-format
-msgid "XML.addRequestHeader(%s): arguments after the second will be discarded"
+msgid ""
+"There is no sound handler currently active, so DisplayObject with id %d will "
+"not be added to the dictionary"
msgstr ""
+"å½åæ²¡ææ´»å¨ç声é³å¤çç¨åºï¼æä»¥id为 %d ç DisplayObject å°ä¸ä¼è¢«æ·»å å°åå
¸ä¸"
-#: libcore/asobj/LoadableObject.cpp:237
+#: libcore/swf/tag_loaders.cpp:271
#, c-format
-msgid "XML.addRequestHeader(%s): both arguments must be a string"
-msgstr ""
-
-#: libcore/asobj/LoadableObject.cpp:304
-msgid "sendAndLoad() requires at least two arguments"
-msgstr ""
-
-#: libcore/asobj/LoadableObject.cpp:312
-msgid "sendAndLoad(): invalid empty URL"
-msgstr ""
+msgid "File attributes: metadata=%s network=%s"
+msgstr "æä»¶å±æ§: metadata=%s network=%s"
-#: libcore/asobj/LoadableObject.cpp:319
-msgid "sendAndLoad(): invalid target (must be an XML or LoadVars object)"
-msgstr ""
+#: libcore/swf/tag_loaders.cpp:272 libcore/swf/tag_loaders.cpp:273
+msgid "true"
+msgstr "ç"
-#: libcore/asobj/LoadableObject.cpp:397
-#, c-format
-msgid "Loading from URL: '%s'"
-msgstr ""
+#: libcore/swf/tag_loaders.cpp:272 libcore/swf/tag_loaders.cpp:273
+msgid "false"
+msgstr "å"
-#: libcore/asobj/LoadableObject.cpp:417
-msgid "load() requires at least one argument"
+#: libcore/swf/tag_loaders.cpp:277
+msgid ""
+"FileAttributes tag in the SWF requests that network access is not granted to "
+"this movie (or application?) when loaded from the filesystem. Anyway Gnash "
+"won't care; use white/black listing in your .gnashrc instead"
msgstr ""
+"ä»æä»¶ç³»ç»å è½½æ¶ï¼SWF䏿件屿§æ ç¾çç½ç»è®¿é®è¯·æ±æ²¡æè¢«æäºè¿ä¸ªçµå½±ï¼æåºç¨ç¨"
+"åºï¼ãGnashä¸ä¼å¨æ; èä¼ä½¿ç¨ .gnashrcä¸çç½/é»åå"
-#: libcore/asobj/LoadableObject.cpp:426
-msgid "load(): invalid empty URL"
-msgstr ""
+#: libcore/swf/tag_loaders.cpp:285
+msgid ""
+"This SWF file requires AVM2: there will be no ActionScript interpretation"
+msgstr "该SWFæä»¶éè¦AVM2ï¼ä¸ä¼æä»»ä½çActionScriptè§£éå¨"
-#: libcore/DisplayObjectContainer.cpp:75
-msgid "Children"
+#: libcore/swf/tag_loaders.cpp:310
+#, c-format
+msgid ""
+" RDF metadata (information only): [[\n"
+"%s\n"
+"]]"
msgstr ""
+"RDF å
æ°æ® (åªæä¿¡æ¯): [[\n"
+"%s\n"
+"]]"
-#: libcore/DisplayList.cpp:305
+#: libcore/swf/tag_loaders.cpp:326
#, c-format
-msgid "moveDisplayObject() -- can't find object at depth %d"
-msgstr ""
+msgid "Descriptive metadata from movie %s: %s"
+msgstr "çµå½± %sçæè¿°å
æ°æ®: %s"
-#: libcore/DisplayList.cpp:312
-msgid "Request to move an unloaded DisplayObject"
-msgstr ""
+#: libcore/swf/tag_loaders.cpp:388
+#, c-format
+msgid " reflex = \"%c%c%c\""
+msgstr "åå° = \"%c%c%c\""
-#: libcore/DisplayList.cpp:380
+#: libcore/swf/SoundStreamHeadTag.cpp:78
#, c-format
-msgid "%s.swapDepth(%d) : ignored call with target depth less then %d"
-msgstr ""
+msgid "SOUNDSTREAMHEAD: stream sample rate %d (expected 0 to %u)"
+msgstr "SOUNDSTREAMHEAD: æµéæ ·ç %d (é¢è®¡ä¸º 0 å° %u)"
-#: libcore/DisplayList.cpp:404
+#: libcore/swf/SoundStreamHeadTag.cpp:88
+#, c-format
msgid ""
-"First argument to DisplayList::swapDepth() is NOT a DisplayObject in the "
-"list. Call ignored."
+"Different stream/playback sound rate (%d/%d). This seems common in SWF "
+"files, so we'll warn only once."
msgstr ""
+"ä¸åçæµ/忾声é³é¢ç (%d/%d)ãè¿ä¼¼ä¹å¨SWFæä»¶ä¸æ¯æ®éçï¼æä»¥æä»¬åªè¦åä¸"
+"次ã"
-#: libcore/DisplayList.cpp:875
+#: libcore/swf/SoundStreamHeadTag.cpp:95
#, c-format
msgid ""
-"mergeDisplayList: DisplayObject %s (%s at depth %d [%d]) about to be "
-"discarded in given display list is not marked as unloaded and not found in "
-"the merged current displaylist"
-msgstr ""
-
-#: libcore/Geometry.cpp:198
-msgid "Collision detection for unidirectionally scaled strokes"
+"Different stream/playback sample size (%d/%d). This seems common in SWF "
+"files, so we'll warn only once."
msgstr ""
+"ä¸åçæµ/åæ¾éæ ·å¤§å° (%d/%d)ãè¿ä¼¼ä¹å¨SWFæä»¶ä¸æ¯æ®éçï¼æä»¥æä»¬åªè¦åä¸"
+"次ã"
-#: libcore/TextField.cpp:234
+#: libcore/swf/SoundStreamHeadTag.cpp:101
#, c-format
-msgid "FIXME: attempt to remove a TextField being a child of a %s"
+msgid ""
+"Different stream/playback channels (%s/%s). This seems common in SWF files, "
+"so we'll warn only once."
msgstr ""
+"ä¸åçæµ/åæ¾é¢é(%s/%s)ãè¿ä¼¼ä¹å¨SWFæä»¶ä¸æ¯æ®éçï¼æä»¥æä»¬åªè¦å䏿¬¡ã"
-#: libcore/TextField.cpp:413 libcore/TextField.cpp:423
-#: libcore/TextField.cpp:441 libcore/TextField.cpp:456
-msgid "invalid restrict string"
-msgstr ""
+#: libcore/swf/SoundStreamHeadTag.cpp:121
+msgid ""
+"No samples advertised for sound stream, pretty common so will warn only once"
+msgstr "声鳿µæ²¡ææ ·æ¬å¹¿åï¼å¾å¸¸è§æä»¥åªè¦å䏿¬¡"
-#: libcore/TextField.cpp:965
+#: libcore/swf/SoundStreamHeadTag.cpp:148
#, c-format
msgid ""
-"TextField: missing glyph for space char (needed for TAB). Make sure "
-"DisplayObject shapes for font %s are being exported into your SWF file."
-msgstr ""
+"sound stream head: format=%s, rate=%d, 16=%d, stereo=%d, ct=%d, latency=%d"
+msgstr "声鳿µå¤´é¨: æ ¼å¼=%s, é¢ç=%d, 16=%d, ç«ä½å£°=%d, çµæµ=%d, å»¶è¿=%d"
-#: libcore/TextField.cpp:1044
-msgid "No font for TextField!"
-msgstr ""
+#: libcore/swf/DefineBitsTag.cpp:154
+msgid " jpeg_tables_loader"
+msgstr "jpeg_tables_loader"
-#: libcore/TextField.cpp:1444
+#: libcore/swf/DefineBitsTag.cpp:165
#, c-format
-msgid "Unexpected value '%s' in TextField font color attribute"
-msgstr ""
+msgid "No bytes to read in JPEGTABLES tag at offset %d"
+msgstr "å¨JPEGTABLES æ ç¾ä¸åç§» %d 夿²¡æè¯»åå°åè"
-#: libcore/TextField.cpp:1459
-msgid "Expected a font name in FACE attribute."
-msgstr ""
+#: libcore/swf/DefineBitsTag.cpp:206
+#, c-format
+msgid "DEFINEBITS: Duplicate id (%d) for bitmap DisplayObject - discarding it"
+msgstr "DEFINEBITSï¼ä½å¾DisplayObjectæéå¤çID (%d) - 丢å¼å®"
-#: libcore/TextField.cpp:1513
-msgid "<img> HTML tag in TextField"
-msgstr ""
+#: libcore/swf/DefineBitsTag.cpp:235
+msgid "Failed to parse bitmap for character %1%"
+msgstr "æ æ³è§£æå符%1%çä½å¾"
-#: libcore/TextField.cpp:1551
-msgid "<span> HTML tag in TextField"
-msgstr ""
+#: libcore/swf/DefineBitsTag.cpp:243
+msgid "No renderer, not adding bitmap %1%"
+msgstr "æ²¡ææ¸²æï¼æ²¡ææ·»å ä½å¾ %1%"
-#: libcore/TextField.cpp:1623
-msgid "HTML <textformat> tag tabstops attribute"
-msgstr ""
+#: libcore/swf/DefineBitsTag.cpp:250
+msgid "Adding bitmap id %1%"
+msgstr "æ·»å ä½å¾ id %1%"
-#: libcore/TextField.cpp:1706
-#, c-format
+#: libcore/swf/DefineBitsTag.cpp:269
msgid ""
-"TextField: missing embedded glyph for char %d. Make sure DisplayObject "
-"shapes for font %s are being exported into your SWF file"
-msgstr ""
+"DEFINEBITS: No jpeg loader registered in movie definition - discarding bitmap"
+msgstr "DEFINEBITSï¼çµå½±å®ä¹ä¸æ²¡ææ³¨åJPEGå è½½å¨ - 丢å¼ä½å¾"
-#: libcore/TextField.cpp:1714
-#, c-format
-msgid ""
-"TextField: missing device glyph for char %d. Maybe you don't have font '%s' "
-"installed in your system."
-msgstr ""
+#: libcore/swf/DefineBitsTag.cpp:368
+msgid "gnash is not linked to zlib -- can't load jpeg3 image data"
+msgstr "gnashæªé¾æ¥å°zlib - æ æ³å è½½jpeg3å¾åæ°æ®"
-#: libcore/TextField.cpp:1905
+#: libcore/swf/DefineBitsTag.cpp:413
#, c-format
-msgid ""
-"Current environment has no target, can't bind VariableName (%s) associated "
-"to text field. Gnash will try to register again on next access."
-msgstr ""
+msgid " defbitslossless2: tag = %d, fmt = %d, w = %d, h = %d"
+msgstr "defbitslossless2: tag = %d, fmt = %d, w = %d, h = %d"
-#: libcore/TextField.cpp:1931
-#, c-format
-msgid ""
-"VariableName associated to text field refers to an unknown target (%s). It "
-"is possible that the DisplayObject will be instantiated later in the SWF "
-"stream. Gnash will try to register again on next access."
-msgstr ""
+#: libcore/swf/DefineBitsTag.cpp:420
+msgid "Bitmap has a height or width of 0"
+msgstr "ä½å¾çé«åº¦æå®½åº¦ä¸º0"
-#: libcore/TextField.cpp:2024 libcore/TextField.cpp:2058
-#: libcore/TextField.cpp:2149
-msgid "invalid HTML tag"
-msgstr ""
+#: libcore/swf/DefineBitsTag.cpp:426
+msgid "gnash is not linked to zlib -- can't load zipped image data"
+msgstr "æªé¾æ¥gnashå°zlib - æ æ³å è½½å缩çå¾åæ°æ®"
-#: libcore/TextField.cpp:2035 libcore/TextField.cpp:2071
-#: libcore/TextField.cpp:2102
-msgid "found NULL character in htmlText"
-msgstr ""
+#: libcore/swf/DefineBitsTag.cpp:452
+msgid "Will not allocate %1%x%2% image in DefineBitsLossless tag"
+msgstr "å°ä¸ä¼å¨ DefineBitsLossless æ ç¾ä¸åé
%1%x%2% å¾å"
-#: libcore/TextField.cpp:2075
-msgid "malformed HTML tag, invalid attribute name"
-msgstr ""
+#: libcore/swf/DefineBitsTag.cpp:477
+msgid "Unknown bitmap format. Ignoring"
+msgstr "æªç¥çä½å¾æ ¼å¼ã忽ç¥"
-#: libcore/TextField.cpp:2125
-msgid "malformed HTML tag, invalid attribute value"
-msgstr ""
+#: libcore/swf/DefineBitsTag.cpp:591
+#, c-format
+msgid "inflateWrapper() inflateInit() returned %d (%s)"
+msgstr "inflateWrapper() inflateInit() è¿å %d (%s)"
-#: libcore/TextField.cpp:2158
-msgid "I declare this a HTML syntax error"
-msgstr ""
+#: libcore/swf/DefineBitsTag.cpp:611
+msgid "inflateWrapper(): no end of zstream found within swf tag boundaries"
+msgstr "inflateWrapper(): 没æå¨SWFæ ç¾ççéå
æ¾å°zstreamç»æ"
-#: libcore/SWFMovie.cpp:54
+#: libcore/swf/DefineBitsTag.cpp:635
#, c-format
-msgid "Frame %d never loaded. Total frames: %d"
-msgstr ""
+msgid "inflateWrapper() inflate() returned %d (%s)"
+msgstr "inflateWrapper() inflate() è¿å %d (%s)"
-#: libcore/SWFMovie.cpp:77
+#: libcore/swf/DefineBitsTag.cpp:644
#, c-format
-msgid "Frame %d never loaded. Total frames: %d."
-msgstr ""
+msgid "inflateWrapper() inflateEnd() return %d (%s)"
+msgstr "inflateWrapper() inflateEnd() è¿å %d (%s)"
-#: libcore/SWFMovie.cpp:109
+#: libcore/as_function.cpp:94
#, c-format
-msgid ""
-"Attempt to perform initialized for a character %s that does not exist "
-"(either not exported or not defined)"
-msgstr ""
+msgid "Native function called as constructor threw exception: %s"
+msgstr "åç彿°è¢«ä½ä¸ºæé 彿°è°ç¨æ¶åçå¼å¸¸: %s"
-#: libcore/LineStyle.cpp:186
-msgid ""
-"UNTESTED: Do not know how to interpolate line styles with different vertical "
-"thickness scaling"
-msgstr ""
+#: libcore/FreetypeGlyphsProvider.cpp:256
+#, c-format
+msgid "Can't init FreeType! Error = %d"
+msgstr "æ æ³åå§å FreeTypeï¼é误 = %d"
-#: libcore/LineStyle.cpp:191
-msgid ""
-"UNTESTED: Do not know how to interpolate line styles with different "
-"horizontal thickness scaling"
-msgstr ""
+#: libcore/FreetypeGlyphsProvider.cpp:268
+#, c-format
+msgid "Can't close FreeType! Error = %d"
+msgstr "æ æ³å
³é FreeTypeï¼é误 = %d"
-#: libcore/DisplayObject.cpp:121
+#: libcore/FreetypeGlyphsProvider.cpp:282
#, c-format
-msgid "loadMovie against a %s DisplayObject"
-msgstr ""
+msgid "Failed to find fonts directory, using hard-coded font filename \"%s\""
+msgstr "æ æ³æ¾å°åä½ç®å½ï¼ä½¿ç¨é¢å®çå使件å \"%s\""
-#: libcore/DisplayObject.cpp:258
-msgid "blendMode"
-msgstr ""
+#: libcore/FreetypeGlyphsProvider.cpp:295
+#, c-format
+msgid "Can't init fontconfig library, using hard-coded font filename \"%s\""
+msgstr "æ æ³åå§å fontconfig åºï¼ä½¿ç¨é¢å®çå使件å \"%s\""
-#: libcore/DisplayObject.cpp:368
+#: libcore/FreetypeGlyphsProvider.cpp:357
#, c-format
-msgid "Setting _height=%g of DisplayObject %s (%s)"
-msgstr ""
+msgid "No device font matches the name '%s', using hard-coded font filename"
+msgstr "没æå¹é
åç§°'ï¼
s'ç设å¤åä½ï¼ä½¿ç¨é¢å®çå使件å"
-#: libcore/DisplayObject.cpp:796
-msgid "yes"
+#: libcore/FreetypeGlyphsProvider.cpp:362
+msgid ""
+"Font filename matching not implemented (no fontconfig support built-in), "
+"using hard-coded font filename"
msgstr ""
+"没æå®ç°å使件åå¹é
ï¼æ²¡æå
ç½®fontconfigçæ¯æï¼ï¼ä½¿ç¨é¢å®çå使件å"
-#: libcore/DisplayObject.cpp:797
-msgid "no"
-msgstr ""
+#: libcore/FreetypeGlyphsProvider.cpp:395
+msgid "Freetype not supported"
+msgstr "䏿¯æ Freetype"
-#: libcore/DisplayObject.cpp:803
-msgid "Depth"
-msgstr ""
+#: libcore/FreetypeGlyphsProvider.cpp:436
+#, c-format
+msgid "Can't find font file for font '%s'"
+msgstr "æ æ³ä¸ºåä½ '%s' æ¾å°å使件"
-#: libcore/DisplayObject.cpp:809
-msgid "Ratio"
-msgstr ""
+#: libcore/FreetypeGlyphsProvider.cpp:449
+#, c-format
+msgid "Font file '%s' has bad format"
+msgstr "å使件 '%s' æ ¼å¼é误"
-#: libcore/DisplayObject.cpp:819
-msgid "Clipping depth"
-msgstr ""
+#: libcore/FreetypeGlyphsProvider.cpp:458
+#, c-format
+msgid "Some error opening font '%s'"
+msgstr "æå¼åä½ '%s' é误"
-#: libcore/DisplayObject.cpp:824
-msgid "Dimensions"
-msgstr ""
+#: libcore/FreetypeGlyphsProvider.cpp:492
+#, c-format
+msgid "Error loading freetype outline glyph for char '%c' (error: %d)"
+msgstr "为å符 '%c' è£
è½½freetypeè½®å»åå½¢åºéï¼é误ï¼%dï¼"
-#: libcore/DisplayObject.cpp:826
-msgid "Dynamic"
+#: libcore/FreetypeGlyphsProvider.cpp:508
+#, c-format
+msgid ""
+"FT_Load_Char() returned a glyph format != FT_GLYPH_FORMAT_OUTLINE (%c%c%c%c)"
msgstr ""
+"FT_Load_Char() è¿åäºä¸ä¸ªåå format != FT_GLYPH_FORMAT_OUTLINE (%c%c%c%c)"
-#: libcore/DisplayObject.cpp:827
-msgid "Mask"
-msgstr ""
+#: libcore/FreetypeGlyphsProvider.cpp:563
+msgid "Could not release FT face resources"
+msgstr "æ æ³éæ¾ FT åä½èµæº"
-#: libcore/DisplayObject.cpp:828
-msgid "Destroyed"
+#: libcore/MovieFactory.cpp:79
+msgid ""
+"Requested to keep from completely loading a movie, but the movie in question "
+"is an image, for which we don't yet have the concept of a 'loading thread'"
msgstr ""
+"è¦æ±é¿å
å®å
¨å 载影çï¼ä½é®é¢ä¸å½±çæ¯ä¸ä¸ªå¾åï¼æä»¬è¿æ²¡æä¸ä¸ª'å 载线ç¨'çæ¦å¿µ"
-#: libcore/DisplayObject.cpp:830
-msgid "Unloaded"
-msgstr ""
+#: libcore/MovieFactory.cpp:94
+msgid "FLV can't be loaded directly as a movie"
+msgstr "FLV ä¸è½ä½ä¸ºä¸ä¸ªå½±çè¢«ç´æ¥å è½½"
-#: libcore/DisplayObject.cpp:834
-msgid "Blend mode"
-msgstr ""
+#: libcore/MovieFactory.cpp:98
+msgid "Unknown file type"
+msgstr "æªç¥æä»¶ç±»å"
-#: libcore/DisplayObject.cpp:837
-msgid "Invalidated"
-msgstr ""
+#: libcore/MovieFactory.cpp:133
+#, c-format
+msgid "Couldn't load library movie '%s'"
+msgstr "ä¸è½å è½½åºä¸å½±ç '%s'"
-#: libcore/DisplayObject.cpp:839
-msgid "Child invalidated"
-msgstr ""
+#: libcore/MovieFactory.cpp:173
+msgid "Can't read file header"
+msgstr "æ æ³è¯»åæä»¶å¤´é¨"
-#: libcore/DisplayObject.cpp:860 libcore/DisplayObject.cpp:1564
-#, c-format
-msgid "Attempt to set property to %s, refused"
-msgstr ""
+#: libcore/MovieFactory.cpp:212
+msgid "Can't read 3 bytes after an MZ (.exe) header"
+msgstr "æ æ³è¯»åä¸ä¸ªMZ(.exe)头é¨ä¹åç3个åè"
-#: libcore/DisplayObject.cpp:1095
-#, c-format
-msgid "Attempt to set %s._y to %s (evaluating to number %g) refused"
-msgstr ""
+#: libcore/MovieFactory.cpp:222
+#, fuzzy
+msgid "Could not find SWF inside an .exe file"
+msgstr "æ æ³æ¾å°å¨ä¸ä¸ªexeæä»¶å
é¨çSWF"
+
+#: libcore/MovieFactory.cpp:231
+#, fuzzy, c-format
+msgid "unknown file type, buffer is %c%c%c"
+msgstr "æªç¥æä»¶ç±»å, ç¼å²åºæ¯ %c%c%c"
-#: libcore/DisplayObject.cpp:1126
+#: libcore/MovieFactory.cpp:273
#, c-format
-msgid "Attempt to set %s._x to %s (evaluating to number %g) refused"
-msgstr ""
+msgid "Can't read image file from %s"
+msgstr "æ æ³ä» %s 读åå¾åæä»¶"
-#: libcore/DisplayObject.cpp:1155
+#: libcore/MovieFactory.cpp:283
#, c-format
-msgid "Attempt to set %s._xscale to %s (evaluating to number %g) refused"
-msgstr ""
+msgid "Parsing error: %s"
+msgstr "è§£æé误: %s"
-#: libcore/DisplayObject.cpp:1181
+#: libcore/MovieFactory.cpp:309
#, c-format
-msgid "Attempt to set %s._yscale to %s (evaluating to number %g) refused"
-msgstr ""
+msgid "failed to open '%s'; can't create movie"
+msgstr "æ æ³æå¼ '%s'; ä¸è½å建影ç"
-#: libcore/DisplayObject.cpp:1217
+#: libcore/MovieFactory.cpp:314
#, c-format
-msgid "Attempt to set %s._visible to %s (evaluating to number %g) refused"
-msgstr ""
+msgid "streamProvider opener can't open '%s'"
+msgstr "streamProvider æå¼ç¨åºæ æ³æå¼ '%s'"
-#: libcore/DisplayObject.cpp:1246
+#: libcore/as_environment.cpp:182
#, c-format
-msgid "Attempt to set %s._alpha to %s (evaluating to number %g) refused"
-msgstr ""
+msgid "invalid path '%s' (p=next_slash=%s)"
+msgstr "ä¸åæ³è·¯å¾ '%s' (p=next_slash=%s)"
-#: libcore/DisplayObject.cpp:1312
+#: libcore/as_environment.cpp:193
#, c-format
-msgid "Attempt to set %s._rotation to %s (evaluating to number %g) refused"
-msgstr ""
+msgid "invalid path '%s' (dot not allowed after having seen a slash)"
+msgstr "ä¸åæ³è·¯å¾ '%s' (ä¸å
许æè¶
è¿ä¸ä¸ªæçº¿)"
-#: libcore/DisplayObject.cpp:1352
-msgid "_soundbuftime setting"
-msgstr ""
+#: libcore/as_environment.cpp:332
+#, c-format
+msgid "-------------- %s = %s"
+msgstr "-------------- %s = %s"
-#: libcore/DisplayObject.cpp:1376
+#: libcore/as_environment.cpp:346
#, c-format
-msgid "Setting _width=%g of DisplayObject %s (%s)"
-msgstr ""
+msgid "Path target '%s' not found while setting %s=%s"
+msgstr "è·¯å¾ç®æ '%s' æªæ¾å°ï¼å¨è®¾ç½® %s=%s æ¶"
-#: libcore/DisplayObject.cpp:1386 libcore/DisplayObject.cpp:1404
-msgid "_focusrect"
-msgstr ""
+#: libcore/as_environment.cpp:445
+#, c-format
+msgid "Won't set invalid raw variable name: %s"
+msgstr "å°ä¸ä¼è®¾ç½®ä¸åæ³çåå§åéçåç§°: %s"
-#: libcore/StaticText.cpp:53
-msgid "StaticText::pointInShape"
+#: libcore/as_environment.cpp:474
+#, c-format
+msgid ""
+"as_environment::setVariableRaw(%s, %s): neither current target nor original "
+"target are defined, can't set the variable"
msgstr ""
+"as_environment::setVariableRaw(%s, %s): å½åç®æ ååå§ç®æ 齿ªå®ä¹,ä¸è½è®¾ç½®è¯¥"
+"åé"
-#: libcore/AMFConverter.cpp:98
-msgid "Problems serializing an object's member"
-msgstr ""
+#: libcore/as_environment.cpp:486
+#, c-format
+msgid "Won't get invalid raw variable name: %s"
+msgstr "å°ä¸è½å¾å°ä¸åæ³çåå§åéçåç§°: %s"
-#: libcore/AMFConverter.cpp:212
+#: libcore/as_environment.cpp:567
#, c-format
-msgid "Problems serializing strict array member %d=%s"
-msgstr ""
+msgid "reference to non-existent variable '%s'"
+msgstr "åºç¨å°ä¸åå¨çåé '%s'"
-#: libcore/AMFConverter.cpp:242
-msgid "Could not serialize object"
-msgstr ""
+#: libcore/Geometry.cpp:187
+msgid "Collision detection for unidirectionally scaled strokes"
+msgstr "åå缩æ¾ç¬åçç¢°ææ£æµ"
-#: libcore/AMFConverter.cpp:319
+#: libcore/as_object.cpp:439
#, c-format
-msgid "Unknown AMF type %s! Cannot proceed"
-msgstr ""
+msgid "Caught exception: %s"
+msgstr "æè·å¼å¸¸: %s"
-#: libcore/AMFConverter.cpp:376
+#: libcore/as_object.cpp:627
#, c-format
-msgid "AMF parsing error: %s"
-msgstr ""
-
-#: libcore/AMFConverter.cpp:407
-msgid "Read past _end of buffer for strict array length"
-msgstr ""
-
-#: libcore/AMFConverter.cpp:425
-msgid "Unable to read array elements"
-msgstr ""
+msgid "Attempt to set read-only property '%s'"
+msgstr "è¯å¾è®¾ç½®åªè¯»å±æ§ '%s'"
-#: libcore/AMFConverter.cpp:442
-msgid "Read past _end of buffer for array length"
-msgstr ""
+#: libcore/as_object.cpp:639
+#, c-format
+msgid "%s: %s"
+msgstr "%s: %s"
-#: libcore/AMFConverter.cpp:468 libcore/AMFConverter.cpp:489
-msgid "MALFORMED AMF: premature _end of ECMA_ARRAY block"
-msgstr ""
+#: libcore/as_object.cpp:654
+#, c-format
+msgid "Unknown failure in setting property '%s' on object '%p'"
+msgstr "è®¾ç½®å±æ§'%s'ï¼å¯¹è±¡ '%p' åçæªç¥é误ã "
-#: libcore/AMFConverter.cpp:480
-msgid "MALFORMED AMF: empty member name not followed by OBJECT_END_AMF0 byte"
-msgstr ""
+#: libcore/as_object.cpp:683
+#, c-format
+msgid "Attempt to initialize read-only property '%s' on object '%p' twice"
+msgstr "è¯å¾ä¸¤æ¬¡åå§ååªè¯»å±æ§ '%s'ï¼å¯¹è±¡ '%p'"
-#: libcore/AMFConverter.cpp:504
-msgid "Unable to read array element"
-msgstr ""
+#: libcore/as_object.cpp:845
+msgid "Circular inheritance chain detected during isPrototypeOf call"
+msgstr "å¨isPrototypeOf è°ç¨ä¸æ£æµå°å¾ªç¯çç»§æ¿å
³ç³»ã"
-#: libcore/AMFConverter.cpp:528
-msgid "Could not read object property name"
-msgstr ""
+#: libcore/StaticText.cpp:53
+msgid "StaticText::pointInShape"
+msgstr "StaticText::pointInShape"
-#: libcore/AMFConverter.cpp:539
-msgid "AMF buffer terminated just before object _end byte. continuing anyway."
-msgstr ""
+#: libcore/vm/VM.cpp:222
+#, c-format
+msgid "-------------- global register[%d] = '%s'"
+msgstr "-------------- å
¨å±å¯åå¨[%d] = '%s'"
-#: libcore/AMFConverter.cpp:566
+#: libcore/vm/VM.cpp:250
#, c-format
-msgid "readAMF0: invalid reference to object %d (%d known objects)"
-msgstr ""
+msgid "Recursion limit reached (%u)"
+msgstr "è¾¾å°éå½ä¸é (%u)"
-#: libcore/AMFConverter.cpp:597
-msgid ""
-"Date type encoded timezone info %1%, even though this field should not be "
-"used."
-msgstr ""
+#: libcore/vm/CallStack.cpp:64
+#, c-format
+msgid "-------------- local register[%d] = '%s'"
+msgstr "-------------- æ¬å°å¯åå¨[%d] = '%s'"
#: libcore/vm/ASHandlers.cpp:435
#, c-format
msgid "Malformed action code: %s"
-msgstr ""
+msgstr "éè¯¯æ ¼å¼çå¨ä½ä»£ç ï¼%s"
#: libcore/vm/ASHandlers.cpp:450
#, c-format
msgid "%s: CHECKME: was broken"
-msgstr ""
+msgstr "%s: CHECKME: å·²æå"
#: libcore/vm/ASHandlers.cpp:595
#, c-format
msgid "GetUrl: target=%s URL=%s"
-msgstr ""
+msgstr "GetUrl: target=%s URL=%s"
#: libcore/vm/ASHandlers.cpp:615
#, c-format
msgid "ActionWaitForFrame (0x%X) tag length == %d (expected 3)"
-msgstr ""
+msgstr "ActionWaitForFrame (0x%X) æ ç¾é¿åº¦ == %d (é¢è®¡ä¸º3)"
#: libcore/vm/ASHandlers.cpp:629 libcore/vm/ASHandlers.cpp:1695
#, c-format
msgid "%s: environment target is null or not a MovieClip"
-msgstr ""
+msgstr "%s: ç¯å¢ç®æ 为空æä¸æ¯ä¸ä¸ª MovieClip"
#: libcore/vm/ASHandlers.cpp:637
#, c-format
msgid "ActionWaitForFrame(%d): target (%s) has only %d frames"
-msgstr ""
+msgstr "ActionWaitForFrame(%d): ç®æ (%s) åªæ %d 帧"
#: libcore/vm/ASHandlers.cpp:679
msgid "GotoLabel: environment target is null or not a MovieClip"
-msgstr ""
+msgstr "GotoLabel: ç¯å¢ç®æ 为空æä¸æ¯ä¸ä¸ª MovieClip"
#: libcore/vm/ASHandlers.cpp:876 libcore/vm/ASHandlers.cpp:1572
msgid "Negative size passed to ActionSubString, taking as whole length"
-msgstr ""
+msgstr "è´æ°å°ºå¯¸è¢«ä¼ å
¥å°ActionSubString, åæ´ä¸ªé¿åº¦çå¼"
#: libcore/vm/ASHandlers.cpp:893
msgid "Start is less then 1 in ActionSubString, setting to 1."
-msgstr ""
+msgstr "ActionSubStringä¸ Start å°äº1, 设置为1"
#: libcore/vm/ASHandlers.cpp:903
msgid ""
"Start goes beyond input string in ActionSubString, returning the empty "
"string."
-msgstr ""
+msgstr "ActionSubStringä¸ Start è¶
åºäºè¾å
¥çå符串, è¿å空å符串ã"
#: libcore/vm/ASHandlers.cpp:916
msgid ""
"start + size goes beyond input string in ActionSubString, adjusting size"
-msgstr ""
+msgstr "ActionSubStringä¸ start + size è¶
åºäºè¾å
¥çå符串, è¯·è°æ´size"
#: libcore/vm/ASHandlers.cpp:963
#, c-format
@@ -5531,138 +6067,140 @@ msgid ""
"Can't assign a sprite/DisplayObject to a variable in SWF%d. We'll return "
"undefined instead of %s."
msgstr ""
+"ä¸è½ä¸ºSWF%dä¸çä¸ä¸ªåéåé
ä¸ä¸ª sprite/DisplayObjectãæä»¬å°è¿åæªå®ä¹æ¥ä»£"
+"æ¿ã"
#: libcore/vm/ASHandlers.cpp:971
#, c-format
msgid "-- get var: %s=%s"
-msgstr ""
+msgstr "-- å¾å°åé: %s=%s"
#: libcore/vm/ASHandlers.cpp:984
#, c-format
msgid ""
"ActionSetVariable: %s=%s: variable name evaluates to invalid (empty) string"
-msgstr ""
+msgstr "ActionSetVariable: %s=%s: åéå计ç®ç»æä¸ºä¸åæ³çï¼ç©ºï¼å符串"
#: libcore/vm/ASHandlers.cpp:992
#, c-format
msgid "-- set var: %s = %s"
-msgstr ""
+msgstr "-- 设置åé: %s = %s"
#: libcore/vm/ASHandlers.cpp:1043
msgid ""
"ActionGetProperty(<empty>) called, but current target is not a DisplayObject"
-msgstr ""
+msgstr "ActionGetProperty(<空>) 被è°ç¨ï¼ä½å½åç®æ 䏿¯ä¸ä¸ª DisplayObject"
#: libcore/vm/ASHandlers.cpp:1062
#, c-format
msgid "Could not find GetProperty target (%s)"
-msgstr ""
+msgstr "æ æ³æ¾å° GetProperty ç®æ (%s)"
#: libcore/vm/ASHandlers.cpp:1087
#, c-format
msgid "ActionSetProperty: can't find target %s for setting property %s"
-msgstr ""
+msgstr "ActionSetProperty: æ æ³æ¾å°ç®æ %s è®¾ç½®å±æ§ %s"
#: libcore/vm/ASHandlers.cpp:1110
#, c-format
msgid "duplicateMovieClip: invalid depth %d passed; not duplicating"
-msgstr ""
+msgstr "duplicateMovieClip: ä¼ å
¥ä¸åæ³ç深度 %d; ä¸å¤å¶"
#: libcore/vm/ASHandlers.cpp:1125
#, c-format
msgid "Path given to duplicateMovieClip(%s) doesn't point to a DisplayObject"
-msgstr ""
+msgstr "duplicateMovieClip(%s)æç»å®ç Path 䏿åä¸ä¸ª DisplayObject"
#: libcore/vm/ASHandlers.cpp:1136
#, c-format
msgid "Path given to duplicateMovieClip(%s) is not a sprite"
-msgstr ""
+msgstr "duplicateMovieClip(%s) æç»å®ç Path 䏿¯ä¸ä¸ªç²¾çµ"
#: libcore/vm/ASHandlers.cpp:1157
#, c-format
msgid "Path given to removeMovieClip(%s) doesn't point to a DisplayObject"
-msgstr ""
+msgstr "removeMovieClip(%s) æç»å®ç Path 䏿åä¸ä¸ª DisplayObject"
#: libcore/vm/ASHandlers.cpp:1167
#, c-format
msgid "Path given to removeMovieClip(%s) is not a sprite"
-msgstr ""
+msgstr "removeMovieClip(%s) æç»å®ç Path 䏿¯ä¸ä¸ªç²¾çµ"
#: libcore/vm/ASHandlers.cpp:1205
#, c-format
msgid "startDrag: unknown target '%s'"
-msgstr ""
+msgstr "startDrag: æªç¥ç®æ '%s'"
#: libcore/vm/ASHandlers.cpp:1225
msgid "Y values in ActionStartDrag swapped, fixing"
-msgstr ""
+msgstr "ActionStartDrag ä¸ Y å¼å·²äº¤æ¢, ä¿®å¤ä¸"
#: libcore/vm/ASHandlers.cpp:1232
msgid "X values in ActionStartDrag swapped, fixing"
-msgstr ""
+msgstr "ActionStartDrag ä¸ X å¼å·²äº¤æ¢, ä¿®å¤ä¸"
#: libcore/vm/ASHandlers.cpp:1296
#, c-format
msgid "-- %s cast_to %s (invalid args?)"
-msgstr ""
+msgstr "-- %s cast_to %s (ä¸åæ³åæ°?)"
#: libcore/vm/ASHandlers.cpp:1335
#, c-format
msgid "Stack value on IMPLEMENTSOP is not an object: %s."
-msgstr ""
+msgstr "IMPLEMENTSOP ä¸å å¼ä¸æ¯ä¸ä¸ªå¯¹è±¡: %sã"
#: libcore/vm/ASHandlers.cpp:1344
msgid "Target object for IMPLEMENTSOP has no prototype."
-msgstr ""
+msgstr "IMPLEMENTSOP çç®æ 对象没æååã"
#: libcore/vm/ASHandlers.cpp:1351
#, c-format
msgid "IMPLEMENTSOP target object's prototype is not an object (%s)"
-msgstr ""
+msgstr "IMPLEMENTSOP ç®æ 对象çåå䏿¯ä¸ä¸ªå¯¹è±¡ (%s)"
#: libcore/vm/ASHandlers.cpp:1359
#, c-format
msgid "Invalid interfaces count (%d) on IMPLEMENTSOP"
-msgstr ""
+msgstr "IMPLEMENTSOP ä¸ä¸åæ³çæ¥å£æ°(%d) "
#: libcore/vm/ASHandlers.cpp:1370
#, c-format
msgid "class found on stack on IMPLEMENTSOP is not an object: %s"
-msgstr ""
+msgstr "class found on stack on IMPLEMENTSOP å 䏿¾å°çç±»ä¸æ¯ä¸ä¸ªå¯¹è±¡: %s"
#: libcore/vm/ASHandlers.cpp:1377
msgid "Interface object for IMPLEMENTSOP has no prototype."
-msgstr ""
+msgstr "IMPLEMENTSOP çæ¥å£å¯¹è±¡æ²¡æåå"
#: libcore/vm/ASHandlers.cpp:1385
#, c-format
msgid "Prototype of interface object for IMPLEMENTSOP is not an object (%s)."
-msgstr ""
+msgstr "IMPLEMENTSOP æ¥å£å¯¹è±¡çåå䏿¯ä¸ä¸ªå¯¹è±¡ (%s)ã"
#: libcore/vm/ASHandlers.cpp:1392
#, c-format
msgid "%s (with .prototype %p) implements %s (with .prototype %p)"
-msgstr ""
+msgstr "%s (with .prototype %p) å®ç° %s (with .prototype %p)"
#: libcore/vm/ASHandlers.cpp:1427
#, c-format
msgid "fscommand2:%s"
-msgstr ""
+msgstr "fscommand2:%s"
#: libcore/vm/ASHandlers.cpp:1558
#, c-format
msgid " ActionMbSubString(%s, %d, %d)"
-msgstr ""
+msgstr "ActionMbSubString(%s, %d, %d)"
#: libcore/vm/ASHandlers.cpp:1580
msgid "Base is less then 1 in ActionMbSubString, setting to 1."
-msgstr ""
+msgstr "ActionMbSubStringä¸ Base å°äº1ï¼è®¾ç½®ä¸º1ã"
#: libcore/vm/ASHandlers.cpp:1587
msgid ""
"base goes beyond input string in ActionMbSubString, returning the empty "
"string."
-msgstr ""
+msgstr "ActionMbSubStringä¸ baseè¶
åºè¾å
¥çå符串ï¼è¿å空å符串ã"
#: libcore/vm/ASHandlers.cpp:1599
#, c-format
@@ -5670,55 +6208,57 @@ msgid ""
"base+size goes beyond input string in ActionMbSubString, adjusting size "
"based on length:%d and start:%d"
msgstr ""
+"ActionMbSubStringä¸ï¼base+size è¶
åºè¾å
¥çå符串ï¼åºäºlength:%d and start:%d "
+"è°æ´sizeå¼"
#: libcore/vm/ASHandlers.cpp:1623 libcore/vm/ASHandlers.cpp:1648
msgid "Not properly implemented for SWF5"
-msgstr ""
+msgstr "䏿£ç¡®çSWF5å®ç°"
#: libcore/vm/ASHandlers.cpp:1674
msgid "ActionStrictMode set to %1%"
-msgstr ""
+msgstr "ActionStrictMode 设置为 %1%"
#: libcore/vm/ASHandlers.cpp:1703
#, c-format
msgid ""
"Frame spec found on stack at ActionWaitForFrame doesn't evaluate to a valid "
"frame: %s"
-msgstr ""
+msgstr "ActionWaitForFrameå ä¸åç°çå¸§è§æ ¼è®¡ç®ç»æä¸æ¯ä¸ä¸ªåæ³å¸§ï¼%s"
#: libcore/vm/ASHandlers.cpp:1728
msgid "Unknown constant '%1%' (no pool registered with VM)"
-msgstr ""
+msgstr "æªç¥å¸¸æ° '%1%' (没æVMæ³¨åæ± )"
#: libcore/vm/ASHandlers.cpp:1736
msgid "Unknown constant '%1%' (registered pool has %2% entries)"
-msgstr ""
+msgstr "æªç¥å¸¸æ° '%1%' (æ³¨åæ± æ %2% æ¡ç®)"
#: libcore/vm/ASHandlers.cpp:1793
#, c-format
msgid ""
"Unknown push type %d. Execution will continue but it is likely to fail due "
"to lost sync."
-msgstr ""
+msgstr "æªç¥æ¨ç±»å %dãå°ç»§ç»æ§è¡ï¼ä½å®å¯è½ä¼å¤±è´¥ï¼å¼èµ·ä¸¢å¤±åæ¥ã"
#: libcore/vm/ASHandlers.cpp:1835
#, c-format
msgid "Invalid register %d in ActionPush"
-msgstr ""
+msgstr "ActionPushä¸ä¸åæ³å¯åå¨ %d"
#: libcore/vm/ASHandlers.cpp:1886
#, c-format
msgid "\t%d) type=%s, value=%s"
-msgstr ""
+msgstr "\t%d) ç±»å=%s, å¼=%s"
#: libcore/vm/ASHandlers.cpp:1917
msgid "Undefined GetUrl2 URL on stack, skipping"
-msgstr ""
+msgstr "å 䏿ªå®ä¹ç GetUrl2 URLï¼ç¥è¿"
#: libcore/vm/ASHandlers.cpp:1949
#, c-format
msgid "branch to offset %d -- this section only runs to %d"
-msgstr ""
+msgstr "å移为 %d ç忝 -- æ¬é¨ååªè¿è¡å° %d"
#: libcore/vm/ASHandlers.cpp:1983
#, c-format
@@ -5726,297 +6266,297 @@ msgid ""
"Couldn't find target_sprite \"%s\" in ActionCallFrame! target frame actions "
"will not be called..."
msgstr ""
+"ActionCallFrameä¸ä¸è½æ¾å°target_sprite \"%s\"ï¼ç®æ 帧å¨ä½å°ä¸ä¼è¢«è°ç¨..."
#: libcore/vm/ASHandlers.cpp:2034
#, c-format
msgid ""
"Frame spec found on stack at ActionGotoExpression doesn't evaluate to a "
"valid frame: %s"
-msgstr ""
+msgstr "ActionGotoExpression å ä¸åç°çå¸§è§æ ¼è®¡ç®ç»æä¸æ¯ä¸ä¸ªåæ³ç帧: %s"
#: libcore/vm/ASHandlers.cpp:2046
#, c-format
msgid ""
"Couldn't find target sprite \"%s\" in ActionGotoExpression. Will not go to "
"target frame..."
-msgstr ""
+msgstr "ActionGotoExpression䏿 æ³æ¾å°ç®æ ç²¾çµ \"%s\"ãå°ä¸ä¼è½¬å°ç®æ 帧..."
#: libcore/vm/ASHandlers.cpp:2125
#, c-format
msgid "delete %s.%s: no object found to delete"
-msgstr ""
+msgstr "å é¤ %s.%s: 没æåç°å¯¹è±¡è¦å é¤"
#: libcore/vm/ASHandlers.cpp:2165
msgid "delete2 called with a path that does not resolve to an object"
-msgstr ""
+msgstr "delete2 è°ç¨æ¶å¸¦æä¸ä¸ªä¸è½è§£ææä¸ä¸ªå¯¹è±¡çè·¯å¾"
#: libcore/vm/ASHandlers.cpp:2191
#, c-format
msgid "-- set local var: %s = %s"
-msgstr ""
+msgstr "-- 设置å±é¨åé: %s = %s"
#: libcore/vm/ASHandlers.cpp:2224
#, c-format
msgid "ActionCallFunction: %s is not an object"
-msgstr ""
+msgstr "ActionCallFunction: %s 䏿¯ä¸ä¸ªå¯¹è±¡"
#: libcore/vm/ASHandlers.cpp:2241
#, c-format
msgid ""
"Attempt to call a function with %u arguments while only %u are available on "
"the stack."
-msgstr ""
+msgstr "è¯å¾è°ç¨ä¸ä¸ªå½æ°å¸¦æ %u ä¸ªåæ°ï¼ä½æ ä¸åªæ %u 个å¯ç¨ã"
#: libcore/vm/ASHandlers.cpp:2303
#, c-format
msgid "---new object: %s"
-msgstr ""
+msgstr "---æ°å»ºå¯¹è±¡: %s"
#: libcore/vm/ASHandlers.cpp:2313
#, c-format
msgid "ActionNew: '%s' is not a constructor"
-msgstr ""
+msgstr "ActionNew: '%s' 䏿¯ä¸ä¸ªæé 彿°"
#: libcore/vm/ASHandlers.cpp:2351
msgid "The 'var whatever' syntax in timeline context is a no-op."
-msgstr ""
+msgstr "该 'var whatever' è¯æ³å¨æ¶é´çº¿ä¸ä¸æä¸ä¸æ§è¡ä»»ä½æä½ã"
#: libcore/vm/ASHandlers.cpp:2439
#, c-format
msgid "Argument to TargetPath(%s) doesn't cast to a DisplayObject"
-msgstr ""
+msgstr "TargetPath(%s) åæ°ä¸è½è½¬æ¢ä¸ºä¸ä¸ª DisplayObject"
#: libcore/vm/ASHandlers.cpp:2474
#, c-format
msgid ""
"Top of stack doesn't evaluate to an object (%s) at ActionEnumerate execution"
-msgstr ""
+msgstr "å¨ActionEnumerateæ§è¡æ¶æ 顶计ç®ç»æä¸æ¯ä¸ä¸ªå¯¹è±¡ï¼%sï¼"
#: libcore/vm/ASHandlers.cpp:2581
#, c-format
msgid "getMember called against a value that does not cast to an as_object: %s"
-msgstr ""
+msgstr "对ä¸è½è½¬æ¢ä¸ºä¸ä¸ª as_object çå¼è°ç¨getMemberï¼%s"
#: libcore/vm/ASHandlers.cpp:2590
#, c-format
msgid " ActionGetMember: target: %s (object %p)"
-msgstr ""
+msgstr "ActionGetMember: ç®æ : %s (对象 %p)"
#: libcore/vm/ASHandlers.cpp:2605
#, c-format
msgid "-- get_member %s.%s=%s"
-msgstr ""
+msgstr "-- get_member %s.%s=%s"
#: libcore/vm/ASHandlers.cpp:2624
#, c-format
msgid ""
"ActionSetMember: %s.%s=%s: member name evaluates to invalid (empty) string"
-msgstr ""
+msgstr "ActionSetMember: %s.%s=%s: æåå计ç®ç»ææ¯ä¸åæ³ï¼ç©ºï¼å符串"
#: libcore/vm/ASHandlers.cpp:2633
#, c-format
msgid "-- set_member %s.%s=%s"
-msgstr ""
+msgstr "-- set_member %s.%s=%s"
#: libcore/vm/ASHandlers.cpp:2645
#, c-format
msgid "-- set_member %s.%s=%s on invalid object!"
-msgstr ""
+msgstr "-- å¨ä¸åæ³å¯¹è±¡ä¸ set_member %s.%s=%s!"
#: libcore/vm/ASHandlers.cpp:2706
#, c-format
msgid ""
"Attempt to call a method with %u arguments while only %u are available on "
"the stack."
-msgstr ""
+msgstr "è¯å¾è°ç¨ä¸ä¸ªæ¹æ³æ¶å¸¦ %u ä¸ªåæ°ï¼ä½æ ä¸åªæ %u å¯ç¨ã"
#: libcore/vm/ASHandlers.cpp:2714
#, c-format
msgid " method name: %s"
-msgstr ""
+msgstr "æ¹æ³å: %s"
#: libcore/vm/ASHandlers.cpp:2715
#, c-format
msgid " method object/func: %s"
-msgstr ""
+msgstr "æ¹æ³å¯¹è±¡/彿°: %s"
#: libcore/vm/ASHandlers.cpp:2716
#, c-format
msgid " method nargs: %d"
-msgstr ""
+msgstr "æ¹æ³åæ°: %d"
#: libcore/vm/ASHandlers.cpp:2724
#, c-format
msgid "ActionCallMethod invoked with non-object object/func (%s)"
-msgstr ""
+msgstr "ActionCallMethod è°ç¨æ¶å¸¦é对象ç对象/彿° (%s)"
#: libcore/vm/ASHandlers.cpp:2758
#, c-format
msgid "ActionCallMethod: Can't find method %s of object %s"
-msgstr ""
+msgstr "ActionCallMethod: æ æ³æ¾å°æ¹æ³ %s å¨å¯¹è±¡ %s ä¸"
#: libcore/vm/ASHandlers.cpp:2770
#, c-format
msgid "ActionCallMethod: property %d of object %d is not callable (%s)"
-msgstr ""
+msgstr "ActionCallMethod: 屿§ %d å¨å¯¹è±¡ %d 䏿¯ä¸å¯è°ç¨ç (%s)"
#: libcore/vm/ASHandlers.cpp:2843
#, c-format
msgid ""
"Attempt to call a constructor with %u arguments while only %u are available "
"on the stack."
-msgstr ""
+msgstr "è¯å¾è°ç¨ä¸ä¸ªæé 彿°å¸¦ %u ä¸ªåæ°ï¼ä½å¨å ä¸åªæ %u 个å¯ç¨ã"
#: libcore/vm/ASHandlers.cpp:2855
msgid "On ActionNewMethod: no object found on stack on ActionMethod"
-msgstr ""
+msgstr "å¨ ActionNewMethod: ActionMethodçå 䏿²¡ææ¾å°å¯¹è±¡"
#: libcore/vm/ASHandlers.cpp:2872
#, c-format
msgid "ActionNewMethod: can't find method %s of object %s"
-msgstr ""
+msgstr "ActionNewMethod: æ æ³æ¾å°æ¹æ³ %s å¨å¯¹è±¡ %s ä¸"
#: libcore/vm/ASHandlers.cpp:2884
msgid "ActionNewMethod: method name is undefined and object is not a function"
-msgstr ""
+msgstr "ActionNewMethod: æ¹æ³åæªå®ä¹ä¸å¯¹è±¡ä¸æ¯ä¸ä¸ªå½æ°"
#: libcore/vm/ASHandlers.cpp:2923
#, c-format
msgid "-- %s instanceof %s (invalid args?)"
-msgstr ""
+msgstr "-- %s instanceof %s (ä¸åæ³åæ°?)"
#: libcore/vm/ASHandlers.cpp:2952
#, c-format
msgid "Top of stack not an object %s at ActionEnum2 execution"
-msgstr ""
+msgstr "å¨ ActionEnum2 è¿è¡æ¶å é¡¶é¨ä¸æ¯ä¸ä¸ªå¯¹è±¡ %s"
-#: libcore/vm/ASHandlers.cpp:3086
+#: libcore/vm/ASHandlers.cpp:3089
#, c-format
msgid "ActionExtends: Super is not an object (%s)"
-msgstr ""
+msgstr "ActionExtends: Super 䏿¯ä¸ä¸ªå¯¹è±¡ (%s)"
-#: libcore/vm/ASHandlers.cpp:3090
+#: libcore/vm/ASHandlers.cpp:3093
#, c-format
msgid "ActionExtends: Sub is not a function (%s)"
-msgstr ""
+msgstr "ActionExtends: Sub 䏿¯ä¸ä¸ªå½æ° (%s)"
-#: libcore/vm/ASHandlers.cpp:3191
+#: libcore/vm/ASHandlers.cpp:3194
#, c-format
msgid ""
"function2 code len (%u) overflows DOACTION tag boundaries (DOACTION tag len="
"%d, function2 code offset=%d). Forcing code len to eat the whole buffer "
"(would this work?)."
msgstr ""
+"function2 代ç é¿åº¦ (%u) è¶
åº DOACTION æ ç¾è¾¹ç (DOACTION tag len=%d, "
+"function2 code offset=%d)ã 强å¶ä»£ç é¿åº¦å
æ¬æ´ä¸ªç¼å²åº (å°ä¼å·¥ä½å?)ã"
-#: libcore/vm/ASHandlers.cpp:3213
+#: libcore/vm/ASHandlers.cpp:3216
#, c-format
msgid "DefineFunction2: named function '%s' starts at PC %d"
-msgstr ""
+msgstr "DefineFunction2: å½å彿° '%s' å¼å§äº PC %d"
-#: libcore/vm/ASHandlers.cpp:3223
+#: libcore/vm/ASHandlers.cpp:3226
#, c-format
msgid "DefineFunction2: anonymous function starts at PC %d"
-msgstr ""
+msgstr "DefineFunction2: å¿å彿°å¼å§äº PC %d"
-#: libcore/vm/ASHandlers.cpp:3275
+#: libcore/vm/ASHandlers.cpp:3278
#, c-format
msgid ""
"ActionTry: reserved:%x doFinally:%d doCatch:%d trySize:%u catchSize:%u "
"finallySize:%u catchName:%s catchRegister:%u"
msgstr ""
+"ActionTry: reserved:%x doFinally:%d doCatch:%d trySize:%u catchSize:%u "
+"finallySize:%u catchName:%s catchRegister:%u"
-#: libcore/vm/ASHandlers.cpp:3304
+#: libcore/vm/ASHandlers.cpp:3307
msgid "ActionWith tag length != 2; skipping"
-msgstr ""
+msgstr "ActionWith æ ç¾é¿åº¦ != 2; 忽ç¥"
-#: libcore/vm/ASHandlers.cpp:3314
+#: libcore/vm/ASHandlers.cpp:3317
msgid "Empty with() block..."
-msgstr ""
+msgstr "空 with() åºå..."
-#: libcore/vm/ASHandlers.cpp:3325
+#: libcore/vm/ASHandlers.cpp:3328
#, c-format
msgid "with(%s) : first argument doesn't cast to an object!"
-msgstr ""
+msgstr "with(%s) : 第ä¸ä¸ªåæ°ä¸è½è½¬æ¢ä¸ºä¸ä¸ªå¯¹è±¡ï¼"
-#: libcore/vm/ASHandlers.cpp:3440
+#: libcore/vm/ASHandlers.cpp:3443
#, c-format
msgid "Unsupported action handler invoked, code at pc is %#x"
-msgstr ""
+msgstr "䏿¯æçæä½å¤çç¨åºè¢«è°ç¨ï¼pcå¤ä»£ç æ¯ %#x"
-#: libcore/vm/ASHandlers.cpp:3500
+#: libcore/vm/ASHandlers.cpp:3503
msgid "Bogus empty GetUrl URL in SWF file, skipping"
-msgstr ""
+msgstr "åç©ºç½ GetUrl URL å¨ SWF æä»¶ä¸, 忽ç¥"
-#: libcore/vm/ASHandlers.cpp:3512
+#: libcore/vm/ASHandlers.cpp:3515
msgid ""
"Bogus GetUrl2 send vars method in SWF file (both GET and POST requested). "
"Using GET"
-msgstr ""
+msgstr "å¨SWFæä»¶ä¸åç GetUrl2 åéåéæ¹æ³ (æGETåPOST请æ±)ã使ç¨GET"
-#: libcore/vm/ASHandlers.cpp:3571
+#: libcore/vm/ASHandlers.cpp:3574
#, c-format
msgid "getURL: target %s not found"
-msgstr ""
+msgstr "getURL: ç®æ %s æªæ¾å°"
-#: libcore/vm/ASHandlers.cpp:3577
+#: libcore/vm/ASHandlers.cpp:3580
#, c-format
msgid "getURL: target %s is not a sprite"
-msgstr ""
+msgstr "getURL: ç®æ %s 䏿¯ä¸ä¸ªç²¾çµ"
-#: libcore/vm/ASHandlers.cpp:3596
+#: libcore/vm/ASHandlers.cpp:3599
msgid "commonGetURL: current target is undefined"
-msgstr ""
+msgstr "commonGetURL: å½åç®æ æªå®ä¹"
-#: libcore/vm/ASHandlers.cpp:3616
+#: libcore/vm/ASHandlers.cpp:3619
#, c-format
msgid "Unknown loadMovie target: %s"
-msgstr ""
+msgstr "æªç¥ç loadMovie ç®æ : %s"
-#: libcore/vm/ASHandlers.cpp:3630
-#, c-format
+#: libcore/vm/ASHandlers.cpp:3633
+#, fuzzy, c-format
msgid "get URL: target %s is not a sprite"
-msgstr ""
+msgstr "getURL: ç®æ %s 䏿¯ä¸ä¸ªç²¾çµ"
-#: libcore/vm/ASHandlers.cpp:3695
+#: libcore/vm/ASHandlers.cpp:3698
#, c-format
msgid "Couldn't find movie \"%s\" to set target to! Setting target to NULL..."
-msgstr ""
-
-#: libcore/vm/CallStack.cpp:64
-#, c-format
-msgid "-------------- local register[%d] = '%s'"
-msgstr ""
+msgstr "æ æ³æ¾å°è®¾ç½®çç®æ çµå½± \"%s\" ! è®¾ç½®ç®æ 为空..."
#: libcore/vm/Machine.cpp:895
#, c-format
msgid "Can't push a null value onto the scope stack (%s)."
-msgstr ""
+msgstr "ä¸è½æ¨å
¥ä¸ä¸ªç©ºå¼å°è¯¥èå´çæ ä¸ (%s)ã"
#: libcore/vm/Machine.cpp:1438
#, c-format
msgid ""
"CALLPROP: Can't call a method of a value that doesn't cast to an object (%s)."
-msgstr ""
+msgstr "CALLPROP: ä¸è½è°ç¨ä¸ä¸ªä¸è½è½¬æ¢ä¸ºå¯¹è±¡çå¼çæ¹æ³(%s)ã"
#: libcore/vm/Machine.cpp:1455
#, c-format
msgid "CALLPROP: Property '%s' of object '%s' is '%s', cannot call as method"
-msgstr ""
+msgstr "CALLPROP: 屿§ '%s' å¨å¯¹è±¡ '%s' ä¸ æ¯ '%s'ï¼ ä¸è½ä½ä¸ºä¸ä¸ªæ¹æ³è°ç¨"
#: libcore/vm/Machine.cpp:1983
#, c-format
msgid "GETPROPERTY: Looking for property %s of object %s"
-msgstr ""
+msgstr "GETPROPERTY: æ¥æ¾å±æ§ %s å¨å¯¹è±¡ %s ä¸"
#: libcore/vm/Machine.cpp:1987
#, c-format
msgid "GETPROPERTY: expecting object on stack, got %s."
-msgstr ""
+msgstr "GETPROPERTY: é¢è®¡å¯¹è±¡å¨æ ä¸ï¼å®é
æ¯ %sã"
#: libcore/vm/Machine.cpp:2122
#, c-format
msgid "ABC_ACTION_SETSLOT: unexpected non-object stack value %s"
-msgstr ""
+msgstr "ABC_ACTION_SETSLOT: æå¤çé对象æ å¼ %s"
#: libcore/vm/ActionExec.cpp:147
#, c-format
@@ -6024,45 +6564,50 @@ msgid ""
"at ActionExec operator() start, pc=%d, stop_pc=%d, code.size=%d, func=%d, "
"codeVersion=%d"
msgstr ""
+"å¨ ActionExec operator() çå¼å§, pc=%d, stop_pc=%d, code.size=%d, func=%d, "
+"codeVersion=%d"
#: libcore/vm/ActionExec.cpp:152 libcore/vm/ActionExec.cpp:285
#: libcore/vm/ActionExec.cpp:296
#, c-format
msgid "%s"
-msgstr ""
+msgstr "%s"
#: libcore/vm/ActionExec.cpp:222
#, c-format
msgid "PC:%d - EX: %s"
-msgstr ""
+msgstr "PC:%d - EX: %s"
#: libcore/vm/ActionExec.cpp:239
#, c-format
msgid ""
"Length %u (%d) of action tag id %u at pc %d overflows actions buffer size %d"
-msgstr ""
+msgstr "é¿åº¦ %u (%d) 卿使 ç¾ id %u ä¸ä½äº pc %d å¤è¶
åºæä½ç¼å²åºå¤§å° %d"
#: libcore/vm/ActionExec.cpp:292
#, c-format
msgid "After execution: PC %d, next PC %d, stack follows"
-msgstr ""
+msgstr "æ§è¡å: PC %d, ä¸ä¸æ¡ PC %d, æ å¦ä¸"
#: libcore/vm/ActionExec.cpp:306
msgid ""
"Time exceeded (%4% secs) while executing code in %1% between pc %2% and %3%. "
"Disable scripts?"
msgstr ""
+"æ¶é´è¶
åº (%4% secs) å½å¨ %1% 䏿§è¡ä»£ç ï¼ä½äº pc %2% å %3% ä¹é´ï¼ãç¦ç¨èæ¬"
+"å?"
#: libcore/vm/ActionExec.cpp:541
msgid ""
"Stack smashed (ActionScript compiler bug, or obfuscated SWF). Taking no "
"action to fix (as expected)."
msgstr ""
+"å æ 被æ¯åï¼ActionScriptç¼è¯å¨éè¯¯ææ··æ·åçSWFï¼ãä¸ä¼ä¿®å¤ï¼å¦é¢æï¼ã"
#: libcore/vm/ActionExec.cpp:545
#, c-format
msgid "%d elements left on the stack after block execution."
-msgstr ""
+msgstr "代ç åæ§è¡å %d çå
ç´ ç卿 ä¸ã"
#: libcore/vm/ActionExec.cpp:564
#, c-format
@@ -6070,1912 +6615,1450 @@ msgid ""
"End of DoAction block hit while skipping %d action tags (pc:%d, stop_pc:%d) "
"(WaitForFrame, probably)"
msgstr ""
+"å°è¾¾DoActionç»æä»£ç åï¼å¿½ç¥ %d æä½æ ç¾ (pc:%d, stop_pc:%d) (ä¹è®¸æ¯"
+"WaitForFrame)"
#: libcore/vm/ActionExec.cpp:674
#, c-format
msgid "Jump outside DoAction tag requested (offset %d before tag start)"
-msgstr ""
+msgstr "è·³åºå·²è¯·æ±çDoActionæ ç¾ï¼æ ç¾å¼å§ååç§» %d ï¼"
-#: libcore/vm/VM.cpp:222
+#: libcore/MovieLoader.cpp:260
#, c-format
-msgid "-------------- global register[%d] = '%s'"
-msgstr ""
+msgid "Can't create Movie instance for definition loaded from %s"
+msgstr "æ æ³ä¸ºä» %s å è½½çå®ä¹å建çµå½±å®ä¾"
-#: libcore/vm/VM.cpp:250
+#: libcore/ClassHierarchy.cpp:85
#, c-format
-msgid "Recursion limit reached (%u)"
-msgstr ""
+msgid "Native class %s is not an object after initialization (%s)"
+msgstr "åå§åååçç±» %s 䏿¯ä¸ä¸ªå¯¹è±¡ï¼%sï¼"
-#: libcore/Button.cpp:477
+#: libcore/ClassHierarchy.cpp:92
#, c-format
-msgid "Unhandled button event %s"
-msgstr ""
+msgid "Native class %s is not found after initialization"
+msgstr "åå§ååæªåç°åçç±» %s "
-#: libcore/Button.cpp:788
-msgid "Button placed with an init object. This will be ignored."
-msgstr ""
+#: libcore/RGBA.cpp:47
+msgid "Failed to convert string to RGBA value! This is a Gnash bug"
+msgstr "转æ¢å符串为RGBAå¼å¤±è´¥ï¼è¿æ¯ä¸ä¸ªGnashçé误"
-#: libcore/Button.cpp:956
-msgid "Enabled"
-msgstr ""
+#: libcore/SWFStream.cpp:475
+msgid "Attempt to seek past the end of an opened tag"
+msgstr "è¯å¾å®ä½å°ä¸ä¸ªæå¼æ ç¾çç»æä¹å"
-#: libcore/Button.cpp:961
-msgid "Button state"
-msgstr ""
+#: libcore/SWFStream.cpp:483
+msgid "Attempt to seek before start of an opened tag"
+msgstr "è¯å¾å®ä½å°ä¸ä¸ªæå¼æ ç¾çå¼å§ä¹å"
-#: libcore/Button.cpp:965
-msgid "Action characters"
-msgstr ""
+#: libcore/SWFStream.cpp:496
+msgid "Unexpected end of stream"
+msgstr "æµæå¤ç»æ"
-#: libcore/Button.cpp:994
-msgid "Button.blendMode"
+#: libcore/SWFStream.cpp:564
+#, c-format
+msgid ""
+"Tag %d starting at offset %d is advertised to end at offset %d, which is "
+"after end of previously opened tag starting at offset %d and ending at "
+"offset %d. Making it end where container tag ends."
msgstr ""
+"æ ç¾ %d çå¼å§åç§»é %d æ æè·ç¦»ç»æåç§» %dï¼ å®å¨åä¸ä¸ªå¼å§å移为 %dï¼ç»æå"
+"移为 %d çæå¼æ ç¾ç»æåãå¨å
嫿 ç¾ç»æå¤è®©å®ç»æã"
-#: libcore/Button.cpp:1003
-msgid "Button.cacheAsBitmap"
-msgstr ""
+#: libcore/SWFStream.cpp:581
+#, c-format
+msgid "SWF[%lu]: tag type = %d, tag length = %d, end tag = %lu"
+msgstr "SWF[%lu]: æ ç¾ç±»å = %d, æ ç¾é¿åº¦ = %d, ç»ææ ç¾ = %lu"
-#: libcore/Button.cpp:1012
-msgid "Button.filters"
-msgstr ""
+#: libcore/SWFStream.cpp:602
+msgid "Could not seek to reported end of tag"
+msgstr "æ æ³å®ä½å°æ ç¾ç»æ"
-#: libcore/Button.cpp:1021
-msgid "Button.scale9Grid"
-msgstr ""
+#: libcore/SWFStream.cpp:617
+#, c-format
+msgid "SWFStream::consumeInput: underlying stream couldn't go_to_end: %s"
+msgstr "SWFStream::consumeInput: ç¸å
³çæµä¸è½å°ç»æ: %s"
-#: libcore/Button.cpp:1030
-msgid "Button.getTabIndex"
-msgstr ""
+#: libcore/DisplayObject.cpp:124
+#, c-format
+msgid "loadMovie against a %s DisplayObject"
+msgstr "loadMovie é»è¿çä¸ä¸ª %s DisplayObject"
-#: libcore/Button.cpp:1039
-msgid "Button.setTabIndex"
-msgstr ""
+#: libcore/DisplayObject.cpp:261
+msgid "blendMode"
+msgstr "blendMode"
-#: libcore/as_environment.cpp:182
+#: libcore/DisplayObject.cpp:371
#, c-format
-msgid "invalid path '%s' (p=next_slash=%s)"
-msgstr ""
+msgid "Setting _height=%g of DisplayObject %s (%s)"
+msgstr "设置 _height=%g å¨ DisplayObject %s (%s) ä¸"
-#: libcore/as_environment.cpp:193
-#, c-format
-msgid "invalid path '%s' (dot not allowed after having seen a slash)"
-msgstr ""
+#: libcore/DisplayObject.cpp:799
+msgid "yes"
+msgstr "æ¯"
-#: libcore/as_environment.cpp:332
-#, c-format
-msgid "-------------- %s = %s"
-msgstr ""
+#: libcore/DisplayObject.cpp:800
+msgid "no"
+msgstr "å¦"
-#: libcore/as_environment.cpp:346
-#, c-format
-msgid "Path target '%s' not found while setting %s=%s"
-msgstr ""
+#: libcore/DisplayObject.cpp:806
+msgid "Depth"
+msgstr "深度"
-#: libcore/as_environment.cpp:445
-#, c-format
-msgid "Won't set invalid raw variable name: %s"
-msgstr ""
+#: libcore/DisplayObject.cpp:812
+msgid "Ratio"
+msgstr "æ¯ç"
-#: libcore/as_environment.cpp:474
-#, c-format
-msgid ""
-"as_environment::setVariableRaw(%s, %s): neither current target nor original "
-"target are defined, can't set the variable"
-msgstr ""
+#: libcore/DisplayObject.cpp:822
+msgid "Clipping depth"
+msgstr "è£åªæ·±åº¦"
-#: libcore/as_environment.cpp:486
-#, c-format
-msgid "Won't get invalid raw variable name: %s"
-msgstr ""
+#: libcore/DisplayObject.cpp:827
+msgid "Dimensions"
+msgstr "尺寸"
-#: libcore/as_environment.cpp:567
-#, c-format
-msgid "reference to non-existent variable '%s'"
-msgstr ""
+#: libcore/DisplayObject.cpp:829
+msgid "Dynamic"
+msgstr "卿"
-#: libcore/MovieClip.cpp:621
-#, c-format
-msgid "call_frame('%s') -- invalid frame"
-msgstr ""
+#: libcore/DisplayObject.cpp:830
+msgid "Mask"
+msgstr "é¢ç½©"
-#: libcore/MovieClip.cpp:667
-msgid "Can't clone root of the movie"
-msgstr ""
+#: libcore/DisplayObject.cpp:831
+msgid "Destroyed"
+msgstr "鿝"
-#: libcore/MovieClip.cpp:675
-#, c-format
-msgid "%s parent is not a movieclip, can't clone"
-msgstr ""
+#: libcore/DisplayObject.cpp:833
+msgid "Unloaded"
+msgstr "å¸è½½"
-#: libcore/MovieClip.cpp:852
-msgid "MovieClip.unloadMovie()"
-msgstr ""
+#: libcore/DisplayObject.cpp:837
+msgid "Blend mode"
+msgstr "æ··åæ¨¡å¼"
-#: libcore/MovieClip.cpp:885
-#, c-format
-msgid "advance_movieclip: no frames loaded for movieclip/movie %s"
-msgstr ""
+#: libcore/DisplayObject.cpp:840
+msgid "Invalidated"
+msgstr "失æ"
-#: libcore/MovieClip.cpp:935
-msgid ""
-"Flushing orphaned tags in movieclip %1%. _currentFrame:%2%, _hasLooped:%3%, "
-"frame_count:%4%"
-msgstr ""
+#: libcore/DisplayObject.cpp:842
+msgid "Child invalidated"
+msgstr "åèç¹å¤±æ"
-#: libcore/MovieClip.cpp:1046
+#: libcore/DisplayObject.cpp:863 libcore/DisplayObject.cpp:1567
#, c-format
-msgid "Executing %d tags in frame %d/%d of movieclip %s"
-msgstr ""
+msgid "Attempt to set property to %s, refused"
+msgstr "è¯å¾è®¾ç½®å±æ§ä¸º %sï¼è¢«æç»"
-#: libcore/MovieClip.cpp:1084 libcore/MovieClip.cpp:1125
+#: libcore/DisplayObject.cpp:1098
#, c-format
-msgid ""
-"Target frame of a gotoFrame(%d) was never loaded, although frame count in "
-"header (%d) said we should have found it"
-msgstr ""
+msgid "Attempt to set %s._y to %s (evaluating to number %g) refused"
+msgstr "è¯å¾è®¾ç½® %s._y 为 %s (计ç®ç»æä¸ºæ°å %g) 被æç»"
-#: libcore/MovieClip.cpp:1116
+#: libcore/DisplayObject.cpp:1129
#, c-format
-msgid ""
-"GotoFrame(%d) targets a yet to be loaded frame (%d). We'll wait for it but a "
-"more correct form is explicitly using WaitForFrame instead"
-msgstr ""
+msgid "Attempt to set %s._x to %s (evaluating to number %g) refused"
+msgstr "è¯å¾è®¾ç½® %s._x 为 %s (计ç®ç»æä¸ºæ°å %g) 被æç»"
-#: libcore/MovieClip.cpp:1189
+#: libcore/DisplayObject.cpp:1158
#, c-format
-msgid "MovieClip::goto_labeled_frame('%s') unknown label"
-msgstr ""
+msgid "Attempt to set %s._xscale to %s (evaluating to number %g) refused"
+msgstr "è¯å¾è®¾ç½® %s. _xscale 为 %s (计ç®ç»æä¸ºæ°å %g) 被æç»"
-#: libcore/MovieClip.cpp:1248
+#: libcore/DisplayObject.cpp:1184
#, c-format
-msgid "MovieClip::add_display_object(): unknown cid = %d"
-msgstr ""
+msgid "Attempt to set %s._yscale to %s (evaluating to number %g) refused"
+msgstr "è¯å¾è®¾ç½® %s. _yscale 为 %s (计ç®ç»æä¸ºæ°å %g) 被æç»"
-#: libcore/MovieClip.cpp:1318
+#: libcore/DisplayObject.cpp:1220
#, c-format
-msgid "movieclip::replace_display_object(): unknown cid = %d"
-msgstr ""
+msgid "Attempt to set %s._visible to %s (evaluating to number %g) refused"
+msgstr "è¯å¾è®¾ç½® %s. _visible 为 %s (计ç®ç»æä¸ºæ°å %g) 被æç»"
-#: libcore/MovieClip.cpp:1327
+#: libcore/DisplayObject.cpp:1249
#, c-format
-msgid ""
-"MovieClip::replace_display_object: could not find any DisplayObject at depth "
-"%d"
-msgstr ""
+msgid "Attempt to set %s._alpha to %s (evaluating to number %g) refused"
+msgstr "è¯å¾è®¾ç½® %s. _alpha 为 %s (计ç®ç»æä¸ºæ°å %g) 被æç»"
-#: libcore/MovieClip.cpp:1905
+#: libcore/DisplayObject.cpp:1315
#, c-format
-msgid "Could not load variables from %s"
-msgstr ""
+msgid "Attempt to set %s._rotation to %s (evaluating to number %g) refused"
+msgstr "è¯å¾è®¾ç½® %s. _rotation 为 %s (计ç®ç»æä¸ºæ°å %g) 被æç»"
-#: libcore/MovieClip.cpp:1958
-#, c-format
-msgid ""
-"removeMovieClip(%s): movieclip depth (%d) out of the 'dynamic' zone "
-"[0..1048575], won't remove"
-msgstr ""
+#: libcore/DisplayObject.cpp:1355
+msgid "_soundbuftime setting"
+msgstr "_soundbuftime 设置"
-#: libcore/parser/TypesParser.cpp:145
+#: libcore/DisplayObject.cpp:1379
#, c-format
-msgid "Invalid rectangle: minx=%g maxx=%g miny=%g maxy=%g"
-msgstr ""
+msgid "Setting _width=%g of DisplayObject %s (%s)"
+msgstr "设置 _width=%g å¨ DisplayObject %s (%s) ä¸"
-#: libcore/parser/TypesParser.cpp:161
-#, c-format
-msgid " FillStyle read type = 0x%X"
-msgstr ""
-
-#: libcore/parser/TypesParser.cpp:207
-#, c-format
-msgid " gradients count: %d"
-msgstr ""
-
-#: libcore/parser/TypesParser.cpp:212
-msgid "No gradients!"
-msgstr ""
-
-#: libcore/parser/TypesParser.cpp:266
-msgid "Illegal spread mode in gradient definition."
-msgstr ""
-
-#: libcore/parser/TypesParser.cpp:283
-msgid "Illegal interpolation mode in gradient definition."
-msgstr ""
-
-#: libcore/parser/TypesParser.cpp:408
-#, c-format
-msgid " color: %s"
-msgstr ""
+#: libcore/DisplayObject.cpp:1389 libcore/DisplayObject.cpp:1407
+msgid "_focusrect"
+msgstr "_focusrect"
-#: libcore/parser/sprite_definition.cpp:64
-#, c-format
-msgid " frames = %d"
-msgstr ""
+#: libcore/AMFConverter.cpp:98
+msgid "Problems serializing an object's member"
+msgstr "åºååä¸ä¸ªå¯¹è±¡çæååºé"
-#: libcore/parser/sprite_definition.cpp:77
+#: libcore/AMFConverter.cpp:212
#, c-format
-msgid ""
-"%d frames advertised in header, but only %d SHOWFRAME tags found in define "
-"sprite."
-msgstr ""
+msgid "Problems serializing strict array member %d=%s"
+msgstr "åºååéå¶æ°æ®çæå %d=%s åºé"
-#: libcore/parser/sprite_definition.cpp:87
-msgid " -- sprite END --"
-msgstr ""
+#: libcore/AMFConverter.cpp:242
+msgid "Could not serialize object"
+msgstr "æ æ³åºåå对象"
-#: libcore/parser/filter_factory.cpp:54
+#: libcore/AMFConverter.cpp:319
#, c-format
-msgid " number of filters: %d"
-msgstr ""
+msgid "Unknown AMF type %s! Cannot proceed"
+msgstr "æªç¥ç AMF ç±»å %s! ä¸è½å¤ç"
-#: libcore/parser/filter_factory.cpp:92
+#: libcore/AMFConverter.cpp:376
#, c-format
-msgid "Invalid filter type %d."
-msgstr ""
+msgid "AMF parsing error: %s"
+msgstr "AMF è§£æé误: %s"
-#: libcore/parser/filter_factory.cpp:102
-#, c-format
-msgid "Filter %d could not read."
-msgstr ""
+#: libcore/AMFConverter.cpp:407
+msgid "Read past _end of buffer for strict array length"
+msgstr "读åä¼ å
¥çéå¶æ°ç»é¿åº¦çç¼å²åºç»æ"
-#: libcore/parser/filter_factory.cpp:134
-#, c-format
-msgid " DropShadowFilter: blurX=%f blurY=%f"
-msgstr ""
+#: libcore/AMFConverter.cpp:425
+msgid "Unable to read array elements"
+msgstr "ä¸è½è¯»åæ°ç»å
ç´ "
-#: libcore/parser/filter_factory.cpp:153
-#, c-format
-msgid " BlurFilter: blurX=%f blurY=%f quality=%d"
-msgstr ""
+#: libcore/AMFConverter.cpp:442
+msgid "Read past _end of buffer for array length"
+msgstr "读åä¼ å
¥çæ°ç»é¿åº¦çç¼å²åºç»æ"
-#: libcore/parser/filter_factory.cpp:180
-msgid " GlowFilter "
-msgstr ""
+#: libcore/AMFConverter.cpp:468 libcore/AMFConverter.cpp:489
+msgid "MALFORMED AMF: premature _end of ECMA_ARRAY block"
+msgstr "éè¯¯æ ¼å¼çAMFï¼è¿æ©ç ECMA_ARRAY åçç»æç¬¦"
-#: libcore/parser/filter_factory.cpp:218
-msgid " BevelFilter "
-msgstr ""
+#: libcore/AMFConverter.cpp:480
+msgid "MALFORMED AMF: empty member name not followed by OBJECT_END_AMF0 byte"
+msgstr "éè¯¯æ ¼å¼çAMF: 空æåååæ²¡æ OBJECT_END_AMF0 åè"
-#: libcore/parser/filter_factory.cpp:265
-msgid " GradientGlowFilter "
-msgstr ""
+#: libcore/AMFConverter.cpp:504
+msgid "Unable to read array element"
+msgstr "ä¸è½è¯»åæ°ç»å
ç´ "
-#: libcore/parser/filter_factory.cpp:301
-msgid " ConvolutionFilter "
-msgstr ""
+#: libcore/AMFConverter.cpp:528
+msgid "Could not read object property name"
+msgstr "æ æ³è¯»åå¯¹è±¡å±æ§åç§°"
-#: libcore/parser/filter_factory.cpp:318
-msgid " ColorMatrixFilter: "
-msgstr ""
+#: libcore/AMFConverter.cpp:539
+msgid "AMF buffer terminated just before object _end byte. continuing anyway."
+msgstr "AMFç¼å²å¨ç»æåèä¹åç»æ¢ãç»§ç»ä¸å»ã"
-#: libcore/parser/filter_factory.cpp:319 libcore/parser/filter_factory.cpp:322
-#: libcore/parser/filter_factory.cpp:325 libcore/parser/filter_factory.cpp:328
+#: libcore/AMFConverter.cpp:566
#, c-format
-msgid " %g, %g, %g, %g, %g"
-msgstr ""
+msgid "readAMF0: invalid reference to object %d (%d known objects)"
+msgstr "readAMF0: ä¸åæ³ç对象%då¼ç¨(%d å·²ç¥å¯¹è±¡) "
-#: libcore/parser/filter_factory.cpp:375
-msgid " GradientBevelFilter "
-msgstr ""
+#: libcore/AMFConverter.cpp:597
+msgid ""
+"Date type encoded timezone info %1%, even though this field should not be "
+"used."
+msgstr "æ¥æåç¼ç çæ¶åºä¿¡æ¯%1%ï¼è½ç¶è¿ä¸å段ä¸åºè¯¥ä½¿ç¨ã"
-#: libcore/parser/action_buffer.cpp:57
+#: libcore/as_value.cpp:768
#, c-format
-msgid "Empty action buffer starting at offset %lu"
-msgstr ""
+msgid "serialization of as_value of type %d"
+msgstr "ç±»å %d ç as_value åºåå"
-#: libcore/parser/action_buffer.cpp:94
+#: libcore/DisplayList.cpp:305
#, c-format
-msgid "Action buffer starting at offset %lu doesn't end with an END tag"
-msgstr ""
+msgid "moveDisplayObject() -- can't find object at depth %d"
+msgstr "moveDisplayObject() -- ä¸è½å¨æ·±åº¦ %d æ¾å°å¯¹è±¡"
-#: libcore/parser/action_buffer.cpp:132
-msgid "action buffer dict length exceeded"
-msgstr ""
+#: libcore/DisplayList.cpp:312
+msgid "Request to move an unloaded DisplayObject"
+msgstr "请æ±ç§»å¨ä¸ä¸ªå·²å¸è½½ç DisplayObject"
-#: libcore/parser/action_buffer.cpp:614
-msgid "Native double floating point format not recognised"
-msgstr ""
+#: libcore/DisplayList.cpp:380
+#, c-format
+msgid "%s.swapDepth(%d) : ignored call with target depth less then %d"
+msgstr "%s.swapDepth(%d) : 忽ç¥å¸¦ææ·±åº¦å°äº %d ç®æ çè°ç¨"
-#: libcore/parser/SWFParser.cpp:90
-msgid "SHOWFRAME tag"
+#: libcore/DisplayList.cpp:404
+msgid ""
+"First argument to DisplayList::swapDepth() is NOT a DisplayObject in the "
+"list. Call ignored."
msgstr ""
+"DisplayList::swapDepth() ç第ä¸ä¸ªåæ°ä¸æ¯ä¸ä¸ªå表ä¸çDisplayObjectãè°ç¨è¢«å¿½"
+"ç¥ã"
-#: libcore/parser/SWFParser.cpp:100
+#: libcore/DisplayList.cpp:875
#, c-format
msgid ""
-"Encountered unknown tag %d. These usually store creation tool data and do "
-"not affect playback"
+"mergeDisplayList: DisplayObject %s (%s at depth %d [%d]) about to be "
+"discarded in given display list is not marked as unloaded and not found in "
+"the merged current displaylist"
msgstr ""
+"mergeDisplayList: å¨ç»å®çæ¾ç¤ºå表ä¸è¢«ä¸¢å¼ç DisplayObject %s (%s 卿·±åº¦ %d "
+"[%d]) æªæ 记为å¸è½½ï¼å¹¶ä¸æ²¡æå¨åå¹¶åçå½åæ¾ç¤ºå表ä¸è¢«æ¾å°"
-#: libcore/parser/SWFParser.cpp:105
-#, c-format
-msgid "tag dump follows: %s"
-msgstr ""
+#: libcore/LoadVariablesThread.cpp:75
+#, fuzzy, c-format
+msgid "%s to UTF8 conversion in MovieClip.loadVariables input parsing"
+msgstr "MovieClipä¸ %s å°UTF8ç转æ¢ãloadVariablesè¾å
¥è§£æ"
-#: libcore/parser/SWFParser.cpp:113
+#: libcore/LoadVariablesThread.cpp:124
#, c-format
-msgid "Parsing exception: %s"
-msgstr ""
+msgid "Stream couldn't seek to end: %s"
+msgstr "æ æ³å®ä½å°æµç»æï¼%s"
-#: libcore/parser/SWFMovieDefinition.cpp:255
+#: libcore/LoadVariablesThread.cpp:129
#, c-format
-msgid "Add sound sample %d assigning id %d"
-msgstr ""
-
-#: libcore/parser/SWFMovieDefinition.cpp:284
msgid ""
-"gnash::SWFMovieDefinition::read() -- file does not start with a SWF header"
-msgstr ""
+"Size of 'variables' stream advertised to be %d bytes, but turned out to be "
+"%d bytes."
+msgstr "âå¯åâæµç大尿 ææ¯ %d åèï¼ä½å®é
䏿¯ %d åèã"
-#: libcore/parser/SWFMovieDefinition.cpp:291
+#: libcore/Button.cpp:477
#, c-format
-msgid "version: %d, file_length: %d"
-msgstr ""
+msgid "Unhandled button event %s"
+msgstr "æªå¤ççæé®äºä»¶ %s"
-#: libcore/parser/SWFMovieDefinition.cpp:296
-msgid ""
-"SWFMovieDefinition::read(): unable to read zipped SWF data; gnash was "
-"compiled without zlib support"
-msgstr ""
+#: libcore/Button.cpp:789
+msgid "Button placed with an init object. This will be ignored."
+msgstr "ç¨ä¸ä¸ªåå§åçå¯¹è±¡æ¥æ¾ç½®æé®ãå°è¢«å¿½ç¥ã"
-#: libcore/parser/SWFMovieDefinition.cpp:301
-msgid "file is compressed"
-msgstr ""
+#: libcore/Button.cpp:957
+msgid "Enabled"
+msgstr "å¯ç¨"
-#: libcore/parser/SWFMovieDefinition.cpp:320
-msgid "non-finite movie bounds"
-msgstr ""
+#: libcore/Button.cpp:962
+msgid "Button state"
+msgstr "æé®ç¶æ"
-#: libcore/parser/SWFMovieDefinition.cpp:336
-#, c-format
-msgid "frame size = %s, frame rate = %f, frames = %d"
-msgstr ""
+#: libcore/Button.cpp:966
+msgid "Action characters"
+msgstr "å¨ä½äººç©"
-#: libcore/parser/SWFMovieDefinition.cpp:360
-msgid "Could not start loading thread"
-msgstr ""
+#: libcore/Button.cpp:995
+msgid "Button.blendMode"
+msgstr "Button.blendMode"
-#: libcore/parser/SWFMovieDefinition.cpp:431
-#, c-format
-msgid "Could not find char %d, dump is: %s"
-msgstr ""
+#: libcore/Button.cpp:1004
+msgid "Button.cacheAsBitmap"
+msgstr "Button.cacheAsBitmap"
-#: libcore/parser/SWFMovieDefinition.cpp:490
-msgid "Error while parsing SWF stream."
-msgstr ""
+#: libcore/Button.cpp:1013
+msgid "Button.filters"
+msgstr "Button.filters"
-#: libcore/parser/SWFMovieDefinition.cpp:502
-#, c-format
-msgid "%d control tags are NOT followed by a SHOWFRAME tag"
-msgstr ""
+#: libcore/Button.cpp:1022
+msgid "Button.scale9Grid"
+msgstr "Button.scale9Grid"
-#: libcore/parser/SWFMovieDefinition.cpp:510
-#, c-format
-msgid ""
-"%d frames advertised in header, but only %d SHOWFRAME tags found in stream. "
-"Pretending we loaded all advertised frames"
-msgstr ""
+#: libcore/Button.cpp:1031
+msgid "Button.getTabIndex"
+msgstr "Button.getTabIndex"
-#: libcore/parser/SWFMovieDefinition.cpp:538
-#, c-format
-msgid ""
-"number of SHOWFRAME tags in SWF stream '%s' (%d) exceeds the advertised "
-"number in header (%d)."
-msgstr ""
+#: libcore/Button.cpp:1040
+msgid "Button.setTabIndex"
+msgstr "Button.setTabIndex"
-#: libcore/parser/SWFMovieDefinition.cpp:605
-msgid "More than one JPEGTABLES tag found: not resetting JPEG loader"
-msgstr ""
+#: libcore/DisplayObjectContainer.cpp:74
+msgid "Children"
+msgstr "å©å们"
-#: libcore/parser/SWFMovieDefinition.cpp:745
+#: libcore/PropertyList.cpp:274
#, c-format
-msgid "import error: could not find resource '%s' in movie '%s'"
-msgstr ""
+msgid "Property %s already exists, can't addDestructiveGetter"
+msgstr "屿§ %s å·²ç»åå¨ï¼ä¸è½ addDestructiveGetter"
-#: libcore/Video.cpp:57
-msgid "No Media handler registered, won't be able to decode embedded video"
-msgstr ""
+#: libdevice/rawfb/RawFBDevice.cpp:63
+msgid "Couldn't initialize RAWFB device!"
+msgstr "æ æ³åå§å RAWFB 设å¤ï¼"
-#: libcore/Video.cpp:69
-#, c-format
-msgid "Could not create Video Decoder: %s"
-msgstr ""
+#: libdevice/rawfb/RawFBDevice.cpp:95
+msgid "Freeing framebuffer memory"
+msgstr "鿾叧ç¼å²å
å"
-#: libcore/Video.cpp:138
-msgid "No Video info in video definition"
-msgstr ""
+#: libdevice/rawfb/RawFBDevice.cpp:100
+msgid "Freeing offscreen buffer"
+msgstr "éæ¾ç¦»å±ç¼å²"
-#: libcore/as_function.cpp:94
+#: libdevice/rawfb/RawFBDevice.cpp:119
#, c-format
-msgid "Native function called as constructor threw exception: %s"
-msgstr ""
+msgid "WARNING: Using %s as a fake framebuffer!"
+msgstr "è¦åï¼æ£å¨ä½¿ç¨åç帧ç¼å² %sï¼"
-#: libcore/movie_root.cpp:238
+#: libdevice/rawfb/RawFBDevice.cpp:138
#, c-format
-msgid "ActionParserException thrown during setRootMovie: %s"
-msgstr ""
+msgid "Could not open framebuffer device: %s"
+msgstr "æ æ³æå¼å¸§ç¼å²è®¾å¤ï¼%s"
-#: libcore/movie_root.cpp:253
+#: libdevice/rawfb/RawFBDevice.cpp:141
#, c-format
-msgid "No user interface registered, assuming 'Yes' answer to question: %s"
-msgstr ""
+msgid "Opened framebuffer device: %s"
+msgstr "å·²æå¼ç帧ç¼å²è®¾å¤: %s"
-#: libcore/movie_root.cpp:402 libcore/movie_root.cpp:412
+#: libdevice/rawfb/RawFBDevice.cpp:177
+msgid "LUT8: Setting up colormap"
+msgstr "LUT8ï¼è®¾ç½®è²å½©å¯¹ç
§è¡¨"
+
+#: libdevice/rawfb/RawFBDevice.cpp:202
#, c-format
-msgid ""
-"%s.swapDepth(%d): movie has a depth (%d) below static depth zone (%d), won't "
-"swap its depth"
-msgstr ""
+msgid "LUT8: Error setting colormap: %s"
+msgstr "LUT8ï¼è®¾ç½®è²å½©å¯¹ç
§è¡¨éè¯¯ï¼ %s"
-#: libcore/movie_root.cpp:470
-msgid ""
-"movie_root::dropLevel called against a movie not found in the levels "
-"container"
-msgstr ""
+#: libdevice/rawfb/RawFBDevice.cpp:407
+msgid "Couldn't write to the fake cmap!"
+msgstr "æ æ³åå
¥åçè²å½©å¯¹ç
§è¡¨ï¼"
-#: libcore/movie_root.cpp:477
-msgid "Original root movie can't be removed"
-msgstr ""
+#: libdevice/rawfb/RawFBDevice.cpp:411
+msgid "Couldn't write to the fake cmap, unknown type!"
+msgstr "æ æ³åå
¥åçè²å½©å¯¹ç
§è¡¨ï¼æªç¥ç±»åï¼"
-#: libcore/movie_root.cpp:496
-#, c-format
-msgid ""
-"TESTME: loadMovie called on level %d which is not available at load time, "
-"skipped placement for now"
-msgstr ""
+#: libdevice/rawfb/RawFBDevice.cpp:425
+msgid "Signaled fbe to reload it's colormap."
+msgstr "éç¥ fbe éæ°å è½½å®çè²å½©å¯¹ç
§è¡¨ã"
-#: libcore/movie_root.cpp:627
+#: libdevice/rawfb/RawFBDevice.cpp:432
#, c-format
-msgid "ActionLimits hit notifying key listeners: %s."
-msgstr ""
-
-#: libcore/movie_root.cpp:864
-msgid ""
-"movie_root tracking a streaming sound, but the sound handler is not "
-"streaming!"
-msgstr ""
-
-#: libcore/movie_root.cpp:896
-msgid ""
-"Time exceeded (%1% secs) while attempting to catch up to streaming sound. "
-"Give up on synchronization?"
-msgstr ""
+msgid "fakefb_ioctl(%d)"
+msgstr "fakefb_ioctl(%d)"
-#: libcore/movie_root.cpp:948
+#: libdevice/vaapi/VaapiImage.cpp:38
#, c-format
-msgid "Buffer overread during advance: %s"
-msgstr ""
+msgid "VaapiImage::VaapiImage(): format '%s'\n"
+msgstr "VaapiImage::VaapiImage(): format '%s'\n"
-#: libcore/movie_root.cpp:1066
+#: libdevice/vaapi/VaapiImage.cpp:82
#, c-format
-msgid "ActionLimits hit notifying mouse events: %s."
-msgstr ""
+msgid " image 0x%08x, format '%s'\n"
+msgstr "å¾å 0x%08x, æ ¼å¼ '%s'\n"
-#: libcore/movie_root.cpp:1558
+#: libdevice/vaapi/VaapiSurfaceGLX.cpp:205
#, c-format
-msgid "Couldn't process ExternalInterface Call %s"
-msgstr ""
-
-#: libcore/movie_root.cpp:1603
-msgid "ExternalInterface::GotoFrame()"
-msgstr ""
-
-#: libcore/movie_root.cpp:1611
-msgid "ExternalInterface::LoadMovie()"
-msgstr ""
+msgid " -> surface %p\n"
+msgstr "-> surface %p\n"
-#: libcore/movie_root.cpp:1676 gui/Player.cpp:713
+#: libdevice/vaapi/VaapiSurfaceGLX.cpp:212
#, c-format
-msgid "Could not write to user-provided host requests fd %d: %s"
-msgstr "æ æ³åå
¥ç¨æ·æä¾ç主æºè¯·æ±æä»¶æè¿°ç¬¦ %dï¼%s"
+msgid "VaapiSurface::~VaapiSurface(): surface %p\n"
+msgstr "VaapiSurface::~VaapiSurface(): surface %p\n"
-#: libcore/movie_root.cpp:1837 libcore/movie_root.cpp:1869
-#: libcore/movie_root.cpp:1925
+#: libdevice/vaapi/VaapiSurfaceGLX.cpp:266
#, c-format
-msgid "Could not write to browser fd #%d: %s"
-msgstr ""
+msgid "VaapiSurfaceGLX::update(): from surface 0x%08x\n"
+msgstr "VaapiSurfaceGLX::update(): from surface 0x%08x\n"
-#: libcore/movie_root.cpp:2155
+#: libdevice/vaapi/VaapiSurface.cpp:77
#, c-format
-msgid "Fork failed launching URL opener '%s'"
-msgstr ""
+msgid "VaapiSurface::~VaapiSurface(): surface 0x%08x\n"
+msgstr "VaapiSurface::~VaapiSurface(): surface 0x%08x\n"
-#: libcore/movie_root.cpp:2202
+#: libdevice/vaapi/VaapiSubpicture.cpp:35
#, c-format
-msgid "Could only write %d bytes to fd #%d"
-msgstr ""
-
-#: libcore/movie_root.cpp:2290
-msgid "Live MovieClips"
-msgstr ""
+msgid "VaapiSubpicture::VaapiSubpicture(): format '%s'\n"
+msgstr "VaapiSubpicture::VaapiSubpicture(): format '%s'\n"
-#: libcore/movie_root.cpp:2419
+#: libdevice/vaapi/VaapiSurfaceProxy.cpp:31
#, c-format
-msgid "%s to UTF8 conversion in LoadableObject input parsing"
-msgstr ""
+msgid "VaapiSurfaceProxy::VaapiSurfaceProxy(): surface 0x%08x\n"
+msgstr "VaapiSurfaceProxy::VaapiSurfaceProxy(): surface 0x%08x\n"
-#: libcore/movie_root.cpp:2442
+#: libdevice/vaapi/VaapiSurfaceProxy.cpp:36
#, c-format
-msgid ""
-"Hosting application registered no callback for events/queries, can't call %s"
-"(%s)"
-msgstr ""
+msgid "VaapiSurfaceProxy::~VaapiSurfaceProxy(): surface 0x%08x\n"
+msgstr "VaapiSurfaceProxy::~VaapiSurfaceProxy(): surface 0x%08x\n"
-#: libcore/abc/AbcBlock.cpp:65 libcore/abc/AbcBlock.cpp:133
-msgid "ABC: Finalizing trait yielded bad type for slot."
-msgstr ""
+#: libdevice/x11/X11Device.cpp:88 libdevice/x11/X11Device.cpp:106
+msgid "Couldn't initialize X11 device!"
+msgstr "æ æ³åå§å X11 设å¤!"
-#: libcore/abc/AbcBlock.cpp:188
-msgid "ABC: Bad name for trait."
-msgstr ""
+#: libdevice/x11/X11Device.cpp:142
+msgid "couldn't open X11 display!"
+msgstr "æ æ³æå¼ X11 æ¾ç¤ºï¼"
-#: libcore/abc/AbcBlock.cpp:193
-msgid "ABC: Trait name must be fully qualified."
-msgstr ""
+#: libdevice/x11/X11Device.cpp:162
+msgid "Error: couldn't get X visual\n"
+msgstr "é误: æ æ³è·å X å¯è§å\n"
-#: libcore/abc/AbcBlock.cpp:240 libcore/abc/AbcBlock.cpp:266
-msgid "Bad method id in trait."
-msgstr ""
+#: libdevice/x11/X11Device.cpp:199
+msgid "The default Display is not set!"
+msgstr "ç¼ºçæ¾ç¤ºæªè®¾ç½®ï¼"
-#: libcore/abc/AbcBlock.cpp:256
-msgid "Bad Class id in trait."
-msgstr ""
+#: libdevice/x11/X11Device.cpp:212
+msgid "No Display device set!"
+msgstr "没æè®¾ç½®æ¾ç¤ºè®¾å¤ï¼"
-#: libcore/abc/AbcBlock.cpp:274
-msgid "ABC: Unknown type of trait."
-msgstr ""
+#: libdevice/x11/X11Device.cpp:217
+msgid "No drawable window set!"
+msgstr "没æè®¾ç½®å¯ç»å¶çªå£ï¼"
-#: libcore/abc/AbcBlock.cpp:468
+#: libdevice/egl/eglDevice.cpp:86 libdevice/egl/eglDevice.cpp:108
+msgid "Couldn't initialize EGL device!"
+msgstr "æ æ³åå§å EGL 设å¤!"
+
+#: libdevice/egl/eglDevice.cpp:111
#, c-format
-msgid "Abc Version: %d.%d"
-msgstr ""
+msgid "Couldn't bind client to type %d!"
+msgstr "æ æ³ç»å®å®¢æ·ç«¯å°ç±»å %d!"
-#: libcore/abc/AbcBlock.cpp:567
-msgid "ABC: Bad string given for namespace."
-msgstr ""
+#: libdevice/egl/eglDevice.cpp:181
+#, c-format
+msgid "eglGetDisplay() failed (error 0x%x)"
+msgstr "eglGetDisplay() 失败 (é误 0x%x)"
-#: libcore/abc/AbcBlock.cpp:609
-msgid "ABC: Bad namespace for namespace set."
-msgstr ""
+#: libdevice/egl/eglDevice.cpp:187
+#, c-format
+msgid "eglInitialize() failed (error %s)"
+msgstr "eglInitialize() 失败 (é误 %s)"
-#: libcore/abc/AbcBlock.cpp:679
+#: libdevice/egl/eglDevice.cpp:197
#, c-format
-msgid "Action Block: Unknown multiname type (%d)."
-msgstr ""
+msgid "EGL_CLIENT_APIS = %s"
+msgstr "EGL_CLIENT_APIS = %s"
-#: libcore/abc/AbcBlock.cpp:712 libcore/abc/AbcBlock.cpp:722
-#: libcore/abc/AbcBlock.cpp:732 libcore/abc/AbcBlock.cpp:742
-msgid "Action Block: Bad index in optional argument."
-msgstr ""
+#: libdevice/egl/eglDevice.cpp:198
+#, c-format
+msgid "EGL_EXTENSIONS = %s"
+msgstr "EGL_EXTENSIONS = %s"
-#: libcore/abc/AbcBlock.cpp:752
-msgid "ABC: Bad index in optional argument, namespaces."
-msgstr ""
+#: libdevice/egl/eglDevice.cpp:199
+#, c-format
+msgid "EGL_VERSION = %s, EGL_VENDOR = %s"
+msgstr "EGL_VERSION = %s, EGL_VENDOR = %s"
-#: libcore/abc/AbcBlock.cpp:774
+#: libdevice/egl/eglDevice.cpp:208 libdevice/egl/eglDevice.cpp:547
+#: gui/gtk/gtk_glue_ovg.cpp:383
#, c-format
-msgid "ABC: Bad default value type (%X), but continuing."
-msgstr ""
+msgid "eglGetConfigs() failed to retrieve the number of configs (error %s)"
+msgstr "eglGetConfigs() æ æ³ååé
ç½®æ°ç®(é误 %s)"
-#: libcore/abc/AbcBlock.cpp:812
-msgid "ABC: Bad return type for method info."
-msgstr ""
+#: libdevice/egl/eglDevice.cpp:213 libdevice/egl/eglDevice.cpp:552
+#: gui/gtk/gtk_glue_ovg.cpp:388
+msgid "No EGLconfigs found\n"
+msgstr "æªæ¾å° EGLconfigs\n"
-#: libcore/abc/AbcBlock.cpp:825
-msgid "ABC: Unknown return type."
-msgstr ""
+#: libdevice/egl/eglDevice.cpp:216 libdevice/egl/eglDevice.cpp:555
+#, c-format
+msgid "Max number of EGL Configs is %d"
+msgstr "EGLé
ç½®çæå¤§æ°éæ¯ %d"
-#: libcore/abc/AbcBlock.cpp:842
-msgid "ABC: Bad parameter type in method."
-msgstr ""
+#: libdevice/egl/eglDevice.cpp:231
+msgid "Using the 32bpp, low quality configuration"
+msgstr "ä½¿ç¨ 32bpp, ä½åè´¨é
ç½®"
-#: libcore/abc/AbcBlock.cpp:851
-msgid "ABC: Unknown parameter type."
-msgstr ""
+#: libdevice/egl/eglDevice.cpp:233
+msgid "eglChooseConfig(32-low) failed"
+msgstr "eglChooseConfig(32-low) 失败"
-#: libcore/abc/AbcBlock.cpp:940
-msgid "ABC: Out of bounds instance name."
-msgstr ""
+#: libdevice/egl/eglDevice.cpp:237
+msgid "Using the 16bpp, low quality configuration"
+msgstr "ä½¿ç¨ 16bpp, ä½åè´¨é
ç½®"
-#: libcore/abc/AbcBlock.cpp:948
-msgid "ABC: QName required for instance."
-msgstr ""
+#: libdevice/egl/eglDevice.cpp:239
+msgid "eglChooseConfig(16-low) failed"
+msgstr "eglChooseConfig(16-low) 失败"
-#: libcore/abc/AbcBlock.cpp:953
-msgid "ABC: No namespace to use for storing class."
-msgstr ""
+#: libdevice/egl/eglDevice.cpp:248
+msgid "Using the 32bpp, medium quality configuration"
+msgstr "ä½¿ç¨ 32bpp, ä¸çåè´¨é
ç½®"
-#: libcore/abc/AbcBlock.cpp:968
-msgid "Duplicate class registration."
-msgstr ""
+#: libdevice/egl/eglDevice.cpp:250
+msgid "eglChooseConfig(32-medium) failed"
+msgstr "eglChooseConfig(32-medium) 失败"
-#: libcore/abc/AbcBlock.cpp:984
-msgid "ABC: Bad super type."
-msgstr ""
+#: libdevice/egl/eglDevice.cpp:254 libdevice/egl/eglDevice.cpp:271
+msgid "Using the 16bpp, medium quality configuration"
+msgstr "ä½¿ç¨ 16bpp, ä¸çåè´¨é
ç½®"
-#: libcore/abc/AbcBlock.cpp:995
-#, c-format
-msgid "ABC: Super type not found (%s)"
-msgstr ""
+#: libdevice/egl/eglDevice.cpp:256
+msgid "eglChooseConfig(16-medium) failed"
+msgstr "eglChooseConfig(16-medium) 失败"
-#: libcore/abc/AbcBlock.cpp:1002
-msgid "ABC: Can't extend a class which is final."
-msgstr ""
+#: libdevice/egl/eglDevice.cpp:265
+msgid "Using the 32bpp, high quality configuration"
+msgstr "ä½¿ç¨ 32bpp, é«åè´¨é
ç½®"
-#: libcore/abc/AbcBlock.cpp:1008
-msgid "ABC: Can't extend an interface type."
-msgstr ""
+#: libdevice/egl/eglDevice.cpp:267
+msgid "eglChooseConfig(32-high) failed"
+msgstr "eglChooseConfig(32-high) 失败"
-#: libcore/abc/AbcBlock.cpp:1014
-msgid "ABC: Class cannot be its own supertype."
-msgstr ""
+#: libdevice/egl/eglDevice.cpp:273
+msgid "eglChooseConfig(16-high) failed"
+msgstr "eglChooseConfig(16-high) 失败"
-#: libcore/abc/AbcBlock.cpp:1035
-msgid "ABC: Bad namespace for protected."
-msgstr ""
+#: libdevice/egl/eglDevice.cpp:283
+msgid "EGL configuration doesn't match!"
+msgstr "EGL é
ç½®ä¸å¹é
ï¼"
-#: libcore/abc/AbcBlock.cpp:1054
-msgid "ABC: Bad name for interface."
-msgstr ""
+#: libdevice/egl/eglDevice.cpp:319
+#, c-format
+msgid "eglGetConfigAttrib() failed (error %s)"
+msgstr "eglGetConfigAttrib() 失败 (é误 %s)"
-#: libcore/abc/AbcBlock.cpp:1061
-msgid "ABC: Can't implement a non-interface type."
-msgstr ""
+#: libdevice/egl/eglDevice.cpp:323
+#, c-format
+msgid "EGL native visual is: %d"
+msgstr "EGL åçè§è§ä¸º: %d"
-#: libcore/abc/AbcBlock.cpp:1073
-msgid "ABC: Out of bounds method for initializer."
-msgstr ""
+#: libdevice/egl/eglDevice.cpp:339
+msgid "Initializing EGL for OpenGLES2"
+msgstr "åå§å OpenGLES2 ç EGL"
-#: libcore/abc/AbcBlock.cpp:1108
-msgid "ABC: Out of bound static constructor for class."
-msgstr ""
+#: libdevice/egl/eglDevice.cpp:341 libdevice/egl/eglDevice.cpp:361
+#, c-format
+msgid "eglBindAPI() failed to retrieve the number of configs (error %s)"
+msgstr "eglBindAPI() æ æ³è·åé
ç½®çæ°é (é误 %s)"
-#: libcore/abc/AbcBlock.cpp:1147
-msgid "ABC: Out of bounds method for script."
-msgstr ""
+#: libdevice/egl/eglDevice.cpp:349
+msgid "Initializing EGL for OpenGLES1"
+msgstr "åå§å OpenGLES1 ç EGL"
-#: libcore/abc/AbcBlock.cpp:1183
-msgid "ABC: Out of bounds for method body."
-msgstr ""
+#: libdevice/egl/eglDevice.cpp:351
+#, c-format
+msgid "eglBindAPI() failed to retrive the number of configs (error %s)"
+msgstr "eglBindAPI() æ æ³è·åé
ç½®çæ°é (é误 %s)"
-#: libcore/abc/AbcBlock.cpp:1190
-msgid "ABC: Only one body per method."
-msgstr ""
+#: libdevice/egl/eglDevice.cpp:359
+msgid "Initializing EGL for OpenVG"
+msgstr "åå§å OpenVG ç EGL"
-#: libcore/abc/AbcBlock.cpp:1236
-msgid "ABC: Out of bound type for exception."
-msgstr ""
+#: libdevice/egl/eglDevice.cpp:394
+msgid "Initializing EGL Surface"
+msgstr "åå§å EGL 表é¢"
-#: libcore/abc/AbcBlock.cpp:1246
+#: libdevice/egl/eglDevice.cpp:401
#, c-format
-msgid "ABC: Unknown type of object to catch. (%s)"
-msgstr ""
+msgid "eglCreateWindowSurface failed (error %s)"
+msgstr "eglCreateWindowSurface 失败 (é误 %s)"
-#: libcore/abc/AbcBlock.cpp:1264
-msgid "ABC: Out of bound name for caught exception."
-msgstr ""
+#: libdevice/egl/eglDevice.cpp:415
+#, c-format
+msgid "eglCreateContext failed (error %s)"
+msgstr "eglCreateContext 失败 (é误 %s)"
-#: libcore/MovieFactory.cpp:79
-msgid ""
-"Requested to keep from completely loading a movie, but the movie in question "
-"is an image, for which we don't yet have the concept of a 'loading thread'"
-msgstr ""
+#: libdevice/egl/eglDevice.cpp:427
+#, c-format
+msgid "eglMakeCurrent failed (error %s)"
+msgstr "eglMakeCurrent 失败 (é误 %s)"
-#: libcore/MovieFactory.cpp:94
-msgid "FLV can't be loaded directly as a movie"
-msgstr ""
+#: libdevice/egl/eglDevice.cpp:559 gui/gtk/gtk_glue_ovg.cpp:395
+msgid "Out of memory\n"
+msgstr "å
åä¸è¶³\n"
-#: libcore/MovieFactory.cpp:98
-msgid "Unknown file type"
-msgstr ""
+#: libdevice/egl/eglDevice.cpp:564
+#, fuzzy, c-format
+msgid "eglGetConfigs() failed to retrieve the configs (error %s)"
+msgstr "eglGetConfigs() æ æ³ååé
ç½®(é
ç½® %s)"
-#: libcore/MovieFactory.cpp:133
+#: libdevice/egl/eglDevice.cpp:777
#, c-format
-msgid "Couldn't load library movie '%s'"
-msgstr ""
+msgid "eglCreatePbufferSurface() failed (error 0x%x)"
+msgstr "eglCreatePbufferSurface() 失败 (é误 0x%x)"
-#: libcore/MovieFactory.cpp:173
-msgid "Can't read file header"
-msgstr ""
+#: libdevice/egl/eglDevice.cpp:797 libdevice/egl/eglDevice.cpp:818
+#, c-format
+msgid "eglCreatePbufferFromClientBuffer() failed (error 0x%x)"
+msgstr "eglCreatePbufferFromClientBuffer() 失败 (é误 0x%x)"
-#: libcore/MovieFactory.cpp:212
-msgid "Can't read 3 bytes after an MZ (.exe) header"
-msgstr ""
+#: libdevice/events/UinputDevice.cpp:46
+msgid "ioctl(UI_DEV_DESTROY)"
+msgstr "ioctl(UI_DEV_DESTROY)"
-#: libcore/MovieFactory.cpp:222
-msgid "Could not find SWF inside an .exe file"
-msgstr ""
+#: libdevice/events/UinputDevice.cpp:77 libdevice/events/MouseDevice.cpp:94
+#: libdevice/events/TouchDevice.cpp:312 libdevice/events/EventDevice.cpp:703
+#, c-format
+msgid "You don't have the proper permissions to open %s"
+msgstr "æ¨æ²¡æéå½çæéæ¥æå¼ %s"
-#: libcore/MovieFactory.cpp:231
+#: libdevice/events/UinputDevice.cpp:82
#, c-format
-msgid "unknown file type, buffer is %c%c%c"
-msgstr ""
+msgid "Found a User mode input device at %s"
+msgstr "å¨ %s æ¾å°ä¸ä¸ªç¨æ·æ¨¡å¼çè¾å
¥è®¾å¤"
-#: libcore/MovieFactory.cpp:273
+#: libdevice/events/UinputDevice.cpp:98
+msgid "User Mode Input device not initialized yet!"
+msgstr "ç¨æ·æ¨¡å¼è¾å
¥è®¾å¤å°æªåå§åï¼"
+
+#: libdevice/events/UinputDevice.cpp:103
+msgid "ioctl(UI_SET_EVBIT, EV_KEY)"
+msgstr "ioctl(UI_SET_EVBIT, EV_KEY)"
+
+#: libdevice/events/UinputDevice.cpp:109
+msgid "ioctl(UI_SET_EVBIT, EV_REL)"
+msgstr "ioctl(UI_SET_EVBIT, EV_REL)"
+
+#: libdevice/events/UinputDevice.cpp:113
+msgid "ioctl(UI_SET_RELBIT, REL_X)"
+msgstr "ioctl(UI_SET_RELBIT, REL_X)"
+
+#: libdevice/events/UinputDevice.cpp:117
+msgid "ioctl( UI_SET_RELBIT, REL_Y)"
+msgstr "ioctl(UI_SET_RELBIT, REL_X)"
+
+#: libdevice/events/UinputDevice.cpp:142
+msgid "write uidev"
+msgstr "åå
¥ uidev"
+
+#: libdevice/events/UinputDevice.cpp:147
#, c-format
-msgid "Can't read image file from %s"
-msgstr ""
+msgid "ioctl(UI_SET_EVBIT, EV_ABS): %s"
+msgstr "ioctl(UI_SET_EVBIT, EV_ABS): %s"
-#: libcore/MovieFactory.cpp:283
+#: libdevice/events/UinputDevice.cpp:151
#, c-format
-msgid "Parsing error: %s"
-msgstr ""
+msgid "ioctl(UI_SET_ABSBIT,ABS_X): %s"
+msgstr "ioctl(UI_SET_ABSBIT,ABS_X): %s"
-#: libcore/MovieFactory.cpp:309
+#: libdevice/events/UinputDevice.cpp:155
#, c-format
-msgid "failed to open '%s'; can't create movie"
-msgstr ""
+msgid "ioctl(UI_SET_ABSBIT, ABS_Y): %s"
+msgstr "ioctl(UI_SET_ABSBIT, ABS_Y): %s"
-#: libcore/MovieFactory.cpp:314
+#: libdevice/events/UinputDevice.cpp:161
#, c-format
-msgid "streamProvider opener can't open '%s'"
-msgstr ""
+msgid "ioctl(UI_SET_KEYBIT, BTN_LEFT)): %s"
+msgstr "ioctl(UI_SET_KEYBIT, BTN_LEFT)): %s"
-#: libcore/PropertyList.cpp:274
+#: libdevice/events/UinputDevice.cpp:165
#, c-format
-msgid "Property %s already exists, can't addDestructiveGetter"
-msgstr ""
+msgid "ioctl(UI_SET_KEYBIT, BTN_RIGHT): %s"
+msgstr "ioctl(UI_SET_KEYBIT, BTN_RIGHT): %s"
-#: libcore/as_object.cpp:439
+#: libdevice/events/UinputDevice.cpp:169
#, c-format
-msgid "Caught exception: %s"
-msgstr ""
+msgid "ioctl(UI_SET_EVBIT, ABS_PRESSURE): %s"
+msgstr "ioctl(UI_SET_EVBIT, ABS_PRESSURE): %s"
-#: libcore/as_object.cpp:627
+#: libdevice/events/UinputDevice.cpp:177
#, c-format
-msgid "Attempt to set read-only property '%s'"
-msgstr ""
+msgid "ioctl(UI_SET_KEYBIT, BTN_MOUSE): %s"
+msgstr "ioctl(UI_SET_KEYBIT, BTN_MOUSE): %s"
-#: libcore/as_object.cpp:639
+#: libdevice/events/UinputDevice.cpp:182
+msgid "ioctl(UI_DEV_CREATED) failed!"
+msgstr "ioctl(UI_DEV_CREATED) 失败ï¼"
+
+#: libdevice/events/MouseDevice.cpp:99
#, c-format
-msgid "%s: %s"
-msgstr ""
+msgid "Found a %s device for mouse input using %s"
+msgstr "æ¾å°ä¸ä¸ªé¼ æ è¾å
¥ç %s è®¾å¤æ£å¨ä½¿ç¨ %s"
-#: libcore/as_object.cpp:654
+#: libdevice/events/MouseDevice.cpp:145 libdevice/events/EventDevice.cpp:74
#, c-format
-msgid "Unknown failure in setting property '%s' on object '%p'"
-msgstr ""
+msgid "Could not open %s: %s"
+msgstr "æ æ³æå¼ %s: %s"
-#: libcore/as_object.cpp:683
+#: libdevice/events/MouseDevice.cpp:151
#, c-format
-msgid "Attempt to initialize read-only property '%s' on object '%p' twice"
-msgstr ""
+msgid "Could not set non-blocking mode for mouse device: %s"
+msgstr "æ æ³ä¸ºé¼ æ 设å¤è®¾ç½®éé»å¡æ¨¡å¼ï¼%s"
-#: libcore/as_object.cpp:845
-msgid "Circular inheritance chain detected during isPrototypeOf call"
-msgstr ""
+#: libdevice/events/MouseDevice.cpp:170
+msgid "Mouse reset failed"
+msgstr "é¼ æ å¤ä½å¤±è´¥"
-#: libdevice/egl/eglDevice.cpp:86 libdevice/egl/eglDevice.cpp:108
-msgid "Couldn't initialize EGL device!"
-msgstr ""
+#: libdevice/events/MouseDevice.cpp:180
+msgid "WARNING: Could not detect mouse device ID"
+msgstr "è¦åï¼æ æ³æ£æµå°é¼ æ 设å¤ID"
-#: libdevice/egl/eglDevice.cpp:111
+#: libdevice/events/MouseDevice.cpp:184
#, c-format
-msgid "Couldn't bind client to type %d!"
-msgstr ""
+msgid "WARNING: Non-standard mouse device ID %d"
+msgstr "è¦åï¼éæ åçé¼ æ 设å¤ID %d"
-#: libdevice/egl/eglDevice.cpp:181
+#: libdevice/events/MouseDevice.cpp:189
+msgid "Could not activate Data Reporting mode for mouse"
+msgstr "æ æ³æ¿æ´»é¼ æ çæ°æ®æ¥å模å¼"
+
+#: libdevice/events/MouseDevice.cpp:197
#, c-format
-msgid "eglGetDisplay() failed (error 0x%x)"
-msgstr ""
+msgid "Mouse enabled for %s on fd #%d"
+msgstr "å¯ç¨é¼ æ %s 卿件æè¿°ç¬¦ #%d"
-#: libdevice/egl/eglDevice.cpp:187
+#: libdevice/events/MouseDevice.cpp:257
+msgid "No sync in first byte!"
+msgstr "没æå¨ç¬¬ä¸ä¸ªåè忥ï¼"
+
+#: libdevice/events/MouseDevice.cpp:311
+msgid "Vertical mouse movement overflow bit set"
+msgstr "åç´é¼ æ ç§»å¨ overflow ä½è®¾ç½®"
+
+#: libdevice/events/MouseDevice.cpp:314
+msgid "Horizontal mouse movement overflow bit set"
+msgstr "æ°´å¹³é¼ æ ç§»å¨ overflow ä½è®¾ç½®"
+
+#: libdevice/events/MouseDevice.cpp:320
+msgid "Horizontal mouse movement negative bit set"
+msgstr "水平移å¨é¼ æ negative ä½è®¾ç½®"
+
+#: libdevice/events/MouseDevice.cpp:325
+msgid "Vertical mouse movement negative bit set"
+msgstr "åç´ç§»å¨é¼ æ negative ä½è®¾ç½®"
+
+#: libdevice/events/MouseDevice.cpp:330
#, c-format
-msgid "eglInitialize() failed (error %s)"
-msgstr ""
+msgid "PS/2 Mouse: Xmove=%d, Ymove=%d, Button %d"
+msgstr "PS/2 é¼ æ : Xmove=%d, Ymove=%d, æé® %d"
-#: libdevice/egl/eglDevice.cpp:197
+#: libdevice/events/MouseDevice.cpp:347
#, c-format
-msgid "EGL_CLIENT_APIS = %s"
-msgstr ""
+msgid "convert: Xin=%d, Yin=%d, Xout=%d, Yout=%d"
+msgstr "转æ¢: Xin=%d, Yin=%d, Xout=%d, Yout=%d"
-#: libdevice/egl/eglDevice.cpp:198
+#: libdevice/events/MouseDevice.cpp:354
#, c-format
-msgid "EGL_EXTENSIONS = %s"
-msgstr ""
+msgid "read mouse: X=%d, Y=%d, Btn: btn %d"
+msgstr "读åé¼ æ : X=%d, Y=%d, Btn: btn %d"
-#: libdevice/egl/eglDevice.cpp:199
+#: libdevice/events/MouseDevice.cpp:362
#, c-format
-msgid "EGL_VERSION = %s, EGL_VENDOR = %s"
-msgstr ""
+msgid "mouse click! %d"
+msgstr "é¼ æ ç¹å»! %d"
-#: libdevice/egl/eglDevice.cpp:208 libdevice/egl/eglDevice.cpp:543
-#: gui/gtk/gtk_glue_ovg.cpp:383
+#: libdevice/events/MouseDevice.cpp:380
#, c-format
-msgid "eglGetConfigs() failed to retrieve the number of configs (error %s)"
-msgstr "eglGetConfigs() æ æ³ååé
ç½®æ°ç®(é误 %s)"
+msgid "mouse_command: discarded %d bytes from input buffer"
+msgstr "mouse_commandï¼ä»è¾å
¥ç¼å²åºä¸¢å¼ %d åè"
-#: libdevice/egl/eglDevice.cpp:213 libdevice/egl/eglDevice.cpp:548
-#: gui/gtk/gtk_glue_ovg.cpp:388
-msgid "No EGLconfigs found\n"
-msgstr "æªæ¾å° EGLconfigs\n"
+#: libdevice/events/TouchDevice.cpp:83
+msgid "No filespec specified for the touchscreen device."
+msgstr "没æè§¦æ¸å±è®¾å¤æå®çæä»¶è§æ ¼ã"
-#: libdevice/egl/eglDevice.cpp:216 libdevice/egl/eglDevice.cpp:551
+#: libdevice/events/TouchDevice.cpp:89
#, c-format
-msgid "Max number of EGL Configs is %d"
-msgstr ""
-
-#: libdevice/egl/eglDevice.cpp:231
-msgid "Using the 32bpp, low quality configuration"
-msgstr ""
+msgid "Could not open touchscreen %s: %s"
+msgstr "æ æ³æå¼è§¦æ¸å± %s: %s"
-#: libdevice/egl/eglDevice.cpp:233
-msgid "eglChooseConfig(32-low) failed"
-msgstr ""
+#: libdevice/events/TouchDevice.cpp:96
+#, c-format
+msgid "Could not get touchscreen fd %s: %s"
+msgstr "æ æ³å¾å°è§¦æ¸å±æä»¶æè¿°ç¬¦ %s: %s"
-#: libdevice/egl/eglDevice.cpp:237
-msgid "Using the 16bpp, low quality configuration"
-msgstr ""
+#: libdevice/events/TouchDevice.cpp:103
+#, c-format
+msgid "Using TSLIB on %s"
+msgstr "å¨ %s ä¸ä½¿ç¨ TSLIB"
-#: libdevice/egl/eglDevice.cpp:239
-msgid "eglChooseConfig(16-low) failed"
-msgstr ""
+#: libdevice/events/TouchDevice.cpp:134
+#, c-format
+msgid "Touched x: %d, y: %d"
+msgstr "触æ¸ç¹ x: %d, y: %d"
-#: libdevice/egl/eglDevice.cpp:248
-msgid "Using the 32bpp, medium quality configuration"
-msgstr ""
+#: libdevice/events/TouchDevice.cpp:138
+#, c-format
+msgid "lifted x: %d y: %d"
+msgstr "æ¬èµ·ç¹ x: %d y: %d"
-#: libdevice/egl/eglDevice.cpp:250
-msgid "eglChooseConfig(32-medium) failed"
-msgstr ""
+#: libdevice/events/TouchDevice.cpp:244
+msgid "WARNING: Error parsing calibration data!"
+msgstr "è¦åï¼éè¯¯è§£ææ ¡åæ°æ®ï¼"
-#: libdevice/egl/eglDevice.cpp:254 libdevice/egl/eglDevice.cpp:271
-msgid "Using the 16bpp, medium quality configuration"
-msgstr ""
+#: libdevice/events/TouchDevice.cpp:246
+#, c-format
+msgid ""
+"Using touchscreen calibration data: %.0f / %.0f / %.0f / %.0f / %.0f / %.0f"
+msgstr "使ç¨è§¦æ¸å±æ ¡åæ°æ®: %.0f / %.0f / %.0f / %.0f / %.0f / %.0f"
-#: libdevice/egl/eglDevice.cpp:256
-msgid "eglChooseConfig(16-medium) failed"
+#: libdevice/events/TouchDevice.cpp:249
+msgid ""
+"WARNING: No touchscreen calibration settings found. The mouse pointer most "
+"probably won't work precisely. Set TSCALIB environment variable with correct "
+"values for better results"
msgstr ""
-
-#: libdevice/egl/eglDevice.cpp:265
-msgid "Using the 32bpp, high quality configuration"
-msgstr ""
-
-#: libdevice/egl/eglDevice.cpp:267
-msgid "eglChooseConfig(32-high) failed"
-msgstr ""
-
-#: libdevice/egl/eglDevice.cpp:273
-msgid "eglChooseConfig(16-high) failed"
-msgstr ""
-
-#: libdevice/egl/eglDevice.cpp:283
-msgid "EGL configuration doesn't match!"
-msgstr ""
-
-#: libdevice/egl/eglDevice.cpp:319
-#, c-format
-msgid "eglGetConfigAttrib() failed (error %s)"
-msgstr ""
-
-#: libdevice/egl/eglDevice.cpp:323
-#, c-format
-msgid "EGL native visual is: %d"
-msgstr ""
-
-#: libdevice/egl/eglDevice.cpp:339
-msgid "Initializing EGL for OpenGLES2"
-msgstr ""
-
-#: libdevice/egl/eglDevice.cpp:341 libdevice/egl/eglDevice.cpp:361
-#, fuzzy, c-format
-msgid "eglBindAPI() failed to retrieve the number of configs (error %s)"
-msgstr "eglGetConfigs() æ æ³ååé
ç½®æ°ç®(é误 %s)"
-
-#: libdevice/egl/eglDevice.cpp:349
-msgid "Initializing EGL for OpenGLES1"
-msgstr ""
-
-#: libdevice/egl/eglDevice.cpp:351
-#, fuzzy, c-format
-msgid "eglBindAPI() failed to retrive the number of configs (error %s)"
-msgstr "eglGetConfigs() æ æ³ååé
ç½®æ°ç®(é误 %s)"
-
-#: libdevice/egl/eglDevice.cpp:359
-msgid "Initializing EGL for OpenVG"
-msgstr ""
-
-#: libdevice/egl/eglDevice.cpp:390
-msgid "Initializing EGL Surface"
-msgstr ""
-
-#: libdevice/egl/eglDevice.cpp:397
-#, c-format
-msgid "eglCreateWindowSurface failed (error %s)"
-msgstr ""
-
-#: libdevice/egl/eglDevice.cpp:411
-#, c-format
-msgid "eglCreateContext failed (error %s)"
-msgstr ""
-
-#: libdevice/egl/eglDevice.cpp:423
-#, c-format
-msgid "eglMakeCurrent failed (error %s)"
-msgstr ""
-
-#: libdevice/egl/eglDevice.cpp:555 gui/gtk/gtk_glue_ovg.cpp:395
-msgid "Out of memory\n"
-msgstr "å
åä¸è¶³\n"
-
-#: libdevice/egl/eglDevice.cpp:560
-#, fuzzy, c-format
-msgid "eglGetConfigs() failed to retrieve the configs (error %s)"
-msgstr "eglGetConfigs() æ æ³ååé
ç½®(é
ç½® %s)"
-
-#: libdevice/egl/eglDevice.cpp:773
-#, c-format
-msgid "eglCreatePbufferSurface() failed (error 0x%x)"
-msgstr ""
-
-#: libdevice/egl/eglDevice.cpp:793 libdevice/egl/eglDevice.cpp:814
-#, c-format
-msgid "eglCreatePbufferFromClientBuffer() failed (error 0x%x)"
-msgstr ""
-
-#: libdevice/vaapi/VaapiSurfaceProxy.cpp:31
-#, c-format
-msgid "VaapiSurfaceProxy::VaapiSurfaceProxy(): surface 0x%08x\n"
-msgstr ""
-
-#: libdevice/vaapi/VaapiSurfaceProxy.cpp:36
-#, c-format
-msgid "VaapiSurfaceProxy::~VaapiSurfaceProxy(): surface 0x%08x\n"
-msgstr ""
-
-#: libdevice/vaapi/VaapiSubpicture.cpp:35
-#, c-format
-msgid "VaapiSubpicture::VaapiSubpicture(): format '%s'\n"
-msgstr ""
-
-#: libdevice/vaapi/VaapiSurface.cpp:77
-#, c-format
-msgid "VaapiSurface::~VaapiSurface(): surface 0x%08x\n"
-msgstr ""
-
-#: libdevice/vaapi/VaapiSurfaceGLX.cpp:205
-#, c-format
-msgid " -> surface %p\n"
-msgstr ""
-
-#: libdevice/vaapi/VaapiSurfaceGLX.cpp:212
-#, c-format
-msgid "VaapiSurface::~VaapiSurface(): surface %p\n"
-msgstr ""
-
-#: libdevice/vaapi/VaapiSurfaceGLX.cpp:266
-#, c-format
-msgid "VaapiSurfaceGLX::update(): from surface 0x%08x\n"
-msgstr ""
-
-#: libdevice/vaapi/VaapiImage.cpp:38
-#, c-format
-msgid "VaapiImage::VaapiImage(): format '%s'\n"
-msgstr ""
-
-#: libdevice/vaapi/VaapiImage.cpp:82
-#, c-format
-msgid " image 0x%08x, format '%s'\n"
-msgstr ""
-
-#: libdevice/events/MouseDevice.cpp:94 libdevice/events/EventDevice.cpp:699
-#: libdevice/events/TouchDevice.cpp:312 libdevice/events/UinputDevice.cpp:77
-#, c-format
-msgid "You don't have the proper permissions to open %s"
-msgstr ""
-
-#: libdevice/events/MouseDevice.cpp:99
-#, c-format
-msgid "Found a %s device for mouse input using %s"
-msgstr ""
-
-#: libdevice/events/MouseDevice.cpp:145 libdevice/events/EventDevice.cpp:74
-#, fuzzy, c-format
-msgid "Could not open %s: %s"
-msgstr "æ æ³æå¼ %s"
-
-#: libdevice/events/MouseDevice.cpp:151
-#, c-format
-msgid "Could not set non-blocking mode for mouse device: %s"
-msgstr ""
-
-#: libdevice/events/MouseDevice.cpp:170
-msgid "Mouse reset failed"
-msgstr ""
-
-#: libdevice/events/MouseDevice.cpp:180
-msgid "WARNING: Could not detect mouse device ID"
-msgstr ""
-
-#: libdevice/events/MouseDevice.cpp:184
-#, c-format
-msgid "WARNING: Non-standard mouse device ID %d"
-msgstr ""
-
-#: libdevice/events/MouseDevice.cpp:189
-msgid "Could not activate Data Reporting mode for mouse"
-msgstr ""
-
-#: libdevice/events/MouseDevice.cpp:197
-#, c-format
-msgid "Mouse enabled for %s on fd #%d"
-msgstr ""
-
-#: libdevice/events/MouseDevice.cpp:257
-msgid "No sync in first byte!"
-msgstr ""
-
-#: libdevice/events/MouseDevice.cpp:311
-msgid "Vertical mouse movement overflow bit set"
-msgstr ""
-
-#: libdevice/events/MouseDevice.cpp:314
-msgid "Horizontal mouse movement overflow bit set"
-msgstr ""
-
-#: libdevice/events/MouseDevice.cpp:320
-msgid "Horizontal mouse movement negative bit set"
-msgstr ""
-
-#: libdevice/events/MouseDevice.cpp:325
-msgid "Vertical mouse movement negative bit set"
-msgstr ""
-
-#: libdevice/events/MouseDevice.cpp:330
-#, c-format
-msgid "PS/2 Mouse: Xmove=%d, Ymove=%d, Button %d"
-msgstr ""
-
-#: libdevice/events/MouseDevice.cpp:347
-#, c-format
-msgid "convert: Xin=%d, Yin=%d, Xout=%d, Yout=%d"
-msgstr ""
-
-#: libdevice/events/MouseDevice.cpp:354
-#, c-format
-msgid "read mouse: X=%d, Y=%d, Btn: btn %d"
-msgstr ""
-
-#: libdevice/events/MouseDevice.cpp:362
-#, c-format
-msgid "mouse click! %d"
-msgstr ""
-
-#: libdevice/events/MouseDevice.cpp:380
-#, c-format
-msgid "mouse_command: discarded %d bytes from input buffer"
-msgstr ""
-
-#: libdevice/events/InputDevice.cpp:136
-#, c-format
-msgid "The device has this error: %s"
-msgstr ""
-
-#: libdevice/events/InputDevice.cpp:211
-#, fuzzy
-msgid ""
-"WARNING: PS/2 Mouse support disabled as it conflicts with the input event "
-"support."
-msgstr "è¦åï¼é¼ æ æ¯æå¯è½ä¸è¾å
¥äºä»¶æ¯æå²çªã"
+"è¦åï¼æ²¡æåç°è§¦æ¸å±æ ¡å设置ãé¼ æ æéå¾å¯è½ä¸ç²¾ç¡®ãè¦å徿´å¥½çç»æè¯·è®¾ç½®"
+"TSCALIBçç¯å¢åé为æ£ç¡®çå¼"
#: libdevice/events/EventDevice.cpp:80
#, c-format
msgid "Could not set non-blocking mode for pointing device: %s"
-msgstr ""
+msgstr "æ æ³è®¾ç½®ä¸ºç¹è®¾å¤éé»å¡æ¨¡å¼ï¼%s"
#: libdevice/events/EventDevice.cpp:93
msgid "ioctl (EVIOCGVERSION)"
-msgstr ""
+msgstr "ioctl (EVIOCGVERSION)"
#: libdevice/events/EventDevice.cpp:96
#, c-format
msgid "evdev driver version is %d.%d.%d"
-msgstr ""
+msgstr "evdev 驱å¨çæ¬ä¸º %d.%d.%d"
-#: libdevice/events/EventDevice.cpp:102 libdevice/events/EventDevice.cpp:720
+#: libdevice/events/EventDevice.cpp:102 libdevice/events/EventDevice.cpp:724
#, c-format
msgid "ioctl (EVIOCGID): %s"
-msgstr ""
+msgstr "ioctl (EVIOCGID): %s"
-#: libdevice/events/EventDevice.cpp:107 libdevice/events/EventDevice.cpp:714
+#: libdevice/events/EventDevice.cpp:107 libdevice/events/EventDevice.cpp:718
#, c-format
msgid "ioctl (EVIOCGNAME): %s"
-msgstr ""
+msgstr "ioctl (EVIOCGNAME): %s"
-#: libdevice/events/EventDevice.cpp:109 libdevice/events/EventDevice.cpp:716
+#: libdevice/events/EventDevice.cpp:109 libdevice/events/EventDevice.cpp:720
#, c-format
msgid "The device on %s says its name is %s"
-msgstr ""
+msgstr "%s ä¸ç设å¤å
¶å称为 %s"
-#: libdevice/events/EventDevice.cpp:115 libdevice/events/EventDevice.cpp:722
+#: libdevice/events/EventDevice.cpp:115 libdevice/events/EventDevice.cpp:726
#, c-format
msgid "vendor %04hx product %04hx version %04hx"
-msgstr ""
+msgstr "åå %04hx 产å %04hx çæ¬ %04hx"
#: libdevice/events/EventDevice.cpp:120
msgid "is a PCI bus type"
-msgstr ""
+msgstr "æ¯ä¸ä¸ª PCI æ»çº¿ç±»å"
#: libdevice/events/EventDevice.cpp:123
msgid "is a PNP bus type"
-msgstr ""
+msgstr "æ¯ä¸ä¸ª PNP æ»çº¿ç±»å"
#: libdevice/events/EventDevice.cpp:128
msgid "is on a Universal Serial Bus"
-msgstr ""
+msgstr "æ¯å¨USBä¸"
#: libdevice/events/EventDevice.cpp:150
msgid "is a HIL bus type"
-msgstr ""
+msgstr "æ¯ä¸ä¸ª HIL æ»çº¿ç±»å"
#: libdevice/events/EventDevice.cpp:153
msgid "is Bluetooth bus type "
-msgstr ""
+msgstr "æ¯èçæ»çº¿ç±»å"
#: libdevice/events/EventDevice.cpp:157
msgid "is a Virtual bus type "
-msgstr ""
+msgstr "æ¯ä¸ä¸ªèææ»çº¿ç±»å"
#: libdevice/events/EventDevice.cpp:161
msgid "is an ISA bus type"
-msgstr ""
+msgstr "æ¯ä¸ä¸ª ISA æ»çº¿ç±»å"
#: libdevice/events/EventDevice.cpp:165
msgid "is an I8042 bus type"
-msgstr ""
+msgstr "æ¯ä¸ä¸ª I8042 æ»çº¿ç±»å"
#: libdevice/events/EventDevice.cpp:175
msgid "is an XTKBD bus type"
-msgstr ""
+msgstr "æ¯ä¸ä¸ª XTKBD æ»çº¿ç±»å"
#: libdevice/events/EventDevice.cpp:178
msgid "is a serial port bus type"
-msgstr ""
+msgstr "æ¯ä¸ä¸ªä¸²å£æ»çº¿ç±»å"
#: libdevice/events/EventDevice.cpp:181
msgid "is a gameport bus type"
-msgstr ""
+msgstr "æ¯ä¸ä¸ª gameport æ»çº¿ç±»å"
#: libdevice/events/EventDevice.cpp:184
msgid "is a parallel port bus type"
-msgstr ""
+msgstr "æ¯ä¸ä¸ªå¹¶å£æ»çº¿ç±»å"
#: libdevice/events/EventDevice.cpp:187
msgid "is an Amiga bus type"
-msgstr ""
+msgstr "æ¯ä¸ä¸ª Amiga æ»çº¿ç±»å"
#: libdevice/events/EventDevice.cpp:190
msgid "is an AOB bus type"
-msgstr ""
+msgstr "æ¯ä¸ä¸ª AOB æ»çº¿ç±»å"
#: libdevice/events/EventDevice.cpp:193
msgid "is an i2C bus type "
-msgstr ""
+msgstr "æ¯ä¸ä¸ª i2C æ»çº¿ç±»å"
#: libdevice/events/EventDevice.cpp:199
msgid "Babbage Touchscreen found!"
-msgstr ""
+msgstr "åç° Babbage 触æ¸å±ï¼"
#: libdevice/events/EventDevice.cpp:203
msgid "Babbage Power Button found!"
-msgstr ""
+msgstr "åç° Babbage çµæºæé®ï¼"
#: libdevice/events/EventDevice.cpp:208
msgid "is a GSC bus type"
-msgstr ""
+msgstr "æ¯ä¸ä¸ª GSC æ»çº¿ç±»å"
#: libdevice/events/EventDevice.cpp:212
msgid "is an Atari bus type"
-msgstr ""
+msgstr "æ¯ä¸ä¸ª Atari æ»çº¿ç±»å"
#: libdevice/events/EventDevice.cpp:216
#, c-format
msgid "Unknown bus type %d!"
-msgstr ""
+msgstr "æªç¥æ»çº¿ç±»å %dï¼"
#: libdevice/events/EventDevice.cpp:219
#, c-format
msgid "Event enabled for %s on fd #%d"
-msgstr ""
+msgstr "äºä»¶å¯ç¨ %s 卿件æè¿°ç¬¦ #%d"
#: libdevice/events/EventDevice.cpp:228
#, c-format
msgid "ioctl (EVIOCGABS(ABS_X)): %s"
-msgstr ""
+msgstr "ioctl (EVIOCGABS(ABS_X)): %s"
#: libdevice/events/EventDevice.cpp:238
#, c-format
msgid "ioctl (EVIOCSABS(ABS_X)): %s"
-msgstr ""
+msgstr "ioctl (EVIOCSABS(ABS_X)): %s"
#: libdevice/events/EventDevice.cpp:241
#, c-format
msgid "ioctl (EVIOCGABS(ABS_Y)): %s"
-msgstr ""
+msgstr "ioctl (EVIOCGABS(ABS_Y)): %s"
#: libdevice/events/EventDevice.cpp:245
#, c-format
msgid "ioctl (EVIOCSABS(ABS_Y)): %s"
-msgstr ""
+msgstr "ioctl (EVIOCSABS(ABS_Y)): %s"
#: libdevice/events/EventDevice.cpp:307
-#, c-format
+#, fuzzy, c-format
msgid "Type is: %s(%hd), Code is: %hd, Val is: %d"
-msgstr ""
+msgstr "ç±»å: %s(%hd), 代ç : %hd, Val us: %d"
#: libdevice/events/EventDevice.cpp:388
#, c-format
msgid "REL_X: %d"
-msgstr ""
+msgstr "REL_X: %d"
#: libdevice/events/EventDevice.cpp:392
#, c-format
msgid "REL_Y: %d"
-msgstr ""
+msgstr "REL_Y: %d"
#: libdevice/events/EventDevice.cpp:396
#, c-format
msgid "REL_Z: %d"
-msgstr ""
+msgstr "REL_Z: %d"
#: libdevice/events/EventDevice.cpp:400
#, c-format
msgid "REL_RX: %d"
-msgstr ""
+msgstr "REL_RX: %d"
#: libdevice/events/EventDevice.cpp:404
#, c-format
msgid "REL_RY: %d"
-msgstr ""
+msgstr "REL_RY: %d"
#: libdevice/events/EventDevice.cpp:408
#, c-format
msgid "REL_RZ: %d"
-msgstr ""
+msgstr "REL_RZ: %d"
#: libdevice/events/EventDevice.cpp:412
#, c-format
msgid "REL_HWHEEL: %d"
-msgstr ""
+msgstr "REL_HWHEEL: %d"
-#: libdevice/events/EventDevice.cpp:414
+#: libdevice/events/EventDevice.cpp:415
#, c-format
msgid "REL_DIAL: %d"
-msgstr ""
+msgstr "REL_DIAL: %d"
-#: libdevice/events/EventDevice.cpp:416
+#: libdevice/events/EventDevice.cpp:418
#, c-format
msgid "REL_WHEEL: %d"
-msgstr ""
+msgstr "REL_WHEEL: %d"
-#: libdevice/events/EventDevice.cpp:418
+#: libdevice/events/EventDevice.cpp:421
#, c-format
msgid "REL_MISC: %d"
-msgstr ""
+msgstr "REL_MISC: %d"
-#: libdevice/events/EventDevice.cpp:420
+#: libdevice/events/EventDevice.cpp:424
#, c-format
msgid "Relative move event %d from Input Event Device"
-msgstr ""
+msgstr "æ¥èªè¾å
¥äºä»¶è®¾å¤çç¸å¯¹ç§»å¨äºä»¶ %d"
-#: libdevice/events/EventDevice.cpp:443
+#: libdevice/events/EventDevice.cpp:447
#, c-format
msgid "ABS_Z: %d"
-msgstr ""
+msgstr "ABS_Z: %d"
-#: libdevice/events/EventDevice.cpp:450
+#: libdevice/events/EventDevice.cpp:454
#, c-format
msgid "ABS_VOLUME: %d"
-msgstr ""
+msgstr "ABS_VOLUME: %d"
-#: libdevice/events/EventDevice.cpp:454
+#: libdevice/events/EventDevice.cpp:458
#, c-format
msgid "ABS_DISTANCE: %d"
-msgstr ""
+msgstr "ABS_DISTANCE: %d"
-#: libdevice/events/EventDevice.cpp:458
+#: libdevice/events/EventDevice.cpp:462
#, c-format
msgid "ABS_RX: %d"
-msgstr ""
+msgstr "ABS_RX: %d"
-#: libdevice/events/EventDevice.cpp:462
+#: libdevice/events/EventDevice.cpp:466
#, c-format
msgid "ABS_RY: %d"
-msgstr ""
+msgstr "ABS_RY: %d"
-#: libdevice/events/EventDevice.cpp:466
+#: libdevice/events/EventDevice.cpp:470
#, c-format
msgid "ABS_RZ: %d"
-msgstr ""
+msgstr "ABS_RZ: %d"
-#: libdevice/events/EventDevice.cpp:470
+#: libdevice/events/EventDevice.cpp:474
#, c-format
msgid "ABS_THROTTLE: %d"
-msgstr ""
+msgstr "ABS_THROTTLE: %d"
-#: libdevice/events/EventDevice.cpp:474
+#: libdevice/events/EventDevice.cpp:478
#, c-format
msgid "ABS_RUDDER: %d"
-msgstr ""
+msgstr "ABS_RUDDER: %d"
-#: libdevice/events/EventDevice.cpp:478
+#: libdevice/events/EventDevice.cpp:482
#, c-format
msgid "ABS_GAS: %d"
-msgstr ""
+msgstr "ABS_GAS: %d"
-#: libdevice/events/EventDevice.cpp:482
+#: libdevice/events/EventDevice.cpp:486
#, c-format
msgid "ABS_BRAKE: %d"
-msgstr ""
+msgstr "ABS_BRAKE: %d"
-#: libdevice/events/EventDevice.cpp:486
+#: libdevice/events/EventDevice.cpp:490
#, c-format
msgid "ABS_TILT_X: %d"
-msgstr ""
+msgstr "ABS_TILT_X: %d"
-#: libdevice/events/EventDevice.cpp:490
+#: libdevice/events/EventDevice.cpp:494
#, c-format
msgid "ABS_TILT_Y: %d"
-msgstr ""
+msgstr "ABS_TILT_Y: %d"
-#: libdevice/events/EventDevice.cpp:505 libdevice/events/EventDevice.cpp:529
+#: libdevice/events/EventDevice.cpp:509 libdevice/events/EventDevice.cpp:533
msgid "Misc event from Input Event Device"
-msgstr ""
+msgstr "æ¥èªè¾å
¥äºä»¶è®¾å¤çæé¡¹äºä»¶"
-#: libdevice/events/EventDevice.cpp:533
+#: libdevice/events/EventDevice.cpp:537
msgid "LED event from Input Event Device"
-msgstr ""
+msgstr "æ¥èªè¾å
¥äºä»¶è®¾å¤çLEDäºä»¶"
-#: libdevice/events/EventDevice.cpp:536
+#: libdevice/events/EventDevice.cpp:540
msgid "Sound event from Input Event Device"
-msgstr ""
+msgstr "æ¥èªè¾å
¥äºä»¶è®¾å¤ç声é³äºä»¶"
-#: libdevice/events/EventDevice.cpp:539
+#: libdevice/events/EventDevice.cpp:543
msgid "Key autorepeat event from Input Event Device"
-msgstr ""
+msgstr "æ¥èªè¾å
¥äºä»¶è®¾å¤çæé®èªå¨éå¤äºä»¶"
-#: libdevice/events/EventDevice.cpp:542
+#: libdevice/events/EventDevice.cpp:546
msgid "Force Feedback event from Input Event Device"
-msgstr ""
+msgstr "æ¥èªè¾å
¥äºä»¶è®¾å¤çååé¦äºä»¶"
-#: libdevice/events/EventDevice.cpp:545
+#: libdevice/events/EventDevice.cpp:549
msgid "Force Feedback status event from Input Event Device"
-msgstr ""
+msgstr "æ¥èªè¾å
¥äºä»¶è®¾å¤çååé¦ç¶æäºä»¶"
-#: libdevice/events/EventDevice.cpp:548
+#: libdevice/events/EventDevice.cpp:552
msgid "Power event from Input Event Device"
-msgstr ""
+msgstr "æ¥èªè¾å
¥äºä»¶è®¾å¤ççµæºäºä»¶"
-#: libdevice/events/EventDevice.cpp:736
+#: libdevice/events/EventDevice.cpp:740
#, c-format
msgid "Enabling USB device: %s"
-msgstr ""
-
-#: libdevice/events/TouchDevice.cpp:83
-msgid "No filespec specified for the touchscreen device."
-msgstr ""
-
-#: libdevice/events/TouchDevice.cpp:89
-#, c-format
-msgid "Could not open touchscreen %s: %s"
-msgstr ""
-
-#: libdevice/events/TouchDevice.cpp:96
-#, c-format
-msgid "Could not get touchscreen fd %s: %s"
-msgstr ""
-
-#: libdevice/events/TouchDevice.cpp:103
-#, c-format
-msgid "Using TSLIB on %s"
-msgstr ""
-
-#: libdevice/events/TouchDevice.cpp:134
-#, c-format
-msgid "Touched x: %d, y: %d"
-msgstr ""
-
-#: libdevice/events/TouchDevice.cpp:138
-#, c-format
-msgid "lifted x: %d y: %d"
-msgstr ""
-
-#: libdevice/events/TouchDevice.cpp:244
-msgid "WARNING: Error parsing calibration data!"
-msgstr ""
+msgstr "å¯å¨USB设å¤: %s"
-#: libdevice/events/TouchDevice.cpp:246
+#: libdevice/events/InputDevice.cpp:136
#, c-format
-msgid ""
-"Using touchscreen calibration data: %.0f / %.0f / %.0f / %.0f / %.0f / %.0f"
-msgstr ""
+msgid "The device has this error: %s"
+msgstr "该设å¤åçé误: %s"
-#: libdevice/events/TouchDevice.cpp:249
+#: libdevice/events/InputDevice.cpp:211
msgid ""
-"WARNING: No touchscreen calibration settings found. The mouse pointer most "
-"probably won't work precisely. Set TSCALIB environment variable with correct "
-"values for better results"
-msgstr ""
-
-#: libdevice/events/UinputDevice.cpp:46
-msgid "ioctl(UI_DEV_DESTROY)"
-msgstr ""
-
-#: libdevice/events/UinputDevice.cpp:82
-#, c-format
-msgid "Found a User mode input device at %s"
-msgstr ""
-
-#: libdevice/events/UinputDevice.cpp:98
-msgid "User Mode Input device not initialized yet!"
-msgstr ""
-
-#: libdevice/events/UinputDevice.cpp:103
-msgid "ioctl(UI_SET_EVBIT, EV_KEY)"
-msgstr ""
-
-#: libdevice/events/UinputDevice.cpp:109
-msgid "ioctl(UI_SET_EVBIT, EV_REL)"
-msgstr ""
-
-#: libdevice/events/UinputDevice.cpp:113
-msgid "ioctl(UI_SET_RELBIT, REL_X)"
-msgstr ""
-
-#: libdevice/events/UinputDevice.cpp:117
-msgid "ioctl( UI_SET_RELBIT, REL_Y)"
-msgstr ""
-
-#: libdevice/events/UinputDevice.cpp:142
-msgid "write uidev"
-msgstr ""
-
-#: libdevice/events/UinputDevice.cpp:147
-#, c-format
-msgid "ioctl(UI_SET_EVBIT, EV_ABS): %s"
-msgstr ""
-
-#: libdevice/events/UinputDevice.cpp:151
-#, c-format
-msgid "ioctl(UI_SET_ABSBIT,ABS_X): %s"
-msgstr ""
-
-#: libdevice/events/UinputDevice.cpp:155
-#, c-format
-msgid "ioctl(UI_SET_ABSBIT, ABS_Y): %s"
-msgstr ""
-
-#: libdevice/events/UinputDevice.cpp:161
-#, c-format
-msgid "ioctl(UI_SET_KEYBIT, BTN_LEFT)): %s"
-msgstr ""
-
-#: libdevice/events/UinputDevice.cpp:165
-#, c-format
-msgid "ioctl(UI_SET_KEYBIT, BTN_RIGHT): %s"
-msgstr ""
-
-#: libdevice/events/UinputDevice.cpp:169
-#, c-format
-msgid "ioctl(UI_SET_EVBIT, ABS_PRESSURE): %s"
-msgstr ""
-
-#: libdevice/events/UinputDevice.cpp:177
-#, c-format
-msgid "ioctl(UI_SET_KEYBIT, BTN_MOUSE): %s"
-msgstr ""
-
-#: libdevice/events/UinputDevice.cpp:182
-msgid "ioctl(UI_DEV_CREATED) failed!"
-msgstr ""
-
-#: libdevice/rawfb/RawFBDevice.cpp:63
-msgid "Couldn't initialize RAWFB device!"
-msgstr ""
-
-#: libdevice/rawfb/RawFBDevice.cpp:94
-msgid "Freeing framebuffer memory"
-msgstr ""
-
-#: libdevice/rawfb/RawFBDevice.cpp:99
-msgid "Freeing offscreen buffer"
-msgstr ""
-
-#: libdevice/rawfb/RawFBDevice.cpp:118
-#, c-format
-msgid "WARNING: Using %s as a fake framebuffer!"
-msgstr ""
-
-#: libdevice/rawfb/RawFBDevice.cpp:133
-#, c-format
-msgid "Could not open framebuffer device: %s"
-msgstr ""
-
-#: libdevice/rawfb/RawFBDevice.cpp:136
-#, c-format
-msgid "Opened framebuffer device: %s"
-msgstr ""
-
-#: libdevice/rawfb/RawFBDevice.cpp:147
-#, c-format
-msgid "Framebuffer device uses %d bytes of memory."
-msgstr ""
-
-#: libdevice/rawfb/RawFBDevice.cpp:149
-#, c-format
-msgid "Video mode: %dx%d with %d bits per pixel."
-msgstr ""
-
-#: libdevice/rawfb/RawFBDevice.cpp:153
-#, c-format
-msgid "Framebuffer stride is: %d."
-msgstr ""
-
-#: libdevice/rawfb/RawFBDevice.cpp:167
-msgid "LUT8: Setting up colormap"
-msgstr ""
-
-#: libdevice/rawfb/RawFBDevice.cpp:192
-#, c-format
-msgid "LUT8: Error setting colormap: %s"
-msgstr ""
-
-#: libdevice/rawfb/RawFBDevice.cpp:376
-msgid "Couldn't write to the fake cmap!"
-msgstr ""
-
-#: libdevice/rawfb/RawFBDevice.cpp:380
-msgid "Couldn't write to the fake cmap, unknown type!"
-msgstr ""
-
-#: libdevice/rawfb/RawFBDevice.cpp:394
-msgid "Signaled fbe to reload it's colormap."
-msgstr ""
-
-#: libdevice/rawfb/RawFBDevice.cpp:401
-#, c-format
-msgid "fakefb_ioctl(%d)"
-msgstr ""
+"WARNING: PS/2 Mouse support disabled as it conflicts with the input event "
+"support."
+msgstr "è¦åï¼PS/2é¼ æ æ¯æä¸è¾å
¥äºä»¶æ¯æå²çªæ¶è¢«ç¦ç¨ã"
#: libdevice/directfb/DirectFBDevice.cpp:78
msgid "Couldn't initialize DirectFB device!"
-msgstr ""
+msgstr "æ æ³åå§å DirectFB 设å¤ï¼"
#: libdevice/directfb/DirectFBDevice.cpp:114
#, c-format
msgid "DirectFBInit(): %s"
-msgstr ""
+msgstr "DirectFBInit(): %s"
#: libdevice/directfb/DirectFBDevice.cpp:119
#, c-format
msgid "DirectFBCreate(): %s"
-msgstr ""
+msgstr "DirectFBCreate(): %s"
#: libdevice/directfb/DirectFBDevice.cpp:146
#, c-format
msgid "CreateSurface(): %s"
-msgstr ""
+msgstr "CreateSurface(): %s"
#: libdevice/directfb/DirectFBDevice.cpp:158
#, c-format
msgid "CreateFont(): %s"
-msgstr ""
+msgstr "CreateFont(): %s"
#: libdevice/directfb/DirectFBDevice.cpp:165
#, c-format
msgid "CreateImageProvider(): %s"
-msgstr ""
+msgstr "CreateImageProvider(): %s"
#: libdevice/directfb/DirectFBDevice.cpp:171
#, c-format
msgid "GetDisplayLayer(): %s"
-msgstr ""
+msgstr "GetDisplayLayer(): %s"
#: libdevice/directfb/DirectFBDevice.cpp:175
#, c-format
msgid "GetScreen(): %s"
-msgstr ""
+msgstr "GetScreen(): %s"
#: libdevice/directfb/DirectFBDevice.cpp:512
#, c-format
msgid "GetDescription(): %s"
-msgstr ""
+msgstr "GetDescription(): %s"
#: libdevice/directfb/DirectFBDevice.cpp:901
msgid "iDirectFB data not set!"
-msgstr ""
+msgstr "iDirectFB æ°æ®æªè®¾ç½®ï¼"
-#: libdevice/x11/X11Device.cpp:88 libdevice/x11/X11Device.cpp:106
-msgid "Couldn't initialize X11 device!"
-msgstr ""
-
-#: libdevice/x11/X11Device.cpp:142
-msgid "couldn't open X11 display!"
-msgstr ""
+#: libsound/aos4/sound_handler_ahi.cpp:125
+msgid "AOS4: Spawn Audio Process."
+msgstr "AOS4: è¡çé³é¢è¿ç¨ã"
-#: libdevice/x11/X11Device.cpp:162
-msgid "Error: couldn't get X visual\n"
-msgstr ""
+#: libsound/aos4/sound_handler_ahi.cpp:136
+msgid "Unable to create Death Message for child!!"
+msgstr "æ æ³ä¸ºå¿ç«¥å建æ»äº¡æ¶æ¯ï¼ï¼"
-#: libdevice/x11/X11Device.cpp:199
-msgid "The default Display is not set!"
-msgstr ""
+#: libsound/aos4/sound_handler_ahi.cpp:162
+msgid "AOS4: Audio Process spawned."
+msgstr "AOS4: é³é¢è¿ç¨å·²è¡çã"
-#: libdevice/x11/X11Device.cpp:212
-msgid "No Display device set!"
-msgstr ""
-
-#: libdevice/x11/X11Device.cpp:217
-msgid "No drawable window set!"
-msgstr ""
-
-#: libsound/WAVWriter.cpp:65
-#, fuzzy
-msgid "Unable to write file %1%"
-msgstr "æ æ³åæä»¶â%sâ"
-
-#: libsound/mkit/sound_handler_mkit.cpp:75
-msgid "Unable to open audio"
-msgstr ""
-
-#: libsound/mkit/sound_handler_mkit.cpp:339
-msgid "Mkit: Mkit_sound_handler::pause"
-msgstr ""
-
-#: libsound/mkit/sound_handler_mkit.cpp:343
-msgid "Mkit: paused"
-msgstr ""
-
-#: libsound/mkit/sound_handler_mkit.cpp:351
-msgid "Mkit: Mkit_sound_handler::unpause"
-msgstr ""
-
-#: libsound/mkit/sound_handler_mkit.cpp:355
-msgid "Mkit: unpaused"
-msgstr ""
-
-#: libsound/aos4/sound_handler_ahi.cpp:125
-msgid "AOS4: Spawn Audio Process."
-msgstr ""
-
-#: libsound/aos4/sound_handler_ahi.cpp:136
-msgid "Unable to create Death Message for child!!"
-msgstr ""
-
-#: libsound/aos4/sound_handler_ahi.cpp:162
-msgid "AOS4: Audio Process spawned."
-msgstr ""
-
-#: libsound/aos4/sound_handler_ahi.cpp:167
-msgid "Unable to create Audio Process!!"
-msgstr ""
+#: libsound/aos4/sound_handler_ahi.cpp:167
+msgid "Unable to create Audio Process!!"
+msgstr "æ æ³å建é³é¢è¿ç¨ï¼ï¼"
#: libsound/aos4/sound_handler_ahi.cpp:438
msgid "AOS4: AOS4_sound_handler::pause"
-msgstr ""
+msgstr "AOS4: AOS4_sound_handler::pause"
#: libsound/aos4/sound_handler_ahi.cpp:440
msgid "AOS4: paused"
-msgstr ""
+msgstr "AOS4: å·²æå"
#: libsound/aos4/sound_handler_ahi.cpp:450
msgid "AOS4: AOS4_sound_handler::unpause"
-msgstr ""
+msgstr "AOS4: AOS4_sound_handler::unpause"
#: libsound/aos4/sound_handler_ahi.cpp:452
msgid "AOS4: unpaused"
-msgstr ""
+msgstr "AOS4: æå已忶"
#: libsound/aos4/sound_handler_ahi.cpp:542
msgid "AOS4: Unable to allocate memory for audio buffer!"
-msgstr ""
+msgstr "AOS4: æ æ³ä¸ºé³é¢ç¼å²åé
å
åï¼"
#: libsound/aos4/sound_handler_ahi.cpp:562
msgid "AOS4: Unable to open AHI Device!"
-msgstr ""
+msgstr "AOS4: æ æ³æå¼ AHI 设å¤ï¼"
#: libsound/aos4/sound_handler_ahi.cpp:572
msgid "AOS4: Unable to CreateIORequest!"
-msgstr ""
+msgstr "AOS4: æ æ³ CreateIORequest!"
#: libsound/aos4/sound_handler_ahi.cpp:580
msgid "AOS4: Unable to CreateMsgPort for AHI Device!"
-msgstr ""
+msgstr "AOS4: æ æ³ä¸º AHI è®¾å¤ CreateMsgPort forï¼"
#: libsound/aos4/sound_handler_ahi.cpp:591
msgid "AOS4: Not enough memory for AHIiocopy!"
-msgstr ""
+msgstr "AOS4: 没æè¶³å¤ç AHIiocopy æéå
åï¼"
#: libsound/aos4/sound_handler_ahi.cpp:607
+#, fuzzy
msgid "AOS4: audioTask:Initialize timer."
-msgstr ""
+msgstr "AOS4: audioTask:åå§å宿¶å¨.."
#: libsound/aos4/sound_handler_ahi.cpp:610
+#, fuzzy
msgid "AOS4: audioTask:Starting Timer."
-msgstr ""
+msgstr "AOS4: audioTask:å¯å¨å®æ¶å¨.."
#: libsound/aos4/sound_handler_ahi.cpp:621
+#, fuzzy
msgid "AOS4: Closing Audio Thread."
-msgstr ""
+msgstr "AOS4: å
³éé³é¢çº¿ç¨.."
#: libsound/aos4/sound_handler_ahi.cpp:641
+#, fuzzy
msgid "AOS4: Cleaning Audio Stuff."
-msgstr ""
+msgstr "AOS4: æ¸
é¤é³é¢ç´ æ.."
#: libsound/aos4/sound_handler_ahi.cpp:675
+#, fuzzy
msgid "AOS4: Exit Audio Thread."
-msgstr ""
+msgstr "AOS4: éåºé³é¢çº¿ç¨.."
#: libsound/aos4/sound_handler_ahi.cpp:677
+#, fuzzy
msgid "AOS4: audioTask:Close timer."
-msgstr ""
+msgstr "AOS4: audioTask:å
³é宿¶å¨.."
+
+#: libsound/mkit/sound_handler_mkit.cpp:75
+msgid "Unable to open audio"
+msgstr "æ æ³æå¼é³é¢"
+
+#: libsound/mkit/sound_handler_mkit.cpp:339
+msgid "Mkit: Mkit_sound_handler::pause"
+msgstr "Mkit: Mkit_sound_handler::pause"
+
+#: libsound/mkit/sound_handler_mkit.cpp:343
+msgid "Mkit: paused"
+msgstr "Mkit: æå"
+
+#: libsound/mkit/sound_handler_mkit.cpp:351
+msgid "Mkit: Mkit_sound_handler::unpause"
+msgstr "Mkit: Mkit_sound_handler::unpause"
+
+#: libsound/mkit/sound_handler_mkit.cpp:355
+msgid "Mkit: unpaused"
+msgstr "Mkit: åæ¶æå"
#: libsound/sdl/sound_handler_sdl.cpp:91
#, c-format
msgid "Couldn't open SDL audio: %s"
-msgstr ""
+msgstr "æ æ³æå¼ SDL é³é¢: %s"
#: libsound/sdl/sound_handler_sdl.cpp:261
#, c-format
msgid "Negative buffer length in sdl_audio_callback (%d)"
-msgstr ""
+msgstr "sdl_audio_callback ä¸ç¼å²åºé¿åº¦ä¸ºè´æ° (%d)"
#: libsound/sdl/sound_handler_sdl.cpp:267
msgid "Zero buffer length in sdl_audio_callback"
-msgstr ""
+msgstr " sdl_audio_callback ä¸ç¼å²åºé¿åº¦ä¸º 0"
-#: libsound/sound_handler.cpp:70
+#: libsound/sound_handler.cpp:71
msgid ""
"Sound data creator didn't appropriately pad buffer. We'll do so now, but "
"will cost memory copies."
-msgstr ""
+msgstr "声鳿°æ®å建è
没æç¸åºçå¡«è¡¥ç¼å²ãæä»¥ç°å¨æä»¬ä¼åï¼å°è±è´¹å
åæ·è´ã"
-#: libsound/sound_handler.cpp:83
+#: libsound/sound_handler.cpp:84
#, c-format
msgid "Invalid (%d) handle passed to fill_stream_data, doing nothing"
-msgstr ""
+msgstr "æ æ(%d)å¥æä¼ éç» fill_stream_dataï¼ç¥è¿"
-#: libsound/sound_handler.cpp:90
+#: libsound/sound_handler.cpp:91
#, c-format
msgid "handle passed to fill_stream_data (%d) was deleted"
-msgstr ""
+msgstr "ä¼ ç» fill_stream_data (%d) çå¥æè¢«å é¤"
-#: libsound/sound_handler.cpp:141
+#: libsound/sound_handler.cpp:142
#, c-format
msgid "Invalid (%d) handle passed to delete_sound, doing nothing"
-msgstr ""
+msgstr "æ æ(%d)å¥æä¼ éç» delete_soundï¼ç¥è¿"
-#: libsound/sound_handler.cpp:152
+#: libsound/sound_handler.cpp:153
#, c-format
msgid "handle passed to delete_sound (%d) already deleted"
-msgstr ""
+msgstr "ä¼ ç» delete_sound (%d) ç奿已ç»è¢«å é¤"
-#: libsound/sound_handler.cpp:236
+#: libsound/sound_handler.cpp:237
#, c-format
msgid "stop_sound(%d): sound was deleted"
-msgstr ""
+msgstr "stop_sound(%d): 声é³è¢«å é¤"
-#: libsound/sound_handler.cpp:324
+#: libsound/sound_handler.cpp:325
#, c-format
msgid "SDL_sound_handler::unplugInputStream: Aux streamer %p not found. "
-msgstr ""
+msgstr "SDL_sound_handler::unplugInputStream: æªæ¾å°è¾
婿µ %pã"
-#: libsound/sound_handler.cpp:454
+#: libsound/sound_handler.cpp:455
#, c-format
msgid "Could not start streaming sound: %s"
-msgstr ""
+msgstr "æ æ³å¯å¨ç声鳿µï¼%s"
-#: libsound/sound_handler.cpp:465
+#: libsound/sound_handler.cpp:466
#, c-format
msgid "Invalid (%d) sound_handle passed to startSound, doing nothing"
-msgstr ""
+msgstr "æ æ(%d) sound_handleä¼ éç» startSoundï¼ç¥è¿"
-#: libsound/sound_handler.cpp:531
+#: libsound/sound_handler.cpp:532
msgid "Trying to play sound with size 0"
-msgstr ""
+msgstr "å°è¯ææ¾å¤§å°ä¸º0ç声é³"
-#: libsound/sound_handler.cpp:545
+#: libsound/sound_handler.cpp:546
#, c-format
msgid "Could not start event sound: %s"
-msgstr ""
+msgstr "æ æ³å¯å¨äºä»¶å£°é³ï¼%s"
-#: libsound/sound_handler.cpp:559
+#: libsound/sound_handler.cpp:560
#, c-format
msgid "_inputStreams container still has a pointer to deleted InputStream %p!"
-msgstr ""
+msgstr "_inputStreams 容å¨ä»æä¸ä¸ªæéæåå·²å é¤ç InputStream %p!"
-#: libsound/sound_handler.cpp:704
+#: libsound/sound_handler.cpp:705
#, c-format
msgid "Expected 1 InputStream element, found %d"
-msgstr ""
+msgstr "é¢è®¡ 1 个 InputStream å
ç´ ï¼æ¾å° %d 个"
-#: utilities/soldumper.cpp:72
-msgid "This program dumps the internal data of a .sol file"
-msgstr ""
-
-#: utilities/soldumper.cpp:74
-msgid "Usage: soldumper [h] filename"
-msgstr ""
+#: libsound/WAVWriter.cpp:64
+msgid "Unable to write file %1%"
+msgstr "æ æ³åæä»¶ %1%"
-#: utilities/soldumper.cpp:75 utilities/dumpshm.cpp:344
-#: utilities/flvdumper.cpp:305
-msgid "-h\tHelp"
-msgstr ""
+#: utilities/processor.cpp:151
+#, c-format
+msgid "fs_callback(%p): %s %s"
+msgstr "fs_callback(%p): %s %s"
-#: utilities/soldumper.cpp:76
-msgid "-f\tForce local directory access"
-msgstr ""
+#: utilities/processor.cpp:169
+#, c-format
+msgid "eventCallback: %s %s"
+msgstr "eventCallback: %s %s"
-#: utilities/soldumper.cpp:77
-msgid "-l\tList all .sol files in default dir"
-msgstr ""
+#: utilities/processor.cpp:205
+msgid "gprocessor does not handle %1% message"
+msgstr "gprocessor ä¸å¤ç %1% æ¶æ¯"
-#: utilities/soldumper.cpp:105
+#: utilities/processor.cpp:240 cygnal/cvm.cpp:227
#, c-format
-msgid "Gnash soldumper version: %s, Gnash version: %s\n"
-msgstr ""
+msgid "Gnash gprocessor version: %s, Gnash version: %s\n"
+msgstr "Gnash gprocessor çæ¬: %s, Gnash çæ¬: %s\n"
-#: utilities/soldumper.cpp:121 utilities/processor.cpp:276
-#: utilities/flvdumper.cpp:154 cygnal/cygnal.cpp:476
-#: cygnal/cgi-bin/echo/echo.cpp:144 cygnal/cgi-bin/echo/gateway.cpp:119
-#: cygnal/cgi-bin/fitcDemo/fitcDemo.cpp:149
+#: utilities/processor.cpp:279 utilities/flvdumper.cpp:154
+#: utilities/soldumper.cpp:121 cygnal/cygnal.cpp:482
#: cygnal/cgi-bin/oflaDemo/oflaDemo.cpp:216
-#: cygnal/testsuite/libnet.all/test_handler.cpp:103
-#: cygnal/testsuite/libnet.all/generate_amfbins.cpp:95
+#: cygnal/cgi-bin/fitcDemo/fitcDemo.cpp:149
+#: cygnal/cgi-bin/echo/gateway.cpp:119 cygnal/cgi-bin/echo/echo.cpp:144
#: cygnal/testsuite/libnet.all/test_rtmp.cpp:110
#: cygnal/testsuite/libnet.all/test_diskstream.cpp:91
+#: cygnal/testsuite/libnet.all/test_handler.cpp:103
+#: cygnal/testsuite/libnet.all/generate_amfbins.cpp:95
#: cygnal/testsuite/libnet.all/test_cache.cpp:94
-#: cygnal/testsuite/libamf.all/test_amfmsg.cpp:103
-#: cygnal/testsuite/libamf.all/test_sol.cpp:103
-#: cygnal/testsuite/libamf.all/test_flv.cpp:92
#: cygnal/testsuite/libamf.all/test_el.cpp:91
#: cygnal/testsuite/libamf.all/test_buffer.cpp:108
+#: cygnal/testsuite/libamf.all/test_flv.cpp:92
+#: cygnal/testsuite/libamf.all/test_amfmsg.cpp:103
+#: cygnal/testsuite/libamf.all/test_sol.cpp:103
#: cygnal/testsuite/libamf.all/test_amf.cpp:109
msgid "Verbose output turned on"
-msgstr ""
-
-#: utilities/soldumper.cpp:125
-msgid "forcing local directory access only"
-msgstr ""
-
-#: utilities/soldumper.cpp:130
-msgid "List .sol files in the default directory"
-msgstr ""
-
-#: utilities/processor.cpp:148
-#, c-format
-msgid "fs_callback(%p): %s %s"
-msgstr ""
-
-#: utilities/processor.cpp:166
-#, c-format
-msgid "eventCallback: %s %s"
-msgstr ""
-
-#: utilities/processor.cpp:202
-msgid "gprocessor does not handle %1% message"
-msgstr ""
-
-#: utilities/processor.cpp:237 cygnal/cvm.cpp:227
-#, c-format
-msgid "Gnash gprocessor version: %s, Gnash version: %s\n"
-msgstr ""
+msgstr "æå¼è¯¦ç»è¾åº"
-#: utilities/processor.cpp:285 cygnal/cvm.cpp:282
+#: utilities/processor.cpp:288 cygnal/cvm.cpp:282
msgid "Verbose actions disabled at compile time"
-msgstr ""
+msgstr "å¨ç¼è¯æ¶ç¦ç¨è¯¦ç»çå¨ä½"
-#: utilities/processor.cpp:292 cygnal/cvm.cpp:289
+#: utilities/processor.cpp:295 cygnal/cvm.cpp:289
msgid "Verbose parsing disabled at compile time"
-msgstr ""
+msgstr "å¨ç¼è¯æ¶ç¦ç¨è¯¦ç»çè§£æ"
-#: utilities/processor.cpp:456 utilities/processor.cpp:459
+#: utilities/processor.cpp:466 utilities/processor.cpp:469
#: gui/pythonmod/gnash-view.cpp:438 gui/pythonmod/gnash-view.cpp:441
#, c-format
msgid "%s appended to local sandboxes"
msgstr "%s å·²éå å°æ¬å°æ²ç"
-#: utilities/processor.cpp:631
+#: utilities/processor.cpp:641
#, c-format
msgid ""
"gprocessor -- an SWF processor for Gnash.\n"
@@ -7986,8 +8069,15 @@ msgid ""
"\n"
"%s%s%s%s"
msgstr ""
+"gprocessor -- ä¸ä¸ª Gnash ç SWF å¤çç¨åºã\n"
+"\n"
+"ç¨æ³: %s [options] <file>\n"
+"\n"
+"å¤çæå®ç SWF å½±çæä»¶ã\n"
+"\n"
+"%s%s%s%s"
-#: utilities/processor.cpp:638
+#: utilities/processor.cpp:648
msgid ""
"options:\n"
"\n"
@@ -7995,16 +8085,21 @@ msgid ""
" --version Print the version numbers.\n"
" -v Be verbose; i.e. print log messages to stdout\n"
msgstr ""
+"é项:\n"
+"\n"
+"--help(-h) æå°æ¬ä¿¡æ¯ã\n"
+"--version æå°çæ¬å·ã\n"
+"-v è¯¦ç»æ¥å¿;ä¾å¦æå°æ¥å¿æ¶æ¯å°æ åè¾åº\n"
-#: utilities/processor.cpp:645
+#: utilities/processor.cpp:655
msgid " -vp Be verbose about movie parsing\n"
-msgstr ""
+msgstr "-vp å½±çè§£æçè¯¦ç»æ¥å¿\n"
-#: utilities/processor.cpp:650
+#: utilities/processor.cpp:660
msgid " -va Be verbose about ActionScript\n"
-msgstr ""
+msgstr "-va ActionScriptçè¯¦ç»æ¥å¿\n"
-#: utilities/processor.cpp:655
+#: utilities/processor.cpp:665
msgid ""
" -d [<ms>]\n"
" Milliseconds delay between advances (0 by default).\n"
@@ -8017,3471 +8112,3528 @@ msgid ""
" Keep advancing untill any other stop condition\n"
" is encountered if set to 0 (default).\n"
msgstr ""
+"-d [<ms>]\n"
+"帧è¿é´ç毫ç§å»¶è¿ï¼é»è®¤ä¸º0ï¼ã\n"
+"å¦æä¸º '-1'ï¼å°ä»FPS计ç®å»¶è¿ã\n"
+"-r <times> å
许ç»å®çå®å
¨è¿è¡çæ°éã\n"
+"å¦æè®¾ç½®ä¸º0, æ é循ç¯ã\n"
+"缺ç为1 (å°è¾¾æåä¸å¸§æ¶é©¬ä¸ç»æ)ã\n"
+"-f <frames> \n"
+"å
许ç»å®æ°éç帧è¿ã\n"
+"å¦æè®¾ç½®ä¸º0ï¼é»è®¤ï¼ï¼ä¸æåè¿ï¼ç´å°ä»»ä½å«ç忢æ¡ä»¶æ»¡è¶³ã\n"
+
+#: utilities/flvdumper.cpp:172 cygnal/testsuite/libnet.all/test_rtmp.cpp:120
+#: cygnal/testsuite/libnet.all/test_diskstream.cpp:100
+#: cygnal/testsuite/libnet.all/test_handler.cpp:112
+#: cygnal/testsuite/libnet.all/generate_amfbins.cpp:111
+#: cygnal/testsuite/libnet.all/test_cache.cpp:103
+#: cygnal/testsuite/libamf.all/test_el.cpp:107
+#: cygnal/testsuite/libamf.all/test_buffer.cpp:123
+#: cygnal/testsuite/libamf.all/test_flv.cpp:103
+#: cygnal/testsuite/libamf.all/test_amfmsg.cpp:119
+#: cygnal/testsuite/libamf.all/test_sol.cpp:113
+#: cygnal/testsuite/libamf.all/test_amf.cpp:125
+msgid "Error parsing command line options: "
+msgstr "è§£æå½ä»¤è¡é项é误ï¼"
+
+#: utilities/flvdumper.cpp:173
+msgid "This is a Gnash flvdumper bug."
+msgstr "è¿æ¯ä¸ä¸ª Gnash flvdumper çé误ã"
+
+#: utilities/flvdumper.cpp:178
+msgid "Error: no input file was specified. Exiting."
+msgstr "éè¯¯ï¼æªæå®è¾å
¥æä»¶ãéåºã"
+
+#: utilities/flvdumper.cpp:302
+msgid "This program dumps the internal data of an FLV video file"
+msgstr "该ç¨åºä¼è½¬å¨ä¸ä¸ª FLV è§é¢æä»¶çå
鍿°æ®"
+
+#: utilities/flvdumper.cpp:304
+msgid "Usage: flvdumper [-h] [-m] [-a] filename"
+msgstr "ç¨æ³: flvdumper [-h] [-m] [-a] filename"
+
+#: utilities/flvdumper.cpp:305 utilities/dumpshm.cpp:344
+#: utilities/soldumper.cpp:75
+msgid "-h\tHelp"
+msgstr "-h\t帮å©"
+
+#: utilities/flvdumper.cpp:306
+msgid "-m\tPrint only Meta tags (default)"
+msgstr "-m\tåªæå° Meta æ ç¾ (缺ç)"
+
+#: utilities/flvdumper.cpp:307
+msgid "-a\tPrint all tags."
+msgstr "-a\tæå°æææ ç¾ã"
+
+#: utilities/rtmpget.cpp:445
+msgid "Error parsing command line: "
+msgstr "é误解æå½ä»¤è¡ï¼"
#: utilities/dumpshm.cpp:136
#, c-format
msgid "Gnash dumpshm version: %s, Gnash version: %s\n"
-msgstr ""
+msgstr "Gnash dumpshm çæ¬: %s, Gnash çæ¬: %s\n"
#: utilities/dumpshm.cpp:214
#, c-format
msgid "Will use \"%s\" for memory segment file"
-msgstr ""
+msgstr "å°ä½¿ç¨å
åæ®µæä»¶ \"%s\""
#: utilities/dumpshm.cpp:230
msgid "No LcShmKey set in ~/.gnashrc, trying to find it ourselves"
-msgstr ""
+msgstr " ~/.gnashrc 䏿²¡æè®¾ç½® LcShmKey, è¯å¾èªå·±æ¾å°å®"
#: utilities/dumpshm.cpp:239
msgid "No shared memory segments found!"
-msgstr ""
+msgstr "没æåç°å
±äº«å
åæ®µï¼"
#: utilities/dumpshm.cpp:243
#, c-format
msgid "Existing SHM Key is: %s, Size is: %s"
-msgstr ""
+msgstr "ç°æ SHM Key æ¯: %s, 大å°: %s"
#: utilities/dumpshm.cpp:258
msgid "Writing memory segment to disk: \"segment.raw\""
-msgstr ""
+msgstr "åå
¥å
åæ®µå°ç£çï¼\"segment.raw\""
#: utilities/dumpshm.cpp:263
#, c-format
msgid "The data is: 0x%s"
-msgstr ""
+msgstr "æ°æ®æ¯: 0x%s"
#: utilities/dumpshm.cpp:303
msgid "kernel not configured for shared memory"
-msgstr ""
+msgstr "å
æ ¸æ²¡æé
ç½®å
±äº«å
å"
#: utilities/dumpshm.cpp:318
#, c-format
msgid "Found it! \"set LCShmKey %s\" in your ~/.gnashrc"
-msgstr ""
+msgstr "æ¾å°äºï¼å¨ä½ ç ~/.gnashrcä¸ \"设置 LCShmKey %s\" "
#: utilities/dumpshm.cpp:321
#, c-format
msgid "Last changed on: %s"
-msgstr ""
+msgstr "æåä¿®æ¹: %s"
#: utilities/dumpshm.cpp:322
#, c-format
msgid "Last attached on: %s"
-msgstr ""
+msgstr "æåè¿æ¥: %s"
#: utilities/dumpshm.cpp:323
#, c-format
msgid "Last detached on: %s"
-msgstr ""
+msgstr "æåå离: %s"
#: utilities/dumpshm.cpp:341
msgid "This program dumps the internal data of a shared memory segment"
-msgstr ""
+msgstr "该ç¨åºä¼è½¬å¨ä¸ä¸ªå
±äº«å
åæ®µçå
鍿°æ®"
#: utilities/dumpshm.cpp:343
msgid "Usage: dumpshm [hdsanlif] filename"
-msgstr ""
+msgstr "ç¨æ³: dumpshm [hdsanlif] filename"
#: utilities/dumpshm.cpp:345
msgid "-i\tList segments"
-msgstr ""
+msgstr "-i\tå䏾忮µ"
#: utilities/dumpshm.cpp:346
msgid "-r\tDump SYSV segments"
-msgstr ""
+msgstr "-r\tè½¬å¨ SYSV 段"
#: utilities/dumpshm.cpp:347
msgid "-c\tDump SYSV segments to disk"
-msgstr ""
+msgstr "-c\tè½¬å¨ SYSV 段å°ç£ç"
#: utilities/dumpshm.cpp:348
msgid "-v\tVerbose output"
-msgstr ""
+msgstr "-v\t详ç»è¾åº"
#: utilities/dumpshm.cpp:360
msgid "\tBase address of this segment: "
-msgstr ""
+msgstr "\t该段çåºå:"
#: utilities/dumpshm.cpp:362
msgid "\tFilespec: "
-msgstr ""
+msgstr "\tæä»¶è¯´æï¼"
#: utilities/dumpshm.cpp:363
msgid "\t# Bytes allocated: "
-msgstr ""
+msgstr "\tåé
åèæ°ï¼"
#: utilities/dumpshm.cpp:364
msgid "\tTotal # of bytes: "
-msgstr ""
+msgstr "\tæ»è®¡åèæ°:"
-#: utilities/flvdumper.cpp:172
-#: cygnal/testsuite/libnet.all/test_handler.cpp:112
-#: cygnal/testsuite/libnet.all/generate_amfbins.cpp:111
-#: cygnal/testsuite/libnet.all/test_rtmp.cpp:120
-#: cygnal/testsuite/libnet.all/test_diskstream.cpp:100
-#: cygnal/testsuite/libnet.all/test_cache.cpp:103
-#: cygnal/testsuite/libamf.all/test_amfmsg.cpp:119
-#: cygnal/testsuite/libamf.all/test_sol.cpp:113
-#: cygnal/testsuite/libamf.all/test_flv.cpp:103
-#: cygnal/testsuite/libamf.all/test_el.cpp:107
-#: cygnal/testsuite/libamf.all/test_buffer.cpp:123
-#: cygnal/testsuite/libamf.all/test_amf.cpp:125
-msgid "Error parsing command line options: "
-msgstr ""
+#: utilities/soldumper.cpp:72
+msgid "This program dumps the internal data of a .sol file"
+msgstr "该ç¨åºå°åæ¾ä¸ä¸ª .sol æä»¶çå
鍿°æ®"
-#: utilities/flvdumper.cpp:173
-msgid "This is a Gnash flvdumper bug."
-msgstr ""
+#: utilities/soldumper.cpp:74
+msgid "Usage: soldumper [h] filename"
+msgstr "ç¨æ³: soldumper [h] filename"
-#: utilities/flvdumper.cpp:178
-msgid "Error: no input file was specified. Exiting."
-msgstr "éè¯¯ï¼æªæå®è¾å
¥æä»¶ãéåºã"
+#: utilities/soldumper.cpp:76
+msgid "-f\tForce local directory access"
+msgstr "-f\tå¼ºå¶æ¬å°ç®å½è®¿é®"
-#: utilities/flvdumper.cpp:302
-msgid "This program dumps the internal data of an FLV video file"
-msgstr ""
+#: utilities/soldumper.cpp:77
+msgid "-l\tList all .sol files in default dir"
+msgstr "-l\tå¨ç¼ºçç®å½ä¸å举ææç .sol æä»¶"
-#: utilities/flvdumper.cpp:304
-msgid "Usage: flvdumper [-h] [-m] [-a] filename"
-msgstr ""
-
-#: utilities/flvdumper.cpp:306
-msgid "-m\tPrint only Meta tags (default)"
-msgstr ""
+#: utilities/soldumper.cpp:105
+#, c-format
+msgid "Gnash soldumper version: %s, Gnash version: %s\n"
+msgstr "Gnash soldumper çæ¬: %s, Gnash çæ¬: %s\n"
-#: utilities/flvdumper.cpp:307
-msgid "-a\tPrint all tags."
-msgstr ""
+#: utilities/soldumper.cpp:125
+msgid "forcing local directory access only"
+msgstr "åªå¼ºå¶æ¬å°ç®å½è®¿é®"
-#: utilities/rtmpget.cpp:445
-msgid "Error parsing command line: "
-msgstr ""
+#: utilities/soldumper.cpp:130
+msgid "List .sol files in the default directory"
+msgstr "å举é»è®¤ç®å½ä¸ç .solæä»¶"
-#: plugin/win32/plugin.cpp:590 plugin/aos4/plugin.cpp:593
+#: plugin/aos4/plugin.cpp:593 plugin/win32/plugin.cpp:590
#, c-format
msgid "FSCommand_callback(%p): %s %s"
-msgstr ""
-
-#: cygnal/libamf/flv.cpp:94
-msgid "Bad magic number for FLV file!"
-msgstr ""
+msgstr "FSCommand_callback(%p): %s %s"
-#: cygnal/libamf/flv.cpp:101
-#, c-format
-msgid "Bad version in FLV header! %d"
-msgstr ""
+#: cygnal/rtmp_server.cpp:124
+msgid "Failed to read the handshake from the client."
+msgstr "æ æ³è¯»åæ¥èªå®¢æ·ç«¯çæ¡æã"
-#: cygnal/libamf/flv.cpp:110
-#, c-format
-msgid "Bad FLV file Type: %d"
-msgstr ""
+#: cygnal/rtmp_server.cpp:139
+msgid "failed to read the handshake from the client."
+msgstr "æ æ³è¯»åæ¥èªå®¢æ·ç«¯çæ¡æã"
-#: cygnal/libamf/flv.cpp:123
-#, c-format
-msgid "Bad header size in FLV header! %d"
-msgstr ""
+#: cygnal/rtmp_server.cpp:149
+msgid "Didn't receive any data in handshake!"
+msgstr "䏿¥æ¶æ¡æä¸ç任使°æ®ï¼"
-#: cygnal/libamf/flv.cpp:156
-#, c-format
-msgid "%d bytes for a string is over the safe limit of %d"
-msgstr ""
+#: cygnal/rtmp_server.cpp:160
+msgid "RTMP header had parsing error!"
+msgstr "RTMP å¤´é¨æè§£æé误!"
-#: cygnal/libamf/flv.cpp:186
+#: cygnal/rtmp_server.cpp:168
#, c-format
-msgid "Bad FLV Audio Sound Type: %x"
-msgstr ""
+msgid "NetConnection unusually large! %d"
+msgstr "NetConnection è¶
常大! %d"
-#: cygnal/libamf/flv.cpp:195
-#, c-format
-msgid "Bad FLV Audio Sound size: %d"
-msgstr ""
+#: cygnal/rtmp_server.cpp:202
+msgid "failed to read the body of the handshake data from the client."
+msgstr "æ æ³è¯»åæ¥èªå®¢æ·ç«¯æ¡ææ°æ®ç主ä½ã"
-#: cygnal/libamf/flv.cpp:209
-#, c-format
-msgid "Bad FLV Audio Sound Rate: %d"
-msgstr ""
+#: cygnal/rtmp_server.cpp:210
+msgid "Didn't receive NetConnection object in handshake!"
+msgstr "æ²¡ææ¥æ¶æ¡æä¸ç NetConnection 对象!"
-#: cygnal/libamf/flv.cpp:226
-#, c-format
-msgid "Bad FLV Audio Sound format: %d"
-msgstr ""
+#: cygnal/rtmp_server.cpp:234
+msgid "Couldn't send onBWDone to client!"
+msgstr "æ æ³åé onBWDone å°å®¢æ·ç«¯!"
-#: cygnal/libamf/flv.cpp:257
-#, c-format
-msgid "Bad FLV Video Codec CodecID: 0x%x"
-msgstr ""
+#: cygnal/rtmp_server.cpp:261 cygnal/rtmp_server.cpp:1704
+msgid "Couldn't send Ping to client!"
+msgstr "æ æ³åé Ping å°å®¢æ·ç«¯!"
-#: cygnal/libamf/flv.cpp:267
-#, c-format
-msgid "Bad FLV Video Frame CodecID: 0x%x"
-msgstr ""
+#: cygnal/rtmp_server.cpp:275
+msgid "Couldn't send response to client!"
+msgstr "æ æ³åéååºå°å®¢æ·ç«¯!"
-#: cygnal/libamf/flv.cpp:340 cygnal/libamf/flv.cpp:342
-#: cygnal/libamf/flv.cpp:344
+#: cygnal/rtmp_server.cpp:338
#, c-format
-msgid "FLV MetaData: %s: %s"
-msgstr ""
+msgid "Couldn't sent RTMP Handshake response at %d!"
+msgstr "æ æ³åé å¨ %d ç RTMP æ¡æååº!"
-#: cygnal/libamf/lcshm.cpp:372
-msgid "No data pointer to parse!"
-msgstr ""
+#: cygnal/rtmp_server.cpp:355
+msgid "No data in original handshake buffer."
+msgstr "å¨åæ¥çæ¡æç¼å²åºä¸æ²¡ææ°æ®ã"
-#: cygnal/libamf/lcshm.cpp:391
-msgid "Didn't extract an element from the byte stream!"
-msgstr ""
+#: cygnal/rtmp_server.cpp:359
+msgid "No data in response handshake buffer."
+msgstr "å¨ååºæ¡æç¼å²åºä¸æ²¡ææ°æ®ã"
-#: cygnal/libamf/lcshm.cpp:503
+#: cygnal/rtmp_server.cpp:387
#, c-format
-msgid " The size of %s is %d "
-msgstr ""
+msgid "Handshake Finish Data didn't match by %d bytes"
+msgstr "æ¡æå®ææ°æ®æ %d åèä¸å¹é
"
-#: cygnal/libamf/lcshm.cpp:520
-#, c-format
-msgid "Failed to open shared memory segment: \"%s\""
-msgstr ""
+#: cygnal/rtmp_server.cpp:555
+msgid "Route"
+msgstr "è·¯ç±"
-#: cygnal/libamf/lcshm.cpp:561
-#, c-format
-msgid "Failed to open shared memory segment: 0x%x"
-msgstr ""
+#: cygnal/rtmp_server.cpp:567
+msgid "AMF3 Notify"
+msgstr "AMF3 éç¥"
-#: cygnal/libamf/lcshm.cpp:660
-#, c-format
-msgid " ***** The size of the data is %s *****"
-msgstr ""
+#: cygnal/rtmp_server.cpp:573
+msgid "AMF3 Invoke"
+msgstr "AMF3 è°ç¨"
-#: cygnal/libamf/element.cpp:175
-msgid "Can't create remote function calls yet"
-msgstr ""
+#: cygnal/rtmp_server.cpp:582
+msgid "FLV Dat"
+msgstr "FLV Dat"
-#: cygnal/libamf/element.cpp:479
+#: cygnal/rtmp_server.cpp:585
#, c-format
-msgid "Size of Element \"%s\" is: %d"
-msgstr ""
+msgid "ERROR: Unidentified RTMP message content type 0x%x"
+msgstr "é误: æªæ è¯ç RTMP æ¶æ¯å
容类å 0x%x"
-#: cygnal/libamf/element.cpp:1534
-msgid "FIXME: got AMF3 data!"
-msgstr ""
+#: cygnal/rtmp_server.cpp:1105
+msgid "Couldn't reliably extract the echo data!"
+msgstr "æ æ³å¯é å°æåååºæ°æ®ï¼"
-#: cygnal/libamf/sol.cpp:230
+#: cygnal/rtmp_server.cpp:1402
#, c-format
-msgid ""
-"%s: SOL file header is: \n"
-"%s"
-msgstr ""
+msgid "No stream for client %d"
+msgstr "没æå®¢æ·ç«¯ %d çæµ"
-#: cygnal/libamf/sol.cpp:250
-#, c-format
-msgid "Failed opening file '%s' in binary mode"
-msgstr ""
+#: cygnal/rtmp_server.cpp:1444
+msgid "Stream Start"
+msgstr "æµå¼å§"
-#: cygnal/libamf/sol.cpp:337
-#, c-format
-msgid "Error writing %d bytes of header to output file %s"
-msgstr ""
+#: cygnal/rtmp_server.cpp:1447
+msgid "Stream EOF"
+msgstr "æµç»æ"
-#: cygnal/libamf/sol.cpp:344
-#, c-format
-msgid "Error writing %d bytes of body to output file %s"
-msgstr ""
+#: cygnal/rtmp_server.cpp:1450
+msgid "Stream No Data"
+msgstr "æµæ²¡ææ°æ®"
-#: cygnal/libamf/sol.cpp:404
+#: cygnal/rtmp_server.cpp:1453
#, c-format
-msgid "%s is an SOL file"
-msgstr ""
+msgid "Stream Set Buffer: %d"
+msgstr "æµè®¾ç½®ç¼å²åº: %d"
-#: cygnal/libamf/sol.cpp:407
-#, c-format
-msgid ""
-"%s looks like an SOL file, but the length is wrong. Should be %d, got %d"
-msgstr ""
+#: cygnal/rtmp_server.cpp:1467
+msgid "Stream Pong"
+msgstr "æµ Pong"
-#: cygnal/libamf/sol.cpp:413
-#, c-format
-msgid "%s isn't an SOL file"
-msgstr ""
+#: cygnal/rtmp_server.cpp:1486
+msgid "Set Chunk Size"
+msgstr "设置å大å°"
-#: cygnal/libamf/sol.cpp:455
-#, c-format
-msgid "Reading SharedObject %s: %s"
-msgstr ""
+#: cygnal/rtmp_server.cpp:1489
+msgid "Bytes Read"
+msgstr "读åºçåè"
-#: cygnal/libamf/amf_msg.cpp:178
-msgid "AMF Message 'target' field missing!"
-msgstr ""
+#: cygnal/rtmp_server.cpp:1497
+msgid "Set Window Size"
+msgstr "设置çªå£å¤§å°"
-#: cygnal/libamf/amf_msg.cpp:181
-msgid "AMF Message 'reply' field missing!"
-msgstr ""
+#: cygnal/rtmp_server.cpp:1500
+msgid "Set Bandwidth"
+msgstr "设置带宽"
-#: cygnal/libamf/amf_msg.cpp:184
-msgid "AMF Message 'size' field missing!"
-msgstr ""
+#: cygnal/rtmp_server.cpp:1511 cygnal/rtmp_server.cpp:1514
+#: cygnal/rtmp_server.cpp:1517 cygnal/rtmp_server.cpp:1520
+#: cygnal/rtmp_server.cpp:1667
+#, c-format
+msgid "RTMP type %d"
+msgstr "RTMP ç±»å %d"
-#: cygnal/libamf/amf_msg.cpp:231
+#: cygnal/rtmp_server.cpp:1526
#, c-format
-msgid ""
-"Error parsing the AMF packet: \n"
-"\t%s"
-msgstr ""
+msgid "Error INVOKING method \"%s\"!"
+msgstr "é误è°ç¨æ¹æ³ \"%s\"!"
-#: cygnal/libamf/amf.cpp:180
+#: cygnal/rtmp_server.cpp:1650
+msgid "Received an _error message from the client!"
+msgstr "ä»å®¢æ·ç«¯æ¥æ¶å°ä¸ä¸ª _error æ¶æ¯ï¼"
+
+#: cygnal/rtmp_server.cpp:1670
#, c-format
-msgid "Encoded data size has %d properties"
-msgstr ""
+msgid "ERROR: Unidentified AMF header data type 0x%x"
+msgstr "é误: æªæ è¯ç AMF 头鍿°æ®ç±»å 0x%x"
-#: cygnal/libamf/amf.cpp:300
-msgid "XML AMF objects not supported yet"
-msgstr ""
+#: cygnal/cygnal.cpp:190
+msgid "cygnal -- a streaming media server."
+msgstr "cygnal -- ä¸ä¸ªæµåªä½æå¡å¨ã"
-#: cygnal/libamf/amf.cpp:404
-msgid "Movie Clip AMF objects not supported yet"
-msgstr ""
+#: cygnal/cygnal.cpp:192
+msgid "Usage: cygnal [options...]"
+msgstr "ç¨æ³: cygnal [options...]"
-#: cygnal/libamf/amf.cpp:495
-msgid "Long String AMF objects not supported yet"
-msgstr ""
+#: cygnal/cygnal.cpp:193 cygnal/cgi-bin/oflaDemo/oflaDemo.cpp:596
+#: cygnal/cgi-bin/fitcDemo/fitcDemo.cpp:321
+#: cygnal/cgi-bin/echo/gateway.cpp:406 cygnal/cgi-bin/echo/echo.cpp:316
+#: cygnal/testsuite/libnet.all/test_diskstream.cpp:269
+#: cygnal/testsuite/libnet.all/test_handler.cpp:281
+#: cygnal/testsuite/libnet.all/generate_amfbins.cpp:300
+#: cygnal/testsuite/libnet.all/test_cache.cpp:391
+#: cygnal/testsuite/libamf.all/test_el.cpp:491
+#: cygnal/testsuite/libamf.all/test_buffer.cpp:721
+#: cygnal/testsuite/libamf.all/test_flv.cpp:282
+#: cygnal/testsuite/libamf.all/test_amfmsg.cpp:247
+#: cygnal/testsuite/libamf.all/test_amf.cpp:422
+msgid " -h, --help Print this help and exit"
+msgstr "-h, --help æå°æ¬å¸®å©åéåº"
-#: cygnal/libamf/amf.cpp:512
-msgid "Reecord Set AMF objects not supported yet"
-msgstr ""
+#: cygnal/cygnal.cpp:194
+msgid " -V, --version Print version information and exit"
+msgstr "-V, --version æå°çæ¬ä¿¡æ¯åéåº"
-#: cygnal/libamf/amf.cpp:561
-msgid "Encoding a strict array as an ecma array"
-msgstr ""
+#: cygnal/cygnal.cpp:195 cygnal/cgi-bin/oflaDemo/oflaDemo.cpp:597
+#: cygnal/cgi-bin/fitcDemo/fitcDemo.cpp:322
+#: cygnal/cgi-bin/echo/gateway.cpp:407 cygnal/cgi-bin/echo/echo.cpp:317
+#: cygnal/testsuite/libnet.all/test_diskstream.cpp:270
+#: cygnal/testsuite/libnet.all/test_handler.cpp:282
+#: cygnal/testsuite/libnet.all/generate_amfbins.cpp:301
+#: cygnal/testsuite/libnet.all/test_cache.cpp:392
+#: cygnal/testsuite/libamf.all/test_el.cpp:492
+#: cygnal/testsuite/libamf.all/test_buffer.cpp:722
+#: cygnal/testsuite/libamf.all/test_flv.cpp:283
+#: cygnal/testsuite/libamf.all/test_amfmsg.cpp:248
+#: cygnal/testsuite/libamf.all/test_amf.cpp:423
+msgid " -v, --verbose Output verbose debug info"
+msgstr "-v, --verbose è¾åºè¯¦ç»è°è¯ä¿¡æ¯"
-#: cygnal/libamf/amf.cpp:784
-msgid "FIXME: got AMF3 data type"
-msgstr ""
+#: cygnal/cygnal.cpp:196
+msgid " -s, --singlethread Disable Multi Threading"
+msgstr "-s, --singlethread ç¦ç¨å¤çº¿ç¨"
-#: cygnal/libamf/amf.cpp:913
-msgid "AMF body input data is NULL"
-msgstr ""
+#: cygnal/cygnal.cpp:197 cygnal/cgi-bin/oflaDemo/oflaDemo.cpp:598
+#: cygnal/cgi-bin/fitcDemo/fitcDemo.cpp:323
+#: cygnal/cgi-bin/echo/gateway.cpp:408 cygnal/cgi-bin/echo/echo.cpp:318
+msgid " -n, --netdebug Turn on net debugging messages"
+msgstr "-n, --netdebug æå¼ç½ç»è°è¯ä¿¡æ¯"
-#: cygnal/libamf/amf.cpp:937
-msgid "AMF data too short to contain type field"
-msgstr ""
+#: cygnal/cygnal.cpp:198
+msgid " -o --only-port Only use port for debugging"
+msgstr "-o --only-port ä»
使ç¨ç«¯å£è¿è¡è°è¯"
-#: cygnal/libamf/amf.cpp:948
-msgid "Element has no type!"
-msgstr ""
+#: cygnal/cygnal.cpp:199
+msgid " -p --port-offset Port offset for debugging"
+msgstr "-p --port-offset è°è¯ç«¯å£åç§»"
-#: cygnal/libamf/amf.cpp:958
-msgid "AMF data segment too short to containtype NUMBER"
-msgstr ""
+#: cygnal/cygnal.cpp:200
+msgid " -t, --testing Turn on special Gnash testing support"
+msgstr "-t, --testing æå¼ç¹æ® Gnash çæµè¯æ¯æ"
-#: cygnal/libamf/amf.cpp:978
+#: cygnal/cygnal.cpp:201
+msgid " -a, --admin Enable the administration thread"
+msgstr "-a, --admin å¯ç¨ç®¡ç线ç¨"
+
+#: cygnal/cygnal.cpp:202
+msgid " -r, --root Document root for all files"
+msgstr "-r, --root æææä»¶çææ¡£æ ¹è·¯å¾"
+
+#: cygnal/cygnal.cpp:203
+#, fuzzy
+msgid " -m, --machine Hostname for this machine"
+msgstr "该æºå¨ç主æºåæ¯ %s"
+
+#: cygnal/cygnal.cpp:266
+msgid ": couldn't open file: "
+msgstr ": æ æ³æå¼æä»¶:"
+
+#: cygnal/cygnal.cpp:343
#, c-format
-msgid "%d bytes for a string is over the safe limit of %d, line %d"
-msgstr ""
+msgid "Couldn't connect to %s"
+msgstr "æ æ³è¿æ¥å° %s"
-#: cygnal/libamf/amf.cpp:1021
-msgid "AMF0 MovieClip frame"
-msgstr ""
+#: cygnal/cygnal.cpp:363
+#, c-format
+msgid "%s is active on fd #%d."
+msgstr "%s 卿件æè¿°ç¬¦ #%d 䏿¯æ´»å¨çã"
-#: cygnal/libamf/amf.cpp:1151
-msgid "Found object terminator byte"
-msgstr ""
+#: cygnal/cygnal.cpp:509
+#, c-format
+msgid "Extraneous argument: %s"
+msgstr "å¤ä½çåæ°: %s"
-#: cygnal/libamf/amf.cpp:1169
+#: cygnal/cygnal.cpp:513 cygnal/cgi-bin/oflaDemo/oflaDemo.cpp:441
#, c-format
-msgid "%s: type %d"
-msgstr ""
+msgid "Document Root for media files is: %s"
+msgstr "åªä½æä»¶çææ¡£æ ¹è·¯å¾æ¯: %s"
-#: cygnal/libamf/amf.cpp:1262
+#: cygnal/cygnal.cpp:597
+msgid "Cygnal done..."
+msgstr "Cygnal 宿..."
+
+#: cygnal/cygnal.cpp:610
#, c-format
-msgid "No data associated with Property \"%s\""
+msgid "Got a %d interrupt"
+msgstr "éå°ä¸ä¸ª %d 䏿"
+
+#: cygnal/cygnal.cpp:630
+#, fuzzy
+msgid ""
+"Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.\n"
+"Cygnal comes with NO WARRANTY, to the extent permitted by law.\n"
+"You may redistribute copies of Cygnal under the terms of the GNU General\n"
+"Public License V3 or later. For more information, see the file named "
+"COPYING.\n"
msgstr ""
+"çæææ (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011 èªç±è½¯ä»¶åºéä¼, Incã\n"
+"Cygnal 卿³å¾å
许çé度å
ä¸ä½ä»»ä½æ
ä¿ã\n"
+"æ¨å¯ä»¥å¨éµå® GNU General\n"
+"Public License V3 æ¡æ¬¾çåæä¸åå Cygnal ç坿¬ãæ´å¤ä¿¡æ¯è¯·åè§å为 COPYING "
+"çæä»¶ã\n"
+"\n"
-#: cygnal/libamf/buffer.cpp:179
+#: cygnal/cygnal.cpp:652
#, c-format
-msgid "Buffer %x (%d) stayed in queue for %f seconds"
-msgstr ""
+msgid "Starting Admin Handler for port %d"
+msgstr "å¼å§ç«¯å£ %d ç管çå¤çç¨åº"
-#: cygnal/libamf/buffer.cpp:711
+#: cygnal/cygnal.cpp:658
+msgid "Got an incoming Admin request"
+msgstr "æä¸ä¸ªä¼ å
¥ç管ç请æ±"
+
+#: cygnal/cygnal.cpp:666
+msgid "no more admin data, exiting...\n"
+msgstr "æ²¡ææ´å¤çç®¡çæ°æ®ï¼æ£å¨éåº...\n"
+
+#: cygnal/cygnal.cpp:751
+msgid "admin_handler: Done...!\n"
+msgstr "admin_handler: 宿...!\n"
+
+#: cygnal/cygnal.cpp:780
#, c-format
-msgid "cygnal::Buffer::resize(%d): Truncating data (%d bytes) while resizing!"
-msgstr ""
+msgid "Can't start %s Connection Handler for fd #%d, port %hd"
+msgstr "æ æ³å¼å§ %s è¿æ¥å¤çç¨åºï¼æä»¶æè¿°ç¬¦ #%d, ç«¯å£ %hd"
-#: cygnal/libamf/buffer.cpp:766
+#: cygnal/cygnal.cpp:784
#, c-format
-msgid "Creating %d errors in the buffer"
-msgstr ""
+msgid "Starting %s Connection Handler for fd #%d, port %hd"
+msgstr "å¼å§ %s è¿æ¥å¤çç¨åºï¼æä»¶æè¿°ç¬¦ #%d, ç«¯å£ %hd"
-#: cygnal/handler.cpp:128
+#: cygnal/cygnal.cpp:795
#, c-format
-msgid "Protocol %d for Handler::AddClient()"
-msgstr ""
+msgid "This system has %d cpus."
+msgstr "æ¬ç³»ç»æ %d 个ä¸å¤®å¤çå¨ã"
-#: cygnal/handler.cpp:171 cygnal/handler.cpp:196
-msgid "HTTP key couldn't be read!"
-msgstr ""
+#: cygnal/cygnal.cpp:832
+#, c-format
+msgid "No new %s network connections"
+msgstr "æ²¡ææ°ç %s ç½ç»è¿æ¥"
-#: cygnal/handler.cpp:214 cygnal/handler.cpp:244
+#: cygnal/cygnal.cpp:836
#, c-format
-msgid "FD #%d has no protocol handler registered"
-msgstr ""
+msgid "*** New %s network connection for thread ID #%d, fd #%d ***"
+msgstr "*** æ°ç %s ç½ç»è¿æ¥ï¼çº¿ç¨ ID #%d, æä»¶æè¿°ç¬¦ #%d ***"
-#: cygnal/handler.cpp:319
+#: cygnal/cygnal.cpp:882
#, c-format
-msgid "No %s symbol in plugin"
-msgstr ""
+msgid "Creating new %s Handler for %s using fd #%d"
+msgstr "æ£å¨å建æ°ç %s å¤çç¨åºï¼%s æ£å¨ä½¿ç¨æä»¶æè¿°ç¬¦ #%d"
-#: cygnal/handler.cpp:322
+#: cygnal/cygnal.cpp:900
+#, fuzzy, c-format
+msgid "Reusing %s Handler for %s using fd #%d"
+msgstr "æ¢å¤ä½¿ç¨ %s å¤çç¨åºï¼%s æ£å¨ä½¿ç¨æä»¶æè¿°ç¬¦ #%d"
+
+#: cygnal/cygnal.cpp:926
#, c-format
-msgid "Initialized Plugin: \"%s\": %s"
-msgstr ""
+msgid "Creating new %s Handler for: %s for fd %#d"
+msgstr "æ£å¨å建æ°ç %s å¤çç¨åº: %sï¼æä»¶æè¿°ç¬¦ %#d"
-#: cygnal/handler.cpp:335 cygnal/handler.cpp:350
+#: cygnal/cygnal.cpp:950
#, c-format
-msgid "Couldn't get %s symbol"
-msgstr ""
+msgid "Cygnal Plugin paths are: %s"
+msgstr "Cygnal æä»¶è·¯å¾æ¯: %s"
-#: cygnal/cvm.cpp:276
-msgid "The debugger has been disabled at configuration time"
-msgstr ""
+#: cygnal/cygnal.cpp:971
+#, c-format
+msgid "Couldn't load plugin for %s"
+msgstr "æ æ³å è½½ %s çæä»¶"
-#: cygnal/http_server.cpp:154 cygnal/http_server.cpp:211
+#: cygnal/cygnal.cpp:982
#, c-format
-msgid "New filestream %s"
-msgstr ""
+msgid "Number of active Threads is %d"
+msgstr "æ´»å¨ççº¿ç¨æ°æ¯ %d"
-#: cygnal/http_server.cpp:213
+#: cygnal/cygnal.cpp:985
#, c-format
-msgid "Reusing filestream %s"
-msgstr ""
+msgid "Restarting loop for next connection for port %d..."
+msgstr "éæ°å¼å§ç«¯å£ %d 䏿¬¡è¿æ¥ç循ç¯..."
-#: cygnal/http_server.cpp:306
-msgid "couldn't read data!"
-msgstr ""
+#: cygnal/cygnal.cpp:1043
+#, c-format
+msgid "%d active disk streams"
+msgstr "%d 个活å¨çç£çæµ"
-#: cygnal/http_server.cpp:373 cygnal/libnet/http.cpp:592
-msgid "PUT request"
-msgstr ""
+#: cygnal/cygnal.cpp:1083
+#, c-format
+msgid "Got a hit for fd #%d, protocol %s"
+msgstr "å½ä¸ä¸ä¸ªæä»¶æè¿°ç¬¦ #%d, åè®® %s"
-#: cygnal/http_server.cpp:383 cygnal/libnet/http.cpp:601
-msgid "DELETE request"
-msgstr ""
+#: cygnal/cygnal.cpp:1087
+msgid "No protocol specified!"
+msgstr "没ææå®åè®®!"
-#: cygnal/http_server.cpp:393 cygnal/libnet/http.cpp:609
-msgid "CONNECT request"
-msgstr ""
+#: cygnal/cygnal.cpp:1095 cygnal/cygnal.cpp:1120 cygnal/cygnal.cpp:1131
+#, c-format
+msgid "Done with HTTP connection for fd #%d, CGI %s"
+msgstr "宿æä»¶æè¿°ç¬¦ #%d çHTTPè¿æ¥, CGI %s"
-#: cygnal/http_server.cpp:403 cygnal/libnet/http.cpp:617
-msgid "OPTIONS request"
-msgstr ""
+#: cygnal/cygnal.cpp:1100
+#, c-format
+msgid "Not Done with HTTP connection for fd #%d, it's a persistent connection."
+msgstr "æªå®ææä»¶æè¿°ç¬¦ #%d çHTTPè¿æ¥ï¼è¿æ¯ä¸ä¸ªæä¹
çè¿æ¥ã"
-#: cygnal/http_server.cpp:413 cygnal/libnet/http.cpp:625
-msgid "HEAD request"
-msgstr ""
+#: cygnal/cygnal.cpp:1109
+#, c-format
+msgid "Done with RTMP connection for fd #%d, CGI "
+msgstr "æä»¶æè¿°ç¬¦ #%d ç RTMP è¿æ¥å®æï¼CGI"
-#: cygnal/http_server.cpp:423 cygnal/libnet/http.cpp:633
-msgid "TRACE request"
-msgstr ""
+#: cygnal/cygnal.cpp:1143
+#, c-format
+msgid "Unsupported network protocol for fd #%d, %d"
+msgstr "æªæ¯æçç½ç»åè®®ï¼æä»¶æè¿°ç¬¦ #%dï¼%d"
-#: cygnal/http_server.cpp:1013
+#: cygnal/cygnal.cpp:1163
#, c-format
-msgid "Processing HTTP data for fd #%d"
-msgstr ""
+msgid "Got no hits, %d retries"
+msgstr "没æå½ä¸, %d 次éè¯"
-#: cygnal/http_server.cpp:1022
-msgid "FIXME: Existing data in packet!"
-msgstr ""
+#: cygnal/cvm.cpp:276
+msgid "The debugger has been disabled at configuration time"
+msgstr "è°è¯å¨å¨é
ç½®æ¶å·²è¢«ç¦æ¢"
-#: cygnal/http_server.cpp:1024
-msgid "FIXME: No existing data in packet!"
-msgstr ""
+#: cygnal/cgi-bin/oflaDemo/oflaDemo.cpp:233
+#: cygnal/cgi-bin/fitcDemo/fitcDemo.cpp:166
+#: cygnal/cgi-bin/echo/gateway.cpp:139 cygnal/cgi-bin/echo/echo.cpp:161
+#, c-format
+msgid "Error parsing command line options: %s"
+msgstr "è§£æå½ä»¤è¡é项é误: %s"
-#: cygnal/libnet/cache.cpp:62
-msgid "using this constructor is only allowed for testing purposes."
-msgstr ""
+#: cygnal/cgi-bin/oflaDemo/oflaDemo.cpp:309
+#, c-format
+msgid "Scanning directory \"%s\" for %s files"
+msgstr "æ«æç®å½ \"%s\"ï¼ %s æä»¶"
-#: cygnal/libnet/cache.cpp:105
+#: cygnal/cgi-bin/oflaDemo/oflaDemo.cpp:340
#, c-format
-msgid "Adding file %s to cache."
-msgstr ""
+msgid "Gnash media file name: %s"
+msgstr "Gnashåªä½æä»¶å: %s"
-#: cygnal/libnet/cache.cpp:148
+#: cygnal/cgi-bin/oflaDemo/oflaDemo.cpp:595
+#: cygnal/cgi-bin/fitcDemo/fitcDemo.cpp:320
+#: cygnal/cgi-bin/echo/gateway.cpp:405 cygnal/cgi-bin/echo/echo.cpp:315
+#: cygnal/testsuite/libamf.all/test_flv.cpp:281
+#: cygnal/testsuite/libamf.all/test_amfmsg.cpp:246
+#: cygnal/testsuite/libamf.all/test_amf.cpp:421
+msgid "Usage: test_amf [options...]"
+msgstr "ç¨æ³ï¼test_amf [options...]"
+
+#: cygnal/cgi-bin/oflaDemo/oflaDemo.cpp:599
+#: cygnal/cgi-bin/fitcDemo/fitcDemo.cpp:324 cygnal/cgi-bin/echo/echo.cpp:319
+msgid " -p, --netdebug port for network"
+msgstr "-p, --netdebug ç½ç»ç«¯å£"
+
+#: cygnal/crc.cpp:145
#, c-format
-msgid "Trying to find %s in the cache."
-msgstr ""
+msgid "Couldn't open file: %s"
+msgstr "æ æ³æå¼æä»¶ï¼%s"
+
+#: cygnal/libnet/statistics.cpp:113
+#, c-format
+msgid "Stream type is: %s"
+msgstr "æµç±»åæ¯ï¼%s"
+
+#: cygnal/libnet/statistics.cpp:119
+#, fuzzy, c-format
+msgid "%d bytes were transferred in %s seconds"
+msgstr "%d åèå¨ %s ç§è¢«ä¼ è¾"
#: cygnal/libnet/rtmp.cpp:184
#, c-format
msgid "AMF Header size bits (0x%X) out of range"
-msgstr ""
+msgstr "AMF 头é¨å¤§å°ä½ (0x%X) è¶
åºèå´"
#: cygnal/libnet/rtmp.cpp:283
#, c-format
msgid "RTMP Header size can't be more then %d bytes!!"
-msgstr ""
+msgstr "RTMP 头é¨å¤§å°ä¸è½è¶
è¿ %d åè!!"
#: cygnal/libnet/rtmp.cpp:288
msgid "RTMP Header size can't be zero!"
-msgstr ""
+msgstr "RTMP 头é¨å¤§å°ä¸è½ä¸º0!"
#: cygnal/libnet/rtmp.cpp:308
#, c-format
msgid "The body size is: %d"
-msgstr ""
+msgstr "主ä½å¤§å°æ¯ï¼%d"
#: cygnal/libnet/rtmp.cpp:315
#, c-format
msgid "Using previous body size of %d for channel %d"
-msgstr ""
+msgstr "æ£å¨ä½¿ç¨ %d çå主ä½å¤§å°ï¼éé %d"
#: cygnal/libnet/rtmp.cpp:318
#, c-format
msgid "Previous body size for channel %d is zero!"
-msgstr ""
+msgstr "éé %d çå主ä½å¤§å°ä¸º0ï¼"
#: cygnal/libnet/rtmp.cpp:328
#, c-format
msgid "Suspicious large RTMP packet body size! %d"
-msgstr ""
+msgstr "å¯ççè¶
大 RTMP å
主ä½å¤§å°ï¼%d"
#: cygnal/libnet/rtmp.cpp:341
#, c-format
msgid "The type is: %s"
-msgstr ""
+msgstr "ç±»å为ï¼%s"
#: cygnal/libnet/rtmp.cpp:343
#, c-format
msgid "The type is: 0x%x"
-msgstr ""
+msgstr "ç±»å为ï¼0x%x"
#: cygnal/libnet/rtmp.cpp:348
#, c-format
msgid "Using previous type of %d for channel %d"
-msgstr ""
+msgstr "æ£å¨ä½¿ç¨ %d çåä¸ç±»åï¼éé %d"
#: cygnal/libnet/rtmp.cpp:360
#, c-format
msgid "RTMP %s: channel: %d, head size %d, body size: %d"
-msgstr ""
+msgstr "RTMP %s: éé: %d, 头é¨å¤§å° %d, 主ä½å¤§å°ï¼%d"
#: cygnal/libnet/rtmp.cpp:482
#, c-format
msgid "The Header size is: %d"
-msgstr ""
+msgstr "头é¨å¤§å°ä¸ºï¼%d"
#: cygnal/libnet/rtmp.cpp:483
#, c-format
msgid "The AMF index is: 0x%x"
-msgstr ""
+msgstr "AMF ç´¢å¼ä¸º: 0x%x"
#: cygnal/libnet/rtmp.cpp:499
#, c-format
msgid "END is %x"
-msgstr ""
+msgstr "END 为 %x"
#: cygnal/libnet/rtmp.cpp:510
msgid "Reading AMF packets till we're done..."
-msgstr ""
+msgstr "读åAMFæ°æ®å
ç´å°å®æ..."
#: cygnal/libnet/rtmp.cpp:519
#, c-format
msgid "Total size in header is %d, buffer size is: %d"
-msgstr ""
+msgstr "头鍿»å¤§å°ä¸º %d, ç¼å²åºå¤§å°ä¸ºï¼%d"
#: cygnal/libnet/rtmp.cpp:523
msgid "FIXME: MERGING"
-msgstr ""
+msgstr "FIXME: åå¹¶"
#: cygnal/libnet/rtmp.cpp:539
#, c-format
msgid "SWF file %s"
-msgstr ""
+msgstr "SWF æä»¶ %s"
#: cygnal/libnet/rtmp.cpp:542
#, c-format
msgid "is Loading video %s"
-msgstr ""
+msgstr "æ£å¨å è½½è§é¢ %s"
#: cygnal/libnet/rtmp.cpp:545
#, c-format
msgid "is file name is %s"
-msgstr ""
+msgstr "æä»¶å称为 %s"
#: cygnal/libnet/rtmp.cpp:674
#, c-format
msgid "Unknown User Control message %d!"
-msgstr ""
+msgstr "æªç¥çç¨æ·æ§å¶æ¶æ¯ %dï¼"
#: cygnal/libnet/rtmp.cpp:746
msgid "Name field of RTMP Message corrupted!"
-msgstr ""
+msgstr "RTMP æ¶æ¯ç Name åæ®µæåï¼"
#: cygnal/libnet/rtmp.cpp:762
msgid "Stream ID field of RTMP Message corrupted!"
-msgstr ""
+msgstr "RTMP æ¶æ¯ç Stream ID åæ®µæåï¼"
#: cygnal/libnet/rtmp.cpp:991
#, c-format
msgid "Bogus size parameter in %s!"
-msgstr ""
+msgstr "%s ä¸èåç大å°åæ°ï¼"
#: cygnal/libnet/rtmp.cpp:1028
msgid "Couldn't write the full 12 byte RTMP header!"
-msgstr ""
+msgstr "æ æ³åå
¥å®æ´ç12åèRTMP头ï¼"
#: cygnal/libnet/rtmp.cpp:1031
msgid "Wrote the full 12 byte RTMP header."
-msgstr ""
+msgstr "åå
¥å®æ´ç12åèRTMP头ã"
#: cygnal/libnet/rtmp.cpp:1051
msgid "Couldn't write the full 1 byte RTMP continuation header!"
-msgstr ""
+msgstr "æ æ³åå
¥å®æ´ç1åèRTMPæ©å±å¤´ï¼"
#: cygnal/libnet/rtmp.cpp:1054
msgid "Wrote the full 1 byte RTMP continuation header"
-msgstr ""
+msgstr "åå
¥å®æ´ç1åèRTMPæ©å±å¤´ã"
#: cygnal/libnet/rtmp.cpp:1066
msgid "Couldn't write the RTMP body!"
-msgstr ""
+msgstr "æ æ³åå
¥RTMP主ä½ï¼"
#: cygnal/libnet/rtmp.cpp:1069
#, c-format
msgid "Wrote %d bytes of the RTMP body, %d bytes left."
-msgstr ""
+msgstr "åå
¥ RTMP主ä½ç %d åèï¼å©ä½ %d åèã"
#: cygnal/libnet/rtmp.cpp:1086
msgid "Couldn't write the RTMP packet!"
-msgstr ""
+msgstr "æ æ³åå
¥RTMPå
ï¼"
#: cygnal/libnet/rtmp.cpp:1089
msgid "Wrote the RTMP packet."
-msgstr ""
+msgstr "åå
¥RTMPå
ã"
#: cygnal/libnet/rtmp.cpp:1135 cygnal/libnet/rtmp.cpp:1137
#, c-format
msgid "Response header: %s"
-msgstr ""
+msgstr "ååºå¤´é¨: %s"
#: cygnal/libnet/rtmp.cpp:1141
#, c-format
msgid "Processing message of type %s!"
-msgstr ""
+msgstr "æ£å¨å¤çç±»å %sçæ¶æ¯ï¼"
#: cygnal/libnet/rtmp.cpp:1147
msgid "Got CHUNK_SIZE packet!!!"
-msgstr ""
+msgstr "å¾å° CHUNK_SIZE å
!!!"
#: cygnal/libnet/rtmp.cpp:1149
#, c-format
msgid "Setting packet chunk size to %d."
-msgstr ""
+msgstr "设置å
åç»å¤§å°å° %dã"
#: cygnal/libnet/rtmp.cpp:1159
#, c-format
msgid "FIXME: Ping type is: %d, ignored for now"
-msgstr ""
+msgstr "FIXME: Ping ç±»åæ¯ï¼%dï¼ç°å¨å·²å¿½ç¥"
#: cygnal/libnet/rtmp.cpp:1181
msgid "Got SERVER packet!!!"
-msgstr ""
+msgstr "å¾å° SERVER å
!!!"
#: cygnal/libnet/rtmp.cpp:1189
msgid "Got CLIENT packet!!!"
-msgstr ""
+msgstr "å¾å° CLIENT å
!!!"
#: cygnal/libnet/rtmp.cpp:1197
msgid "Got VIDEO packets!!!"
-msgstr ""
+msgstr "å¾å° VIDEO å
!!!"
#: cygnal/libnet/rtmp.cpp:1213
msgid "Got Shared Object packet!!!"
-msgstr ""
+msgstr "å¾å° Shared Object å
!!!"
#: cygnal/libnet/rtmp.cpp:1220
#, c-format
msgid "%s: Msg status is: %d: %s, name is %s, size is %d"
-msgstr ""
+msgstr "%sï¼æ¶æ¯ç¶æä¸ºï¼%dï¼%sï¼å称为%sï¼å¤§å°ä¸º %d"
#: cygnal/libnet/rtmp.cpp:1224
msgid "Got onBWDone packet!!!"
-msgstr ""
+msgstr "å¾å° onBWDone å
!!!"
#: cygnal/libnet/rtmp.cpp:1229
#, c-format
msgid "Couldn't decode message body for type %s!"
-msgstr ""
+msgstr "æ æ³è§£ç ç±»å为 %s çæ¶æ¯ä½ï¼"
#: cygnal/libnet/rtmp.cpp:1283
#, c-format
msgid "no data for fd #%d, done reading this packet, read %d bytes..."
-msgstr ""
+msgstr "没ææä»¶æè¿°ç¬¦ #%d çæ°æ®ï¼è¯»åå
å·²ç»æï¼è¯»å %d åè..."
#: cygnal/libnet/rtmp.cpp:1289
#, c-format
msgid "Got an empty packet from the server at line %d"
-msgstr ""
+msgstr "å¨ %d è¡ä»æå¡å¨å¾å°ä¸ä¸ªç©ºç½å
"
#: cygnal/libnet/rtmp.cpp:1298 cygnal/libnet/http.cpp:1518
#, c-format
msgid "socket for fd #%d was closed..."
-msgstr ""
+msgstr "å·²å
³éæä»¶æè¿°ç¬¦ #%d ç奿¥å..."
#: cygnal/libnet/rtmp.cpp:1329
msgid "Buffer pointer is invalid."
-msgstr ""
+msgstr "ç¼å²åºæééæ³ã"
#: cygnal/libnet/rtmp.cpp:1355
msgid "Got a message on the system channel!"
-msgstr ""
+msgstr "å¨ç³»ç»ééä¸å¾å°ä¸ä¸ªæ¶æ¯ã"
#: cygnal/libnet/rtmp.cpp:1459
#, c-format
msgid "Packet size out of range! %d, %d"
-msgstr ""
+msgstr "å
大å°è¶
åºèå´ï¼%d, %d"
#: cygnal/libnet/rtmp.cpp:1470
#, c-format
msgid "RTMP packet size is out of range! %d, %d"
-msgstr ""
+msgstr "RTMP å
大å°è¶
åºèå´ï¼%d, %d"
#: cygnal/libnet/rtmp.cpp:1475
#, c-format
msgid "RTMP header size is out of range! %d"
-msgstr ""
+msgstr "RTMP 头é¨å¤§å°è¶
åºèå´ï¼%d"
-#: cygnal/libnet/sshserver.cpp:145
+#: cygnal/libnet/rtmp_client.cpp:152
#, c-format
-msgid "User %s wants to auth with pass %s\n"
-msgstr ""
+msgid "URL is %s"
+msgstr "ç½åæ¯ %s"
-#: cygnal/libnet/sshserver.cpp:200 cygnal/libnet/sshclient.cpp:459
-msgid "==== The SSH header breaks down as follows: ===="
-msgstr ""
+#: cygnal/libnet/rtmp_client.cpp:153
+#, c-format
+msgid "Protocol is %s"
+msgstr "åè®®æ¯ %s"
-#: cygnal/libnet/network.cpp:114
-msgid "Could not find a usable WinSock DLL"
-msgstr ""
+#: cygnal/libnet/rtmp_client.cpp:154
+#, c-format
+msgid "Host is %s"
+msgstr "ä¸»æºæ¯ %s"
-#: cygnal/libnet/network.cpp:162
+#: cygnal/libnet/rtmp_client.cpp:155
#, c-format
-msgid "already connected to port %hd"
-msgstr ""
+msgid "Port is %s"
+msgstr "ç«¯å£æ¯ %s"
-#: cygnal/libnet/network.cpp:184
+#: cygnal/libnet/rtmp_client.cpp:156
#, c-format
-msgid "unable to get protocol entry for %s"
-msgstr ""
+msgid "Path is %s"
+msgstr "è·¯å¾æ¯ %s"
-#: cygnal/libnet/network.cpp:201 cygnal/libnet/network.cpp:425
-#: cygnal/libnet/network.cpp:583
+#: cygnal/libnet/rtmp_client.cpp:157
#, c-format
-msgid "unable to create socket: %s"
-msgstr ""
+msgid "Filename is %s"
+msgstr "æä»¶åæ¯ %s"
-#: cygnal/libnet/network.cpp:208
-msgid "setsockopt SO_REUSEADDR failed"
-msgstr ""
+#: cygnal/libnet/rtmp_client.cpp:158
+#, c-format
+msgid "App is %s"
+msgstr "åºç¨æ¯ %s"
-#: cygnal/libnet/network.cpp:219
+#: cygnal/libnet/rtmp_client.cpp:159
#, c-format
-msgid "unable to bind to port %hd: %s"
-msgstr ""
+msgid "Query is %s"
+msgstr "Queryæ¯ %s"
-#: cygnal/libnet/network.cpp:229
+#: cygnal/libnet/rtmp_client.cpp:160
#, c-format
-msgid "Server bound to service on %s, port %hd, using fd #%d"
-msgstr ""
+msgid "tcUrl is %s"
+msgstr "tcUrl æ¯ %s"
-#: cygnal/libnet/network.cpp:235
+#: cygnal/libnet/rtmp_client.cpp:161
#, c-format
-msgid "unable to listen on port: %hd: %s "
-msgstr ""
+msgid "swfUrl is %s"
+msgstr "swfUrl æ¯ %s"
-#: cygnal/libnet/network.cpp:291
+#: cygnal/libnet/rtmp_client.cpp:162
#, c-format
-msgid "Waiting to accept net traffic on fd #%d for port %d"
-msgstr ""
+msgid "pageUrl is %s"
+msgstr "pageUrl æ¯ %s"
-#: cygnal/libnet/network.cpp:351
-msgid "There is a new network connection request."
-msgstr ""
+#: cygnal/libnet/rtmp_client.cpp:313
+msgid "RTMP handshake request failed"
+msgstr "RTMP æ¡æè¯·æ±å¤±è´¥"
-#: cygnal/libnet/network.cpp:358
-#, c-format
-msgid "The accept() socket for fd #%d was interrupted by a system call"
-msgstr ""
+#: cygnal/libnet/rtmp_client.cpp:336
+msgid "RTMP handshake completion failed!"
+msgstr "RTMP æ¡æå®æå¤±è´¥ï¼"
-#: cygnal/libnet/network.cpp:382
-#, c-format
-msgid "unable to accept: %s"
-msgstr ""
+#: cygnal/libnet/rtmp_client.cpp:350
+msgid "Sent NetConnection Connect message successfully"
+msgstr "æååé NetConnection è¿æ¥æ¶æ¯"
-#: cygnal/libnet/network.cpp:387
-#, c-format
-msgid "Accepting TCP/IP connection on fd #%d for port %d"
-msgstr ""
+#: cygnal/libnet/rtmp_client.cpp:353
+msgid "Couldn't send NetConnection Connect message,"
+msgstr "æ æ³åé NetConnection è¿æ¥æ¶æ¯,"
+
+#: cygnal/libnet/rtmp_client.cpp:622
+msgid "Couldn't read data block in handshake!"
+msgstr "æ æ³è¯»åæ¡æçæ°æ®åï¼"
-#: cygnal/libnet/network.cpp:446 cygnal/libnet/network.cpp:604
+#: cygnal/libnet/rtmp_client.cpp:635
#, c-format
-msgid "The connect() socket for fd %d was interrupted by a system call"
-msgstr ""
+msgid "Read data block in handshake, got %d bytes."
+msgstr "è¯»åæ¡æçæ°æ®å, å¾å° %d åèã"
-#: cygnal/libnet/network.cpp:452 cygnal/libnet/network.cpp:477
-#: cygnal/libnet/network.cpp:610 cygnal/libnet/network.cpp:650
+#: cygnal/libnet/rtmp_client.cpp:638
#, c-format
-msgid "The connect() socket for fd %d never was available for writing"
-msgstr ""
+msgid "Couldn't read data block in handshake, read %d bytes!"
+msgstr "æ æ³è¯»åæ¡æçæ°æ®å, 读å %d åèï¼"
-#: cygnal/libnet/network.cpp:463 cygnal/libnet/network.cpp:628
+#: cygnal/libnet/rtmp_client.cpp:645
#, c-format
-msgid "The connect() socket for fd %d timed out waiting to write"
-msgstr ""
+msgid "RTMP Handshake header: Uptime: %u"
+msgstr "RTMP æ¡æå¤´é¨: æ£å¸¸è¿è¡æ¶é´: %u"
-#: cygnal/libnet/network.cpp:471
+#: cygnal/libnet/rtmp_client.cpp:688
#, c-format
-msgid "\tsocket name %s for fd %d"
-msgstr ""
+msgid "About to write %d bytes, data is: %d bytes."
+msgstr "åå
¥å
³äº %d åè, æ°æ®æ¯: %d åèã"
-#: cygnal/libnet/network.cpp:553
+#: cygnal/libnet/rtmp_client.cpp:691
#, c-format
-msgid "%s: to host %s at port %d"
-msgstr ""
+msgid "Client response header for handshake 2: %s"
+msgstr "æ¡æ2ç客æ·ç«¯ååºå¤´é¨: %s"
-#: cygnal/libnet/network.cpp:559
+#: cygnal/libnet/rtmp_client.cpp:693
#, c-format
-msgid "The hostname for this machine is %s"
-msgstr ""
+msgid "Data in response for handshake 2: %s"
+msgstr "æ¡æ2çååºæ°æ®: %s"
-#: cygnal/libnet/network.cpp:561
-msgid "Couldn't get the hostname for this machine"
-msgstr ""
+#: cygnal/libnet/rtmp_client.cpp:702
+msgid "Couldn't write the second handshake packet!"
+msgstr "æ æ³åå
¥ç¬¬äºä¸ªæ¡ææ°æ®å
ï¼"
-#: cygnal/libnet/network.cpp:576
-#, c-format
-msgid "The IP address for this client socket is %s"
-msgstr ""
+#: cygnal/libnet/rtmp_client.cpp:729
+msgid "Got no response from the RTMP server"
+msgstr "没æå¾å°æ¥èª RTMP æå¡å¨çååº"
-#: cygnal/libnet/network.cpp:643
-#, c-format
-msgid "\tport %d at IP %s for fd %d"
-msgstr ""
+#: cygnal/libnet/rtmp_client.cpp:737
+msgid "Got empty packet in buffer."
+msgstr "å¨ç¼å²åºä¸å¾å°ç©ºå
ã"
-#: cygnal/libnet/network.cpp:730
-#, c-format
-msgid "Unable to close the socket for fd #%d: %s"
-msgstr ""
+#: cygnal/libnet/rtmp_client.cpp:748
+msgid "No response from INVOKE of NetConnection connect"
+msgstr "NetConnection è¿æ¥ç INVOKE 没æååº"
-#: cygnal/libnet/network.cpp:738
+#: cygnal/libnet/rtmp_client.cpp:755
#, c-format
-msgid "Closed the socket on fd #%d"
-msgstr ""
+msgid ""
+"%s: There are %d channel queues in the RTMP input queue, %d messages in "
+"front queue"
+msgstr "%s: å¨ RTMP è¾å
¥éå䏿 %d éééå, åé¢éå䏿 %d æ¶æ¯"
-#: cygnal/libnet/network.cpp:767
-#, c-format
-msgid "%s: Closed fd #%d"
-msgstr ""
+#: cygnal/libnet/rtmp_client.cpp:768
+msgid "Couldn't decode RTMP message header"
+msgstr "æ æ³è§£ç RTMP æ¶æ¯å¤´"
-#: cygnal/libnet/network.cpp:879
-#, c-format
-msgid "Trying to read %d bytes from fd #%d"
-msgstr ""
+#: cygnal/libnet/rtmp_client.cpp:773
+msgid "RTMP packet can't be of none type!"
+msgstr "RTMP å
ä¸è½æ¯æ²¡æç±»åçï¼"
-#: cygnal/libnet/network.cpp:943 cygnal/libnet/network.cpp:1117
-#, c-format
-msgid "The socket for fd #%d was interrupted by a system call"
-msgstr ""
+#: cygnal/libnet/rtmp_client.cpp:777
+msgid "Server message data packet"
+msgstr "æå¡å¨æ¶æ¯æ°æ®å
"
-#: cygnal/libnet/network.cpp:947
-#, c-format
-msgid "The socket for fd #%d was never available for reading"
-msgstr ""
+#: cygnal/libnet/rtmp_client.cpp:781
+msgid "Abort packet"
+msgstr "䏿¢æ°æ®å
"
-#: cygnal/libnet/network.cpp:953
-#, c-format
-msgid "The socket for #fd %d timed out waiting to read"
-msgstr ""
+#: cygnal/libnet/rtmp_client.cpp:784
+msgid "Bytes Read data packet"
+msgstr "è¯»åæ°æ®å
åè"
-#: cygnal/libnet/network.cpp:970
+#: cygnal/libnet/rtmp_client.cpp:789
#, c-format
-msgid "The socket for fd #%d was never available for reading data"
-msgstr ""
+msgid "Got a Ping type %s"
+msgstr "å¾å°ä¸ä¸ª Ping ç±»å %s"
-#: cygnal/libnet/network.cpp:976
-#, c-format
-msgid "The socket for #fd %d timed out waiting to read data"
-msgstr ""
+#: cygnal/libnet/rtmp_client.cpp:793
+msgid "Set Window Size message data packet"
+msgstr "设置çªå£å¤§å° æ¶æ¯æ°æ®å
"
-#: cygnal/libnet/network.cpp:982
-#, c-format
-msgid "read %d bytes from fd #%d from port %d"
-msgstr ""
+#: cygnal/libnet/rtmp_client.cpp:796
+msgid "Set Bandwidthmessage data packet"
+msgstr "设置带宽 æ¶æ¯æ°æ®å
"
-#: cygnal/libnet/network.cpp:986
-#, c-format
-msgid ""
-"%s: Read packet data from fd #%d (%d bytes): \n"
-"%s"
-msgstr ""
+#: cygnal/libnet/rtmp_client.cpp:799
+msgid "Route from other server packet"
+msgstr "èªå
¶ä»æå¡å¨å
çè·¯ç±"
-#: cygnal/libnet/network.cpp:1121
-#, c-format
-msgid "The socket for fd #%d was never available for writing"
-msgstr ""
+#: cygnal/libnet/rtmp_client.cpp:818
+msgid "AMF0 Shared Object data packet message"
+msgstr "AMF0 å
±äº«å¯¹è±¡æ°æ®å
æ¶æ¯"
-#: cygnal/libnet/network.cpp:1125
-#, c-format
-msgid "The socket for fd #%d timed out waiting to write"
-msgstr ""
+#: cygnal/libnet/rtmp_client.cpp:821
+msgid "AMF3 Notify data packet message"
+msgstr "AMF3 éç¥æ°æ®å
æ¶æ¯"
-#: cygnal/libnet/network.cpp:1139
-#, c-format
-msgid "Wrote zero out of %d bytes to fd #%d: %s"
-msgstr ""
+#: cygnal/libnet/rtmp_client.cpp:824
+msgid "AMF3 Shared Object data packet message"
+msgstr "AMF3 å
±äº«å¯¹è±¡æ°æ®å
æ¶æ¯"
-#: cygnal/libnet/network.cpp:1144
-#, c-format
-msgid "Couldn't write %d bytes to fd #%d: %s"
-msgstr ""
+#: cygnal/libnet/rtmp_client.cpp:827
+msgid "AMF0 Invoke packet message"
+msgstr "AMF0 è°ç¨å
æ¶æ¯"
-#: cygnal/libnet/network.cpp:1152
-#, c-format
-msgid "wrote %d bytes to fd #%d, expected %d"
-msgstr ""
+#: cygnal/libnet/rtmp_client.cpp:830
+msgid "AMF0 Notify data packet message"
+msgstr "AMF0 éç¥æ°æ®å
æ¶æ¯"
+
+#: cygnal/libnet/rtmp_client.cpp:841
+#, fuzzy
+msgid "FLV data packet message"
+msgstr "Flv æ°æ®å
æ¶æ¯"
+
+#: cygnal/libnet/rtmp_client.cpp:844
+msgid "Couldn't decode RTMP message Body"
+msgstr "æ æ³è§£ç RTMP æ¶æ¯ä¸»ä½"
+
+#: cygnal/libnet/cque.cpp:71
+msgid "CQue::wait(win32)"
+msgstr "CQue::wait(win32)"
-#: cygnal/libnet/network.cpp:1157
+#: cygnal/libnet/cque.cpp:83
+msgid "CQue::notify(win32)"
+msgstr "CQue::notify(win32)"
+
+#: cygnal/libnet/http.cpp:176
#, c-format
-msgid "wrote %d bytes to fd #%d for port %d"
-msgstr ""
+msgid "Setting Content Length to %d"
+msgstr "设置å
容é¿åº¦ä¸º %d"
-#: cygnal/libnet/network.cpp:1165
+#: cygnal/libnet/http.cpp:189
#, c-format
-msgid ""
-"%s: Wrote packet data to fd #%d: \n"
-"%s"
-msgstr ""
+msgid "Setting Content Type to %d"
+msgstr "设置å
容类å为 %d"
-#: cygnal/libnet/network.cpp:1179
+#: cygnal/libnet/http.cpp:199
#, c-format
-msgid "took %d usec to write (%d bytes)"
-msgstr ""
+msgid "Got a request, parsing \"%s\""
+msgstr "å¾å°ä¸ä¸ªè¯·æ±, æ£å¨è§£æ \"%s\""
-#: cygnal/libnet/network.cpp:1194 cygnal/libnet/network.cpp:1205
+#: cygnal/libnet/http.cpp:216 cygnal/libnet/http.cpp:1295
#, c-format
-msgid "%s: adding fd #%d to pollfds"
-msgstr ""
+msgid "Parameters for file: \"%s\""
+msgstr "æä»¶çåæ°: \"%s\""
-#: cygnal/libnet/network.cpp:1231
+#: cygnal/libnet/http.cpp:220
#, c-format
-msgid "%s: erasing fd #%d from pollfds"
-msgstr ""
+msgid "Requesting file: \"%s\""
+msgstr "æ£å¨è¯·æ±æä»¶: \"%s\""
+
+#: cygnal/libnet/http.cpp:225
+msgid "Enabling Keep Alive by default for HTTP > 1.0"
+msgstr "HTTP > 1.0é»è®¤å¯ç¨ä¿æè¿çº¿"
-#: cygnal/libnet/network.cpp:1279
+#: cygnal/libnet/http.cpp:422 cygnal/libnet/http.cpp:521
#, c-format
-msgid "%s: waiting for %d fds"
-msgstr ""
+msgid "Que empty, net connection dropped for fd #%d"
+msgstr "Que 为空, ç½ç»è¿æ¥æææä»¶æè¿°ç¬¦ #%d"
-#: cygnal/libnet/network.cpp:1318
+#: cygnal/libnet/http.cpp:433
+msgid "FIXME: found file in cache!"
+msgstr "FIXME: å¨ç¼å䏿¾å°çæä»¶ï¼"
+
+#: cygnal/libnet/http.cpp:499
#, c-format
-msgid "Poll returned: %d, timeout is: %d"
-msgstr ""
+msgid "http_handler all done transferring requested file \"%s\"."
+msgstr "http_handler ä¼ è¾è¯·æ±çæä»¶ \"%s\" å
¨é¨å®æã"
-#: cygnal/libnet/network.cpp:1449
-msgid "Waiting for data was interrupted by a system call"
-msgstr ""
+#: cygnal/libnet/http.cpp:542
+msgid "Got file data in POST"
+msgstr "POST ä¸å¾å°æä»¶æ°æ®"
-#: cygnal/libnet/network.cpp:1453
-msgid "Waiting for data for fdset, was never available for reading"
-msgstr ""
+#: cygnal/libnet/http.cpp:549
+msgid "Got AMF data in POST"
+msgstr "POSTä¸å¾å° AMF æ°æ®"
-#: cygnal/libnet/network.cpp:1467
-#, c-format
-msgid "select() got an error: %s."
-msgstr ""
+#: cygnal/libnet/http.cpp:564
+msgid "Got CGI echo request in POST"
+msgstr "POSTå¾å°CGIååºè¯·æ±"
-#: cygnal/libnet/network.cpp:1471
-#, c-format
-msgid "select() saw activity on %d file descriptors."
-msgstr ""
+#: cygnal/libnet/http.cpp:592 cygnal/http_server.cpp:375
+msgid "PUT request"
+msgstr "PUT 请æ±"
-#: cygnal/libnet/network.cpp:1547
-#, c-format
-msgid "Can't connect to server %s"
-msgstr ""
+#: cygnal/libnet/http.cpp:601 cygnal/http_server.cpp:385
+msgid "DELETE request"
+msgstr "DELETE 请æ±"
-#: cygnal/libnet/network.cpp:1559
-#, c-format
-msgid "Using default hostname: \"%s\""
-msgstr ""
+#: cygnal/libnet/http.cpp:609 cygnal/http_server.cpp:395
+msgid "CONNECT request"
+msgstr "CONNECT 请æ±"
-#: cygnal/libnet/network.cpp:1564
-#, c-format
-msgid "Using default keyfile: \"%s\""
-msgstr ""
+#: cygnal/libnet/http.cpp:617 cygnal/http_server.cpp:405
+msgid "OPTIONS request"
+msgstr "OPTIONS 请æ±"
-#: cygnal/libnet/network.cpp:1569
+#: cygnal/libnet/http.cpp:625 cygnal/http_server.cpp:415
+msgid "HEAD request"
+msgstr "HEAD 请æ±"
+
+#: cygnal/libnet/http.cpp:633 cygnal/http_server.cpp:425
+msgid "TRACE request"
+msgstr "TRACE 请æ±"
+
+#: cygnal/libnet/http.cpp:1385
#, c-format
-msgid "Using default CA List: \"%s\""
-msgstr ""
+msgid "%s: Total size for first chunk is: %d, data size %d (%d)"
+msgstr "%s: 第ä¸åçæ»å¤§å°ä¸º: %d, æ°æ®å¤§å°ä¸º %d (%d)"
-#: cygnal/libnet/network.cpp:1575
+#: cygnal/libnet/http.cpp:1419 cygnal/libnet/http.cpp:1512
#, c-format
-msgid "Using default Password: \"%s\""
-msgstr ""
+msgid "no data yet for fd #%d, continuing..."
+msgstr "æä»¶æè¿°ç¬¦ #%d ææ¶è¿æ²¡ææ°æ®ï¼ç»§ç»..."
-#: cygnal/libnet/network.cpp:1580
+#: cygnal/libnet/http.cpp:1436
#, c-format
-msgid "Using default Root Path to PEM files: \"%s\""
-msgstr ""
+msgid "%s: end of chunks!"
+msgstr "%s: åç»æ!"
-#: cygnal/libnet/network.cpp:1585
-msgid "Connected to SSL server"
-msgstr ""
+#: cygnal/libnet/http.cpp:1502
+#, c-format
+msgid "Starting to wait for data in net for fd #%d"
+msgstr "å¼å§çå¾
æä»¶æè¿°ç¬¦ #%d çç½ç»æ°æ®"
-#: cygnal/libnet/network.cpp:1587
-msgid "Couldn't connect to SSL server"
-msgstr ""
+#: cygnal/libnet/http.cpp:1538
+#, c-format
+msgid "no more data for fd #%d, exiting..."
+msgstr "æä»¶æè¿°ç¬¦ #%d æ²¡ææ´å¤çæ°æ®, æ£å¨éåº..."
-#: cygnal/libnet/network.cpp:1620
+#: cygnal/libnet/http.cpp:1542
#, c-format
-msgid "#%d bytes waiting in kernel network buffer."
-msgstr ""
+msgid "Handler done for fd #%d, can't read any data..."
+msgstr "æä»¶æè¿°ç¬¦ #%d å¤çç¨åºå®æ, æ æ³è¯»å任使°æ®..."
-#: cygnal/libnet/network.cpp:1631
+#: cygnal/libnet/http.cpp:1548
#, c-format
-msgid "Got an %d interrupt while blocked on pselect()"
-msgstr ""
+msgid "Done receiving data for fd #%d..."
+msgstr "æä»¶æè¿°ç¬¦ #%d æ¥æ¶æ°æ®å®æ..."
-#: cygnal/libnet/statistics.cpp:113
+#: cygnal/libnet/http.cpp:1560
+msgid "==== The HTTP header breaks down as follows: ===="
+msgstr "==== HTTP头é¨åè§£å¦ä¸ï¼===="
+
+#: cygnal/libnet/http.cpp:1561
#, c-format
-msgid "Stream type is: %s"
-msgstr ""
+msgid "Filespec: %s"
+msgstr "æä»¶è¯´æ: %s"
-#: cygnal/libnet/statistics.cpp:119
+#: cygnal/libnet/http.cpp:1562
#, c-format
-msgid "%d bytes were transferred in %s seconds"
-msgstr ""
+msgid "Version: %d.%d"
+msgstr "çæ¬: %d.%d"
-#: cygnal/libnet/rtmp_client.cpp:152
+#: cygnal/libnet/http.cpp:1566
#, c-format
-msgid "URL is %s"
-msgstr ""
+msgid "Field: \"%s\" = \"%s\""
+msgstr "åæ®µ: \"%s\" = \"%s\""
-#: cygnal/libnet/rtmp_client.cpp:153
+#: cygnal/libnet/http.cpp:1570
+msgid "RTMPT optional index is: "
+msgstr "RTMPT å¯éåºå·æ¯:"
+
+#: cygnal/libnet/http.cpp:1571
+msgid "RTMPT optional client ID is: "
+msgstr "RTMPT å¯é客æ·IDæ¯ï¼"
+
+#: cygnal/libnet/http.cpp:1572
+msgid "==== ==== ===="
+msgstr "==== ==== ===="
+
+#: cygnal/libnet/network.cpp:113
+msgid "Could not find a usable WinSock DLL"
+msgstr "æ æ³æ¾å°ä¸ä¸ªå¯ç¨ç WinSock DLL "
+
+#: cygnal/libnet/network.cpp:165
#, c-format
-msgid "Protocol is %s"
-msgstr ""
+msgid "already connected to port %hd"
+msgstr "å·²è¿æ¥å°ç«¯å£ %hd"
-#: cygnal/libnet/rtmp_client.cpp:154
+#: cygnal/libnet/network.cpp:182 cygnal/libnet/network.cpp:580
#, c-format
-msgid "Host is %s"
+msgid "getaddrinfo() failed with code: #%d - %s\n"
msgstr ""
-#: cygnal/libnet/rtmp_client.cpp:155
+#: cygnal/libnet/network.cpp:231 cygnal/libnet/network.cpp:446
#, c-format
-msgid "Port is %s"
-msgstr ""
+msgid "unable to create socket: %s"
+msgstr "æ æ³åå»ºå¥æ¥åï¼%s"
-#: cygnal/libnet/rtmp_client.cpp:156
+#: cygnal/libnet/network.cpp:238
+msgid "setsockopt SO_REUSEADDR failed"
+msgstr "setsockopt SO_REUSEADDR 失败"
+
+#: cygnal/libnet/network.cpp:246
#, c-format
-msgid "Path is %s"
-msgstr ""
+msgid "unable to bind to port %hd: %s"
+msgstr "æ æ³ç»å®å°ç«¯å£ %hd: %s"
-#: cygnal/libnet/rtmp_client.cpp:157
+#: cygnal/libnet/network.cpp:253
#, c-format
-msgid "Filename is %s"
-msgstr ""
+msgid "unable to listen on port: %hd: %s "
+msgstr "æ æ³çå¬å¨ç«¯å£ï¼%hd: %s"
-#: cygnal/libnet/rtmp_client.cpp:158
+#: cygnal/libnet/network.cpp:312
#, c-format
-msgid "App is %s"
-msgstr ""
+msgid "Waiting to accept net traffic on fd #%d for port %d"
+msgstr "çå¾
æ¥åç½ç»æµé卿件æè¿°ç¬¦ #%dï¼ç«¯å£ %d"
-#: cygnal/libnet/rtmp_client.cpp:159
+#: cygnal/libnet/network.cpp:372
+msgid "There is a new network connection request."
+msgstr "æä¸ä¸ªæ°çç½ç»è¿æ¥è¯·æ±ã"
+
+#: cygnal/libnet/network.cpp:379
#, c-format
-msgid "Query is %s"
-msgstr ""
+msgid "The accept() socket for fd #%d was interrupted by a system call"
+msgstr "æä»¶æè¿°ç¬¦ #%d ç accept() 奿¥å被系ç»è°ç¨ä¸æ"
-#: cygnal/libnet/rtmp_client.cpp:160
+#: cygnal/libnet/network.cpp:403
#, c-format
-msgid "tcUrl is %s"
-msgstr ""
+msgid "unable to accept: %s"
+msgstr "æ æ³æ¥åï¼%s"
-#: cygnal/libnet/rtmp_client.cpp:161
+#: cygnal/libnet/network.cpp:408
#, c-format
-msgid "swfUrl is %s"
-msgstr ""
+msgid "Accepting TCP/IP connection on fd #%d for port %d"
+msgstr "æ¥å TCP/IP è¿æ¥å¨æä»¶æè¿°ç¬¦ #%dï¼ç«¯å£ %d"
-#: cygnal/libnet/rtmp_client.cpp:162
+#: cygnal/libnet/network.cpp:467 cygnal/libnet/network.cpp:661
#, c-format
-msgid "pageUrl is %s"
-msgstr ""
+msgid "The connect() socket for fd %d was interrupted by a system call"
+msgstr "æä»¶æè¿°ç¬¦ #%d ç connect() 奿¥å被系ç»è°ç¨ä¸æ"
-#: cygnal/libnet/rtmp_client.cpp:313
-msgid "RTMP handshake request failed"
-msgstr ""
+#: cygnal/libnet/network.cpp:473 cygnal/libnet/network.cpp:498
+#: cygnal/libnet/network.cpp:667 cygnal/libnet/network.cpp:702
+#, c-format
+msgid "The connect() socket for fd %d never was available for writing"
+msgstr "æä»¶æè¿°ç¬¦ #%d ç connect() 奿¥åå°ä¸å¯å"
-#: cygnal/libnet/rtmp_client.cpp:336
-msgid "RTMP handshake completion failed!"
-msgstr ""
+#: cygnal/libnet/network.cpp:484 cygnal/libnet/network.cpp:685
+#, c-format
+msgid "The connect() socket for fd %d timed out waiting to write"
+msgstr "æä»¶æè¿°ç¬¦ #%d ç connect() 奿¥åçå¾
åå
¥è¶
æ¶"
-#: cygnal/libnet/rtmp_client.cpp:350
-msgid "Sent NetConnection Connect message successfully"
-msgstr ""
+#: cygnal/libnet/network.cpp:492
+#, c-format
+msgid "\tsocket name %s for fd %d"
+msgstr "\t奿¥ååç§° %sï¼æä»¶æè¿°ç¬¦ %d"
-#: cygnal/libnet/rtmp_client.cpp:353
-msgid "Couldn't send NetConnection Connect message,"
-msgstr ""
+#: cygnal/libnet/network.cpp:571
+#, c-format
+msgid "%s: to host %s at port %d"
+msgstr "%s: ä¸»æº %sï¼ç«¯å£ %d"
-#: cygnal/libnet/rtmp_client.cpp:622
-msgid "Couldn't read data block in handshake!"
-msgstr ""
+#: cygnal/libnet/network.cpp:695
+#, c-format
+msgid "\tport %d at IP %s for fd %d"
+msgstr "\tç«¯å£ %dï¼IP %sï¼æä»¶æè¿°ç¬¦ %d"
-#: cygnal/libnet/rtmp_client.cpp:635
+#: cygnal/libnet/network.cpp:780
#, c-format
-msgid "Read data block in handshake, got %d bytes."
-msgstr ""
+msgid "Unable to close the socket for fd #%d: %s"
+msgstr "æ æ³å
³éæä»¶æè¿°ç¬¦ #%d ç奿¥åï¼%s"
-#: cygnal/libnet/rtmp_client.cpp:638
+#: cygnal/libnet/network.cpp:788
#, c-format
-msgid "Couldn't read data block in handshake, read %d bytes!"
-msgstr ""
+msgid "Closed the socket on fd #%d"
+msgstr "å
³éæä»¶æè¿°ç¬¦ #%d ç奿¥å"
-#: cygnal/libnet/rtmp_client.cpp:645
+#: cygnal/libnet/network.cpp:817
#, c-format
-msgid "RTMP Handshake header: Uptime: %u"
-msgstr ""
+msgid "%s: Closed fd #%d"
+msgstr "%s: å·²å
³éæä»¶æè¿°ç¬¦ #%d"
-#: cygnal/libnet/rtmp_client.cpp:688
+#: cygnal/libnet/network.cpp:929
#, c-format
-msgid "About to write %d bytes, data is: %d bytes."
-msgstr ""
+msgid "Trying to read %d bytes from fd #%d"
+msgstr "è¯å¾è¯»å %d åè仿件æè¿°ç¬¦ #%d"
-#: cygnal/libnet/rtmp_client.cpp:691
+#: cygnal/libnet/network.cpp:993 cygnal/libnet/network.cpp:1167
#, c-format
-msgid "Client response header for handshake 2: %s"
-msgstr ""
+msgid "The socket for fd #%d was interrupted by a system call"
+msgstr "æä»¶æè¿°ç¬¦ #%d ç奿¥å被系ç»è°ç¨ä¸æ"
-#: cygnal/libnet/rtmp_client.cpp:693
+#: cygnal/libnet/network.cpp:997
#, c-format
-msgid "Data in response for handshake 2: %s"
-msgstr ""
+msgid "The socket for fd #%d was never available for reading"
+msgstr "æä»¶æè¿°ç¬¦ #%d ç奿¥åä¸å¯ç¨äºè¯»å"
-#: cygnal/libnet/rtmp_client.cpp:702
-msgid "Couldn't write the second handshake packet!"
-msgstr ""
+#: cygnal/libnet/network.cpp:1003
+#, c-format
+msgid "The socket for #fd %d timed out waiting to read"
+msgstr "æä»¶æè¿°ç¬¦ #%d ç奿¥åçå¾
读åè¶
æ¶"
-#: cygnal/libnet/rtmp_client.cpp:729
-msgid "Got no response from the RTMP server"
-msgstr ""
+#: cygnal/libnet/network.cpp:1020
+#, c-format
+msgid "The socket for fd #%d was never available for reading data"
+msgstr "æä»¶æè¿°ç¬¦ #%d ç奿¥åä¸å¯ç¨äºè¯»åæ°æ®"
-#: cygnal/libnet/rtmp_client.cpp:737
-msgid "Got empty packet in buffer."
-msgstr ""
+#: cygnal/libnet/network.cpp:1026
+#, c-format
+msgid "The socket for #fd %d timed out waiting to read data"
+msgstr "æä»¶æè¿°ç¬¦ #%d ç奿¥åçå¾
è¯»åæ°æ®è¶
æ¶"
-#: cygnal/libnet/rtmp_client.cpp:748
-msgid "No response from INVOKE of NetConnection connect"
-msgstr ""
+#: cygnal/libnet/network.cpp:1032
+#, c-format
+msgid "read %d bytes from fd #%d from port %d"
+msgstr "读å %d åè仿件æè¿°ç¬¦ #%dï¼ç«¯å£ %d"
-#: cygnal/libnet/rtmp_client.cpp:755
+#: cygnal/libnet/network.cpp:1036
#, c-format
msgid ""
-"%s: There are %d channel queues in the RTMP input queue, %d messages in "
-"front queue"
+"%s: Read packet data from fd #%d (%d bytes): \n"
+"%s"
msgstr ""
+"%s: 读åå
æ°æ®ä»æä»¶æè¿°ç¬¦ #%d (%d åè): \n"
+"%s"
-#: cygnal/libnet/rtmp_client.cpp:768
-msgid "Couldn't decode RTMP message header"
-msgstr ""
+#: cygnal/libnet/network.cpp:1171
+#, c-format
+msgid "The socket for fd #%d was never available for writing"
+msgstr "æä»¶æè¿°ç¬¦ #%d ç奿¥åä¸å¯ç¨äºåå
¥"
-#: cygnal/libnet/rtmp_client.cpp:773
-msgid "RTMP packet can't be of none type!"
-msgstr ""
+#: cygnal/libnet/network.cpp:1175
+#, c-format
+msgid "The socket for fd #%d timed out waiting to write"
+msgstr "æä»¶æè¿°ç¬¦ #%d ç奿¥åçå¾
åå
¥æ°æ®è¶
æ¶"
-#: cygnal/libnet/rtmp_client.cpp:777
-msgid "Server message data packet"
-msgstr ""
+#: cygnal/libnet/network.cpp:1189
+#, c-format
+msgid "Wrote zero out of %d bytes to fd #%d: %s"
+msgstr "å·²åå
¥ 0/%d åèå°æä»¶æè¿°ç¬¦ #%d: %s"
-#: cygnal/libnet/rtmp_client.cpp:781
-msgid "Abort packet"
-msgstr ""
+#: cygnal/libnet/network.cpp:1194
+#, c-format
+msgid "Couldn't write %d bytes to fd #%d: %s"
+msgstr "æ æ³åå
¥ %d åèå°æä»¶æè¿°ç¬¦ #%d: %s"
-#: cygnal/libnet/rtmp_client.cpp:784
-msgid "Bytes Read data packet"
-msgstr ""
+#: cygnal/libnet/network.cpp:1202
+#, c-format
+msgid "wrote %d bytes to fd #%d, expected %d"
+msgstr "å·²åå
¥ %d åèå°æä»¶æè¿°ç¬¦ #%d, é¢è®¡ä¸º %d"
-#: cygnal/libnet/rtmp_client.cpp:789
+#: cygnal/libnet/network.cpp:1207
#, c-format
-msgid "Got a Ping type %s"
-msgstr ""
+msgid "wrote %d bytes to fd #%d for port %d"
+msgstr "å·²åå
¥ %d åèå°æä»¶æè¿°ç¬¦ #%dï¼ç«¯å£ %d"
-#: cygnal/libnet/rtmp_client.cpp:793
-msgid "Set Window Size message data packet"
+#: cygnal/libnet/network.cpp:1215
+#, c-format
+msgid ""
+"%s: Wrote packet data to fd #%d: \n"
+"%s"
msgstr ""
+"%s: åå
¥å
æ°æ®å°æä»¶æè¿°ç¬¦ #%d: \n"
+"%s"
-#: cygnal/libnet/rtmp_client.cpp:796
-msgid "Set Bandwidthmessage data packet"
-msgstr ""
+#: cygnal/libnet/network.cpp:1229
+#, c-format
+msgid "took %d usec to write (%d bytes)"
+msgstr "è±è´¹ %d 微妿¥åå
¥(%d åè)"
-#: cygnal/libnet/rtmp_client.cpp:799
-msgid "Route from other server packet"
-msgstr ""
+#: cygnal/libnet/network.cpp:1244 cygnal/libnet/network.cpp:1255
+#, c-format
+msgid "%s: adding fd #%d to pollfds"
+msgstr "%s: æ·»å æä»¶æè¿°ç¬¦ #%d å° pollfds"
-#: cygnal/libnet/rtmp_client.cpp:818
-msgid "AMF0 Shared Object data packet message"
-msgstr ""
+#: cygnal/libnet/network.cpp:1281
+#, c-format
+msgid "%s: erasing fd #%d from pollfds"
+msgstr "%s: ä» pollfds å 餿件æè¿°ç¬¦ #%d "
-#: cygnal/libnet/rtmp_client.cpp:821
-msgid "AMF3 Notify data packet message"
-msgstr ""
+#: cygnal/libnet/network.cpp:1329
+#, c-format
+msgid "%s: waiting for %d fds"
+msgstr "%s: çå¾
%d fds"
-#: cygnal/libnet/rtmp_client.cpp:824
-msgid "AMF3 Shared Object data packet message"
-msgstr ""
+#: cygnal/libnet/network.cpp:1368
+#, c-format
+msgid "Poll returned: %d, timeout is: %d"
+msgstr "Poll è¿å: %d, è¶
æ¶ä¸º: %d"
-#: cygnal/libnet/rtmp_client.cpp:827
-msgid "AMF0 Invoke packet message"
-msgstr ""
+#: cygnal/libnet/network.cpp:1499
+msgid "Waiting for data was interrupted by a system call"
+msgstr "æ£å¨çå¾
æ°æ®è¢«ç³»ç»è°ç¨ä¸æ"
-#: cygnal/libnet/rtmp_client.cpp:830
-msgid "AMF0 Notify data packet message"
-msgstr ""
+#: cygnal/libnet/network.cpp:1503
+msgid "Waiting for data for fdset, was never available for reading"
+msgstr "çå¾
fdset æ°æ®ï¼ä¸å¯ç¨äºè¯»å"
-#: cygnal/libnet/rtmp_client.cpp:841
-msgid "FLV data packet message"
-msgstr ""
+#: cygnal/libnet/network.cpp:1517
+#, c-format
+msgid "select() got an error: %s."
+msgstr "select() éå°ä¸ä¸ªé误ï¼%s."
-#: cygnal/libnet/rtmp_client.cpp:844
-msgid "Couldn't decode RTMP message Body"
-msgstr ""
+#: cygnal/libnet/network.cpp:1521
+#, c-format
+msgid "select() saw activity on %d file descriptors."
+msgstr "select() åç° %d æä»¶æè¿°ç¬¦ä¸çæ´»å¨ã"
-#: cygnal/libnet/sslserver.cpp:136
-msgid "SSL!!"
-msgstr ""
+#: cygnal/libnet/network.cpp:1597
+#, c-format
+msgid "Can't connect to server %s"
+msgstr "æ æ³è¿æ¥å°æå¡å¨ %s"
-#: cygnal/libnet/sslserver.cpp:159
-msgid "Got an incoming SSL connection request"
-msgstr ""
+#: cygnal/libnet/network.cpp:1609
+#, c-format
+msgid "Using default hostname: \"%s\""
+msgstr "æ£å¨ä½¿ç¨ç¼ºç主æºåï¼ \"%s\""
-#: cygnal/libnet/sslserver.cpp:169 cygnal/libnet/sslclient.cpp:137
-#: cygnal/libnet/sslclient.cpp:161 cygnal/libnet/sslclient.cpp:212
-#: cygnal/libnet/sslclient.cpp:236 cygnal/libnet/sslclient.cpp:314
+#: cygnal/libnet/network.cpp:1614
#, c-format
-msgid "Error was: \"%s\"!"
-msgstr ""
+msgid "Using default keyfile: \"%s\""
+msgstr "使ç¨ç¼ºççå¯é¥æä»¶ï¼\"%s\""
-#: cygnal/libnet/sslserver.cpp:182 cygnal/libnet/sslclient.cpp:386
-msgid "==== The SSL header breaks down as follows: ===="
-msgstr ""
+#: cygnal/libnet/network.cpp:1619
+#, c-format
+msgid "Using default CA List: \"%s\""
+msgstr "æ£å¨ä½¿ç¨ç¼ºç CA å表ï¼\"%s\""
-#: cygnal/libnet/cque.cpp:71
-msgid "CQue::wait(win32)"
-msgstr ""
+#: cygnal/libnet/network.cpp:1625
+#, c-format
+msgid "Using default Password: \"%s\""
+msgstr "æ£å¨ä½¿ç¨ç¼ºçå¯ç ï¼\"%s\""
-#: cygnal/libnet/cque.cpp:83
-msgid "CQue::notify(win32)"
+#: cygnal/libnet/network.cpp:1630
+#, c-format
+msgid "Using default Root Path to PEM files: \"%s\""
+msgstr "æ£å¨ä½¿ç¨PEMæä»¶ç缺çè·¯å¾ï¼\"%s\""
+
+#: cygnal/libnet/network.cpp:1635
+msgid "Connected to SSL server"
+msgstr "è¿æ¥å°SSLæå¡å¨"
+
+#: cygnal/libnet/network.cpp:1637
+msgid "Couldn't connect to SSL server"
+msgstr "æ æ³è¿æ¥SSLæå¡å¨"
+
+#: cygnal/libnet/network.cpp:1670
+#, c-format
+msgid "#%d bytes waiting in kernel network buffer."
+msgstr "å
æ ¸ç½ç»ç¼å²åº#%d åèå¨çå¾
ã"
+
+#: cygnal/libnet/network.cpp:1692
+msgid "no IP address in addrinfo!"
msgstr ""
+#: cygnal/libnet/network.cpp:1704
+#, c-format
+msgid "Got an %d interrupt while blocked on pselect()"
+msgstr "éå°ä¸ä¸ª %d 䏿忶é»å¡ pselect() "
+
+#: cygnal/libnet/sslclient.cpp:137 cygnal/libnet/sslclient.cpp:161
+#: cygnal/libnet/sslclient.cpp:212 cygnal/libnet/sslclient.cpp:236
+#: cygnal/libnet/sslclient.cpp:314 cygnal/libnet/sslserver.cpp:169
+#, c-format
+msgid "Error was: \"%s\"!"
+msgstr "é误æ¯: \"%s\"!"
+
#: cygnal/libnet/sslclient.cpp:211
#, c-format
msgid "Can't read CA list from \"%s\"!"
-msgstr ""
+msgstr "æ æ³ä» \"%s\" 读å CA å表!"
#: cygnal/libnet/sslclient.cpp:216
#, c-format
msgid "Read CA list from \"%s\""
-msgstr ""
+msgstr "ä» \"%s\" 读å CA å表 "
#: cygnal/libnet/sslclient.cpp:222
#, c-format
msgid "Can't read certificate file \"%s\"!"
-msgstr ""
+msgstr "æ æ³è¯»åè¯ä¹¦æä»¶ \"%s\"!"
#: cygnal/libnet/sslclient.cpp:225
#, c-format
msgid "Read certificate file \"%s\"."
-msgstr ""
+msgstr "读åè¯ä¹¦æä»¶ \"%s\"ã"
#: cygnal/libnet/sslclient.cpp:235
#, c-format
msgid "Can't read CERT file \"%s\"!"
-msgstr ""
+msgstr "æ æ³è¯»å CERT æä»¶ \"%s\"!"
#: cygnal/libnet/sslclient.cpp:240
#, c-format
msgid "Read key file \"%s\"."
-msgstr ""
+msgstr "读åç§é¥æä»¶ \"%s\"ã"
#: cygnal/libnet/sslclient.cpp:301
#, c-format
msgid "PORT is: %d"
-msgstr ""
+msgstr "ç«¯å£æ¯: %d"
#: cygnal/libnet/sslclient.cpp:304
#, c-format
msgid "Error connecting to remote machine: %s"
-msgstr ""
+msgstr "éè¯¯è¿æ¥å°è¿ç¨æºå¨: %s"
#: cygnal/libnet/sslclient.cpp:313
#, c-format
msgid "Can't connect to SSL server %s"
-msgstr ""
+msgstr "æ æ³è¿æ¥å° SSL æå¡å¨ %s"
#: cygnal/libnet/sslclient.cpp:318
#, c-format
msgid "Connected to SSL server %s"
-msgstr ""
+msgstr "å·²è¿æ¥å° SSL æå¡å¨ %s"
#: cygnal/libnet/sslclient.cpp:351
msgid "Certificate doesn't verify"
-msgstr ""
+msgstr "ä¸éªè¯è¯ä¹¦"
#: cygnal/libnet/sslclient.cpp:354
msgid "Certificate verified."
-msgstr ""
+msgstr "è¯ä¹¦å·²éªè¯"
#: cygnal/libnet/sslclient.cpp:363
msgid "Couldn't get Peer certificate!"
-msgstr ""
+msgstr "æ æ³å¾å°ç«¯è¯ä¹¦!"
#: cygnal/libnet/sslclient.cpp:366
msgid "Got Peer certificate."
-msgstr ""
+msgstr "å¾å°ç«¯è¯ä¹¦ã"
#: cygnal/libnet/sslclient.cpp:374
msgid "Common name doesn't match host name"
-msgstr ""
+msgstr "éç¨åç§°å主æºåä¸å¹é
"
+
+#: cygnal/libnet/sslclient.cpp:386 cygnal/libnet/sslserver.cpp:182
+msgid "==== The SSL header breaks down as follows: ===="
+msgstr "==== 该 SSL 头é¨åè§£å¦ä¸ï¼===="
#: cygnal/libnet/sslclient.cpp:409
#, c-format
msgid "Callback executed to set the SSL password, size is: %d"
-msgstr ""
+msgstr "设置SSLå¯ç éè¦åè°è¿è¡ï¼å¤§å°ä¸ºï¼%d"
#: cygnal/libnet/sslclient.cpp:413
#, c-format
msgid "The buffer for the password needs to be %d bytes larger"
-msgstr ""
+msgstr "å¯ç ç¼å²åºéè¦ %d åèæè¾å¤§"
#: cygnal/libnet/sslclient.cpp:439
#, c-format
msgid "-Error with certificate at depth: %i\n"
-msgstr ""
+msgstr "è¯ä¹¦é误ä½äºæ·±åº¦: %i\n"
#: cygnal/libnet/sslclient.cpp:441
#, c-format
msgid " issuer = %s\n"
-msgstr ""
+msgstr "åè¡äºº = %s\n"
#: cygnal/libnet/sslclient.cpp:443
#, c-format
msgid " subject = %s\n"
-msgstr ""
+msgstr "ä¸»é¢ = %s\n"
#: cygnal/libnet/sslclient.cpp:444
#, c-format
msgid "err %i:%s\n"
-msgstr ""
-
-#: cygnal/libnet/http.cpp:176
-#, c-format
-msgid "Setting Content Length to %d"
-msgstr ""
-
-#: cygnal/libnet/http.cpp:189
-#, c-format
-msgid "Setting Content Type to %d"
-msgstr ""
-
-#: cygnal/libnet/http.cpp:199
-#, c-format
-msgid "Got a request, parsing \"%s\""
-msgstr ""
-
-#: cygnal/libnet/http.cpp:216 cygnal/libnet/http.cpp:1295
-#, c-format
-msgid "Parameters for file: \"%s\""
-msgstr ""
-
-#: cygnal/libnet/http.cpp:220
-#, c-format
-msgid "Requesting file: \"%s\""
-msgstr ""
-
-#: cygnal/libnet/http.cpp:225
-msgid "Enabling Keep Alive by default for HTTP > 1.0"
-msgstr ""
-
-#: cygnal/libnet/http.cpp:422 cygnal/libnet/http.cpp:521
-#, c-format
-msgid "Que empty, net connection dropped for fd #%d"
-msgstr ""
-
-#: cygnal/libnet/http.cpp:433
-msgid "FIXME: found file in cache!"
-msgstr ""
-
-#: cygnal/libnet/http.cpp:499
-#, c-format
-msgid "http_handler all done transferring requested file \"%s\"."
-msgstr ""
-
-#: cygnal/libnet/http.cpp:542
-msgid "Got file data in POST"
-msgstr ""
-
-#: cygnal/libnet/http.cpp:549
-msgid "Got AMF data in POST"
-msgstr ""
-
-#: cygnal/libnet/http.cpp:564
-msgid "Got CGI echo request in POST"
-msgstr ""
-
-#: cygnal/libnet/http.cpp:1385
-#, c-format
-msgid "%s: Total size for first chunk is: %d, data size %d (%d)"
-msgstr ""
-
-#: cygnal/libnet/http.cpp:1419 cygnal/libnet/http.cpp:1512
-#, c-format
-msgid "no data yet for fd #%d, continuing..."
-msgstr ""
-
-#: cygnal/libnet/http.cpp:1436
-#, c-format
-msgid "%s: end of chunks!"
-msgstr ""
-
-#: cygnal/libnet/http.cpp:1502
-#, c-format
-msgid "Starting to wait for data in net for fd #%d"
-msgstr ""
-
-#: cygnal/libnet/http.cpp:1538
-#, c-format
-msgid "no more data for fd #%d, exiting..."
-msgstr ""
-
-#: cygnal/libnet/http.cpp:1542
-#, c-format
-msgid "Handler done for fd #%d, can't read any data..."
-msgstr ""
-
-#: cygnal/libnet/http.cpp:1548
-#, c-format
-msgid "Done receiving data for fd #%d..."
-msgstr ""
-
-#: cygnal/libnet/http.cpp:1560
-msgid "==== The HTTP header breaks down as follows: ===="
-msgstr ""
-
-#: cygnal/libnet/http.cpp:1561
-#, c-format
-msgid "Filespec: %s"
-msgstr ""
-
-#: cygnal/libnet/http.cpp:1562
-#, c-format
-msgid "Version: %d.%d"
-msgstr ""
-
-#: cygnal/libnet/http.cpp:1566
-#, c-format
-msgid "Field: \"%s\" = \"%s\""
-msgstr ""
-
-#: cygnal/libnet/http.cpp:1570
-msgid "RTMPT optional index is: "
-msgstr ""
-
-#: cygnal/libnet/http.cpp:1571
-msgid "RTMPT optional client ID is: "
-msgstr ""
-
-#: cygnal/libnet/http.cpp:1572
-msgid "==== ==== ===="
-msgstr ""
+msgstr "é误 %i:%s\n"
#: cygnal/libnet/diskstream.cpp:307
#, c-format
msgid "Deleting %s on fd #%d"
-msgstr ""
+msgstr "æ£å¨å é¤ %s 卿件æè¿°ç¬¦ #%d"
#: cygnal/libnet/diskstream.cpp:351
#, c-format
msgid "Closing %s on fd #%d"
-msgstr ""
+msgstr "æ£å¨å
³é %s 卿件æè¿°ç¬¦ #%d"
#: cygnal/libnet/diskstream.cpp:405
#, c-format
msgid "%s: offset is: %d"
-msgstr ""
+msgstr "%s: åç§»æ¯: %d"
#: cygnal/libnet/diskstream.cpp:419
#, c-format
msgid "Adjusting offset from %d to %d so it's page aligned."
-msgstr ""
+msgstr "è°æ´åç§»ä» %d å° %d æ¥å¯¹é½é¡µé¢ã"
#: cygnal/libnet/diskstream.cpp:422
msgid "Offset is page aligned already"
-msgstr ""
+msgstr "åç§»æ¯é¡µé¢å·²å¯¹é½"
#: cygnal/libnet/diskstream.cpp:429
#, c-format
msgid "Loading entire file of %d bytes into memory segment"
-msgstr ""
+msgstr "æ£å¨å è½½ %d åèçæ´ä¸ªæä»¶å°å
åæ®µ"
#: cygnal/libnet/diskstream.cpp:433
#, c-format
msgid "Loading partial file of %d bytes into memory segment"
-msgstr ""
+msgstr "æ£å¨å è½½ %d åèçé¨åæä»¶å°å
åæ®µ"
#: cygnal/libnet/diskstream.cpp:442
msgid "Using existing Buffer for file"
-msgstr ""
+msgstr "æ£å¨ä½¿ç¨æä»¶å·²æçç¼å²åº"
#: cygnal/libnet/diskstream.cpp:493
#, c-format
msgid "Couldn't load file %s"
-msgstr ""
+msgstr "æ æ³å è½½æä»¶ %s"
#: cygnal/libnet/diskstream.cpp:498
#, c-format
msgid "Couldn't map file %s into memory: %s"
-msgstr ""
+msgstr "æ æ³æ å°æä»¶ %s å°å
å: %s"
#: cygnal/libnet/diskstream.cpp:502
#, c-format
msgid "File %s a offset %d mapped to: %p"
-msgstr ""
+msgstr "æä»¶ %s åç§» %d æ å°å°: %p"
#: cygnal/libnet/diskstream.cpp:586
#, c-format
msgid "Writing data (%d bytes) to disk: \"%s\""
-msgstr ""
+msgstr "æ£å¨åå
¥æ°æ® (%d åè) å°ç£ç: \"%s\""
-#: cygnal/libnet/diskstream.cpp:660
+#: cygnal/libnet/diskstream.cpp:662
#, c-format
msgid "Trying to open %s"
-msgstr ""
+msgstr "è¯å¾æå¼æä»¶ %s"
-#: cygnal/libnet/diskstream.cpp:665
+#: cygnal/libnet/diskstream.cpp:667
#, c-format
msgid "Opening file %s (fd #%d), %lld bytes in size."
-msgstr ""
+msgstr "æ£å¨æå¼æä»¶ %s (æä»¶æè¿°ç¬¦ #%d), %lld åè大å°ã"
-#: cygnal/libnet/diskstream.cpp:672
+#: cygnal/libnet/diskstream.cpp:674
#, c-format
msgid "File %s doesn't exist"
-msgstr ""
+msgstr "æä»¶ %s ä¸åå¨"
-#: cygnal/libnet/diskstream.cpp:727
+#: cygnal/libnet/diskstream.cpp:729
#, c-format
msgid "No Diskstream open %s for net fd #%d"
-msgstr ""
+msgstr "æå¼ %sï¼ç½ç»æè¿°ç¬¦ #%d æ¶æ²¡æç£çæµ"
-#: cygnal/libnet/diskstream.cpp:733
+#: cygnal/libnet/diskstream.cpp:735
#, c-format
msgid "Diskstream %s is closed on net fd #%d."
-msgstr ""
+msgstr "å·²å
³éç£çæµ %sï¼ç½ç»æè¿°ç¬¦ #%dã"
-#: cygnal/libnet/diskstream.cpp:753
+#: cygnal/libnet/diskstream.cpp:755
#, c-format
msgid "In %s(%d): couldn't write %d bytes to net fd #%d! %s"
-msgstr ""
+msgstr "å¨ %s(%d) ä¸: æ æ³åå
¥ %d åèå°ç½ç»æè¿°ç¬¦ #%d! %s"
-#: cygnal/libnet/diskstream.cpp:758
+#: cygnal/libnet/diskstream.cpp:760
#, c-format
msgid "Done playing file %s, size was: %d"
-msgstr ""
+msgstr "å®æææ¾æä»¶ %s, 大尿¯: %d"
-#: cygnal/libnet/diskstream.cpp:771
+#: cygnal/libnet/diskstream.cpp:773
#, c-format
msgid "In %s(%d): couldn't write %d of bytes of data to net fd #%d! Got %d, %s"
-msgstr ""
+msgstr "å¨ %s(%d) ä¸: æ æ³åå
¥ %d åèæ°æ®å°ç½ç»æè¿°ç¬¦ #%d! å¾å° %d, %s"
-#: cygnal/libnet/diskstream.cpp:803
+#: cygnal/libnet/diskstream.cpp:805
msgid "Restarting Disk Stream from the beginning"
-msgstr ""
+msgstr "éæ°å¯å¨ä»å¼å§çç£çæµ"
-#: cygnal/libnet/diskstream.cpp:956
+#: cygnal/libnet/diskstream.cpp:958
#, c-format
msgid "%s is a directory, appending index.html"
-msgstr ""
+msgstr "%s æ¯ä¸ä¸ªç®å½, æ·»å index.html"
#: cygnal/libnet/sshclient.cpp:120
#, c-format
msgid "SSH read error was: \"%s\"!"
-msgstr ""
+msgstr "SSH 读åé误æ¯: \"%s\"!"
#: cygnal/libnet/sshclient.cpp:142
#, c-format
msgid "SSH write error was: \"%s\"!"
-msgstr ""
+msgstr "SSH åå
¥é误æ¯: \"%s\"!"
#: cygnal/libnet/sshclient.cpp:180
msgid "Couldn't set hostname option"
-msgstr ""
+msgstr "æ æ³è®¾ç½®ä¸»æºåé项"
#: cygnal/libnet/sshclient.cpp:187
msgid "Couldn't set user name option"
-msgstr ""
+msgstr "æ æ³è®¾ç½®ç¨æ·åé项"
#: cygnal/libnet/sshclient.cpp:195
#, c-format
msgid "Connection failed : %s\n"
-msgstr ""
+msgstr "è¿æ¥å¤±è´¥ : %s\n"
#: cygnal/libnet/sshclient.cpp:210
#, c-format
msgid "SSH Server is currently known: %d"
-msgstr ""
+msgstr "å·²ç¥å½å SSH æå¡å¨: %d"
#: cygnal/libnet/sshclient.cpp:213
msgid "Host key for server changed : server's one is now: "
-msgstr ""
+msgstr "æå¡å¨ä¸»ç§é¥å·²æ¹åï¼ç°å¨æå¡å¨ä¹ä¸æ¯ï¼"
#: cygnal/libnet/sshclient.cpp:214
msgid "Public key hash"
-msgstr ""
+msgstr "å
Œ
±å¯é¥æ£å"
#: cygnal/libnet/sshclient.cpp:216
msgid "For security reason, connection will be stopped"
-msgstr ""
+msgstr "åºäºå®å
¨åå ï¼è¢«åæ¢è¿æ¥"
#: cygnal/libnet/sshclient.cpp:220
msgid ""
"The host key for this server was not found but an other type of key exists."
-msgstr ""
+msgstr "æªåç°è¯¥æå¡å¨ç主ç§é¥ï¼ä½åå¨å
¶ä»ç±»åç§é¥ã"
#: cygnal/libnet/sshclient.cpp:221
+#, fuzzy
msgid ""
"An attacker might change the default server key to confuse your client into "
"thinking the key does not existWe advise you to rerun the client with -d or -"
"r for more safety."
msgstr ""
+"ä¸ä¸ªæ»å»è
ä¹è®¸ä¼æ¹å缺çæå¡å¨ç§é¥ï¼ä»èè®©ä½ ç客æ·ç«¯è®¤ä¸ºç§é¥ä¸åå¨\n"
+"为äºå®å
¨ï¼æä»¬å»ºè®®ä½ éæ°è¿è¡å®¢æ·ç«¯ã"
#: cygnal/libnet/sshclient.cpp:232
msgid "The server is unknown. Do you trust the host key ? (yes,no)"
-msgstr ""
+msgstr "该æå¡å¨æªç¥ãä½ ä¿¡ä»»è¯¥æå¡å¨ç§é¥åï¼ï¼æ¯ï¼å¦ï¼"
#: cygnal/libnet/sshclient.cpp:233
#, c-format
msgid "Public key hash: %s"
-msgstr ""
+msgstr "å
Œ
±ç§é¥æ£å: %s"
#: cygnal/libnet/sshclient.cpp:240
msgid ""
"This new key will be written on disk for further usage. do you agree? (yes,"
"no) "
-msgstr ""
+msgstr "æ°çç§é¥ä¼è¢«åå
¥å°ç£çï¼ä¾¿äºå°æ¥ä½¿ç¨ãä½ åæåï¼ï¼æ¯ï¼å¦ï¼"
#: cygnal/libnet/sshclient.cpp:266
msgid "supported auth methods: "
-msgstr ""
+msgstr "å·²æ¯æçè®¤è¯æ¹æ³ï¼"
#: cygnal/libnet/sshclient.cpp:268
msgid "\tpublickey"
-msgstr ""
+msgstr "\tå
Œ
±ç§é¥"
#: cygnal/libnet/sshclient.cpp:271
msgid "\tkeyboard-interactive"
-msgstr ""
+msgstr "\té®ç交äº"
#: cygnal/libnet/sshclient.cpp:277
#, c-format
msgid "Authenticating with pubkey: %s"
-msgstr ""
+msgstr "éªè¯ä½¿ç¨å
Œ
±ç§é¥: %s"
#: cygnal/libnet/sshclient.cpp:289
#, c-format
msgid "authenticating with keyb-interactive: %s"
-msgstr ""
+msgstr "éªè¯ä½¿ç¨é®ç交äº: %s"
#: cygnal/libnet/sshclient.cpp:298
#, c-format
msgid "Authentication failed: %s"
-msgstr ""
+msgstr "éªè¯å¤±è´¥: %s"
#: cygnal/libnet/sshclient.cpp:393
msgid "Can't open the SSH channel!"
-msgstr ""
+msgstr "æ æ³æå¼SSHéé"
#: cygnal/libnet/sshclient.cpp:396
msgid "Can't allocate memory for new SSH channel!"
-msgstr ""
+msgstr "æ æ³ä¸ºæ°çSSHééåé
å
åï¼"
#: cygnal/libnet/sshclient.cpp:412
+#, fuzzy
msgid "Can't read from a non-existent channel!"
-msgstr ""
+msgstr "æ æ³è¯»åä¸ä¸ªä¸åå¨çééï¼"
#: cygnal/libnet/sshclient.cpp:427
+#, fuzzy
msgid "Can't write to a non-existent channel!"
-msgstr ""
+msgstr "æ æ³åå
¥ä¸ä¸ªä¸åå¨çééï¼"
-#: cygnal/crc.cpp:145
-#, c-format
-msgid "Couldn't open file: %s"
-msgstr ""
+#: cygnal/libnet/sshclient.cpp:459 cygnal/libnet/sshserver.cpp:200
+msgid "==== The SSH header breaks down as follows: ===="
+msgstr "==== 该 SSH 头é¨åè§£å¦ä¸ï¼===="
-#: cygnal/cygnal.cpp:190
-msgid "cygnal -- a streaming media server."
+#: cygnal/libnet/sslserver.cpp:136
+msgid "SSL!!"
msgstr ""
-#: cygnal/cygnal.cpp:192
-msgid "Usage: cygnal [options...]"
-msgstr ""
+#: cygnal/libnet/sslserver.cpp:159
+msgid "Got an incoming SSL connection request"
+msgstr "æä¸ä¸ªä¼ å
¥çSSLè¿æ¥è¯·æ±"
-#: cygnal/cygnal.cpp:193 cygnal/cgi-bin/echo/echo.cpp:316
-#: cygnal/cgi-bin/echo/gateway.cpp:406
-#: cygnal/cgi-bin/fitcDemo/fitcDemo.cpp:321
-#: cygnal/cgi-bin/oflaDemo/oflaDemo.cpp:596
-#: cygnal/testsuite/libnet.all/test_handler.cpp:281
-#: cygnal/testsuite/libnet.all/generate_amfbins.cpp:300
-#: cygnal/testsuite/libnet.all/test_diskstream.cpp:269
-#: cygnal/testsuite/libnet.all/test_cache.cpp:391
-#: cygnal/testsuite/libamf.all/test_amfmsg.cpp:247
-#: cygnal/testsuite/libamf.all/test_flv.cpp:282
-#: cygnal/testsuite/libamf.all/test_el.cpp:491
-#: cygnal/testsuite/libamf.all/test_buffer.cpp:721
-#: cygnal/testsuite/libamf.all/test_amf.cpp:422
-msgid " -h, --help Print this help and exit"
-msgstr ""
+#: cygnal/libnet/cache.cpp:62
+msgid "using this constructor is only allowed for testing purposes."
+msgstr "ç¨äºæµè¯ç®çåªå
è®¸ä½¿ç¨æ¤æé 彿°ã"
-#: cygnal/cygnal.cpp:194
-msgid " -V, --version Print version information and exit"
-msgstr ""
+#: cygnal/libnet/cache.cpp:105
+#, c-format
+msgid "Adding file %s to cache."
+msgstr "æ·»å æä»¶ %s å°ç¼åã"
-#: cygnal/cygnal.cpp:195 cygnal/cgi-bin/echo/echo.cpp:317
-#: cygnal/cgi-bin/echo/gateway.cpp:407
-#: cygnal/cgi-bin/fitcDemo/fitcDemo.cpp:322
-#: cygnal/cgi-bin/oflaDemo/oflaDemo.cpp:597
-#: cygnal/testsuite/libnet.all/test_handler.cpp:282
-#: cygnal/testsuite/libnet.all/generate_amfbins.cpp:301
-#: cygnal/testsuite/libnet.all/test_diskstream.cpp:270
-#: cygnal/testsuite/libnet.all/test_cache.cpp:392
-#: cygnal/testsuite/libamf.all/test_amfmsg.cpp:248
-#: cygnal/testsuite/libamf.all/test_flv.cpp:283
-#: cygnal/testsuite/libamf.all/test_el.cpp:492
-#: cygnal/testsuite/libamf.all/test_buffer.cpp:722
-#: cygnal/testsuite/libamf.all/test_amf.cpp:423
-msgid " -v, --verbose Output verbose debug info"
-msgstr ""
+#: cygnal/libnet/cache.cpp:148
+#, c-format
+msgid "Trying to find %s in the cache."
+msgstr "è¯å¾å¨ç¼å²ä¸æ¾å° %s "
-#: cygnal/cygnal.cpp:196
-msgid " -s, --singlethread Disable Multi Threading"
-msgstr ""
+#: cygnal/libnet/sshserver.cpp:145
+#, c-format
+msgid "User %s wants to auth with pass %s\n"
+msgstr "ç¨æ· %s å¸æä½¿ç¨å¯ç %s è¿è¡è®¤è¯\n"
-#: cygnal/cygnal.cpp:197 cygnal/cgi-bin/echo/echo.cpp:318
-#: cygnal/cgi-bin/echo/gateway.cpp:408
-#: cygnal/cgi-bin/fitcDemo/fitcDemo.cpp:323
-#: cygnal/cgi-bin/oflaDemo/oflaDemo.cpp:598
-msgid " -n, --netdebug Turn on net debugging messages"
-msgstr ""
+#: cygnal/testsuite/libnet.all/test_rtmp.cpp:113
+#: cygnal/testsuite/libnet.all/generate_amfbins.cpp:99
+#: cygnal/testsuite/libamf.all/test_el.cpp:95
+#: cygnal/testsuite/libamf.all/test_buffer.cpp:111
+#: cygnal/testsuite/libamf.all/test_amfmsg.cpp:107
+#: cygnal/testsuite/libamf.all/test_sol.cpp:106
+#: cygnal/testsuite/libamf.all/test_amf.cpp:113
+msgid "Enabling memory statistics"
+msgstr "å¯ç¨å
åç»è®¡"
-#: cygnal/cygnal.cpp:198
-msgid " -o --only-port Only use port for debugging"
-msgstr ""
+#: cygnal/testsuite/libnet.all/test_rtmp.cpp:121
+#: cygnal/testsuite/libnet.all/test_diskstream.cpp:101
+#: cygnal/testsuite/libnet.all/test_handler.cpp:113
+#: cygnal/testsuite/libnet.all/generate_amfbins.cpp:112
+#: cygnal/testsuite/libnet.all/test_cache.cpp:104
+#: cygnal/testsuite/libamf.all/test_el.cpp:108
+#: cygnal/testsuite/libamf.all/test_buffer.cpp:124
+#: cygnal/testsuite/libamf.all/test_flv.cpp:104
+#: cygnal/testsuite/libamf.all/test_amfmsg.cpp:120
+#: cygnal/testsuite/libamf.all/test_sol.cpp:114
+#: cygnal/testsuite/libamf.all/test_amf.cpp:126
+msgid "This is a Gnash bug."
+msgstr "è¿æ¯ä¸ä¸ª Gnash é误ã"
-#: cygnal/cygnal.cpp:199
-msgid " -p --port-offset Port offset for debugging"
-msgstr ""
+#: cygnal/testsuite/libnet.all/test_diskstream.cpp:268
+#: cygnal/testsuite/libnet.all/test_handler.cpp:280
+#: cygnal/testsuite/libnet.all/test_cache.cpp:390
+msgid "Usage: test_diskstream [options...]"
+msgstr "ç¨æ³: test_diskstream [options...]"
-#: cygnal/cygnal.cpp:200
-msgid " -t, --testing Turn on special Gnash testing support"
-msgstr ""
+#: cygnal/testsuite/libnet.all/test_diskstream.cpp:271
+#: cygnal/testsuite/libnet.all/test_handler.cpp:283
+#: cygnal/testsuite/libnet.all/test_cache.cpp:393
+msgid " -d, --dump Dump data structures"
+msgstr "-d, --dump è½¬å¨æ°æ®ç»æ"
-#: cygnal/cygnal.cpp:201
-msgid " -a, --admin Enable the administration thread"
-msgstr ""
+#: cygnal/testsuite/libnet.all/generate_amfbins.cpp:104
+#: cygnal/testsuite/libamf.all/test_el.cpp:100
+#: cygnal/testsuite/libamf.all/test_buffer.cpp:116
+#: cygnal/testsuite/libamf.all/test_flv.cpp:96
+#: cygnal/testsuite/libamf.all/test_amfmsg.cpp:112
+#: cygnal/testsuite/libamf.all/test_amf.cpp:118
+msgid "Logging to disk enabled"
+msgstr "å·²å¯ç¨è®°å½æ¥å¿å°ç£ç"
-#: cygnal/cygnal.cpp:202
-msgid " -r, --root Document root for all files"
-msgstr ""
+#: cygnal/testsuite/libnet.all/generate_amfbins.cpp:299
+#: cygnal/testsuite/libamf.all/test_el.cpp:490
+msgid "Usage: test_el [options...]"
+msgstr "ç¨æ³: test_el [options...]"
-#: cygnal/cygnal.cpp:265
-msgid ": couldn't open file: "
-msgstr ""
+#: cygnal/testsuite/libnet.all/generate_amfbins.cpp:302
+#: cygnal/testsuite/libamf.all/test_el.cpp:493
+#: cygnal/testsuite/libamf.all/test_buffer.cpp:723
+#: cygnal/testsuite/libamf.all/test_amfmsg.cpp:249
+#: cygnal/testsuite/libamf.all/test_amf.cpp:424
+msgid " -m, --memdebug Output memory statistics"
+msgstr "-m, --memdebug è¾åºå
åç»è®¡"
-#: cygnal/cygnal.cpp:342
-#, c-format
-msgid "Couldn't connect to %s"
-msgstr ""
+#: cygnal/testsuite/libamf.all/test_buffer.cpp:718
+msgid "test_buffer - test Buffer class"
+msgstr "test_buffer - æµè¯ç¼å²åºç±»"
-#: cygnal/cygnal.cpp:362
-#, c-format
-msgid "%s is active on fd #%d."
-msgstr ""
+#: cygnal/testsuite/libamf.all/test_buffer.cpp:720
+msgid "Usage: test_buffer [options...]"
+msgstr "ç¨æ³: test_buffer [options...]"
-#: cygnal/cygnal.cpp:500
-#, c-format
-msgid "Extraneous argument: %s"
-msgstr ""
+#: cygnal/libamf/amf_msg.cpp:178
+msgid "AMF Message 'target' field missing!"
+msgstr "AMF æ¶æ¯ 'target' åæ®µç¼ºå¤±ï¼"
-#: cygnal/cygnal.cpp:504 cygnal/cgi-bin/oflaDemo/oflaDemo.cpp:441
-#, c-format
-msgid "Document Root for media files is: %s"
-msgstr ""
+#: cygnal/libamf/amf_msg.cpp:181
+msgid "AMF Message 'reply' field missing!"
+msgstr "AMF æ¶æ¯ 'reply' åæ®µç¼ºå¤±ï¼"
-#: cygnal/cygnal.cpp:586
-msgid "Cygnal done..."
-msgstr ""
+#: cygnal/libamf/amf_msg.cpp:184
+msgid "AMF Message 'size' field missing!"
+msgstr "AMF æ¶æ¯ 'size' åæ®µç¼ºå¤±ï¼"
-#: cygnal/cygnal.cpp:599
+#: cygnal/libamf/amf_msg.cpp:231
#, c-format
-msgid "Got a %d interrupt"
+msgid ""
+"Error parsing the AMF packet: \n"
+"\t%s"
msgstr ""
+"è§£æè¯¥ AMF å
é误: \n"
+"\t%s"
-#: cygnal/cygnal.cpp:619
-#, fuzzy
+#: cygnal/libamf/sol.cpp:212
+#, c-format
msgid ""
-"Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.\n"
-"Cygnal comes with NO WARRANTY, to the extent permitted by law.\n"
-"You may redistribute copies of Cygnal under the terms of the GNU General\n"
-"Public License V3. For more information, see the file named COPYING.\n"
+"%s: SOL file header is: \n"
+"%s"
msgstr ""
-"çæææ (C) 2007, 2008, 2009, 2010 èªç±è½¯ä»¶åºéä¼, Inc.\n"
-"Cygnal 卿³å¾å
许çé度å
ä¸ä½ä»»ä½æ
ä¿ã\n"
-"æ¨å¯ä»¥å¨éµå® GNU éç¨å
Œ
±è®¸å¯è¯æ¡æ¬¾çåæä¸åå Cygnal ç坿¬ãæ´å¤ä¿¡æ¯è¯·åè§"
-"å为 COPYING çæä»¶ã\n"
+"%s: SOL æä»¶å¤´é¨æ¯: \n"
+"%s"
-#: cygnal/cygnal.cpp:641
+#: cygnal/libamf/sol.cpp:232
#, c-format
-msgid "Starting Admin Handler for port %d"
-msgstr ""
+msgid "Failed opening file '%s' in binary mode"
+msgstr "æ æ³ç¨äºè¿å¶æ¨¡å¼æå¼æä»¶ '%s'"
-#: cygnal/cygnal.cpp:643
-msgid "Got an incoming Admin request"
-msgstr ""
+#: cygnal/libamf/sol.cpp:319
+#, c-format
+msgid "Error writing %d bytes of header to output file %s"
+msgstr "åå
¥å¤´é¨ç %d åèå°è¾åºæä»¶ %s åºé"
-#: cygnal/cygnal.cpp:651
-msgid "no more admin data, exiting...\n"
-msgstr ""
+#: cygnal/libamf/sol.cpp:326
+#, c-format
+msgid "Error writing %d bytes of body to output file %s"
+msgstr "åå
¥ä¸»ä½ç %d åèå°è¾åºæä»¶ %s åºé"
-#: cygnal/cygnal.cpp:736
-msgid "admin_handler: Done...!\n"
-msgstr ""
+#: cygnal/libamf/sol.cpp:386
+#, c-format
+msgid "%s is an SOL file"
+msgstr "%s æ¯ä¸ä¸ª SOL æä»¶"
-#: cygnal/cygnal.cpp:765
+#: cygnal/libamf/sol.cpp:389
#, c-format
-msgid "Can't start %s Connection Handler for fd #%d, port %hd"
-msgstr ""
+msgid ""
+"%s looks like an SOL file, but the length is wrong. Should be %d, got %d"
+msgstr "%s çä¸å»æ¯ä¸ä¸ª SOL æä»¶ï¼ä½æä»¶é¿åº¦é误ãåºè¯¥æ¯ %dï¼ä½å¾å° %d"
-#: cygnal/cygnal.cpp:769
+#: cygnal/libamf/sol.cpp:395
#, c-format
-msgid "Starting %s Connection Handler for fd #%d, port %hd"
-msgstr ""
+msgid "%s isn't an SOL file"
+msgstr "%s 䏿¯ä¸ä¸ª SOL æä»¶"
-#: cygnal/cygnal.cpp:780
+#: cygnal/libamf/sol.cpp:437
#, c-format
-msgid "This system has %d cpus."
-msgstr ""
+msgid "Reading SharedObject %s: %s"
+msgstr "读å SharedObject %s: %s"
-#: cygnal/cygnal.cpp:817
+#: cygnal/libamf/flv.cpp:94
+msgid "Bad magic number for FLV file!"
+msgstr " FLV æä»¶ä¸é误çéæ³æ°å!"
+
+#: cygnal/libamf/flv.cpp:101
#, c-format
-msgid "No new %s network connections"
-msgstr ""
+msgid "Bad version in FLV header! %d"
+msgstr "FLV 头é¨ä¸éè¯¯çæ¬å·ï¼%d"
-#: cygnal/cygnal.cpp:821
+#: cygnal/libamf/flv.cpp:110
#, c-format
-msgid "*** New %s network connection for thread ID #%d, fd #%d ***"
-msgstr ""
+msgid "Bad FLV file Type: %d"
+msgstr "é误ç FLV æä»¶ç±»åï¼%d"
-#: cygnal/cygnal.cpp:867
+#: cygnal/libamf/flv.cpp:123
#, c-format
-msgid "Creating new %s Handler for %s using fd #%d"
-msgstr ""
+msgid "Bad header size in FLV header! %d"
+msgstr "FLV 头é¨ä¸é误ç头é¨å¤§å°ï¼%d"
-#: cygnal/cygnal.cpp:885
+#: cygnal/libamf/flv.cpp:156
#, c-format
-msgid "Reusing %s Handler for %s using fd #%d"
-msgstr ""
+msgid "%d bytes for a string is over the safe limit of %d"
+msgstr "ä¸ä¸ªå符串çåèæ° %d è¶
è¿äºå®å
¨éå¶ %d"
-#: cygnal/cygnal.cpp:911
+#: cygnal/libamf/flv.cpp:186
#, c-format
-msgid "Creating new %s Handler for: %s for fd %#d"
-msgstr ""
+msgid "Bad FLV Audio Sound Type: %x"
+msgstr "é误ç FLV é³é¢å£°é³ç±»åï¼%x"
-#: cygnal/cygnal.cpp:935
+#: cygnal/libamf/flv.cpp:195
#, c-format
-msgid "Cygnal Plugin paths are: %s"
-msgstr ""
+msgid "Bad FLV Audio Sound size: %d"
+msgstr "é误ç FLV é³é¢å£°é³å¤§å°ï¼%d"
-#: cygnal/cygnal.cpp:956
+#: cygnal/libamf/flv.cpp:209
#, c-format
-msgid "Couldn't load plugin for %s"
-msgstr ""
+msgid "Bad FLV Audio Sound Rate: %d"
+msgstr "é误ç FLV é³é¢å£°é³éçï¼%d"
-#: cygnal/cygnal.cpp:967
+#: cygnal/libamf/flv.cpp:226
#, c-format
-msgid "Number of active Threads is %d"
-msgstr ""
+msgid "Bad FLV Audio Sound format: %d"
+msgstr "é误ç FLV é³é¢å£°é³æ ¼å¼ï¼%d"
-#: cygnal/cygnal.cpp:970
+#: cygnal/libamf/flv.cpp:257
#, c-format
-msgid "Restarting loop for next connection for port %d..."
-msgstr ""
+msgid "Bad FLV Video Codec CodecID: 0x%x"
+msgstr "é误ç FLV è§é¢ç¼ç CodecID: 0x%x"
-#: cygnal/cygnal.cpp:1028
+#: cygnal/libamf/flv.cpp:267
#, c-format
-msgid "%d active disk streams"
-msgstr ""
+msgid "Bad FLV Video Frame CodecID: 0x%x"
+msgstr "é误ç FLV è§é¢å¸§ CodecID: 0x%x"
-#: cygnal/cygnal.cpp:1068
+#: cygnal/libamf/flv.cpp:340 cygnal/libamf/flv.cpp:342
+#: cygnal/libamf/flv.cpp:344
#, c-format
-msgid "Got a hit for fd #%d, protocol %s"
-msgstr ""
+msgid "FLV MetaData: %s: %s"
+msgstr "FLV MetaData: %s: %s"
-#: cygnal/cygnal.cpp:1072
-msgid "No protocol specified!"
-msgstr ""
+#: cygnal/libamf/element.cpp:175
+msgid "Can't create remote function calls yet"
+msgstr "å½åæ æ³å建è¿ç¨å½æ°è°ç¨"
-#: cygnal/cygnal.cpp:1080 cygnal/cygnal.cpp:1105 cygnal/cygnal.cpp:1116
+#: cygnal/libamf/element.cpp:479
#, c-format
-msgid "Done with HTTP connection for fd #%d, CGI %s"
-msgstr ""
+msgid "Size of Element \"%s\" is: %d"
+msgstr "å
ç´ \"%s\" 大å°ä¸º: %d"
-#: cygnal/cygnal.cpp:1085
-#, c-format
-msgid "Not Done with HTTP connection for fd #%d, it's a persistent connection."
-msgstr ""
+#: cygnal/libamf/element.cpp:1534
+msgid "FIXME: got AMF3 data!"
+msgstr "FIXME: å¾å° AMF3 æ°æ®!"
+
+#: cygnal/libamf/lcshm.cpp:372
+msgid "No data pointer to parse!"
+msgstr "没æè¦è§£æçæ°æ®æéï¼"
-#: cygnal/cygnal.cpp:1094
+#: cygnal/libamf/lcshm.cpp:391
+msgid "Didn't extract an element from the byte stream!"
+msgstr "没æä»åèæµä¸æåä¸ä¸ªå
ç´ ï¼"
+
+#: cygnal/libamf/lcshm.cpp:503
#, c-format
-msgid "Done with RTMP connection for fd #%d, CGI "
-msgstr ""
+msgid " The size of %s is %d "
+msgstr "%s ç大尿¯ %d"
-#: cygnal/cygnal.cpp:1128
+#: cygnal/libamf/lcshm.cpp:520
#, c-format
-msgid "Unsupported network protocol for fd #%d, %d"
-msgstr ""
+msgid "Failed to open shared memory segment: \"%s\""
+msgstr "æ æ³æå¼å
±äº«å
åæ®µï¼\"%s\""
-#: cygnal/cygnal.cpp:1148
+#: cygnal/libamf/lcshm.cpp:561
#, c-format
-msgid "Got no hits, %d retries"
-msgstr ""
+msgid "Failed to open shared memory segment: 0x%x"
+msgstr "æ æ³æå¼å
±äº«å
åæ®µï¼0x%x"
-#: cygnal/cgi-bin/echo/echo.cpp:161 cygnal/cgi-bin/echo/gateway.cpp:139
-#: cygnal/cgi-bin/fitcDemo/fitcDemo.cpp:166
-#: cygnal/cgi-bin/oflaDemo/oflaDemo.cpp:233
+#: cygnal/libamf/lcshm.cpp:660
#, c-format
-msgid "Error parsing command line options: %s"
-msgstr ""
+msgid " ***** The size of the data is %s *****"
+msgstr "***** è¯¥æ°æ®å¤§å°æ¯ %s *****"
-#: cygnal/cgi-bin/echo/echo.cpp:315 cygnal/cgi-bin/echo/gateway.cpp:405
-#: cygnal/cgi-bin/fitcDemo/fitcDemo.cpp:320
-#: cygnal/cgi-bin/oflaDemo/oflaDemo.cpp:595
-#: cygnal/testsuite/libamf.all/test_amfmsg.cpp:246
-#: cygnal/testsuite/libamf.all/test_flv.cpp:281
-#: cygnal/testsuite/libamf.all/test_amf.cpp:421
-msgid "Usage: test_amf [options...]"
-msgstr ""
+#: cygnal/libamf/buffer.cpp:179
+#, c-format
+msgid "Buffer %x (%d) stayed in queue for %f seconds"
+msgstr "ç¼å²åº %x (%d) å¨éåä¸ä¿ç %f ç§"
-#: cygnal/cgi-bin/echo/echo.cpp:319 cygnal/cgi-bin/fitcDemo/fitcDemo.cpp:324
-#: cygnal/cgi-bin/oflaDemo/oflaDemo.cpp:599
-msgid " -p, --netdebug port for network"
-msgstr ""
+#: cygnal/libamf/buffer.cpp:711
+#, c-format
+msgid "cygnal::Buffer::resize(%d): Truncating data (%d bytes) while resizing!"
+msgstr "cygnal::Buffer::resize(%d): è°æ´å¤§å°åæ¶æªææ°æ®ï¼%dåèï¼ï¼"
-#: cygnal/cgi-bin/oflaDemo/oflaDemo.cpp:309
+#: cygnal/libamf/buffer.cpp:766
#, c-format
-msgid "Scanning directory \"%s\" for %s files"
-msgstr ""
+msgid "Creating %d errors in the buffer"
+msgstr "å¨ç¼å²åºä¸ç©¿ä»¶ %d é误"
-#: cygnal/cgi-bin/oflaDemo/oflaDemo.cpp:340
+#: cygnal/libamf/amf.cpp:180
#, c-format
-msgid "Gnash media file name: %s"
-msgstr ""
+msgid "Encoded data size has %d properties"
+msgstr "ç¼ç åçæ°æ®å¤§å°æ %d 屿§"
-#: cygnal/rtmp_server.cpp:124
-msgid "Failed to read the handshake from the client."
-msgstr ""
+#: cygnal/libamf/amf.cpp:300
+msgid "XML AMF objects not supported yet"
+msgstr "XML AMF 对象è¿ä¸æ¯æ"
-#: cygnal/rtmp_server.cpp:139
-msgid "failed to read the handshake from the client."
-msgstr ""
+#: cygnal/libamf/amf.cpp:404
+msgid "Movie Clip AMF objects not supported yet"
+msgstr "å½±çåªè¾ AMF 对象è¿ä¸æ¯æ"
-#: cygnal/rtmp_server.cpp:149
-msgid "Didn't receive any data in handshake!"
-msgstr ""
+#: cygnal/libamf/amf.cpp:495
+msgid "Long String AMF objects not supported yet"
+msgstr "é¿å符串 AMF 对象è¿ä¸æ¯æ"
-#: cygnal/rtmp_server.cpp:160
-msgid "RTMP header had parsing error!"
-msgstr ""
+#: cygnal/libamf/amf.cpp:512
+msgid "Reecord Set AMF objects not supported yet"
+msgstr "è®°å½é AMF 对象è¿ä¸æ¯æ"
-#: cygnal/rtmp_server.cpp:168
-#, c-format
-msgid "NetConnection unusually large! %d"
-msgstr ""
+#: cygnal/libamf/amf.cpp:561
+msgid "Encoding a strict array as an ecma array"
+msgstr "ç¼ç ä¸ä¸ªéå¶æ°ç»ä¸º ecma æ°ç»"
-#: cygnal/rtmp_server.cpp:202
-msgid "failed to read the body of the handshake data from the client."
-msgstr ""
+#: cygnal/libamf/amf.cpp:784
+msgid "FIXME: got AMF3 data type"
+msgstr "FIXME: å¾å° AMF3 æ°æ®ç±»å"
-#: cygnal/rtmp_server.cpp:210
-msgid "Didn't receive NetConnection object in handshake!"
-msgstr ""
+#: cygnal/libamf/amf.cpp:913
+msgid "AMF body input data is NULL"
+msgstr "AMF 主ä½è¾å
¥æ°æ®ä¸º NULL"
-#: cygnal/rtmp_server.cpp:234
-msgid "Couldn't send onBWDone to client!"
-msgstr ""
+#: cygnal/libamf/amf.cpp:937
+msgid "AMF data too short to contain type field"
+msgstr "AMF æ°æ®å¤ªçèä¸è½å
å«ç±»ååæ®µ"
-#: cygnal/rtmp_server.cpp:261 cygnal/rtmp_server.cpp:1702
-msgid "Couldn't send Ping to client!"
-msgstr ""
+#: cygnal/libamf/amf.cpp:948
+msgid "Element has no type!"
+msgstr "å
ç´ æ²¡æç±»åï¼"
-#: cygnal/rtmp_server.cpp:275
-msgid "Couldn't send response to client!"
-msgstr ""
+#: cygnal/libamf/amf.cpp:958
+msgid "AMF data segment too short to containtype NUMBER"
+msgstr "AMF æ°æ®æ®µå¤ªçèä¸è½å
å« NUMBER ç±»å "
-#: cygnal/rtmp_server.cpp:338
+#: cygnal/libamf/amf.cpp:978
#, c-format
-msgid "Couldn't sent RTMP Handshake response at %d!"
-msgstr ""
+msgid "%d bytes for a string is over the safe limit of %d, line %d"
+msgstr "ä¸ä¸ª %d åèçå符串ï¼è¶
è¿äºå®å
¨éå¶ %dï¼%dè¡"
-#: cygnal/rtmp_server.cpp:355
-msgid "No data in original handshake buffer."
-msgstr ""
+#: cygnal/libamf/amf.cpp:1021
+msgid "AMF0 MovieClip frame"
+msgstr "AMF0 å½±ççæ®µå¸§"
-#: cygnal/rtmp_server.cpp:359
-msgid "No data in response handshake buffer."
-msgstr ""
+#: cygnal/libamf/amf.cpp:1151
+msgid "Found object terminator byte"
+msgstr "åç°å¯¹è±¡ç»æ¢åè"
-#: cygnal/rtmp_server.cpp:387
+#: cygnal/libamf/amf.cpp:1169
#, c-format
-msgid "Handshake Finish Data didn't match by %d bytes"
-msgstr ""
+msgid "%s: type %d"
+msgstr "%s: ç±»å %d"
-#: cygnal/rtmp_server.cpp:555
-msgid "Route"
-msgstr ""
+#: cygnal/libamf/amf.cpp:1262
+#, c-format
+msgid "No data associated with Property \"%s\""
+msgstr "没æå±æ§ \"%s\" ç¸å
³çæ°æ®"
-#: cygnal/rtmp_server.cpp:567
-msgid "AMF3 Notify"
-msgstr ""
+#: cygnal/http_server.cpp:154 cygnal/http_server.cpp:211
+#, c-format
+msgid "New filestream %s"
+msgstr "æ°å»ºæä»¶æµ %s"
-#: cygnal/rtmp_server.cpp:573
-msgid "AMF3 Invoke"
-msgstr ""
+#: cygnal/http_server.cpp:213
+#, c-format
+msgid "Reusing filestream %s"
+msgstr "éç¨æä»¶æµ %s"
-#: cygnal/rtmp_server.cpp:582
-msgid "FLV Dat"
-msgstr ""
+#: cygnal/http_server.cpp:308
+msgid "couldn't read data!"
+msgstr "æ æ³è¯»åæ°æ®ï¼"
-#: cygnal/rtmp_server.cpp:585
+#: cygnal/http_server.cpp:1015
#, c-format
-msgid "ERROR: Unidentified RTMP message content type 0x%x"
-msgstr ""
+msgid "Processing HTTP data for fd #%d"
+msgstr "æ£å¨ä¸ºæä»¶æè¿°ç¬¦ #%d å¤ç HTTP æ°æ®"
-#: cygnal/rtmp_server.cpp:1105
-msgid "Couldn't reliably extract the echo data!"
-msgstr ""
+#: cygnal/http_server.cpp:1024
+msgid "FIXME: Existing data in packet!"
+msgstr "FIXME: å¨å
ä¸å卿°æ®!"
-#: cygnal/rtmp_server.cpp:1400
+#: cygnal/http_server.cpp:1026
+msgid "FIXME: No existing data in packet!"
+msgstr "FIXME: å¨å
ä¸ä¸å卿°æ®!"
+
+#: cygnal/handler.cpp:128
#, c-format
-msgid "No stream for client %d"
-msgstr ""
+msgid "Protocol %d for Handler::AddClient()"
+msgstr "Handler::AddClient()çåè®® %d"
-#: cygnal/rtmp_server.cpp:1442
-msgid "Stream Start"
-msgstr ""
+#: cygnal/handler.cpp:171 cygnal/handler.cpp:196
+msgid "HTTP key couldn't be read!"
+msgstr "æ æ³è¯»å HTTP é®å¼!"
-#: cygnal/rtmp_server.cpp:1445
-msgid "Stream EOF"
-msgstr ""
+#: cygnal/handler.cpp:214 cygnal/handler.cpp:244
+#, c-format
+msgid "FD #%d has no protocol handler registered"
+msgstr "æä»¶æè¿°ç¬¦ #%d æ²¡ææ³¨ååè®®å¤çç¨åº"
-#: cygnal/rtmp_server.cpp:1448
-msgid "Stream No Data"
-msgstr ""
+#: cygnal/handler.cpp:319
+#, c-format
+msgid "No %s symbol in plugin"
+msgstr "æä»¶ä¸æ²¡æ %s 符å·"
-#: cygnal/rtmp_server.cpp:1451
+#: cygnal/handler.cpp:322
#, c-format
-msgid "Stream Set Buffer: %d"
-msgstr ""
+msgid "Initialized Plugin: \"%s\": %s"
+msgstr "å·²åå§åæä»¶ï¼\"%s\": %s"
-#: cygnal/rtmp_server.cpp:1465
-msgid "Stream Pong"
-msgstr ""
+#: cygnal/handler.cpp:335 cygnal/handler.cpp:350
+#, c-format
+msgid "Couldn't get %s symbol"
+msgstr "æ æ³å¾å° %s 符å·"
-#: cygnal/rtmp_server.cpp:1484
-msgid "Set Chunk Size"
-msgstr ""
+#: cygnal/proc.cpp:119
+#, c-format
+msgid "Invalid filespec for CGI: \"%s\""
+msgstr "CGIæä»¶è§èæ æ: \"%s\""
-#: cygnal/rtmp_server.cpp:1487
-msgid "Bytes Read"
-msgstr ""
+#: gui/gtk/gtk_glue_agg_vaapi.cpp:163
+msgid "WARNING: failed to create VA-API display."
+msgstr "è¦åï¼å建 VA-API æ¾ç¤ºå¤±è´¥ã"
-#: cygnal/rtmp_server.cpp:1495
-msgid "Set Window Size"
+#: gui/gtk/gtk_glue_agg_vaapi.cpp:204
+#, c-format
+msgid ""
+"GTK-AGG: Unknown RGB format %s reported by VA-API.Please report this to the "
+"gnash-dev mailing list."
msgstr ""
+"GTK-AGGï¼VA-API æ¥åäºæªç¥ç RGB æ ¼å¼ %sã请å gnash-dev é®ä»¶å表æ¥åè¿ä¸é®"
+"é¢ã"
-#: cygnal/rtmp_server.cpp:1498
-msgid "Set Bandwidth"
-msgstr ""
+#: gui/gtk/gtk_glue_agg_vaapi.cpp:231 gui/gtk/gtk_glue_agg_vaapi.cpp:289
+msgid "failed to map VA-API image."
+msgstr "æ å° VA-API å¾å失败ã"
-#: cygnal/rtmp_server.cpp:1509 cygnal/rtmp_server.cpp:1512
-#: cygnal/rtmp_server.cpp:1515 cygnal/rtmp_server.cpp:1518
-#: cygnal/rtmp_server.cpp:1665
-#, c-format
-msgid "RTMP type %d"
-msgstr ""
+#: gui/gtk/gtk_glue_agg_vaapi.cpp:237
+msgid "failed to associate VA-API subpicture."
+msgstr "å
³è VA-API åå¾(subpicture)失败ã"
-#: cygnal/rtmp_server.cpp:1524
+#: gui/gtk/gtk_glue_agg_vaapi.cpp:371
#, c-format
-msgid "Error INVOKING method \"%s\"!"
-msgstr ""
-
-#: cygnal/rtmp_server.cpp:1648
-msgid "Received an _error message from the client!"
-msgstr ""
+msgid "failed to setup video window for surface 0x%08x."
+msgstr "æ æ³ä¸ºè¡¨é¢ 0x%08x 设置è§é¢çªå£ã"
-#: cygnal/rtmp_server.cpp:1668
+#: gui/gtk/gtk_glue_agg_vaapi.cpp:378
#, c-format
-msgid "ERROR: Unidentified AMF header data type 0x%x"
-msgstr ""
+msgid "failed to associate subpicture to surface 0x%08x."
+msgstr "æ æ³å°åå¾(subpicture)å
³èå°è¡¨é¢ 0x%08xã"
-#: cygnal/testsuite/libnet.all/test_handler.cpp:113
-#: cygnal/testsuite/libnet.all/generate_amfbins.cpp:112
-#: cygnal/testsuite/libnet.all/test_rtmp.cpp:121
-#: cygnal/testsuite/libnet.all/test_diskstream.cpp:101
-#: cygnal/testsuite/libnet.all/test_cache.cpp:104
-#: cygnal/testsuite/libamf.all/test_amfmsg.cpp:120
-#: cygnal/testsuite/libamf.all/test_sol.cpp:114
-#: cygnal/testsuite/libamf.all/test_flv.cpp:104
-#: cygnal/testsuite/libamf.all/test_el.cpp:108
-#: cygnal/testsuite/libamf.all/test_buffer.cpp:124
-#: cygnal/testsuite/libamf.all/test_amf.cpp:126
-msgid "This is a Gnash bug."
+#: gui/gtk/gtk_glue_gtkglext.cpp:72
+msgid ""
+"Cannot find the double-buffered visual.\n"
+"Trying single-buffered visual."
msgstr ""
+"æ¾ä¸å°åç¼å²çè§å¾ã\n"
+"请å°è¯åç¼å²è§å¾ã"
-#: cygnal/testsuite/libnet.all/test_handler.cpp:280
-#: cygnal/testsuite/libnet.all/test_diskstream.cpp:268
-#: cygnal/testsuite/libnet.all/test_cache.cpp:390
-msgid "Usage: test_diskstream [options...]"
-msgstr ""
+#: gui/gtk/gtk_glue_gtkglext.cpp:78
+msgid "No appropriate OpenGL-capable visual found."
+msgstr "æªæ¾å°åéçè½ OpenGL 渲æçè§å¾ã"
-#: cygnal/testsuite/libnet.all/test_handler.cpp:283
-#: cygnal/testsuite/libnet.all/test_diskstream.cpp:271
-#: cygnal/testsuite/libnet.all/test_cache.cpp:393
-msgid " -d, --dump Dump data structures"
-msgstr ""
+#: gui/gtk/gtk_glue_agg.cpp:96 gui/haiku/haiku_agg_glue.cpp:297
+#, c-format
+msgid "Could not create AGG renderer with pixelformat %s"
+msgstr "æ æ³å建åç´ æ ¼å¼ä¸º %s ç AGG 渲æå¨"
-#: cygnal/testsuite/libnet.all/generate_amfbins.cpp:99
-#: cygnal/testsuite/libnet.all/test_rtmp.cpp:113
-#: cygnal/testsuite/libamf.all/test_amfmsg.cpp:107
-#: cygnal/testsuite/libamf.all/test_sol.cpp:106
-#: cygnal/testsuite/libamf.all/test_el.cpp:95
-#: cygnal/testsuite/libamf.all/test_buffer.cpp:111
-#: cygnal/testsuite/libamf.all/test_amf.cpp:113
-msgid "Enabling memory statistics"
-msgstr ""
+#: gui/gtk/gtk_glue_ovg.cpp:88 gui/fb/fb_glue_ovg.cpp:73
+msgid "Probing found an EGL display device"
+msgstr "æ¢æµå°ä¸å° EGL æ¾ç¤ºè®¾å¤"
-#: cygnal/testsuite/libnet.all/generate_amfbins.cpp:104
-#: cygnal/testsuite/libamf.all/test_amfmsg.cpp:112
-#: cygnal/testsuite/libamf.all/test_flv.cpp:96
-#: cygnal/testsuite/libamf.all/test_el.cpp:100
-#: cygnal/testsuite/libamf.all/test_buffer.cpp:116
-#: cygnal/testsuite/libamf.all/test_amf.cpp:118
-msgid "Logging to disk enabled"
-msgstr ""
+#: gui/gtk/gtk_glue_ovg.cpp:92 gui/fb/fb_glue_ovg.cpp:77
+msgid "Probing found a raw Framebuffer display device"
+msgstr "æ¢æµå°ä¸å°åç帧ç¼å(Framebuffer)æ¾ç¤ºè®¾å¤"
-#: cygnal/testsuite/libnet.all/generate_amfbins.cpp:299
-#: cygnal/testsuite/libamf.all/test_el.cpp:490
-msgid "Usage: test_el [options...]"
-msgstr ""
+#: gui/gtk/gtk_glue_ovg.cpp:96 gui/fb/fb_glue_ovg.cpp:81
+msgid "Probing found an X11 display device"
+msgstr "æ¢æµå°ä¸å° X11 æ¾ç¤ºè®¾å¤"
-#: cygnal/testsuite/libnet.all/generate_amfbins.cpp:302
-#: cygnal/testsuite/libamf.all/test_amfmsg.cpp:249
-#: cygnal/testsuite/libamf.all/test_el.cpp:493
-#: cygnal/testsuite/libamf.all/test_buffer.cpp:723
-#: cygnal/testsuite/libamf.all/test_amf.cpp:424
-msgid " -m, --memdebug Output memory statistics"
-msgstr ""
+#: gui/gtk/gtk_glue_ovg.cpp:100 gui/fb/fb_glue_ovg.cpp:85
+msgid "Probing found a DirectFB display device"
+msgstr "æ¢æµå°ä¸å° DirectFB æ¾ç¤ºè®¾å¤"
-#: cygnal/testsuite/libamf.all/test_buffer.cpp:718
-msgid "test_buffer - test Buffer class"
-msgstr ""
+#: gui/gtk/gtk_glue_ovg.cpp:105 gui/fb/fb_glue_ovg.cpp:90
+msgid "No display devices found by probing!"
+msgstr "æ¢æµä¸å°æ¾ç¤ºè®¾å¤"
-#: cygnal/testsuite/libamf.all/test_buffer.cpp:720
-msgid "Usage: test_buffer [options...]"
-msgstr ""
+#: gui/gtk/gtk_glue_ovg.cpp:182
+msgid "Could not create OPENVG renderer"
+msgstr "æ æ³å建 OPENVG 渲æå¨ï¼"
-#: cygnal/proc.cpp:119
-#, c-format
-msgid "Invalid filespec for CGI: \"%s\""
-msgstr ""
-
-#: gui/fb/fb.cpp:229
-#, c-format
-msgid "No renderer! %s not supported."
-msgstr "æ æ¸²æå¨ï¼%s ä¸è¢«æ¯æã"
-
-#: gui/fb/fb.cpp:240
-msgid "Found no accessible User mode input event device"
-msgstr "æ¾ä¸å°å¯è®¿é®çç¨æ·æ¨¡å¼è¾å
¥äºä»¶è®¾å¤"
-
-#: gui/fb/fb.cpp:249
-msgid "Found no accessible input event devices"
-msgstr "æ¾ä¸å°å¯è®¿é®çè¾å
¥äºä»¶è®¾å¤"
-
-#: gui/fb/fb.cpp:262
-msgid "WARNING: Mouse support may conflict with the input event support."
-msgstr "è¦åï¼é¼ æ æ¯æå¯è½ä¸è¾å
¥äºä»¶æ¯æå²çªã"
-
-#: gui/fb/fb.cpp:276
-msgid "Enabling Touchscreen support."
-msgstr "å¯ç¨è§¦æ¸å±æ¯æã"
-
-#: gui/fb/fb.cpp:281
-msgid "WARNING: Babbage Tablet support disabled as it conflicts with TSlib"
-msgstr "è¦åï¼Babbage å¹³æ¿æ¯æå·²ç¦ç¨ï¼ä¸ TSlib å²çª"
-
-#: gui/fb/fb.cpp:283
-msgid "Enabling Babbage Touchscreen support"
-msgstr "å¯ç¨ Babbage 触æ¸å±æ¯æ"
-
-#: gui/fb/fb.cpp:288
-msgid "Enabling Power Button support"
-msgstr "å¯ç¨çµæºæé®æ¯æ"
-
-#: gui/fb/fb.cpp:368
-#, c-format
-msgid "Movie Frame Rate is %d, adjusting delay to %dms"
-msgstr "å½±ç帧ç为 %dï¼å°å»¶è¿è°æ´ä¸º %d毫ç§"
-
-#: gui/fb/fb.cpp:462
-msgid "This GUI does not yet support menus"
-msgstr "æ¤ç¨æ·çé¢å°ä¸æ¯æèå"
-
-#: gui/fb/fb.cpp:468
-msgid "This GUI does not yet support a mouse pointer"
-msgstr "æ¤ç¨æ·çé¢å°ä¸æ¯æé¼ æ æé"
-
-#: gui/fb/fb.cpp:539
-msgid "Could not detect controlling TTY"
-msgstr "æ æ³æ£æµæ§å¶ç»ç«¯(TTY)"
+#: gui/gtk/gtk_glue_ovg.cpp:265 gui/gtk/gtk_glue_ovg.cpp:282
+msgid "No off screen buffer!"
+msgstr "æ å¹åç¼åï¼"
-#: gui/fb/fb.cpp:548 gui/fb/fb.cpp:585 gui/fb/fb.cpp:619 gui/fb/fb.cpp:670
+#: gui/gtk/gtk_glue_ovg.cpp:400
#, c-format
-msgid "Could not open %s"
-msgstr "æ æ³æå¼ %s"
-
-#: gui/fb/fb.cpp:554
-msgid "Could not get current VT state"
-msgstr "æ æ³è·å¾å½åç VT ç¶æ"
+msgid "eglGetConfigs() failed to retrive the configs (error %s)"
+msgstr "eglGetConfigs() æ æ³ååé
ç½®(é
ç½® %s)"
-#: gui/fb/fb.cpp:565
-msgid "Could not request a new VT"
-msgstr "æ æ³è¯·æ±æ°ç VT"
+#: gui/gtk/gtk_glue_cairo.cpp:223
+msgid "Cairo: failed to create a rendering buffer!"
+msgstr "Cairoï¼å建渲æç¼å失败ï¼"
-#: gui/fb/fb.cpp:579 gui/fb/fb.cpp:613 gui/fb/fb.cpp:664
-#, c-format
-msgid "Could not find device for VT number %d"
-msgstr "æ¾ä¸å°å¯¹åº VT å· %d ç设å¤"
+#: gui/gtk/gtk.cpp:155
+msgid "Failed to initialize X threading support\n"
+msgstr "åå§å X çº¿ç¨æ¯æå¤±è´¥\n"
-#: gui/fb/fb.cpp:590 gui/fb/fb.cpp:675
-#, c-format
-msgid "Could not activate VT number %d"
-msgstr "æ æ³æ¿æ´» VT å· %d"
+#: gui/gtk/gtk.cpp:198
+msgid "This system lacks a hardware OpenGL driver!"
+msgstr "æ¤ç³»ç»ç¼ºå°ç¡¬ä»¶ OpenGL 驱å¨ï¼"
-#: gui/fb/fb.cpp:596 gui/fb/fb.cpp:681
-#, c-format
-msgid "Error waiting for VT %d becoming active"
-msgstr "çç VT %d æ¿æ´»æ¶åºé"
+#: gui/gtk/gtk.cpp:210
+msgid "Click to play"
+msgstr "ç¹å»ææ¾"
-#: gui/fb/fb.cpp:627
+#: gui/gtk/gtk.cpp:599
#, c-format
-msgid "Could not attach controlling terminal (%s)"
-msgstr "æ æ³éå æ§å¶ç»ç«¯(%s)"
-
-#: gui/fb/fb.cpp:635
-msgid "Could not query current keyboard mode on VT"
-msgstr "æ æ³è¯·æ± VT ä¸çå½åé®ç模å¼"
-
-#: gui/fb/fb.cpp:639
-msgid "Could not switch to graphics mode on new VT"
-msgstr "卿° VT 䏿 æ³åæ¢å°å¾å½¢æ¨¡å¼"
-
-#: gui/fb/fb.cpp:690
-msgid "Could not restore keyboard mode"
-msgstr "æ æ³æ¢å¤é®ç模å¼"
-
-#: gui/fb/fb_glue_ovg.cpp:73 gui/gtk/gtk_glue_ovg.cpp:88
-msgid "Probing found an EGL display device"
-msgstr "æ¢æµå°ä¸å° EGL æ¾ç¤ºè®¾å¤"
-
-#: gui/fb/fb_glue_ovg.cpp:77 gui/gtk/gtk_glue_ovg.cpp:92
-msgid "Probing found a raw Framebuffer display device"
-msgstr "æ¢æµå°ä¸å°åç帧ç¼å(Framebuffer)æ¾ç¤ºè®¾å¤"
+msgid "Advance interval timer set to %d ms (~ %d FPS)"
+msgstr "é«çº§å
é¨å®æ¶å¨è®¾ç½®ä¸º %d 毫ç§(约 %d FPS)"
-#: gui/fb/fb_glue_ovg.cpp:81 gui/gtk/gtk_glue_ovg.cpp:96
-msgid "Probing found an X11 display device"
-msgstr "æ¢æµå°ä¸å° X11 æ¾ç¤ºè®¾å¤"
+#: gui/gtk/gtk.cpp:673
+msgid "Sound"
+msgstr "声é³"
-#: gui/fb/fb_glue_ovg.cpp:85 gui/gtk/gtk_glue_ovg.cpp:100
-msgid "Probing found a DirectFB display device"
-msgstr "æ¢æµå°ä¸å° DirectFB æ¾ç¤ºè®¾å¤"
+#: gui/gtk/gtk.cpp:1226 gui/qt/Qt4Gui.cpp:771
+msgid "Gnash preferences"
+msgstr "Gnash é¦é项"
-#: gui/fb/fb_glue_ovg.cpp:90 gui/gtk/gtk_glue_ovg.cpp:105
-msgid "No display devices found by probing!"
-msgstr "æ¢æµä¸å°æ¾ç¤ºè®¾å¤"
+#: gui/gtk/gtk.cpp:1261
+msgid "_Network"
+msgstr "ç½ç»(_N)"
-#: gui/fb/fb_glue_ovg.cpp:156
-msgid "Could not create OpenVG renderer"
-msgstr "æ æ³å建 OpenVG 渲æå¨"
+#: gui/gtk/gtk.cpp:1265 gui/qt/Qt4Gui.cpp:888
+msgid "<b>Network preferences</b>"
+msgstr "<b>ç½ç»é¦é项</b>"
-#: gui/fb/fb_glue_ovg.cpp:168 gui/fb/fb_glue_agg.cpp:76
-msgid "No renderer set!"
-msgstr "æªè®¾ç½®æ¸²æå¨ï¼"
+#: gui/gtk/gtk.cpp:1273
+msgid "Network timeout in seconds (0 for no timeout):"
+msgstr "ç½ç»è¶
æ¶ç§æ°(0 为æ è¶
æ¶)ï¼"
-#: gui/fb/fb_glue_gles1.cpp:98
-msgid "EGL: getDisplay ok"
-msgstr "EGLï¼getDisplay æ£å¸¸"
+#: gui/gtk/gtk.cpp:1292
+msgid "_Logging"
+msgstr "æ¥å¿è®°å½(_L)"
-#: gui/fb/fb_glue_gles1.cpp:104
-msgid "EGL: initialize ok"
-msgstr "EGLï¼åå§å æ£å¸¸"
+#: gui/gtk/gtk.cpp:1297 gui/qt/Qt4Gui.cpp:789
+msgid "<b>Logging options</b>"
+msgstr "<b>æ¥å¿é项</b>"
-#: gui/fb/fb_glue_gles1.cpp:111
-msgid "EGL: config ok"
-msgstr "EGLï¼é
ç½® æ£å¸¸"
+#: gui/gtk/gtk.cpp:1301
+msgid "Verbosity level:"
+msgstr "详尽ç¨åº¦ï¼"
-#: gui/fb/fb_glue_gles1.cpp:118
-msgid "EGL: surface ok"
-msgstr "EGLï¼è¡¨é¢ æ£å¸¸"
+#: gui/gtk/gtk.cpp:1314
+msgid "Log to _file"
+msgstr "è®°å½å°æä»¶(_F)"
-#: gui/fb/fb_glue_gles1.cpp:124
-msgid "EGL: context ok"
-msgstr "EGLï¼ä¸ä¸æ æ£å¸¸"
+#: gui/gtk/gtk.cpp:1320
+msgid "Logfile name:"
+msgstr "æ¥å¿æä»¶åï¼"
-#: gui/fb/fb_glue_gles1.cpp:130
-msgid "EGL: current ok"
-msgstr "EGLï¼å½å æ£å¸¸"
+#: gui/gtk/gtk.cpp:1333
+msgid "Log _parser output"
+msgstr "è®°å½è§£æå¨è¾åº(_P)"
-#: gui/fb/fb_glue_agg.cpp:87
-#, c-format
-msgid "No renderer set in %s!"
-msgstr "%s 䏿²¡æè®¾ç½®æ¸²æå¨ï¼"
+#: gui/gtk/gtk.cpp:1341
+msgid "Log SWF _actions"
+msgstr "è®°å½ SWF æä½(_A)"
-#: gui/fb/fb_glue_agg.cpp:130
-msgid "failed to create a render handler for AGG!"
-msgstr "æ æ³å建é对 AGG çæ¸²æå¤çå¨ï¼"
+#: gui/gtk/gtk.cpp:1349
+msgid "Log malformed SWF _errors"
+msgstr "è®°å½æåç SWF é误(_E)"
-#: gui/fb/fb_glue_agg.cpp:151
-msgid "No Device layer initialized yet!"
-msgstr "å°æªåå§åä»»ä½è®¾å¤å±ï¼"
+#: gui/gtk/gtk.cpp:1357
+msgid "Log ActionScript _coding errors"
+msgstr "è®°å½ ActionScript 代ç é误(_C)"
-#: gui/fb/fb_glue_agg.cpp:182
-msgid "The pixel format of your framebuffer could not be detected."
-msgstr "å°æªæ£æµæ¨ç帧ç¼åçåç´ æ ¼å¼ã"
+#: gui/gtk/gtk.cpp:1373
+msgid "_Security"
+msgstr "å®å
¨(_S)"
-#: gui/fb/fb_glue_agg.cpp:191
-msgid "Double buffering disabled"
-msgstr "åç¼å²å·²ç¦ç¨"
+#: gui/gtk/gtk.cpp:1380 gui/qt/Qt4Gui.cpp:840
+msgid "<b>Network connections</b>"
+msgstr "<b>ç½ç»è¿æ¥</b>"
-#: gui/fb/fb_glue_agg.cpp:194
-msgid "Double buffering enabled"
-msgstr "åç¼å²å·²å¯ç¨"
+#: gui/gtk/gtk.cpp:1386
+msgid "Connect only to local _host"
+msgstr "åªè¿æ¥æ¬å°ä¸»æº(_H)"
-#: gui/fb/fb_glue_agg.cpp:221
-#, c-format
-msgid "No Drawbounds set in %s!"
-msgstr "%s 䏿ªè®¾ç½®ç»å¶è¾¹çï¼"
+#: gui/gtk/gtk.cpp:1393
+msgid "Connect only to local _domain"
+msgstr "åªè¿æ¥æ¬å°å(_D)"
-#: gui/gnash.cpp:125
-#, c-format
-msgid "Error parsing options: %s\n"
-msgstr "è§£æå½ä»¤åºéï¼%s\n"
+#: gui/gtk/gtk.cpp:1400
+msgid "Disable SSL _verification"
+msgstr "ç¦ç¨ SSL éªè¯(_V)"
-#: gui/gnash.cpp:166
-msgid "Error: no input file was specified. Exiting.\n"
-msgstr "éè¯¯ï¼æªæå®è¾å
¥æä»¶ãéåºã\n"
+#: gui/gtk/gtk.cpp:1407
+msgid "_Whitelist"
+msgstr "ç½åå(_W)"
-#: gui/gnash.cpp:212
-msgid "Invalid host communication filedescriptor %1%\n"
-msgstr "æ æç主æºéä¿¡æä»¶æè¿°ç¬¦ %1%\n"
+#: gui/gtk/gtk.cpp:1416
+msgid "_Blacklist"
+msgstr "é»åå(_B)"
-#: gui/gnash.cpp:219
-msgid "Invalid control communication filedescriptor %1%\n"
-msgstr "æ æçæ§å¶éä¿¡æä»¶æè¿°ç¬¦ %1%\n"
+#: gui/gtk/gtk.cpp:1425 gui/qt/Qt4Gui.cpp:858
+msgid "<b>Privacy</b>"
+msgstr "<b>éç§</b>"
-#: gui/gnash.cpp:251
-msgid "ERROR: -r must be followed by 0, 1, 2 or 3 "
-msgstr "é误ï¼-r åå¿
é¡»è· 0ã1ã2 æ 3 "
+#: gui/gtk/gtk.cpp:1429 gui/qt/Qt4Gui.cpp:861
+msgid "Shared objects directory:"
+msgstr "å
±äº«å¯¹è±¡ç®å½ï¼"
-#: gui/gnash.cpp:267
-msgid "Debugging options"
-msgstr "è°è¯é项"
+#: gui/gtk/gtk.cpp:1441
+msgid "Do _not write Shared Object files"
+msgstr "ä¸åå
±äº«å¯¹è±¡æä»¶(_N)"
-#: gui/gnash.cpp:273
-msgid "Produce verbose output"
-msgstr "产ç详尽çè¾åº"
+#: gui/gtk/gtk.cpp:1448
+msgid "Only _access local Shared Object files"
+msgstr "åªè®¿é®æ¬å°çå
±äº«å¯¹è±¡æä»¶(_A)"
-#: gui/gnash.cpp:280
-msgid "Produce the disk based debug log"
-msgstr "产çåºäºç£ççè°è¯æ¥å¿"
+#: gui/gtk/gtk.cpp:1455
+msgid "Disable Local _Connection object"
+msgstr "ç¦ç¨æ¬å°è¿æ¥å¯¹è±¡(_C)"
-#: gui/gnash.cpp:285
-msgid "Be (very) verbose about action execution"
-msgstr "(å¾)详尽çè¾åºæä½æ§è¡æ
åµ"
+#: gui/gtk/gtk.cpp:1469
+msgid "_Media"
+msgstr "åªä½(_M)"
-#: gui/gnash.cpp:291
-msgid "Be (very) verbose about parsing"
-msgstr "(å¾)详尽çè¾åºè§£ææ
åµ"
+#: gui/gtk/gtk.cpp:1475 gui/qt/Qt4Gui.cpp:906
+msgid "<b>Sound</b>"
+msgstr "<b>声é³</b>"
-#: gui/gnash.cpp:297
-msgid "Print FPS every num seconds"
-msgstr "æ¯é num ç§æå°å¸§ç(FPS)"
+#: gui/gtk/gtk.cpp:1480
+msgid "Use sound _handler"
+msgstr "使ç¨å£°é³å¤çå¨(_H)"
-#: gui/gnash.cpp:320
-msgid "Options"
-msgstr "é项"
+#: gui/gtk/gtk.cpp:1488
+msgid "<b>Media Streams</b>"
+msgstr "<b>åªä½æµ</b>"
-#: gui/gnash.cpp:325
-msgid "Print this help and exit"
-msgstr "æå°æ¤å¸®å©å¹¶éåº"
+#: gui/gtk/gtk.cpp:1494 gui/qt/Qt4Gui.cpp:913
+msgid "Save media streams to disk"
+msgstr "å°åªä½æµä¿åå°ç£ç"
-#: gui/gnash.cpp:328
-msgid "Print version information and exit"
-msgstr "æå°çæ¬ä¿¡æ¯å¹¶éåº"
+#: gui/gtk/gtk.cpp:1503 gui/qt/Qt4Gui.cpp:919
+msgid "Save dynamically loaded media to disk"
+msgstr "å°å¨æå è½½çåªä½ä¿åå°ç£ç"
-#: gui/gnash.cpp:333
-msgid "Scale the movie by the specified factor"
-msgstr "ææå®çç³»æ°æä¼¸å½±ç"
+#: gui/gtk/gtk.cpp:1511 gui/qt/Qt4Gui.cpp:923
+msgid "Saved media directory:"
+msgstr "ä¿ååªä½çç®å½ï¼"
-#: gui/gnash.cpp:337
-msgid "Number of milliseconds to delay in main loop"
-msgstr "主循ç¯å»¶è¿çæ¯«ç§æ°"
+#: gui/gtk/gtk.cpp:1531
+msgid "_Player"
+msgstr "ææ¾å¨(_P)"
-#: gui/gnash.cpp:341
-msgid "Audio dump file (wave format)"
-msgstr "é³é¢è½¬å¨æä»¶(wave æ ¼å¼)"
+#: gui/gtk/gtk.cpp:1537 gui/qt/Qt4Gui.cpp:935
+msgid "<b>Player description</b>"
+msgstr "<b>ææ¾å¨æè¿°</b>"
-#: gui/gnash.cpp:346
-msgid "Hardware Video Accelerator to use"
-msgstr "è¦ä½¿ç¨ç硬件è§é¢å é"
+#: gui/gtk/gtk.cpp:1545 gui/qt/Qt4Gui.cpp:938
+msgid "Player version:"
+msgstr "ææ¾å¨çæ¬ï¼"
-#: gui/gnash.cpp:351
-msgid "X11 Window ID for display"
-msgstr "æ¾ç¤ºç¨ç X11 çªå£ ID"
+#: gui/gtk/gtk.cpp:1561 gui/qt/Qt4Gui.cpp:944
+msgid "Operating system:"
+msgstr "æä½ç³»ç»ï¼"
-#: gui/gnash.cpp:355
-msgid "Set window width"
-msgstr "设置çªå£å®½åº¦"
+#: gui/gtk/gtk.cpp:1571
+msgid "<i>If blank, Gnash will detect your OS</i>"
+msgstr "<i>妿ä¸å¡«ï¼Gnash 伿£æµæ¨çæä½ç³»ç»</i>"
-#: gui/gnash.cpp:359
-msgid "Set window height"
-msgstr "设置çªå£é«åº¦"
+#: gui/gtk/gtk.cpp:1581 gui/qt/Qt4Gui.cpp:955
+msgid "URL opener:"
+msgstr "URL æå¼ç¨åºï¼"
-#: gui/gnash.cpp:363
-msgid "Set window x position"
-msgstr "设置çªå£æ°´å¹³ä½ç½®"
+#: gui/gtk/gtk.cpp:1593 gui/qt/Qt4Gui.cpp:962
+msgid "<b>Performance</b>"
+msgstr "<b>æ§è½</b>"
-#: gui/gnash.cpp:367
-msgid "Set window y position"
-msgstr "设置çªå£ç«ç´ä½ç½®"
+#: gui/gtk/gtk.cpp:1607 gui/qt/Qt4Gui.cpp:965
+msgid "Max size of movie library:"
+msgstr "åªä½åºçæå¤§å°ºå¯¸ï¼"
-#: gui/gnash.cpp:372
-msgid "Exit when/if movie reaches the last frame"
-msgstr "å½å½±çå°æåä¸å¸§æ¶éåº"
+#: gui/gtk/gtk.cpp:1624
+msgid "Max scripts execution time (in seconds):"
+msgstr "èæ¬æ§è¡æé¿æ¶é´(ç§)ï¼"
-#: gui/gnash.cpp:378
-msgid "disable rendering and sound"
-msgstr "ç¦æ¢æ¸²æå声é³"
+#: gui/gtk/gtk.cpp:1643
+msgid "Max scripts recursion limit (stack depth):"
+msgstr "èæ¬éå
¥æå¤§éå¶(æ æ·±åº¦)ï¼"
-#: gui/gnash.cpp:380
-msgid "enable rendering, disable sound"
-msgstr "å¯ç¨æ¸²æï¼ç¦ç¨å£°é³"
+#: gui/gtk/gtk.cpp:1659
+msgid "Lock script limits so that SWF tags can't override"
+msgstr "éå®èæ¬éå¶ï¼ä»¥ä½¿ SWF æ è®°æ æ³è¦ç"
-#: gui/gnash.cpp:382
-msgid "enable sound, disable rendering"
-msgstr "å¯ç¨å£°é³ï¼ç¦ç¨æ¸²æ"
+#: gui/gtk/gtk.cpp:1671
+msgid "Start _Gnash in pause mode"
+msgstr "以æåæ¹å¼å¯å¨ _Gnash"
-#: gui/gnash.cpp:384
-msgid "enable rendering and sound"
-msgstr "å¯ç¨æ¸²æå声é³"
+#: gui/gtk/gtk.cpp:1695 gui/qt/Qt4Gui.cpp:468
+msgid "Movie properties"
+msgstr "å½±ç屿§"
-#: gui/gnash.cpp:392
-msgid "The media handler to use"
-msgstr "è¦ä½¿ç¨çåªä½å¤çå¨"
+#: gui/gtk/gtk.cpp:1765 gui/qt/Qt4Gui.cpp:487
+msgid "Variable"
+msgstr "åé"
-#: gui/gnash.cpp:400
-msgid "The renderer to use"
-msgstr "è¦ä½¿ç¨ç渲æå¨"
+#: gui/gtk/gtk.cpp:1777 gui/qt/Qt4Gui.cpp:488
+msgid "Value"
+msgstr "å¼"
-#: gui/gnash.cpp:406
-msgid "Exit after the specified number of seconds"
-msgstr "卿å®ç§æ°åéåº"
+#: gui/gtk/gtk.cpp:1830
+msgid ""
+"This program is free software; you can redistribute it and/or modify\n"
+"it under the terms of the GNU General Public License as published by\n"
+"the Free Software Foundation; either version 3 of the License, or\n"
+"(at your option) any later version.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+"GNU General Public License for more details.\n"
+"You should have received a copy of the GNU General Public License\n"
+"along with this program; if not, write to the Free Software\n"
+"Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301\n"
+"USA or visit http://www.gnu.org/licenses/."
+msgstr ""
+"æ¬ç¨åºæ¯å
è´¹è½¯ä»¶ï¼æ¨å¯ä»¥éµå®ç±èªç±è½¯ä»¶åºéä¼åå¸ç\n"
+"GNUéç¨å
Œ
±è®¸å¯åè®®ï¼GPL v3æè
æ´æ°çæ¬ï¼çæ¡æ¬¾ä¸ï¼\n"
+"éæ°åå¸å/æä¿®æ¹å®ã\n"
+"\n"
+"叿æ¬ç¨åºåå¸åï¼æ¯ä¼æç¨å¤çï¼ä½æ²¡æä»»ä½æ
ä¿ï¼\n"
+"乿²¡æé对ç¨äºé宿é对ç¹å®ç¨éçéç¨æ§åéå«ä¿è¯ã\n"
+"详ç»ä¿¡æ¯è¯·æ¥çGNUéç¨å
Œ
±è®¸å¯åè®®ã\n"
+"ä½ ä¼æ¶å°ä¸ä¸ªä¼´éæ¬ç¨åºçGNUéç¨å
Œ
±è®¸å¯è¯ç坿¬ï¼\n"
+"å¦ææ²¡æï¼è¯·åä¿¡ç» Free Software\n"
+"Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, \n"
+"MA 02110-1301 USA\n"
+"æè®¿é®http://www.gnu.org/licenses/ã"
+
+#: gui/gtk/gtk.cpp:1846
+msgid "Gnash is the GNU SWF Player based on GameSWF."
+msgstr "Gnash æ¯åºäº GameSWF ç GNU SWF ææ¾å¨ã"
-#: gui/gnash.cpp:409
-msgid "Set \"real\" URL of the movie"
-msgstr "设置影ççâçå®âURL"
+#: gui/gtk/gtk.cpp:1847
+msgid ""
+"\n"
+"Renderer: "
+msgstr ""
+"\n"
+"渲æå¨ï¼"
-#: gui/gnash.cpp:413
-msgid "Set \"base\" URL for resolving relative URLs"
-msgstr "设置ç¨äºè§£æç¸å¯¹ URL çâåºâURL"
+#: gui/gtk/gtk.cpp:1849
+msgid ""
+"\n"
+"Hardware Acceleration: "
+msgstr ""
+"\n"
+"硬件å éï¼"
-#: gui/gnash.cpp:418
-msgid "Set parameter (e.g. \"FlashVars=A=1&b=2\")"
-msgstr "è®¾ç½®åæ°(å¦âFlashVars=A=1&b=2â)"
+#: gui/gtk/gtk.cpp:1851
+msgid ""
+"\n"
+"GUI: "
+msgstr ""
+"\n"
+"ç¨æ·çé¢ï¼"
-#: gui/gnash.cpp:422
-msgid "Filedescriptor to use for external communications"
-msgstr "ç¨äºå¤é¨éä¿¡çæä»¶æè¿°ç¬¦"
+#: gui/gtk/gtk.cpp:1853
+msgid ""
+"\n"
+"Media: "
+msgstr ""
+"\n"
+"åªä½ï¼"
-#: gui/gnash.cpp:428
-msgid "Exit after specified number of frame advances"
-msgstr "åè¿æå®å¸§æ°åéåº"
+#: gui/gtk/gtk.cpp:1883
+msgid "translator-credits"
+msgstr "Wylmer Wang <wantinghard at gmail.com>"
-#: gui/gnash.cpp:432
-msgid "Start in fullscreen mode"
-msgstr "以å
¨å±æ¹å¼å¯å¨"
+#: gui/gtk/gtk.cpp:1910
+msgid "_File"
+msgstr "æä»¶(_F)"
-#: gui/gnash.cpp:437
-msgid "Start without displaying the menu bar"
-msgstr "å¯å¨æ¶ä¸æ¾ç¤ºèåæ "
+#: gui/gtk/gtk.cpp:1963
+msgid "_Edit"
+msgstr "ç¼è¾(_E)"
-#: gui/gnash.cpp:442
-msgid "List of frames to save as screenshots"
-msgstr "è¦ä¿åæªå±ç帧å表"
+#: gui/gtk/gtk.cpp:1983
+msgid "_Help"
+msgstr "帮å©(_H)"
-#: gui/gnash.cpp:446
-msgid "Filename pattern for screenshot images"
-msgstr "æªå±å¾åçæä»¶å模å¼"
+#: gui/gtk/gtk.cpp:2003
+msgid "_View"
+msgstr "æ¥ç(_V)"
-#: gui/gnash.cpp:450
-msgid "Quality for screenshot output (not all formats)"
-msgstr "æªå±è¾åºçè´¨é(å¹¶éæææ ¼å¼)"
+#: gui/gtk/gtk.cpp:2011
+msgid "Redraw"
+msgstr "éç»"
-#: gui/gnash.cpp:453
-msgid "Input files"
-msgstr "è¾å
¥æä»¶"
+#: gui/gtk/gtk.cpp:2021 gui/gtk/gtk.cpp:2026
+msgid "Toggle fullscreen"
+msgstr "忢å
¨å±"
-#: gui/gnash.cpp:464
-msgid "Dump options"
-msgstr "转å¨é项"
+#: gui/gtk/gtk.cpp:2035
+msgid "Show updated ranges"
+msgstr "æ¾ç¤ºå·²æ´æ°çèå´"
-#: gui/gnash.cpp:469
-msgid "Video dump file (raw format) and optional video FPS (@<num>)"
-msgstr "è§é¢è½¬å¨æä»¶(åçæ ¼å¼)åå¯éçè§é¢å¸§ç(@<num>)"
+#: gui/gtk/gtk.cpp:2054
+msgid "_Quality"
+msgstr "è´¨é(_Q)"
-#: gui/gnash.cpp:471
-msgid "Number of milliseconds to sleep between advances"
-msgstr "åè¿åç¡ç çæ¯«ç§æ°"
+#: gui/gtk/gtk.cpp:2064
+msgid "Low"
+msgstr "ä½"
-#: gui/gnash.cpp:473
-msgid "Trigger expression to start dumping"
-msgstr "å¼å§è½¬å¨ç触å表达å¼"
+#: gui/gtk/gtk.cpp:2070
+msgid "Medium"
+msgstr "ä¸"
-#: gui/gnash.cpp:485
-msgid "Keys:\n"
-msgstr "é®ï¼\n"
+#: gui/gtk/gtk.cpp:2076
+msgid "High"
+msgstr "é«"
-#: gui/gnash.cpp:487
-msgid "Quit\n"
-msgstr "éåº\n"
+#: gui/gtk/gtk.cpp:2082
+msgid "Best"
+msgstr "æä½³"
-#: gui/gnash.cpp:489
-msgid "Toggle fullscreen\n"
-msgstr "忢å
¨å±\n"
+#: gui/gtk/gtk.cpp:2095
+msgid "Movie _Control"
+msgstr "å½±çæ§å¶(_C)"
-#: gui/gnash.cpp:491
-msgid "Toggle pause\n"
-msgstr "忢æå\n"
+#: gui/gtk/gtk.cpp:2106 gui/qt/Qt4Gui.cpp:605
+msgid "Play"
+msgstr "ææ¾"
-#: gui/gnash.cpp:493
-msgid "Restart the movie\n"
-msgstr "éå¯å½±ç\n"
+#: gui/gtk/gtk.cpp:2117 gui/qt/Qt4Gui.cpp:609
+msgid "Pause"
+msgstr "æå"
-#: gui/gnash.cpp:495
-msgid "Take a screenshot\n"
-msgstr "æªå±\n"
+#: gui/gtk/gtk.cpp:2127 gui/qt/Qt4Gui.cpp:613
+msgid "Stop"
+msgstr "忢"
-#: gui/gnash.cpp:497
-msgid "Force immediate redraw\n"
-msgstr "强å¶ç«å³éç»\n"
+#: gui/gtk/gtk.cpp:2139 gui/qt/kde.cpp:416
+msgid "Restart Movie"
+msgstr "éæ°å¼å§å½±ç"
-#: gui/gnash.cpp:503
-msgid "Usage: gnash [options] movie_file.swf\n"
-msgstr "ç¨æ³ï¼gnash [é项] å½±çæä»¶.swf\n"
+#: gui/gtk/gtk.cpp:2262 gui/gtk/gtk.cpp:2263
+#, c-format
+msgid "Couldn't find pixmap file: %s"
+msgstr "æ¾ä¸å°åç´ æ å°(pixmap)æä»¶ï¼%s"
-#: gui/gnash.cpp:504
-msgid "Plays a SWF (Shockwave Flash) movie\n"
-msgstr "ææ¾ SWF (Shockwave Flash) å½±ç\n"
+#: gui/gtk/gtk.cpp:2269
+#, c-format
+msgid "Failed to load pixbuf file: %s: %s"
+msgstr "å è½½ pixbuf æä»¶å¤±è´¥ï¼%sï¼%s"
-#: gui/gnash.cpp:521
+#: gui/gtk/gtk.cpp:2578 gui/aos4/aos4.cpp:266
+#, c-format
msgid ""
-"Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software "
-"Foundation, Inc.\n"
-"Gnash comes with NO WARRANTY, to the extent permitted by law.\n"
-"You may redistribute copies of Gnash under the terms of the GNU General\n"
-"Public License. For more information, see the file named COPYING.\n"
-"\n"
+"Attempting to open file %s.\n"
+"NOTE: the file open functionality is not yet implemented!"
msgstr ""
-"çæææ (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011 èªç±è½¯ä»¶åºéä¼, Inc.\n"
-"Gnash 卿³å¾å
许çé度å
ä¸ä½ä»»ä½æ
ä¿ã\n"
-"æ¨å¯ä»¥å¨éµå® GNU éç¨å
Œ
±è®¸å¯è¯æ¡æ¬¾çåæä¸åå Gnash ç坿¬ãæ´å¤ä¿¡æ¯è¯·åè§"
-"å为 COPYING çæä»¶ã\n"
-"\n"
+"å°è¯æå¼æä»¶ %sã\n"
+"注æï¼æå¼æä»¶åè½å°æªå®ç°ï¼"
-#: gui/gnash.cpp:532
-msgid "Build options "
-msgstr "æå»ºé项 "
+#: gui/gtk/gtk.cpp:2595 gui/gtk/gtk.cpp:2608
+msgid "Open file"
+msgstr "æå¼æä»¶"
-#: gui/gnash.cpp:533
-msgid " Renderers: "
-msgstr " 渲æå¨ï¼"
+#: gui/Player.cpp:132
+msgid "GUI ExternalInterface.Pan event"
+msgstr "ç¨æ·çé¢ ExternalInterface.Pan äºä»¶"
-#: gui/gnash.cpp:534
-msgid " Hardware Acceleration: "
-msgstr " 硬件å éï¼"
+#: gui/Player.cpp:144
+msgid "GUI ExternalInterface.SetZoomRect event"
+msgstr "ç¨æ·çé¢ ExternalInterface.SetZoomRect äºä»¶"
-#: gui/gnash.cpp:535
-msgid " GUI: "
-msgstr " çé¢ï¼"
+#: gui/Player.cpp:152
+msgid "GUI ExternalInterface.Zoom event"
+msgstr "ç¨æ·çé¢ ExternalInterface.Zoom äºä»¶"
-#: gui/gnash.cpp:536
-msgid " Media handlers: "
-msgstr " åªä½å¤çå¨ï¼"
+#: gui/Player.cpp:170
+#, c-format
+msgid "Unhandled callback %s with arguments %s"
+msgstr "æªå¤ççåè° %sï¼åæ° %s"
-#: gui/gnash.cpp:538
-msgid " Configured with: "
-msgstr " é
ç½®æ
åµï¼"
+#: gui/Player.cpp:284 gui/pythonmod/gnash-view.cpp:223
+msgid "Sound requested but no sound support compiled in"
+msgstr "请æ±å£°é³ï¼ä½æªç¼è¯å£°é³æ¯æ"
-#: gui/gnash.cpp:539
-msgid " CXXFLAGS: "
-msgstr " CXXFLAGSï¼"
+#: gui/Player.cpp:289 gui/pythonmod/gnash-view.cpp:220
+#, c-format
+msgid "Could not create sound handler: %s. Will continue without sound."
+msgstr "æ æ³å建声é³å¤çå¨ï¼%sãå°ç»§ç»ï¼æ²¡æå£°é³ã"
-#: gui/fltk/fltk_glue_agg.cpp:50
-msgid "Could not create AGG renderer with pixelformat RGB24"
-msgstr "æ æ³ç¨åç´ æ ¼å¼ RGB24 å建 AGG 渲æå¨"
+#: gui/Player.cpp:437
+msgid "Non-existent media handler %1% specified"
+msgstr "æå®äºä¸åå¨çåªä½å¤çå¨ %1%"
-#: gui/dump/dump.cpp:117
-msgid "Ignoring request to display in X11 window"
-msgstr "å¿½ç¥æ¾ç¤ºå¨ X11 çªå£ç请æ±"
+#: gui/Player.cpp:685
+msgid "Got unexpected argument type for message %1%"
+msgstr "æ¶æ¯ %1% çåæ°ç±»åå¼å¸¸"
-#: gui/dump/dump.cpp:128 gui/haiku/haiku.cpp:384
-msgid "# FATAL: No filename given with -D argument."
-msgstr "# è´å½é误ï¼-D åæ°æ²¡æç»å®æä»¶åã"
+#: gui/Player.cpp:720
+#, c-format
+msgid ""
+"Could only write %d bytes over %d required to user-provided host requests fd "
+"%d"
+msgstr ""
+"åªè½åç¨æ·æä¾ç主æºè¯·æ±æä»¶æè¿°ç¬¦ %3$d åå
¥ %1$d 个åèï¼èéè¦æ±ç %2$d 个"
-#: gui/dump/dump.cpp:144
-msgid "# FATAL: No sleep ms value given with -S argument."
-msgstr "# è´ä½¿é误ï¼-S åæ°æ²¡æç»å®ç¡ç çæ¯«ç§å¼ã"
+#: gui/Player.cpp:776
+#, c-format
+msgid "FsCommand exec called with argument %s"
+msgstr "è¿è¡äº FsCommand exec è°ç¨ï¼åæ° %s"
-#: gui/dump/dump.cpp:155
-msgid "# FATAL: No trigger value given with -T argument.\n"
-msgstr "# è´ä½¿é误ï¼-T åæ°æ²¡æç»å®è§¦åå¼ã\n"
+#: gui/Player.cpp:793
+#, c-format
+msgid "FsCommand trapallkeys called with argument %s"
+msgstr "è¿è¡äº FsCommand trapallkeys è°ç¨ï¼åæ° %s"
-#: gui/dump/dump.cpp:352
+#: gui/Player.cpp:799
#, c-format
-msgid "Unable to write file '%s'."
-msgstr "æ æ³åæä»¶â%sâ"
+msgid "FsCommand '%s(%s)' not handled internally"
+msgstr "FsCommandâ%s(%s)âæªè¿è¡å
é¨å¤ç"
-#: gui/ScreenShotter.cpp:99
+#: gui/aos4/aos4_agg_glue.cpp:116 gui/sdl/sdl_agg_glue.cpp:78
+#: gui/haiku/haiku_agg_glue.cpp:290
#, c-format
-msgid "Failed to open screenshot file \"%s\"!"
-msgstr "æ æ³æå¼æªå±æä»¶â%sâï¼"
+msgid "AGG's bit depth must be 16, 24 or 32 bits, not %d."
+msgstr "AGG ç使·±åº¦å¿
须为 16ã24 æ 32 ä½ï¼èé %dã"
-#: gui/haiku/haiku.cpp:141
-msgid "spawn_thread failed"
-msgstr "spawn_thread 失败"
+#: gui/aos4/aos4_agg_glue.cpp:216 gui/aos4/aos4_cairo_glue.cpp:212
+msgid "Cannot layout Menu!!\n"
+msgstr "æ æ³å¸å±èåï¼ï¼\n"
-#: gui/haiku/haiku.cpp:144
-msgid "resume_thread failed"
-msgstr "resume_thread 失败"
+#: gui/aos4/aos4_agg_glue.cpp:220 gui/aos4/aos4_cairo_glue.cpp:216
+msgid "Cannot create Menu!!\n"
+msgstr "æ æ³å建èåï¼ï¼\n"
-#: gui/haiku/haiku.cpp:157
-#, c-format
-msgid "pulses thread returned %d"
-msgstr "èå²(pulses)线ç¨è¿å %d"
+#: gui/aos4/aos4_agg_glue.cpp:223 gui/aos4/aos4_cairo_glue.cpp:219
+msgid "Cannot get Visual Info!!\n"
+msgstr "æ æ³è·å¾å¯è§ä¿¡æ¯ï¼ï¼\n"
-#: gui/haiku/haiku.cpp:248
-msgid "send_data failed"
-msgstr "send_data 失败"
+#: gui/aos4/aos4_agg_glue.cpp:226 gui/aos4/aos4_cairo_glue.cpp:222
+msgid "Cannot get WB Screen pointer!!\n"
+msgstr "æ æ³è·å¾ WB å±å¹æéï¼ï¼\n"
-#: gui/haiku/haiku_agg_glue.cpp:290 gui/aos4/aos4_agg_glue.cpp:116
-#: gui/sdl/sdl_agg_glue.cpp:78
-#, c-format
-msgid "AGG's bit depth must be 16, 24 or 32 bits, not %d."
-msgstr "AGG ç使·±åº¦å¿
须为 16ã24 æ 32 ä½ï¼èé %dã"
+#: gui/aos4/aos4_agg_glue.cpp:264 gui/aos4/aos4_cairo_glue.cpp:259
+msgid "prepDrawingArea() failed.\n"
+msgstr "prepDrawingArea() 失败ã\n"
-#: gui/haiku/haiku_agg_glue.cpp:297 gui/gtk/gtk_glue_agg.cpp:96
+#: gui/aos4/aos4_agg_glue.cpp:277
#, c-format
-msgid "Could not create AGG renderer with pixelformat %s"
-msgstr "æ æ³å建åç´ æ ¼å¼ä¸º %s ç AGG 渲æå¨"
+msgid "AOS4-AGG: %i byte offscreen buffer allocated"
+msgstr "AOS4-AGGï¼å·²åé
%i åèçå¹åç¼å"
-#: gui/haiku/haiku_agg_glue.cpp:416 gui/sdl/sdl_agg_glue.cpp:132
+#: gui/aos4/aos4.cpp:70
#, c-format
-msgid "SDL-AGG: %i byte offscreen buffer allocated"
-msgstr "SDL-AGGï¼åé
äº %i 个åèçå¹åç¼å"
+msgid "Exception: %s on file %s line %d"
+msgstr "å¼å¸¸ï¼%sï¼å¨æä»¶ %s ç第 %d è¡"
-#: gui/qt/Qt4Gui.cpp:120
-msgid "Cairo renderer not supported!"
-msgstr "䏿¯æ Cairo 渲æå¨ï¼"
+#: gui/aos4/aos4.cpp:274
+msgid "Cannot open File Requester!\n"
+msgstr "æ æ³æå¼æä»¶è¯·æ±ç¨åºï¼\n"
-#: gui/qt/Qt4Gui.cpp:128
-msgid "OpenGL renderer not supported!"
-msgstr "䏿¯æ OpenGL 渲æå¨ï¼"
+#: gui/aos4/aos4.cpp:609
+msgid "error creating RenderHandler!\n"
+msgstr "å建渲æå¤çå¨åºéï¼\n"
-#: gui/qt/Qt4Gui.cpp:136
-msgid "AGG renderer not supported!"
-msgstr "䏿¯æ AGG 渲æå¨ï¼"
+#: gui/aos4/aos4_cairo_glue.cpp:124
+#, c-format
+msgid "Cairo's bit depth must be 16, 24 or 32 bits, not %d."
+msgstr "Cairo ç使·±åº¦å¿
须为 16ã24 æ 32 ä½ï¼èé %dã"
-#: gui/qt/Qt4Gui.cpp:467 gui/gtk/gtk.cpp:1708
-msgid "Movie properties"
-msgstr "å½±ç屿§"
+#: gui/gnash.cpp:127
+#, c-format
+msgid "Error parsing options: %s\n"
+msgstr "è§£æå½ä»¤åºéï¼%s\n"
-#: gui/qt/Qt4Gui.cpp:486 gui/gtk/gtk.cpp:1778
-msgid "Variable"
-msgstr "åé"
+#: gui/gnash.cpp:168
+msgid "Error: no input file was specified. Exiting.\n"
+msgstr "éè¯¯ï¼æªæå®è¾å
¥æä»¶ãéåºã\n"
-#: gui/qt/Qt4Gui.cpp:487 gui/gtk/gtk.cpp:1790
-msgid "Value"
-msgstr "å¼"
+#: gui/gnash.cpp:214
+msgid "Invalid host communication filedescriptor %1%\n"
+msgstr "æ æç主æºéä¿¡æä»¶æè¿°ç¬¦ %1%\n"
-#: gui/qt/Qt4Gui.cpp:588
-msgid "Properties"
-msgstr "屿§"
+#: gui/gnash.cpp:221
+msgid "Invalid control communication filedescriptor %1%\n"
+msgstr "æ æçæ§å¶éä¿¡æä»¶æè¿°ç¬¦ %1%\n"
-#: gui/qt/Qt4Gui.cpp:592 gui/qt/kde.cpp:424
-msgid "Quit Gnash"
-msgstr "éåº Gnash"
+#: gui/gnash.cpp:233
+#, c-format
+msgid "Cookiefile %s does not exist or is not a regular file\n"
+msgstr ""
-#: gui/qt/Qt4Gui.cpp:599
-msgid "Preferences"
-msgstr "é¦é项"
+#: gui/gnash.cpp:265
+msgid "ERROR: -r must be followed by 0, 1, 2 or 3 "
+msgstr "é误ï¼-r åå¿
é¡»è· 0ã1ã2 æ 3 "
-#: gui/qt/Qt4Gui.cpp:604 gui/gtk/gtk.cpp:2119
-msgid "Play"
-msgstr "ææ¾"
+#: gui/gnash.cpp:281
+msgid "Debugging options"
+msgstr "è°è¯é项"
-#: gui/qt/Qt4Gui.cpp:608 gui/gtk/gtk.cpp:2130
-msgid "Pause"
-msgstr "æå"
+#: gui/gnash.cpp:287
+msgid "Produce verbose output"
+msgstr "产ç详尽çè¾åº"
-#: gui/qt/Qt4Gui.cpp:612 gui/gtk/gtk.cpp:2140
-msgid "Stop"
-msgstr "忢"
+#: gui/gnash.cpp:294
+msgid "Produce the disk based debug log"
+msgstr "产çåºäºç£ççè°è¯æ¥å¿"
-#: gui/qt/Qt4Gui.cpp:616
-msgid "Restart"
-msgstr "éæ°å¼å§"
+#: gui/gnash.cpp:299
+msgid "Be (very) verbose about action execution"
+msgstr "(å¾)详尽çè¾åºæä½æ§è¡æ
åµ"
-#: gui/qt/Qt4Gui.cpp:621 gui/qt/kde.cpp:423
-msgid "Refresh"
-msgstr "å·æ°"
+#: gui/gnash.cpp:305
+msgid "Be (very) verbose about parsing"
+msgstr "(å¾)详尽çè¾åºè§£ææ
åµ"
-#: gui/qt/Qt4Gui.cpp:625
-msgid "Fullscreen"
-msgstr "å
¨å±"
+#: gui/gnash.cpp:311
+msgid "Print FPS every num seconds"
+msgstr "æ¯é num ç§æå°å¸§ç(FPS)"
-#: gui/qt/Qt4Gui.cpp:640
-msgid "File"
-msgstr "æä»¶"
+#: gui/gnash.cpp:335
+msgid "Options"
+msgstr "é项"
-#: gui/qt/Qt4Gui.cpp:645
-msgid "Edit"
-msgstr "ç¼è¾"
+#: gui/gnash.cpp:340
+msgid "Print this help and exit"
+msgstr "æå°æ¤å¸®å©å¹¶éåº"
-#: gui/qt/Qt4Gui.cpp:649
-msgid "Movie Control"
-msgstr "åªä½æ§å¶"
+#: gui/gnash.cpp:343
+msgid "Print version information and exit"
+msgstr "æå°çæ¬ä¿¡æ¯å¹¶éåº"
-#: gui/qt/Qt4Gui.cpp:656
-msgid "View"
-msgstr "æ¥ç"
+#: gui/gnash.cpp:348
+msgid "Scale the movie by the specified factor"
+msgstr "ææå®çç³»æ°æä¼¸å½±ç"
-#: gui/qt/Qt4Gui.cpp:738
-msgid "Click to Play"
-msgstr "ç¹å»ææ¾"
+#: gui/gnash.cpp:352
+msgid "Number of milliseconds to delay in main loop"
+msgstr "主循ç¯å»¶è¿çæ¯«ç§æ°"
-#: gui/qt/Qt4Gui.cpp:770 gui/gtk/gtk.cpp:1239
-msgid "Gnash preferences"
-msgstr "Gnash é¦é项"
+#: gui/gnash.cpp:356
+msgid "Audio dump file (wave format)"
+msgstr "é³é¢è½¬å¨æä»¶(wave æ ¼å¼)"
-#: gui/qt/Qt4Gui.cpp:785
-msgid "Logging"
-msgstr "æ¥å¿è®°å½"
+#: gui/gnash.cpp:361
+msgid "Hardware Video Accelerator to use"
+msgstr "è¦ä½¿ç¨ç硬件è§é¢å é"
-#: gui/qt/Qt4Gui.cpp:788 gui/gtk/gtk.cpp:1310
-msgid "<b>Logging options</b>"
-msgstr "<b>æ¥å¿é项</b>"
+#: gui/gnash.cpp:366
+msgid "X11 Window ID for display"
+msgstr "æ¾ç¤ºç¨ç X11 çªå£ ID"
-#: gui/qt/Qt4Gui.cpp:791
-msgid "Verbosity level"
-msgstr "详尽ç¨åº¦"
+#: gui/gnash.cpp:370
+msgid "Set window width"
+msgstr "设置çªå£å®½åº¦"
-#: gui/qt/Qt4Gui.cpp:809
-msgid "Log to file"
-msgstr "è®°å½å°æä»¶"
+#: gui/gnash.cpp:374
+msgid "Set window height"
+msgstr "设置çªå£é«åº¦"
-#: gui/qt/Qt4Gui.cpp:816
-msgid "Log parser output"
-msgstr "è®°å½è§£æå¨è¾åº"
+#: gui/gnash.cpp:378
+msgid "Set window x position"
+msgstr "设置çªå£æ°´å¹³ä½ç½®"
-#: gui/qt/Qt4Gui.cpp:820
-msgid "Log SWF actions"
-msgstr "è®°å½ SWF æä½"
+#: gui/gnash.cpp:382
+msgid "Set window y position"
+msgstr "设置çªå£ç«ç´ä½ç½®"
-#: gui/qt/Qt4Gui.cpp:824
-msgid "Log malformed SWF errors"
-msgstr "è®°å½æåç SWF é误"
+#: gui/gnash.cpp:387
+msgid "Exit when/if movie reaches the last frame"
+msgstr "å½å½±çå°æåä¸å¸§æ¶éåº"
-#: gui/qt/Qt4Gui.cpp:829
-msgid "Log ActionScript coding errors"
-msgstr "è®°å½ ActionScript 代ç é误"
+#: gui/gnash.cpp:393
+msgid "disable rendering and sound"
+msgstr "ç¦æ¢æ¸²æå声é³"
-#: gui/qt/Qt4Gui.cpp:836
-msgid "Security"
-msgstr "å®å
¨"
+#: gui/gnash.cpp:395
+msgid "enable rendering, disable sound"
+msgstr "å¯ç¨æ¸²æï¼ç¦ç¨å£°é³"
-#: gui/qt/Qt4Gui.cpp:839 gui/gtk/gtk.cpp:1393
-msgid "<b>Network connections</b>"
-msgstr "<b>ç½ç»è¿æ¥</b>"
+#: gui/gnash.cpp:397
+msgid "enable sound, disable rendering"
+msgstr "å¯ç¨å£°é³ï¼ç¦ç¨æ¸²æ"
-#: gui/qt/Qt4Gui.cpp:842
-msgid "Connect only to local host"
-msgstr "åªè¿æ¥æ¬å°ä¸»æº"
+#: gui/gnash.cpp:399
+msgid "enable rendering and sound"
+msgstr "å¯ç¨æ¸²æå声é³"
-#: gui/qt/Qt4Gui.cpp:847
-msgid "Connect only to local domain"
-msgstr "åªè¿æ¥æ¬å°å"
+#: gui/gnash.cpp:407
+msgid "The media handler to use"
+msgstr "è¦ä½¿ç¨çåªä½å¤çå¨"
-#: gui/qt/Qt4Gui.cpp:852
-msgid "Disable SSL verification"
-msgstr "ç¦ç¨ SSL éªè¯"
+#: gui/gnash.cpp:415
+msgid "The renderer to use"
+msgstr "è¦ä½¿ç¨ç渲æå¨"
-#: gui/qt/Qt4Gui.cpp:857 gui/gtk/gtk.cpp:1438
-msgid "<b>Privacy</b>"
-msgstr "<b>éç§</b>"
+#: gui/gnash.cpp:421
+msgid "Exit after the specified number of seconds"
+msgstr "卿å®ç§æ°åéåº"
-#: gui/qt/Qt4Gui.cpp:860 gui/gtk/gtk.cpp:1442
-msgid "Shared objects directory:"
-msgstr "å
±äº«å¯¹è±¡ç®å½ï¼"
+#: gui/gnash.cpp:424
+msgid "Set \"real\" URL of the movie"
+msgstr "设置影ççâçå®âURL"
-#: gui/qt/Qt4Gui.cpp:866
-msgid "Do not write Shared Object files"
-msgstr "ä¸åå
±äº«å¯¹è±¡æä»¶"
+#: gui/gnash.cpp:428
+msgid "Set \"base\" URL for resolving relative URLs"
+msgstr "设置ç¨äºè§£æç¸å¯¹ URL çâåºâURL"
-#: gui/qt/Qt4Gui.cpp:872
-msgid "Only access local Shared Object files"
-msgstr "åªè®¿é®æ¬å°çå
±äº«å¯¹è±¡æä»¶"
+#: gui/gnash.cpp:433
+msgid "Set parameter (e.g. \"FlashVars=A=1&b=2\")"
+msgstr "è®¾ç½®åæ°(å¦âFlashVars=A=1&b=2â)"
-#: gui/qt/Qt4Gui.cpp:877
-msgid "Disable Local Connection object"
-msgstr "ç¦ç¨æ¬å°è¿æ¥å¯¹è±¡"
+#: gui/gnash.cpp:437
+msgid "Filedescriptor to use for external communications"
+msgstr "ç¨äºå¤é¨éä¿¡çæä»¶æè¿°ç¬¦"
-#: gui/qt/Qt4Gui.cpp:884
-msgid "Network"
-msgstr "ç½ç»"
+#: gui/gnash.cpp:443
+msgid "Cookiefile to use"
+msgstr ""
-#: gui/qt/Qt4Gui.cpp:887 gui/gtk/gtk.cpp:1278
-msgid "<b>Network preferences</b>"
-msgstr "<b>ç½ç»é¦é项</b>"
+#: gui/gnash.cpp:447
+msgid "Exit after specified number of frame advances"
+msgstr "åè¿æå®å¸§æ°åéåº"
-#: gui/qt/Qt4Gui.cpp:890
-msgid "Network timeout in seconds"
-msgstr "ç½ç»è¶
æ¶çç§æ°"
+#: gui/gnash.cpp:451
+msgid "Start in fullscreen mode"
+msgstr "以å
¨å±æ¹å¼å¯å¨"
-#: gui/qt/Qt4Gui.cpp:902
-msgid "Media"
-msgstr "åªä½"
+#: gui/gnash.cpp:456
+msgid "Start without displaying the menu bar"
+msgstr "å¯å¨æ¶ä¸æ¾ç¤ºèåæ "
-#: gui/qt/Qt4Gui.cpp:905 gui/gtk/gtk.cpp:1488
-msgid "<b>Sound</b>"
-msgstr "<b>声é³</b>"
+#: gui/gnash.cpp:461
+msgid "List of frames to save as screenshots"
+msgstr "è¦ä¿åæªå±ç帧å表"
-#: gui/qt/Qt4Gui.cpp:908
-msgid "Use sound handler"
-msgstr "使ç¨å£°é³å¤çå¨"
+#: gui/gnash.cpp:465
+msgid "Filename pattern for screenshot images"
+msgstr "æªå±å¾åçæä»¶å模å¼"
-#: gui/qt/Qt4Gui.cpp:912 gui/gtk/gtk.cpp:1507
-msgid "Save media streams to disk"
-msgstr "å°åªä½æµä¿åå°ç£ç"
+#: gui/gnash.cpp:469
+msgid "Quality for screenshot output (not all formats)"
+msgstr "æªå±è¾åºçè´¨é(å¹¶éæææ ¼å¼)"
-#: gui/qt/Qt4Gui.cpp:918 gui/gtk/gtk.cpp:1516
-msgid "Save dynamically loaded media to disk"
-msgstr "å°å¨æå è½½çåªä½ä¿åå°ç£ç"
+#: gui/gnash.cpp:472
+msgid "Input files"
+msgstr "è¾å
¥æä»¶"
-#: gui/qt/Qt4Gui.cpp:922 gui/gtk/gtk.cpp:1524
-msgid "Saved media directory:"
-msgstr "ä¿ååªä½çç®å½ï¼"
+#: gui/gnash.cpp:483
+msgid "Dump options"
+msgstr "转å¨é项"
-#: gui/qt/Qt4Gui.cpp:931
-msgid "Player"
-msgstr "ææ¾å¨"
+#: gui/gnash.cpp:488
+msgid "Video dump file (raw format) and optional video FPS (@<num>)"
+msgstr "è§é¢è½¬å¨æä»¶(åçæ ¼å¼)åå¯éçè§é¢å¸§ç(@<num>)"
-#: gui/qt/Qt4Gui.cpp:934 gui/gtk/gtk.cpp:1550
-msgid "<b>Player description</b>"
-msgstr "<b>ææ¾å¨æè¿°</b>"
+#: gui/gnash.cpp:490
+msgid "Number of milliseconds to sleep between advances"
+msgstr "åè¿åç¡ç çæ¯«ç§æ°"
-#: gui/qt/Qt4Gui.cpp:937 gui/gtk/gtk.cpp:1558
-msgid "Player version:"
-msgstr "ææ¾å¨çæ¬ï¼"
+#: gui/gnash.cpp:492
+msgid "Trigger expression to start dumping"
+msgstr "å¼å§è½¬å¨ç触å表达å¼"
-#: gui/qt/Qt4Gui.cpp:943 gui/gtk/gtk.cpp:1574
-msgid "Operating system:"
-msgstr "æä½ç³»ç»ï¼"
+#: gui/gnash.cpp:504
+msgid "Keys:\n"
+msgstr "é®ï¼\n"
-#: gui/qt/Qt4Gui.cpp:948 gui/qt/Qt4Gui.cpp:1021
-msgid "<Autodetect>"
-msgstr "<èªå¨æ£æµ>"
+#: gui/gnash.cpp:506
+msgid "Quit\n"
+msgstr "éåº\n"
-#: gui/qt/Qt4Gui.cpp:954 gui/gtk/gtk.cpp:1594
-msgid "URL opener:"
-msgstr "URL æå¼ç¨åºï¼"
+#: gui/gnash.cpp:508
+msgid "Toggle fullscreen\n"
+msgstr "忢å
¨å±\n"
-#: gui/qt/Qt4Gui.cpp:961 gui/gtk/gtk.cpp:1606
-msgid "<b>Performance</b>"
-msgstr "<b>æ§è½</b>"
+#: gui/gnash.cpp:510
+msgid "Toggle pause\n"
+msgstr "忢æå\n"
-#: gui/qt/Qt4Gui.cpp:964 gui/gtk/gtk.cpp:1620
-msgid "Max size of movie library:"
-msgstr "åªä½åºçæå¤§å°ºå¯¸ï¼"
+#: gui/gnash.cpp:512
+msgid "Restart the movie\n"
+msgstr "éå¯å½±ç\n"
-#: gui/qt/Qt4Gui.cpp:973
-msgid "Start Gnash in pause mode"
-msgstr "以æåæ¹å¼å¯å¨ Gnash"
+#: gui/gnash.cpp:514
+msgid "Take a screenshot\n"
+msgstr "æªå±\n"
-#: gui/qt/Qt4GlueAgg.cpp:115
-msgid "Could not create AGG renderer with pixelformat ABGR32"
-msgstr "æ æ³ä»¥åç´ æ ¼å¼ ABGR32 å建 AGG 渲æå¨"
+#: gui/gnash.cpp:516
+msgid "Force immediate redraw\n"
+msgstr "强å¶ç«å³éç»\n"
-#: gui/qt/kde_glue_agg.cpp:156
-msgid "Could not create AGG renderer with pixelformat BGRA32"
-msgstr "æ æ³ä»¥åç´ æ ¼å¼ BGRA32 å建 AGG 渲æå¨"
+#: gui/gnash.cpp:522
+msgid "Usage: gnash [options] movie_file.swf\n"
+msgstr "ç¨æ³ï¼gnash [é项] å½±çæä»¶.swf\n"
-#: gui/qt/kde.cpp:413
-msgid "Play Movie"
-msgstr "ææ¾å½±ç"
+#: gui/gnash.cpp:523
+msgid "Plays a SWF (Shockwave Flash) movie\n"
+msgstr "ææ¾ SWF (Shockwave Flash) å½±ç\n"
-#: gui/qt/kde.cpp:414
-msgid "Pause Movie"
-msgstr "æåå½±ç"
+#: gui/gnash.cpp:540
+#, fuzzy
+msgid ""
+"Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free "
+"Software Foundation, Inc.\n"
+"Gnash comes with NO WARRANTY, to the extent permitted by law.\n"
+"You may redistribute copies of Gnash under the terms of the GNU General\n"
+"Public License. For more information, see the file named COPYING.\n"
+"\n"
+msgstr ""
+"çæææ (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011 èªç±è½¯ä»¶åºéä¼, Inc.\n"
+"Gnash 卿³å¾å
许çé度å
ä¸ä½ä»»ä½æ
ä¿ã\n"
+"æ¨å¯ä»¥å¨éµå® GNU éç¨å
Œ
±è®¸å¯è¯æ¡æ¬¾çåæä¸åå Gnash ç坿¬ãæ´å¤ä¿¡æ¯è¯·åè§"
+"å为 COPYING çæä»¶ã\n"
+"\n"
-#: gui/qt/kde.cpp:415
-msgid "Stop Movie"
-msgstr "忢影ç"
+#: gui/gnash.cpp:551
+msgid "Build options "
+msgstr "æå»ºé项 "
-#: gui/qt/kde.cpp:416 gui/gtk/gtk.cpp:2152
-msgid "Restart Movie"
-msgstr "éæ°å¼å§å½±ç"
+#: gui/gnash.cpp:552
+msgid " Renderers: "
+msgstr " 渲æå¨ï¼"
-#: gui/qt/kde.cpp:418
-msgid "Step Forward"
-msgstr "æ¥è¿"
+#: gui/gnash.cpp:553
+msgid " Hardware Acceleration: "
+msgstr " 硬件å éï¼"
-#: gui/qt/kde.cpp:419
-msgid "Step Backward"
-msgstr "æ¥é"
+#: gui/gnash.cpp:554
+msgid " GUI: "
+msgstr " çé¢ï¼"
-#: gui/qt/kde.cpp:420
-msgid "Jump Forward"
-msgstr "åè·³"
+#: gui/gnash.cpp:555
+msgid " Media handlers: "
+msgstr " åªä½å¤çå¨ï¼"
-#: gui/qt/kde.cpp:421
-msgid "Jump Backward"
-msgstr "åè·³"
+#: gui/gnash.cpp:557
+msgid " Configured with: "
+msgstr " é
ç½®æ
åµï¼"
-#: gui/pythonmod/gnash-view.cpp:220 gui/Player.cpp:288
-#, c-format
-msgid "Could not create sound handler: %s. Will continue without sound."
-msgstr "æ æ³å建声é³å¤çå¨ï¼%sãå°ç»§ç»ï¼æ²¡æå£°é³ã"
+#: gui/gnash.cpp:558
+msgid " CXXFLAGS: "
+msgstr " CXXFLAGSï¼"
-#: gui/pythonmod/gnash-view.cpp:223 gui/Player.cpp:283
-msgid "Sound requested but no sound support compiled in"
-msgstr "请æ±å£°é³ï¼ä½æªç¼è¯å£°é³æ¯æ"
+#: gui/sdl/sdl_agg_glue.cpp:95
+msgid "SDL_SetVideoMode() failed for SdlAggGlue."
+msgstr "对 SdlAggGlue ç SDL_SetVideoMode() 失败ã"
-#: gui/aos4/aos4.cpp:70
+#: gui/sdl/sdl_agg_glue.cpp:132 gui/haiku/haiku_agg_glue.cpp:416
#, c-format
-msgid "Exception: %s on file %s line %d"
-msgstr "å¼å¸¸ï¼%sï¼å¨æä»¶ %s ç第 %d è¡"
+msgid "SDL-AGG: %i byte offscreen buffer allocated"
+msgstr "SDL-AGGï¼åé
äº %i 个åèçå¹åç¼å"
-#: gui/aos4/aos4.cpp:266 gui/gtk/gtk.cpp:2591
-#, c-format
-msgid ""
-"Attempting to open file %s.\n"
-"NOTE: the file open functionality is not yet implemented!"
-msgstr ""
-"å°è¯æå¼æä»¶ %sã\n"
-"注æï¼æå¼æä»¶åè½å°æªå®ç°ï¼"
+#: gui/fltk/fltk_glue_agg.cpp:50
+msgid "Could not create AGG renderer with pixelformat RGB24"
+msgstr "æ æ³ç¨åç´ æ ¼å¼ RGB24 å建 AGG 渲æå¨"
-#: gui/aos4/aos4.cpp:274
-msgid "Cannot open File Requester!\n"
-msgstr "æ æ³æå¼æä»¶è¯·æ±ç¨åºï¼\n"
+#: gui/fb/fb_glue_ovg.cpp:160
+msgid "Could not create OpenVG renderer"
+msgstr "æ æ³å建 OpenVG 渲æå¨"
-#: gui/aos4/aos4.cpp:609
-msgid "error creating RenderHandler!\n"
-msgstr "å建渲æå¤çå¨åºéï¼\n"
+#: gui/fb/fb_glue_ovg.cpp:172 gui/fb/fb_glue_agg.cpp:76
+msgid "No renderer set!"
+msgstr "æªè®¾ç½®æ¸²æå¨ï¼"
-#: gui/aos4/aos4_cairo_glue.cpp:124
+#: gui/fb/fb_glue_agg.cpp:87
#, c-format
-msgid "Cairo's bit depth must be 16, 24 or 32 bits, not %d."
-msgstr "Cairo ç使·±åº¦å¿
须为 16ã24 æ 32 ä½ï¼èé %dã"
+msgid "No renderer set in %s!"
+msgstr "%s 䏿²¡æè®¾ç½®æ¸²æå¨ï¼"
-#: gui/aos4/aos4_cairo_glue.cpp:212 gui/aos4/aos4_agg_glue.cpp:216
-msgid "Cannot layout Menu!!\n"
-msgstr "æ æ³å¸å±èåï¼ï¼\n"
+#: gui/fb/fb_glue_agg.cpp:130
+msgid "failed to create a render handler for AGG!"
+msgstr "æ æ³å建é对 AGG çæ¸²æå¤çå¨ï¼"
-#: gui/aos4/aos4_cairo_glue.cpp:216 gui/aos4/aos4_agg_glue.cpp:220
-msgid "Cannot create Menu!!\n"
-msgstr "æ æ³å建èåï¼ï¼\n"
+#: gui/fb/fb_glue_agg.cpp:151
+msgid "No Device layer initialized yet!"
+msgstr "å°æªåå§åä»»ä½è®¾å¤å±ï¼"
-#: gui/aos4/aos4_cairo_glue.cpp:219 gui/aos4/aos4_agg_glue.cpp:223
-msgid "Cannot get Visual Info!!\n"
-msgstr "æ æ³è·å¾å¯è§ä¿¡æ¯ï¼ï¼\n"
+#: gui/fb/fb_glue_agg.cpp:182
+msgid "The pixel format of your framebuffer could not be detected."
+msgstr "å°æªæ£æµæ¨ç帧ç¼åçåç´ æ ¼å¼ã"
-#: gui/aos4/aos4_cairo_glue.cpp:222 gui/aos4/aos4_agg_glue.cpp:226
-msgid "Cannot get WB Screen pointer!!\n"
-msgstr "æ æ³è·å¾ WB å±å¹æéï¼ï¼\n"
+#: gui/fb/fb_glue_agg.cpp:191
+msgid "Double buffering disabled"
+msgstr "åç¼å²å·²ç¦ç¨"
-#: gui/aos4/aos4_cairo_glue.cpp:259 gui/aos4/aos4_agg_glue.cpp:264
-msgid "prepDrawingArea() failed.\n"
-msgstr "prepDrawingArea() 失败ã\n"
+#: gui/fb/fb_glue_agg.cpp:194
+msgid "Double buffering enabled"
+msgstr "åç¼å²å·²å¯ç¨"
-#: gui/aos4/aos4_agg_glue.cpp:277
+#: gui/fb/fb_glue_agg.cpp:221
#, c-format
-msgid "AOS4-AGG: %i byte offscreen buffer allocated"
-msgstr "AOS4-AGGï¼å·²åé
%i åèçå¹åç¼å"
-
-#: gui/sdl/sdl_agg_glue.cpp:95
-msgid "SDL_SetVideoMode() failed for SdlAggGlue."
-msgstr "对 SdlAggGlue ç SDL_SetVideoMode() 失败ã"
-
-#: gui/gui.cpp:193
-msgid "Clipboard not yet supported in this GUI"
-msgstr "æ¤ç¨æ·çé¢å°æªå®ç°åªè´´æ¿æ¯æ"
+msgid "No Drawbounds set in %s!"
+msgstr "%s 䏿ªè®¾ç½®ç»å¶è¾¹çï¼"
-#: gui/gui.cpp:199 gui/gui.cpp:211
-msgid "Fullscreen not yet supported in this GUI"
-msgstr "æ¤ç¨æ·çé¢å°æªå®ç°å
¨å±æ¯æ"
+#: gui/fb/fb_glue_gles1.cpp:98
+msgid "EGL: getDisplay ok"
+msgstr "EGLï¼getDisplay æ£å¸¸"
-#: gui/gui.cpp:205
-msgid "Window resize not yet supported in this GUI"
-msgstr "æ¤ç¨æ·çé¢å°æªå®ç°å¯¹è°æ´çªå£å¤§å°çæ¯æ"
+#: gui/fb/fb_glue_gles1.cpp:104
+msgid "EGL: initialize ok"
+msgstr "EGLï¼åå§å æ£å¸¸"
-#: gui/gui.cpp:229 gui/gui.cpp:242
-msgid "Menu show/hide not yet supported in this GUI"
-msgstr "æ¤ç¨æ·çé¢å°æªå®ç°å¯¹èåæ¾ç¤º/éèçæ¯æ"
+#: gui/fb/fb_glue_gles1.cpp:112
+msgid "EGL: config ok"
+msgstr "EGLï¼é
ç½® æ£å¸¸"
-#: gui/gui.cpp:235
-msgid "Mouse show/hide not yet supported in this GUI"
-msgstr "æ¤ç¨æ·çé¢å°æªå®ç°å¯¹é¼ æ æ¾ç¤º/éèçæ¯æ"
+#: gui/fb/fb_glue_gles1.cpp:121
+msgid "EGL: surface ok"
+msgstr "EGLï¼è¡¨é¢ æ£å¸¸"
-#: gui/gui.cpp:282
-msgid "Can't update stage matrix till VM is initialized"
-msgstr ""
+#: gui/fb/fb_glue_gles1.cpp:129
+msgid "EGL: context ok"
+msgstr "EGLï¼ä¸ä¸æ æ£å¸¸"
-#: gui/gui.cpp:334
-#, c-format
-msgid "Invalid scaleMode %d"
-msgstr "æ æç scaleMode %d"
+#: gui/fb/fb_glue_gles1.cpp:137
+msgid "EGL: current ok"
+msgstr "EGLï¼å½å æ£å¸¸"
-#: gui/gui.cpp:374
+#: gui/fb/fb.cpp:257
#, c-format
-msgid "Invalid horizontal align %d"
-msgstr "æ æçæ°´å¹³å¯¹é½ %d"
+msgid "No renderer! %s not supported."
+msgstr "æ æ¸²æå¨ï¼%s ä¸è¢«æ¯æã"
-#: gui/gui.cpp:405
-#, c-format
-msgid "Invalid vertical align %d"
-msgstr "æ æçç«ç´å¯¹é½ %d"
+#: gui/fb/fb.cpp:269
+msgid "Found no accessible User mode input event device"
+msgstr "æ¾ä¸å°å¯è®¿é®çç¨æ·æ¨¡å¼è¾å
¥äºä»¶è®¾å¤"
-#: gui/gui.cpp:900
-#, fuzzy
-msgid "GUI is in stop mode, won't start application"
-msgstr "ç¨æ·çé¢å¨åæ¢æ¨¡å¼ï¼ä¸ä¼å¯å¨åºç¨ç¨åº"
+#: gui/fb/fb.cpp:279
+msgid "Found no accessible input event devices"
+msgstr "æ¾ä¸å°å¯è®¿é®çè¾å
¥äºä»¶è®¾å¤"
-#: gui/gui.cpp:1261
-#, c-format
-msgid "This gui didn't override 'yesno', assuming 'yes' answer to question: %s"
-msgstr ""
+#: gui/fb/fb.cpp:292
+msgid "WARNING: Mouse support may conflict with the input event support."
+msgstr "è¦åï¼é¼ æ æ¯æå¯è½ä¸è¾å
¥äºä»¶æ¯æå²çªã"
-#: gui/gui.cpp:1270
-msgid "Gui::setQuality called before a movie_root was available"
-msgstr "å¨ movie_root å¯ç¨åè°ç¨äº Gui::setQuality"
+#: gui/fb/fb.cpp:306
+msgid "Enabling Touchscreen support."
+msgstr "å¯ç¨è§¦æ¸å±æ¯æã"
-#: gui/gui.cpp:1280
-msgid "Gui::getQuality called before a movie_root was available"
-msgstr "å¨ movie_root å¯ç¨åè°ç¨äº Gui::getQuality"
+#: gui/fb/fb.cpp:311
+msgid "WARNING: Babbage Tablet support disabled as it conflicts with TSlib"
+msgstr "è¦åï¼Babbage å¹³æ¿æ¯æå·²ç¦ç¨ï¼ä¸ TSlib å²çª"
-#: gui/Player.cpp:131
-msgid "GUI ExternalInterface.Pan event"
-msgstr "ç¨æ·çé¢ ExternalInterface.Pan äºä»¶"
+#: gui/fb/fb.cpp:313
+msgid "Enabling Babbage Touchscreen support"
+msgstr "å¯ç¨ Babbage 触æ¸å±æ¯æ"
-#: gui/Player.cpp:143
-msgid "GUI ExternalInterface.SetZoomRect event"
-msgstr "ç¨æ·çé¢ ExternalInterface.SetZoomRect äºä»¶"
+#: gui/fb/fb.cpp:318
+msgid "Enabling Power Button support"
+msgstr "å¯ç¨çµæºæé®æ¯æ"
-#: gui/Player.cpp:151
-msgid "GUI ExternalInterface.Zoom event"
-msgstr "ç¨æ·çé¢ ExternalInterface.Zoom äºä»¶"
+#: gui/fb/fb.cpp:492
+msgid "This GUI does not yet support menus"
+msgstr "æ¤ç¨æ·çé¢å°ä¸æ¯æèå"
-#: gui/Player.cpp:169
-#, c-format
-msgid "Unhandled callback %s with arguments %s"
-msgstr "æªå¤ççåè° %sï¼åæ° %s"
+#: gui/fb/fb.cpp:498
+msgid "This GUI does not yet support a mouse pointer"
+msgstr "æ¤ç¨æ·çé¢å°ä¸æ¯æé¼ æ æé"
-#: gui/Player.cpp:434
-msgid "Non-existent media handler %1% specified"
-msgstr "æå®äºä¸åå¨çåªä½å¤çå¨ %1%"
+#: gui/fb/fb.cpp:571
+msgid "Could not detect controlling TTY"
+msgstr "æ æ³æ£æµæ§å¶ç»ç«¯(TTY)"
-#: gui/Player.cpp:545
+#: gui/fb/fb.cpp:580 gui/fb/fb.cpp:619 gui/fb/fb.cpp:653 gui/fb/fb.cpp:706
#, c-format
-msgid "Movie Frame Rate is %d, adjusting delay"
-msgstr "å½±ç帧ç为 %dï¼è°æ´å»¶è¿"
+msgid "Could not open %s"
+msgstr "æ æ³æå¼ %s"
-#: gui/Player.cpp:682
-msgid "Got unexpected argument type for message %1%"
-msgstr "æ¶æ¯ %1% çåæ°ç±»åå¼å¸¸"
+#: gui/fb/fb.cpp:586
+msgid "Could not get current VT state"
+msgstr "æ æ³è·å¾å½åç VT ç¶æ"
-#: gui/Player.cpp:717
-#, c-format
-msgid ""
-"Could only write %d bytes over %d required to user-provided host requests fd "
-"%d"
-msgstr ""
-"åªè½åç¨æ·æä¾ç主æºè¯·æ±æä»¶æè¿°ç¬¦ %3$d åå
¥ %1$d 个åèï¼èéè¦æ±ç %2$d 个"
+#: gui/fb/fb.cpp:599
+msgid "Could not request a new VT"
+msgstr "æ æ³è¯·æ±æ°ç VT"
-#: gui/Player.cpp:773
+#: gui/fb/fb.cpp:613 gui/fb/fb.cpp:647 gui/fb/fb.cpp:700
#, c-format
-msgid "FsCommand exec called with argument %s"
-msgstr "è¿è¡äº FsCommand exec è°ç¨ï¼åæ° %s"
+msgid "Could not find device for VT number %d"
+msgstr "æ¾ä¸å°å¯¹åº VT å· %d ç设å¤"
-#: gui/Player.cpp:790
+#: gui/fb/fb.cpp:624 gui/fb/fb.cpp:711
#, c-format
-msgid "FsCommand trapallkeys called with argument %s"
-msgstr "è¿è¡äº FsCommand trapallkeys è°ç¨ï¼åæ° %s"
+msgid "Could not activate VT number %d"
+msgstr "æ æ³æ¿æ´» VT å· %d"
-#: gui/Player.cpp:796
+#: gui/fb/fb.cpp:630 gui/fb/fb.cpp:719
#, c-format
-msgid "FsCommand '%s(%s)' not handled internally"
-msgstr "FsCommandâ%s(%s)âæªè¿è¡å
é¨å¤ç"
+msgid "Error waiting for VT %d becoming active"
+msgstr "çç VT %d æ¿æ´»æ¶åºé"
-#: gui/gtk/gtk_glue_cairo.cpp:223
-msgid "Cairo: failed to create a rendering buffer!"
-msgstr "Cairoï¼å建渲æç¼å失败ï¼"
+#: gui/fb/fb.cpp:661
+#, c-format
+msgid "Could not attach controlling terminal (%s)"
+msgstr "æ æ³éå æ§å¶ç»ç«¯(%s)"
-#: gui/gtk/gtk_glue_ovg.cpp:182
-msgid "Could not create OPENVG renderer"
-msgstr "æ æ³å建 OPENVG 渲æå¨ï¼"
+#: gui/fb/fb.cpp:669
+msgid "Could not query current keyboard mode on VT"
+msgstr "æ æ³è¯·æ± VT ä¸çå½åé®ç模å¼"
-#: gui/gtk/gtk_glue_ovg.cpp:265 gui/gtk/gtk_glue_ovg.cpp:282
-msgid "No off screen buffer!"
-msgstr "æ å¹åç¼åï¼"
+#: gui/fb/fb.cpp:673
+msgid "Could not switch to graphics mode on new VT"
+msgstr "卿° VT 䏿 æ³åæ¢å°å¾å½¢æ¨¡å¼"
-#: gui/gtk/gtk_glue_ovg.cpp:400
-#, c-format
-msgid "eglGetConfigs() failed to retrive the configs (error %s)"
-msgstr "eglGetConfigs() æ æ³ååé
ç½®(é
ç½® %s)"
+#: gui/fb/fb.cpp:728
+msgid "Could not restore keyboard mode"
+msgstr "æ æ³æ¢å¤é®ç模å¼"
-#: gui/gtk/gtk_glue_agg_vaapi.cpp:163
-msgid "WARNING: failed to create VA-API display."
-msgstr "è¦åï¼å建 VA-API æ¾ç¤ºå¤±è´¥ã"
+#: gui/dump/dump.cpp:118
+msgid "Ignoring request to display in X11 window"
+msgstr "å¿½ç¥æ¾ç¤ºå¨ X11 çªå£ç请æ±"
-#: gui/gtk/gtk_glue_agg_vaapi.cpp:204
-#, c-format
-msgid ""
-"GTK-AGG: Unknown RGB format %s reported by VA-API.Please report this to the "
-"gnash-dev mailing list."
-msgstr ""
-"GTK-AGGï¼VA-API æ¥åäºæªç¥ç RGB æ ¼å¼ %sã请å gnash-dev é®ä»¶å表æ¥åè¿ä¸é®"
-"é¢ã"
+#: gui/dump/dump.cpp:129 gui/haiku/haiku.cpp:384
+msgid "# FATAL: No filename given with -D argument."
+msgstr "# è´å½é误ï¼-D åæ°æ²¡æç»å®æä»¶åã"
-#: gui/gtk/gtk_glue_agg_vaapi.cpp:231 gui/gtk/gtk_glue_agg_vaapi.cpp:289
-msgid "failed to map VA-API image."
-msgstr "æ å° VA-API å¾å失败ã"
+#: gui/dump/dump.cpp:145
+msgid "# FATAL: No sleep ms value given with -S argument."
+msgstr "# è´ä½¿é误ï¼-S åæ°æ²¡æç»å®ç¡ç çæ¯«ç§å¼ã"
-#: gui/gtk/gtk_glue_agg_vaapi.cpp:237
-msgid "failed to associate VA-API subpicture."
-msgstr "å
³è VA-API åå¾(subpicture)失败ã"
+#: gui/dump/dump.cpp:156
+msgid "# FATAL: No trigger value given with -T argument.\n"
+msgstr "# è´ä½¿é误ï¼-T åæ°æ²¡æç»å®è§¦åå¼ã\n"
-#: gui/gtk/gtk_glue_agg_vaapi.cpp:371
+#: gui/dump/dump.cpp:353
#, c-format
-msgid "failed to setup video window for surface 0x%08x."
-msgstr "æ æ³ä¸ºè¡¨é¢ 0x%08x 设置è§é¢çªå£ã"
+msgid "Unable to write file '%s'."
+msgstr "æ æ³åæä»¶â%sâ"
-#: gui/gtk/gtk_glue_agg_vaapi.cpp:378
+#: gui/ScreenShotter.cpp:99
#, c-format
-msgid "failed to associate subpicture to surface 0x%08x."
-msgstr "æ æ³å°åå¾(subpicture)å
³èå°è¡¨é¢ 0x%08xã"
-
-#: gui/gtk/gtk.cpp:159
-msgid "Failed to initialize X threading support\n"
-msgstr "åå§å X çº¿ç¨æ¯æå¤±è´¥\n"
-
-#: gui/gtk/gtk.cpp:202
-msgid "This system lacks a hardware OpenGL driver!"
-msgstr "æ¤ç³»ç»ç¼ºå°ç¡¬ä»¶ OpenGL 驱å¨ï¼"
+msgid "Failed to open screenshot file \"%s\"!"
+msgstr "æ æ³æå¼æªå±æä»¶â%sâï¼"
-#: gui/gtk/gtk.cpp:223
-msgid "Click to play"
-msgstr "ç¹å»ææ¾"
+#: gui/qt/Qt4GlueAgg.cpp:115
+msgid "Could not create AGG renderer with pixelformat ABGR32"
+msgstr "æ æ³ä»¥åç´ æ ¼å¼ ABGR32 å建 AGG 渲æå¨"
-#: gui/gtk/gtk.cpp:612
-#, c-format
-msgid "Advance interval timer set to %d ms (~ %d FPS)"
-msgstr "é«çº§å
é¨å®æ¶å¨è®¾ç½®ä¸º %d 毫ç§(约 %d FPS)"
+#: gui/qt/kde.cpp:413
+msgid "Play Movie"
+msgstr "ææ¾å½±ç"
-#: gui/gtk/gtk.cpp:686
-msgid "Sound"
-msgstr "声é³"
+#: gui/qt/kde.cpp:414
+msgid "Pause Movie"
+msgstr "æåå½±ç"
-#: gui/gtk/gtk.cpp:1274
-msgid "_Network"
-msgstr "ç½ç»(_N)"
+#: gui/qt/kde.cpp:415
+msgid "Stop Movie"
+msgstr "忢影ç"
-#: gui/gtk/gtk.cpp:1286
-msgid "Network timeout in seconds (0 for no timeout):"
-msgstr "ç½ç»è¶
æ¶ç§æ°(0 为æ è¶
æ¶)ï¼"
+#: gui/qt/kde.cpp:418
+msgid "Step Forward"
+msgstr "æ¥è¿"
-#: gui/gtk/gtk.cpp:1305
-msgid "_Logging"
-msgstr "æ¥å¿è®°å½(_L)"
+#: gui/qt/kde.cpp:419
+msgid "Step Backward"
+msgstr "æ¥é"
-#: gui/gtk/gtk.cpp:1314
-msgid "Verbosity level:"
-msgstr "详尽ç¨åº¦ï¼"
+#: gui/qt/kde.cpp:420
+msgid "Jump Forward"
+msgstr "åè·³"
-#: gui/gtk/gtk.cpp:1327
-msgid "Log to _file"
-msgstr "è®°å½å°æä»¶(_F)"
+#: gui/qt/kde.cpp:421
+msgid "Jump Backward"
+msgstr "åè·³"
-#: gui/gtk/gtk.cpp:1333
-msgid "Logfile name:"
-msgstr "æ¥å¿æä»¶åï¼"
+#: gui/qt/kde.cpp:423 gui/qt/Qt4Gui.cpp:622
+msgid "Refresh"
+msgstr "å·æ°"
-#: gui/gtk/gtk.cpp:1346
-msgid "Log _parser output"
-msgstr "è®°å½è§£æå¨è¾åº(_P)"
+#: gui/qt/kde.cpp:424 gui/qt/Qt4Gui.cpp:593
+msgid "Quit Gnash"
+msgstr "éåº Gnash"
-#: gui/gtk/gtk.cpp:1354
-msgid "Log SWF _actions"
-msgstr "è®°å½ SWF æä½(_A)"
+#: gui/qt/kde_glue_agg.cpp:156
+msgid "Could not create AGG renderer with pixelformat BGRA32"
+msgstr "æ æ³ä»¥åç´ æ ¼å¼ BGRA32 å建 AGG 渲æå¨"
-#: gui/gtk/gtk.cpp:1362
-msgid "Log malformed SWF _errors"
-msgstr "è®°å½æåç SWF é误(_E)"
+#: gui/qt/Qt4Gui.cpp:121
+msgid "Cairo renderer not supported!"
+msgstr "䏿¯æ Cairo 渲æå¨ï¼"
-#: gui/gtk/gtk.cpp:1370
-msgid "Log ActionScript _coding errors"
-msgstr "è®°å½ ActionScript 代ç é误(_C)"
+#: gui/qt/Qt4Gui.cpp:129
+msgid "OpenGL renderer not supported!"
+msgstr "䏿¯æ OpenGL 渲æå¨ï¼"
-#: gui/gtk/gtk.cpp:1386
-msgid "_Security"
-msgstr "å®å
¨(_S)"
+#: gui/qt/Qt4Gui.cpp:137
+msgid "AGG renderer not supported!"
+msgstr "䏿¯æ AGG 渲æå¨ï¼"
-#: gui/gtk/gtk.cpp:1399
-msgid "Connect only to local _host"
-msgstr "åªè¿æ¥æ¬å°ä¸»æº(_H)"
+#: gui/qt/Qt4Gui.cpp:589
+msgid "Properties"
+msgstr "屿§"
-#: gui/gtk/gtk.cpp:1406
-msgid "Connect only to local _domain"
-msgstr "åªè¿æ¥æ¬å°å(_D)"
+#: gui/qt/Qt4Gui.cpp:600
+msgid "Preferences"
+msgstr "é¦é项"
-#: gui/gtk/gtk.cpp:1413
-msgid "Disable SSL _verification"
-msgstr "ç¦ç¨ SSL éªè¯(_V)"
+#: gui/qt/Qt4Gui.cpp:617
+msgid "Restart"
+msgstr "éæ°å¼å§"
-#: gui/gtk/gtk.cpp:1420
-msgid "_Whitelist"
-msgstr "ç½åå(_W)"
+#: gui/qt/Qt4Gui.cpp:626
+msgid "Fullscreen"
+msgstr "å
¨å±"
-#: gui/gtk/gtk.cpp:1429
-msgid "_Blacklist"
-msgstr "é»åå(_B)"
+#: gui/qt/Qt4Gui.cpp:641
+msgid "File"
+msgstr "æä»¶"
-#: gui/gtk/gtk.cpp:1454
-msgid "Do _not write Shared Object files"
-msgstr "ä¸åå
±äº«å¯¹è±¡æä»¶(_N)"
+#: gui/qt/Qt4Gui.cpp:646
+msgid "Edit"
+msgstr "ç¼è¾"
-#: gui/gtk/gtk.cpp:1461
-msgid "Only _access local Shared Object files"
-msgstr "åªè®¿é®æ¬å°çå
±äº«å¯¹è±¡æä»¶(_A)"
+#: gui/qt/Qt4Gui.cpp:650
+msgid "Movie Control"
+msgstr "åªä½æ§å¶"
-#: gui/gtk/gtk.cpp:1468
-msgid "Disable Local _Connection object"
-msgstr "ç¦ç¨æ¬å°è¿æ¥å¯¹è±¡(_C)"
+#: gui/qt/Qt4Gui.cpp:657
+msgid "View"
+msgstr "æ¥ç"
-#: gui/gtk/gtk.cpp:1482
-msgid "_Media"
-msgstr "åªä½(_M)"
+#: gui/qt/Qt4Gui.cpp:739
+msgid "Click to Play"
+msgstr "ç¹å»ææ¾"
-#: gui/gtk/gtk.cpp:1493
-msgid "Use sound _handler"
-msgstr "使ç¨å£°é³å¤çå¨(_H)"
+#: gui/qt/Qt4Gui.cpp:786
+msgid "Logging"
+msgstr "æ¥å¿è®°å½"
-#: gui/gtk/gtk.cpp:1501
-msgid "<b>Media Streams</b>"
-msgstr "<b>åªä½æµ</b>"
+#: gui/qt/Qt4Gui.cpp:792
+msgid "Verbosity level"
+msgstr "详尽ç¨åº¦"
-#: gui/gtk/gtk.cpp:1544
-msgid "_Player"
-msgstr "ææ¾å¨(_P)"
+#: gui/qt/Qt4Gui.cpp:810
+msgid "Log to file"
+msgstr "è®°å½å°æä»¶"
-#: gui/gtk/gtk.cpp:1584
-msgid "<i>If blank, Gnash will detect your OS</i>"
-msgstr "<i>妿ä¸å¡«ï¼Gnash 伿£æµæ¨çæä½ç³»ç»</i>"
+#: gui/qt/Qt4Gui.cpp:817
+msgid "Log parser output"
+msgstr "è®°å½è§£æå¨è¾åº"
-#: gui/gtk/gtk.cpp:1637
-msgid "Max scripts execution time (in seconds):"
-msgstr "èæ¬æ§è¡æé¿æ¶é´(ç§)ï¼"
+#: gui/qt/Qt4Gui.cpp:821
+msgid "Log SWF actions"
+msgstr "è®°å½ SWF æä½"
-#: gui/gtk/gtk.cpp:1656
-msgid "Max scripts recursion limit (stack depth):"
-msgstr "èæ¬éå
¥æå¤§éå¶(æ æ·±åº¦)ï¼"
+#: gui/qt/Qt4Gui.cpp:825
+msgid "Log malformed SWF errors"
+msgstr "è®°å½æåç SWF é误"
-#: gui/gtk/gtk.cpp:1672
-msgid "Lock script limits so that SWF tags can't override"
-msgstr "éå®èæ¬éå¶ï¼ä»¥ä½¿ SWF æ è®°æ æ³è¦ç"
+#: gui/qt/Qt4Gui.cpp:830
+msgid "Log ActionScript coding errors"
+msgstr "è®°å½ ActionScript 代ç é误"
-#: gui/gtk/gtk.cpp:1684
-msgid "Start _Gnash in pause mode"
-msgstr "以æåæ¹å¼å¯å¨ _Gnash"
+#: gui/qt/Qt4Gui.cpp:837
+msgid "Security"
+msgstr "å®å
¨"
-#: gui/gtk/gtk.cpp:1843
-msgid ""
-"This program is free software; you can redistribute it and/or modify\n"
-"it under the terms of the GNU General Public License as published by\n"
-"the Free Software Foundation; either version 3 of the License, or\n"
-"(at your option) any later version.\n"
-"\n"
-"This program is distributed in the hope that it will be useful,\n"
-"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
-"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
-"GNU General Public License for more details.\n"
-"You should have received a copy of the GNU General Public License\n"
-"along with this program; if not, write to the Free Software\n"
-"Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301\n"
-"USA or visit http://www.gnu.org/licenses/."
-msgstr ""
+#: gui/qt/Qt4Gui.cpp:843
+msgid "Connect only to local host"
+msgstr "åªè¿æ¥æ¬å°ä¸»æº"
-#: gui/gtk/gtk.cpp:1859
-msgid "Gnash is the GNU SWF Player based on GameSWF."
-msgstr "Gnash æ¯åºäº GameSWF ç GNU SWF ææ¾å¨ã"
+#: gui/qt/Qt4Gui.cpp:848
+msgid "Connect only to local domain"
+msgstr "åªè¿æ¥æ¬å°å"
-#: gui/gtk/gtk.cpp:1860
-msgid ""
-"\n"
-"Renderer: "
-msgstr ""
-"\n"
-"渲æå¨ï¼"
+#: gui/qt/Qt4Gui.cpp:853
+msgid "Disable SSL verification"
+msgstr "ç¦ç¨ SSL éªè¯"
-#: gui/gtk/gtk.cpp:1862
-msgid ""
-"\n"
-"Hardware Acceleration: "
-msgstr ""
-"\n"
-"硬件å éï¼"
+#: gui/qt/Qt4Gui.cpp:867
+msgid "Do not write Shared Object files"
+msgstr "ä¸åå
±äº«å¯¹è±¡æä»¶"
-#: gui/gtk/gtk.cpp:1864
-msgid ""
-"\n"
-"GUI: "
-msgstr ""
-"\n"
-"ç¨æ·çé¢ï¼"
+#: gui/qt/Qt4Gui.cpp:873
+msgid "Only access local Shared Object files"
+msgstr "åªè®¿é®æ¬å°çå
±äº«å¯¹è±¡æä»¶"
-#: gui/gtk/gtk.cpp:1866
-msgid ""
-"\n"
-"Media: "
-msgstr ""
-"\n"
-"åªä½ï¼"
+#: gui/qt/Qt4Gui.cpp:878
+msgid "Disable Local Connection object"
+msgstr "ç¦ç¨æ¬å°è¿æ¥å¯¹è±¡"
-#: gui/gtk/gtk.cpp:1896
-msgid "translator-credits"
-msgstr "Wylmer Wang <wantinghard at gmail.com>"
+#: gui/qt/Qt4Gui.cpp:885
+msgid "Network"
+msgstr "ç½ç»"
-#: gui/gtk/gtk.cpp:1923
-msgid "_File"
-msgstr "æä»¶(_F)"
+#: gui/qt/Qt4Gui.cpp:891
+msgid "Network timeout in seconds"
+msgstr "ç½ç»è¶
æ¶çç§æ°"
-#: gui/gtk/gtk.cpp:1976
-msgid "_Edit"
-msgstr "ç¼è¾(_E)"
+#: gui/qt/Qt4Gui.cpp:903
+msgid "Media"
+msgstr "åªä½"
-#: gui/gtk/gtk.cpp:1996
-msgid "_Help"
-msgstr "帮å©(_H)"
+#: gui/qt/Qt4Gui.cpp:909
+msgid "Use sound handler"
+msgstr "使ç¨å£°é³å¤çå¨"
-#: gui/gtk/gtk.cpp:2016
-msgid "_View"
-msgstr "æ¥ç(_V)"
+#: gui/qt/Qt4Gui.cpp:932
+msgid "Player"
+msgstr "ææ¾å¨"
-#: gui/gtk/gtk.cpp:2024
-msgid "Redraw"
-msgstr "éç»"
+#: gui/qt/Qt4Gui.cpp:949 gui/qt/Qt4Gui.cpp:1022
+msgid "<Autodetect>"
+msgstr "<èªå¨æ£æµ>"
-#: gui/gtk/gtk.cpp:2034 gui/gtk/gtk.cpp:2039
-msgid "Toggle fullscreen"
-msgstr "忢å
¨å±"
+#: gui/qt/Qt4Gui.cpp:974
+msgid "Start Gnash in pause mode"
+msgstr "以æåæ¹å¼å¯å¨ Gnash"
-#: gui/gtk/gtk.cpp:2048
-msgid "Show updated ranges"
-msgstr "æ¾ç¤ºå·²æ´æ°çèå´"
+#: gui/gui.cpp:194
+msgid "Clipboard not yet supported in this GUI"
+msgstr "æ¤ç¨æ·çé¢å°æªå®ç°åªè´´æ¿æ¯æ"
-#: gui/gtk/gtk.cpp:2067
-msgid "_Quality"
-msgstr "è´¨é(_Q)"
+#: gui/gui.cpp:200 gui/gui.cpp:212
+msgid "Fullscreen not yet supported in this GUI"
+msgstr "æ¤ç¨æ·çé¢å°æªå®ç°å
¨å±æ¯æ"
-#: gui/gtk/gtk.cpp:2077
-msgid "Low"
-msgstr "ä½"
+#: gui/gui.cpp:206
+msgid "Window resize not yet supported in this GUI"
+msgstr "æ¤ç¨æ·çé¢å°æªå®ç°å¯¹è°æ´çªå£å¤§å°çæ¯æ"
-#: gui/gtk/gtk.cpp:2083
-msgid "Medium"
-msgstr "ä¸"
+#: gui/gui.cpp:230 gui/gui.cpp:243
+msgid "Menu show/hide not yet supported in this GUI"
+msgstr "æ¤ç¨æ·çé¢å°æªå®ç°å¯¹èåæ¾ç¤º/éèçæ¯æ"
-#: gui/gtk/gtk.cpp:2089
-msgid "High"
-msgstr "é«"
+#: gui/gui.cpp:236
+msgid "Mouse show/hide not yet supported in this GUI"
+msgstr "æ¤ç¨æ·çé¢å°æªå®ç°å¯¹é¼ æ æ¾ç¤º/éèçæ¯æ"
-#: gui/gtk/gtk.cpp:2095
-msgid "Best"
-msgstr "æä½³"
+#: gui/gui.cpp:283
+msgid "Can't update stage matrix till VM is initialized"
+msgstr "æ æ³æ´æ°å±çº§ç©éµï¼ç´å°èææºåå§å宿"
-#: gui/gtk/gtk.cpp:2108
-msgid "Movie _Control"
-msgstr "å½±çæ§å¶(_C)"
+#: gui/gui.cpp:335
+#, c-format
+msgid "Invalid scaleMode %d"
+msgstr "æ æç scaleMode %d"
-#: gui/gtk/gtk.cpp:2275 gui/gtk/gtk.cpp:2276
+#: gui/gui.cpp:375
#, c-format
-msgid "Couldn't find pixmap file: %s"
-msgstr "æ¾ä¸å°åç´ æ å°(pixmap)æä»¶ï¼%s"
+msgid "Invalid horizontal align %d"
+msgstr "æ æçæ°´å¹³å¯¹é½ %d"
-#: gui/gtk/gtk.cpp:2282
+#: gui/gui.cpp:406
#, c-format
-msgid "Failed to load pixbuf file: %s: %s"
-msgstr "å è½½ pixbuf æä»¶å¤±è´¥ï¼%sï¼%s"
+msgid "Invalid vertical align %d"
+msgstr "æ æçç«ç´å¯¹é½ %d"
-#: gui/gtk/gtk.cpp:2608 gui/gtk/gtk.cpp:2621
-msgid "Open file"
-msgstr "æå¼æä»¶"
+#: gui/gui.cpp:903
+#, fuzzy
+msgid "GUI is in stop mode, won't start application"
+msgstr "ç¨æ·çé¢å¨åæ¢æ¨¡å¼ï¼ä¸ä¼å¯å¨åºç¨ç¨åº"
-#: gui/gtk/gtk_glue_gtkglext.cpp:72
-msgid ""
-"Cannot find the double-buffered visual.\n"
-"Trying single-buffered visual."
-msgstr ""
-"æ¾ä¸å°åç¼å²çè§å¾ã\n"
-"请å°è¯åç¼å²è§å¾ã"
+#: gui/gui.cpp:1266
+#, fuzzy, c-format
+msgid "This GUI didn't override 'yesno', assuming 'yes' answer to question: %s"
+msgstr "è¯¥ç¨æ·çé¢ä¸è½éå 'yesno', é®é¢ççæ¡å设为 'yes': %s"
-#: gui/gtk/gtk_glue_gtkglext.cpp:78
-msgid "No appropriate OpenGL-capable visual found."
-msgstr "æªæ¾å°åéçè½ OpenGL 渲æçè§å¾ã"
+#: gui/gui.cpp:1275
+msgid "Gui::setQuality called before a movie_root was available"
+msgstr "å¨ movie_root å¯ç¨åè°ç¨äº Gui::setQuality"
+
+#: gui/gui.cpp:1285
+msgid "Gui::getQuality called before a movie_root was available"
+msgstr "å¨ movie_root å¯ç¨åè°ç¨äº Gui::getQuality"
+
+#: gui/haiku/haiku.cpp:141
+msgid "spawn_thread failed"
+msgstr "spawn_thread 失败"
+
+#: gui/haiku/haiku.cpp:144
+msgid "resume_thread failed"
+msgstr "resume_thread 失败"
+
+#: gui/haiku/haiku.cpp:157
+#, c-format
+msgid "pulses thread returned %d"
+msgstr "èå²(pulses)线ç¨è¿å %d"
+
+#: gui/haiku/haiku.cpp:248
+msgid "send_data failed"
+msgstr "send_data 失败"
#: extensions/mysql/mysql_db.cpp:186
msgid "Couldn't initialize database"
-msgstr ""
+msgstr "æ æ³åå§åæ°æ®åº"
#: extensions/mysql/mysql_db.cpp:191
msgid "Couldn't connect to database"
-msgstr ""
+msgstr "æ æ³è¿æ¥å°æ°æ®åº"
#: extensions/mysql/mysql_db.cpp:217 extensions/mysql/mysql_db.cpp:245
#, c-format
msgid "MySQL connection error: %s"
-msgstr ""
+msgstr "MySQL è¿æ¥é误: %s"
#: extensions/mysql/mysql_db.cpp:224 extensions/mysql/mysql_db.cpp:252
#, c-format
@@ -11490,8 +11642,95 @@ msgid ""
"\t%s\n"
"Query was: %s"
msgstr ""
+"MySQL æ¥è¯¢é误:\n"
+"\t%s\n"
+"æ¥è¯¢æ¯: %s"
#: extensions/mysql/mysql_db.cpp:266
#, c-format
msgid "Field name is: %s: "
-msgstr ""
+msgstr "åæ®µåæ¯: %s:"
+
+#~ msgid "Need semaphore value of 1 for locking. Cannot attach shared memory!"
+#~ msgstr "éå®éè¦ä¿¡å·éçå¼ä¸º1ãä¸è½è¿æ¥å
±äº«å
åè¿æ¥ï¼"
+
+#~ msgid ""
+#~ "AudioDecoderFfmpeg: could not find a complete frame in the last %d bytes "
+#~ "of input (malformed SWF or FLV?)"
+#~ msgstr ""
+#~ "AudioDecoderFfmpegï¼å¨è¾å
¥çæå%dåè䏿 æ³æ¾å°ä¸ä¸ªå®å
¨å¸§(SWFæFLVå¼å¸¸?)"
+
+#~ msgid ""
+#~ "avcodec_decode_audio returned %d. Upgrading ffmpeg/libavcodec might fix "
+#~ "this issue."
+#~ msgstr "avcodec_decode_audioè¿å%dãå级ffmpeg/libavcodecä¹è®¸ä¼è§£å³è¯¥é®é¢ã"
+
+#~ msgid "Needed %d dead iterations to detect audio type."
+#~ msgstr "æ£æµé³é¢ç±»åéè¦ %d 个å®å
¨å¾ªç¯ã"
+
+#~ msgid "MediaParserGst failed to detect any stream types."
+#~ msgstr "MediaParserGstæ²¡ææ£æµå°ä»»ä½æµç±»åã"
+
+#~ msgid ""
+#~ "Invalid fill style %d in fillStyle0Change record for font tag (0 or 1 "
+#~ "valid). Set to 0."
+#~ msgstr ""
+#~ "æ æçå¡«å
æ ·å¼ %d å¨å使 ç¾çfillStyle0Changeè®°å½ä¸ï¼0æ1ææï¼ã设置为"
+#~ "0ã"
+
+#~ msgid ""
+#~ "Invalid fill style %d in fillStyle0Change record - %d defined. Set to 0."
+#~ msgstr "æ æçå¡«å
æ ·å¼ %d å¨fillStyle0Changeè®°å½ä¸ - %d å·²å®ä¹ã设置为0ã"
+
+#~ msgid ""
+#~ "Invalid fill style %d in fillStyle1Change record for font tag (0 or 1 "
+#~ "valid). Set to 0."
+#~ msgstr ""
+#~ "æ æçå¡«å
æ ·å¼ %d å¨å使 ç¾çfillStyle1Changeè®°å½ä¸ï¼0æ1ææï¼ã设置为"
+#~ "0ã"
+
+#~ msgid ""
+#~ "Invalid fill style %d in fillStyle1Change record - %d defined. Set to 0."
+#~ msgstr "æ æçå¡«å
æ ·å¼ %d å¨fillStyle1Changeè®°å½ä¸ - %d å·²å®ä¹ã设置为0ã"
+
+#~ msgid ""
+#~ "Invalid line style %d in lineStyleChange record for font tag (0 or 1 "
+#~ "valid). Set to 0."
+#~ msgstr ""
+#~ "æ æçå¡«å
æ ·å¼ %d å¨å使 ç¾çlineStyleChangeè®°å½ä¸ï¼0æ1ææï¼ã设置为0ã"
+
+#~ msgid "get url: target %s is not a sprite"
+#~ msgstr "åå¾url: ç®æ %s 䏿¯ä¸ä¸ªç²¾çµ"
+
+#~ msgid "Found a %s device for touchscreen input using %s"
+#~ msgstr "æ¾å°ä¸ä¸ª %s 设å¤ï¼ å
¶ä½¿ç¨ %s 触æ¸å±è¾å
¥"
+
+#~ msgid "Framebuffer device uses %d bytes of memory."
+#~ msgstr "帧ç¼å²è®¾å¤ä½¿ç¨ %d åèå
åã"
+
+#~ msgid "Video mode: %dx%d with %d bits per pixel."
+#~ msgstr "è§é¢æ¨¡å¼: %dx%dï¼æ¯åç´ æ¯ç¹æ° %dã"
+
+#~ msgid "Framebuffer stride is: %d."
+#~ msgstr "帧ç¼å²æ¥å¹
为ï¼%dã"
+
+#~ msgid "unable to get protocol entry for %s"
+#~ msgstr "æ æ³å¾å° %s çå议项"
+
+#~ msgid "Server bound to service on %s, port %hd, using fd #%d"
+#~ msgstr "æå¡å¨ç»å®æå¡å¨ %sï¼ç«¯å£ %hdï¼æ£å¨ä½¿ç¨æä»¶æè¿°ç¬¦ #%d"
+
+#~ msgid "Couldn't get the hostname for this machine"
+#~ msgstr "æ æ³å¾å°è¯¥æºå¨ç主æºå"
+
+#~ msgid "The IP address for this client socket is %s"
+#~ msgstr "该客æ·ç«¯å¥æ¥åçIPå°åæ¯ %s"
+
+#~ msgid "ssl!!"
+#~ msgstr "ssl!!"
+
+#~ msgid "Movie Frame Rate is %d, adjusting delay to %dms"
+#~ msgstr "å½±ç帧ç为 %dï¼å°å»¶è¿è°æ´ä¸º %d毫ç§"
+
+#~ msgid "Movie Frame Rate is %d, adjusting delay"
+#~ msgstr "å½±ç帧ç为 %dï¼è°æ´å»¶è¿"
diff --git a/revno.h b/revno.h
index 2180e9f..b99e4c0 100644
--- a/revno.h
+++ b/revno.h
@@ -1,3 +1,3 @@
#define BRANCH_REVNO "2"
#define BRANCH_NICK "master"
-#define COMMIT_ID "070912d"
+#define COMMIT_ID "935df16"
diff --git a/testsuite/DummyCharacter.h b/testsuite/DummyCharacter.h
index 1cb9213..d7ace95 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 {
@@ -59,7 +59,7 @@ public:
virtual void mouseEvent(const event_id&) {}
- InteractiveObject* topmostMouseEntity(boost::int32_t, boost::int32_t)
+ InteractiveObject* topmostMouseEntity(std::int32_t, std::int32_t)
{
return 0;
}
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/FuzzyPixel.h b/testsuite/FuzzyPixel.h
index d5f1b68..d5dfe32 100644
--- a/testsuite/FuzzyPixel.h
+++ b/testsuite/FuzzyPixel.h
@@ -97,7 +97,7 @@ public:
/// @param a
/// The alpha value.
///
- FuzzyPixel(boost::uint8_t r, boost::uint8_t g, boost::uint8_t b, boost::uint8_t a)
+ FuzzyPixel(std::uint8_t r, std::uint8_t g, std::uint8_t b, std::uint8_t a)
:
_col(r, g, b, a),
_tol(0)
diff --git a/testsuite/Makefile.am b/testsuite/Makefile.am
index 3ffc115..6ee3dd8 100644
--- a/testsuite/Makefile.am
+++ b/testsuite/Makefile.am
@@ -161,6 +161,7 @@ libtestsuite_la_CXXFLAGS = \
-I$(top_srcdir)/libcore/parser \
-I$(top_srcdir)/libcore/vm \
$(BOOST_CFLAGS) \
+ $(PTHREAD_CFLAGS) \
$(CAIRO_CFLAGS) \
$(CROSS_CXXFLAGS) \
$(NULL)
diff --git a/testsuite/MovieTester.cpp b/testsuite/MovieTester.cpp
index 5066983..1da2a0b 100644
--- a/testsuite/MovieTester.cpp
+++ b/testsuite/MovieTester.cpp
@@ -35,8 +35,10 @@
#include "Renderer.h"
#include "ManualClock.h" // for use by advance
#include "StreamProvider.h" // for passing to RunResources
+#include "IOChannel.h"
#include "swf/TagLoadersTable.h"
#include "swf/DefaultTagLoaders.h"
+#include "GnashFactory.h"
#ifdef RENDERER_CAIRO
# include "Renderer_cairo.h"
@@ -52,10 +54,9 @@
#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>
//#define SHOW_INVALIDATED_BOUNDS_ON_ADVANCE 1
@@ -86,6 +87,8 @@ namespace {
MovieTester::MovieTester(const std::string& url)
:
+ _x(0),
+ _y(0),
_forceRedraw(true),
_samplesFetched(0)
{
@@ -95,30 +98,29 @@ MovieTester::MovieTester(const std::string& url)
initTestingMediaHandlers();
#endif
- _runResources.reset(new RunResources());
#ifdef USE_SOUND
// Initialize the sound handler(s)
initTestingSoundHandlers();
- _runResources->setSoundHandler(_sound_handler);
+ _runResources.setSoundHandler(_sound_handler);
#endif
#ifdef USE_MEDIA
- _runResources->setMediaHandler(_mediaHandler);
+ _runResources.setMediaHandler(_mediaHandler);
#endif
- boost::shared_ptr<SWF::TagLoadersTable> loaders(new SWF::TagLoadersTable());
+ std::shared_ptr<SWF::TagLoadersTable> loaders(new SWF::TagLoadersTable());
addDefaultLoaders(*loaders);
- _runResources->setTagLoaders(loaders);
+ _runResources.setTagLoaders(loaders);
- boost::shared_ptr<StreamProvider> sp(new StreamProvider(url, url));
+ std::shared_ptr<StreamProvider> sp(new StreamProvider(url, url));
- _runResources->setStreamProvider(sp);
+ _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" ) {
@@ -135,7 +137,7 @@ MovieTester::MovieTester(const std::string& url)
#endif
}
// _url should be always set at this point...
- _movie_def = MovieFactory::makeMovie(urlObj, *_runResources,
+ _movie_def = MovieFactory::makeMovie(urlObj, _runResources,
NULL, false);
}
@@ -143,7 +145,7 @@ MovieTester::MovieTester(const std::string& url)
throw GnashException("Could not load movie from "+url);
}
- _movie_root = new movie_root(_clock, *_runResources);
+ _movie_root.reset(new movie_root(_clock, _runResources));
// Initialize viewport size with the one advertised in the header
_width = unsigned(_movie_def->get_width_pixels());
@@ -168,16 +170,21 @@ MovieTester::MovieTester(const std::string& url)
// ... and render it
render();
}
+
+MovieTester::~MovieTester()
+{
+ MovieFactory::clear();
+}
void
-MovieTester::render(boost::shared_ptr<Renderer> h,
+MovieTester::render(std::shared_ptr<Renderer> h,
InvalidatedRanges& invalidated_regions)
{
// This is a bit dangerous, as there isn't really support for swapping
// renderers during runtime; though the only problem is likely to be
// that CachedBitmaps are missing.
- _runResources->setRenderer(h);
+ _runResources.setRenderer(h);
h->set_invalidated_regions(invalidated_regions);
@@ -280,10 +287,10 @@ MovieTester::advanceClock(unsigned long ms_current)
log_debug("advanceClock(%d) needs to fetch %d samples", ms, toFetch);
- boost::int16_t samples[1024];
+ std::int16_t samples[1024];
while (toFetch) {
unsigned int n = std::min(toFetch, 1024u);
- _sound_handler->fetchSamples((boost::int16_t*)&samples, n);
+ _sound_handler->fetchSamples((std::int16_t*)&samples, n);
toFetch -= n;
}
}
@@ -536,7 +543,7 @@ MovieTester::soundsStopped()
void
MovieTester::initTestingRenderers()
{
- boost::shared_ptr<Renderer> handler;
+ std::shared_ptr<Renderer> handler;
// TODO: add support for testing multiple renderers
// This is tricky as requires changes in the core lib
@@ -579,7 +586,7 @@ MovieTester::initTestingRenderers()
}
void
-MovieTester::addTestingRenderer(boost::shared_ptr<Renderer> h,
+MovieTester::addTestingRenderer(std::shared_ptr<Renderer> h,
const std::string& name)
{
if ( ! h->initTestBuffer(_width, _height) ) {
@@ -604,7 +611,7 @@ MovieTester::addTestingRenderer(boost::shared_ptr<Renderer> h,
// this will be needed till we allow run-time swapping of renderers,
// see above UNTESTED message...
- _runResources->setRenderer(_testingRenderers.back().getRenderer());
+ _runResources.setRenderer(_testingRenderers.back().getRenderer());
}
bool
@@ -634,7 +641,7 @@ MovieTester::initTestingSoundHandlers()
void
MovieTester::initTestingMediaHandlers()
{
-#ifdef USE_SOUND
+#ifdef USE_MEDIA
// TODO: allow selection.
_mediaHandler.reset(media::MediaFactory::instance().get(""));
#endif
diff --git a/testsuite/MovieTester.h b/testsuite/MovieTester.h
index 2584003..8d86a07 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,9 +37,8 @@
#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>
#define check_pixel(x, y, radius, color, tolerance) \
@@ -77,7 +76,7 @@ class TestingRenderer
public:
- TestingRenderer(boost::shared_ptr<Renderer> renderer,
+ TestingRenderer(std::shared_ptr<Renderer> renderer,
const std::string& name)
:
_name(name),
@@ -87,12 +86,12 @@ public:
const std::string& getName() const { return _name; }
/// Return the underlying render handler
- boost::shared_ptr<Renderer> getRenderer() const { return _renderer; }
+ std::shared_ptr<Renderer> getRenderer() const { return _renderer; }
private:
std::string _name;
- boost::shared_ptr<Renderer> _renderer;
+ std::shared_ptr<Renderer> _renderer;
};
/// An utility class for testing movie playback
@@ -115,6 +114,8 @@ public:
///
MovieTester(const std::string& filespec);
+ ~MovieTester();
+
/// Advance the movie by one frame
//
/// Note that the default testing behaviour does not mirror actual
@@ -348,23 +349,24 @@ private:
/// @param invalidated
/// The invalidated ranges as computed by the core lib.
///
- void render(boost::shared_ptr<Renderer> renderer,
+ void render(std::shared_ptr<Renderer> renderer,
InvalidatedRanges& invalidated);
/// Add a testing renderer to the list, initializing it with current
//viewport size
- void addTestingRenderer(boost::shared_ptr<Renderer> h,
+ void addTestingRenderer(std::shared_ptr<Renderer> h,
const std::string& name);
- gnash::movie_root* _movie_root;
+ RunResources _runResources;
+
+ std::shared_ptr<sound::sound_handler> _sound_handler;
- boost::intrusive_ptr<gnash::movie_definition> _movie_def;
+ boost::intrusive_ptr<gnash::movie_definition> _movie_def;
- boost::shared_ptr<sound::sound_handler> _sound_handler;
+ std::shared_ptr<media::MediaHandler> _mediaHandler;
- boost::shared_ptr<media::MediaHandler> _mediaHandler;
+ std::unique_ptr<gnash::movie_root> _movie_root;
- std::auto_ptr<RunResources> _runResources;
/// Current pointer position - X ordinate
int _x;
diff --git a/testsuite/actionscript.all/BitmapData.as b/testsuite/actionscript.all/BitmapData.as
index f7ca139..29756de 100644
--- a/testsuite/actionscript.all/BitmapData.as
+++ b/testsuite/actionscript.all/BitmapData.as
@@ -637,6 +637,14 @@ dest.copyPixels(source, new Rect(-50, -50, 100, 100), new Point(0, 0));
check_equals(dest.getPixel(52, 10), 0xff0000);
check_equals(dest.getPixel(10, 52), 0xff0000);
+// null copypixel argument: should be the same as Point(0,0)
+dest = new flash.display.BitmapData(100, 100, false, 0xff0000);
+dest.copyPixels(source, new Rect(-50, -50, 100, 100), null);
+ check_equals(dest.getPixel(10, 10), 0xff0000);
+ check_equals(dest.getPixel(52, 52), 0x0000ff);
+ check_equals(dest.getPixel(52, 10), 0xff0000);
+ check_equals(dest.getPixel(10, 52), 0xff0000);
+
dest = new flash.display.BitmapData(100, 100, false, 0xff0000);
dest.copyPixels(source, new Rect(0, 0, 100, 100), new Point(50, 50));
check_equals(dest.getPixel(10, 10), 0xff0000);
@@ -1146,6 +1154,6 @@ flash.display.BitmapData.prototype = e;
// END OF TEST
//-------------------------------------------------------------
-totals(406);
+totals(410);
#endif // OUTPUT_VERSION >= 8
diff --git a/testsuite/actionscript.all/Date.as b/testsuite/actionscript.all/Date.as
index 19acf00..174599d 100644
--- a/testsuite/actionscript.all/Date.as
+++ b/testsuite/actionscript.all/Date.as
@@ -692,8 +692,21 @@ check_equals(typeof(foo), 'string');
check_equals(foo.substring(0, 7), 'foo 950');
#endif
+{
+ var o = new Date();
+ o.setUTCMilliseconds(); // sets o's date to NaN
+
+ ASSetPropFlags(o.__proto__, null, 0, 1);
+ for (prop in o) {
+ if (prop.substr(0, 3) == "set" && prop != "setTime") {
+ o[prop](1,2,3,4);
+ check_equals(o.valueOf().toString(), "NaN");
+ }
+ }
+}
+
#if OUTPUT_VERSION == 5
-totals(292);
+totals(307);
#else
-totals (334);
+totals (349);
#endif
diff --git a/testsuite/actionscript.all/Makefile.am b/testsuite/actionscript.all/Makefile.am
index 94ef849..5bc4e46 100644
--- a/testsuite/actionscript.all/Makefile.am
+++ b/testsuite/actionscript.all/Makefile.am
@@ -110,7 +110,6 @@ ASTESTS = \
Random.as \
Selection.as \
SharedObject.as \
- Sound.as \
Stage.as \
String.as \
System.as \
@@ -129,7 +128,6 @@ ASTESTS = \
XMLSocket.as \
rtmp.as \
XMLNode.as \
- LocalConnection.as \
enumerate.as \
case.as \
caseconv.as \
@@ -139,6 +137,14 @@ ASTESTS = \
argstest.as \
$(NULL)
+if BUILD_LIBSOUND
+ASTESTS += Sound.as
+endif
+
+if HAVE_SEMGET
+ASTESTS += LocalConnection.as
+endif
+
if HAVE_PERL
if ENABLE_HAXE
HAXETESTS = \
diff --git a/testsuite/actionscript.all/MovieClipLoader.as b/testsuite/actionscript.all/MovieClipLoader.as
index c683b31..3753a3b 100644
--- a/testsuite/actionscript.all/MovieClipLoader.as
+++ b/testsuite/actionscript.all/MovieClipLoader.as
@@ -394,12 +394,8 @@ function test3()
}
-// Due to a bug in Gnash we must stop() before calling test1.
-// This is because Gnash's version of loadClip is blocking !!
-// TODO: fix it !
-stop();
-
test1();
+stop();
#else // OUTPUT_VERSION < 7
diff --git a/testsuite/actionscript.all/XMLNode.as b/testsuite/actionscript.all/XMLNode.as
index 33d28de..dd92e21 100644
--- a/testsuite/actionscript.all/XMLNode.as
+++ b/testsuite/actionscript.all/XMLNode.as
@@ -422,4 +422,51 @@ xl2 = new XML('<t></t>');
xl1.appendChild(xl2);
xl2.appendChild(xl1);
-check_totals(182);
+check_equals(xl2.parentNode, xl1);
+check_equals(xl1.parentNode, null); // Nothing happened.
+
+doc = new XML('<t></t>');
+parent = doc.createElement("parent");
+child = doc.createElement("child");
+parent.appendChild(child);
+doc.appendChild(parent);
+
+check_equals(doc.toString(), "<t /><parent><child /></parent>");
+
+child.appendChild(parent);
+check_equals(doc.toString(), "<t /><parent><child /></parent>");
+check_equals(child.hasChildNodes(), false);
+
+sibling = doc.createElement("sibling");
+parent.insertBefore(sibling, child);
+check_equals(doc.toString(), "<t /><parent><sibling /><child /></parent>");
+doc.insertBefore(sibling, parent); // Should move sibling
+check_equals(doc.toString(), "<t /><sibling /><parent><child /></parent>");
+parent.appendChild(sibling);
+check_equals(doc.toString(), "<t /><parent><child /><sibling /></parent>");
+parent.appendChild(parent);
+check_equals(doc.toString(), "<t /><parent><child /><sibling /></parent>");
+child.appendChild(parent);
+check_equals(doc.toString(), "<t /><parent><child /><sibling /></parent>");
+grandchild = doc.createElement("grandchild");
+child.appendChild(grandchild);
+check_equals(doc.toString(), "<t /><parent><child><grandchild /></child><sibling /></parent>");
+child.appendChild(parent);
+check_equals(doc.toString(), "<t /><parent><child><grandchild /></child><sibling /></parent>");
+child.insertBefore(child, parent);
+check_equals(doc.toString(), "<t /><parent><child><grandchild /></child><sibling /></parent>");
+grandchild.appendChild(parent);
+check_equals(doc.toString(), "<t /><parent><child><grandchild /></child><sibling /></parent>");
+grandchild.insertBefore(grandchild, parent);
+check_equals(doc.toString(), "<t /><parent><child><grandchild /></child><sibling /></parent>");
+grandchild.insertBefore(grandchild, child);
+check_equals(doc.toString(), "<t /><parent><child><grandchild /></child><sibling /></parent>");
+
+doc1 = new XML("<t />");
+doc1.appendChild(parent);
+check_equals(doc1.toString(), "<t /><parent><child><grandchild /></child><sibling /></parent>");
+check_equals(doc.toString(), "<t />");
+doc1.appendChild(child);
+check_equals(doc1.toString(), "<t /><parent><sibling /></parent><child><grandchild /></child>");
+
+check_totals(201);
diff --git a/testsuite/analyse-results.sh b/testsuite/analyse-results.sh
index fcba838..82cc53e 100755
--- a/testsuite/analyse-results.sh
+++ b/testsuite/analyse-results.sh
@@ -1,12 +1,6 @@
#!/bin/sh
-
-# case "$1" in
-# totals)
-# totals ;;
-# *)
-# exit ;;
-# esac
+mode=$1
total_fail=0;
total_pass=0;
@@ -98,14 +92,16 @@ echo
# For now, return a failure if any XPASS or FAIL occurred
if test ${total_fail} -gt 0 || test ${total_xpass} -gt 0; then
+ rc=1
timing=$(dirname $0)/timingissues
- > ${timing}.tmp
+ > ${timing}.tmp || have_tmpfile=false # distcheck builddir is read-only
if test ${total_fail} -gt 0; then
echo "Unexpected failures follow:"
for s in ${suitefail}; do
echo " --=[ ${s} ]=-- "
- grep -w FAIL ${s}/testrun.sum | tee -a ${timing}.tmp
+ grep -w FAIL ${s}/testrun.sum | \
+ ($have_tmpfile && tee -a ${timing}.tmp)
done
echo
fi
@@ -119,13 +115,16 @@ if test ${total_fail} -gt 0 || test ${total_xpass} -gt 0; then
echo
fi
+ if test "$have_tmpfile" = "false"; then
+ exit $rc
+ fi
+
if test `grep -cf $timing ${timing}.tmp` -gt 0; then
if test `grep -cvf $timing ${timing}.tmp` -eq 0; then
echo "All failures are time-related. Exiting 0."
echo "See http://wiki.gnashdev.org/PredictableLoading"
echo
- rm -f ${timing}.tmp
- exit 0
+ rc=0
else
echo "Time-related failures follow:"
grep -f $timing ${timing}.tmp
@@ -137,8 +136,32 @@ if test ${total_fail} -gt 0 || test ${total_xpass} -gt 0; then
echo
fi
fi
+
+ if [ "$mode" = "verbose" ]; then
+ if test ${total_fail} -gt 0; then
+ echo "Verbose mode enabled. Displaying following files:"
+ echo
+ swfdecfail=$(sed -n 's/^.*in \(.*.trace-gnash\).*in \(.*.log\).*$/\1\n\2/p' ${timing}.tmp)
+ for log in $swfdecfail; do
+ echo " testsuite/swfdec/$log"
+ logfiles="${logfiles} testsuite/swfdec/$log"
+ done
+ for s in ${suitefail}; do
+ echo " ${s}/testrun.log"
+ logfiles="${logfiles} ${s}/testrun.log"
+ done
+ echo
+ for logfile in ${logfiles}; do
+ echo "= = = = = = = [ ${logfile} file - BEGIN ] = = = = = = ="
+ cat ${logfile}
+ echo "= = = = = = = [ ${logfile} file - END ] = = = = = = ="
+ echo
+ done
+ fi
+ fi
+
rm -f ${timing}.tmp
- exit 1
+ exit $rc
else
exit 0
fi
diff --git a/testsuite/check.h b/testsuite/check.h
index 81698db..eb4571d 100644
--- a/testsuite/check.h
+++ b/testsuite/check.h
@@ -117,4 +117,15 @@ TestState _runtest;
} \
}
+int trymain(int argc, char *argv[]);
+#define TRYMAIN(runtest) \
+int main(int argc, char *argv[]) { \
+ try { \
+ return trymain(argc, argv); \
+ } catch (std::exception const& ex) { \
+ (runtest).fail(std::string("caught unexpected exception: ") + ex.what()); \
+ return 1; \
+ } \
+}
+
#endif // _CHECK_H_
diff --git a/testsuite/dejagnu.h b/testsuite/dejagnu.h
index 6742ffd..50903c4 100644
--- a/testsuite/dejagnu.h
+++ b/testsuite/dejagnu.h
@@ -192,6 +192,7 @@ class TestState {
xpassed = 0;
xfailed = 0;
unresolve = 0;
+ laststate = FAILED;
}
~TestState (void) { totals(); }
diff --git a/testsuite/generic-testrunner.sh b/testsuite/generic-testrunner.sh
index 4cf362f..99949b1 100755
--- a/testsuite/generic-testrunner.sh
+++ b/testsuite/generic-testrunner.sh
@@ -62,7 +62,7 @@ for t in ${testfiles}; do
outlog=${top_builddir}/testoutlog.\$$
echo "NOTE: Running test \${t}"
(
- exec > \${outlog}
+ exec > \${outlog} 2>&1
${top_builddir}/utilities/gprocessor -d${delay} -r${runs} -f${advances} -v \${t} || echo "FAILED: gprocessor returned an error while playing '\${t}'"
)
cat \${outlog}
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/IntTypesTest.cpp b/testsuite/libbase.all/IntTypesTest.cpp
index 3f23166..7669fea 100644
--- a/testsuite/libbase.all/IntTypesTest.cpp
+++ b/testsuite/libbase.all/IntTypesTest.cpp
@@ -25,7 +25,7 @@
#include <iostream>
#include <sstream>
#include <cassert>
-#include <boost/cstdint.hpp>
+#include <cstdint>
using namespace std;
@@ -34,14 +34,15 @@ main(int /*argc*/, char** /*argv*/)
{
// Check typedef sizes.
- check_equals (sizeof(boost::uint8_t), 1);
- check_equals (sizeof(boost::uint16_t), 2);
- check_equals (sizeof(boost::uint32_t), 4);
- check_equals (sizeof(boost::uint64_t), 8);
- check_equals (sizeof(boost::int8_t), 1);
- check_equals (sizeof(boost::int16_t), 2);
- check_equals (sizeof(boost::int32_t), 4);
- check_equals (sizeof(boost::int64_t), 8);
-
+ check_equals (sizeof(std::uint8_t), 1);
+ check_equals (sizeof(std::uint16_t), 2);
+ check_equals (sizeof(std::uint32_t), 4);
+ check_equals (sizeof(std::uint64_t), 8);
+ check_equals (sizeof(std::int8_t), 1);
+ check_equals (sizeof(std::int16_t), 2);
+ check_equals (sizeof(std::int32_t), 4);
+ check_equals (sizeof(std::int64_t), 8);
+
+ return 0;
}
diff --git a/testsuite/libbase.all/Makefile.am b/testsuite/libbase.all/Makefile.am
index 911f7ff..de3eb2f 100644
--- a/testsuite/libbase.all/Makefile.am
+++ b/testsuite/libbase.all/Makefile.am
@@ -22,6 +22,8 @@ AUTOMAKE_OPTIONS = dejagnu
LDADD = \
$(top_builddir)/libbase/libgnashbase.la \
$(top_builddir)/librender/libgnashrender.la \
+ $(CROSS_LDFLAGS) \
+ $(BOOST_LIBS) \
$(LIBINTL) \
$(AGG_LIBS) \
$(OPENVG_LIBS) \
@@ -83,12 +85,12 @@ NoSeekFileTest_LDADD = $(LDADD)
URLTest_SOURCES = URLTest.cpp
URLTest_CPPFLAGS = $(AM_CPPFLAGS) \
'-DBUILDDIR="$(abs_builddir)"'
-URLTest_LDADD = $(LDADD) -lboost_system
+URLTest_LDADD = $(LDADD)
RcTest_SOURCES = RcTest.cpp
RcTest_CPPFLAGS = $(AM_CPPFLAGS) \
-DSRCDIR="$(srcdir)"
-RcTest_LDADD = $(LDADD) -lboost_system
+RcTest_LDADD = $(LDADD)
IntTypesTest_SOURCES = IntTypesTest.cpp
IntTypesTest_CPPFLAGS = $(AM_CPPFLAGS) \
diff --git a/testsuite/libbase.all/NoSeekFileTest.cpp b/testsuite/libbase.all/NoSeekFileTest.cpp
index 418a59b..c617c67 100644
--- a/testsuite/libbase.all/NoSeekFileTest.cpp
+++ b/testsuite/libbase.all/NoSeekFileTest.cpp
@@ -22,9 +22,8 @@
#ifdef HAVE_DEJAGNU_H
#include "dejagnu.h"
-#else
-#include "check.h"
#endif
+#include "check.h"
#include "noseek_fd_adapter.h"
#include "IOChannel.h"
@@ -50,10 +49,10 @@ using namespace std;
TestState runtest;
static void
-dump_buffer(const char* label, char* buf, size_t size, ostream& os)
+dump_buffer(const char* label, char* buf, ssize_t size, ostream& os)
{
os << label << ":" << endl;
- for (size_t i=0; i<size; i++) {
+ for (ssize_t i=0; i<size; i++) {
os << '[' << buf[i] << ']';
}
@@ -73,8 +72,8 @@ compare_reads(gnash::IOChannel* reader, int fd, const char* first, const char* s
for(;;)
{
- size_t sz1 = reader->read(buf, CHUNK_SIZE);
- size_t sz2 = read(fd, buf2, CHUNK_SIZE);
+ ssize_t sz1 = reader->read(buf, CHUNK_SIZE);
+ ssize_t sz2 = read(fd, buf2, CHUNK_SIZE);
if ( sz1 != sz2 )
{
@@ -87,7 +86,7 @@ compare_reads(gnash::IOChannel* reader, int fd, const char* first, const char* s
return false;
}
- if ( sz1 == 0 ) {
+ if ( sz1 <= 0 ) {
break;
}
@@ -128,8 +127,9 @@ compare_reads(gnash::IOChannel* reader, int fd, const char* first, const char* s
}
+TRYMAIN(_runtest);
int
-main(int /*argc*/, char** /*argv*/)
+trymain(int /*argc*/, char** /*argv*/)
{
const char* input = INPUT; // Should be the path to this file
const char* cachename = "NoSeekFileTestCache";
@@ -137,22 +137,28 @@ main(int /*argc*/, char** /*argv*/)
int fd = open(input, O_RDONLY);
int raw = open(input, O_RDONLY);
+ if (fd < 0 || raw < 0) {
+ runtest.fail("Unable to open input file");
+ }
+
dup2(fd, 0);
+ close(fd);
- gnash::IOChannel* reader = gnash::noseek_fd_adapter::make_stream(0, cachename);
+ std::unique_ptr<gnash::IOChannel> reader(gnash::noseek_fd_adapter::make_stream(0, cachename));
assert(reader);
- compare_reads(reader, raw, "wrapped", "raw");
+ compare_reads(reader.get(), raw, "wrapped", "raw");
lseek(raw, 0, SEEK_SET);
reader->seek(0);
- compare_reads(reader, raw, "wrapped-rewind", "raw-rewind");
+ compare_reads(reader.get(), raw, "wrapped-rewind", "raw-rewind");
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);
if (sizeof(size_t) != sizeof(std::streamoff)) {
diff --git a/testsuite/libbase.all/Point2dTest.cpp b/testsuite/libbase.all/Point2dTest.cpp
index 819d434..8260539 100644
--- a/testsuite/libbase.all/Point2dTest.cpp
+++ b/testsuite/libbase.all/Point2dTest.cpp
@@ -49,7 +49,7 @@ main(int /*argc*/, char** /*argv*/)
check_equals(p.x, 999999);
check_equals(p.y, 1000000);
- boost::int64_t square_dist = 0;
+ std::int64_t square_dist = 0;
square_dist = Point2d::squareDistance(p1, p2);
check_equals(square_dist, 10 * 10);
@@ -64,9 +64,10 @@ main(int /*argc*/, char** /*argv*/)
square_dist = p1.squareDistance(p2);
check_equals(square_dist, 1.0 * 0x8000000 * 0x8000000);
- boost::int32_t dist = 0;
+ std::int32_t dist = 0;
dist = p1.distance(p2);
check_equals(dist, 0x8000000);
+ return 0;
}
diff --git a/testsuite/libbase.all/Range2dTest.cpp b/testsuite/libbase.all/Range2dTest.cpp
index b3bc53a..71e2fc6 100644
--- a/testsuite/libbase.all/Range2dTest.cpp
+++ b/testsuite/libbase.all/Range2dTest.cpp
@@ -333,6 +333,6 @@ main(int /*argc*/, char** /*argv*/)
check( ! fIntRange1.contains(Range2d<int>(8, 8, 10, 11)) );
check( ! fIntRange1.contains(Range2d<int>(8, 8, 11, 11)) );
-
+ return 0;
}
diff --git a/testsuite/libbase.all/RcTest.cpp b/testsuite/libbase.all/RcTest.cpp
index 19ec4ca..4b06569 100644
--- a/testsuite/libbase.all/RcTest.cpp
+++ b/testsuite/libbase.all/RcTest.cpp
@@ -42,9 +42,8 @@
#ifdef HAVE_DEJAGNU_H
#include "dejagnu.h"
-#else
-#include "check.h"
#endif
+#include "check.h"
using namespace std;
using namespace gnash;
@@ -62,8 +61,9 @@ bool nodelay = false; // FIXME: this flag gets set based on
TestState runtest;
+TRYMAIN(runtest);
int
-main (int /*argc*/, char** /*argv*/) {
+trymain (int /*argc*/, char** /*argv*/) {
RcInitFile& rc = RcInitFile::getDefaultInstance();
gnash::LogFile& dbglogfile = gnash::LogFile::getDefaultInstance();
@@ -213,7 +213,7 @@ main (int /*argc*/, char** /*argv*/) {
runtest.fail ("rc.getWhiteList() doesn't have elements");
}
- if (rc.getLCShmKey() == 0xdd3adabd) {
+ if (rc.getLCShmKey() == static_cast<key_t>(0xdd3adabd)) {
runtest.pass ("rc.getLCShmKey() == 0xabcd1234");
} else {
runtest.fail ("rc.getLCShmKey() != 0xabcd1234");
@@ -378,5 +378,6 @@ main (int /*argc*/, char** /*argv*/) {
}
}
+ return 0;
}
diff --git a/testsuite/libbase.all/URLTest.cpp b/testsuite/libbase.all/URLTest.cpp
index 105bb34..18a8b89 100644
--- a/testsuite/libbase.all/URLTest.cpp
+++ b/testsuite/libbase.all/URLTest.cpp
@@ -30,8 +30,9 @@
using namespace std;
using namespace gnash;
+TRYMAIN(_runtest);
int
-main(int /*argc*/, char** /*argv*/)
+trymain(int /*argc*/, char** /*argv*/)
{
//gnash::LogFile& dbglogfile = gnash::LogFile::getDefaultInstance();
//dbglogfile.setVerbosity(2);
@@ -340,5 +341,7 @@ main(int /*argc*/, char** /*argv*/)
check_equals (v66.anchor(), "");
// TODO: Samba paths
+
+ return 0;
}
diff --git a/testsuite/libbase.all/memtest.cpp b/testsuite/libbase.all/memtest.cpp
index 4563da4..c864aab 100644
--- a/testsuite/libbase.all/memtest.cpp
+++ b/testsuite/libbase.all/memtest.cpp
@@ -174,6 +174,7 @@ main (int /*argc*/, char** /*argv*/) {
#else
runtest.untested("No support for mallinfo()");
#endif // end of HAVE_MALLINFO
+ return 0;
}
// Allocate memory and forget to clean it up.
diff --git a/testsuite/libbase.all/snappingrangetest.cpp b/testsuite/libbase.all/snappingrangetest.cpp
index d062331..45ef354 100644
--- a/testsuite/libbase.all/snappingrangetest.cpp
+++ b/testsuite/libbase.all/snappingrangetest.cpp
@@ -225,5 +225,6 @@ main(int /*argc*/, char** /*argv*/)
finSnap4.add(Range2d<int>(40,273, 108,287));
check(finSnap3.contains(finSnap4));
+ return 0;
}
diff --git a/testsuite/libbase.all/string_tableTest.cpp b/testsuite/libbase.all/string_tableTest.cpp
index b517a17..ca537d5 100644
--- a/testsuite/libbase.all/string_tableTest.cpp
+++ b/testsuite/libbase.all/string_tableTest.cpp
@@ -33,8 +33,10 @@
#include "utility.h"
using namespace gnash;
+
+TRYMAIN(_runtest);
int
-main(int /*argc*/, char** /*argv*/)
+trymain(int /*argc*/, char** /*argv*/)
{
string_table st;
@@ -57,5 +59,5 @@ main(int /*argc*/, char** /*argv*/)
check(!equal(st, st.find("AbAb"), st.find("abaB"), false));
check(!equal(st, st.find("AbAb"), st.find("ABAB"), false));
-
+ return 0;
}
diff --git a/testsuite/libcore.all/AsValueTest.cpp b/testsuite/libcore.all/AsValueTest.cpp
index 40f80a2..56e5f40 100644
--- a/testsuite/libcore.all/AsValueTest.cpp
+++ b/testsuite/libcore.all/AsValueTest.cpp
@@ -39,7 +39,6 @@
#include <sys/types.h>
#include <sys/stat.h>
#include <iostream>
-#include <boost/shared_ptr.hpp>
#include <sys/types.h>
#include <sys/stat.h>
@@ -48,6 +47,8 @@
#include <iostream>
#include <string>
+#include "check.h"
+
using namespace gnash;
using namespace std;
@@ -60,8 +61,9 @@ TestState runtest;
LogFile& dbglogfile = LogFile::getDefaultInstance();
RcInitFile& rcfile = RcInitFile::getDefaultInstance();
+TRYMAIN(_runtest);
int
-main(int argc, char *argv[])
+trymain(int argc, char *argv[])
{ const Arg_parser::Option opts[] =
{
{ 'h', "help", Arg_parser::no },
@@ -102,7 +104,7 @@ main(int argc, char *argv[])
const URL url("");
runResources.setStreamProvider(
- boost::shared_ptr<StreamProvider>(new StreamProvider(url, url)));
+ std::shared_ptr<StreamProvider>(new StreamProvider(url, url)));
// Create a bogus movie with swf version 7 support
movie_definition* md = new DummyMovieDefinition(runResources, 7);
@@ -118,6 +120,7 @@ main(int argc, char *argv[])
test_isnan();
test_conversion();
+ return 0;
}
void
diff --git a/testsuite/libcore.all/BitsReaderTest.cpp b/testsuite/libcore.all/BitsReaderTest.cpp
index 7def689..162e178 100644
--- a/testsuite/libcore.all/BitsReaderTest.cpp
+++ b/testsuite/libcore.all/BitsReaderTest.cpp
@@ -40,7 +40,6 @@
#include <fcntl.h>
#include <string.h>
#include <sstream>
-#include <boost/scoped_array.hpp>
using namespace std;
using namespace gnash;
@@ -75,12 +74,13 @@ struct ByteReader
};
+TRYMAIN(_runtest);
int
-main(int /*argc*/, char** /*argv*/)
+trymain(int /*argc*/, char** /*argv*/)
{
ByteReader in(0xAA);
- boost::scoped_array<unsigned char> buf(new unsigned char[1024]);
+ std::unique_ptr<unsigned char[]> buf(new unsigned char[1024]);
in.read(buf.get(), 1024);
@@ -245,10 +245,10 @@ main(int /*argc*/, char** /*argv*/)
/// bits: 10011001 10011001 (0x999999)
- boost::int16_t s16 = s.read_s16(); check_equals(s16, (boost::int16_t)0x9999);
- boost::uint16_t u16 = s.read_u16(); check_equals(u16, (boost::uint16_t)0x9999);
- boost::int32_t s32 = s.read_s32(); check_equals(s32, (boost::int32_t)0x99999999);
- boost::uint32_t u32 = s.read_u32(); check_equals(u32, (boost::uint32_t)0x99999999);
+ std::int16_t s16 = s.read_s16(); check_equals(s16, (std::int16_t)0x9999);
+ std::uint16_t u16 = s.read_u16(); check_equals(u16, (std::uint16_t)0x9999);
+ std::int32_t s32 = s.read_s32(); check_equals(s32, (std::int32_t)0x99999999);
+ std::uint32_t u32 = s.read_u32(); check_equals(u32, (std::uint32_t)0x99999999);
/// bits: 10011001 10011001 10011001 10011001 (0x99999999)
/// -
diff --git a/testsuite/libcore.all/ClassSizes.cpp b/testsuite/libcore.all/ClassSizes.cpp
index f86fe28..3cfed76 100644
--- a/testsuite/libcore.all/ClassSizes.cpp
+++ b/testsuite/libcore.all/ClassSizes.cpp
@@ -56,7 +56,6 @@
#include <cmath>
#include <string>
#include <memory>
-#include <boost/scoped_ptr.hpp>
#include "check.h"
@@ -73,8 +72,8 @@ 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>) \
-(shared_ptr<Property>) (intrusive_ptr<as_object>) (GcResource) \
+(Property*) (unique_ptr<Property>) \
+(std::shared_ptr<Property>) (intrusive_ptr<as_object>) (GcResource) \
(rgba) (SWFMatrix) (SWFRect) (LineStyle) (FillStyle) (SWFCxForm) \
(as_value) \
(DynamicShape)(ShapeRecord)(TextRecord) \
@@ -90,5 +89,6 @@ main(int /*argc*/, char** /*argv*/)
{
std::cout << "Gnash class sizes:\n";
BOOST_PP_SEQ_FOR_EACH(SIZE, _, TYPES)
+ return 0;
}
diff --git a/testsuite/libcore.all/CodeStreamTest.cpp b/testsuite/libcore.all/CodeStreamTest.cpp
index 461b37f..485d616 100644
--- a/testsuite/libcore.all/CodeStreamTest.cpp
+++ b/testsuite/libcore.all/CodeStreamTest.cpp
@@ -45,7 +45,7 @@ main(int /*argc*/, char** /*argv*/)
CodeStream* stream = new CodeStream(std::string(data,10));
//Test read_as30p()
- boost::uint8_t opcode;
+ std::uint8_t opcode;
int i = 0;
while(opcode = stream->read_as3op()){
check_equals(opcode,data[i]);
@@ -80,14 +80,14 @@ main(int /*argc*/, char** /*argv*/)
char newData[6] = {0x5,0xC5,0x0,0x0,0x1,0x2};
CodeStream* streamA = new CodeStream(std::string(newData,6));
- boost::uint8_t byteA = streamA->read_u8();
+ std::uint8_t byteA = streamA->read_u8();
check_equals(byteA,newData[0]);
//Test read_S24.
- boost::int32_t byteB = streamA->read_S24();
+ std::int32_t byteB = streamA->read_S24();
check_equals(byteB,197);
-
+ return 0;
}
diff --git a/testsuite/libcore.all/CxFormTest.cpp b/testsuite/libcore.all/CxFormTest.cpp
index 045c27c..4c71fbf 100644
--- a/testsuite/libcore.all/CxFormTest.cpp
+++ b/testsuite/libcore.all/CxFormTest.cpp
@@ -46,10 +46,10 @@ int main()
check_equals(c.gb, 0);
check_equals(c.ab, 0);
- boost::uint8_t r = 0;
- boost::uint8_t b = 0;
- boost::uint8_t g = 0;
- boost::uint8_t a = 0;
+ std::uint8_t r = 0;
+ std::uint8_t b = 0;
+ std::uint8_t g = 0;
+ std::uint8_t a = 0;
c.transform(r, b, g, a);
check_equals(r, 0);
@@ -95,4 +95,5 @@ int main()
check_equals(+b, 0);
check_equals(+g, 117);
check_equals(+a, 0);
+ return 0;
}
diff --git a/testsuite/libcore.all/DisplayListTest.cpp b/testsuite/libcore.all/DisplayListTest.cpp
index 1bc8c68..dcc6328 100644
--- a/testsuite/libcore.all/DisplayListTest.cpp
+++ b/testsuite/libcore.all/DisplayListTest.cpp
@@ -43,8 +43,9 @@
using namespace std;
using namespace gnash;
+TRYMAIN(_runtest);
int
-main(int /*argc*/, char** /*argv*/)
+trymain(int /*argc*/, char** /*argv*/)
{
gnash::LogFile& dbglogfile = gnash::LogFile::getDefaultInstance();
dbglogfile.setVerbosity();
@@ -54,7 +55,7 @@ main(int /*argc*/, char** /*argv*/)
RunResources ri;
const URL url("");
ri.setStreamProvider(
- boost::shared_ptr<StreamProvider>(new StreamProvider(url, url)));
+ std::shared_ptr<StreamProvider>(new StreamProvider(url, url)));
// Initialize a VM
boost::intrusive_ptr<movie_definition> md5(new DummyMovieDefinition(ri, 5));
@@ -91,6 +92,6 @@ main(int /*argc*/, char** /*argv*/)
dlist2.placeDisplayObject(ch2, 1);
dlist2.placeDisplayObject(ch1, 2);
-
+ return 0;
}
diff --git a/testsuite/libcore.all/EdgeTest.cpp b/testsuite/libcore.all/EdgeTest.cpp
index 6f5048b..a44ae6a 100644
--- a/testsuite/libcore.all/EdgeTest.cpp
+++ b/testsuite/libcore.all/EdgeTest.cpp
@@ -103,5 +103,6 @@ main(int /*argc*/, char** /*argv*/)
check_equals(Edge::pointOnCurve(A, C, B, 0.5), point(27.5, 10));
check_equals(std::sqrt((float)Edge::squareDistancePtCurve(A, C, B, B, 1)), 0);
check_equals(std::sqrt((float)Edge::squareDistancePtCurve(A, C, B, A, 0)), 0);
+ return 0;
}
diff --git a/testsuite/libcore.all/Makefile.am b/testsuite/libcore.all/Makefile.am
index 537959e..589656e 100644
--- a/testsuite/libcore.all/Makefile.am
+++ b/testsuite/libcore.all/Makefile.am
@@ -34,12 +34,12 @@ AM_CPPFLAGS = \
-I$(top_srcdir)/libcore/vm \
$(FFMPEG_CFLAGS) \
$(BOOST_CFLAGS) \
+ $(PTHREAD_CFLAGS) \
$(NULL)
check_PROGRAMS = \
StreamTest \
BitsReaderTest \
- PointTest \
MatrixTest \
EdgeTest \
PropertyListTest \
@@ -92,9 +92,6 @@ StreamTest_LDADD = $(LDADD)
MatrixTest_SOURCES = MatrixTest.cpp
MatrixTest_LDADD = $(LDADD)
-PointTest_SOURCES = PointTest.cpp
-PointTest_LDADD = $(LDADD)
-
EdgeTest_SOURCES = EdgeTest.cpp
EdgeTest_LDADD = $(LDADD)
diff --git a/testsuite/libcore.all/MatrixTest.cpp b/testsuite/libcore.all/MatrixTest.cpp
index f77da41..9b6a5a3 100644
--- a/testsuite/libcore.all/MatrixTest.cpp
+++ b/testsuite/libcore.all/MatrixTest.cpp
@@ -64,14 +64,14 @@ main(int /*argc*/, char** /*argv*/)
// Note: If any of the following tests fails, your boost library
// is bogus or hasn't been installed properly.
//
- check_equals(sizeof(boost::int8_t), 1);
- check_equals(sizeof(boost::uint8_t), 1);
- check_equals(sizeof(boost::int16_t), 2);
- check_equals(sizeof(boost::uint16_t), 2);
- check_equals(sizeof(boost::int32_t), 4);
- check_equals(sizeof(boost::uint32_t), 4);
- check_equals(sizeof(boost::int64_t), 8);
- check_equals(sizeof(boost::uint64_t), 8);
+ check_equals(sizeof(std::int8_t), 1);
+ check_equals(sizeof(std::uint8_t), 1);
+ check_equals(sizeof(std::int16_t), 2);
+ check_equals(sizeof(std::uint16_t), 2);
+ check_equals(sizeof(std::int32_t), 4);
+ check_equals(sizeof(std::uint32_t), 4);
+ check_equals(sizeof(std::int64_t), 8);
+ check_equals(sizeof(std::uint64_t), 8);
//
// Test identity SWFMatrix.
@@ -278,5 +278,6 @@ main(int /*argc*/, char** /*argv*/)
m1_inverse.concatenate(m1);
// the result is expected to be an identity SWFMatrix.
check_equals(m1_inverse, identity);
+ return 0;
}
diff --git a/testsuite/libcore.all/PointTest.cpp b/testsuite/libcore.all/PointTest.cpp
deleted file mode 100644
index 48b5651..0000000
--- a/testsuite/libcore.all/PointTest.cpp
+++ /dev/null
@@ -1,7 +0,0 @@
-
-int
-main(int /*argc*/, char** /*argv*/)
-{
-
-}
-
diff --git a/testsuite/libcore.all/PropFlagsTest.cpp b/testsuite/libcore.all/PropFlagsTest.cpp
index bf1acf4..1b62349 100644
--- a/testsuite/libcore.all/PropFlagsTest.cpp
+++ b/testsuite/libcore.all/PropFlagsTest.cpp
@@ -99,5 +99,6 @@ main(int /*argc*/, char** /*argv*/)
check(i3.get_visible(7));
check(i3.get_visible(8));
check(i3.get_visible(9));
+ return 0;
}
diff --git a/testsuite/libcore.all/PropertyListTest.cpp b/testsuite/libcore.all/PropertyListTest.cpp
index 6ff9473..641dcf6 100644
--- a/testsuite/libcore.all/PropertyListTest.cpp
+++ b/testsuite/libcore.all/PropertyListTest.cpp
@@ -55,8 +55,9 @@ getVal(PropertyList& p, const ObjectURI& k, as_value& val, as_object& obj)
return false;
}
+TRYMAIN(_runtest);
int
-main(int /*argc*/, char** /*argv*/)
+trymain(int /*argc*/, char** /*argv*/)
{
cout << "sizeof(Property): " << sizeof(Property) << endl;
cout << "sizeof(PropertyList): " << sizeof(PropertyList) << endl;
@@ -68,7 +69,7 @@ main(int /*argc*/, char** /*argv*/)
RunResources runResources;
const URL url("");
runResources.setStreamProvider(
- boost::shared_ptr<StreamProvider>(new StreamProvider(url, url)));
+ std::shared_ptr<StreamProvider>(new StreamProvider(url, url)));
boost::intrusive_ptr<movie_definition> md5(
new DummyMovieDefinition(runResources, 5));
@@ -202,5 +203,6 @@ main(int /*argc*/, char** /*argv*/)
check_equals(props.size(), 3);
}
+ return 0;
}
diff --git a/testsuite/libcore.all/SafeStackTest.cpp b/testsuite/libcore.all/SafeStackTest.cpp
index 9524949..9af81fb 100644
--- a/testsuite/libcore.all/SafeStackTest.cpp
+++ b/testsuite/libcore.all/SafeStackTest.cpp
@@ -37,8 +37,9 @@ using namespace gnash;
using std::cout;
using std::endl;
+TRYMAIN(_runtest);
int
-main(int /*argc*/, char** /*argv*/)
+trymain(int /*argc*/, char** /*argv*/)
{
SafeStack<int> st;
@@ -120,5 +121,6 @@ main(int /*argc*/, char** /*argv*/)
st.push(100);
check_equals(st.value(0), 100);
check_equals(st.top(0), 100);
+ return 0;
}
diff --git a/testsuite/libcore.all/StreamTest.cpp b/testsuite/libcore.all/StreamTest.cpp
index 1dd818f..d58cc5d 100644
--- a/testsuite/libcore.all/StreamTest.cpp
+++ b/testsuite/libcore.all/StreamTest.cpp
@@ -28,8 +28,6 @@
#include "check.h"
#endif
-#include <boost/thread/mutex.hpp>
-
#include "IOChannel.h"
#include "SWFStream.h"
#include "log.h"
@@ -106,8 +104,9 @@ struct ByteReader : public IOChannel
};
+TRYMAIN(_runtest);
int
-main(int /*argc*/, char** /*argv*/)
+trymain(int /*argc*/, char** /*argv*/)
{
gnash::LogFile& dbglogfile = gnash::LogFile::getDefaultInstance();
dbglogfile.setVerbosity(1);
@@ -386,13 +385,13 @@ main(int /*argc*/, char** /*argv*/)
/// bits: 10011001 10011001 (0x999999)
- boost::int16_t s16 = s.read_s16(); check_equals(s16, (boost::int16_t)0x9999);
+ std::int16_t s16 = s.read_s16(); check_equals(s16, (std::int16_t)0x9999);
check_equals(s.tell(), 30);
- boost::uint16_t u16 = s.read_u16(); check_equals(u16, (boost::uint16_t)0x9999);
+ std::uint16_t u16 = s.read_u16(); check_equals(u16, (std::uint16_t)0x9999);
check_equals(s.tell(), 32);
- boost::int32_t s32 = s.read_s32(); check_equals(s32, (boost::int32_t)0x99999999);
+ std::int32_t s32 = s.read_s32(); check_equals(s32, (std::int32_t)0x99999999);
check_equals(s.tell(), 36);
- boost::uint32_t u32 = s.read_u32(); check_equals(u32, (boost::uint32_t)0x99999999);
+ std::uint32_t u32 = s.read_u32(); check_equals(u32, (std::uint32_t)0x99999999);
check_equals(s.tell(), 40);
/// bits: 10011001 10011001 10011001 10011001 (0x99999999)
diff --git a/testsuite/libdevice.all/test_dfb.cpp b/testsuite/libdevice.all/test_dfb.cpp
index 41be446..339cf43 100644
--- a/testsuite/libdevice.all/test_dfb.cpp
+++ b/testsuite/libdevice.all/test_dfb.cpp
@@ -139,6 +139,7 @@ main(int argc, char *argv[])
std::cerr << "----------------------" << std::endl;
#endif
+ return 0;
}
// Local Variables:
diff --git a/testsuite/libdevice.all/test_egl.cpp b/testsuite/libdevice.all/test_egl.cpp
index cf25a07..d0df635 100644
--- a/testsuite/libdevice.all/test_egl.cpp
+++ b/testsuite/libdevice.all/test_egl.cpp
@@ -91,6 +91,7 @@ main(int argc, char *argv[])
#endif
#endif
+ return 0;
}
void
diff --git a/testsuite/libdevice.all/test_events.cpp b/testsuite/libdevice.all/test_events.cpp
index b23ae7b..8fa350a 100644
--- a/testsuite/libdevice.all/test_events.cpp
+++ b/testsuite/libdevice.all/test_events.cpp
@@ -67,7 +67,7 @@ main(int argc, char *argv[])
sigaction (SIGALRM, &act, NULL);
bool loop = false;
- std::vector<boost::shared_ptr<InputDevice> > inputs
+ std::vector<std::shared_ptr<InputDevice> > inputs
= InputDevice::scanForDevices();
cerr << "Found " << inputs.size() << " input devices" << endl;
if (inputs.empty()) {
@@ -77,11 +77,11 @@ main(int argc, char *argv[])
loop = true;
}
- std::vector<boost::shared_ptr<InputDevice> >::iterator it;
+ std::vector<std::shared_ptr<InputDevice> >::iterator it;
// check input devices
for (it = inputs.begin(); it != inputs.end(); ++it) {
- boost::shared_ptr<InputDevice> id = *it;
+ std::shared_ptr<InputDevice> id = *it;
cerr << "Found " << id->id() << " device" << endl;
if (id->init()) {
runtest.pass("InputDevice::init()");
@@ -96,20 +96,20 @@ main(int argc, char *argv[])
// This loops endlessly at the frame rate
while (loop) {
- std::vector<boost::shared_ptr<InputDevice> >::iterator it;
+ std::vector<std::shared_ptr<InputDevice> >::iterator it;
// // check input devices
for (it = inputs.begin(); it != inputs.end(); ++it) {
- boost::shared_ptr<InputDevice> id = *it;
+ std::shared_ptr<InputDevice> id = *it;
if (id->check()) {
// FIXME: process the input data
- boost::shared_ptr<InputDevice::input_data_t> ie = id->popData();
+ std::shared_ptr<InputDevice::input_data_t> ie = id->popData();
#if 0
if (ie) {
cerr << "Got data: " << ie->pressed;
cerr << ", " << ie->key << ", " << ie->modifier;
cerr << ", " << ie->x << ", " << ie->y << endl;
// Range check and convert the position
- boost::shared_array<int> coords =
+ std::unique_ptr<int[]> coords =
MouseDevice::convertCoordinates(ie->x, ie->y, 1024, 768);
cerr << "X = " << coords[0] << endl;
cerr << "Y = " << coords[1] << endl;
@@ -126,6 +126,7 @@ main(int argc, char *argv[])
}
std::cerr << std::endl;
+ return 0;
}
// Local Variables:
diff --git a/testsuite/libdevice.all/test_rawfb.cpp b/testsuite/libdevice.all/test_rawfb.cpp
index 93d4614..cfff6e4 100644
--- a/testsuite/libdevice.all/test_rawfb.cpp
+++ b/testsuite/libdevice.all/test_rawfb.cpp
@@ -163,7 +163,7 @@ main(int argc, char *argv[])
long location = 0;
int line_length = rfb.getStride();
- boost::uint8_t *fbp = 0;
+ std::uint8_t *fbp = 0;
fbp = rfb.getFBMemory();
if (fbp > 0) {
@@ -184,6 +184,7 @@ main(int argc, char *argv[])
*(fbp + location + 2) = 200; /* A lot of red */
*(fbp + location + 3) = 0; /* No transparency */
}
+ return 0;
}
// Local Variables:
diff --git a/testsuite/libdevice.all/test_vaapi.cpp b/testsuite/libdevice.all/test_vaapi.cpp
index 290ac54..2544b2f 100644
--- a/testsuite/libdevice.all/test_vaapi.cpp
+++ b/testsuite/libdevice.all/test_vaapi.cpp
@@ -121,6 +121,7 @@ main(int argc, char *argv[])
runtest.fail("VaapiDevice::getDepth()");
}
+ return 0;
}
// Local Variables:
diff --git a/testsuite/libdevice.all/test_x11.cpp b/testsuite/libdevice.all/test_x11.cpp
index 1adaadd..2fb9322 100644
--- a/testsuite/libdevice.all/test_x11.cpp
+++ b/testsuite/libdevice.all/test_x11.cpp
@@ -119,6 +119,7 @@ main(int argc, char *argv[])
runtest.fail("X11Device::getBlueSize()");
}
#endif
+ return 0;
}
// Local Variables:
diff --git a/testsuite/libmedia.all/Makefile.am b/testsuite/libmedia.all/Makefile.am
index b651342..ea2bf0d 100644
--- a/testsuite/libmedia.all/Makefile.am
+++ b/testsuite/libmedia.all/Makefile.am
@@ -21,8 +21,6 @@
AUTOMAKE_OPTIONS = dejagnu
-AM_CPPFLAGS = # -Wall
-
AM_LDFLAGS = \
$(top_builddir)/libbase/libgnashbase.la \
$(top_builddir)/libmedia/libgnashmedia.la \
@@ -39,7 +37,7 @@ endif # ANDROID
localedir = $(datadir)/locale
-INCLUDES = \
+AM_CPPFLAGS = \
-I$(top_srcdir)/testsuite \
-I$(top_srcdir)/libbase \
-I$(top_srcdir)/libmedia \
diff --git a/testsuite/misc-haxe.all/classes.all/media/media.am b/testsuite/misc-haxe.all/classes.all/media/media.am
index 322f86e..9e5558c 100644
--- a/testsuite/misc-haxe.all/classes.all/media/media.am
+++ b/testsuite/misc-haxe.all/classes.all/media/media.am
@@ -37,7 +37,9 @@ MEDIA_TESTS_V9 += media/SoundMixer_as.swf
MEDIA_TESTS_V9 += media/SoundTransform_as.swf
+if BUILD_LIBSOUND
MEDIA_TESTS_V6 += media/Sound_as.swf
+endif
MEDIA_TESTS_V6 += media/Video_as.swf
@@ -51,5 +53,8 @@ EXTRA_DIST += media/Camera_as.hx \
media/SoundLoaderContext_as.hx \
media/SoundMixer_as.hx \
media/SoundTransform_as.hx \
- media/Sound_as.hx \
media/Video_as.hx
+
+if BUILD_LIBSOUND
+EXTRA_DIST += media/Sound_as.hx
+endif
diff --git a/testsuite/misc-haxe.all/classes.all/net/net.am b/testsuite/misc-haxe.all/classes.all/net/net.am
index bc10622..e0f8b42 100644
--- a/testsuite/misc-haxe.all/classes.all/net/net.am
+++ b/testsuite/misc-haxe.all/classes.all/net/net.am
@@ -35,7 +35,9 @@ NET_TESTS_V9 += net/IDynamicPropertyOutput_as.swf
NET_TESTS_V9 += net/IDynamicPropertyWriter_as.swf
+if HAVE_SEMGET
NET_TESTS_V6 += net/LocalConnection_as.swf
+endif
NET_TESTS_V7 += net/NetConnection_as.swf
diff --git a/testsuite/misc-ming.all/BeginBitmapFillRunner.cpp b/testsuite/misc-ming.all/BeginBitmapFillRunner.cpp
index 12f13a8..7890e17 100644
--- a/testsuite/misc-ming.all/BeginBitmapFillRunner.cpp
+++ b/testsuite/misc-ming.all/BeginBitmapFillRunner.cpp
@@ -34,8 +34,9 @@ using namespace gnash;
using namespace gnash::geometry;
using namespace std;
+TRYMAIN(_runtest);
int
-main(int /*argc*/, char** /*argv*/)
+trymain(int /*argc*/, char** /*argv*/)
{
string filename = string(TGTDIR) + string("/") + string(INPUT_FILENAME);
MovieTester tester(filename);
@@ -167,5 +168,6 @@ main(int /*argc*/, char** /*argv*/)
check_pixel(500, 460, 1, white, 2);
check_pixel(460, 500, 1, white, 2);
+ return 0;
}
diff --git a/testsuite/misc-ming.all/BitmapDataTestRunner.cpp b/testsuite/misc-ming.all/BitmapDataTestRunner.cpp
index 5c6cb5e..8ecfa6a 100644
--- a/testsuite/misc-ming.all/BitmapDataTestRunner.cpp
+++ b/testsuite/misc-ming.all/BitmapDataTestRunner.cpp
@@ -34,8 +34,9 @@ using namespace gnash;
using namespace gnash::geometry;
using namespace std;
+TRYMAIN(_runtest);
int
-main(int /*argc*/, char** /*argv*/)
+trymain(int /*argc*/, char** /*argv*/)
{
string filename = string(TGTDIR) + string("/") + string(INPUT_FILENAME);
MovieTester tester(filename);
@@ -195,5 +196,6 @@ main(int /*argc*/, char** /*argv*/)
tester.click();
tester.advance();
+ return 0;
}
diff --git a/testsuite/misc-ming.all/ButtonEventsTest-Runner.cpp b/testsuite/misc-ming.all/ButtonEventsTest-Runner.cpp
index d489847..70b41fa 100644
--- a/testsuite/misc-ming.all/ButtonEventsTest-Runner.cpp
+++ b/testsuite/misc-ming.all/ButtonEventsTest-Runner.cpp
@@ -225,8 +225,9 @@ test_mouse_activity(MovieTester& tester, const TextField* text, const TextField*
}
}
+TRYMAIN(_runtest);
int
-main(int /*argc*/, char** /*argv*/)
+trymain(int /*argc*/, char** /*argv*/)
{
//string filename = INPUT_FILENAME;
string filename = string(TGTDIR) + string("/") + string(INPUT_FILENAME);
@@ -323,5 +324,6 @@ main(int /*argc*/, char** /*argv*/)
check_equals(root->getPlayState(), MovieClip::PLAYSTATE_STOP);
check_equals(root->get_current_frame(), 6);
+ return 0;
}
diff --git a/testsuite/misc-ming.all/ButtonPropertiesTestRunner.cpp b/testsuite/misc-ming.all/ButtonPropertiesTestRunner.cpp
index 3ce61fe..8fc48b0 100644
--- a/testsuite/misc-ming.all/ButtonPropertiesTestRunner.cpp
+++ b/testsuite/misc-ming.all/ButtonPropertiesTestRunner.cpp
@@ -35,8 +35,9 @@
using namespace gnash;
using namespace std;
+TRYMAIN(_runtest);
int
-main(int /*argc*/, char** /*argv*/)
+trymain(int /*argc*/, char** /*argv*/)
{
string filename = string(TGTDIR) + string("/") + string(INPUT_FILENAME);
MovieTester tester(filename);
@@ -63,5 +64,6 @@ main(int /*argc*/, char** /*argv*/)
tester.click();
tester.click();
tester.click();
+ return 0;
}
diff --git a/testsuite/misc-ming.all/DefineEditTextTest-Runner.cpp b/testsuite/misc-ming.all/DefineEditTextTest-Runner.cpp
index bc96461..614b3eb 100644
--- a/testsuite/misc-ming.all/DefineEditTextTest-Runner.cpp
+++ b/testsuite/misc-ming.all/DefineEditTextTest-Runner.cpp
@@ -34,8 +34,9 @@
using namespace gnash;
using namespace std;
+TRYMAIN(_runtest);
int
-main(int /*argc*/, char** /*argv*/)
+trymain(int /*argc*/, char** /*argv*/)
{
string filename = string(TGTDIR) + string("/") + string(INPUT_FILENAME);
MovieTester tester(filename);
@@ -54,5 +55,6 @@ main(int /*argc*/, char** /*argv*/)
tester.advance();
// TODO: use check_pixel for checking bacground colors
+ return 0;
}
diff --git a/testsuite/misc-ming.all/DefineEditTextVariableNameTest-Runner.cpp b/testsuite/misc-ming.all/DefineEditTextVariableNameTest-Runner.cpp
index 7cb915c..b76862a 100644
--- a/testsuite/misc-ming.all/DefineEditTextVariableNameTest-Runner.cpp
+++ b/testsuite/misc-ming.all/DefineEditTextVariableNameTest-Runner.cpp
@@ -34,8 +34,9 @@
using namespace gnash;
using namespace std;
+TRYMAIN(_runtest);
int
-main(int /*argc*/, char** /*argv*/)
+trymain(int /*argc*/, char** /*argv*/)
{
string filename = INPUT_FILENAME;
MovieTester tester(filename);
@@ -68,5 +69,6 @@ main(int /*argc*/, char** /*argv*/)
check_equals(root->getPlayState(), MovieClip::PLAYSTATE_STOP);
check_equals(root->get_current_frame(), root->get_frame_count()-1);
+ return 0;
}
diff --git a/testsuite/misc-ming.all/DefineTextTest-Runner.cpp b/testsuite/misc-ming.all/DefineTextTest-Runner.cpp
index 17a0452..0793095 100644
--- a/testsuite/misc-ming.all/DefineTextTest-Runner.cpp
+++ b/testsuite/misc-ming.all/DefineTextTest-Runner.cpp
@@ -36,8 +36,9 @@
using namespace gnash;
using namespace std;
+TRYMAIN(_runtest);
int
-main(int /*argc*/, char** /*argv*/)
+trymain(int /*argc*/, char** /*argv*/)
{
string filename = string(TGTDIR) + string("/") + string(INPUT_FILENAME);
MovieTester tester(filename);
@@ -122,5 +123,7 @@ main(int /*argc*/, char** /*argv*/)
check(eot.to_bool(8));
// TODO: use check_pixel for checking bacground colors
+
+ return 0;
}
diff --git a/testsuite/misc-ming.all/DragDropTestRunner.cpp b/testsuite/misc-ming.all/DragDropTestRunner.cpp
index 2cee7a6..f6140b5 100644
--- a/testsuite/misc-ming.all/DragDropTestRunner.cpp
+++ b/testsuite/misc-ming.all/DragDropTestRunner.cpp
@@ -41,8 +41,9 @@ using namespace gnash;
using namespace gnash::geometry;
using namespace std;
+TRYMAIN(_runtest);
int
-main(int /*argc*/, char** /*argv*/)
+trymain(int /*argc*/, char** /*argv*/)
{
string filename = string(TGTDIR) + string("/") + string(INPUT_FILENAME);
MovieTester tester(filename);
diff --git a/testsuite/misc-ming.all/DrawingApiTestRunner.cpp b/testsuite/misc-ming.all/DrawingApiTestRunner.cpp
index d5254f9..d4b9554 100644
--- a/testsuite/misc-ming.all/DrawingApiTestRunner.cpp
+++ b/testsuite/misc-ming.all/DrawingApiTestRunner.cpp
@@ -68,8 +68,9 @@ inscribedRect(int x, int y, int radius)
return ret;
}
+TRYMAIN(_runtest);
int
-main(int /*argc*/, char** /*argv*/)
+trymain(int /*argc*/, char** /*argv*/)
{
std::string filename =
std::string(TGTDIR) + "/" + std::string(INPUT_FILENAME);
@@ -1052,5 +1053,6 @@ main(int /*argc*/, char** /*argv*/)
//
+ return 0;
}
diff --git a/testsuite/misc-ming.all/KeyEventOrderRunner.cpp b/testsuite/misc-ming.all/KeyEventOrderRunner.cpp
index 8b791d0..db8e76f 100644
--- a/testsuite/misc-ming.all/KeyEventOrderRunner.cpp
+++ b/testsuite/misc-ming.all/KeyEventOrderRunner.cpp
@@ -35,8 +35,9 @@
using namespace gnash;
using namespace std;
+TRYMAIN(_runtest);
int
-main(int /*argc*/, char** /*argv*/)
+trymain(int /*argc*/, char** /*argv*/)
{
string filename = string(INPUT_FILENAME);
MovieTester tester(filename);
@@ -78,4 +79,5 @@ main(int /*argc*/, char** /*argv*/)
tester.advance();
check_equals(root->get_current_frame(), 5);
+ return 0;
}
diff --git a/testsuite/misc-ming.all/Makefile.am b/testsuite/misc-ming.all/Makefile.am
index e9db815..dd7e72e 100644
--- a/testsuite/misc-ming.all/Makefile.am
+++ b/testsuite/misc-ming.all/Makefile.am
@@ -32,7 +32,11 @@ CLEANFILES = \
DISTCLEANFILES = XMLSocketTester
SUBDIRS = . loop loading displaylist_depths action_order register_class \
- init_action sound
+ init_action
+
+if BUILD_LIBSOUND
+SUBDIRS += sound
+endif
EXTRA_DIST = \
DragDropTest.as \
@@ -82,6 +86,7 @@ AM_CPPFLAGS = \
$(MING_CFLAGS) \
$(OPENGL_CFLAGS) \
$(BOOST_CFLAGS) \
+ $(PTHREAD_CFLAGS) \
-DMING_VERSION_CODE=$(MING_VERSION_CODE) \
$(NULL)
@@ -220,7 +225,6 @@ check_SCRIPTS = \
EmbeddedFontTestRunner \
TextSnapshotTest-Runner \
XMLSocketTester \
- LCTestRunner \
timeline_var_test-Runner \
place_object_testrunner \
place_object_test2runner \
@@ -296,6 +300,9 @@ check_PROGRAMS += \
$(NULL)
endif
+if HAVE_SEMGET
+check_SCRIPTS += LCTestRunner
+endif
# This is so check.as finds revno.h
MAKESWF_FLAGS = -I$(top_builddir)
@@ -1550,7 +1557,6 @@ TEST_CASES = \
consecutive_goto_frame_testrunner \
multi_doactions_and_goto_frame_testrunner \
XMLSocketTester \
- LCTestRunner \
DrawingApiTestRunner \
TextSnapshotTest-Runner \
reverse_execute_PlaceObject2_test1runner \
@@ -1632,6 +1638,10 @@ TEST_CASES += \
$(NULL)
endif
+if HAVE_SEMGET
+TEST_CASES += LCTestRunner
+endif
+
TEST_ENV = GNASH_GC_TRIGGER_THRESHOLD=0
TEST_ENV += GNASHRC=../gnashrc
TEST_ENV += GST_INSTALL_PLUGINS_HELPER=$(top_srcdir)/testsuite/gst_install_plugins_helper.sh
diff --git a/testsuite/misc-ming.all/NetStream-SquareTestRunner.cpp b/testsuite/misc-ming.all/NetStream-SquareTestRunner.cpp
index 2c943ef..a222053 100644
--- a/testsuite/misc-ming.all/NetStream-SquareTestRunner.cpp
+++ b/testsuite/misc-ming.all/NetStream-SquareTestRunner.cpp
@@ -38,8 +38,9 @@
using namespace gnash;
using namespace std;
+TRYMAIN(_runtest);
int
-main(int /*argc*/, char** /*argv*/)
+trymain(int /*argc*/, char** /*argv*/)
{
string filename = string(TGTDIR) + string("/") + string(INPUT_FILENAME);
MovieTester tester(filename);
@@ -101,5 +102,6 @@ main(int /*argc*/, char** /*argv*/)
&eot);
check(endOfTestFound);
+ return 0;
}
diff --git a/testsuite/misc-ming.all/PrototypeEventListenersTestRunner.cpp b/testsuite/misc-ming.all/PrototypeEventListenersTestRunner.cpp
index 1d9ebe1..0d53ff9 100644
--- a/testsuite/misc-ming.all/PrototypeEventListenersTestRunner.cpp
+++ b/testsuite/misc-ming.all/PrototypeEventListenersTestRunner.cpp
@@ -39,8 +39,9 @@ using namespace gnash;
using namespace gnash::geometry;
using namespace std;
+TRYMAIN(_runtest);
int
-main(int /*argc*/, char** /*argv*/)
+trymain(int /*argc*/, char** /*argv*/)
{
string filename = string(TGTDIR) + string("/") + string(INPUT_FILENAME);
MovieTester tester(filename);
diff --git a/testsuite/misc-ming.all/ResolveEventsTest-Runner.cpp b/testsuite/misc-ming.all/ResolveEventsTest-Runner.cpp
index 5d57648..657ed72 100644
--- a/testsuite/misc-ming.all/ResolveEventsTest-Runner.cpp
+++ b/testsuite/misc-ming.all/ResolveEventsTest-Runner.cpp
@@ -35,8 +35,9 @@
using namespace gnash;
using namespace std;
+TRYMAIN(_runtest);
int
-main(int /*argc*/, char** /*argv*/)
+trymain(int /*argc*/, char** /*argv*/)
{
//string filename = INPUT_FILENAME;
string filename = string(TGTDIR) + string("/") + string(INPUT_FILENAME);
@@ -79,5 +80,6 @@ main(int /*argc*/, char** /*argv*/)
check_equals(root->getPlayState(), MovieClip::PLAYSTATE_STOP);
check_equals(root->get_current_frame(), 6);
+ return 0;
}
diff --git a/testsuite/misc-ming.all/RollOverOutTest-Runner.cpp b/testsuite/misc-ming.all/RollOverOutTest-Runner.cpp
index 160f93e..6c42d4a 100644
--- a/testsuite/misc-ming.all/RollOverOutTest-Runner.cpp
+++ b/testsuite/misc-ming.all/RollOverOutTest-Runner.cpp
@@ -34,8 +34,9 @@
using namespace gnash;
using namespace std;
+TRYMAIN(_runtest);
int
-main(int /*argc*/, char** /*argv*/)
+trymain(int /*argc*/, char** /*argv*/)
{
string filename = string(TGTDIR) + string("/") + string(INPUT_FILENAME);
MovieTester tester(filename);
@@ -98,6 +99,7 @@ main(int /*argc*/, char** /*argv*/)
tester.click();
//tester.advance(); // mouse event handler should drive the movie
check_equals(root->get_current_frame(), 3);
+ return 0;
}
diff --git a/testsuite/misc-ming.all/SpriteButtonEventsTest-Runner.cpp b/testsuite/misc-ming.all/SpriteButtonEventsTest-Runner.cpp
index e641aca..d082acd 100644
--- a/testsuite/misc-ming.all/SpriteButtonEventsTest-Runner.cpp
+++ b/testsuite/misc-ming.all/SpriteButtonEventsTest-Runner.cpp
@@ -197,8 +197,9 @@ test_mouse_activity(MovieTester& tester, const TextField* text, const TextField*
}
}
+TRYMAIN(_runtest);
int
-main(int /*argc*/, char** /*argv*/)
+trymain(int /*argc*/, char** /*argv*/)
{
//string filename = INPUT_FILENAME;
string filename = string(TGTDIR) + string("/") + string(INPUT_FILENAME);
@@ -288,5 +289,6 @@ main(int /*argc*/, char** /*argv*/)
check_equals(root->getPlayState(), MovieClip::PLAYSTATE_STOP);
check_equals(root->get_current_frame(), 4);
+ return 0;
}
diff --git a/testsuite/misc-ming.all/Video-EmbedSquareTestRunner.cpp b/testsuite/misc-ming.all/Video-EmbedSquareTestRunner.cpp
index 93a9c08..1a948a7 100644
--- a/testsuite/misc-ming.all/Video-EmbedSquareTestRunner.cpp
+++ b/testsuite/misc-ming.all/Video-EmbedSquareTestRunner.cpp
@@ -34,8 +34,9 @@
using namespace gnash;
using namespace std;
+TRYMAIN(_runtest);
int
-main(int /*argc*/, char** /*argv*/)
+trymain(int /*argc*/, char** /*argv*/)
{
string filename = string(TGTDIR) + string("/") + string(INPUT_FILENAME);
MovieTester tester(filename);
@@ -135,5 +136,6 @@ main(int /*argc*/, char** /*argv*/)
}
+ return 0;
}
diff --git a/testsuite/misc-ming.all/attachMovieLoopingTestRunner.cpp b/testsuite/misc-ming.all/attachMovieLoopingTestRunner.cpp
index b051456..b4acf5c 100644
--- a/testsuite/misc-ming.all/attachMovieLoopingTestRunner.cpp
+++ b/testsuite/misc-ming.all/attachMovieLoopingTestRunner.cpp
@@ -34,8 +34,9 @@
using namespace gnash;
using namespace std;
+TRYMAIN(_runtest);
int
-main(int /*argc*/, char** /*argv*/)
+trymain(int /*argc*/, char** /*argv*/)
{
string filename = string(TGTDIR) + string("/") + string(INPUT_FILENAME);
MovieTester tester(filename);
@@ -106,5 +107,6 @@ main(int /*argc*/, char** /*argv*/)
tester.movePointerTo(240, 5);
check(tester.isMouseOverMouseEntity());
+ return 0;
}
diff --git a/testsuite/misc-ming.all/attachMovieTestRunner.cpp b/testsuite/misc-ming.all/attachMovieTestRunner.cpp
index e11bb2d..d4356b9 100644
--- a/testsuite/misc-ming.all/attachMovieTestRunner.cpp
+++ b/testsuite/misc-ming.all/attachMovieTestRunner.cpp
@@ -35,8 +35,9 @@
using namespace gnash;
using namespace std;
+TRYMAIN(_runtest);
int
-main(int /*argc*/, char** /*argv*/)
+trymain(int /*argc*/, char** /*argv*/)
{
string filename = string(TGTDIR) + string("/") + string(INPUT_FILENAME);
MovieTester tester(filename);
@@ -160,5 +161,6 @@ main(int /*argc*/, char** /*argv*/)
getObject(root)->get_member(mousedown, &tmp);
check_equals(toNumber(tmp, vm), 5);
+ return 0;
}
diff --git a/testsuite/misc-ming.all/intervalTestRunner.cpp b/testsuite/misc-ming.all/intervalTestRunner.cpp
index e4af995..5f7ed98 100644
--- a/testsuite/misc-ming.all/intervalTestRunner.cpp
+++ b/testsuite/misc-ming.all/intervalTestRunner.cpp
@@ -36,8 +36,9 @@
using namespace gnash;
using namespace std;
+TRYMAIN(_runtest);
int
-main(int /*argc*/, char** /*argv*/)
+trymain(int /*argc*/, char** /*argv*/)
{
string filename = string(TGTDIR) + string("/") + string(INPUT_FILENAME);
MovieTester tester(filename);
@@ -139,5 +140,6 @@ main(int /*argc*/, char** /*argv*/)
getObject(root)->get_member(testCompleted, &tmp);
check_equals(toNumber(tmp, vm), 1);
+ return 0;
}
diff --git a/testsuite/misc-ming.all/key_event_testrunner.cpp b/testsuite/misc-ming.all/key_event_testrunner.cpp
index 0024d27..9860c4e 100644
--- a/testsuite/misc-ming.all/key_event_testrunner.cpp
+++ b/testsuite/misc-ming.all/key_event_testrunner.cpp
@@ -35,8 +35,9 @@
using namespace gnash;
using namespace std;
+TRYMAIN(_runtest);
int
-main(int /*argc*/, char** /*argv*/)
+trymain(int /*argc*/, char** /*argv*/)
{
string filename = string(INPUT_FILENAME);
MovieTester tester(filename);
@@ -191,4 +192,5 @@ main(int /*argc*/, char** /*argv*/)
// reached frame23, test finished
check_equals(root->get_current_frame(), 23);
+ return 0;
}
diff --git a/testsuite/misc-ming.all/loading/Makefile.am b/testsuite/misc-ming.all/loading/Makefile.am
index 2507622..cc9661d 100644
--- a/testsuite/misc-ming.all/loading/Makefile.am
+++ b/testsuite/misc-ming.all/loading/Makefile.am
@@ -48,6 +48,7 @@ AM_CPPFLAGS = \
$(MING_CFLAGS) \
$(OPENGL_CFLAGS) \
$(BOOST_CFLAGS) \
+ $(PTHREAD_CFLAGS) \
-DMING_VERSION_CODE=$(MING_VERSION_CODE) \
$(NULL)
diff --git a/testsuite/misc-ming.all/loading/loadMovieTestRunner.cpp b/testsuite/misc-ming.all/loading/loadMovieTestRunner.cpp
index 25d5fdb..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*
@@ -165,8 +165,9 @@ clickCycle(MovieClip* coverart)
tester->click(); tester->advance();
}
+TRYMAIN(_runtest);
int
-main(int /*argc*/, char** /*argv*/)
+trymain(int /*argc*/, char** /*argv*/)
{
gnash::LogFile& dbglogfile = gnash::LogFile::getDefaultInstance();
dbglogfile.setVerbosity(1);
@@ -213,5 +214,6 @@ main(int /*argc*/, char** /*argv*/)
check_equals(eot.to_bool(8), true);
}
+ return 0;
}
diff --git a/testsuite/misc-ming.all/loop/Makefile.am b/testsuite/misc-ming.all/loop/Makefile.am
index 623611a..efb728f 100644
--- a/testsuite/misc-ming.all/loop/Makefile.am
+++ b/testsuite/misc-ming.all/loop/Makefile.am
@@ -47,6 +47,7 @@ AM_CPPFLAGS = \
$(MING_CFLAGS) \
$(OPENGL_CFLAGS) \
$(BOOST_CFLAGS) \
+ $(PTHREAD_CFLAGS) \
-DMING_VERSION_CODE=$(MING_VERSION_CODE) \
$(NULL)
diff --git a/testsuite/misc-ming.all/loop/loop_test-Runner.cpp b/testsuite/misc-ming.all/loop/loop_test-Runner.cpp
index 29e4e0e..42f5d4e 100644
--- a/testsuite/misc-ming.all/loop/loop_test-Runner.cpp
+++ b/testsuite/misc-ming.all/loop/loop_test-Runner.cpp
@@ -38,11 +38,12 @@
using namespace gnash;
using namespace std;
+TRYMAIN(_runtest);
int
-main(int /*argc*/, char** /*argv*/)
+trymain(int /*argc*/, char** /*argv*/)
{
string filename = string(TGTDIR) + string("/") + string(INPUT_FILENAME);
- auto_ptr<MovieTester> t;
+ unique_ptr<MovieTester> t;
try
{
@@ -135,5 +136,6 @@ main(int /*argc*/, char** /*argv*/)
}
+ return 0;
}
diff --git a/testsuite/misc-ming.all/loop/loop_test2runner.cpp b/testsuite/misc-ming.all/loop/loop_test2runner.cpp
index bb16499..0b30b4a 100644
--- a/testsuite/misc-ming.all/loop/loop_test2runner.cpp
+++ b/testsuite/misc-ming.all/loop/loop_test2runner.cpp
@@ -34,8 +34,9 @@ using namespace gnash;
using namespace std;
using namespace gnash::geometry;
+TRYMAIN(_runtest);
int
-main(int /*argc*/, char** /*argv*/)
+trymain(int /*argc*/, char** /*argv*/)
{
typedef gnash::geometry::SnappingRanges2d<int> Ranges;
typedef gnash::geometry::Range2d<int> Bounds;
@@ -134,5 +135,6 @@ main(int /*argc*/, char** /*argv*/)
check_pixel(x_int, y, 2, red, 2); // black is *behind* red square
check_pixel(x_black, y, 2, black, 2);
check_pixel(x_right, y, 2, white, 2);
+ return 0;
}
diff --git a/testsuite/misc-ming.all/loop/simple_loop_testrunner.cpp b/testsuite/misc-ming.all/loop/simple_loop_testrunner.cpp
index eee50d3..0b43131 100644
--- a/testsuite/misc-ming.all/loop/simple_loop_testrunner.cpp
+++ b/testsuite/misc-ming.all/loop/simple_loop_testrunner.cpp
@@ -38,8 +38,9 @@ using namespace std;
void testAll(MovieTester& tester);
+TRYMAIN(_runtest);
int
-main(int /*argc*/, char** /*argv*/)
+trymain(int /*argc*/, char** /*argv*/)
{
string filename = string(TGTDIR) + string("/") + string(INPUT_FILENAME);
MovieTester tester(filename);
@@ -51,6 +52,7 @@ main(int /*argc*/, char** /*argv*/)
tester.restart();
testAll(tester);
+ return 0;
}
diff --git a/testsuite/misc-ming.all/masks_test2runner.cpp b/testsuite/misc-ming.all/masks_test2runner.cpp
index 028e442..98ab777 100644
--- a/testsuite/misc-ming.all/masks_test2runner.cpp
+++ b/testsuite/misc-ming.all/masks_test2runner.cpp
@@ -34,8 +34,9 @@
using namespace gnash;
using namespace std;
+TRYMAIN(_runtest);
int
-main(int /*argc*/, char** /*argv*/)
+trymain(int /*argc*/, char** /*argv*/)
{
//string filename = string(TGTDIR) + string("/") + string(INPUT_FILENAME);
string filename = string(INPUT_FILENAME);
@@ -72,4 +73,5 @@ main(int /*argc*/, char** /*argv*/)
tester.advance();
check_pixel(105, 105, 210, red, 2);
check_pixel(220, 220, 10, white, 2);
+ return 0;
}
diff --git a/testsuite/misc-ming.all/masks_testrunner.cpp b/testsuite/misc-ming.all/masks_testrunner.cpp
index bd8751d..ccd647d 100644
--- a/testsuite/misc-ming.all/masks_testrunner.cpp
+++ b/testsuite/misc-ming.all/masks_testrunner.cpp
@@ -34,8 +34,9 @@
using namespace gnash;
using namespace std;
+TRYMAIN(_runtest);
int
-main(int /*argc*/, char** /*argv*/)
+trymain(int /*argc*/, char** /*argv*/)
{
typedef gnash::geometry::SnappingRanges2d<int> Ranges;
typedef gnash::geometry::Range2d<int> Bounds;
@@ -381,5 +382,6 @@ main(int /*argc*/, char** /*argv*/)
check( invalidated.contains(248, 331) );
check_pixel(248,331, 2, dark_green, 2);
check( tester.isMouseOverMouseEntity() ) // mask still sensible to mouse
+ return 0;
}
diff --git a/testsuite/misc-ming.all/morph_test1runner.cpp b/testsuite/misc-ming.all/morph_test1runner.cpp
index b7b265e..4c8185c 100644
--- a/testsuite/misc-ming.all/morph_test1runner.cpp
+++ b/testsuite/misc-ming.all/morph_test1runner.cpp
@@ -34,8 +34,9 @@
using namespace gnash;
using namespace std;
+TRYMAIN(_runtest);
int
-main(int /*argc*/, char** /*argv*/)
+trymain(int /*argc*/, char** /*argv*/)
{
//string filename = string(TGTDIR) + string("/") + string(INPUT_FILENAME);
string filename = string(INPUT_FILENAME);
@@ -83,5 +84,10 @@ main(int /*argc*/, char** /*argv*/)
tester.advance();
// fill color: 0.0*red + 1.0*green
check_pixel(750, 550, 50, rgba(0,255,0,255), 2); // morph ratio = 1.0
+
+ // Frame 8
+ tester.advance();
+ // #39989. Nothing to check: empty morph shape.
+ return 0;
}
diff --git a/testsuite/misc-ming.all/register_class/Makefile.am b/testsuite/misc-ming.all/register_class/Makefile.am
index 2de6d1a..689fd34 100644
--- a/testsuite/misc-ming.all/register_class/Makefile.am
+++ b/testsuite/misc-ming.all/register_class/Makefile.am
@@ -46,6 +46,7 @@ AM_CPPFLAGS = \
$(MING_CFLAGS) \
$(OPENGL_CFLAGS) \
$(BOOST_CFLAGS) \
+ $(PTHREAD_CFLAGS) \
-DMING_VERSION_CODE=$(MING_VERSION_CODE) \
$(NULL)
diff --git a/testsuite/misc-ming.all/register_class/registerClassTestRunner.cpp b/testsuite/misc-ming.all/register_class/registerClassTestRunner.cpp
index a964af5..8687f7d 100644
--- a/testsuite/misc-ming.all/register_class/registerClassTestRunner.cpp
+++ b/testsuite/misc-ming.all/register_class/registerClassTestRunner.cpp
@@ -34,8 +34,9 @@
using namespace gnash;
using namespace std;
+TRYMAIN(_runtest);
int
-main(int /*argc*/, char** /*argv*/)
+trymain(int /*argc*/, char** /*argv*/)
{
string filename = string(TGTDIR) + string("/") + string(INPUT_FILENAME);
MovieTester tester(filename);
@@ -109,5 +110,6 @@ main(int /*argc*/, char** /*argv*/)
tester.advance();
check_equals(root->get_current_frame(), 5); // we should be in stop mode
+ return 0;
}
diff --git a/testsuite/misc-ming.all/replace_buttons1test_runner.cpp b/testsuite/misc-ming.all/replace_buttons1test_runner.cpp
index 0a852bf..3da3a57 100644
--- a/testsuite/misc-ming.all/replace_buttons1test_runner.cpp
+++ b/testsuite/misc-ming.all/replace_buttons1test_runner.cpp
@@ -35,8 +35,9 @@ using namespace gnash;
using namespace std;
using namespace gnash::geometry;
+TRYMAIN(_runtest);
int
-main(int /*argc*/, char** /*argv*/)
+trymain(int /*argc*/, char** /*argv*/)
{
typedef gnash::geometry::SnappingRanges2d<int> Ranges;
typedef gnash::geometry::Range2d<int> Bounds;
@@ -144,5 +145,6 @@ main(int /*argc*/, char** /*argv*/)
check_pixel(130, 296, 2, white, 2); // Top
check_pixel(130, 364, 2, white, 2); // Bottom
+ return 0;
}
diff --git a/testsuite/misc-ming.all/replace_shapes1test_runner.cpp b/testsuite/misc-ming.all/replace_shapes1test_runner.cpp
index 11207da..fce1f36 100644
--- a/testsuite/misc-ming.all/replace_shapes1test_runner.cpp
+++ b/testsuite/misc-ming.all/replace_shapes1test_runner.cpp
@@ -35,8 +35,9 @@ using namespace gnash;
using namespace std;
using namespace gnash::geometry;
+TRYMAIN(_runtest);
int
-main(int /*argc*/, char** /*argv*/)
+trymain(int /*argc*/, char** /*argv*/)
{
typedef gnash::geometry::SnappingRanges2d<int> Ranges;
typedef gnash::geometry::Range2d<int> Bounds;
@@ -143,5 +144,6 @@ main(int /*argc*/, char** /*argv*/)
check_pixel(130, 296, 2, white, 2); // Top
check_pixel(130, 364, 2, white, 2); // Bottom
+ return 0;
}
diff --git a/testsuite/misc-ming.all/replace_sprites1test_runner.cpp b/testsuite/misc-ming.all/replace_sprites1test_runner.cpp
index 1799b35..73c9f2f 100644
--- a/testsuite/misc-ming.all/replace_sprites1test_runner.cpp
+++ b/testsuite/misc-ming.all/replace_sprites1test_runner.cpp
@@ -35,8 +35,9 @@ using namespace gnash;
using namespace std;
using namespace gnash::geometry;
+TRYMAIN(_runtest);
int
-main(int /*argc*/, char** /*argv*/)
+trymain(int /*argc*/, char** /*argv*/)
{
typedef gnash::geometry::SnappingRanges2d<int> Ranges;
typedef gnash::geometry::Range2d<int> Bounds;
@@ -150,5 +151,6 @@ main(int /*argc*/, char** /*argv*/)
check_pixel(130, 296, 2, white, 2); // Top
check_pixel(130, 364, 2, white, 2); // Bottom
+ return 0;
}
diff --git a/testsuite/misc-ming.all/root_stop_testrunner.cpp b/testsuite/misc-ming.all/root_stop_testrunner.cpp
index c7dcb55..c9248b4 100644
--- a/testsuite/misc-ming.all/root_stop_testrunner.cpp
+++ b/testsuite/misc-ming.all/root_stop_testrunner.cpp
@@ -36,8 +36,9 @@
using namespace gnash;
using namespace std;
+TRYMAIN(_runtest);
int
-main(int /*argc*/, char** /*argv*/)
+trymain(int /*argc*/, char** /*argv*/)
{
string filename = string(TGTDIR) + string("/") + string(INPUT_FILENAME);
MovieTester tester(filename);
diff --git a/testsuite/misc-ming.all/sound/EmbeddedSoundTest-Runner.cpp b/testsuite/misc-ming.all/sound/EmbeddedSoundTest-Runner.cpp
index b31d731..614ec7f 100644
--- a/testsuite/misc-ming.all/sound/EmbeddedSoundTest-Runner.cpp
+++ b/testsuite/misc-ming.all/sound/EmbeddedSoundTest-Runner.cpp
@@ -34,8 +34,9 @@
using namespace gnash;
using namespace std;
+TRYMAIN(_runtest);
int
-main(int /*argc*/, char** /*argv*/)
+trymain(int /*argc*/, char** /*argv*/)
{
string filename = string(TGTDIR) + string("/") + string(INPUT_FILENAME);
MovieTester tester(filename);
@@ -62,6 +63,6 @@ main(int /*argc*/, char** /*argv*/)
}
as_value eot;
xcheck(getObject(root)->get_member(getURI(vm, "finished"), &eot));
-
+ return 0;
}
diff --git a/testsuite/misc-ming.all/sound/Makefile.am b/testsuite/misc-ming.all/sound/Makefile.am
index 9e1bc61..10a09b5 100644
--- a/testsuite/misc-ming.all/sound/Makefile.am
+++ b/testsuite/misc-ming.all/sound/Makefile.am
@@ -47,6 +47,7 @@ AM_CPPFLAGS = \
$(MING_CFLAGS) \
$(OPENGL_CFLAGS) \
$(BOOST_CFLAGS) \
+ $(PTHREAD_CFLAGS) \
-DMING_VERSION_CODE=$(MING_VERSION_CODE) \
$(NULL)
diff --git a/testsuite/misc-ming.all/sound/StreamSoundTestRunner.cpp b/testsuite/misc-ming.all/sound/StreamSoundTestRunner.cpp
index 3a8c08d..5ad036b 100644
--- a/testsuite/misc-ming.all/sound/StreamSoundTestRunner.cpp
+++ b/testsuite/misc-ming.all/sound/StreamSoundTestRunner.cpp
@@ -34,8 +34,9 @@
using namespace gnash;
using namespace std;
+TRYMAIN(_runtest);
int
-main(int /*argc*/, char** /*argv*/)
+trymain(int /*argc*/, char** /*argv*/)
{
string filename = string(TGTDIR) + string("/") + string(INPUT_FILENAME);
MovieTester tester(filename);
@@ -66,6 +67,6 @@ main(int /*argc*/, char** /*argv*/)
tester.advance();
check_equals(tester.streamingSound(), true);
}
-
+ return 0;
}
diff --git a/testsuite/misc-ming.all/sound/eventSoundTest1-Runner.cpp b/testsuite/misc-ming.all/sound/eventSoundTest1-Runner.cpp
index 3f69e96..a484553 100644
--- a/testsuite/misc-ming.all/sound/eventSoundTest1-Runner.cpp
+++ b/testsuite/misc-ming.all/sound/eventSoundTest1-Runner.cpp
@@ -38,11 +38,12 @@
using namespace gnash;
using namespace std;
+TRYMAIN(_runtest);
int
-main(int /*argc*/, char** /*argv*/)
+trymain(int /*argc*/, char** /*argv*/)
{
string filename = string(TGTDIR) + string("/") + string(INPUT_FILENAME);
- auto_ptr<MovieTester> t;
+ unique_ptr<MovieTester> t;
try
{
@@ -132,5 +133,6 @@ main(int /*argc*/, char** /*argv*/)
getObject(root)->get_member(getURI(vm, "endoftest"), &eot);
check(endOfTestFound);
+ return EXIT_SUCCESS;
}
diff --git a/testsuite/misc-ming.all/sound/streamingSoundTest1-Runner.cpp b/testsuite/misc-ming.all/sound/streamingSoundTest1-Runner.cpp
index c92531e..4dd1639 100644
--- a/testsuite/misc-ming.all/sound/streamingSoundTest1-Runner.cpp
+++ b/testsuite/misc-ming.all/sound/streamingSoundTest1-Runner.cpp
@@ -38,8 +38,9 @@
using namespace gnash;
using namespace std;
+TRYMAIN(_runtest);
int
-main(int /*argc*/, char** /*argv*/)
+trymain(int /*argc*/, char** /*argv*/)
{
string filename = string(TGTDIR) + string("/") + string(INPUT_FILENAME);
@@ -87,5 +88,6 @@ main(int /*argc*/, char** /*argv*/)
check_equals(tester.soundsStopped(), 1);
}
+ return EXIT_SUCCESS;
}
diff --git a/testsuite/misc-ming.all/sound/streamingSoundTest2-Runner.cpp b/testsuite/misc-ming.all/sound/streamingSoundTest2-Runner.cpp
index d14062a..2bd498d 100644
--- a/testsuite/misc-ming.all/sound/streamingSoundTest2-Runner.cpp
+++ b/testsuite/misc-ming.all/sound/streamingSoundTest2-Runner.cpp
@@ -38,8 +38,9 @@
using namespace gnash;
using namespace std;
+TRYMAIN(_runtest);
int
-main(int /*argc*/, char** /*argv*/)
+trymain(int /*argc*/, char** /*argv*/)
{
string filename = string(TGTDIR) + string("/") + string(INPUT_FILENAME);
@@ -74,5 +75,6 @@ main(int /*argc*/, char** /*argv*/)
check_equals(tester.streamingSound(), true);
}
+ return EXIT_SUCCESS;
}
diff --git a/testsuite/misc-swfc.all/Makefile.am b/testsuite/misc-swfc.all/Makefile.am
index ba3a0c3..df8e76d 100644
--- a/testsuite/misc-swfc.all/Makefile.am
+++ b/testsuite/misc-swfc.all/Makefile.am
@@ -22,7 +22,6 @@ AUTOMAKE_OPTIONS = dejagnu
# These will get executed and parsed for test output
SANE_SCTESTS = \
hello.sc \
- sound.sc \
soft_reference_test1.sc \
movieclip_destruction_test1.sc \
movieclip_destruction_test2.sc \
@@ -42,6 +41,10 @@ SANE_SCTESTS = \
stackscope.sc \
$(NULL)
+if BUILD_LIBSOUND
+SANE_SCTESTS += sound.sc
+endif
+
# These ones are the ones for which consistency check fail
BOGO_SCTESTS = \
$(NULL)
@@ -50,9 +53,12 @@ BOGO_SCTESTS = \
INTERACTIVE_SCTESTS = \
button_test1.sc \
button_test2.sc \
- sound_stop.sc \
$(NULL)
+if BUILD_LIBSOUND
+INTERACTIVE_SCTESTS += sound_stop.sc
+endif
+
AM_CPPFLAGS = -I.. \
-I$(top_srcdir) \
-I$(top_srcdir)/libbase \
@@ -66,6 +72,7 @@ AM_CPPFLAGS = -I.. \
-I$(top_srcdir)/libcore/parser \
-I$(top_srcdir)/testsuite \
$(BOOST_CFLAGS) \
+ $(PTHREAD_CFLAGS) \
$(NULL)
GNASH_LIBS = \
@@ -81,10 +88,11 @@ AUXMOVIES = \
EXTRA_DIST = $(SANE_SCTESTS) $(BOGO_SCTESTS) $(AUXMOVIES) $(INTERACTIVE_SCTESTS) check.sc Dejagnu.sc hello.sc
-check_PROGRAMS = \
- button_test1runner \
- sound_stop_runner \
- $(NULL)
+check_PROGRAMS = button_test1runner
+
+if BUILD_LIBSOUND
+check_PROGRAMS += sound_stop_runner
+endif
abs_mediadir = $(abs_top_srcdir)/testsuite/media
diff --git a/testsuite/misc-swfc.all/button_test1runner.cpp b/testsuite/misc-swfc.all/button_test1runner.cpp
index 4e28765..301a0b8 100644
--- a/testsuite/misc-swfc.all/button_test1runner.cpp
+++ b/testsuite/misc-swfc.all/button_test1runner.cpp
@@ -38,11 +38,12 @@
using namespace gnash;
using namespace std;
+TRYMAIN(_runtest);
int
-main(int /*argc*/, char** /*argv*/)
+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);
@@ -161,5 +162,6 @@ main(int /*argc*/, char** /*argv*/)
//cerr << "EOT is " << eot.to_debug_string() << endl;
check(eot.to_bool(8));
+ return 0;
}
diff --git a/testsuite/misc-swfc.all/sound_stop_runner.cpp b/testsuite/misc-swfc.all/sound_stop_runner.cpp
index a23a271..aa896db 100644
--- a/testsuite/misc-swfc.all/sound_stop_runner.cpp
+++ b/testsuite/misc-swfc.all/sound_stop_runner.cpp
@@ -32,11 +32,12 @@
using namespace gnash;
using namespace std;
+TRYMAIN(_runtest);
int
-main(int /*argc*/, char** /*argv*/)
+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);
@@ -62,5 +63,6 @@ main(int /*argc*/, char** /*argv*/)
check_equals(tester.soundsStarted(), 3);
check_equals(tester.soundsStopped(), 3);
+ return 0;
}
diff --git a/testsuite/misc-swfmill.all/Makefile.am b/testsuite/misc-swfmill.all/Makefile.am
index ca59e2e..ff20be9 100644
--- a/testsuite/misc-swfmill.all/Makefile.am
+++ b/testsuite/misc-swfmill.all/Makefile.am
@@ -83,6 +83,7 @@ AM_CPPFLAGS = \
-I$(top_srcdir)/libcore/asobj \
-I$(top_srcdir)/testsuite \
$(BOOST_CFLAGS) \
+ $(PTHREAD_CFLAGS) \
$(NULL)
AM_LDFLAGS = \
diff --git a/testsuite/misc-swfmill.all/backgroundTestRunner.cpp b/testsuite/misc-swfmill.all/backgroundTestRunner.cpp
index 9b75ba6..662c5e1 100644
--- a/testsuite/misc-swfmill.all/backgroundTestRunner.cpp
+++ b/testsuite/misc-swfmill.all/backgroundTestRunner.cpp
@@ -35,11 +35,12 @@
using namespace gnash;
using namespace std;
+TRYMAIN(_runtest);
int
-main(int /*argc*/, char** /*argv*/)
+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);
@@ -85,5 +86,6 @@ main(int /*argc*/, char** /*argv*/)
check_pixel(600, 400, 50, red, tol);
check_pixel(600, 60, 50, red, tol);
check_pixel(320, 240, 50, red, tol);
+ return 0;
}
diff --git a/testsuite/misc-swfmill.all/missing_bitmapTestRunner.cpp b/testsuite/misc-swfmill.all/missing_bitmapTestRunner.cpp
index eb5807b..fc4fe20 100644
--- a/testsuite/misc-swfmill.all/missing_bitmapTestRunner.cpp
+++ b/testsuite/misc-swfmill.all/missing_bitmapTestRunner.cpp
@@ -35,11 +35,12 @@
using namespace gnash;
using namespace std;
+TRYMAIN(_runtest);
int
-main(int /*argc*/, char** /*argv*/)
+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);
@@ -70,5 +71,6 @@ main(int /*argc*/, char** /*argv*/)
tester.advance();
+ return 0;
}
diff --git a/testsuite/movies.all/Makefile.am b/testsuite/movies.all/Makefile.am
index 4968a72..046706b 100644
--- a/testsuite/movies.all/Makefile.am
+++ b/testsuite/movies.all/Makefile.am
@@ -46,6 +46,7 @@ AM_CPPFLAGS = \
-I$(top_srcdir)/libcore/asobj \
-I$(top_srcdir)/testsuite \
$(BOOST_CFLAGS) \
+ $(PTHREAD_CFLAGS) \
$(OPENGL_CFLAGS) \
$(NULL)
diff --git a/testsuite/movies.all/gravity_embedded-TestRunner.cpp b/testsuite/movies.all/gravity_embedded-TestRunner.cpp
index ec864c9..11ba038 100644
--- a/testsuite/movies.all/gravity_embedded-TestRunner.cpp
+++ b/testsuite/movies.all/gravity_embedded-TestRunner.cpp
@@ -39,8 +39,9 @@ using namespace gnash;
using std::string;
using ::round;
+TRYMAIN(_runtest);
int
-main(int /*argc*/, char** /*argv*/)
+trymain(int /*argc*/, char** /*argv*/)
{
string filename = string(SRCDIR) + string("/") + string(INPUT_FILENAME);
MovieTester tester(filename);
@@ -153,5 +154,6 @@ main(int /*argc*/, char** /*argv*/)
check_equals(round(toNumber(tmp, vm)), 52);
+ return 0;
}
diff --git a/testsuite/movies.all/tic_tac2-TestRunner.cpp b/testsuite/movies.all/tic_tac2-TestRunner.cpp
index 281a73b..7013d81 100644
--- a/testsuite/movies.all/tic_tac2-TestRunner.cpp
+++ b/testsuite/movies.all/tic_tac2-TestRunner.cpp
@@ -38,71 +38,75 @@
using namespace gnash;
using namespace std;
+TRYMAIN(_runtest);
int
-main(int /*argc*/, char** /*argv*/)
+trymain(int /*argc*/, char** /*argv*/)
{
- string filename = string(SRCDIR) + string("/") + string(INPUT_FILENAME);
- MovieTester tester(filename);
+ string filename = string(SRCDIR) + string("/") + string(INPUT_FILENAME);
+ MovieTester tester(filename);
- gnash::LogFile& dbglogfile = gnash::LogFile::getDefaultInstance();
- dbglogfile.setVerbosity(1);
+ gnash::LogFile& dbglogfile = gnash::LogFile::getDefaultInstance();
+ dbglogfile.setVerbosity(1);
- const MovieClip* root = tester.getRootMovie();
- assert(root);
+ const MovieClip* root = tester.getRootMovie();
+ assert(root);
- check_equals(root->get_frame_count(), 10);
- check_equals(root->get_current_frame(), 0);
+ check_equals(root->get_frame_count(), 10);
+ check_equals(root->get_current_frame(), 0);
- const MovieClip* slides = dynamic_cast<const MovieClip*>(
- tester.findDisplayItemByTarget("_level0.slides"));
- check(slides);
+ const MovieClip* slides = dynamic_cast<const MovieClip*>(
+ tester.findDisplayItemByTarget("_level0.slides"));
+ check(slides);
- const Button* button = dynamic_cast<const Button*>(
- tester.findDisplayItemByTarget("_level0.b1"));
- check(button);
+ const Button* button = dynamic_cast<const Button*>(
+ tester.findDisplayItemByTarget("_level0.b1"));
+ check(button);
- tester.advance();
- check_equals(root->get_current_frame(), 1);
- check_equals(slides->get_current_frame(), 0);
+ tester.advance();
+ check_equals(root->get_current_frame(), 1);
+ check_equals(slides->get_current_frame(), 0);
- // Not much happens w/out clicking on the play button
- for (int i=0; i<10; ++i) tester.advance();
- check_equals(root->get_current_frame(), 1);
- check_equals(slides->get_current_frame(), 0);
+ // Not much happens w/out clicking on the play button
+ for (int i=0; i<10; ++i) tester.advance();
+ check_equals(root->get_current_frame(), 1);
+ check_equals(slides->get_current_frame(), 0);
- // Should start now
- tester.movePointerTo(395, 301); tester.click();
- check_equals(root->get_current_frame(), 1);
- check_equals(slides->get_current_frame(), 0);
+ // Should start now
+ tester.movePointerTo(395, 301); tester.click();
+ check_equals(root->get_current_frame(), 1);
+ check_equals(slides->get_current_frame(), 0);
- for (unsigned int i=0; i<3; ++i) {
- std::stringstream s; s << "iteration " << i;
- tester.advance();
- check_equals_label(s.str(), root->get_current_frame(), 2+i);
- check_equals_label(s.str(), slides->get_current_frame(), 0);
- }
+ for (unsigned int i=0; i<3; ++i) {
+ std::stringstream s; s << "iteration " << i;
+ tester.advance();
+ check_equals_label(s.str(), root->get_current_frame(), 2+i);
+ check_equals_label(s.str(), slides->get_current_frame(), 0);
+ }
+#if USE_SOUND
// Tweak initial offset (dunno based on what really)
tester.advanceClock(1000);
- tester.advance(false);
- check_equals(root->get_current_frame(), 4);
- check_equals(slides->get_current_frame(), 0);
+ tester.advance(false);
+ check_equals(root->get_current_frame(), 4);
+ check_equals(slides->get_current_frame(), 0);
- for (unsigned int i=0; i<12; ++i) {
+ for (unsigned int i=0; i<12; ++i) {
tester.advanceClock(1000);
- tester.advance(false);
- std::stringstream s; s << "i" << i;
- check_equals_label(s.str(), slides->get_current_frame(), i);
+ tester.advance(false);
+ std::stringstream s; s << "i" << i;
+ check_equals_label(s.str(), slides->get_current_frame(), i);
// TODO: check invalidated bounds!
}
- check_equals(slides->get_current_frame(), 11);
- check_equals(root->get_current_frame(), 4);
+ check_equals(slides->get_current_frame(), 11);
+ check_equals(root->get_current_frame(), 4);
// It's stuck there
- for (int i=0; i<10; ++i) tester.advance();
- check_equals(slides->get_current_frame(), 11);
- check_equals(root->get_current_frame(), 4);
+ for (int i=0; i<10; ++i) tester.advance();
+ check_equals(slides->get_current_frame(), 11);
+ check_equals(root->get_current_frame(), 4);
+#endif // USE_SOUND
+ return 0;
}
diff --git a/testsuite/network.all/test_ssh.cpp b/testsuite/network.all/test_ssh.cpp
index 1a0d358..b43b263 100644
--- a/testsuite/network.all/test_ssh.cpp
+++ b/testsuite/network.all/test_ssh.cpp
@@ -22,7 +22,6 @@
#ifdef HAVE_DEJAGNU_H
//#include <netinet/in.h>
-#include <boost/shared_ptr.hpp>
#include <string>
#include <sys/types.h>
#include <sys/stat.h>
@@ -169,6 +168,7 @@ main(int argc, char *argv[])
}
test_channels();
+ return 0;
}
static void test_client()
diff --git a/testsuite/network.all/test_ssl.cpp b/testsuite/network.all/test_ssl.cpp
index e1a0b2f..6d1f0a4 100644
--- a/testsuite/network.all/test_ssl.cpp
+++ b/testsuite/network.all/test_ssl.cpp
@@ -22,7 +22,6 @@
#ifdef HAVE_DEJAGNU_H
//#include <netinet/in.h>
-#include <boost/shared_ptr.hpp>
#include <string>
#include <sys/types.h>
#include <sys/stat.h>
@@ -172,6 +171,7 @@ main(int argc, char *argv[])
test_client();
}
#endif
+ return 0;
}
#ifdef USE_SSL
diff --git a/testsuite/samples/Makefile.am b/testsuite/samples/Makefile.am
index 5c59ef8..d0449a8 100644
--- a/testsuite/samples/Makefile.am
+++ b/testsuite/samples/Makefile.am
@@ -38,6 +38,7 @@ AM_CPPFLAGS = \
-I$(top_srcdir)/testsuite \
$(OPENGL_CFLAGS) \
$(BOOST_CFLAGS) \
+ $(PTHREAD_CFLAGS) \
$(FFMPEG_CFLAGS) \
$(NULL)
diff --git a/testsuite/samples/clip_as_button2-TestRunner.cpp b/testsuite/samples/clip_as_button2-TestRunner.cpp
index a9ee635..be76352 100644
--- a/testsuite/samples/clip_as_button2-TestRunner.cpp
+++ b/testsuite/samples/clip_as_button2-TestRunner.cpp
@@ -36,11 +36,12 @@
using namespace gnash;
using namespace std;
+TRYMAIN(_runtest);
int
-main(int /*argc*/, char** /*argv*/)
+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);
@@ -233,5 +234,6 @@ main(int /*argc*/, char** /*argv*/)
check_pixel(434, 291, 2, yellow, 1);
check_equals(string(text->get_text_value()), msg_empty);
+ return 0;
}
diff --git a/testsuite/samples/gotoFrameOnKeyEvent-TestRunner.cpp b/testsuite/samples/gotoFrameOnKeyEvent-TestRunner.cpp
index 20e1647..036e9d9 100644
--- a/testsuite/samples/gotoFrameOnKeyEvent-TestRunner.cpp
+++ b/testsuite/samples/gotoFrameOnKeyEvent-TestRunner.cpp
@@ -35,11 +35,12 @@
using namespace gnash;
using namespace std;
+TRYMAIN(_runtest);
int
-main(int /*argc*/, char** /*argv*/)
+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);
@@ -138,5 +139,6 @@ main(int /*argc*/, char** /*argv*/)
tester.advance();
check_equals(root->get_current_frame(), i-1);
}
+ return 0;
}
diff --git a/testsuite/samples/subshapes-TestRunner.cpp b/testsuite/samples/subshapes-TestRunner.cpp
index 96ae7ee..4cd90ed 100644
--- a/testsuite/samples/subshapes-TestRunner.cpp
+++ b/testsuite/samples/subshapes-TestRunner.cpp
@@ -35,11 +35,12 @@
using namespace gnash;
using namespace std;
+TRYMAIN(_runtest);
int
-main(int /*argc*/, char** /*argv*/)
+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);
@@ -115,5 +116,6 @@ main(int /*argc*/, char** /*argv*/)
check_pixel(bbExtT.x, bbExtT.y, 2, white, 1);
check_pixel(bbExtL.x, bbExtL.y, 2, white, 1);
+ return 0;
}
diff --git a/testsuite/samples/test_15bpp_bitmap-TestRunner.cpp b/testsuite/samples/test_15bpp_bitmap-TestRunner.cpp
index 898a4e0..973b4ae 100644
--- a/testsuite/samples/test_15bpp_bitmap-TestRunner.cpp
+++ b/testsuite/samples/test_15bpp_bitmap-TestRunner.cpp
@@ -33,11 +33,12 @@
using namespace gnash;
using namespace std;
+TRYMAIN(_runtest);
int
-main(int /*argc*/, char** /*argv*/)
+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);
@@ -137,5 +138,6 @@ main(int /*argc*/, char** /*argv*/)
check_pixel(lr6.x, lr7.y, 8, white, 1);
+ return 0;
}
diff --git a/testsuite/simultaneous-testrunner.sh b/testsuite/simultaneous-testrunner.sh
index dc089c1..51950e1 100755
--- a/testsuite/simultaneous-testrunner.sh
+++ b/testsuite/simultaneous-testrunner.sh
@@ -18,19 +18,19 @@
#
while getopts c:C: name; do
- case $name in
- c) endtagpat="$OPTARG" ;;
- C) endtagpat="$OPTARG"; endtagexp=X ;;
- ?)
- {
- echo "Usage: $0 [-r <runs>] [-f <advances>] [-c <string>] <swf> ..."
- echo " -c <pattern> : verify that the test ends with a trace "
- echo " matching <pattern>, or print a failure"
- echo " -C <pattern> : same as -c <pattern> but a failure is "
- echo " expected"
- } >&2
- exit 1;;
- esac
+ case $name in
+ c) endtagpat="$OPTARG" ;;
+ C) endtagpat="$OPTARG"; endtagexp=X ;;
+ ?)
+ {
+ echo "Usage: $0 [-r <runs>] [-f <advances>] [-c <string>] <swf> ..."
+ echo " -c <pattern> : verify that the test ends with a trace "
+ echo " matching <pattern>, or print a failure"
+ echo " -C <pattern> : same as -c <pattern> but a failure is "
+ echo " expected"
+ } >&2
+ exit 1;;
+ esac
done
shift $(($OPTIND - 1))
@@ -47,7 +47,7 @@ echo
echo "# Environment"
env | grep GNASH | while read REPLY; do
- echo "export ${REPLY}"
+ echo "export ${REPLY}"
done
timeout=40
@@ -55,32 +55,22 @@ cat << EOF
outlog1=${top_builddir}/testoutlog.\$$
outlog2=${top_builddir}/testoutlog2.\$$
-(
- echo "Running first process"
- ${top_builddir}/gui/gnash -v -r0 ${t1} -t ${timeout} > \${outlog1}
- cat \${outlog1}
- if test "x${endtagpat}" != x; then
- lasttrace=\`grep TRACE \${outlog1} | tail -1 | sed 's/.*TRACE: //'\`
- if ! expr "\${lasttrace}" : '${endtagpat}' > /dev/null; then
- echo "${endtagexp}FAILED: consistency check: last trace from run of test \${t} (\${lasttrace}) doesn't match pattern (${endtagpat})"
- else
- echo "${endtagexp}PASSED: consistency check: last trace from run of test \${t} (\${lasttrace}) matches pattern (${endtagpat})"
- fi
- fi
- rm \${outlog1}
-) &
-(
- echo "Running second process"
- ${top_builddir}/gui/gnash -v -r0 ${t2} -t ${timeout} > \${outlog2}
- cat \${outlog2}
- if test "x${endtagpat}" != x; then
- lasttrace=\`grep TRACE \${outlog2} | tail -1 | sed 's/.*TRACE: //'\`
- if ! expr "\${lasttrace}" : '${endtagpat}' > /dev/null; then
- echo "${endtagexp}FAILED: consistency check: last trace from run of test \${t} (\${lasttrace}) doesn't match pattern (${endtagpat})"
- else
- echo "${endtagexp}PASSED: consistency check: last trace from run of test \${t} (\${lasttrace}) matches pattern (${endtagpat})"
- fi
- fi
- rm \${outlog2}
-)
+
+echo "Running first process"
+${top_builddir}/gui/gnash -vvv -r0 ${t1} -t ${timeout} | tee \${outlog1} &
+echo "Running second process"
+${top_builddir}/gui/gnash -vvv -r0 ${t2} -t ${timeout} | tee \${outlog2} &
+wait
+
+for log in \${outlog1} \${outlog2}; do
+ if test "x${endtagpat}" != x; then
+ lasttrace=\`grep TRACE \$log | tail -1 | sed 's/.*TRACE: //'\`
+ if ! expr "\${lasttrace}" : '${endtagpat}' > /dev/null; then
+ echo "${endtagexp}FAILED: consistency check: last trace from run of test \${t} (\${lasttrace}) doesn't match pattern (${endtagpat})"
+ else
+ echo "${endtagexp}PASSED: consistency check: last trace from run of test \${t} (\${lasttrace}) matches pattern (${endtagpat})"
+ fi
+ fi
+ rm \$log
+done
EOF
diff --git a/testsuite/timingissues b/testsuite/timingissues
index 65305db..307c4c0 100644
--- a/testsuite/timingissues
+++ b/testsuite/timingissues
@@ -4,11 +4,14 @@ FAIL: loadMovieTestRunner: expected: \(red.swf\|blue.swf\|green.jpg\) , obtained
### misc-ming.all - network tests
FAIL: XMLSocketTester: consistency check: last trace from run of test (.*) doesn't match pattern (ENDOFTEST)
FAIL: rtmpytest-runner: consistency check: last trace from run of test rtmpytest.swf (Connecting to rtmp://www.gnashdev.org:9984/rtmpyecho) doesn't match pattern (ENDOFTEST)
-FAIL: oflaDemo-runner: Tests run 34 (expected 17) [undefined]
+FAIL: oflaDemo-runner: Tests run 34 (expected 17) \[undefined\]
## FAIL: LCTestRunner: consistency check: last trace from run of test (.*) doesn't match pattern (ENDOFTEST)
-### misc-mtasc.all/level87.as:72
-FAIL: sanetests-runner: expected: "1" , obtained: "" \[level87.as:[0-9]*\]
+### misc-mtasc.all
+FAIL: sanetests-runner: expected: "undefined" , obtained: "movieclip" \[level87.as:59\]
+FAIL: sanetests-runner: expected: "1" , obtained: "" \[level87.as:75\]
+FAIL: sanetests-runner: expected: "1" , obtained: "" \[level87.as:72\]
### swfdec
FAIL: run_swfdec_testsuite_g: gotolabel-multiple.swf:[0-9a-f]* (traces in gotolabel-multiple.swf.trace-gnash, log in gotolabel-multiple.swf.log)
FAIL: run_swfdec_testsuite_m: movieclip-lockroot-loadmovie-[678].swf:[0-9a-f]* (traces in movieclip-lockroot-loadmovie-[678].swf.trace-gnash, log in movieclip-lockroot-loadmovie-[678].swf.log)
FAIL: run_swfdec_testsuite_m: movieclip-version-[678].swf:[0-9a-f]* (traces in movieclip-version-[678].swf.trace-gnash, log in movieclip-version-[678].swf.log)
+FAIL: run_swfdec_testsuite_s: string-extract-[678].swf:[0-9a-f]* (traces in string-extract-[678].swf.trace-gnash, log in string-extract-[678].swf.log)
diff --git a/utilities/findmicrophones.cpp b/utilities/findmicrophones.cpp
index 4849f2d..ff12763 100644
--- a/utilities/findmicrophones.cpp
+++ b/utilities/findmicrophones.cpp
@@ -48,8 +48,8 @@ class data {
};
data::data() {
- deviceName = NULL;
- deviceType = NULL;
+ deviceName = nullptr;
+ deviceType = nullptr;
};
gint findAudioDevs(std::vector<data*>& audioVect) {
@@ -59,8 +59,8 @@ gint findAudioDevs(std::vector<data*>& audioVect) {
GstElement *element;
element = gst_element_factory_make ("audiotestsrc", "audiotestsrc");
- if (element == NULL) {
- audioVect.push_back(NULL);
+ if (element == nullptr) {
+ audioVect.push_back(nullptr);
numdevs += 1;
} else {
audioVect.push_back(new data);
@@ -72,14 +72,14 @@ gint findAudioDevs(std::vector<data*>& audioVect) {
//pulseaudio src
GstPropertyProbe *probe;
GValueArray *devarr;
- element = NULL;
+ element = nullptr;
element = gst_element_factory_make ("pulsesrc", "pulsesrc");
probe = GST_PROPERTY_PROBE (element);
devarr = gst_property_probe_probe_and_get_values_name (probe, "device");
- for (size_t i = 0; devarr != NULL && i < devarr->n_values; ++i) {
+ for (size_t i = 0; devarr != nullptr && i < devarr->n_values; ++i) {
GValue *val;
- gchar *dev_name = NULL;
+ gchar *dev_name = nullptr;
val = g_value_array_get_nth (devarr, i);
g_object_set (element, "device", g_value_get_string (val), NULL);
@@ -89,7 +89,7 @@ gint findAudioDevs(std::vector<data*>& audioVect) {
if (strcmp(dev_name, "null") == 0) {
g_print("no pulse audio sources found\n");
}
- else if ((strstr(dev_name, "Monitor") != NULL)) {
+ else if ((strstr(dev_name, "Monitor") != nullptr)) {
g_print("ignoring monitor (audio output)");
}
else {
@@ -107,7 +107,7 @@ gint findAudioDevs(std::vector<data*>& audioVect) {
int main () {
//initialize gstreamer to probe for devs
- gst_init(NULL, NULL);
+ gst_init(nullptr, nullptr);
gint numdevs = 0;
std::vector<data*> audioVector;
gint i;
@@ -120,9 +120,9 @@ int main () {
g_print("\nFound %d audio input devices: \n\n", numdevs);
for (i = 0; i < numdevs; ++i)
{
- if (i == 0 && (audioVector[i] != 0)) {
+ if (i == 0 && (audioVector[i] != nullptr)) {
g_print("%d. device[%d] = Audio Test Source (audiotestsrc)\n", i, i);
- } else if (i == 0 && (audioVector[i] == 0)) {
+ } else if (i == 0 && (audioVector[i] == nullptr)) {
g_print("no test audio device available\n");
} else {
g_print("%d. device[%d] = %s (%s)\n", i, i, audioVector[i]->deviceName,
diff --git a/utilities/findwebcams.cpp b/utilities/findwebcams.cpp
index f3ba993..e3bcf63 100644
--- a/utilities/findwebcams.cpp
+++ b/utilities/findwebcams.cpp
@@ -45,8 +45,8 @@ class data {
};
data::data() {
- deviceName = NULL;
- deviceType = NULL;
+ deviceName = nullptr;
+ deviceType = nullptr;
deviceNumber = -1;
duplicate = false;
};
@@ -60,8 +60,8 @@ size_t findVidDevs(std::vector<data*>& vidVect) {
GstElement *element;
element = gst_element_factory_make ("videotestsrc", "vidtestsrc");
- if (element == NULL) {
- vidVect.push_back(NULL);
+ if (element == nullptr) {
+ vidVect.push_back(nullptr);
numdevs += 1;
} else {
vidVect.push_back(new data);
@@ -74,14 +74,14 @@ size_t findVidDevs(std::vector<data*>& vidVect) {
//video4linux source
GstPropertyProbe *probe;
GValueArray *devarr;
- element = NULL;
+ element = nullptr;
element = gst_element_factory_make ("v4lsrc", "v4lvidsrc");
probe = GST_PROPERTY_PROBE (element);
devarr = gst_property_probe_probe_and_get_values_name (probe, "device");
- for (size_t i = 0; devarr != NULL && i < devarr->n_values; ++i) {
+ for (size_t i = 0; devarr != nullptr && i < devarr->n_values; ++i) {
GValue *val;
- gchar *dev_name = NULL;
+ gchar *dev_name = nullptr;
val = g_value_array_get_nth (devarr, i);
g_object_set (element, "device", g_value_get_string (val), NULL);
@@ -105,16 +105,16 @@ size_t findVidDevs(std::vector<data*>& vidVect) {
//video4linux2 source
- probe = NULL;
- element = NULL;
- devarr = NULL;
+ probe = nullptr;
+ element = nullptr;
+ devarr = nullptr;
element = gst_element_factory_make ("v4l2src", "v4l2vidsrc");
probe = GST_PROPERTY_PROBE (element);
devarr = gst_property_probe_probe_and_get_values_name (probe, "device");
- for (size_t i = 0; devarr != NULL && i < devarr->n_values; ++i) {
+ for (size_t i = 0; devarr != nullptr && i < devarr->n_values; ++i) {
GValue *val;
- gchar *dev_name = NULL;
+ gchar *dev_name = nullptr;
val = g_value_array_get_nth (devarr, i);
g_object_set (element, "device", g_value_get_string (val), NULL);
@@ -149,7 +149,7 @@ size_t findVidDevs(std::vector<data*>& vidVect) {
int main () {
//initialize gstreamer to probe for devs
- gst_init(NULL, NULL);
+ gst_init(nullptr, nullptr);
size_t numdevs = 0;
std::vector<data*> vidVector;
@@ -177,11 +177,11 @@ int main () {
gint counter = 0;
for (size_t i = 0; i < numdevs; ++i)
{
- if (i == 0 && (vidVector[i] != 0)) {
+ if (i == 0 && (vidVector[i] != nullptr)) {
std::cout << " " << i
<< ". Video Test Source (videotestsrc)" << std::endl;
counter++;
- } else if (i == 0 && (vidVector[i] == 0)) {
+ } else if (i == 0 && (vidVector[i] == nullptr)) {
std::cout << "no test video device available";
} else {
if (vidVector[i]->duplicate != true) {
diff --git a/utilities/flvdumper.cpp b/utilities/flvdumper.cpp
index e211f34..e941b43 100644
--- a/utilities/flvdumper.cpp
+++ b/utilities/flvdumper.cpp
@@ -1,5 +1,5 @@
//
-// Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
+// Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2014
// Free Software Foundation, Inc
//
// This program is free software; you can redistribute it and/or modify
@@ -23,7 +23,6 @@
#include "GnashFileUtilities.h"
#include "GnashSystemNetHeaders.h"
-#include <boost/shared_ptr.hpp>
#include <dirent.h>
#include <iostream>
#include <cstdarg>
@@ -123,7 +122,7 @@ main(int argc, char *argv[])
// Enable native language support, i.e. internationalization
#ifdef ENABLE_NLS
- std::setlocale (LC_ALL, "");
+ setlocale (LC_ALL, "");
bindtextdomain (PACKAGE, LOCALEDIR);
textdomain (PACKAGE);
#endif
@@ -186,20 +185,20 @@ main(int argc, char *argv[])
Flv flv;
struct stat st;
-// boost::shared_ptr<Flv::flv_header_t> head;
+// std::shared_ptr<Flv::flv_header_t> head;
Flv::previous_size_t previous = 0;
- boost::shared_ptr<Flv::flv_tag_t> tag;
+ std::shared_ptr<Flv::flv_tag_t> tag;
// Make sure it's an FLV file
if (stat(filespec.c_str(), &st) == 0) {
try {
// Open the binary file
ifstream ifs(filespec.c_str(), ios::binary);
- boost::shared_ptr<cygnal::Buffer> buf(new Buffer);
+ std::shared_ptr<cygnal::Buffer> buf(new Buffer);
// Read just the initial 9 byte header
ifs.read(reinterpret_cast<char *>(buf->reference()), sizeof(Flv::flv_header_t));
log_debug("header is: %s", hexify(buf->reference(), 9, false));
- boost::shared_ptr<Flv::flv_header_t> head = flv.decodeHeader(buf);
+ std::shared_ptr<Flv::flv_header_t> head = flv.decodeHeader(buf);
if (head == 0) {
log_error("Couldn't decode the header! %s", hexify(buf->reference(), 9, false));
exit(EXIT_FAILURE);
@@ -213,7 +212,7 @@ main(int argc, char *argv[])
}
cout << "FLV Version: " << int(head->version) << " (should always be 1)" << endl;
- boost::uint32_t headsize = flv.convert24(head->head_size);
+ std::uint32_t headsize = flv.convert24(head->head_size);
if (all) {
cout << "FLV Header size: " << headsize << " (should always be 9)" << endl;
}
@@ -259,7 +258,7 @@ main(int argc, char *argv[])
{
if (all) {
cerr << "FLV Tag type is: Audio" << endl;
- boost::shared_ptr<Flv::flv_audio_t> data = flv.decodeAudioData(*(buf->reference() + sizeof(Flv::flv_tag_t)));
+ std::shared_ptr<Flv::flv_audio_t> data = flv.decodeAudioData(*(buf->reference() + sizeof(Flv::flv_tag_t)));
cout << "\tSound Type is: " << type_strs[data->type] << endl;
cout << "\tSound Size is: " << size_strs[data->size] << endl;
cout << "\tSound Rate is: " << rate_strs[data->rate] << endl;
@@ -271,7 +270,7 @@ main(int argc, char *argv[])
{
if (all) {
cout << "FLV Tag type is: Video" << endl;
- boost::shared_ptr<Flv::flv_video_t> data = flv.decodeVideoData(*(buf->reference() + sizeof(Flv::flv_tag_t)));
+ std::shared_ptr<Flv::flv_video_t> data = flv.decodeVideoData(*(buf->reference() + sizeof(Flv::flv_tag_t)));
cout << "\tCodec ID is: " << codec_strs[data->codecID] << endl;
cout << "\tFrame Type is: " << frame_strs[data->type] << endl;
}
@@ -281,7 +280,7 @@ main(int argc, char *argv[])
if (meta || all) {
cout << "FLV Tag type is: MetaData" << endl;
}
- boost::shared_ptr<cygnal::Element> metadata = flv.decodeMetaData(buf->reference(), bodysize);
+ std::shared_ptr<cygnal::Element> metadata = flv.decodeMetaData(buf->reference(), bodysize);
if (meta && metadata) {
metadata->dump();
}
diff --git a/utilities/processor.cpp b/utilities/processor.cpp
index c671a39..7ab5ec9 100644
--- a/utilities/processor.cpp
+++ b/utilities/processor.cpp
@@ -1,6 +1,6 @@
// processor.cpp: Flash movie processor (gprocessor command), for Gnash.
//
-// Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
+// Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2014
// Free Software Foundation, Inc
//
// This program is free software; you can redistribute it and/or modify
@@ -51,6 +51,8 @@
#include "StringPredicates.h"
#include "IOChannel.h" // for proper dtor call
#include "GnashSleep.h" // for usleep compatibility.
+#include "GnashFactory.h"
+#include "MediaHandler.h"
#include "StreamProvider.h"
#include "RunResources.h"
#include "HostInterface.h"
@@ -224,7 +226,7 @@ main(int argc, char *argv[])
// Enable native language support, i.e. internationalization
#ifdef ENABLE_NLS
- std::setlocale (LC_ALL, "");
+ setlocale (LC_ALL, "");
bindtextdomain (PACKAGE, LOCALEDIR);
textdomain (PACKAGE);
#endif
@@ -332,33 +334,28 @@ main(int argc, char *argv[])
}
#ifdef USE_MEDIA
- boost::shared_ptr<gnash::media::MediaHandler> mediaHandler;
+ std::shared_ptr<gnash::media::MediaHandler> mediaHandler;
std::string mh = rcfile.getMediaHandler();
mediaHandler.reset(media::MediaFactory::instance().get(mh));
#endif
#if defined(USE_SOUND) && defined(USE_MEDIA)
- boost::shared_ptr<sound::sound_handler> soundHandler;
+ std::shared_ptr<sound::sound_handler> soundHandler;
soundHandler.reset(new sound::NullSoundHandler(mediaHandler.get()));
#endif
- boost::shared_ptr<SWF::TagLoadersTable> loaders(new SWF::TagLoadersTable());
+ std::shared_ptr<SWF::TagLoadersTable> loaders(
+ std::make_shared<SWF::TagLoadersTable>());
addDefaultLoaders(*loaders);
#ifdef RENDERER_AGG
- boost::shared_ptr<Renderer_agg_base> r(create_Renderer_agg("RGBA32"));
+ unsigned char buf[8] = {};
+ std::shared_ptr<Renderer_agg_base> r(create_Renderer_agg("RGBA32"));
- // Yes, this leaks. On some systems (e.g. Debian Lenny) the data is
- // evidently accessed after main() returns. Rather than bothering to
- // work out why, we let this byte leak, as it's returned to the system on
- // exit anyway.
- unsigned char* buf = new unsigned char[8];
r->init_buffer(buf, 1, 1, 1, 1);
#endif
// Play through all the movies.
- for (std::vector<std::string>::const_iterator i = infiles.begin(),
- e = infiles.end(); i != e; ++i)
- {
+ for (const std::string& file : infiles) {
RunResources runResources;
#if defined(USE_SOUND) && defined(USE_MEDIA)
@@ -368,18 +365,19 @@ main(int argc, char *argv[])
runResources.setMediaHandler(mediaHandler);
#endif
runResources.setTagLoaders(loaders);
- boost::shared_ptr<StreamProvider> sp(new StreamProvider(*i, *i));
+ std::shared_ptr<StreamProvider> sp =
+ std::make_shared<StreamProvider>(file, file);
runResources.setStreamProvider(sp);
#ifdef RENDERER_AGG
runResources.setRenderer(r);
#endif
- bool success = play_movie(*i, runResources);
+ bool success = play_movie(file, runResources);
if (!success) {
if (s_stop_on_errors) {
// Fail.
- std::cerr << "error playing through movie " << *i << std::endl;
+ std::cerr << "error playing through movie " << file << std::endl;
return EXIT_FAILURE;
}
}
@@ -419,7 +417,7 @@ struct SamplesFetcher {
//log_debug("SamplesFetcher::fetch(%d) fetching %d samples", ms, toFetch);
- boost::int16_t samples[1024];
+ std::int16_t samples[1024];
while (toFetch) {
unsigned int n = std::min(toFetch, 1024u);
_sh.fetchSamples(samples, n);
@@ -436,9 +434,11 @@ bool
play_movie(const std::string& filename, const RunResources& runResources)
{
+#if USE_SOUND
sound::sound_handler* sh = runResources.soundHandler();
sh->reset();
SamplesFetcher sFetcher(*sh);
+#endif
boost::intrusive_ptr<gnash::movie_definition> md;
@@ -450,9 +450,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
{
@@ -530,7 +530,9 @@ play_movie(const std::string& filename, const RunResources& runResources)
//printf("advancing clock by %lu\n", clockAdvance);
cl.advance(clockAdvance);
m.advance();
+#if USE_SOUND
sFetcher.fetch(cl.elapsed());
+#endif
if ( quitrequested )
{
diff --git a/utilities/rtmpget.cpp b/utilities/rtmpget.cpp
index 985ea2f..08b8845 100644
--- a/utilities/rtmpget.cpp
+++ b/utilities/rtmpget.cpp
@@ -27,7 +27,7 @@
#include "GnashSleep.h"
#include "URL.h"
-#include <boost/cstdint.hpp>
+#include <cstdint>
#include <iomanip>
#include <map>
#include <algorithm>
@@ -182,8 +182,8 @@ writeFLVHeader(std::ostream& o)
}
-bool handleInvoke(rtmp::RTMP& r, FakeNC& nc, const boost::uint8_t* payload,
- const boost::uint8_t* end);
+bool handleInvoke(rtmp::RTMP& r, FakeNC& nc, const std::uint8_t* payload,
+ const std::uint8_t* end);
/// These functions create an RTMP call buffer and send it. They mimic
/// NetConnection.call() methods and replies to server calls.
@@ -514,7 +514,7 @@ main(int argc, char** argv)
}
/// Retrieve messages.
- boost::shared_ptr<SimpleBuffer> b = r.getMessage();
+ std::shared_ptr<SimpleBuffer> b = r.getMessage();
while (b.get()) {
handleInvoke(r, nc, b->data() + rtmp::RTMPHeader::headerSize,
b->data() + b->size());
@@ -522,7 +522,7 @@ main(int argc, char** argv)
}
/// Retrieve video packets.
- boost::shared_ptr<SimpleBuffer> f = r.getFLVFrame();
+ std::shared_ptr<SimpleBuffer> f = r.getFLVFrame();
while (f.get()) {
if (flv) {
const char* start = reinterpret_cast<const char*>(
@@ -538,8 +538,8 @@ main(int argc, char** argv)
}
bool
-handleInvoke(rtmp::RTMP& r, FakeNC& nc, const boost::uint8_t* payload,
- const boost::uint8_t* end)
+handleInvoke(rtmp::RTMP& r, FakeNC& nc, const std::uint8_t* payload,
+ const std::uint8_t* end)
{
assert(payload != end);
diff --git a/utilities/soldumper.cpp b/utilities/soldumper.cpp
index 68f12f0..cace760 100644
--- a/utilities/soldumper.cpp
+++ b/utilities/soldumper.cpp
@@ -1,5 +1,5 @@
//
-// Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
+// Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2014
// Free Software Foundation, Inc
//
// This program is free software; you can redistribute it and/or modify
@@ -91,7 +91,7 @@ main(int argc, char *argv[])
// Enable native language support, i.e. internationalization
#ifdef ENABLE_NLS
- std::setlocale (LC_ALL, "");
+ setlocale (LC_ALL, "");
bindtextdomain (PACKAGE, LOCALEDIR);
textdomain (PACKAGE);
#endif
@@ -163,19 +163,19 @@ main(int argc, char *argv[])
} else {
dirname = rcfile.getSOLSafeDir().c_str();
}
- DIR *library_dir = NULL;
+ DIR *library_dir = nullptr;
library_dir = opendir (dirname);
- if (library_dir != NULL) {
+ if (library_dir != nullptr) {
// By convention, the first two entries in each directory are
// for . and .. (``dot'' and ``dot dot''), so we ignore those. The
// next directory read will get a real file, if any exists.
entry = readdir(library_dir);
entry = readdir(library_dir);
}
- if (library_dir != NULL) {
+ if (library_dir != nullptr) {
for (i=0; entry>static_cast<struct dirent *>(0); i++) {
entry = readdir(library_dir);
- if (entry != NULL) {
+ if (entry != nullptr) {
//string::size_type pos;
if (strstr(entry->d_name, ".sol")) {
cout << "Found SOL: " << entry->d_name << endl;
hooks/post-receive
--
GNU Shockwave Flash (SWF) player
More information about the pkg-flash-devel
mailing list