Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
third_party
skia
platform_tools
android
apps
jetski
src
main
java
org
skia
jetski
util
SurfaceRenderer.java
Go to the documentation of this file.
1
/*
2
* Copyright 2021 Google Inc.
3
*
4
* Use of this source code is governed by a BSD-style license that can be
5
* found in the LICENSE file.
6
*/
7
8
package
org.skia.jetski.util;
9
10
import
android
.util.Log;
11
import
android
.view.SurfaceHolder;
12
import
org.
skia
.jetski.Canvas;
13
import
org.skia.jetski.Surface;
14
15
/**
16
* Utility base class facilitating the implementation of Surface-bound animations.
17
*
18
* Provides a dedicated render thread and user content callbacks.
19
*/
20
public
abstract
class
SurfaceRenderer
implements
SurfaceHolder.Callback, Runnable {
21
private
android.view.Surface mAndroidSurface;
22
private
Thread mRenderThread;
23
private
boolean
mThreadRunning;
24
private
long
mTimeBase;
25
26
/**
27
* Initialization callback.
28
*
29
* This can be invoked multiple times if the underlying surface changes.
30
*/
31
protected
abstract
void
onSurfaceInitialized
(
Surface
surface
);
32
33
/**
34
* Callback for frame content.
35
*
36
* Invoked once per (vsync'ed) frame.
37
*/
38
protected
abstract
void
onRenderFrame
(
Canvas
canvas,
long
ms);
39
40
@Override
41
public
void
run
() {
42
Log.d(
"SurfaceRenderer"
,
"Render thread started."
);
43
44
// TODO: Vulkan support?
45
Surface
surface
=
Surface
.
CreateGL
(mAndroidSurface);
46
onSurfaceInitialized
(
surface
);
47
48
mTimeBase = java.lang.System.currentTimeMillis();
49
50
while
(mThreadRunning) {
51
long
timestamp = java.lang.System.currentTimeMillis() - mTimeBase;
52
onRenderFrame
(
surface
.getCanvas(), timestamp);
53
surface
.flushAndSubmit();
54
}
55
56
// Ensure that the backing surface is released on the same thread.
57
surface
.release();
58
59
Log.d(
"SurfaceRenderer"
,
"Render thread finished."
);
60
}
61
62
@Override
63
public
void
surfaceCreated
(SurfaceHolder holder) {
64
// Initialization handled in surfaceChanged().
65
}
66
67
@Override
68
public
void
surfaceChanged
(SurfaceHolder holder,
int
format
,
int
width
,
int
height
) {
69
mAndroidSurface = holder.getSurface();
70
71
stopRenderThread();
72
startRenderThread();
73
}
74
75
@Override
76
public
void
surfaceDestroyed
(SurfaceHolder holder) {
77
stopRenderThread();
78
}
79
80
private
void
startRenderThread() {
81
if
(!mThreadRunning) {
82
mThreadRunning =
true
;
83
mRenderThread =
new
Thread(
this
);
84
mRenderThread.start();
85
}
86
}
87
88
private
void
stopRenderThread() {
89
if
(mThreadRunning) {
90
mThreadRunning =
false
;
91
try
{
92
mRenderThread.join();
93
}
catch
(InterruptedException e) {}
94
}
95
}
96
97
public
void
setBaseTime
(
long
millis) {
98
mTimeBase = millis;
99
}
100
101
public
void
release
() {
102
stopRenderThread();
103
}
104
}
org.skia.jetski.Canvas
Definition
Canvas.java:12
org.skia.jetski.Surface
Definition
Surface.java:14
org.skia.jetski.Surface.CreateGL
static Surface CreateGL(android.view.Surface surface)
Definition
Surface.java:31
org.skia.jetski.util.SurfaceRenderer
Definition
SurfaceRenderer.java:20
org.skia.jetski.util.SurfaceRenderer.surfaceDestroyed
void surfaceDestroyed(SurfaceHolder holder)
Definition
SurfaceRenderer.java:76
org.skia.jetski.util.SurfaceRenderer.onSurfaceInitialized
abstract void onSurfaceInitialized(Surface surface)
org.skia.jetski.util.SurfaceRenderer.onRenderFrame
abstract void onRenderFrame(Canvas canvas, long ms)
org.skia.jetski.util.SurfaceRenderer.surfaceChanged
void surfaceChanged(SurfaceHolder holder, int format, int width, int height)
Definition
SurfaceRenderer.java:68
org.skia.jetski.util.SurfaceRenderer.setBaseTime
void setBaseTime(long millis)
Definition
SurfaceRenderer.java:97
org.skia.jetski.util.SurfaceRenderer.surfaceCreated
void surfaceCreated(SurfaceHolder holder)
Definition
SurfaceRenderer.java:63
org.skia.jetski.util.SurfaceRenderer.run
void run()
Definition
SurfaceRenderer.java:41
org.skia.jetski.util.SurfaceRenderer.release
void release()
Definition
SurfaceRenderer.java:101
surface
VkSurfaceKHR surface
Definition
main.cc:49
format
uint32_t uint32_t * format
Definition
fl_texture_registrar_test.cc:41
android::skia
Definition
BitmapRegionDecoder.cpp:15
android
Definition
BitmapRegionDecoder.cpp:14
height
int32_t height
Definition
serialization_callbacks.cc:1
width
int32_t width
Definition
serialization_callbacks.cc:0
Generated on Fri Apr 26 2024 06:16:31 for Flutter Engine by
1.9.8