]> git.sesse.net Git - casparcg/blobdiff - core/producer/image/image_scroll_producer.cpp
2.0.0.2:
[casparcg] / core / producer / image / image_scroll_producer.cpp
index ee1243a3283650d081704ee19efb5cae6795033e..605b9472fddf428faee3afa6464fa860293bbf15 100644 (file)
@@ -63,6 +63,12 @@ struct image_scroll_producer : public frame_producer
 \r
                speed_ = static_cast<int>(abs(static_cast<double>(speed_) / format_desc.fps));\r
        }\r
+       \r
+       ~image_scroll_producer()\r
+       {\r
+               if(factory_)\r
+                       factory_->release_frames(this);\r
+       }\r
 \r
        void load_and_pad_image(const std::wstring& filename)\r
        {\r
@@ -80,12 +86,12 @@ struct image_scroll_producer : public frame_producer
                unsigned char* pBits = FreeImage_GetBits(pBitmap.get());\r
                \r
                for (size_t i = 0; i < height; ++i)\r
-                       common::aligned_memcpy(&image_.get()[i * image_width_ * 4], &pBits[i* width * 4], width * 4);\r
+                       common::aligned_parallel_memcpy(&image_.get()[i * image_width_ * 4], &pBits[i* width * 4], width * 4);\r
        }\r
 \r
        gpu_frame_ptr render_frame()\r
        {\r
-               gpu_frame_ptr frame = factory_->create_frame(format_desc_);\r
+               gpu_frame_ptr frame = factory_->create_frame(format_desc_, this);\r
                common::clear(frame->data(), frame->size());\r
 \r
                const int delta_x = direction_ == direction::Left ? speed_ : -speed_;\r