summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSascha Volkenandt <sascha (at) akv-soft (dot) de>2007-05-04 20:59:05 +0000
committerSascha Volkenandt <sascha (at) akv-soft (dot) de>2007-05-04 20:59:05 +0000
commit48fee4ebb26e644408252d5fd6bfc67eeb15556b (patch)
tree63060297b9cda9eb67a9c76b74e3156718dc7e2e
parent9768f3ab067bd56dc83a14b3955f5d371707106e (diff)
downloadvdr-plugin-live-48fee4ebb26e644408252d5fd6bfc67eeb15556b.tar.gz
vdr-plugin-live-48fee4ebb26e644408252d5fd6bfc67eeb15556b.tar.bz2
- added grab abfrage ob kann
-rw-r--r--grab.cpp42
-rw-r--r--grab.h1
-rw-r--r--pages/remote.ecpp7
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 <vdr/i18n.h>
#include <vdr/keys.h>
#include "setup.h"
+#include "grab.h"
using namespace vdrlive;
</%pre>
@@ -75,7 +76,11 @@ if (!logged_in && LiveSetup().UseAuth()) return reply.redirect("login.html");
<& menu active="remote" component=("remote.remote_actions")>
<div class="inhalt">
<div class="screenshot">
- <img src="screenshot.jpg" name="vdrlive" /><br />
+<{ if (!LiveGrabImageManager().CanGrab()) { }>
+ bloek
+<{ } else { }>
+ <img src="screenshot.jpg" name="vdrlive" /><br />
+<{ } }>
</div>
<div>
<img src="remotecontrol.jpg" width="162" height="363" border="0" usemap="#remote" />