Use standard thumbnail buffer types

This commit is contained in:
notmatthewbeshay 2026-03-10 19:25:06 +11:00
parent 3e89da8dff
commit d2db55e050
17 changed files with 111 additions and 76 deletions

View file

@ -608,7 +608,7 @@ public:
// images for save thumbnail/social post
virtual void CaptureSaveThumbnail() =0;
virtual void GetSaveThumbnail(PBYTE*,DWORD*)=0;
virtual void GetSaveThumbnail(std::uint8_t **thumbnailData, unsigned int *thumbnailSize)=0;
virtual void ReleaseSaveThumbnail()=0;
virtual void GetScreenshot(int iPad,PBYTE *pbData,DWORD *pdwSize)=0;

View file

@ -114,25 +114,30 @@ void CConsoleMinecraftApp::CaptureSaveThumbnail()
{
RenderManager.CaptureThumbnail(&m_ThumbnailBuffer);
}
void CConsoleMinecraftApp::GetSaveThumbnail(PBYTE *pbData,DWORD *pdwSize)
void CConsoleMinecraftApp::GetSaveThumbnail(std::uint8_t **thumbnailData, unsigned int *thumbnailSize)
{
// on a save caused by a create world, the thumbnail capture won't have happened
if(m_ThumbnailBuffer.Allocated())
{
if( pbData )
if( thumbnailData )
{
*pbData= new BYTE [m_ThumbnailBuffer.GetBufferSize()];
*pdwSize=m_ThumbnailBuffer.GetBufferSize();
memcpy(*pbData,m_ThumbnailBuffer.GetBufferPointer(),*pdwSize);
*thumbnailData = new std::uint8_t[m_ThumbnailBuffer.GetBufferSize()];
*thumbnailSize = static_cast<unsigned int>(m_ThumbnailBuffer.GetBufferSize());
memcpy(*thumbnailData, m_ThumbnailBuffer.GetBufferPointer(), *thumbnailSize);
}
m_ThumbnailBuffer.Release();
}
else
{
if( pbData )
if( thumbnailData )
{
// use the default image
StorageManager.GetDefaultSaveThumbnail(pbData,pdwSize);
DWORD defaultSize = 0;
StorageManager.GetDefaultSaveThumbnail(thumbnailData, &defaultSize);
if (thumbnailSize)
{
*thumbnailSize = static_cast<unsigned int>(defaultSize);
}
}
}
}
@ -796,4 +801,4 @@ void CConsoleMinecraftApp::ReadLocalDLCList(void)
delete pDecompressedData;
}
}
}

View file

@ -23,7 +23,7 @@ public:
virtual void FatalLoadError();
virtual void CaptureSaveThumbnail();
virtual void GetSaveThumbnail(PBYTE*,DWORD*);
virtual void GetSaveThumbnail(std::uint8_t **thumbnailData, unsigned int *thumbnailSize);
virtual void ReleaseSaveThumbnail();
virtual void GetScreenshot(int iPad,PBYTE *pbData,DWORD *pdwSize);

View file

@ -39,7 +39,7 @@ void CConsoleMinecraftApp::FatalLoadError()
void CConsoleMinecraftApp::CaptureSaveThumbnail()
{
}
void CConsoleMinecraftApp::GetSaveThumbnail(PBYTE *pbData,DWORD *pdwSize)
void CConsoleMinecraftApp::GetSaveThumbnail(std::uint8_t **thumbnailData, unsigned int *thumbnailSize)
{
}
void CConsoleMinecraftApp::ReleaseSaveThumbnail()

View file

@ -12,7 +12,7 @@ public:
virtual void FatalLoadError();
virtual void CaptureSaveThumbnail();
virtual void GetSaveThumbnail(PBYTE*,DWORD*);
virtual void GetSaveThumbnail(std::uint8_t **thumbnailData, unsigned int *thumbnailSize);
virtual void ReleaseSaveThumbnail();
virtual void GetScreenshot(int iPad,PBYTE *pbData,DWORD *pdwSize);

View file

@ -227,44 +227,54 @@ void CConsoleMinecraftApp::CaptureSaveThumbnail()
{
RenderManager.CaptureThumbnail(&m_ThumbnailBuffer,&m_SaveImageBuffer);
}
void CConsoleMinecraftApp::GetSaveThumbnail(PBYTE *ppbThumbnailData,DWORD *pdwThumbnailSize,PBYTE *ppbDataImage,DWORD *pdwSizeImage)
void CConsoleMinecraftApp::GetSaveThumbnail(std::uint8_t **thumbnailData, unsigned int *thumbnailSize, std::uint8_t **saveImageData, unsigned int *saveImageSize)
{
// on a save caused by a create world, the thumbnail capture won't have happened
if(m_ThumbnailBuffer.Allocated())
{
if( ppbThumbnailData )
if( thumbnailData )
{
*ppbThumbnailData= new BYTE [m_ThumbnailBuffer.GetBufferSize()];
*pdwThumbnailSize=m_ThumbnailBuffer.GetBufferSize();
memcpy(*ppbThumbnailData,m_ThumbnailBuffer.GetBufferPointer(),*pdwThumbnailSize);
*thumbnailData = new std::uint8_t[m_ThumbnailBuffer.GetBufferSize()];
*thumbnailSize = static_cast<unsigned int>(m_ThumbnailBuffer.GetBufferSize());
memcpy(*thumbnailData, m_ThumbnailBuffer.GetBufferPointer(), *thumbnailSize);
}
m_ThumbnailBuffer.Release();
}
else
{
if( ppbThumbnailData )
if( thumbnailData )
{
// use the default image
StorageManager.GetDefaultSaveThumbnail(ppbThumbnailData,pdwThumbnailSize);
DWORD defaultThumbnailSize = 0;
StorageManager.GetDefaultSaveThumbnail(thumbnailData, &defaultThumbnailSize);
if (thumbnailSize)
{
*thumbnailSize = static_cast<unsigned int>(defaultThumbnailSize);
}
}
}
if(m_SaveImageBuffer.Allocated())
{
if( ppbDataImage )
if( saveImageData )
{
*ppbDataImage= new BYTE [m_SaveImageBuffer.GetBufferSize()];
*pdwSizeImage=m_SaveImageBuffer.GetBufferSize();
memcpy(*ppbDataImage,m_SaveImageBuffer.GetBufferPointer(),*pdwSizeImage);
*saveImageData = new std::uint8_t[m_SaveImageBuffer.GetBufferSize()];
*saveImageSize = static_cast<unsigned int>(m_SaveImageBuffer.GetBufferSize());
memcpy(*saveImageData, m_SaveImageBuffer.GetBufferPointer(), *saveImageSize);
}
m_SaveImageBuffer.Release();
}
else
{
if( ppbDataImage )
if( saveImageData )
{
// use the default image
StorageManager.GetDefaultSaveImage(ppbDataImage,pdwSizeImage);
DWORD defaultSaveImageSize = 0;
StorageManager.GetDefaultSaveImage(saveImageData, &defaultSaveImageSize);
if (saveImageSize)
{
*saveImageSize = static_cast<unsigned int>(defaultSaveImageSize);
}
}
}
}
@ -1278,4 +1288,4 @@ void CConsoleMinecraftApp::PatchAvailableDialogTick()
m_bPatchAvailableDialogRunning=false;
}
}
}
}

View file

@ -68,8 +68,8 @@ public:
virtual void FatalLoadError();
virtual void CaptureSaveThumbnail();
virtual void GetSaveThumbnail(PBYTE*,DWORD*) {}; // NOT USED
virtual void GetSaveThumbnail(PBYTE *ppbThumbnailData,DWORD *pdwThumbnailSize,PBYTE *ppbDataImage,DWORD *pdwSizeImage);
virtual void GetSaveThumbnail(std::uint8_t **thumbnailData, unsigned int *thumbnailSize) {}; // NOT USED
virtual void GetSaveThumbnail(std::uint8_t **thumbnailData, unsigned int *thumbnailSize, std::uint8_t **saveImageData, unsigned int *saveImageSize);
virtual void ReleaseSaveThumbnail();
virtual void GetScreenshot(int iPad,PBYTE *pbData,DWORD *pdwSize);

View file

@ -391,44 +391,54 @@ void CConsoleMinecraftApp::CaptureSaveThumbnail()
MemSect(0);
}
void CConsoleMinecraftApp::GetSaveThumbnail(PBYTE *ppbThumbnailData,DWORD *pdwThumbnailSize,PBYTE *ppbDataImage,DWORD *pdwSizeImage)
void CConsoleMinecraftApp::GetSaveThumbnail(std::uint8_t **thumbnailData, unsigned int *thumbnailSize, std::uint8_t **saveImageData, unsigned int *saveImageSize)
{
// on a save caused by a create world, the thumbnail capture won't have happened
if(m_ThumbnailBuffer.Allocated())
{
if( ppbThumbnailData )
if( thumbnailData )
{
*ppbThumbnailData= new BYTE [m_ThumbnailBuffer.GetBufferSize()];
*pdwThumbnailSize=m_ThumbnailBuffer.GetBufferSize();
memcpy(*ppbThumbnailData,m_ThumbnailBuffer.GetBufferPointer(),*pdwThumbnailSize);
*thumbnailData = new std::uint8_t[m_ThumbnailBuffer.GetBufferSize()];
*thumbnailSize = static_cast<unsigned int>(m_ThumbnailBuffer.GetBufferSize());
memcpy(*thumbnailData, m_ThumbnailBuffer.GetBufferPointer(), *thumbnailSize);
}
m_ThumbnailBuffer.Release();
}
else
{
if( ppbThumbnailData )
if( thumbnailData )
{
// use the default image
StorageManager.GetDefaultSaveThumbnail(ppbThumbnailData,pdwThumbnailSize);
DWORD defaultThumbnailSize = 0;
StorageManager.GetDefaultSaveThumbnail(thumbnailData, &defaultThumbnailSize);
if (thumbnailSize)
{
*thumbnailSize = static_cast<unsigned int>(defaultThumbnailSize);
}
}
}
if(m_SaveImageBuffer.Allocated())
{
if( ppbDataImage )
if( saveImageData )
{
*ppbDataImage= new BYTE [m_SaveImageBuffer.GetBufferSize()];
*pdwSizeImage=m_SaveImageBuffer.GetBufferSize();
memcpy(*ppbDataImage,m_SaveImageBuffer.GetBufferPointer(),*pdwSizeImage);
*saveImageData = new std::uint8_t[m_SaveImageBuffer.GetBufferSize()];
*saveImageSize = static_cast<unsigned int>(m_SaveImageBuffer.GetBufferSize());
memcpy(*saveImageData, m_SaveImageBuffer.GetBufferPointer(), *saveImageSize);
}
m_SaveImageBuffer.Release();
}
else
{
if( ppbDataImage )
if( saveImageData )
{
// use the default image
StorageManager.GetDefaultSaveImage(ppbDataImage,pdwSizeImage);
DWORD defaultSaveImageSize = 0;
StorageManager.GetDefaultSaveImage(saveImageData, &defaultSaveImageSize);
if (saveImageSize)
{
*saveImageSize = static_cast<unsigned int>(defaultSaveImageSize);
}
}
}
}

View file

@ -68,8 +68,8 @@ public:
virtual void FatalLoadError();
virtual void CaptureSaveThumbnail();
virtual void GetSaveThumbnail(PBYTE*,DWORD*) {}; // NOT USED
virtual void GetSaveThumbnail(PBYTE*,DWORD*,PBYTE*,DWORD*);
virtual void GetSaveThumbnail(std::uint8_t **thumbnailData, unsigned int *thumbnailSize) {}; // NOT USED
virtual void GetSaveThumbnail(std::uint8_t **thumbnailData, unsigned int *thumbnailSize, std::uint8_t **saveImageData, unsigned int *saveImageSize);
virtual void ReleaseSaveThumbnail();
virtual void GetScreenshot(int iPad,PBYTE *pbData,DWORD *pdwSize);

View file

@ -208,44 +208,54 @@ void CConsoleMinecraftApp::CaptureSaveThumbnail()
{
RenderManager.CaptureThumbnail(&m_ThumbnailBuffer);
}
void CConsoleMinecraftApp::GetSaveThumbnail(PBYTE *ppbThumbnailData,DWORD *pdwThumbnailSize,PBYTE *ppbDataImage,DWORD *pdwSizeImage)
void CConsoleMinecraftApp::GetSaveThumbnail(std::uint8_t **thumbnailData, unsigned int *thumbnailSize, std::uint8_t **saveImageData, unsigned int *saveImageSize)
{
// on a save caused by a create world, the thumbnail capture won't have happened
if(m_ThumbnailBuffer.Allocated())
{
if( ppbThumbnailData )
if( thumbnailData )
{
*ppbThumbnailData= new BYTE [m_ThumbnailBuffer.GetBufferSize()];
*pdwThumbnailSize=m_ThumbnailBuffer.GetBufferSize();
memcpy(*ppbThumbnailData,m_ThumbnailBuffer.GetBufferPointer(),*pdwThumbnailSize);
*thumbnailData = new std::uint8_t[m_ThumbnailBuffer.GetBufferSize()];
*thumbnailSize = static_cast<unsigned int>(m_ThumbnailBuffer.GetBufferSize());
memcpy(*thumbnailData, m_ThumbnailBuffer.GetBufferPointer(), *thumbnailSize);
}
m_ThumbnailBuffer.Release();
}
else
{
if( ppbThumbnailData )
if( thumbnailData )
{
// use the default image
StorageManager.GetDefaultSaveThumbnail(ppbThumbnailData,pdwThumbnailSize);
DWORD defaultThumbnailSize = 0;
StorageManager.GetDefaultSaveThumbnail(thumbnailData, &defaultThumbnailSize);
if (thumbnailSize)
{
*thumbnailSize = static_cast<unsigned int>(defaultThumbnailSize);
}
}
}
if(m_SaveImageBuffer.Allocated())
{
if( ppbDataImage )
if( saveImageData )
{
*ppbDataImage= new BYTE [m_SaveImageBuffer.GetBufferSize()];
*pdwSizeImage=m_SaveImageBuffer.GetBufferSize();
memcpy(*ppbDataImage,m_SaveImageBuffer.GetBufferPointer(),*pdwSizeImage);
*saveImageData = new std::uint8_t[m_SaveImageBuffer.GetBufferSize()];
*saveImageSize = static_cast<unsigned int>(m_SaveImageBuffer.GetBufferSize());
memcpy(*saveImageData, m_SaveImageBuffer.GetBufferPointer(), *saveImageSize);
}
m_SaveImageBuffer.Release();
}
else
{
if( ppbDataImage )
if( saveImageData )
{
// use the default image
StorageManager.GetDefaultSaveImage(ppbDataImage,pdwSizeImage);
DWORD defaultSaveImageSize = 0;
StorageManager.GetDefaultSaveImage(saveImageData, &defaultSaveImageSize);
if (saveImageSize)
{
*saveImageSize = static_cast<unsigned int>(defaultSaveImageSize);
}
}
}
}
@ -1669,4 +1679,4 @@ void CConsoleMinecraftApp::finishedDeletingSaves(bool bContinue)
if (bContinue) m_bSaveDataDeleteDialogState = eSaveDataDeleteState_continue;
else m_bSaveDataDeleteDialogState = eSaveDataDeleteState_abort;
}
}

View file

@ -70,8 +70,8 @@ public:
virtual void FatalLoadError();
virtual void CaptureSaveThumbnail();
virtual void GetSaveThumbnail(PBYTE*,DWORD*) {}; // NOT USED
virtual void GetSaveThumbnail(PBYTE *ppbThumbnailData,DWORD *pdwThumbnailSize,PBYTE *ppbDataImage,DWORD *pdwSizeImage);
virtual void GetSaveThumbnail(std::uint8_t **thumbnailData, unsigned int *thumbnailSize) {}; // NOT USED
virtual void GetSaveThumbnail(std::uint8_t **thumbnailData, unsigned int *thumbnailSize, std::uint8_t **saveImageData, unsigned int *saveImageSize);
virtual void ReleaseSaveThumbnail();
virtual void GetScreenshot(int iPad,PBYTE *pbData,DWORD *pdwSize);

View file

@ -37,7 +37,7 @@ void CConsoleMinecraftApp::FatalLoadError()
void CConsoleMinecraftApp::CaptureSaveThumbnail()
{
}
void CConsoleMinecraftApp::GetSaveThumbnail(PBYTE *pbData,DWORD *pdwSize)
void CConsoleMinecraftApp::GetSaveThumbnail(std::uint8_t **thumbnailData, unsigned int *thumbnailSize)
{
}
void CConsoleMinecraftApp::ReleaseSaveThumbnail()

View file

@ -12,7 +12,7 @@ public:
virtual void FatalLoadError();
virtual void CaptureSaveThumbnail();
virtual void GetSaveThumbnail(PBYTE*,DWORD*);
virtual void GetSaveThumbnail(std::uint8_t **thumbnailData, unsigned int *thumbnailSize);
virtual void ReleaseSaveThumbnail();
virtual void GetScreenshot(int iPad,PBYTE *pbData,DWORD *pdwSize);

View file

@ -1448,16 +1448,16 @@ void CConsoleMinecraftApp::CaptureSaveThumbnail()
RenderManager.CaptureThumbnail(&m_ThumbnailBuffer);
MemSect(0);
}
void CConsoleMinecraftApp::GetSaveThumbnail(PBYTE *pbData,DWORD *pdwSize)
void CConsoleMinecraftApp::GetSaveThumbnail(std::uint8_t **thumbnailData, unsigned int *thumbnailSize)
{
// on a save caused by a create world, the thumbnail capture won't have happened
if(m_ThumbnailBuffer!=NULL)
{
if( pbData )
if( thumbnailData )
{
*pbData= new BYTE [m_ThumbnailBuffer->GetBufferSize()];
*pdwSize=m_ThumbnailBuffer->GetBufferSize();
memcpy(*pbData,m_ThumbnailBuffer->GetBufferPointer(),*pdwSize);
*thumbnailData = new std::uint8_t[m_ThumbnailBuffer->GetBufferSize()];
*thumbnailSize = static_cast<unsigned int>(m_ThumbnailBuffer->GetBufferSize());
memcpy(*thumbnailData, m_ThumbnailBuffer->GetBufferPointer(), *thumbnailSize);
}
m_ThumbnailBuffer->Release();
m_ThumbnailBuffer=NULL;

View file

@ -50,7 +50,7 @@ public:
virtual void CaptureScreenshot(int iPad);
virtual void CaptureSaveThumbnail();
virtual void GetSaveThumbnail(PBYTE*,DWORD*);
virtual void GetSaveThumbnail(std::uint8_t **thumbnailData, unsigned int *thumbnailSize);
virtual void ReleaseSaveThumbnail();
virtual void GetScreenshot(int iPad,PBYTE *pbData,DWORD *pdwSize);
@ -194,4 +194,4 @@ private:
};
extern CConsoleMinecraftApp app;
extern CConsoleMinecraftApp app;

View file

@ -750,11 +750,11 @@ void ConsoleSaveFileOriginal::Flush(bool autosave, bool updateThumbnail )
app.DebugPrintf("Save data compressed from %d to %d\n", fileSize, compLength);
#endif
PBYTE pbThumbnailData=NULL;
DWORD dwThumbnailDataSize=0;
std::uint8_t *pbThumbnailData = NULL;
unsigned int dwThumbnailDataSize = 0;
PBYTE pbDataSaveImage=NULL;
DWORD dwDataSizeSaveImage=0;
std::uint8_t *pbDataSaveImage = NULL;
unsigned int dwDataSizeSaveImage = 0;
#if ( defined _XBOX || defined _DURANGO )
app.GetSaveThumbnail(&pbThumbnailData,&dwThumbnailDataSize);

View file

@ -1414,11 +1414,11 @@ void ConsoleSaveFileSplit::Flush(bool autosave, bool updateThumbnail)
if(updateThumbnail)
{
PBYTE pbThumbnailData=NULL;
DWORD dwThumbnailDataSize=0;
std::uint8_t *pbThumbnailData = NULL;
unsigned int dwThumbnailDataSize = 0;
PBYTE pbDataSaveImage=NULL;
DWORD dwDataSizeSaveImage=0;
std::uint8_t *pbDataSaveImage = NULL;
unsigned int dwDataSizeSaveImage = 0;
#if ( defined _XBOX || defined _DURANGO )
app.GetSaveThumbnail(&pbThumbnailData,&dwThumbnailDataSize);