diff --git a/components/squeezelite/displayer.c b/components/squeezelite/displayer.c index d62c2789..22949bdb 100644 --- a/components/squeezelite/displayer.c +++ b/components/squeezelite/displayer.c @@ -882,31 +882,20 @@ static void grfa_handler(u8_t *data, int len) { artwork.x = htons(pkt->x); artwork.y = htons(pkt->y); artwork.full = artwork.enable && artwork.x == 0 && artwork.y == 0; -#ifdef TJPGD_ROM - xSemaphoreTake(displayer.mutex, portMAX_DELAY); - artwork.ready = false; -#endif if (artwork.data) free(artwork.data); artwork.data = malloc(length); -#ifdef TJPGD_ROM - xSemaphoreGive(displayer.mutex); -#endif } // copy artwork data memcpy(artwork.data + offset, data + sizeof(struct grfa_packet), size); artwork.size += size; if (artwork.size == length) { - xSemaphoreTake(displayer.mutex, portMAX_DELAY); -#ifdef TJPGD_ROM - artwork.ready = true; -#else GDS_ClearWindow(display, artwork.x, artwork.y, -1, -1, GDS_COLOR_BLACK); + xSemaphoreTake(displayer.mutex, portMAX_DELAY); GDS_DrawJPEG(display, artwork.data, artwork.x, artwork.y, artwork.y < displayer.height ? (GDS_IMAGE_RIGHT | GDS_IMAGE_TOP) : GDS_IMAGE_CENTER); + xSemaphoreGive(displayer.mutex); free(artwork.data); artwork.data = NULL; -#endif - xSemaphoreGive(displayer.mutex); } LOG_DEBUG("gfra l:%u x:%hu, y:%hu, o:%u s:%u", length, artwork.x, artwork.y, offset, size); @@ -1330,16 +1319,6 @@ static void displayer_task(void *args) { if (display && displayer.owned) GDS_Update(display); else if (!led_display) displayer.wake = LONG_WAKE; -#ifdef TJPGD_ROM - if (artwork.ready) { - GDS_ClearWindow(display, artwork.x, artwork.y, -1, -1, GDS_COLOR_BLACK); - GDS_DrawJPEG(display, artwork.data, artwork.x, artwork.y, artwork.y < displayer.height ? (GDS_IMAGE_RIGHT | GDS_IMAGE_TOP) : GDS_IMAGE_CENTER); - free(artwork.data); - artwork.data = NULL; - artwork.ready = false; - } -#endif - // release semaphore and sleep what's needed xSemaphoreGive(displayer.mutex);