From c0f9fd250f68e77bec5d5ce4a059e9441cc27f60 Mon Sep 17 00:00:00 2001
From: Thulinma <jaron@vietors.com>
Date: Wed, 22 Jul 2015 14:55:59 +0200
Subject: [PATCH] Fixed some shared memory buffers not being cleared properly.

---
 src/input/input.cpp | 15 ++++-----------
 src/io.cpp          |  4 ----
 2 files changed, 4 insertions(+), 15 deletions(-)

diff --git a/src/input/input.cpp b/src/input/input.cpp
index 77e6d78e..01f99fc4 100644
--- a/src/input/input.cpp
+++ b/src/input/input.cpp
@@ -327,18 +327,11 @@ namespace Mist {
       return true;
     }
     if (keyNum < 1){keyNum = 1;}
-    if (isBuffered(track, keyNum)){
-      //get corresponding page number
-      int pageNumber = 0;
-      for (std::map<unsigned long, DTSCPageData>::iterator it = pagesByTrack[track].begin(); it != pagesByTrack[track].end(); it++){
-        if (it->first <= keyNum){
-          pageNumber = it->first;
-        }else{
-          break;
-        }
-      }
+    //abort in case already buffered
+    int pageNumber = bufferedOnPage(track, keyNum);
+    if (pageNumber){
       pageCounter[track][pageNumber] = 15;
-      VERYHIGH_MSG("Key %u is already buffered in page %d. Cancelling bufferFrame", keyNum, pageNumber); 
+      VERYHIGH_MSG("Track %u, key %u is already buffered in page %d. Cancelling bufferFrame", track, keyNum, pageNumber); 
       return true;
     }
     if (!pagesByTrack.count(track)){
diff --git a/src/io.cpp b/src/io.cpp
index 03bc2bc8..c51c1f03 100644
--- a/src/io.cpp
+++ b/src/io.cpp
@@ -127,10 +127,6 @@ namespace Mist {
       //A different process will handle this for us
       return;
     }
-    //Do nothing if the page is not buffered
-    if (!isBuffered(tid, pageNumber)) {
-      return;
-    }
     unsigned long mapTid = trackMap[tid];
     //If the given pagenumber is not a valid page on this track, do nothing
     if (!pagesByTrack[tid].count(pageNumber)){