summaryrefslogtreecommitdiff
path: root/command/marks.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'command/marks.cpp')
-rw-r--r--command/marks.cpp24
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;