2009-09-03 21:01:11 +02:00
|
|
|
|
#region --- License ---
|
|
|
|
|
/* Licensed under the MIT/X11 license.
|
|
|
|
|
* Copyright (c) 2006-2008 the OpenTK Team.
|
|
|
|
|
* This notice may not be removed from any source distribution.
|
|
|
|
|
* See license.txt for licensing detailed licensing details.
|
|
|
|
|
*/
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using System.Windows.Forms;
|
|
|
|
|
using System.Runtime.InteropServices;
|
|
|
|
|
|
|
|
|
|
using OpenTK.Graphics;
|
|
|
|
|
using OpenTK.Platform;
|
|
|
|
|
|
|
|
|
|
namespace OpenTK
|
|
|
|
|
{
|
|
|
|
|
class X11GLControl : IGLControl
|
|
|
|
|
{
|
|
|
|
|
#region P/Invokes
|
|
|
|
|
|
|
|
|
|
[DllImport("libX11")]
|
|
|
|
|
public extern static int XPending(IntPtr diplay);
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region Fields
|
|
|
|
|
|
|
|
|
|
GraphicsMode mode;
|
|
|
|
|
IWindowInfo window_info;
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
internal X11GLControl(GraphicsMode mode, Control control)
|
|
|
|
|
{
|
|
|
|
|
if (mode == null)
|
|
|
|
|
throw new ArgumentNullException("mode");
|
|
|
|
|
if (control == null)
|
|
|
|
|
throw new ArgumentNullException("control");
|
|
|
|
|
|
|
|
|
|
this.mode = mode;
|
|
|
|
|
|
|
|
|
|
window_info = Utilities.CreateWindowInfo(mode, control.Handle, true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#region IGLControl Members
|
|
|
|
|
|
|
|
|
|
public IGraphicsContext CreateContext(int major, int minor, GraphicsContextFlags flags)
|
|
|
|
|
{
|
|
|
|
|
return new GraphicsContext(mode, this.WindowInfo, major, minor, flags);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public bool IsIdle
|
|
|
|
|
{
|
|
|
|
|
get { return XPending(((Platform.X11.X11WindowInfo)window_info).Display) == 0; }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public IWindowInfo WindowInfo
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return window_info;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
}
|
|
|
|
|
}
|