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
842d8fb5
Kaydet (Commit)
842d8fb5
authored
Tem 07, 2014
tarafından
Tomaž Vajngerl
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
LOAndroid3: Add and use DirectBufferAllocator
Change-Id: I20a1de3a18deab6b978192d1d8a54278addbb083
üst
e7b401d9
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
68 additions
and
95 deletions
+68
-95
DirectBufferAllocator.java
...roid3/src/java/org/libreoffice/DirectBufferAllocator.java
+33
-0
LOKitShell.java
...ental/LOAndroid3/src/java/org/libreoffice/LOKitShell.java
+3
-55
BufferedCairoImage.java
...d3/src/java/org/mozilla/gecko/gfx/BufferedCairoImage.java
+5
-4
CheckerboardImage.java
...id3/src/java/org/mozilla/gecko/gfx/CheckerboardImage.java
+5
-3
GeckoLayerClient.java
...oid3/src/java/org/mozilla/gecko/gfx/GeckoLayerClient.java
+1
-0
LayerRenderer.java
...ndroid3/src/java/org/mozilla/gecko/gfx/LayerRenderer.java
+8
-17
ScrollbarLayer.java
...droid3/src/java/org/mozilla/gecko/gfx/ScrollbarLayer.java
+5
-4
TextLayer.java
.../LOAndroid3/src/java/org/mozilla/gecko/gfx/TextLayer.java
+8
-12
No files found.
android/experimental/LOAndroid3/src/java/org/libreoffice/DirectBufferAllocator.java
0 → 100644
Dosyayı görüntüle @
842d8fb5
package
org
.
libreoffice
;
import
java.nio.ByteBuffer
;
public
class
DirectBufferAllocator
{
public
static
ByteBuffer
allocate
(
int
size
)
{
if
(
size
<=
0
)
{
throw
new
IllegalArgumentException
(
"Invalid size "
+
size
);
}
ByteBuffer
directBuffer
=
ByteBuffer
.
allocateDirect
(
size
);
//ByteBuffer directBuffer = nativeAllocateDirectBuffer(size);
if
(
directBuffer
==
null
)
{
throw
new
OutOfMemoryError
(
"allocateDirectBuffer() returned null"
);
}
else
if
(!
directBuffer
.
isDirect
())
{
throw
new
AssertionError
(
"allocateDirectBuffer() did not return a direct buffer"
);
}
return
directBuffer
;
}
public
static
ByteBuffer
free
(
ByteBuffer
buffer
)
{
if
(
buffer
==
null
)
{
return
null
;
}
if
(!
buffer
.
isDirect
())
{
throw
new
IllegalArgumentException
(
"buffer must be direct"
);
}
//nativeFreeDirectBuffer(buffer);
return
buffer
;
}
}
android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitShell.java
Dosyayı görüntüle @
842d8fb5
...
@@ -3,15 +3,6 @@ package org.libreoffice;
...
@@ -3,15 +3,6 @@ package org.libreoffice;
import
android.util.DisplayMetrics
;
import
android.util.DisplayMetrics
;
import
android.util.Log
;
import
android.util.Log
;
import
android.view.MotionEvent
;
import
android.view.View
;
import
org.mozilla.gecko.gfx.GeckoSoftwareLayerClient
;
import
org.mozilla.gecko.gfx.IntSize
;
import
org.mozilla.gecko.gfx.LayerController
;
import
org.mozilla.gecko.gfx.LayerView
;
import
java.nio.ByteBuffer
;
public
class
LOKitShell
{
public
class
LOKitShell
{
private
static
final
String
LOGTAG
=
LOKitShell
.
class
.
getSimpleName
();
private
static
final
String
LOGTAG
=
LOKitShell
.
class
.
getSimpleName
();
...
@@ -21,39 +12,13 @@ public class LOKitShell {
...
@@ -21,39 +12,13 @@ public class LOKitShell {
return
(
int
)
metrics
.
density
*
160
;
return
(
int
)
metrics
.
density
*
160
;
}
}
public
static
ByteBuffer
allocateDirectBuffer
(
int
size
)
{
if
(
size
<=
0
)
{
throw
new
IllegalArgumentException
(
"Invalid size "
+
size
);
}
ByteBuffer
directBuffer
=
ByteBuffer
.
allocateDirect
(
size
);
//ByteBuffer directBuffer = nativeAllocateDirectBuffer(size);
if
(
directBuffer
==
null
)
{
throw
new
OutOfMemoryError
(
"allocateDirectBuffer() returned null"
);
}
else
if
(!
directBuffer
.
isDirect
())
{
throw
new
AssertionError
(
"allocateDirectBuffer() did not return a direct buffer"
);
}
return
directBuffer
;
}
public
static
void
freeDirectBuffer
(
ByteBuffer
buffer
)
{
if
(
buffer
==
null
)
{
return
;
}
if
(!
buffer
.
isDirect
())
{
throw
new
IllegalArgumentException
(
"buffer must be direct"
);
}
//nativeFreeDirectBuffer(buffer);
return
;
}
public
static
void
bindWidgetTexture
()
{
public
static
void
bindWidgetTexture
()
{
}
}
public
static
void
sendEvent
(
LOEvent
event
)
{
public
static
void
sendEvent
(
LOEvent
event
)
{
Log
.
i
(
LOGTAG
,
"Event: "
+
event
.
getTypeString
());
if
(
LibreOfficeMainActivity
.
mAppContext
!=
null
&&
LibreOfficeMainActivity
.
mAppContext
.
getLOKitThread
()
!=
null
)
{
LibreOfficeMainActivity
.
mAppContext
.
getLOKitThread
().
queueEvent
(
event
);
}
}
}
public
static
void
runGecko
(
String
apkPath
,
String
args
,
String
url
,
boolean
restoreSession
)
{
public
static
void
runGecko
(
String
apkPath
,
String
args
,
String
url
,
boolean
restoreSession
)
{
...
@@ -85,27 +50,10 @@ public class LOKitShell {
...
@@ -85,27 +50,10 @@ public class LOKitShell {
geckoLoaded
();
geckoLoaded
();
}
}
});
});
//LOKitShell.nativeRun(combinedArgs);
}
}
// Called on the UI thread after Gecko loads.
// Called on the UI thread after Gecko loads.
private
static
void
geckoLoaded
()
{
private
static
void
geckoLoaded
()
{
/*final LayerController layerController = LibreOfficeMainActivity.mAppContext.getLayerController();
LayerView v = layerController.getView();
mInputConnection = GeckoInputConnection.create(v);
v.setInputConnectionHandler(mInputConnection);
layerController.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View view, MotionEvent event) {
if (event == null)
return true;
GeckoAppShell.sendEventToGecko(new GeckoEvent(event));
return true;
}
});
layerController.notifyLayerClientOfGeometryChange();*/
}
}
public
static
void
viewSizeChanged
()
{
public
static
void
viewSizeChanged
()
{
...
...
android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/BufferedCairoImage.java
Dosyayı görüntüle @
842d8fb5
...
@@ -39,7 +39,7 @@ package org.mozilla.gecko.gfx;
...
@@ -39,7 +39,7 @@ package org.mozilla.gecko.gfx;
import
android.graphics.Bitmap
;
import
android.graphics.Bitmap
;
import
org.libreoffice.
LOKitShell
;
import
org.libreoffice.
DirectBufferAllocator
;
import
java.nio.ByteBuffer
;
import
java.nio.ByteBuffer
;
...
@@ -71,15 +71,16 @@ public class BufferedCairoImage extends CairoImage {
...
@@ -71,15 +71,16 @@ public class BufferedCairoImage extends CairoImage {
mSize
=
new
IntSize
(
bitmap
.
getWidth
(),
bitmap
.
getHeight
());
mSize
=
new
IntSize
(
bitmap
.
getWidth
(),
bitmap
.
getHeight
());
mNeedToFreeBuffer
=
true
;
mNeedToFreeBuffer
=
true
;
// XXX Why is this * 4? Shouldn't it depend on mFormat?
// XXX Why is this * 4? Shouldn't it depend on mFormat?
mBuffer
=
LOKitShell
.
allocateDirectBuffer
(
mSize
.
getArea
()
*
4
);
mBuffer
=
DirectBufferAllocator
.
allocate
(
mSize
.
getArea
()
*
4
);
bitmap
.
copyPixelsToBuffer
(
mBuffer
.
asIntBuffer
());
bitmap
.
copyPixelsToBuffer
(
mBuffer
.
asIntBuffer
());
}
}
protected
void
finalize
()
throws
Throwable
{
protected
void
finalize
()
throws
Throwable
{
try
{
try
{
if
(
mNeedToFreeBuffer
&&
mBuffer
!=
null
)
if
(
mNeedToFreeBuffer
&&
mBuffer
!=
null
)
{
LOKitShell
.
freeDirectBuffer
(
mBuffer
);
DirectBufferAllocator
.
free
(
mBuffer
);
}
mNeedToFreeBuffer
=
false
;
mNeedToFreeBuffer
=
false
;
mBuffer
=
null
;
mBuffer
=
null
;
}
finally
{
}
finally
{
...
...
android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/CheckerboardImage.java
Dosyayı görüntüle @
842d8fb5
...
@@ -37,8 +37,10 @@
...
@@ -37,8 +37,10 @@
package
org
.
mozilla
.
gecko
.
gfx
;
package
org
.
mozilla
.
gecko
.
gfx
;
import
org.libreoffice.LOKitShell
;
import
android.graphics.Color
;
import
android.graphics.Color
;
import
org.libreoffice.DirectBufferAllocator
;
import
java.nio.ByteBuffer
;
import
java.nio.ByteBuffer
;
import
java.nio.ShortBuffer
;
import
java.nio.ShortBuffer
;
import
java.util.Arrays
;
import
java.util.Arrays
;
...
@@ -61,7 +63,7 @@ public class CheckerboardImage extends CairoImage {
...
@@ -61,7 +63,7 @@ public class CheckerboardImage extends CairoImage {
/** Creates a new checkerboard image. */
/** Creates a new checkerboard image. */
public
CheckerboardImage
()
{
public
CheckerboardImage
()
{
int
bpp
=
CairoUtils
.
bitsPerPixelForCairoFormat
(
FORMAT
);
int
bpp
=
CairoUtils
.
bitsPerPixelForCairoFormat
(
FORMAT
);
mBuffer
=
LOKitShell
.
allocateDirectBuffer
(
SIZE
*
SIZE
*
bpp
/
8
);
mBuffer
=
DirectBufferAllocator
.
allocate
(
SIZE
*
SIZE
*
bpp
/
8
);
update
(
true
,
Color
.
WHITE
);
update
(
true
,
Color
.
WHITE
);
}
}
...
@@ -145,7 +147,7 @@ public class CheckerboardImage extends CairoImage {
...
@@ -145,7 +147,7 @@ public class CheckerboardImage extends CairoImage {
protected
void
finalize
()
throws
Throwable
{
protected
void
finalize
()
throws
Throwable
{
try
{
try
{
if
(
mBuffer
!=
null
)
{
if
(
mBuffer
!=
null
)
{
LOKitShell
.
freeDirectBuffer
(
mBuffer
);
DirectBufferAllocator
.
free
(
mBuffer
);
}
}
}
finally
{
}
finally
{
super
.
finalize
();
super
.
finalize
();
...
...
android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/GeckoLayerClient.java
Dosyayı görüntüle @
842d8fb5
...
@@ -64,6 +64,7 @@ public abstract class GeckoLayerClient implements GeckoEventListener {
...
@@ -64,6 +64,7 @@ public abstract class GeckoLayerClient implements GeckoEventListener {
protected
ViewportMetrics
mGeckoViewport
;
protected
ViewportMetrics
mGeckoViewport
;
/* The viewport that Gecko will display when drawing is finished */
/* The viewport that Gecko will display when drawing is finished */
protected
ViewportMetrics
mNewGeckoViewport
;
protected
ViewportMetrics
mNewGeckoViewport
;
protected
LayerController
mLayerController
;
private
long
mLastViewportChangeTime
;
private
long
mLastViewportChangeTime
;
private
boolean
mPendingViewportAdjust
;
private
boolean
mPendingViewportAdjust
;
private
boolean
mViewportSizeChanged
;
private
boolean
mViewportSizeChanged
;
...
...
android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/LayerRenderer.java
Dosyayı görüntüle @
842d8fb5
...
@@ -39,21 +39,9 @@
...
@@ -39,21 +39,9 @@
package
org
.
mozilla
.
gecko
.
gfx
;
package
org
.
mozilla
.
gecko
.
gfx
;
import
org.libreoffice.LOKitShell
;
import
org.mozilla.gecko.gfx.BufferedCairoImage
;
import
org.mozilla.gecko.gfx.IntSize
;
import
org.mozilla.gecko.gfx.Layer.RenderContext
;
import
org.mozilla.gecko.gfx.LayerController
;
import
org.mozilla.gecko.gfx.NinePatchTileLayer
;
import
org.mozilla.gecko.gfx.SingleTileLayer
;
import
org.mozilla.gecko.gfx.TextureReaper
;
import
org.mozilla.gecko.gfx.TextureGenerator
;
import
org.mozilla.gecko.gfx.TextLayer
;
import
org.mozilla.gecko.gfx.TileLayer
;
import
android.content.Context
;
import
android.content.Context
;
import
android.content.SharedPreferences
;
import
android.content.SharedPreferences
;
import
android.graphics.Point
;
import
android.graphics.Point
;
import
android.graphics.PointF
;
import
android.graphics.Rect
;
import
android.graphics.Rect
;
import
android.graphics.RectF
;
import
android.graphics.RectF
;
import
android.graphics.Region
;
import
android.graphics.Region
;
...
@@ -61,17 +49,20 @@ import android.graphics.RegionIterator;
...
@@ -61,17 +49,20 @@ import android.graphics.RegionIterator;
import
android.opengl.GLES20
;
import
android.opengl.GLES20
;
import
android.opengl.GLSurfaceView
;
import
android.opengl.GLSurfaceView
;
import
android.os.SystemClock
;
import
android.os.SystemClock
;
import
android.util.DisplayMetrics
;
import
android.util.Log
;
import
android.util.Log
;
import
android.view.WindowManager
;
import
javax.microedition.khronos.egl.EGLConfig
;
import
org.libreoffice.DirectBufferAllocator
;
import
javax.microedition.khronos.opengles.GL10
;
import
org.mozilla.gecko.gfx.Layer.RenderContext
;
import
java.nio.ByteBuffer
;
import
java.nio.ByteBuffer
;
import
java.nio.ByteOrder
;
import
java.nio.ByteOrder
;
import
java.nio.FloatBuffer
;
import
java.nio.FloatBuffer
;
import
java.nio.IntBuffer
;
import
java.nio.IntBuffer
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
javax.microedition.khronos.egl.EGLConfig
;
import
javax.microedition.khronos.opengles.GL10
;
/**
/**
* The layer renderer implements the rendering logic for a layer view.
* The layer renderer implements the rendering logic for a layer view.
*/
*/
...
@@ -186,7 +177,7 @@ public class LayerRenderer implements GLSurfaceView.Renderer {
...
@@ -186,7 +177,7 @@ public class LayerRenderer implements GLSurfaceView.Renderer {
// Initialize the FloatBuffer that will be used to store all vertices and texture
// Initialize the FloatBuffer that will be used to store all vertices and texture
// coordinates in draw() commands.
// coordinates in draw() commands.
ByteBuffer
byteBuffer
=
LOKitShell
.
allocateDirectBuffer
(
COORD_BUFFER_SIZE
*
4
);
ByteBuffer
byteBuffer
=
DirectBufferAllocator
.
allocate
(
COORD_BUFFER_SIZE
*
4
);
byteBuffer
.
order
(
ByteOrder
.
nativeOrder
());
byteBuffer
.
order
(
ByteOrder
.
nativeOrder
());
mCoordBuffer
=
byteBuffer
.
asFloatBuffer
();
mCoordBuffer
=
byteBuffer
.
asFloatBuffer
();
}
}
...
...
android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/ScrollbarLayer.java
Dosyayı görüntüle @
842d8fb5
...
@@ -47,7 +47,7 @@ import android.graphics.Rect;
...
@@ -47,7 +47,7 @@ import android.graphics.Rect;
import
android.graphics.RectF
;
import
android.graphics.RectF
;
import
android.opengl.GLES20
;
import
android.opengl.GLES20
;
import
org.libreoffice.
LOKitShell
;
import
org.libreoffice.
DirectBufferAllocator
;
import
org.mozilla.gecko.util.FloatUtils
;
import
org.mozilla.gecko.util.FloatUtils
;
import
java.nio.ByteBuffer
;
import
java.nio.ByteBuffer
;
...
@@ -128,7 +128,7 @@ public class ScrollbarLayer extends TileLayer {
...
@@ -128,7 +128,7 @@ public class ScrollbarLayer extends TileLayer {
// just create an empty image for now, it will get drawn
// just create an empty image for now, it will get drawn
// on demand anyway
// on demand anyway
int
imageSize
=
IntSize
.
nextPowerOfTwo
(
BAR_SIZE
);
int
imageSize
=
IntSize
.
nextPowerOfTwo
(
BAR_SIZE
);
ByteBuffer
buffer
=
LOKitShell
.
allocateDirectBuffer
(
imageSize
*
imageSize
*
4
);
ByteBuffer
buffer
=
DirectBufferAllocator
.
allocate
(
imageSize
*
imageSize
*
4
);
CairoImage
image
=
new
BufferedCairoImage
(
buffer
,
imageSize
,
imageSize
,
CairoImage
image
=
new
BufferedCairoImage
(
buffer
,
imageSize
,
imageSize
,
CairoImage
.
FORMAT_ARGB32
);
CairoImage
.
FORMAT_ARGB32
);
return
new
ScrollbarLayer
(
image
,
vertical
,
buffer
);
return
new
ScrollbarLayer
(
image
,
vertical
,
buffer
);
...
@@ -136,8 +136,9 @@ public class ScrollbarLayer extends TileLayer {
...
@@ -136,8 +136,9 @@ public class ScrollbarLayer extends TileLayer {
protected
void
finalize
()
throws
Throwable
{
protected
void
finalize
()
throws
Throwable
{
try
{
try
{
if
(!
mFinalized
&&
mBuffer
!=
null
)
if
(!
mFinalized
&&
mBuffer
!=
null
)
{
LOKitShell
.
freeDirectBuffer
(
mBuffer
);
DirectBufferAllocator
.
free
(
mBuffer
);
}
mFinalized
=
true
;
mFinalized
=
true
;
}
finally
{
}
finally
{
super
.
finalize
();
super
.
finalize
();
...
...
android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/TextLayer.java
Dosyayı görüntüle @
842d8fb5
...
@@ -38,19 +38,15 @@
...
@@ -38,19 +38,15 @@
package
org
.
mozilla
.
gecko
.
gfx
;
package
org
.
mozilla
.
gecko
.
gfx
;
//import org.mozilla.gecko.GeckoAppShell;
//import org.mozilla.gecko.GeckoAppShell;
import
org.libreoffice.LOKitShell
;
import
org.mozilla.gecko.gfx.BufferedCairoImage
;
import
org.mozilla.gecko.gfx.CairoImage
;
import
org.mozilla.gecko.gfx.IntSize
;
import
org.mozilla.gecko.gfx.SingleTileLayer
;
import
android.graphics.Bitmap
;
import
android.graphics.Bitmap
;
import
android.graphics.Canvas
;
import
android.graphics.Canvas
;
import
android.graphics.Color
;
import
android.graphics.Color
;
import
android.graphics.Paint
;
import
android.graphics.Paint
;
import
android.graphics.Typeface
;
import
android.graphics.Typeface
;
import
android.util.Log
;
import
org.libreoffice.DirectBufferAllocator
;
import
java.nio.ByteBuffer
;
import
java.nio.ByteBuffer
;
import
java.nio.IntBuffer
;
/**
/**
* Draws text on a layer. This is used for the frame rate meter.
* Draws text on a layer. This is used for the frame rate meter.
...
@@ -73,8 +69,9 @@ public class TextLayer extends SingleTileLayer {
...
@@ -73,8 +69,9 @@ public class TextLayer extends SingleTileLayer {
protected
void
finalize
()
throws
Throwable
{
protected
void
finalize
()
throws
Throwable
{
try
{
try
{
if
(!
mFinalized
&&
mBuffer
!=
null
)
if
(!
mFinalized
&&
mBuffer
!=
null
)
{
/*GeckoAppShell*/
LOKitShell
.
freeDirectBuffer
(
mBuffer
);
DirectBufferAllocator
.
free
(
mBuffer
);
}
mFinalized
=
true
;
mFinalized
=
true
;
}
finally
{
}
finally
{
super
.
finalize
();
super
.
finalize
();
...
@@ -82,9 +79,8 @@ public class TextLayer extends SingleTileLayer {
...
@@ -82,9 +79,8 @@ public class TextLayer extends SingleTileLayer {
}
}
public
static
TextLayer
create
(
IntSize
size
,
String
text
)
{
public
static
TextLayer
create
(
IntSize
size
,
String
text
)
{
ByteBuffer
buffer
=
/*GeckoAppShell*/
LOKitShell
.
allocateDirectBuffer
(
size
.
width
*
size
.
height
*
4
);
ByteBuffer
buffer
=
DirectBufferAllocator
.
allocate
(
size
.
width
*
size
.
height
*
4
);
BufferedCairoImage
image
=
new
BufferedCairoImage
(
buffer
,
size
.
width
,
size
.
height
,
BufferedCairoImage
image
=
new
BufferedCairoImage
(
buffer
,
size
.
width
,
size
.
height
,
CairoImage
.
FORMAT_ARGB32
);
CairoImage
.
FORMAT_ARGB32
);
return
new
TextLayer
(
buffer
,
image
,
size
,
text
);
return
new
TextLayer
(
buffer
,
image
,
size
,
text
);
}
}
...
...
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