{
UINT32 size;
UINT32 count;
- BYTE* pixels;
+ UINT32* pixels;
};
typedef struct _CLEAR_GLYPH_ENTRY CLEAR_GLYPH_ENTRY;
FREERDP_API BOOL clear_context_reset(CLEAR_CONTEXT* clear);
-FREERDP_API CLEAR_CONTEXT* clear_context_new(BOOL Compressor, UINT32 format);
+FREERDP_API CLEAR_CONTEXT* clear_context_new(BOOL Compressor);
FREERDP_API void clear_context_free(CLEAR_CONTEXT* clear);
#ifdef __cplusplus
return FALSE;
}
- glyphEntry->pixels = tmp;
+ glyphEntry->pixels = (UINT32*)tmp;
}
if (!glyphEntry->pixels)
}
if (ppGlyphData)
- *ppGlyphData = glyphEntry->pixels;
+ *ppGlyphData = (BYTE*)glyphEntry->pixels;
return TRUE;
}
return TRUE;
}
+static INLINE BOOL updateContextFormat(CLEAR_CONTEXT* clear, UINT32 DstFormat)
+{
+ if (!clear || !clear->nsc)
+ return FALSE;
+
+ clear->format = DstFormat;
+ return nsc_context_set_pixel_format(clear->nsc, DstFormat);
+}
+
INT32 clear_decompress(CLEAR_CONTEXT* clear, const BYTE* pSrcData,
UINT32 SrcSize, UINT32 nWidth, UINT32 nHeight,
BYTE* pDstData, UINT32 DstFormat, UINT32 nDstStep,
goto fail;
}
+ if (!updateContextFormat(clear, DstFormat))
+ goto fail;
+
Stream_Read_UINT8(s, glyphFlags);
Stream_Read_UINT8(s, seqNumber);
clear->ShortVBarStorageCursor = 0;
return TRUE;
}
-CLEAR_CONTEXT* clear_context_new(BOOL Compressor, UINT32 format)
+CLEAR_CONTEXT* clear_context_new(BOOL Compressor)
{
CLEAR_CONTEXT* clear;
clear = (CLEAR_CONTEXT*) calloc(1, sizeof(CLEAR_CONTEXT));
clear->Compressor = Compressor;
clear->nsc = nsc_context_new();
- clear->format = format;
if (!clear->nsc)
goto error_nsc;
- nsc_context_set_pixel_format(clear->nsc, format);
+ if (!updateContextFormat(clear, PIXEL_FORMAT_BGRX32))
+ goto error_nsc;
+
clear->TempSize = 512 * 512 * 4;
clear->TempBuffer = (BYTE*) malloc(clear->TempSize);
#include "rdp.h"
#include <freerdp/codecs.h>
-#include <freerdp/gdi/gdi.h>
#define TAG FREERDP_TAG("core.codecs")
if ((flags & FREERDP_CODEC_CLEARCODEC) && !codecs->clear)
{
- const UINT32 format = codecs->context->gdi->dstFormat;
-
- if (!(codecs->clear = clear_context_new(FALSE, format)))
+ if (!(codecs->clear = clear_context_new(FALSE)))
{
WLog_ERR(TAG, "Failed to create clear codec context");
return FALSE;