From ad876b0d8c960eac96278528b08d8d78dfb27562 Mon Sep 17 00:00:00 2001 From: "T.van der Zwan" Date: Thu, 3 Sep 2015 21:37:49 +0200 Subject: [PATCH] Fixed json value lookup Only close the amlogic device every 20th succesfull reads. Former-commit-id: 46c0cf1465b8c8b33d696bb2aeac5cabb1cb2819 --- libsrc/grabber/amlogic/AmlogicGrabber.cpp | 19 +++++++++++++++---- src/hyperiond/hyperiond.cpp | 2 +- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/libsrc/grabber/amlogic/AmlogicGrabber.cpp b/libsrc/grabber/amlogic/AmlogicGrabber.cpp index dd727217..8eaa9799 100644 --- a/libsrc/grabber/amlogic/AmlogicGrabber.cpp +++ b/libsrc/grabber/amlogic/AmlogicGrabber.cpp @@ -122,6 +122,8 @@ int AmlogicGrabber::grabFrame(Image & image) { // Failed to configure frame width std::cerr << "[" << __PRETTY_FUNCTION__ << "] Failed to configure capture size (" << errno << "): " << strerror(errno) << std::endl; + close(_amlogicCaptureDev); + _amlogicCaptureDev = -1; return -1; } @@ -133,18 +135,27 @@ int AmlogicGrabber::grabFrame(Image & image) if (bytesRead == -1) { std::cerr << "[" << __PRETTY_FUNCTION__ << "] Read of device failed (erno=" << errno << "): " << strerror(errno) << std::endl; + close(_amlogicCaptureDev); + _amlogicCaptureDev = -1; return -1; } else if (bytesToRead != bytesRead) { // Read of snapshot failed std::cerr << "[" << __PRETTY_FUNCTION__ << "] Capture failed to grab entire image [bytesToRead(" << bytesToRead << ") != bytesRead(" << bytesRead << ")]" << std::endl; + close(_amlogicCaptureDev); + _amlogicCaptureDev = -1; return -1; } - // For now we always close the device again - close(_amlogicCaptureDev); - _amlogicCaptureDev = -1; - + // For now we always close the device now and again + static int readCnt = 0; + ++readCnt; + if (readCnt > 20) + { + close(_amlogicCaptureDev); + _amlogicCaptureDev = -1; + readCnt = 0; + } return 0; } diff --git a/src/hyperiond/hyperiond.cpp b/src/hyperiond/hyperiond.cpp index 7fccc2e6..7357d55f 100644 --- a/src/hyperiond/hyperiond.cpp +++ b/src/hyperiond/hyperiond.cpp @@ -274,7 +274,7 @@ int main(int argc, char** argv) FramebufferWrapper * fbGrabber = nullptr; if (config.isMember("framebuffergrabber") || config.isMember("framegrabber")) { - const Json::Value & grabberConfig = config.isMember("framebuffergrabber")? config["framebuffergrabber"] : config.isMember("framegrabber"); + const Json::Value & grabberConfig = config.isMember("framebuffergrabber")? config["framebuffergrabber"] : config["framegrabber"]; fbGrabber = new FramebufferWrapper( grabberConfig.get("device", "/dev/fb0").asString(), grabberConfig["width"].asUInt(),