Example #1
0
 def __init__(self, wid, w, h, has_alpha):
     GTK2WindowBacking.__init__(self, wid, w, h, has_alpha)
     display_mode = get_DISPLAY_MODE()
     try:
         self.glconfig = gtk.gdkgl.Config(mode=display_mode)
     except gtk.gdkgl.NoMatches:
         display_mode &= ~gtk.gdkgl.MODE_DOUBLE
         self.glconfig = gtk.gdkgl.Config(mode=display_mode)
     self._backing = gtk.gtkgl.DrawingArea(self.glconfig)
     #restoring missed masks:
     self._backing.set_events(self._backing.get_events()
                              | gdk.POINTER_MOTION_MASK
                              | gdk.POINTER_MOTION_HINT_MASK)
     self._backing.show()
     self._backing.connect("expose_event", self.gl_expose_event)
     self.textures = None  # OpenGL texture IDs
     self.shaders = None
     self.pixel_format = None
     self.size = 0, 0
     self.texture_size = 0, 0
     self.gl_setup = False
     self.paint_screen = False
     self._video_use_swscale = False
     self.draw_needs_refresh = False
     self.offscreen_fbo = None
Example #2
0
 def __init__(self, wid, w, h, has_alpha):
     GTK2WindowBacking.__init__(self, wid, w, h, has_alpha)
     display_mode = get_DISPLAY_MODE()
     try:
         self.glconfig = gtk.gdkgl.Config(mode=display_mode)
     except gtk.gdkgl.NoMatches:
         display_mode &= ~gtk.gdkgl.MODE_DOUBLE
         self.glconfig = gtk.gdkgl.Config(mode=display_mode)
     self._backing = gtk.gtkgl.DrawingArea(self.glconfig)
     # restoring missed masks:
     self._backing.set_events(self._backing.get_events() | gdk.POINTER_MOTION_MASK | gdk.POINTER_MOTION_HINT_MASK)
     if self._has_alpha:
         screen = self._backing.get_screen()
         rgba = screen.get_rgba_colormap()
         if rgba:
             self._backing.set_colormap(rgba)
         else:
             log.warn("failed to enable transparency on screen %s", screen)
             self._has_alpha = False
     self._backing.show()
     self._backing.connect("expose_event", self.gl_expose_event)
     self.textures = None  # OpenGL texture IDs
     self.shaders = None
     self.pixel_format = None
     self.size = 0, 0
     self.texture_size = 0, 0
     self.gl_setup = False
     self.debug_setup = False
     self.paint_screen = False
     self._video_use_swscale = False
     self.draw_needs_refresh = False
     self.offscreen_fbo = None
Example #3
0
 def __init__(self, wid, w, h, window_alpha):
     alpha = GL_ALPHA_SUPPORTED and window_alpha
     display_mode = get_DISPLAY_MODE(want_alpha=alpha)
     try:
         self.glconfig = gtk.gdkgl.Config(mode=display_mode)
     except gtk.gdkgl.NoMatches:
         #toggle double buffering and try again:
         display_mode &= ~gtk.gdkgl.MODE_DOUBLE
         log.warn(
             "failed to initialize gl context: trying again %s double buffering",
             (bool(display_mode & gtk.gdkgl.MODE_DOUBLE) and "with")
             or "without")
         self.glconfig = gtk.gdkgl.Config(mode=display_mode)
     GTK2WindowBacking.__init__(self, wid, alpha
                                and self.glconfig.has_alpha())
     self._backing = gtk.gtkgl.DrawingArea(self.glconfig)
     #restoring missed masks:
     self._backing.set_events(self._backing.get_events()
                              | gdk.POINTER_MOTION_MASK
                              | gdk.POINTER_MOTION_HINT_MASK)
     if self._alpha_enabled:
         assert GL_ALPHA_SUPPORTED, "BUG: cannot enable alpha if GL backing does not support it!"
         screen = self._backing.get_screen()
         rgba = screen.get_rgba_colormap()
         if rgba:
             log("%s.__init__() using rgba colormap %s", rgba)
             self._backing.set_colormap(rgba)
         else:
             log.warn("failed to enable transparency on screen %s", screen)
             self._alpha_enabled = False
     #this is how many bpp we keep in the texture
     #(pixels are always stored in 32bpp - but this makes it clearer when we do/don't support alpha)
     if self._alpha_enabled:
         self.texture_pixel_format = GL_RGBA
     else:
         self.texture_pixel_format = GL_RGB
     #this is the pixel format we are currently updating the fbo with
     #can be: "YUV420P", "YUV422P", "YUV444P", "GBRP" or None when not initialized yet.
     self.pixel_format = None
     self._backing.show()
     self._backing.connect("expose_event", self.gl_expose_event)
     self.textures = None  # OpenGL texture IDs
     self.shaders = None
     self.size = 0, 0
     self.texture_size = 0, 0
     self.gl_setup = False
     self.debug_setup = False
     self.border = None
     self.paint_screen = False
     self._video_use_swscale = False
     self.draw_needs_refresh = False
     self.offscreen_fbo = None
Example #4
0
 def close(self):
     # This seems to cause problems, so we rely
     # on destroying the context to clear textures and fbos...
     # if self.offscreen_fbo is not None:
     #    glDeleteFramebuffers(1, [self.offscreen_fbo])
     #    self.offscreen_fbo = None
     # if self.textures is not None:
     #    glDeleteTextures(self.textures)
     #    self.textures = None
     if self._backing:
         self._backing.destroy()
     GTK2WindowBacking.close(self)
     self.glconfig = None
Example #5
0
 def close(self):
     #This seems to cause problems, so we rely
     #on destroying the context to clear textures and fbos...
     #if self.offscreen_fbo is not None:
     #    glDeleteFramebuffers(1, [self.offscreen_fbo])
     #    self.offscreen_fbo = None
     #if self.textures is not None:
     #    glDeleteTextures(self.textures)
     #    self.textures = None
     if self._backing:
         self._backing.destroy()
     GTK2WindowBacking.close(self)
     self.glconfig = None
Example #6
0
 def __init__(self, wid, w, h, window_alpha):
     alpha = GL_ALPHA_SUPPORTED and window_alpha
     display_mode = get_DISPLAY_MODE(want_alpha=alpha)
     try:
         self.glconfig = gtk.gdkgl.Config(mode=display_mode)
     except gtk.gdkgl.NoMatches:
         #toggle double buffering and try again:
         display_mode &= ~gtk.gdkgl.MODE_DOUBLE
         log.warn("failed to initialize gl context: trying again %s double buffering", (bool(display_mode & gtk.gdkgl.MODE_DOUBLE) and "with") or "without")
         self.glconfig = gtk.gdkgl.Config(mode=display_mode)
     GTK2WindowBacking.__init__(self, wid, alpha and self.glconfig.has_alpha())
     self._backing = gtk.gtkgl.DrawingArea(self.glconfig)
     #restoring missed masks:
     self._backing.set_events(self._backing.get_events() | gdk.POINTER_MOTION_MASK | gdk.POINTER_MOTION_HINT_MASK)
     if self._alpha_enabled:
         assert GL_ALPHA_SUPPORTED, "BUG: cannot enable alpha if GL backing does not support it!"
         screen = self._backing.get_screen()
         rgba = screen.get_rgba_colormap()
         if rgba:
             log("%s.__init__() using rgba colormap %s", rgba)
             self._backing.set_colormap(rgba)
         else:
             log.warn("failed to enable transparency on screen %s", screen)
             self._alpha_enabled = False
     #this is how many bpp we keep in the texture
     #(pixels are always stored in 32bpp - but this makes it clearer when we do/don't support alpha)
     if self._alpha_enabled:
         self.texture_pixel_format = GL_RGBA
     else:
         self.texture_pixel_format = GL_RGB
     #this is the pixel format we are currently updating the fbo with
     #can be: "YUV420P", "YUV422P", "YUV444P", "GBRP" or None when not initialized yet.
     self.pixel_format = None
     self._backing.show()
     self._backing.connect("expose_event", self.gl_expose_event)
     self.textures = None # OpenGL texture IDs
     self.shaders = None
     self.size = 0, 0
     self.texture_size = 0, 0
     self.gl_setup = False
     self.debug_setup = False
     self.border = None
     self.paint_screen = False
     self._video_use_swscale = False
     self.draw_needs_refresh = False
     self.offscreen_fbo = None
Example #7
0
 def __init__(self, wid, w, h, has_alpha):
     display_mode = get_DISPLAY_MODE()
     try:
         self.glconfig = gtk.gdkgl.Config(mode=display_mode)
     except gtk.gdkgl.NoMatches:
         display_mode &= ~gtk.gdkgl.MODE_DOUBLE
         self.glconfig = gtk.gdkgl.Config(mode=display_mode)
     if not HAS_ALPHA or not self.glconfig.has_alpha():
         has_alpha = False
     GTK2WindowBacking.__init__(self, wid, w, h, has_alpha)
     self._backing = gtk.gtkgl.DrawingArea(self.glconfig)
     #restoring missed masks:
     self._backing.set_events(self._backing.get_events()
                              | gdk.POINTER_MOTION_MASK
                              | gdk.POINTER_MOTION_HINT_MASK)
     if self._has_alpha:
         screen = self._backing.get_screen()
         rgba = screen.get_rgba_colormap()
         if rgba:
             self._backing.set_colormap(rgba)
         else:
             log.warn("failed to enable transparency on screen %s", screen)
             self._has_alpha = False
     #this is how many bpp we keep in the texture
     #(pixels are always stored in 32bpp - but this makes it clearer when we do/don't support alpha)
     if self._has_alpha:
         self.texture_pixel_format = GL_RGBA
     else:
         self.texture_pixel_format = GL_RGB
     #this is the pixel format we are currently updating the fbo with
     #can be: "YUV420P", "YUV422P", "YUV444P", "GBRP" or None when not initialized yet.
     self.pixel_format = None
     self._backing.show()
     self._backing.connect("expose_event", self.gl_expose_event)
     self.textures = None  # OpenGL texture IDs
     self.shaders = None
     self.size = 0, 0
     self.texture_size = 0, 0
     self.gl_setup = False
     self.debug_setup = False
     self.border = None
     self.paint_screen = False
     self._video_use_swscale = False
     self.draw_needs_refresh = False
     self.offscreen_fbo = None
Example #8
0
 def __init__(self, wid, w, h, has_alpha):
     display_mode = get_DISPLAY_MODE()
     try:
         self.glconfig = gtk.gdkgl.Config(mode=display_mode)
     except gtk.gdkgl.NoMatches:
         display_mode &= ~gtk.gdkgl.MODE_DOUBLE
         self.glconfig = gtk.gdkgl.Config(mode=display_mode)
     if not HAS_ALPHA or not self.glconfig.has_alpha():
         has_alpha = False
     GTK2WindowBacking.__init__(self, wid, w, h, has_alpha)
     self._backing = gtk.gtkgl.DrawingArea(self.glconfig)
     #restoring missed masks:
     self._backing.set_events(self._backing.get_events() | gdk.POINTER_MOTION_MASK | gdk.POINTER_MOTION_HINT_MASK)
     if self._has_alpha:
         screen = self._backing.get_screen()
         rgba = screen.get_rgba_colormap()
         if rgba:
             self._backing.set_colormap(rgba)
         else:
             log.warn("failed to enable transparency on screen %s", screen)
             self._has_alpha = False
     #this is how many bpp we keep in the texture
     #(pixels are always stored in 32bpp - but this makes it clearer when we do/don't support alpha)
     if self._has_alpha:
         self.texture_pixel_format = GL_RGBA
     else:
         self.texture_pixel_format = GL_RGB
     #this is the pixel format we are currently updating the fbo with
     #can be: "YUV420P", "YUV422P", "YUV444P", "GBRP" or None when not initialized yet.
     self.pixel_format = None
     self._backing.show()
     self._backing.connect("expose_event", self.gl_expose_event)
     self.textures = None # OpenGL texture IDs
     self.shaders = None
     self.size = 0, 0
     self.texture_size = 0, 0
     self.gl_setup = False
     self.debug_setup = False
     self.border = None
     self.paint_screen = False
     self._video_use_swscale = False
     self.draw_needs_refresh = False
     self.offscreen_fbo = None
Example #9
0
 def __init__(self, *args):
     self.paint_scaling = 1, 1
     GTK2WindowBacking.__init__(self, *args)
Example #10
0
 def close(self):
     if self._backing:
         self._backing.destroy()
     GTK2WindowBacking.close(self)
     self.glconfig = None
Example #11
0
 def __init__(self, wid, w, h, has_alpha):
     self._backing = None
     GTK2WindowBacking.__init__(self, wid, has_alpha)
Example #12
0
 def close(self):
     if self._backing:
         self._backing.destroy()
     GTK2WindowBacking.close(self)
     self.glconfig = None
Example #13
0
 def get_encoding_properties(self):
     props = GTK2WindowBacking.get_encoding_properties(self)
     if SCROLL_ENCODING:
         props["encoding.scrolling"] = True
     return props
Example #14
0
 def __init__(self, *args):
     self.paint_scaling = 1, 1
     GTK2WindowBacking.__init__(self, *args)