Package com.jogamp.nativewindow
Interface AbstractGraphicsDevice
-
- All Superinterfaces:
Cloneable
- All Known Implementing Classes:
AWTGraphicsDevice
,DefaultGraphicsDevice
,EGLGraphicsDevice
,IOSGraphicsDevice
,MacOSXGraphicsDevice
,WindowsGraphicsDevice
,X11GraphicsDevice
public interface AbstractGraphicsDevice extends Cloneable
A interface describing a graphics device in a toolkit-independent manner.
-
-
Field Summary
Fields Modifier and Type Field Description static boolean
DEBUG
static String
DEFAULT_CONNECTION
Dummy connection value for a default connection where no native support for multiple devices is availablestatic int
DEFAULT_UNIT
Default unit id for the 1st device: 0static String
EXTERNAL_CONNECTION
Dummy connection value for an external connection where no native support for multiple devices is available
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description void
clearHandleOwner()
Object
clone()
boolean
close()
Optionally closing the device if handle is notnull
.String
getConnection()
Returns the semantic GraphicsDevice connection.
On platforms supporting remote devices, eg via tcp/ip network, the implementation shall return a unique name for each remote address.
On X11 for example, the connection string should be as the following example.
:0.0
for a local connectionremote.host.net:0.0
for a remote connection To support multiple local device, seegetUnitID()
.long
getHandle()
Returns the native handle of the underlying native device, if such thing exist.String
getType()
Returns the type of the underlying subsystem, ie NativeWindowFactory.TYPE_KD, NativeWindowFactory.TYPE_X11, ..String
getUniqueID()
int
getUnitID()
Returns the graphics deviceunit ID
.
Theunit ID
support multiple graphics device configurations on a local machine.
To support remote device, seegetConnection()
.boolean
isHandleOwner()
void
lock()
Optionally locking the device, utilizing egToolkitLock.lock()
.boolean
open()
Optionally [re]opening the device if handle isnull
.void
unlock()
Optionally unlocking the device, utilizing egToolkitLock.unlock()
.void
validateLocked()
-
-
-
Field Detail
-
DEBUG
static final boolean DEBUG
-
DEFAULT_CONNECTION
static final String DEFAULT_CONNECTION
Dummy connection value for a default connection where no native support for multiple devices is available- See Also:
- Constant Field Values
-
EXTERNAL_CONNECTION
static final String EXTERNAL_CONNECTION
Dummy connection value for an external connection where no native support for multiple devices is available- See Also:
- Constant Field Values
-
DEFAULT_UNIT
static final int DEFAULT_UNIT
Default unit id for the 1st device: 0- See Also:
- Constant Field Values
-
-
Method Detail
-
clone
Object clone()
-
getType
String getType()
Returns the type of the underlying subsystem, ie NativeWindowFactory.TYPE_KD, NativeWindowFactory.TYPE_X11, ..
-
getConnection
String getConnection()
Returns the semantic GraphicsDevice connection.
On platforms supporting remote devices, eg via tcp/ip network, the implementation shall return a unique name for each remote address.
On X11 for example, the connection string should be as the following example.
:0.0
for a local connectionremote.host.net:0.0
for a remote connection
getUnitID()
.
-
getUnitID
int getUnitID()
Returns the graphics deviceunit ID
.
Theunit ID
support multiple graphics device configurations on a local machine.
To support remote device, seegetConnection()
.- Returns:
-
getUniqueID
String getUniqueID()
Returns a unique ID object of this device usingtype
,connection
andunitID
as it's key components.The unique ID does not reflect the instance of the device, hence the handle is not included. The unique ID may be used as a key for semantic device mapping.
The returned string object reference is unique using
String.intern()
and hence can be used as a key itself.
-
getHandle
long getHandle()
Returns the native handle of the underlying native device, if such thing exist.
-
lock
void lock()
Optionally locking the device, utilizing egToolkitLock.lock()
. The lock implementation must be recursive.
-
unlock
void unlock()
Optionally unlocking the device, utilizing egToolkitLock.unlock()
. The lock implementation must be recursive.- Throws:
RuntimeException
- in case the lock is not acquired by this thread.
-
validateLocked
void validateLocked() throws RuntimeException
- Throws:
RuntimeException
- if current thread does not hold the lock
-
open
boolean open()
Optionally [re]opening the device if handle isnull
.The default implementation is a
NOP
.Example implementations like
X11GraphicsDevice
orEGLGraphicsDevice
issue the native open operation in case handle isnull
.- Returns:
- true if the handle was
null
and opening was successful, otherwise false.
-
close
boolean close()
Optionally closing the device if handle is notnull
.The default implementation
dispose
it'sToolkitLock
and sets the handle tonull
.Example implementations like
X11GraphicsDevice
orEGLGraphicsDevice
issue the native close operation or skip it depending on thehandles's ownership
.- Returns:
- true if the handle was not
null
and closing was successful, otherwise false.
-
isHandleOwner
boolean isHandleOwner()
- Returns:
true
if instance owns the handle to issueclose()
, otherwisefalse
.
-
clearHandleOwner
void clearHandleOwner()
-
-