Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
core
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
LibreOffice
core
Commits
7f5e0f85
Kaydet (Commit)
7f5e0f85
authored
Mar 05, 2015
tarafından
Siqi Liu
Kaydeden (comit)
Miklos Vajna
Mar 09, 2015
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
refactor swipegesture to be handled by layerview
Change-Id: Id094ffa7972df0477ad26b2fc579fe010e745550
üst
3851bd73
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
186 additions
and
187 deletions
+186
-187
LibreOfficeMainActivity.java
...id3/src/java/org/libreoffice/LibreOfficeMainActivity.java
+0
-13
OnSlideSwipeListener.java
...oid3/src/java/org/mozilla/gecko/OnSlideSwipeListener.java
+10
-1
LayerView.java
.../LOAndroid3/src/java/org/mozilla/gecko/gfx/LayerView.java
+176
-173
No files found.
android/experimental/LOAndroid3/src/java/org/libreoffice/LibreOfficeMainActivity.java
Dosyayı görüntüle @
7f5e0f85
...
@@ -144,19 +144,6 @@ public class LibreOfficeMainActivity extends LOAbout {
...
@@ -144,19 +144,6 @@ public class LibreOfficeMainActivity extends LOAbout {
LayerView
layerView
=
(
LayerView
)
findViewById
(
R
.
id
.
layer_view
);
LayerView
layerView
=
(
LayerView
)
findViewById
(
R
.
id
.
layer_view
);
mLayerClient
.
setView
(
layerView
);
mLayerClient
.
setView
(
layerView
);
layerView
.
setInputConnectionHandler
(
new
LOKitInputConnectionHandler
());
layerView
.
setInputConnectionHandler
(
new
LOKitInputConnectionHandler
());
layerView
.
setOnTouchListener
(
new
OnSlideSwipeListener
(
this
)
{
@Override
public
void
onSwipeRight
()
{
Log
.
d
(
LOGTAG
,
"onSwipeRight"
);
LOKitShell
.
sendSwipeRightEvent
();
}
@Override
public
void
onSwipeLeft
()
{
Log
.
d
(
LOGTAG
,
"onSwipeLeft"
);
LOKitShell
.
sendSwipeLeftEvent
();
}
});
mLayerClient
.
notifyReady
();
mLayerClient
.
notifyReady
();
}
}
...
...
android/experimental/LOAndroid3/src/java/org/
libreoffice
/OnSlideSwipeListener.java
→
android/experimental/LOAndroid3/src/java/org/
mozilla/gecko
/OnSlideSwipeListener.java
Dosyayı görüntüle @
7f5e0f85
package
org
.
libreoffice
;
package
org
.
mozilla
.
gecko
;
import
android.content.Context
;
import
android.content.Context
;
import
android.view.GestureDetector
;
import
android.view.GestureDetector
;
...
@@ -6,8 +6,13 @@ import android.view.GestureDetector.SimpleOnGestureListener;
...
@@ -6,8 +6,13 @@ import android.view.GestureDetector.SimpleOnGestureListener;
import
android.view.MotionEvent
;
import
android.view.MotionEvent
;
import
android.view.View
;
import
android.view.View
;
import
android.view.View.OnTouchListener
;
import
android.view.View.OnTouchListener
;
import
android.util.Log
;
import
org.libreoffice.LOKitShell
;
public
class
OnSlideSwipeListener
implements
OnTouchListener
{
public
class
OnSlideSwipeListener
implements
OnTouchListener
{
private
static
String
LOGTAG
=
OnSlideSwipeListener
.
class
.
getName
();
private
final
GestureDetector
mGestureDetector
;
private
final
GestureDetector
mGestureDetector
;
...
@@ -48,9 +53,13 @@ public class OnSlideSwipeListener implements OnTouchListener {
...
@@ -48,9 +53,13 @@ public class OnSlideSwipeListener implements OnTouchListener {
}
}
public
void
onSwipeRight
()
{
public
void
onSwipeRight
()
{
Log
.
d
(
LOGTAG
,
"onSwipeRight"
);
LOKitShell
.
sendSwipeRightEvent
();
}
}
public
void
onSwipeLeft
()
{
public
void
onSwipeLeft
()
{
Log
.
d
(
LOGTAG
,
"onSwipeLeft"
);
LOKitShell
.
sendSwipeLeftEvent
();
}
}
@Override
@Override
...
...
android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/LayerView.java
Dosyayı görüntüle @
7f5e0f85
...
@@ -28,6 +28,7 @@ import android.widget.FrameLayout;
...
@@ -28,6 +28,7 @@ import android.widget.FrameLayout;
import
org.libreoffice.LibreOfficeMainActivity
;
import
org.libreoffice.LibreOfficeMainActivity
;
import
org.libreoffice.R
;
import
org.libreoffice.R
;
import
org.mozilla.gecko.OnInterceptTouchListener
;
import
org.mozilla.gecko.OnInterceptTouchListener
;
import
org.mozilla.gecko.OnSlideSwipeListener
;
/**
/**
* A view rendered by the layer compositor.
* A view rendered by the layer compositor.
...
@@ -110,347 +111,349 @@ public class LayerView extends FrameLayout {
...
@@ -110,347 +111,349 @@ public class LayerView extends FrameLayout {
setFocusableInTouchMode
(
true
);
setFocusableInTouchMode
(
true
);
createGLThread
();
createGLThread
();
setOnTouchListener
(
new
OnSlideSwipeListener
(
getContext
()));
}
}
public
void
show
()
{
public
void
show
()
{
// Fix this if TextureView support is turned back on above
// Fix this if TextureView support is turned back on above
mSurfaceView
.
setVisibility
(
View
.
VISIBLE
);
mSurfaceView
.
setVisibility
(
View
.
VISIBLE
);
}
}
public
void
hide
()
{
public
void
hide
()
{
// Fix this if TextureView support is turned back on above
// Fix this if TextureView support is turned back on above
mSurfaceView
.
setVisibility
(
View
.
INVISIBLE
);
mSurfaceView
.
setVisibility
(
View
.
INVISIBLE
);
}
}
public
void
destroy
()
{
public
void
destroy
()
{
if
(
mLayerClient
!=
null
)
{
if
(
mLayerClient
!=
null
)
{
mLayerClient
.
destroy
();
mLayerClient
.
destroy
();
}
}
if
(
mRenderer
!=
null
)
{
if
(
mRenderer
!=
null
)
{
mRenderer
.
destroy
();
mRenderer
.
destroy
();
}
}
}
}
public
void
setTouchIntercepter
(
final
OnInterceptTouchListener
touchIntercepter
)
{
public
void
setTouchIntercepter
(
final
OnInterceptTouchListener
touchIntercepter
)
{
// this gets run on the gecko thread, but for thread safety we want the assignment
// this gets run on the gecko thread, but for thread safety we want the assignment
// on the UI thread.
// on the UI thread.
post
(
new
Runnable
()
{
post
(
new
Runnable
()
{
public
void
run
()
{
public
void
run
()
{
mTouchIntercepter
=
touchIntercepter
;
mTouchIntercepter
=
touchIntercepter
;
}
}
});
});
}
}
public
void
setInputConnectionHandler
(
InputConnectionHandler
inputConnectionHandler
)
{
public
void
setInputConnectionHandler
(
InputConnectionHandler
inputConnectionHandler
)
{
mInputConnectionHandler
=
inputConnectionHandler
;
mInputConnectionHandler
=
inputConnectionHandler
;
}
}
@Override
@Override
public
boolean
onTouchEvent
(
MotionEvent
event
)
{
public
boolean
onTouchEvent
(
MotionEvent
event
)
{
if
(
event
.
getActionMasked
()
==
MotionEvent
.
ACTION_DOWN
)
{
if
(
event
.
getActionMasked
()
==
MotionEvent
.
ACTION_DOWN
)
{
requestFocus
();
requestFocus
();
}
}
if
(
mTouchIntercepter
!=
null
&&
mTouchIntercepter
.
onInterceptTouchEvent
(
this
,
event
))
{
if
(
mTouchIntercepter
!=
null
&&
mTouchIntercepter
.
onInterceptTouchEvent
(
this
,
event
))
{
return
true
;
return
true
;
}
}
if
(
mPanZoomController
!=
null
&&
mPanZoomController
.
onTouchEvent
(
event
))
{
if
(
mPanZoomController
!=
null
&&
mPanZoomController
.
onTouchEvent
(
event
))
{
return
true
;
return
true
;
}
}
if
(
mTouchIntercepter
!=
null
&&
mTouchIntercepter
.
onTouch
(
this
,
event
))
{
if
(
mTouchIntercepter
!=
null
&&
mTouchIntercepter
.
onTouch
(
this
,
event
))
{
return
true
;
return
true
;
}
}
return
false
;
return
false
;
}
}
@Override
@Override
public
boolean
onHoverEvent
(
MotionEvent
event
)
{
public
boolean
onHoverEvent
(
MotionEvent
event
)
{
if
(
mTouchIntercepter
!=
null
&&
mTouchIntercepter
.
onTouch
(
this
,
event
))
{
if
(
mTouchIntercepter
!=
null
&&
mTouchIntercepter
.
onTouch
(
this
,
event
))
{
return
true
;
return
true
;
}
}
return
false
;
return
false
;
}
}
@Override
@Override
public
boolean
onGenericMotionEvent
(
MotionEvent
event
)
{
public
boolean
onGenericMotionEvent
(
MotionEvent
event
)
{
if
(
mPanZoomController
!=
null
&&
mPanZoomController
.
onMotionEvent
(
event
))
{
if
(
mPanZoomController
!=
null
&&
mPanZoomController
.
onMotionEvent
(
event
))
{
return
true
;
return
true
;
}
}
return
false
;
return
false
;
}
}
public
GeckoLayerClient
getLayerClient
()
{
return
mLayerClient
;
}
public
GeckoLayerClient
getLayerClient
()
{
return
mLayerClient
;
}
public
PanZoomController
getPanZoomController
()
{
return
mPanZoomController
;
}
public
PanZoomController
getPanZoomController
()
{
return
mPanZoomController
;
}
public
void
setViewportSize
(
IntSize
size
)
{
public
void
setViewportSize
(
IntSize
size
)
{
mLayerClient
.
setViewportSize
(
new
FloatSize
(
size
));
mLayerClient
.
setViewportSize
(
new
FloatSize
(
size
));
}
}
public
ImmutableViewportMetrics
getViewportMetrics
()
{
public
ImmutableViewportMetrics
getViewportMetrics
()
{
return
mLayerClient
.
getViewportMetrics
();
return
mLayerClient
.
getViewportMetrics
();
}
}
@Override
@Override
public
InputConnection
onCreateInputConnection
(
EditorInfo
outAttrs
)
{
public
InputConnection
onCreateInputConnection
(
EditorInfo
outAttrs
)
{
if
(
mInputConnectionHandler
!=
null
)
if
(
mInputConnectionHandler
!=
null
)
return
mInputConnectionHandler
.
onCreateInputConnection
(
outAttrs
);
return
mInputConnectionHandler
.
onCreateInputConnection
(
outAttrs
);
return
null
;
return
null
;
}
}
@Override
@Override
public
boolean
onKeyPreIme
(
int
keyCode
,
KeyEvent
event
)
{
public
boolean
onKeyPreIme
(
int
keyCode
,
KeyEvent
event
)
{
if
(
mInputConnectionHandler
!=
null
)
if
(
mInputConnectionHandler
!=
null
)
return
mInputConnectionHandler
.
onKeyPreIme
(
keyCode
,
event
);
return
mInputConnectionHandler
.
onKeyPreIme
(
keyCode
,
event
);
return
false
;
return
false
;
}
}
@Override
@Override
public
boolean
onKeyDown
(
int
keyCode
,
KeyEvent
event
)
{
public
boolean
onKeyDown
(
int
keyCode
,
KeyEvent
event
)
{
if
(
mInputConnectionHandler
!=
null
)
if
(
mInputConnectionHandler
!=
null
)
return
mInputConnectionHandler
.
onKeyDown
(
keyCode
,
event
);
return
mInputConnectionHandler
.
onKeyDown
(
keyCode
,
event
);
return
false
;
return
false
;
}
}
@Override
@Override
public
boolean
onKeyLongPress
(
int
keyCode
,
KeyEvent
event
)
{
public
boolean
onKeyLongPress
(
int
keyCode
,
KeyEvent
event
)
{
if
(
mInputConnectionHandler
!=
null
)
if
(
mInputConnectionHandler
!=
null
)
return
mInputConnectionHandler
.
onKeyLongPress
(
keyCode
,
event
);
return
mInputConnectionHandler
.
onKeyLongPress
(
keyCode
,
event
);
return
false
;
return
false
;
}
}
@Override
@Override
public
boolean
onKeyMultiple
(
int
keyCode
,
int
repeatCount
,
KeyEvent
event
)
{
public
boolean
onKeyMultiple
(
int
keyCode
,
int
repeatCount
,
KeyEvent
event
)
{
if
(
mInputConnectionHandler
!=
null
)
if
(
mInputConnectionHandler
!=
null
)
return
mInputConnectionHandler
.
onKeyMultiple
(
keyCode
,
repeatCount
,
event
);
return
mInputConnectionHandler
.
onKeyMultiple
(
keyCode
,
repeatCount
,
event
);
return
false
;
return
false
;
}
}
@Override
@Override
public
boolean
onKeyUp
(
int
keyCode
,
KeyEvent
event
)
{
public
boolean
onKeyUp
(
int
keyCode
,
KeyEvent
event
)
{
if
(
mInputConnectionHandler
!=
null
)
if
(
mInputConnectionHandler
!=
null
)
return
mInputConnectionHandler
.
onKeyUp
(
keyCode
,
event
);
return
mInputConnectionHandler
.
onKeyUp
(
keyCode
,
event
);
return
false
;
return
false
;
}
}
public
boolean
isIMEEnabled
()
{
public
boolean
isIMEEnabled
()
{
/*if (mInputConnectionHandler != null) {
/*if (mInputConnectionHandler != null) {
return mInputConnectionHandler.isIMEEnabled();
return mInputConnectionHandler.isIMEEnabled();
}*/
}*/
return
false
;
return
false
;
}
}
public
void
requestRender
()
{
public
void
requestRender
()
{
if
(
mListener
!=
null
)
{
if
(
mListener
!=
null
)
{
mListener
.
renderRequested
();
mListener
.
renderRequested
();
}
}
}
}
public
void
addLayer
(
Layer
layer
)
{
public
void
addLayer
(
Layer
layer
)
{
mRenderer
.
addLayer
(
layer
);
mRenderer
.
addLayer
(
layer
);
}
}
public
void
removeLayer
(
Layer
layer
)
{
public
void
removeLayer
(
Layer
layer
)
{
mRenderer
.
removeLayer
(
layer
);
mRenderer
.
removeLayer
(
layer
);
}
}
public
int
getMaxTextureSize
()
{
public
int
getMaxTextureSize
()
{
return
mRenderer
.
getMaxTextureSize
();
return
mRenderer
.
getMaxTextureSize
();
}
}
public
void
setLayerRenderer
(
LayerRenderer
renderer
)
{
public
void
setLayerRenderer
(
LayerRenderer
renderer
)
{
mRenderer
=
renderer
;
mRenderer
=
renderer
;
}
}
public
LayerRenderer
getLayerRenderer
()
{
public
LayerRenderer
getLayerRenderer
()
{
return
mRenderer
;
return
mRenderer
;
}
}
/* paintState must be a PAINT_xxx constant. The state will only be changed
/* paintState must be a PAINT_xxx constant. The state will only be changed
* if paintState represents a state that occurs after the current state. */
* if paintState represents a state that occurs after the current state. */
public
void
setPaintState
(
int
paintState
)
{
public
void
setPaintState
(
int
paintState
)
{
if
(
paintState
>
mPaintState
)
{
if
(
paintState
>
mPaintState
)
{
Log
.
d
(
LOGTAG
,
"LayerView paint state set to "
+
paintState
);
Log
.
d
(
LOGTAG
,
"LayerView paint state set to "
+
paintState
);
mPaintState
=
paintState
;
mPaintState
=
paintState
;
}
}
}
}
public
int
getPaintState
()
{
public
int
getPaintState
()
{
return
mPaintState
;
return
mPaintState
;
}
}
public
LayerRenderer
getRenderer
()
{
public
LayerRenderer
getRenderer
()
{
return
mRenderer
;
return
mRenderer
;
}
}
public
void
setListener
(
Listener
listener
)
{
public
void
setListener
(
Listener
listener
)
{
mListener
=
listener
;
mListener
=
listener
;
}
}
Listener
getListener
()
{
Listener
getListener
()
{
return
mListener
;
return
mListener
;
}
}
public
GLController
getGLController
()
{
public
GLController
getGLController
()
{
return
mGLController
;
return
mGLController
;
}
}
public
Bitmap
getDrawable
(
String
name
)
{
public
Bitmap
getDrawable
(
String
name
)
{
Context
context
=
getContext
();
Context
context
=
getContext
();
Resources
resources
=
context
.
getResources
();
Resources
resources
=
context
.
getResources
();
String
packageName
=
resources
.
getResourcePackageName
(
R
.
id
.
dummy_id_for_package_name_resolution
);
String
packageName
=
resources
.
getResourcePackageName
(
R
.
id
.
dummy_id_for_package_name_resolution
);
int
resourceID
=
resources
.
getIdentifier
(
name
,
"drawable"
,
packageName
);
int
resourceID
=
resources
.
getIdentifier
(
name
,
"drawable"
,
packageName
);
BitmapFactory
.
Options
options
=
new
BitmapFactory
.
Options
();
BitmapFactory
.
Options
options
=
new
BitmapFactory
.
Options
();
options
.
inScaled
=
false
;
options
.
inScaled
=
false
;
return
BitmapFactory
.
decodeResource
(
context
.
getResources
(),
resourceID
,
options
);
return
BitmapFactory
.
decodeResource
(
context
.
getResources
(),
resourceID
,
options
);
}
}
Bitmap
getBackgroundPattern
()
{
Bitmap
getBackgroundPattern
()
{
return
getDrawable
(
"background"
);
return
getDrawable
(
"background"
);
}
}
Bitmap
getShadowPattern
()
{
Bitmap
getShadowPattern
()
{
return
getDrawable
(
"shadow"
);
return
getDrawable
(
"shadow"
);
}
}
private
void
onSizeChanged
(
int
width
,
int
height
)
{
private
void
onSizeChanged
(
int
width
,
int
height
)
{
mGLController
.
surfaceChanged
(
width
,
height
);
mGLController
.
surfaceChanged
(
width
,
height
);
mLayerClient
.
setViewportSize
(
new
FloatSize
(
width
,
height
));
mLayerClient
.
setViewportSize
(
new
FloatSize
(
width
,
height
));
if
(
mListener
!=
null
)
{
if
(
mListener
!=
null
)
{
mListener
.
surfaceChanged
(
width
,
height
);
mListener
.
surfaceChanged
(
width
,
height
);
}
}
}
}
private
void
onDestroyed
()
{
private
void
onDestroyed
()
{
mGLController
.
surfaceDestroyed
();
mGLController
.
surfaceDestroyed
();
if
(
mListener
!=
null
)
{
if
(
mListener
!=
null
)
{
mListener
.
compositionPauseRequested
();
mListener
.
compositionPauseRequested
();
}
}
}
}
public
Object
getNativeWindow
()
{
public
Object
getNativeWindow
()
{
if
(
mSurfaceView
!=
null
)
if
(
mSurfaceView
!=
null
)
return
mSurfaceView
.
getHolder
();
return
mSurfaceView
.
getHolder
();
return
mTextureView
.
getSurfaceTexture
();
return
mTextureView
.
getSurfaceTexture
();
}
}
/** This function is invoked by Gecko (compositor thread) via JNI; be careful when modifying signature. */
/** This function is invoked by Gecko (compositor thread) via JNI; be careful when modifying signature. */
public
static
GLController
registerCxxCompositor
()
{
public
static
GLController
registerCxxCompositor
()
{
try
{
try
{
LayerView
layerView
=
LibreOfficeMainActivity
.
mAppContext
.
getLayerClient
().
getView
();
LayerView
layerView
=
LibreOfficeMainActivity
.
mAppContext
.
getLayerClient
().
getView
();
layerView
.
mListener
.
compositorCreated
();
layerView
.
mListener
.
compositorCreated
();
return
layerView
.
getGLController
();
return
layerView
.
getGLController
();
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
Log
.
e
(
LOGTAG
,
"Error registering compositor!"
,
e
);
Log
.
e
(
LOGTAG
,
"Error registering compositor!"
,
e
);
return
null
;
return
null
;
}
}
}
}
public
interface
Listener
{
public
interface
Listener
{
void
compositorCreated
();
void
compositorCreated
();
void
renderRequested
();
void
renderRequested
();
void
compositionPauseRequested
();
void
compositionPauseRequested
();
void
compositionResumeRequested
(
int
width
,
int
height
);
void
compositionResumeRequested
(
int
width
,
int
height
);
void
surfaceChanged
(
int
width
,
int
height
);
void
surfaceChanged
(
int
width
,
int
height
);
}
}
private
class
SurfaceListener
implements
SurfaceHolder
.
Callback
{
private
class
SurfaceListener
implements
SurfaceHolder
.
Callback
{
public
void
surfaceChanged
(
SurfaceHolder
holder
,
int
format
,
int
width
,
public
void
surfaceChanged
(
SurfaceHolder
holder
,
int
format
,
int
width
,
int
height
)
{
int
height
)
{
onSizeChanged
(
width
,
height
);
onSizeChanged
(
width
,
height
);
}
}
public
void
surfaceCreated
(
SurfaceHolder
holder
)
{
public
void
surfaceCreated
(
SurfaceHolder
holder
)
{
if
(
mRenderControllerThread
!=
null
)
{
if
(
mRenderControllerThread
!=
null
)
{
mRenderControllerThread
.
surfaceCreated
();
mRenderControllerThread
.
surfaceCreated
();
}
}
}
}
public
void
surfaceDestroyed
(
SurfaceHolder
holder
)
{
public
void
surfaceDestroyed
(
SurfaceHolder
holder
)
{
onDestroyed
();
onDestroyed
();
}
}
}
}
@Override
@Override
protected
void
onLayout
(
boolean
changed
,
int
left
,
int
top
,
int
right
,
int
bottom
)
{
protected
void
onLayout
(
boolean
changed
,
int
left
,
int
top
,
int
right
,
int
bottom
)
{
super
.
onLayout
(
changed
,
left
,
top
,
right
,
bottom
);
super
.
onLayout
(
changed
,
left
,
top
,
right
,
bottom
);
if
(
changed
)
{
if
(
changed
)
{
setViewportSize
(
new
IntSize
(
right
-
left
,
bottom
-
top
));
setViewportSize
(
new
IntSize
(
right
-
left
,
bottom
-
top
));
}
}
}
}
private
class
SurfaceTextureListener
implements
TextureView
.
SurfaceTextureListener
{
private
class
SurfaceTextureListener
implements
TextureView
.
SurfaceTextureListener
{
public
void
onSurfaceTextureAvailable
(
SurfaceTexture
surface
,
int
width
,
int
height
)
{
public
void
onSurfaceTextureAvailable
(
SurfaceTexture
surface
,
int
width
,
int
height
)
{
// We don't do this for surfaceCreated above because it is always followed by a surfaceChanged,
// We don't do this for surfaceCreated above because it is always followed by a surfaceChanged,
// but that is not the case here.
// but that is not the case here.
if
(
mRenderControllerThread
!=
null
)
{
if
(
mRenderControllerThread
!=
null
)
{
mRenderControllerThread
.
surfaceCreated
();
mRenderControllerThread
.
surfaceCreated
();
}
onSizeChanged
(
width
,
height
);
}
}
onSizeChanged
(
width
,
height
);
}
public
boolean
onSurfaceTextureDestroyed
(
SurfaceTexture
surface
)
{
public
boolean
onSurfaceTextureDestroyed
(
SurfaceTexture
surface
)
{
onDestroyed
();
onDestroyed
();
return
true
;
// allow Android to call release() on the SurfaceTexture, we are done drawing to it
return
true
;
// allow Android to call release() on the SurfaceTexture, we are done drawing to it
}
}
public
void
onSurfaceTextureSizeChanged
(
SurfaceTexture
surface
,
int
width
,
int
height
)
{
public
void
onSurfaceTextureSizeChanged
(
SurfaceTexture
surface
,
int
width
,
int
height
)
{
onSizeChanged
(
width
,
height
);
onSizeChanged
(
width
,
height
);
}
}
public
void
onSurfaceTextureUpdated
(
SurfaceTexture
surface
)
{
public
void
onSurfaceTextureUpdated
(
SurfaceTexture
surface
)
{
}
}
}
}
private
RenderControllerThread
mRenderControllerThread
;
private
RenderControllerThread
mRenderControllerThread
;
public
synchronized
void
createGLThread
()
{
public
synchronized
void
createGLThread
()
{
if
(
mRenderControllerThread
!=
null
)
{
if
(
mRenderControllerThread
!=
null
)
{
throw
new
LayerViewException
(
"createGLThread() called with a GL thread already in place!"
);
throw
new
LayerViewException
(
"createGLThread() called with a GL thread already in place!"
);
}
}
Log
.
e
(
LOGTAG
,
"### Creating GL thread!"
);
Log
.
e
(
LOGTAG
,
"### Creating GL thread!"
);
mRenderControllerThread
=
new
RenderControllerThread
(
mGLController
);
mRenderControllerThread
=
new
RenderControllerThread
(
mGLController
);
mRenderControllerThread
.
start
();
mRenderControllerThread
.
start
();
setListener
(
mRenderControllerThread
);
setListener
(
mRenderControllerThread
);
notifyAll
();
notifyAll
();
}
}
public
synchronized
Thread
destroyGLThread
()
{
public
synchronized
Thread
destroyGLThread
()
{
// Wait for the GL thread to be started.
// Wait for the GL thread to be started.
Log
.
e
(
LOGTAG
,
"### Waiting for GL thread to be created..."
);
Log
.
e
(
LOGTAG
,
"### Waiting for GL thread to be created..."
);
while
(
mRenderControllerThread
==
null
)
{
while
(
mRenderControllerThread
==
null
)
{
try
{
try
{
wait
();
wait
();
}
catch
(
InterruptedException
e
)
{
}
catch
(
InterruptedException
e
)
{
throw
new
RuntimeException
(
e
);
throw
new
RuntimeException
(
e
);
}
}
}
}
Log
.
e
(
LOGTAG
,
"### Destroying GL thread!"
);
Log
.
e
(
LOGTAG
,
"### Destroying GL thread!"
);
Thread
thread
=
mRenderControllerThread
;
Thread
thread
=
mRenderControllerThread
;
mRenderControllerThread
.
shutdown
();
mRenderControllerThread
.
shutdown
();
setListener
(
null
);
setListener
(
null
);
mRenderControllerThread
=
null
;
mRenderControllerThread
=
null
;
return
thread
;
return
thread
;
}
}
public
static
class
LayerViewException
extends
RuntimeException
{
public
static
class
LayerViewException
extends
RuntimeException
{
public
static
final
long
serialVersionUID
=
1L
;
public
static
final
long
serialVersionUID
=
1L
;
LayerViewException
(
String
e
)
{
LayerViewException
(
String
e
)
{
super
(
e
);
super
(
e
);
}
}
}
}
public
void
setFullScreen
(
boolean
fullScreen
)
{
public
void
setFullScreen
(
boolean
fullScreen
)
{
mFullScreen
=
fullScreen
;
mFullScreen
=
fullScreen
;
}
}
public
boolean
isFullScreen
()
{
public
boolean
isFullScreen
()
{
return
mFullScreen
;
return
mFullScreen
;
}
}
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment