From 48fee4ebb26e644408252d5fd6bfc67eeb15556b Mon Sep 17 00:00:00 2001 From: Sascha Volkenandt Date: Fri, 4 May 2007 20:59:05 +0000 Subject: - added grab abfrage ob kann --- grab.cpp | 42 ++++++++++++++++++++++++++++++++---------- grab.h | 1 + pages/remote.ecpp | 7 ++++++- 3 files changed, 39 insertions(+), 11 deletions(-) diff --git a/grab.cpp b/grab.cpp index 211cee9..a89c852 100644 --- a/grab.cpp +++ b/grab.cpp @@ -22,6 +22,7 @@ public: {} void Activate() { m_firstTime = 0; } + bool IsActive(); private: uint64_t m_firstTime; @@ -29,34 +30,50 @@ private: int m_quality; int m_width; int m_height; + + bool GrabImage(); virtual void Action(); }; -void GrabImageTask::Action() +bool GrabImageTask::IsActive() { - uint64_t now = cTimeMs::Now(); - - if ( m_firstTime == 0 ) - m_firstTime = now; - - if ( now - m_lastTime < GrabMinIntervalMs || now - m_firstTime > GrabPauseIntervalMs ) - return; + cMutexLock lock( &LiveTaskManager() ); + return GrabImage(); +} +bool GrabImageTask::GrabImage() +{ cDevice* device = cDevice::PrimaryDevice(); if ( device == 0 ) { SetError( tr("Couldn't aquire primary device") ); - return; + return false; } int size = 0; uchar* image = device->GrabImage( size, true, m_quality, m_width, m_height ); if ( image == 0 ) { SetError( tr("Couldn't grab image from primary device") ); - return; + return false; } LiveGrabImageManager().PutImage( reinterpret_cast< char* >( image ), size ); + return true; +} + +void GrabImageTask::Action() +{ + uint64_t now = cTimeMs::Now(); + + if ( m_firstTime == 0 ) + m_firstTime = now; + + if ( now - m_lastTime < GrabMinIntervalMs || now - m_firstTime > GrabPauseIntervalMs ) + return; + + if ( !GrabImage() ) + return; + m_lastTime = now; } @@ -74,6 +91,11 @@ GrabImageInfo GrabImageManager::GetImage() const return make_pair( m_image, m_size ); } +bool GrabImageManager::CanGrab() const +{ + return m_task->IsActive(); +} + void GrabImageManager::PutImage( char* image, int size ) { m_image.reset( image, &free ); diff --git a/grab.h b/grab.h index d583ef0..c5ffccd 100644 --- a/grab.h +++ b/grab.h @@ -17,6 +17,7 @@ class GrabImageManager friend class GrabImageTask; public: + bool CanGrab() const; GrabImageInfo GetImage() const; private: diff --git a/pages/remote.ecpp b/pages/remote.ecpp index 3ab8c35..5a0e4b8 100644 --- a/pages/remote.ecpp +++ b/pages/remote.ecpp @@ -2,6 +2,7 @@ #include #include #include "setup.h" +#include "grab.h" using namespace vdrlive; @@ -75,7 +76,11 @@ if (!logged_in && LiveSetup().UseAuth()) return reply.redirect("login.html"); <& menu active="remote" component=("remote.remote_actions")>
-
+<{ if (!LiveGrabImageManager().CanGrab()) { }> + bloek +<{ } else { }> +
+<{ } }>
-- cgit v1.2.3