diff options
Diffstat (limited to 'command/marks.cpp')
-rw-r--r-- | command/marks.cpp | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/command/marks.cpp b/command/marks.cpp index 130ff42..8909e3c 100644 --- a/command/marks.cpp +++ b/command/marks.cpp @@ -186,6 +186,29 @@ clMark *clMarks::Get(int Position) return mark; } +clMark *clMarks::GetAround(int Frames, int Position, int Type, int Mask) +{ + clMark *m1=GetPrev(Position,Type,Mask); + clMark *m2=GetNext(Position,Type,Mask); + + if (!m1 && !m2) return NULL; + if (!m1 && m2) return m2; + if (m1 && !m2) + { + if (abs(Position-m1->position)>Frames) return NULL; + return m1; + } + + if (abs(m1->position-Position)>abs(m2->position-Position)) + { + return m2; + } + else + { + return m1; + } +} + clMark *clMarks::GetPrev(int Position, int Type, int Mask) { if (!first) return NULL; // no elements yet @@ -485,7 +508,6 @@ void clMarks::WriteIndex(const char *Directory, bool isTS, uint64_t Offset, indexfd=open(ipath,O_WRONLY|O_CREAT|O_TRUNC,0644); free(ipath); if (indexfd==-1) return; - if (Offset>376) WriteIndex(isTS,0,1,Number); } WriteIndex(isTS,Offset,FrameType,Number); return; |