return file->sequence != client->sequence;
}
-static gboolean
-has_next_fragment (GstM3U8Client * client, GList * l, gboolean forward)
+static GList *
+find_next_fragment (GstM3U8Client * client, GList * l, gboolean forward)
{
GstM3U8MediaFile *file;
- if (!forward)
+ if (forward) {
+ while (l) {
+ file = l->data;
+
+ if (file->sequence >= client->sequence)
+ break;
+
+ l = l->next;
+ }
+ } else {
l = g_list_last (l);
- while (l) {
- file = l->data;
+ while (l) {
+ file = l->data;
- if (forward && file->sequence > client->sequence)
- break;
- else if (!forward && file->sequence < client->sequence)
- break;
+ if (file->sequence <= client->sequence)
+ break;
- l = (forward ? l->next : l->prev);
+ l = l->prev;
+ }
}
- return l != NULL;
+ return l;
}
-static GList *
-find_next_fragment (GstM3U8Client * client, GList * l, gboolean forward)
+static gboolean
+has_next_fragment (GstM3U8Client * client, GList * l, gboolean forward)
{
- GstM3U8MediaFile *file;
+ l = find_next_fragment (client, l, forward);
- if (!forward)
- l = g_list_last (l);
-
- while (l) {
- file = l->data;
-
- if (forward && file->sequence >= client->sequence)
- break;
- else if (!forward && file->sequence <= client->sequence)
- break;
-
- l = (forward ? l->next : l->prev);
+ if (l) {
+ return (forward && l->next) || (!forward && l->prev);
}
- return l;
+ return FALSE;
}
gboolean