Updated documentation on the *GLNative classes. X11/X11GLNative.cs now doesn't create a render window during the constructor call, but rather when CreateWindow is called explicitly.

This commit is contained in:
the_fiddler 2007-08-05 10:33:23 +00:00
parent 8e440de4ac
commit 519b432cd7
3 changed files with 43 additions and 72 deletions

View file

@ -33,7 +33,8 @@ namespace OpenTK.Platform.Windows
#region --- Contructors ---
/// <summary>
/// Constructs a new WinGLNative window, using safe defaults for the DisplayMode.
/// Constructs a new WinGLNative class. Call CreateWindow to create the
/// actual render window.
/// </summary>
public WinGLNative()
{

View file

@ -37,12 +37,12 @@ namespace OpenTK.Platform.X11
#region --- Public Constructor ---
private X11GLContext()
internal X11GLContext()
{
this.mode = new DisplayMode();
}
public X11GLContext(IWindowInfo info, DisplayMode mode)
internal X11GLContext(IWindowInfo info, DisplayMode mode)
{
X11WindowInfo xInfo = info as X11WindowInfo;
this.windowInfo.Window = xInfo.Window;
@ -54,32 +54,6 @@ namespace OpenTK.Platform.X11
this.mode = mode;
}
public X11GLContext(
IntPtr handle,
IntPtr display,
IntPtr rootWindow,
int screenNo,
IntPtr handleToTopLevelControl,
ColorDepth color,
ColorDepth accum,
int depthBits,
int stencilBits,
int auxBits,
bool stereo,
bool doublebuffer
)
{
Trace.WriteLine("Creating opengl context (X11GLContext driver)");
Trace.Indent();
this.display = display;
this.screenNo = screenNo;
//this.depthBits = depthBits;
//this.stencilBits = stencilBits;
this.CreateVisual();
}
#endregion
#region --- IGLContext Members ---
@ -210,8 +184,8 @@ namespace OpenTK.Platform.X11
public void CreateVisual()
{
Trace.WriteLine("Creating visual.");
Trace.Indent();
Debug.WriteLine("Creating visual.");
Debug.Indent();
ColorDepth color = new ColorDepth(24);
int depthBits = 16;
@ -248,7 +222,7 @@ namespace OpenTK.Platform.X11
visualAttributes.Add((int)Glx.Enums.GLXAttribute.DOUBLEBUFFER);
visualAttributes.Add((int)Glx.Enums.GLXAttribute.NONE);
*/
Trace.Write(
Debug.Write(
String.Format(
"Requesting visual: {0} ({1}{2}{3}{4})... ",
mode.ToString(),
@ -266,8 +240,8 @@ namespace OpenTK.Platform.X11
}
visualInfo = (VisualInfo)Marshal.PtrToStructure(visual, typeof(VisualInfo));
Trace.WriteLine(String.Format("done! (id: {0})", x11context));
Trace.Unindent();
Debug.Print("done! (id: {0})", x11context);
Debug.Unindent();
}
#endregion

View file

@ -26,57 +26,39 @@ namespace OpenTK.Platform.X11
private IntPtr window;
private DisplayMode mode = new DisplayMode();
private bool created;
//private X11Keyboard key;
// Number of pending events.
private int pending = 0;
// C# ResizeEventArgs
private ResizeEventArgs resizeEventArgs = new ResizeEventArgs();
// Low level X11 resize request
private X11.Event xresize = new Event();
// This is never written in the code. If at some point it gets != 0,
// then memory corruption is taking place from the xresize struct.
// Event used for event loop.
private Event e = new Event();
// This is never written in the code. If at some point it gets != 0,
// then memory corruption is taking place from the xresize struct.
int memGuard = 0;
private ConfigureNotifyEvent configure = new ConfigureNotifyEvent();
private ReparentNotifyEvent reparent = new ReparentNotifyEvent();
private ExposeEvent expose = new ExposeEvent();
private CreateWindowEvent createWindow = new CreateWindowEvent();
private DestroyWindowEvent destroyWindow = new DestroyWindowEvent();
// This is never written in the code. If at some point it gets != 0,
// then memory corruption is taking place from the xresize struct.
int memGuard = 0;
//private int width, height;
private bool disposed;
private bool created;
#endregion
#region --- Public Constructors ---
/// <summary>
/// Constructs a new X11GLNative window, with its associated context.
/// Safe defaults for visual, colormap, etc.
/// Constructs and initializes a new X11GLNative window.
/// Call CreateWindow to create the actual render window.
/// </summary>
public X11GLNative()
{
Trace.WriteLine("Creating GameWindow (X11GLNative driver)");
Trace.Indent();
// Set default (safe) DisplayMode.
mode.Width = 640;
mode.Height = 480;
mode.Color = new ColorDepth(24);
mode.DepthBits = 16;
mode.Buffers = 2;
Trace.WriteLine(String.Format("Display mode: {0}", mode));
this.CreateWindow(mode);
}
#endregion
@ -85,8 +67,24 @@ namespace OpenTK.Platform.X11
#region public void CreateWindow(DisplayMode mode)
/// <summary>
/// Opens a new render window with the given DisplayMode.
/// </summary>
/// <param name="mode">The DisplayMode of the render window.</param>
/// <remarks>
/// Creates the window visual and colormap. Associates the colormap/visual
/// with the window and raises the window on top of the window stack.
/// <para>
/// Colormap creation is currently disabled.
/// </para>
/// </remarks>
public void CreateWindow(DisplayMode mode)
{
Debug.WriteLine("Creating GameWindow (X11GLNative driver)");
Debug.Indent();
Debug.WriteLine(String.Format("Display mode: {0}", mode));
windowInfo.Display = display = API.OpenDisplay(null); // null == default display
if (display == IntPtr.Zero)
{
@ -95,20 +93,18 @@ namespace OpenTK.Platform.X11
windowInfo.Screen = screen = API.DefaultScreen(display);
windowInfo.RootWindow = rootWindow = API.RootWindow(display, screen);
Trace.WriteLine(
String.Format(
"Display: {0}, Screen {1}, Root window: {2}",
windowInfo.Display,
windowInfo.Screen,
windowInfo.RootWindow
)
Debug.Print(
"Display: {0}, Screen {1}, Root window: {2}",
windowInfo.Display,
windowInfo.Screen,
windowInfo.RootWindow
);
glContext = new X11GLContext(windowInfo, mode);
glContext.CreateVisual();
// Create a window on this display using the visual above
Trace.Write("Creating output window... ");
Debug.Write("Creating output window... ");
SetWindowAttributes wnd_attributes = new SetWindowAttributes();
wnd_attributes.background_pixel = 0;
@ -146,7 +142,7 @@ namespace OpenTK.Platform.X11
throw new Exception("Could not create window.");
}
Trace.WriteLine("done! (id: " + window + ")");
Debug.WriteLine("done! (id: " + window + ")");
// Set the window hints
/*
@ -177,12 +173,12 @@ namespace OpenTK.Platform.X11
API.MapRaised(display, window);
Trace.WriteLine("Mapped window.");
Debug.WriteLine("Mapped window.");
//glContext.MakeCurrent();
Trace.WriteLine("Our shiny new context is now current - ready to rock 'n' roll!");
Trace.Unindent();
Debug.WriteLine("Our shiny new context is now current - ready to rock 'n' roll!");
Debug.Unindent();
created = true;
}