+ if (video_frame.data == nullptr) {
+ // We lost a frame, so we need to invalidate the entire thing.
+ // (CEF only sends OnPaint when there are actual changes,
+ // so we need to do this explicitly, or we could be stuck on an
+ // old frame forever if the image doesn't change.)
+ //
+ // By adding a delay, we make sure we don't get a new frame
+ // delivered immediately (we probably already are on the UI thread),
+ // where we couldn't really deal with it.
+ post_to_cef_ui_thread([this] {
+ lock_guard<recursive_mutex> lock(browser_mutex);
+ if (browser != nullptr) { // Could happen if we are shutting down.
+ browser->GetHost()->Invalidate(PET_VIEW);
+ }
+ }, 16);
+ ++timecode;
+ } else {