From 4a01eed1921b8cd8b8f098ab234ebf75d681b0a9 Mon Sep 17 00:00:00 2001 From: deva Date: Tue, 18 Oct 2005 14:21:17 +0000 Subject: *** empty log message *** --- src/camera.cc | 2 +- src/encoder.cc | 9 +++++++++ src/encoder.h | 1 + 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/camera.cc b/src/camera.cc index d24f9af..85ef404 100644 --- a/src/camera.cc +++ b/src/camera.cc @@ -127,8 +127,8 @@ void Camera::stop(n_savestate save) { if(initialized) { player->stoprecord(); // For the textoverlay - decoder->stop(save); encoder->stop(save); + decoder->stop(save); } else { info->error("Camera not initialized."); } diff --git a/src/encoder.cc b/src/encoder.cc index b4227b0..4898888 100644 --- a/src/encoder.cc +++ b/src/encoder.cc @@ -35,6 +35,7 @@ #include #ifdef USE_GUI +#include "util.h" #include "encoder.h" Encoder::Encoder(Info *ginfo, @@ -65,6 +66,7 @@ Encoder::Encoder(Info *ginfo, frozen = false; + savestate_sent = false; savestate = NO_CHANGE; // shoot_request = 0; @@ -113,6 +115,8 @@ void Encoder::encode() n_header h; + if(savestate != NO_CHANGE) savestate_sent = true; + h.header_type = DATA_HEADER; sprintf(h.header.h_data.cpr, cpr); h.header.h_data.freeze = frame->freeze; @@ -223,6 +227,11 @@ void Encoder::start() void Encoder::stop(n_savestate save) { savestate = save; + // Don't return until we are sure the savestate has been sent. + while(savestate_sent == false) { + // Just wait a while (in a while!) + sleep_0_2_frame(); + } /* struct timespec ts; // TODO: set save state in package header. diff --git a/src/encoder.h b/src/encoder.h index 2aa8729..a8ffcc5 100644 --- a/src/encoder.h +++ b/src/encoder.h @@ -103,6 +103,7 @@ private: // volatile int freeze_request; // int freeze_value; + volatile bool savestate_sent; volatile n_savestate savestate; sem_t record_sem; -- cgit v1.2.3