mirror of
https://github.com/flipperdevices/flipperzero-firmware.git
synced 2025-12-12 12:51:22 +04:00
33 lines
870 B
C
33 lines
870 B
C
|
|
#include "loader_queue.h"
|
||
|
|
|
||
|
|
void loader_queue_item_clear(LoaderDeferredLaunchRecord* item) {
|
||
|
|
free(item->args);
|
||
|
|
free(item->name_or_path);
|
||
|
|
}
|
||
|
|
|
||
|
|
bool loader_queue_pop(LoaderLaunchQueue* queue, LoaderDeferredLaunchRecord* item) {
|
||
|
|
if(!queue->item_cnt) return false;
|
||
|
|
|
||
|
|
*item = queue->items[0];
|
||
|
|
queue->item_cnt--;
|
||
|
|
memmove(
|
||
|
|
&queue->items[0], &queue->items[1], queue->item_cnt * sizeof(LoaderDeferredLaunchRecord));
|
||
|
|
|
||
|
|
return true;
|
||
|
|
}
|
||
|
|
|
||
|
|
bool loader_queue_push(LoaderLaunchQueue* queue, LoaderDeferredLaunchRecord* item) {
|
||
|
|
if(queue->item_cnt == LOADER_QUEUE_MAX_SIZE) return false;
|
||
|
|
|
||
|
|
queue->items[queue->item_cnt] = *item;
|
||
|
|
queue->item_cnt++;
|
||
|
|
|
||
|
|
return true;
|
||
|
|
}
|
||
|
|
|
||
|
|
void loader_queue_clear(LoaderLaunchQueue* queue) {
|
||
|
|
for(size_t i = 0; i < queue->item_cnt; i++)
|
||
|
|
loader_queue_item_clear(&queue->items[i]);
|
||
|
|
queue->item_cnt = 0;
|
||
|
|
}
|