Call ARMDeinit

This commit is contained in:
Jeffrey Pfau 2014-04-20 00:52:37 -07:00
parent 7a4ca414e5
commit 9bf77f6653
4 changed files with 15 additions and 0 deletions

View File

@ -72,6 +72,18 @@ void ARMInit(struct ARMCore* cpu) {
}
}
void ARMDeinit(struct ARMCore* cpu) {
if (cpu->master->deinit) {
cpu->master->deinit(cpu->master);
}
int i;
for (i = 0; i < cpu->numComponents; ++i) {
if (cpu->components[i]->deinit) {
cpu->components[i]->deinit(cpu->components[i]);
}
}
}
void ARMSetComponents(struct ARMCore* cpu, struct ARMComponent* master, int extra, struct ARMComponent** extras) {
// TODO: Call init/deinit
cpu->master = master;

View File

@ -145,6 +145,7 @@ struct ARMCore {
};
void ARMInit(struct ARMCore* cpu);
void ARMDeinit(struct ARMCore* cpu);
void ARMSetComponents(struct ARMCore* cpu, struct ARMComponent* master, int extra, struct ARMComponent** extras);
void ARMReset(struct ARMCore* cpu);

View File

@ -154,6 +154,7 @@ static THREAD_ENTRY _GBAThreadRun(void* context) {
}
threadContext->gba = 0;
ARMDeinit(&cpu);
GBADestroy(&gba);
ConditionWake(&threadContext->sync.videoFrameAvailableCond);

View File

@ -102,6 +102,7 @@ static void _checkOverrides(struct GBA* gba, uint32_t code);
void GBACreate(struct GBA* gba) {
gba->d.id = GBA_COMPONENT_MAGIC;
gba->d.init = GBAInit;
gba->d.deinit = 0;
}
static void GBAInit(struct ARMCore* cpu, struct ARMComponent* component) {