mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-02-01 02:21:26 +02:00
Fixed a memory leak that occurred while compiling the OpenCL kernels.
Reset the frame counter after loading a save. git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@7376 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
parent
50c5dbdb09
commit
aac2972960
@ -228,7 +228,7 @@ bool BeginRecordingInput(int controllers)
|
||||
|
||||
g_frameCounter = 0;
|
||||
g_lagCounter = 0;
|
||||
|
||||
g_InputCounter = 0;
|
||||
g_playMode = MODE_RECORDING;
|
||||
|
||||
Core::DisplayMessage("Starting movie recording", 2000);
|
||||
@ -428,7 +428,8 @@ void LoadInput(const char *filename)
|
||||
|
||||
g_frameCounter = header.frameCount;
|
||||
g_totalFrameCount = header.frameCount;
|
||||
|
||||
g_InputCounter = header.InputCount;
|
||||
|
||||
g_numPads = header.numControllers;
|
||||
|
||||
ChangePads(true);
|
||||
@ -606,6 +607,7 @@ void SaveRecording(const char *filename)
|
||||
header.frameCount = g_frameCounter;
|
||||
header.lagCount = g_lagCounter;
|
||||
header.numRerecords = g_rerecords;
|
||||
header.InputCount = g_InputCounter;
|
||||
|
||||
// TODO
|
||||
header.uniqueID = 0;
|
||||
|
@ -48,7 +48,7 @@ struct ControllerState {
|
||||
u8 AnalogStickX, AnalogStickY; // Main Stick, 16 bits
|
||||
u8 CStickX, CStickY; // Sub-Stick, 16 bits
|
||||
|
||||
}; // Total: 58 + 6 = 64 bits per frame
|
||||
}; // Total: 60 + 4 = 64 bits per frame
|
||||
#pragma pack(pop)
|
||||
|
||||
// Global declarations
|
||||
@ -78,6 +78,7 @@ struct DTMHeader {
|
||||
|
||||
bool bFromSaveState; // false indicates that the recording started from bootup, true for savestate
|
||||
u64 frameCount; // Number of frames in the recording
|
||||
u64 InputCount; // Number of input frames in recording
|
||||
u64 lagCount; // Number of lag frames in the recording
|
||||
u64 uniqueID; // A Unique ID comprised of: md5(time + Game ID)
|
||||
u32 numRerecords; // Number of rerecords/'cuts' of this TAS
|
||||
@ -87,9 +88,7 @@ struct DTMHeader {
|
||||
u8 audioEmulator[16]; // UTF-8 representation of the audio emulator
|
||||
u8 padBackend[16]; // UTF-8 representation of the input backend
|
||||
|
||||
u8 padding[7]; // Padding to align the header to 1024 bits
|
||||
|
||||
u8 reserved[128]; // Increasing size from 128 bytes to 256 bytes, just because we can
|
||||
u8 reserved[127]; // Make heading 256 bytes, just because we can
|
||||
};
|
||||
#pragma pack(pop)
|
||||
|
||||
|
@ -147,6 +147,7 @@ void TexDecoder_OpenCL_Initialize()
|
||||
delete binary;
|
||||
}
|
||||
|
||||
// If an error occurred using the kernel binary, recompile the kernels
|
||||
if (err)
|
||||
{
|
||||
std::string code;
|
||||
@ -182,7 +183,7 @@ void TexDecoder_OpenCL_Initialize()
|
||||
binaries = (char **)malloc(sizeof(char *)*nDevices);
|
||||
for (u32 i = 0; i < nDevices; ++i)
|
||||
{
|
||||
if( binary_sizes[i] != 0 )
|
||||
if (binary_sizes[i] != 0)
|
||||
{
|
||||
binaries[i] = (char *)malloc(HEADER_SIZE + binary_sizes[i]);
|
||||
}
|
||||
@ -213,9 +214,23 @@ void TexDecoder_OpenCL_Initialize()
|
||||
output.WriteBytes(binaries[0], binary_sizes[0]);
|
||||
}
|
||||
}
|
||||
for (u32 i = 0; i < nDevices; ++i)
|
||||
{
|
||||
if (binary_sizes[i] != NULL)
|
||||
{
|
||||
free(binaries[i]);
|
||||
}
|
||||
}
|
||||
if (binaries != NULL)
|
||||
free(binaries);
|
||||
if (binary_sizes != NULL)
|
||||
free(binary_sizes);
|
||||
if (devices != NULL)
|
||||
free(devices);
|
||||
}
|
||||
|
||||
for (int i = 0; i <= GX_TF_CMPR; ++i) {
|
||||
for (int i = 0; i <= GX_TF_CMPR; ++i)
|
||||
{
|
||||
if (g_DecodeParametersNative[i].name)
|
||||
g_DecodeParametersNative[i].kernel =
|
||||
OpenCL::CompileKernel(g_program,
|
||||
|
Loading…
Reference in New Issue
Block a user