gnash
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Gnash] plugin update


From: Nicolas Cannasse
Subject: Re: [Gnash] plugin update
Date: Fri, 10 Feb 2006 16:09:30 +0100
User-agent: Mozilla Thunderbird 1.0.7 (Windows/20050923)

The problem with OpenGL is that it doesn't support multithreading. You
need then to use some kind of system-wide lock when doing OGL
operations.


The way you say this, you make it sound like multithreaded behavior in
OpenGL is undefined and unsupported. I don't believe this is true -
the behavior is well-defined, and supported. Multiple threads can

Yes, this is not what I was meaning, sorry if I was not clear.

However if you want to create one thread per Flash object, you have to secure your whole Player as multithreadable, that's quite a lot of work if it wasn't planed from the beginning.

changing the PixelFormat for OpenGL (using SetPixelFormat, on Windows)
was making a small but perceptive lag that was degrading user experience.


I don't know about this, but I can't imagine there is any reason we
would need to change the pixelformat, unless we someday provide the
user an option to set it manually (perhaps for color bit-depth
reasons?). We can initialize it to whatever we want, and keep it that
way for the entire time the flash file is being rendered.

Well this is I guess the common way to initialize OpenGL on Windows (see below). I'm not in best position to comment on this point either, I'm just talking about my own experience on such topics :)

Nicolas

--
  PIXELFORMATDESCRIPTOR pfd;
  int format;
  *hDC = GetDC( hWnd );
  ZeroMemory( &pfd, sizeof( pfd ) );
  pfd.nSize = sizeof( pfd );
  pfd.nVersion = 1;
  pfd.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER;
  pfd.iPixelType = PFD_TYPE_RGBA;
  pfd.cColorBits = 32;
  pfd.cDepthBits = 16;
  pfd.iLayerType = PFD_MAIN_PLANE;
  format = ChoosePixelFormat( *hDC, &pfd );
  SetPixelFormat( *hDC, format, &pfd );
  *hRC = wglCreateContext( *hDC );
  wglMakeCurrent( *hDC, *hRC );




reply via email to

[Prev in Thread] Current Thread [Next in Thread]