]> git.sesse.net Git - nageru/blobdiff - cef_capture.h
Implement HTMLInput::set_max_fps().
[nageru] / cef_capture.h
index dc74b30d527c4c28d6d54cb2ec1431ed77039fde..be5402fda9deb31c0a94cfe756b056250c999fe4 100644 (file)
@@ -69,6 +69,10 @@ public:
                return card_index;
        }
 
+       void set_url(const std::string &url);
+       void reload();
+       void set_max_fps(int max_fps);
+
        void OnPaint(const void *buffer, int width, int height);
 
        // CaptureInterface.
@@ -145,6 +149,8 @@ public:
        uint32_t get_current_audio_input() const override { return 0; }
 
 private:
+       void post_to_cef_ui_thread(std::function<void()> &&func);
+
        CefRefPtr<NageruCEFClient> cef_client;
        unsigned width, height;
        int card_index = -1;
@@ -158,6 +164,13 @@ private:
        bmusb::frame_callback_t frame_callback = nullptr;
 
        std::string description, start_url;
+       std::atomic<int> max_fps{60};
+
+       std::mutex browser_mutex;
+       CefRefPtr<CefBrowser> browser;  // Under <browser_mutex>.
+
+       // Tasks waiting for <browser> to get ready. Under <browser_mutex>.
+       std::vector<std::function<void()>> deferred_tasks;
 
        int timecode = 0;
 };