summaryrefslogtreecommitdiffstats
path: root/src/nativewindow/classes
diff options
context:
space:
mode:
authorSven Gothel <[email protected]>2009-10-03 21:56:30 -0700
committerSven Gothel <[email protected]>2009-10-03 21:56:30 -0700
commitbf584fba26561a1905f37251d681ac100d4a0779 (patch)
tree59df84cac68eb274318d7280c900f5a2b2df714c /src/nativewindow/classes
parent4d4b7c52d032d0c9302e4e16560f2e874e31b8bc (diff)
NativeWindow extends SurfaceUpdatedListener for 'surfaceUpdated' propagation. GLDrawableFactory.createGLDrawable() propagates NativeWindow to offscreen NullWindow.
Diffstat (limited to 'src/nativewindow/classes')
-rw-r--r--src/nativewindow/classes/com/sun/nativewindow/impl/NullWindow.java15
-rw-r--r--src/nativewindow/classes/com/sun/nativewindow/impl/jawt/JAWTWindow.java2
-rw-r--r--src/nativewindow/classes/javax/media/nativewindow/NativeWindow.java11
-rw-r--r--src/nativewindow/classes/javax/media/nativewindow/SurfaceUpdatedListener.java46
4 files changed, 61 insertions, 13 deletions
diff --git a/src/nativewindow/classes/com/sun/nativewindow/impl/NullWindow.java b/src/nativewindow/classes/com/sun/nativewindow/impl/NullWindow.java
index c5a617990..6f568df13 100644
--- a/src/nativewindow/classes/com/sun/nativewindow/impl/NullWindow.java
+++ b/src/nativewindow/classes/com/sun/nativewindow/impl/NullWindow.java
@@ -96,7 +96,17 @@ public class NullWindow implements NativeWindow {
return false;
}
- public void surfaceUpdated(Object updater) { }
+ NativeWindow upstreamNW = null;
+
+ public void setUpstreamNativeWindow(NativeWindow upstream) {
+ upstreamNW = upstream;
+ }
+
+ public void surfaceUpdated(Object updater, NativeWindow window, long when) {
+ if(null!=upstreamNW) {
+ upstreamNW.surfaceUpdated(updater, upstreamNW, when);
+ }
+ }
public long getDisplayHandle() {
return displayHandle;
@@ -142,7 +152,8 @@ public class NullWindow implements NativeWindow {
return "NullWindow[config "+config+
", displayHandle 0x"+Long.toHexString(getDisplayHandle())+
", surfaceHandle 0x"+Long.toHexString(getSurfaceHandle())+
- ", size "+getWidth()+"x"+getHeight()+"]";
+ ", size "+getWidth()+"x"+getHeight()+
+ ", upstream "+upstreamNW+"]";
}
}
diff --git a/src/nativewindow/classes/com/sun/nativewindow/impl/jawt/JAWTWindow.java b/src/nativewindow/classes/com/sun/nativewindow/impl/jawt/JAWTWindow.java
index b4975706d..e821f9b3a 100644
--- a/src/nativewindow/classes/com/sun/nativewindow/impl/jawt/JAWTWindow.java
+++ b/src/nativewindow/classes/com/sun/nativewindow/impl/jawt/JAWTWindow.java
@@ -129,7 +129,7 @@ public abstract class JAWTWindow implements NativeWindow {
return false;
}
- public void surfaceUpdated(Object updater) { }
+ public void surfaceUpdated(Object updater, NativeWindow window, long when) { }
public long getDisplayHandle() {
return config.getScreen().getDevice().getHandle();
diff --git a/src/nativewindow/classes/javax/media/nativewindow/NativeWindow.java b/src/nativewindow/classes/javax/media/nativewindow/NativeWindow.java
index 1b000072e..37606e8d8 100644
--- a/src/nativewindow/classes/javax/media/nativewindow/NativeWindow.java
+++ b/src/nativewindow/classes/javax/media/nativewindow/NativeWindow.java
@@ -52,7 +52,7 @@ package javax.media.nativewindow;
it, and any time it is visible and locked, provide information
such as the window handle.
*/
-public interface NativeWindow {
+public interface NativeWindow extends SurfaceUpdatedListener {
/** Returned by {@link #lockSurface()} if the surface is not ready to be locked. */
public static final int LOCK_SURFACE_NOT_READY = 1;
@@ -123,15 +123,6 @@ public interface NativeWindow {
*/
public boolean surfaceSwap();
- /**
- * Method invoked after the render toolkit (e.g. JOGL)
- * swapped/changed the buffer/surface.
- *
- * @param updater is the caller object who updated the surface,
- * e.g. a JOGL GLDrawable.
- */
- public void surfaceUpdated(Object updater);
-
/**
* render all native window information invalid,
* as if the native window was destroyed
diff --git a/src/nativewindow/classes/javax/media/nativewindow/SurfaceUpdatedListener.java b/src/nativewindow/classes/javax/media/nativewindow/SurfaceUpdatedListener.java
new file mode 100644
index 000000000..7be15408c
--- /dev/null
+++ b/src/nativewindow/classes/javax/media/nativewindow/SurfaceUpdatedListener.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2008 Sun Microsystems, Inc. All Rights Reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * - Redistribution of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * - Redistribution in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * Neither the name of Sun Microsystems, Inc. or the names of
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * This software is provided "AS IS," without a warranty of any kind. ALL
+ * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
+ * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
+ * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN
+ * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR
+ * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
+ * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR
+ * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR
+ * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE
+ * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
+ * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
+ * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+ *
+ */
+
+package javax.media.nativewindow;
+
+public interface SurfaceUpdatedListener {
+ /** Notification of a surface update event.
+ *
+ * @param updater is the caller object who updated the surface,
+ * e.g. a JOGL GLDrawable.
+ * @param window the NativeWindow, which surface is updated
+ * @param when the time in ms, when the surface was updated
+ */
+ public void surfaceUpdated(Object updater, NativeWindow window, long when) ;
+}
+