示例#1
0
    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)
示例#2
0
 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)