def test_SDL_INIT_TIMER(self): ret = SDL_Init(SDL_INIT_TIMER) if ret != 0: pytest.skip('Timer subsystem not supported') ret = SDL_WasInit(SDL_INIT_TIMER) assert ret == SDL_INIT_TIMER SDL_QuitSubSystem(SDL_INIT_TIMER)
def set_items(self): if not SDL_WasInit(SDL_INIT_VIDEO): SDL_InitSubSystem(SDL_INIT_VIDEO) self.get_opts(), self.get_keys() self.set_opts(), self.set_keys() if SDL_WasInit(SDL_INIT_VIDEO): SDL_QuitSubSystem(SDL_INIT_VIDEO)
def test_SDL_INIT_VIDEO(self): ret = SDL_Init(SDL_INIT_VIDEO) if ret != 0: pytest.skip('Video subsystem not supported') ret = SDL_WasInit(SDL_INIT_VIDEO) assert ret == SDL_INIT_VIDEO SDL_QuitSubSystem(SDL_INIT_VIDEO)
def test_SDL_INIT_AUDIO(self): ret = SDL_Init(SDL_INIT_AUDIO) if ret != 0: pytest.skip('Audio subsystem not supported') ret = SDL_WasInit(SDL_INIT_AUDIO) assert ret == SDL_INIT_AUDIO SDL_QuitSubSystem(SDL_INIT_AUDIO)
def test_SDL_INIT_HAPTIC(self): ret = SDL_Init(SDL_INIT_HAPTIC) if ret != 0: pytest.skip('Haptic subsystem not supported') ret = SDL_WasInit(SDL_INIT_HAPTIC) assert ret == SDL_INIT_HAPTIC SDL_QuitSubSystem(SDL_INIT_HAPTIC)
def test_SDL_INIT_JOYSTICK(self): ret = SDL_Init(SDL_INIT_JOYSTICK) if ret != 0: pytest.skip('Joystick subsystem not supported') ret = SDL_WasInit(SDL_INIT_JOYSTICK) assert ret == SDL_INIT_JOYSTICK SDL_QuitSubSystem(SDL_INIT_JOYSTICK)
def test_SDL_GetAudioDeviceName(self): devices = {} # Reset audio subsystem SDL_Quit() SDL_Init(0) for index in range(audio.SDL_GetNumAudioDrivers()): # Get input/output device names for each audio driver drivername = audio.SDL_GetAudioDriver(index) os.environ["SDL_AUDIODRIVER"] = drivername.decode("utf-8") # Need to reinitialize subsystem for each driver SDL_InitSubSystem(SDL_INIT_AUDIO) driver = audio.SDL_GetCurrentAudioDriver() if driver is not None: driver = driver.decode("utf-8") devices[driver] = {'input': [], 'output': []} outnum = audio.SDL_GetNumAudioDevices(False) innum = audio.SDL_GetNumAudioDevices(True) for x in range(outnum): name = audio.SDL_GetAudioDeviceName(x, False) assert name is not None devices[driver]['output'].append(name.decode('utf-8')) for x in range(innum): name = audio.SDL_GetAudioDeviceName(x, True) assert name is not None devices[driver]['input'].append(name.decode('utf-8')) SDL_QuitSubSystem(SDL_INIT_AUDIO) print("Available audio drivers and devices:") for driver in devices.keys(): print(driver) print(" - input: {0}".format(str(devices[driver]['input']))) print(" - output: {0}".format(str(devices[driver]['output'])))
def test_SDL_INIT_HAPTIC(self): ret = SDL_Init(SDL_INIT_HAPTIC) if ret != 0: self.skipTest('Haptic subsystem not supported') ret = SDL_WasInit(SDL_INIT_HAPTIC) self.assertEqual(ret, SDL_INIT_HAPTIC) SDL_QuitSubSystem(SDL_INIT_HAPTIC)
def test_SDL_INIT_JOYSTICK(self): ret = SDL_Init(SDL_INIT_JOYSTICK) if ret != 0: self.skipTest('Joystick subsystem not supported') ret = SDL_WasInit(SDL_INIT_JOYSTICK) self.assertEqual(ret, SDL_INIT_JOYSTICK) SDL_QuitSubSystem(SDL_INIT_JOYSTICK)
def test_SDL_INIT_VIDEO(self): ret = SDL_Init(SDL_INIT_VIDEO) if ret != 0: self.skipTest('Video subsystem not supported') ret = SDL_WasInit(SDL_INIT_VIDEO) self.assertEqual(ret, SDL_INIT_VIDEO) SDL_QuitSubSystem(SDL_INIT_VIDEO)
def test_SDL_INIT_TIMER(self): ret = SDL_Init(SDL_INIT_TIMER) if ret != 0: self.skipTest('Timer subsystem not supported') ret = SDL_WasInit(SDL_INIT_TIMER) self.assertEqual(ret, SDL_INIT_TIMER) SDL_QuitSubSystem(SDL_INIT_TIMER)
def test_SDL_GetNumAudioDevices(self): os.environ["SDL_AUDIODRIVER"] = "dummy" SDL_InitSubSystem(SDL_INIT_AUDIO) outnum = audio.SDL_GetNumAudioDevices(False) self.assertGreaterEqual(outnum, 1) innum = audio.SDL_GetNumAudioDevices(True) self.assertGreaterEqual(innum, 0) SDL_QuitSubSystem(SDL_INIT_AUDIO)
def test_SDL_GetNumAudioDevices(self): os.environ["SDL_AUDIODRIVER"] = "dummy" if SDL_InitSubSystem(SDL_INIT_AUDIO) != 0: self.skipTest('Audio subsystem not supported') outnum = audio.SDL_GetNumAudioDevices(False) self.assertGreaterEqual(outnum, 1) innum = audio.SDL_GetNumAudioDevices(True) self.assertGreaterEqual(innum, 0) SDL_QuitSubSystem(SDL_INIT_AUDIO)
def test_SDL_GetCurrentAudioDriver(self): if SDL_InitSubSystem(SDL_INIT_AUDIO) != 0: self.skipTest('Audio subsystem not supported') SDL_QuitSubSystem(SDL_INIT_AUDIO) success = 0 for index in range(audio.SDL_GetNumAudioDrivers()): drivername = audio.SDL_GetAudioDriver(index) os.environ["SDL_AUDIODRIVER"] = drivername.decode("utf-8") # Certain drivers fail without bringing up the correct # return value, such as the esd, if it is not running. SDL_InitSubSystem(SDL_INIT_AUDIO) driver = audio.SDL_GetCurrentAudioDriver() # Do not handle wrong return values. if driver is not None: self.assertEqual(drivername, driver) success += 1 SDL_QuitSubSystem(SDL_INIT_AUDIO) self.assertGreaterEqual(success, 1, "Could not initialize any sound driver")
def signal_handler(signum, frame): signal.signal(signal.SIGINT, signal.SIG_IGN) signal.signal(signal.SIGTERM, signal.SIG_IGN) if tty_fd: os.close(tty_fd) if SDL_WasInit(SDL_INIT_JOYSTICK) == SDL_INIT_JOYSTICK: SDL_QuitSubSystem(SDL_INIT_JOYSTICK) SDL_Quit() LOG.debug(f'{sys.argv[0]} exiting cleanly') sys.exit(0)
def test_SDL_OpenAudio(self): os.environ["SDL_AUDIODRIVER"] = "dummy" SDL_InitSubSystem(SDL_INIT_AUDIO) reqspec = audio.SDL_AudioSpec(44100, audio.AUDIO_U16SYS, 2, 8192, self.audiocallback, None) spec = audio.SDL_AudioSpec(0, 0, 0, 0) ret = audio.SDL_OpenAudio(reqspec, ctypes.byref(spec)) self.assertEqual(ret, 0) self.assertEqual(spec.format, reqspec.format) self.assertEqual(spec.freq, reqspec.freq) self.assertEqual(spec.channels, reqspec.channels) audio.SDL_CloseAudio() SDL_QuitSubSystem(SDL_INIT_AUDIO)
def test_SDL_GetAudioDeviceName(self): os.environ["SDL_AUDIODRIVER"] = "dummy" SDL_InitSubSystem(SDL_INIT_AUDIO) outnum = audio.SDL_GetNumAudioDevices(False) for x in range(outnum): name = audio.SDL_GetAudioDeviceName(x, False) self.assertIsNotNone(name) innum = audio.SDL_GetNumAudioDevices(True) for x in range(innum): name = audio.SDL_GetAudioDeviceName(x, True) self.assertIsNotNone(name) # self.assertRaises(SDLError, audio.get_audio_device_name, -1) # self.assertRaises(SDLError, audio.get_audio_device_name, -1, True) SDL_QuitSubSystem(SDL_INIT_AUDIO)
def test_SDL_GetCurrentAudioDriver(self): success = 0 # Reset audio subsystem SDL_Quit() SDL_Init(0) for index in range(audio.SDL_GetNumAudioDrivers()): drivername = audio.SDL_GetAudioDriver(index) os.environ["SDL_AUDIODRIVER"] = drivername.decode("utf-8") # Certain drivers fail without bringing up the correct # return value, such as the esd, if it is not running. SDL_InitSubSystem(SDL_INIT_AUDIO) driver = audio.SDL_GetCurrentAudioDriver() SDL_QuitSubSystem(SDL_INIT_AUDIO) # Do not handle wrong return values. if driver is not None: assert drivername == driver success += 1 assert success >= 1
def test_SDL_GetAudioDriver(self): if SDL_InitSubSystem(SDL_INIT_AUDIO) != 0: self.skipTest('Audio subsystem not supported') founddummy = False drivercount = audio.SDL_GetNumAudioDrivers() for index in range(drivercount): drivername = audio.SDL_GetAudioDriver(index) self.assertIsInstance(drivername, (str, bytes)) if drivername == b"dummy": founddummy = True self.assertTrue(founddummy, "could not find dummy driver") # self.assertRaises(SDLError, audio.SDL_GetAudioDriver, -1) # self.assertRaises(SDLError, audio.get_audio_driver, # drivercount + 1) self.assertRaises((ctypes.ArgumentError, TypeError), audio.SDL_GetAudioDriver, "Test") self.assertRaises((ctypes.ArgumentError, TypeError), audio.SDL_GetAudioDriver, None) SDL_QuitSubSystem(SDL_INIT_AUDIO)
def test_SDL_OpenCloseAudioDevice(self): os.environ["SDL_AUDIODRIVER"] = "dummy" SDL_InitSubSystem(SDL_INIT_AUDIO) reqspec = audio.SDL_AudioSpec(44100, audio.AUDIO_U16SYS, 2, 8192, self.audiocallback, None) outnum = audio.SDL_GetNumAudioDevices(0) for x in range(outnum): spec = audio.SDL_AudioSpec() name = audio.SDL_GetAudioDeviceName(x, 0) self.assertIsNotNone(name) deviceid = audio.SDL_OpenAudioDevice(None, 0, reqspec, ctypes.byref(spec), 1) self.assertGreaterEqual(deviceid, 2) self.assertIsInstance(spec, audio.SDL_AudioSpec) self.assertEqual(spec.format, reqspec.format) self.assertEqual(spec.freq, reqspec.freq) self.assertEqual(spec.channels, reqspec.channels) audio.SDL_CloseAudioDevice(deviceid) SDL_QuitSubSystem(SDL_INIT_AUDIO)
def main(): # install a signal handler so the script can stop safely def signal_handler(signum, frame): signal.signal(signal.SIGINT, signal.SIG_IGN) signal.signal(signal.SIGTERM, signal.SIG_IGN) if tty_fd: os.close(tty_fd) if SDL_WasInit(SDL_INIT_JOYSTICK) == SDL_INIT_JOYSTICK: SDL_QuitSubSystem(SDL_INIT_JOYSTICK) SDL_Quit() LOG.debug(f'{sys.argv[0]} exiting cleanly') sys.exit(0) debug_flag, hex_chars = parse_arguments(sys.argv) if debug_flag: LOG.setLevel(logging.DEBUG) signal.signal(signal.SIGINT, signal_handler) signal.signal(signal.SIGTERM, signal_handler) # daemonize after signal handlers are registered if os.fork(): os._exit(0) try: tty_fd = os.open('/dev/tty', os.O_WRONLY) except IOError: LOG.error('Unable to open /dev/tty', file=sys.stderr) sys.exit(1) curses.setupterm() mapped_chars = [ get_hex_chars(code) for code in hex_chars if get_hex_chars(code) is not None ] def_buttons = [ 'left', 'right', 'up', 'down', 'a', 'b', 'x', 'y', 'pageup', 'pagedown' ] joy_map = {} # add for each button the mapped keycode, based on the arguments received for i, btn in enumerate(def_buttons): if i < len(mapped_chars): joy_map[btn] = mapped_chars[i] menu_swap = ra_btn_swap_config() # if button A is <enter> and menu_swap_ok_cancel_buttons is true, swap buttons A and B functions if menu_swap \ and 'a' in joy_map.keys() \ and 'b' in joy_map.keys() \ and joy_map['a'] == '\n': joy_map['a'] = joy_map['b'] joy_map['b'] = '\n' # tell SDL that we don't want to grab and lock the keyboard os.environ['SDL_INPUT_LINUX_KEEP_KBD'] = '1' # disable the HIDAPI joystick driver in SDL if not (SDL_USE_HIDAPI): os.environ['SDL_JOYSTICK_HIDAPI'] = '0' # tell SDL to not add any signal handlers for TERM/INT os.environ['SDL_NO_SIGNAL_HANDLERS'] = '1' configs = get_all_ra_config(def_buttons) if SDL_Init(SDL_INIT_JOYSTICK | SDL_INIT_VIDEO) < 0: LOG.error(f'Error in SDL_Init: {SDL_GetError()}') exit(2) if LOG.isEnabledFor(logging.DEBUG): sdl_ver = version.SDL_version() version.SDL_GetVersion(byref(sdl_ver)) wrapper_version = '.'.join(str(i) for i in version_info) LOG.debug( f'Using SDL Version {sdl_ver.major}.{sdl_ver.minor}.{sdl_ver.patch}, PySDL2 version {wrapper_version}' ) if joystick.SDL_NumJoysticks() < 1: LOG.debug(f'No available joystick devices found on startup') event_loop(configs, joy_map, tty_fd) SDL_QuitSubSystem(SDL_INIT_JOYSTICK) SDL_Quit() return 0
def tearDownClass(cls): SDL_QuitSubSystem(SDL_INIT_VIDEO) SDL_Quit()
def test_SDL_GetNumAudioDrivers(self): if SDL_InitSubSystem(SDL_INIT_AUDIO) != 0: self.skipTest('Audio subsystem not supported') count = audio.SDL_GetNumAudioDrivers() self.assertGreaterEqual(count, 1) SDL_QuitSubSystem(SDL_INIT_AUDIO)
def teardown_class(cls): SDL_QuitSubSystem(SDL_INIT_VIDEO) SDL_Quit()
def teardown_method(self): SDL_QuitSubSystem(SDL_INIT_EVERYTHING) SDL_Quit()
def test_SDL_INIT_HAPTIC(self): ret = SDL_Init(SDL_INIT_HAPTIC) self.assertEqual(ret, 0, SDL_GetError()) ret = SDL_WasInit(SDL_INIT_HAPTIC) self.assertEqual(ret, SDL_INIT_HAPTIC) SDL_QuitSubSystem(SDL_INIT_HAPTIC)
def tearDown(self): SDL_QuitSubSystem(SDL_INIT_EVERYTHING) SDL_Quit()
def tearDownClass(cls): SDL_QuitSubSystem(SDL_INIT_TIMER) SDL_Quit()
from sdl2 import SDL_GetNumDisplayModes, SDL_DisplayMode, SDL_GetDisplayMode from m64py.core.defs import * from m64py.frontend.log import log try: if not SDL_WasInit(SDL_INIT_VIDEO): SDL_InitSubSystem(SDL_INIT_VIDEO) MODES = [] display = SDL_DisplayMode() for mode in range(SDL_GetNumDisplayModes(0)): ret = SDL_GetDisplayMode(0, mode, ctypes.byref(display)) if (display.w, display.h) not in MODES: MODES.append((display.w, display.h)) if SDL_WasInit(SDL_INIT_VIDEO): SDL_QuitSubSystem(SDL_INIT_VIDEO) except Exception as err: log.warn(str(err)) class Video(): """Mupen64Plus video extension""" def __init__(self): """Constructor.""" self.parent = None self.widget = None self.glformat = None self.glcontext = None self.major = None self.minor = None
def tearDownClass(cls): SDL_QuitSubSystem(SDL_INIT_EVERYTHING) SDL_Quit()