def __init__(self, name=None, x_screen=None): if x_screen is None: x_screen = 0 self._display = xlib.XOpenDisplay(name) if not self._display: raise NoSuchDisplayException('Cannot connect to "%s"' % name) screen_count = xlib.XScreenCount(self._display) if x_screen >= screen_count: raise NoSuchDisplayException('Display "%s" has no screen %d' % (name, x_screen)) super(XlibDisplay, self).__init__() self.name = name self.x_screen = x_screen self._fileno = xlib.XConnectionNumber(self._display) self._window_map = {} # Initialise XSync if _have_xsync: event_base = c_int() error_base = c_int() if xsync.XSyncQueryExtension(self._display, byref(event_base), byref(error_base)): major_version = c_int() minor_version = c_int() if xsync.XSyncInitialize(self._display, byref(major_version), byref(minor_version)): self._enable_xsync = True # Add to event loop select list. Assume we never go away. app.platform_event_loop._select_devices.add(self)
def set(self): display = xlib.XOpenDisplay(self.display) modes, n_modes = get_modes_array(display, self.screen) mode = get_matching_mode(modes, n_modes, self.width, self.height, self.rate) if mode is not None: xf86vmode.XF86VidModeSwitchToMode(display, self.screen, mode) free_modes_array(modes, n_modes) xlib.XCloseDisplay(display)