From f04b2e05a32f810ebe66b7b3a15f37b532ce2dc0 Mon Sep 17 00:00:00 2001 From: houxiao <houxiao@454eff88-639b-444f-9e54-f578c98de674> Date: 星期四, 22 十二月 2016 17:27:31 +0800 Subject: [PATCH] add pl emements --- RtspFace/PipeLine.cpp | 24 +++++++++++++++++------- 1 files changed, 17 insertions(+), 7 deletions(-) diff --git a/RtspFace/PipeLine.cpp b/RtspFace/PipeLine.cpp index 6f53b19..16f5ee1 100644 --- a/RtspFace/PipeLine.cpp +++ b/RtspFace/PipeLine.cpp @@ -77,7 +77,7 @@ uint8_t pmPlacement[sizeof(PipeMaterial)]; if (pm == nullptr) pm = new (pmPlacement) PipeMaterial; - + if (elems.size() == 1) { elem_begin->gain(*pm); @@ -85,24 +85,34 @@ } else if (elems.size() == 2) { - elem_begin->gain(*pm); - elem_last->pay(*pm); + if (elem_begin->gain(*pm)) + elem_last->pay(*pm); + else + return elem_begin; return elem_last; } else { - elem_begin->gain(*pm); + if (!elem_begin->gain(*pm)) + return elem_begin; + bool lastRet = true; elem_vec_t::iterator iter = elems.begin(); + ++iter; + elem_begin = *iter; while (elem_begin != elem_last) { + if (lastRet && (lastRet = elem_begin->pay(*pm)) ) + lastRet = elem_begin->gain(*pm); + else + return elem_begin; + ++iter; elem_begin = *iter; - elem_begin->pay(*pm); - elem_begin->gain(*pm); } - elem_last->pay(*pm); + if (lastRet) + elem_last->pay(*pm); return elem_last; } -- Gitblit v1.8.0