/
vTech
/
FcApps
Обзор
Документация
Войти
/
vTech
/
FcApps
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
FcLibs/FcWindow/src/FcGL/FcGL_DrawQueue/FcGL_DrawQueue.h
79 строк
2 KB
vTech
alpha_00
03 дек 2025, 17:45
03 дек 2025, 17:45
ab8382d
Код
Авторство
О чём код?
#ifndef __FCGL_DRAWQUEUE_H__ #define __FCGL_DRAWQUEUE_H__ #include "../FcWindow/FcWindow_config.h" #include "../FcError/include/FcError.h" #include "../../FcAlgo/FcAlgo_ProducerConsumer.h" typedef struct _FcGL_DrawQueue_t { FcWindow_Error_t mErrorStatus; FcAlgo_ProducerConsumer_t mDrawQueue; }FcGL_DrawQueue_t; FCDEF FcWindow_Error_t FcGL_DrawQueue(FcGL_DrawQueue_t* pQueue); FCDEF FcWindow_Error_t FcGL_DrawQueue_free(FcGL_DrawQueue_t* pQueue); FCDEF FcWindow_Error_t FcGL_DrawQueue_push(FcGL_DrawQueue_t* pQueue, const FcAlgo_ProducerConsumer_Data_t* pData); FCDEF FcWindow_Error_t FcGL_DrawQueue(FcGL_DrawQueue_t* pQueue) { FcThread_Error_t mErrorThread; FcWindow_Error_t mError = FCWINDOW_ERROR_NOERROR; if (NULL == pQueue) { mError = FCWINDOW_ERROR_PARAMETER_0; goto gError; } mErrorThread = FcAlgo_ProducerConsumer(&pQueue->mDrawQueue); mError = FcWindow_Error_Thread(mErrorThread); if (mError) goto gError; gError: if (pQueue) if (mError) pQueue->mErrorStatus = mError; return mError; } FCDEF FcWindow_Error_t FcGL_DrawQueue_free(FcGL_DrawQueue_t* pQueue) { FcThread_Error_t mErrorThread; FcWindow_Error_t mError = FCWINDOW_ERROR_NOERROR; if (NULL == pQueue) { mError = FCWINDOW_ERROR_PARAMETER_0; goto gError; } mErrorThread = FcAlgo_ProducerConsumer_freeLock(&pQueue->mDrawQueue); mError = FcWindow_Error_Thread(mErrorThread); if (mError) goto gError; memset(pQueue, 0, sizeof(*pQueue)); return mError; gError: if (pQueue) if (mError) pQueue->mErrorStatus = mError; return mError; } FCDEF FcWindow_Error_t FcGL_DrawQueue_push(FcGL_DrawQueue_t* pQueue, const FcAlgo_ProducerConsumer_Data_t* pData) { FcThread_Error_t mErrorThread; FcWindow_Error_t mError = FCWINDOW_ERROR_NOERROR; if (NULL == pQueue || NULL == pData) { mError = FCWINDOW_ERROR_PARAMETER_0; goto gError; } if (pQueue->mErrorStatus) { mError = pQueue->mErrorStatus; goto gError; } mErrorThread = FcAlgo_ProducerConsumer_push(&pQueue->mDrawQueue, *pData); mError = FcWindow_Error_Thread(mErrorThread); if (mError) goto gError; return mError; gError: if (pQueue) if (mError) pQueue->mErrorStatus = mError; return mError; } #endif //__FCGL_DRAWQUEUE_H__