]> git.sesse.net Git - bmusb/blobdiff - bmusb.cpp
Stop leaking memory allocators.
[bmusb] / bmusb.cpp
index 48bdcae3c41516815cb31a9d1cafb9a015d28f1c..3aac81e5e34e5de7459585630635eab8a460d25a 100644 (file)
--- a/bmusb.cpp
+++ b/bmusb.cpp
@@ -782,10 +782,12 @@ libusb_device_handle *open_card(int card_index, string *description)
 void BMUSBCapture::configure_card()
 {
        if (video_frame_allocator == nullptr) {
-               set_video_frame_allocator(new MallocFrameAllocator(FRAME_SIZE, NUM_QUEUED_VIDEO_FRAMES));  // FIXME: leak.
+               owned_video_frame_allocator.reset(new MallocFrameAllocator(FRAME_SIZE, NUM_QUEUED_VIDEO_FRAMES));
+               set_video_frame_allocator(owned_video_frame_allocator.get());
        }
        if (audio_frame_allocator == nullptr) {
-               set_audio_frame_allocator(new MallocFrameAllocator(65536, NUM_QUEUED_AUDIO_FRAMES));  // FIXME: leak.
+               owned_audio_frame_allocator.reset(new MallocFrameAllocator(65536, NUM_QUEUED_AUDIO_FRAMES));
+               set_audio_frame_allocator(owned_audio_frame_allocator.get());
        }
        dequeue_thread_should_quit = false;
        dequeue_thread = thread(&BMUSBCapture::dequeue_thread_func, this);