mirror of https://github.com/mgba-emu/mgba.git
mVL: Add parameter for closing the video log backing
This commit is contained in:
parent
5ceec84560
commit
7973d70b04
|
@ -117,7 +117,7 @@ void mVideoLogContextSetOutput(struct mVideoLogContext*, struct VFile*);
|
||||||
void mVideoLogContextWriteHeader(struct mVideoLogContext*, struct mCore* core);
|
void mVideoLogContextWriteHeader(struct mVideoLogContext*, struct mCore* core);
|
||||||
|
|
||||||
bool mVideoLogContextLoad(struct mVideoLogContext*, struct VFile*);
|
bool mVideoLogContextLoad(struct mVideoLogContext*, struct VFile*);
|
||||||
void mVideoLogContextDestroy(struct mCore* core, struct mVideoLogContext*);
|
void mVideoLogContextDestroy(struct mCore* core, struct mVideoLogContext*, bool closeVF);
|
||||||
|
|
||||||
void mVideoLogContextRewind(struct mVideoLogContext*, struct mCore*);
|
void mVideoLogContextRewind(struct mVideoLogContext*, struct mCore*);
|
||||||
void* mVideoLogContextInitialState(struct mVideoLogContext*, size_t* size);
|
void* mVideoLogContextInitialState(struct mVideoLogContext*, size_t* size);
|
||||||
|
|
|
@ -723,7 +723,7 @@ static void _flushBuffer(struct mVideoLogContext* context) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void mVideoLogContextDestroy(struct mCore* core, struct mVideoLogContext* context) {
|
void mVideoLogContextDestroy(struct mCore* core, struct mVideoLogContext* context, bool closeVF) {
|
||||||
if (context->write) {
|
if (context->write) {
|
||||||
_flushBuffer(context);
|
_flushBuffer(context);
|
||||||
|
|
||||||
|
@ -751,6 +751,10 @@ void mVideoLogContextDestroy(struct mCore* core, struct mVideoLogContext* contex
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (closeVF && context->backing) {
|
||||||
|
context->backing->close(context->backing);
|
||||||
|
}
|
||||||
|
|
||||||
free(context);
|
free(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1066,7 +1066,7 @@ static bool _GBVLPInit(struct mCore* core) {
|
||||||
static void _GBVLPDeinit(struct mCore* core) {
|
static void _GBVLPDeinit(struct mCore* core) {
|
||||||
struct GBCore* gbcore = (struct GBCore*) core;
|
struct GBCore* gbcore = (struct GBCore*) core;
|
||||||
if (gbcore->logContext) {
|
if (gbcore->logContext) {
|
||||||
mVideoLogContextDestroy(core, gbcore->logContext);
|
mVideoLogContextDestroy(core, gbcore->logContext, true);
|
||||||
}
|
}
|
||||||
_GBCoreDeinit(core);
|
_GBCoreDeinit(core);
|
||||||
}
|
}
|
||||||
|
@ -1095,7 +1095,7 @@ static bool _GBVLPLoadROM(struct mCore* core, struct VFile* vf) {
|
||||||
struct GBCore* gbcore = (struct GBCore*) core;
|
struct GBCore* gbcore = (struct GBCore*) core;
|
||||||
gbcore->logContext = mVideoLogContextCreate(NULL);
|
gbcore->logContext = mVideoLogContextCreate(NULL);
|
||||||
if (!mVideoLogContextLoad(gbcore->logContext, vf)) {
|
if (!mVideoLogContextLoad(gbcore->logContext, vf)) {
|
||||||
mVideoLogContextDestroy(core, gbcore->logContext);
|
mVideoLogContextDestroy(core, gbcore->logContext, false);
|
||||||
gbcore->logContext = NULL;
|
gbcore->logContext = NULL;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1224,7 +1224,7 @@ static bool _GBAVLPInit(struct mCore* core) {
|
||||||
static void _GBAVLPDeinit(struct mCore* core) {
|
static void _GBAVLPDeinit(struct mCore* core) {
|
||||||
struct GBACore* gbacore = (struct GBACore*) core;
|
struct GBACore* gbacore = (struct GBACore*) core;
|
||||||
if (gbacore->logContext) {
|
if (gbacore->logContext) {
|
||||||
mVideoLogContextDestroy(core, gbacore->logContext);
|
mVideoLogContextDestroy(core, gbacore->logContext, true);
|
||||||
}
|
}
|
||||||
_GBACoreDeinit(core);
|
_GBACoreDeinit(core);
|
||||||
}
|
}
|
||||||
|
@ -1253,7 +1253,7 @@ static bool _GBAVLPLoadROM(struct mCore* core, struct VFile* vf) {
|
||||||
struct GBACore* gbacore = (struct GBACore*) core;
|
struct GBACore* gbacore = (struct GBACore*) core;
|
||||||
gbacore->logContext = mVideoLogContextCreate(NULL);
|
gbacore->logContext = mVideoLogContextCreate(NULL);
|
||||||
if (!mVideoLogContextLoad(gbacore->logContext, vf)) {
|
if (!mVideoLogContextLoad(gbacore->logContext, vf)) {
|
||||||
mVideoLogContextDestroy(core, gbacore->logContext);
|
mVideoLogContextDestroy(core, gbacore->logContext, false);
|
||||||
gbacore->logContext = NULL;
|
gbacore->logContext = NULL;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -871,9 +871,8 @@ void CoreController::endVideoLog(bool closeVf) {
|
||||||
}
|
}
|
||||||
|
|
||||||
Interrupter interrupter(this);
|
Interrupter interrupter(this);
|
||||||
mVideoLogContextDestroy(m_threadContext.core, m_vl);
|
mVideoLogContextDestroy(m_threadContext.core, m_vl, closeVf);
|
||||||
if (m_vlVf && closeVf) {
|
if (closeVf) {
|
||||||
m_vlVf->close(m_vlVf);
|
|
||||||
m_vlVf = nullptr;
|
m_vlVf = nullptr;
|
||||||
}
|
}
|
||||||
m_vl = nullptr;
|
m_vl = nullptr;
|
||||||
|
|
Loading…
Reference in New Issue