diff --git a/src/platform/python/mgba/core.py b/src/platform/python/mgba/core.py index 8b7abbf84..837f4188f 100644 --- a/src/platform/python/mgba/core.py +++ b/src/platform/python/mgba/core.py @@ -105,8 +105,13 @@ class Core(object): self._core.addCoreCallbacks(self._core, self._callbacks.context) self.config = Config(ffi.addressof(native.config)) + def __del__(self): + self._wasReset = False + @cached_property def graphicsCache(self): + if not self._wasReset: + raise RuntimeError("Core must be reset first") return tile.CacheSet(self) @cached_property diff --git a/src/platform/python/mgba/gb.py b/src/platform/python/mgba/gb.py index bd629922d..f70f9173f 100644 --- a/src/platform/python/mgba/gb.py +++ b/src/platform/python/mgba/gb.py @@ -32,8 +32,9 @@ class GB(Core): lib.GBVideoCacheAssociate(cache, ffi.addressof(self._native.video)) def _deinitCache(self, cache): - self._native.video.renderer.cache = ffi.NULL lib.mCacheSetDeinit(cache) + if self._wasReset: + self._native.video.renderer.cache = ffi.NULL def reset(self): super(GB, self).reset() diff --git a/src/platform/python/mgba/gba.py b/src/platform/python/mgba/gba.py index 2cec1ec42..bbe544683 100644 --- a/src/platform/python/mgba/gba.py +++ b/src/platform/python/mgba/gba.py @@ -40,8 +40,9 @@ class GBA(Core): lib.GBAVideoCacheAssociate(cache, ffi.addressof(self._native.video)) def _deinitCache(self, cache): - self._native.video.renderer.cache = ffi.NULL lib.mCacheSetDeinit(cache) + if self._wasReset: + self._native.video.renderer.cache = ffi.NULL def reset(self): super(GBA, self).reset()