Minor issues fixed

*Memory leak in image decodification modules.

*Changed mouse wheel delta value.
This commit is contained in:
Alexandro Sánchez Bach 2013-09-14 22:47:59 +02:00
parent 1024a7c7c4
commit b85d39bfc3
4 changed files with 17 additions and 20 deletions

View File

@ -127,7 +127,7 @@ public:
{ {
CellMouseData& data = GetData(p); CellMouseData& data = GetData(p);
data.update = CELL_MOUSE_DATA_UPDATE; data.update = CELL_MOUSE_DATA_UPDATE;
data.wheel = rotation; data.wheel = rotation/120; //120=event.GetWheelDelta()
} }
} }
} }

View File

@ -197,20 +197,19 @@ int cellGifDecDecodeData(u32 mainHandle, u32 subHandle, u32 data_addr, u32 dataC
for(u32 i = 0; i < fileSize; i++){ for(u32 i = 0; i < fileSize; i++){
gif[i] = Memory.Read8(buffer+i); gif[i] = Memory.Read8(buffer+i);
} }
Memory.Free(buffer);
unsigned char *image = stbi_load_from_memory((const unsigned char*)gif, fileSize, &width, &height, &actual_components, 4); unsigned char *image = stbi_load_from_memory((const unsigned char*)gif, fileSize, &width, &height, &actual_components, 4);
if (!image) delete[] gif;
{ if (!image) return CELL_GIFDEC_ERROR_STREAM_FORMAT;
Memory.Free(buffer);
return CELL_GIFDEC_ERROR_STREAM_FORMAT;
}
u32 image_size = width * height * 4; u32 image_size = width * height * 4;
if (inParam.colorSpace == CELL_GIFDEC_RGBA){ if (inParam.colorSpace == CELL_GIFDEC_RGBA){
for(u32 i = 0; i < image_size; i+=4){ for(u32 i = 0; i < image_size; i+=4){
Memory.Write8(data_addr+i+0, image[i+0]); Memory.Write8(data_addr+i+0, image[i+0]);
Memory.Write8(data_addr+i+1, image[i+1]); Memory.Write8(data_addr+i+1, image[i+1]);
Memory.Write8(data_addr+i+2, image[i+2]); Memory.Write8(data_addr+i+2, image[i+2]);
Memory.Write8(data_addr+i+3, image[i+3]); // (This can be optimized by using Write32) Memory.Write8(data_addr+i+3, image[i+3]);
} }
} }
if (inParam.colorSpace == CELL_GIFDEC_ARGB){ if (inParam.colorSpace == CELL_GIFDEC_ARGB){
@ -221,7 +220,7 @@ int cellGifDecDecodeData(u32 mainHandle, u32 subHandle, u32 data_addr, u32 dataC
Memory.Write8(data_addr+i+3, image[i+2]); Memory.Write8(data_addr+i+3, image[i+2]);
} }
} }
Memory.Free(buffer); delete[] image;
//The output data is an image (dataOutInfo.recordType = 1) //The output data is an image (dataOutInfo.recordType = 1)
Memory.Write32(dataOutInfo_addr, 1); Memory.Write32(dataOutInfo_addr, 1);

View File

@ -217,13 +217,12 @@ int cellJpgDecDecodeData(u32 mainHandle, u32 subHandle, u32 data_addr, u32 dataC
for(u32 i = 0; i < fileSize; i++){ for(u32 i = 0; i < fileSize; i++){
jpg[i] = Memory.Read8(buffer+i); jpg[i] = Memory.Read8(buffer+i);
} }
Memory.Free(buffer);
unsigned char *image = stbi_load_from_memory((const unsigned char*)jpg, fileSize, &width, &height, &actual_components, 4); unsigned char *image = stbi_load_from_memory((const unsigned char*)jpg, fileSize, &width, &height, &actual_components, 4);
if (!image) delete[] jpg;
{ if (!image) return CELL_JPGDEC_ERROR_STREAM_FORMAT;
Memory.Free(buffer);
return CELL_JPGDEC_ERROR_STREAM_FORMAT;
}
u32 image_size = width * height * 4; u32 image_size = width * height * 4;
if (inParam.outputColorSpace == CELL_JPG_RGBA){ if (inParam.outputColorSpace == CELL_JPG_RGBA){
for(u32 i = 0; i < image_size; i+=4){ for(u32 i = 0; i < image_size; i+=4){
@ -241,7 +240,7 @@ int cellJpgDecDecodeData(u32 mainHandle, u32 subHandle, u32 data_addr, u32 dataC
Memory.Write8(data_addr+i+3, image[i+2]); Memory.Write8(data_addr+i+3, image[i+2]);
} }
} }
Memory.Free(buffer); delete[] image;
return CELL_OK; return CELL_OK;
} }

View File

@ -202,13 +202,12 @@ int cellPngDecDecodeData(u32 mainHandle, u32 subHandle, u32 data_addr, u32 dataC
for(u32 i = 0; i < fileSize; i++){ for(u32 i = 0; i < fileSize; i++){
png[i] = Memory.Read8(buffer+i); png[i] = Memory.Read8(buffer+i);
} }
Memory.Free(buffer);
unsigned char *image = stbi_load_from_memory((const unsigned char*)png, fileSize, &width, &height, &actual_components, 4); unsigned char *image = stbi_load_from_memory((const unsigned char*)png, fileSize, &width, &height, &actual_components, 4);
if (!image) delete[] png;
{ if (!image) return CELL_PNGDEC_ERROR_STREAM_FORMAT;
Memory.Free(buffer);
return CELL_PNGDEC_ERROR_STREAM_FORMAT;
}
u32 image_size = width * height * 4; u32 image_size = width * height * 4;
if (inParam.outputColorSpace == CELL_PNGDEC_RGBA){ if (inParam.outputColorSpace == CELL_PNGDEC_RGBA){
for(u32 i = 0; i < image_size; i+=4){ for(u32 i = 0; i < image_size; i+=4){
@ -226,7 +225,7 @@ int cellPngDecDecodeData(u32 mainHandle, u32 subHandle, u32 data_addr, u32 dataC
Memory.Write8(data_addr+i+3, image[i+2]); Memory.Write8(data_addr+i+3, image[i+2]);
} }
} }
Memory.Free(buffer); delete[] image;
return CELL_OK; return CELL_OK;
} }