]> git.sesse.net Git - casparcg/commitdiff
git-svn-id: https://casparcg.svn.sourceforge.net/svnroot/casparcg/server/branches...
authorronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Fri, 26 Aug 2011 08:32:20 +0000 (08:32 +0000)
committerronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Fri, 26 Aug 2011 08:32:20 +0000 (08:32 +0000)
core/mixer/image/image_mixer.cpp

index 25b2352887132a0597639825d32404f9374eb33f..fa242c56b7a30139379d158e87958321e99e6f17 100644 (file)
@@ -89,16 +89,14 @@ private:
 \r
                        BOOST_FOREACH(auto& layer, upper)\r
                        {\r
-                               boost::remove_erase_if(layer.second, [](const item& item){return !(item.transform.field_mode & field_mode::upper);});\r
                                BOOST_FOREACH(auto& item, layer.second)\r
-                                       item.transform.field_mode = field_mode::upper;\r
+                                       item.transform.field_mode = static_cast<field_mode::type>(item.transform.field_mode & field_mode::upper);\r
                        }\r
 \r
                        BOOST_FOREACH(auto& layer, lower)\r
                        {\r
-                               boost::remove_erase_if(layer.second, [](const item& item){return !(item.transform.field_mode & field_mode::lower);});\r
                                BOOST_FOREACH(auto& item, layer.second)\r
-                                       item.transform.field_mode = field_mode::lower;\r
+                                       item.transform.field_mode = static_cast<field_mode::type>(item.transform.field_mode & field_mode::lower);\r
                        }\r
 \r
                        draw(std::move(upper), draw_buffer);\r
@@ -113,7 +111,7 @@ private:
                channel_.ogl().attach(*draw_buffer);\r
                host_buffer->begin_read(draw_buffer->width(), draw_buffer->height(), format(draw_buffer->stride()));\r
                \r
-               active_buffer_ = draw_buffer;\r
+               active_buffer_ = std::move(draw_buffer);\r
 \r
                channel_.ogl().flush(); // NOTE: This is important, otherwise fences will deadlock.\r
                        \r
@@ -133,6 +131,8 @@ private:
                                        safe_ptr<device_buffer>&                draw_buffer,\r
                                        std::shared_ptr<device_buffer>& layer_key_buffer)\r
        {                               \r
+               boost::remove_erase_if(layer.second, [](const item& item){return item.transform.field_mode == field_mode::empty;});\r
+\r
                if(layer.second.empty())\r
                        return;\r
 \r
@@ -157,7 +157,7 @@ private:
                        draw_mixer_buffer(draw_buffer, std::move(local_mix_buffer), blend_mode::normal);\r
                }                                       \r
 \r
-               std::swap(local_key_buffer, layer_key_buffer);\r
+               layer_key_buffer = std::move(local_key_buffer);\r
        }\r
 \r
        void draw_item(item&&                                                   item, \r
@@ -205,7 +205,9 @@ private:
                }       \r
        }\r
 \r
-       void draw_mixer_buffer(safe_ptr<device_buffer>& draw_buffer, std::shared_ptr<device_buffer>&& source_buffer, blend_mode::type blend_mode = blend_mode::normal)\r
+       void draw_mixer_buffer(safe_ptr<device_buffer>&                 draw_buffer, \r
+                                                  std::shared_ptr<device_buffer>&& source_buffer, \r
+                                                  blend_mode::type                                     blend_mode = blend_mode::normal)\r
        {\r
                if(!source_buffer)\r
                        return;\r
@@ -255,9 +257,6 @@ public:
                \r
        void visit(core::write_frame& frame)\r
        {                       \r
-               if(frame.get_frame_transform().field_mode == field_mode::empty)\r
-                       return;\r
-\r
                item item;\r
                item.pix_desc   = frame.get_pixel_format_desc();\r
                item.textures   = frame.get_textures();\r