diff options
author | David Schleef <ds@schleef.org> | 2004-08-09 20:16:49 +0000 |
---|---|---|
committer | David Schleef <ds@schleef.org> | 2004-08-09 20:16:49 +0000 |
commit | 39f548de48bd987c48d9138a5e68f9299b077255 (patch) | |
tree | b540a5a690f9482f31a1e3cea54366bd5ee5df70 /sys/glsink/gstglxwindow.c | |
parent | fa1b6c756ad85636d2400c34479a7a4ac8f47e8e (diff) | |
download | gst-plugins-bad-39f548de48bd987c48d9138a5e68f9299b077255.tar.gz gst-plugins-bad-39f548de48bd987c48d9138a5e68f9299b077255.tar.bz2 gst-plugins-bad-39f548de48bd987c48d9138a5e68f9299b077255.zip |
sys/glsink/ARB_multitexture.h: Remove old files.
Original commit message from CVS:
* sys/glsink/ARB_multitexture.h: Remove old files.
* sys/glsink/EXT_paletted_texture.h:
* sys/glsink/NV_register_combiners.h:
* sys/glsink/gstgl_nvimage.c:
* sys/glsink/gstgl_pdrimage.c:
* sys/glsink/gstgl_rgbimage.c:
* sys/glsink/gstglsink.c:
* sys/glsink/gstglsink.h:
* sys/glsink/gstglxwindow.c:
* sys/glsink/regcomb_yuvrgb.c:
Diffstat (limited to 'sys/glsink/gstglxwindow.c')
-rw-r--r-- | sys/glsink/gstglxwindow.c | 265 |
1 files changed, 0 insertions, 265 deletions
diff --git a/sys/glsink/gstglxwindow.c b/sys/glsink/gstglxwindow.c deleted file mode 100644 index cc4da88c..00000000 --- a/sys/glsink/gstglxwindow.c +++ /dev/null @@ -1,265 +0,0 @@ -/* This stores the common OpenGL initialization stuff for all instances */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -/* gcc -ansi -pedantic on GNU/Linux causes warnings and errors - * unless this is defined: - * warning: #warning "Files using this header must be compiled with _SVID_SOURCE or _XOPEN_SOURCE" - */ -#ifndef _XOPEN_SOURCE -# define _XOPEN_SOURCE 1 -#endif - -#include <X11/Xlib.h> -#include <GL/glx.h> -#include <GL/gl.h> -#include <GL/glu.h> -#include "gstglsink.h" -#include <string.h> /* strncmp */ - -/* attributes for a single buffered visual in RGBA format with at least - * 4 bits per color and a 16 bit depth buffer */ -static int attrListSgl[] = { - GLX_RGBA, GLX_RED_SIZE, 4, - GLX_GREEN_SIZE, 4, - GLX_BLUE_SIZE, 4, - GLX_DEPTH_SIZE, 16, - None -}; - -/* attributes for a double buffered visual in RGBA format with at least - * 4 bits per color and a 16 bit depth buffer */ -static int attrListDbl[] = { - GLX_RGBA, GLX_DOUBLEBUFFER, - GLX_RED_SIZE, 4, - GLX_GREEN_SIZE, 4, - GLX_BLUE_SIZE, 4, - GLX_DEPTH_SIZE, 16, - None -}; - - -GLfloat LightAmbient[] = { 0.1, 0.1, 0.1, 1.0 }; /* reddish ambient light */ -GLfloat LightDiffuse[] = { 0.6, 0.6, 0.6, 1.0 }; /* bluish diffuse light. */ -GLfloat LightPosition[] = { 1.5, 1.5, 1.5, 0.0 }; /* position */ - - -void -gst_glxwindow_unhook_context (GstImageInfo * info) -{ - GstGLImageInfo *window = (GstGLImageInfo *) info; - - if (window->ctx) { - if (!glXMakeCurrent (window->dpy, None, NULL)) { - printf ("Could not release drawing context.\n"); - } else - printf ("Released drawing context.\n"); - } -} - -void -gst_glxwindow_hook_context (GstImageInfo * info) -{ - GstGLImageInfo *window = (GstGLImageInfo *) info; - - if (window->ctx && window->win && window->ctx) { - if (!glXMakeCurrent (window->dpy, window->win, window->ctx)) { - printf ("Could not acquire GLX drawing context.\n"); - } else - printf ("Acquired drawing context.\n"); - } -} - -static void -gst_glxwindow_free (GstImageInfo * info) -{ - GstGLImageInfo *window = (GstGLImageInfo *) info; - - g_signal_handler_disconnect (window->sink, window->handler_id); - - if (window->ctx) { - if (!glXMakeCurrent (window->dpy, None, NULL)) { - printf ("Could not release drawing context.\n"); - } - glXDestroyContext (window->dpy, window->ctx); - window->ctx = NULL; - } -#if 0 - /* switch back to original desktop resolution if we were in fs */ - if (GLWin.fs) { - XF86VidModeSwitchToMode (GLWin.dpy, GLWin.screen, &GLWin.deskMode); - XF86VidModeSetViewPort (GLWin.dpy, GLWin.screen, 0, 0); - } -#endif - XCloseDisplay (window->dpy); - g_free (window); -} - -static void -gst_glxwindow_callback (GObject * object, GParamSpec * pspec, - GstGLImageInfo * data) -{ - XWindowAttributes attr; - - XGetWindowAttributes (data->dpy, data->win, &attr); - - if (strncmp (pspec->name, "width", 5) == 0 - || strncmp (pspec->name, "height", 6) == 0) { - gint w = 0; - gint h = 0; - - g_object_get (object, "width", &w, NULL); - g_object_get (object, "height", &h, NULL); - if (w != attr.width || h != attr.height) { - attr.width = w; - attr.height = h; - XResizeWindow (data->dpy, data->win, attr.width, attr.height); - XMapRaised (data->dpy, data->win); - - // resize OpenGL - g_warning ("resizing in OpenGL"); - glViewport (0, 0, (GLint) w, (GLint) h); - glMatrixMode (GL_PROJECTION); - glLoadIdentity (); - - GLfloat aspect = (GLfloat) h / (GLfloat) w; - - glFrustum (-1.0, 1.0, -aspect, aspect, 5.0, 500.0); - } - } - if (attr.width != data->width || attr.height != data->height) { - data->width = attr.width; - data->height = attr.height; - } - -} - -void -gst_glxwindow_new (GstElement * sink) -{ - //XGCValues values; - GstGLImageInfo *new; - int glxMajorVersion, glxMinorVersion; - - //XSetWindowAttributes attrib; - XVisualInfo *vi; - Atom wmDelete; - Window winDummy; - unsigned int borderDummy; - Colormap cmap; - char *title = "GLSink (experimental)"; - - new = g_new0 (GstGLImageInfo, 1); - - if (sink == NULL) { - sink = gst_element_factory_make ("glsink", "glsink"); - g_assert (sink != NULL); - } - - /* fill in the ImageInfo */ - new->info.id = GST_MAKE_FOURCC ('X', 'l', 'i', 'b'); - new->info.free_info = gst_glxwindow_free; - - new->dpy = XOpenDisplay (NULL); - if (!new->dpy) { - g_warning ("open display failed!\n"); - g_free (new); - return; - } - new->screen = DefaultScreen (new->dpy); - /* get an appropriate visual */ - vi = glXChooseVisual (new->dpy, new->screen, attrListDbl); - if (vi == NULL) { - vi = glXChooseVisual (new->dpy, new->screen, attrListSgl); - GST_DEBUG ("Only Singlebuffered Visual!\n"); - } else { - GST_DEBUG ("Got Doublebuffered Visual!\n"); - } - glXQueryVersion (new->dpy, &glxMajorVersion, &glxMinorVersion); - GST_DEBUG ("glX-Version %d.%d\n", glxMajorVersion, glxMinorVersion); - - /* create a GLX context */ - new->ctx = glXCreateContext (new->dpy, vi, 0, GL_TRUE); - /* create a color map */ - cmap = XCreateColormap (new->dpy, RootWindow (new->dpy, vi->screen), - vi->visual, AllocNone); - new->attr.colormap = cmap; - new->attr.border_pixel = 0; - - /* set sizes */ - new->x = 0; - new->y = 0; - new->width = 10; - new->height = 10; - - new->rotX = 0; - new->rotY = 0; - new->zoom = 1; - new->zoomdir = 0.01; - - { - /* create a window in window mode */ - new->attr.event_mask = ExposureMask | KeyPressMask | ButtonPressMask | - StructureNotifyMask; - new->win = XCreateWindow (new->dpy, RootWindow (new->dpy, vi->screen), - new->x, new->y, new->width, new->height, 0, vi->depth, InputOutput, - vi->visual, CWBorderPixel | CWColormap | CWEventMask, &new->attr); - if (!new->win) { - g_warning ("create window failed\n"); - g_free (new); - return; - } - /* only set window title and handle wm_delete_events if in windowed mode */ - wmDelete = XInternAtom (new->dpy, "WM_DELETE_WINDOW", True); - XSetWMProtocols (new->dpy, new->win, &wmDelete, 1); - XSetStandardProperties (new->dpy, new->win, title, - title, None, NULL, 0, NULL); - XMapRaised (new->dpy, new->win); - } - /* connect the glx-context to the window */ - glXMakeCurrent (new->dpy, new->win, new->ctx); - XGetGeometry (new->dpy, new->win, &winDummy, &new->x, &new->y, - &new->width, &new->height, &borderDummy, &new->depth); - printf ("Depth %d\n", new->depth); - if (glXIsDirect (new->dpy, new->ctx)) - GST_DEBUG ("Congrats, you have Direct Rendering!\n"); - else - GST_DEBUG ("Sorry, no Direct Rendering possible!\n"); - - g_warning ("Initializing OpenGL parameters\n"); - /* initialize OpenGL drawing */ - glEnable (GL_DEPTH_TEST); - //glShadeModel(GL_SMOOTH); - - glEnable (GL_TEXTURE_2D); - glDisable (GL_CULL_FACE); - glClearDepth (1.0f); - glClearColor (0, 0, 0, 0); - - glLightfv (GL_LIGHT0, GL_AMBIENT, LightAmbient); /* add lighting. (ambient) */ - glLightfv (GL_LIGHT0, GL_DIFFUSE, LightDiffuse); /* add lighting. (diffuse). */ - glLightfv (GL_LIGHT0, GL_POSITION, LightPosition); /* set light position. */ - - //glEnable(GL_LIGHT0); // Quick And Dirty Lighting (Assumes Light0 Is Set Up) - //glEnable(GL_LIGHTING); // Enable Lighting - glDisable (GL_COLOR_MATERIAL); // Enable Material Coloring - glEnable (GL_AUTO_NORMAL); // let OpenGL generate the Normals - - glDisable (GL_BLEND); - - glPolygonMode (GL_FRONT, GL_FILL); - glPolygonMode (GL_BACK, GL_FILL); - - glShadeModel (GL_SMOOTH); - glHint (GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); - - XSelectInput (new->dpy, new->win, ExposureMask | StructureNotifyMask); - - g_object_set (sink, "hook", new, NULL); - new->sink = sink; - new->handler_id = - g_signal_connect (sink, "notify", G_CALLBACK (gst_glxwindow_callback), - new); -} |