1
0
mirror of https://github.com/VDR4Arch/vdr.git synced 2023-10-10 13:36:52 +02:00

Fixed cMarks::GetNextBegin() and cMarks::GetNextEnd()

This commit is contained in:
Klaus Schmidinger 2015-02-05 14:24:35 +01:00
parent f60d90aeb6
commit ad45f801d5
2 changed files with 7 additions and 3 deletions

View File

@ -8502,3 +8502,7 @@ Video Disk Recorder Revision History
on a suggestion by Thomas Reufer). on a suggestion by Thomas Reufer).
- Updated sources.conf to reflect the fact that Astra 4A and SES5 are actually in - Updated sources.conf to reflect the fact that Astra 4A and SES5 are actually in
two separate positions (thanks to Arthur Konovalov). two separate positions (thanks to Arthur Konovalov).
- Fixed cMarks::GetNextBegin() and cMarks::GetNextEnd(). The behavior of these two
functions is now exacly as described in the header file. Editing marks that are
placed at exactly the same offset in a recording are now preserved in the cutting
process.

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and * See the main source file 'vdr.c' for copyright information and
* how to reach the author. * how to reach the author.
* *
* $Id: recording.c 3.24 2015/01/25 15:39:24 kls Exp $ * $Id: recording.c 3.25 2015/02/05 13:50:39 kls Exp $
*/ */
#include "recording.h" #include "recording.h"
@ -2169,7 +2169,7 @@ cMark *cMarks::GetNext(int Position)
cMark *cMarks::GetNextBegin(cMark *EndMark) cMark *cMarks::GetNextBegin(cMark *EndMark)
{ {
cMark *BeginMark = EndMark ? Next(EndMark) : First(); cMark *BeginMark = EndMark ? Next(EndMark) : First();
if (BeginMark) { if (BeginMark && EndMark && BeginMark->Position() == EndMark->Position()) {
while (cMark *NextMark = Next(BeginMark)) { while (cMark *NextMark = Next(BeginMark)) {
if (BeginMark->Position() == NextMark->Position()) { // skip Begin/End at the same position if (BeginMark->Position() == NextMark->Position()) { // skip Begin/End at the same position
if (!(BeginMark = Next(NextMark))) if (!(BeginMark = Next(NextMark)))
@ -2187,7 +2187,7 @@ cMark *cMarks::GetNextEnd(cMark *BeginMark)
if (!BeginMark) if (!BeginMark)
return NULL; return NULL;
cMark *EndMark = Next(BeginMark); cMark *EndMark = Next(BeginMark);
if (EndMark) { if (EndMark && BeginMark && BeginMark->Position() == EndMark->Position()) {
while (cMark *NextMark = Next(EndMark)) { while (cMark *NextMark = Next(EndMark)) {
if (EndMark->Position() == NextMark->Position()) { // skip End/Begin at the same position if (EndMark->Position() == NextMark->Position()) { // skip End/Begin at the same position
if (!(EndMark = Next(NextMark))) if (!(EndMark = Next(NextMark)))