def plugin_get_version(self, handle, path): """Retrieves version information from the plugin.""" try: type_ptr = C.pointer(C.c_int()) ver_ptr = C.pointer(C.c_int()) api_ptr = C.pointer(C.c_int()) name_ptr = C.pointer(C.c_char_p()) cap_ptr = C.pointer(C.c_int()) rval = handle.PluginGetVersion( type_ptr, ver_ptr, api_ptr, name_ptr, cap_ptr) except AttributeError: unload_library(handle) log.warn("library '%s' is invalid, no PluginGetVersion() function found." % ( os.path.basename(path))) except OSError as err: log.debug("plugin_get_version()") log.warn(str(err)) else: if rval == M64ERR_SUCCESS: return (type_ptr.contents.value, ver_ptr.contents.value, api_ptr.contents.value, name_ptr.contents.value.decode(), cap_ptr.contents.value) else: log.debug("plugin_get_version()") log.warn(self.error_message(rval)) return None
def plugin_get_version(self, handle, path): """Retrieves version information from the plugin.""" try: type_ptr = C.pointer(C.c_int()) ver_ptr = C.pointer(C.c_int()) api_ptr = C.pointer(C.c_int()) name_ptr = C.pointer(C.c_char_p()) cap_ptr = C.pointer(C.c_int()) rval = handle.PluginGetVersion(type_ptr, ver_ptr, api_ptr, name_ptr, cap_ptr) except AttributeError: unload_library(handle) log.warn( "library '%s' is invalid, no PluginGetVersion() function found." % (os.path.basename(path))) except OSError as err: log.debug("plugin_get_version()") log.warn(str(err)) else: if rval == M64ERR_SUCCESS: return (type_ptr.contents.value, ver_ptr.contents.value, api_ptr.contents.value, name_ptr.contents.value.decode(), cap_ptr.contents.value) else: log.debug("plugin_get_version()") log.warn(self.error_message(rval)) return None
def plugins_unload(self): """Unloads plugins.""" for plugin_type in self.core.plugin_map.keys(): for plugin_map in self.core.plugin_map[plugin_type].values(): (plugin_handle, plugin_path, plugin_name, plugin_desc, plugin_version) = plugin_map unload_library(plugin_handle) del plugin_handle
def init_callback(self): if self.input_plugin_path_last != self.input_plugin_path(): okay_load = True if self.input: try: unload_library(self.input) except Exception as e: okay_load = False sys.stderr.write("Warning: Python scripting extensions attempted to unload/reload the input plugin after a change, and failed: " + e) if okay_load: self.init_input() for key in self.runnables_index: obj = self.runnables[key] if obj.hasBoot: obj.onBoot() # Normally, mupen64plus starts halted. That is ont what we want. self.core.m64p.DebugSetRunState(C.c_uint(2)) # Enum 2 is RUNNING # TODO: Make a constant self.core.m64p.DebugStep()
def core_unload(self): """Unloads core library.""" if self.core.get_handle(): unload_library(self.core.get_handle()) self.core.m64p = None self.core.config = None