Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
e3272aa7
D
dragonwell8_jdk
项目概览
openanolis
/
dragonwell8_jdk
通知
4
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dragonwell8_jdk
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
e3272aa7
编写于
6月 02, 2011
作者:
L
lana
浏览文件
操作
浏览文件
下载
差异文件
Merge
上级
e856ad19
950892a5
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
121 addition
and
24 deletion
+121
-24
src/share/classes/sun/font/FileFontStrike.java
src/share/classes/sun/font/FileFontStrike.java
+0
-1
src/share/classes/sun/font/FontScaler.java
src/share/classes/sun/font/FontScaler.java
+0
-1
src/share/classes/sun/font/FreetypeFontScaler.java
src/share/classes/sun/font/FreetypeFontScaler.java
+3
-3
src/share/classes/sun/font/NullFontScaler.java
src/share/classes/sun/font/NullFontScaler.java
+1
-1
src/share/native/sun/font/freetypeScaler.c
src/share/native/sun/font/freetypeScaler.c
+1
-1
src/solaris/classes/sun/awt/X11GraphicsEnvironment.java
src/solaris/classes/sun/awt/X11GraphicsEnvironment.java
+2
-2
src/solaris/native/sun/java2d/x11/XRBackendNative.c
src/solaris/native/sun/java2d/x11/XRBackendNative.c
+114
-15
未找到文件。
src/share/classes/sun/font/FileFontStrike.java
浏览文件 @
e3272aa7
...
...
@@ -180,7 +180,6 @@ public class FileFontStrike extends PhysicalStrike {
pScalerContext
=
NullFontScaler
.
getNullScalerContext
();
}
else
{
pScalerContext
=
fileFont
.
getScaler
().
createScalerContext
(
matrix
,
fileFont
instanceof
TrueTypeFont
,
desc
.
aaHint
,
desc
.
fmHint
,
boldness
,
italic
,
disableHinting
);
}
...
...
src/share/classes/sun/font/FontScaler.java
浏览文件 @
e3272aa7
...
...
@@ -242,7 +242,6 @@ public abstract class FontScaler implements DisposerRecord {
freed when corresponding strike is being released.
*/
abstract
long
createScalerContext
(
double
[]
matrix
,
boolean
fontType
,
int
aa
,
int
fm
,
float
boldness
,
float
italic
,
boolean
disableHinting
);
...
...
src/share/classes/sun/font/FreetypeFontScaler.java
浏览文件 @
e3272aa7
...
...
@@ -210,12 +210,12 @@ class FreetypeFontScaler extends FontScaler {
return
getUnitsPerEMNative
(
nativeScaler
);
}
long
createScalerContext
(
double
[]
matrix
,
boolean
fontType
,
long
createScalerContext
(
double
[]
matrix
,
int
aa
,
int
fm
,
float
boldness
,
float
italic
,
boolean
disableHinting
)
{
if
(
nativeScaler
!=
0L
)
{
return
createScalerContextNative
(
nativeScaler
,
matrix
,
fontType
,
aa
,
fm
,
boldness
,
italic
);
aa
,
fm
,
boldness
,
italic
);
}
return
NullFontScaler
.
getNullScalerContext
();
}
...
...
@@ -254,7 +254,7 @@ class FreetypeFontScaler extends FontScaler {
private
native
long
getUnitsPerEMNative
(
long
pScaler
);
native
long
createScalerContextNative
(
long
pScaler
,
double
[]
matrix
,
boolean
fontType
,
int
aa
,
int
fm
,
float
boldness
,
float
italic
);
int
aa
,
int
fm
,
float
boldness
,
float
italic
);
/* Freetype scaler context does not contain any pointers that
has to be invalidated if native scaler is bad */
...
...
src/share/classes/sun/font/NullFontScaler.java
浏览文件 @
e3272aa7
...
...
@@ -66,7 +66,7 @@ class NullFontScaler extends FontScaler {
long
getLayoutTableCache
()
{
return
0L
;}
long
createScalerContext
(
double
[]
matrix
,
boolean
fontType
,
int
aa
,
long
createScalerContext
(
double
[]
matrix
,
int
aa
,
int
fm
,
float
boldness
,
float
italic
,
boolean
disableHinting
)
{
return
getNullScalerContext
();
}
...
...
src/share/native/sun/font/freetypeScaler.c
浏览文件 @
e3272aa7
...
...
@@ -367,7 +367,7 @@ static double euclidianDistance(double a, double b) {
JNIEXPORT
jlong
JNICALL
Java_sun_font_FreetypeFontScaler_createScalerContextNative
(
JNIEnv
*
env
,
jobject
scaler
,
jlong
pScaler
,
jdoubleArray
matrix
,
j
boolean
ttFont
,
j
int
aa
,
jint
fm
,
jfloat
boldness
,
jfloat
italic
)
{
jint
aa
,
jint
fm
,
jfloat
boldness
,
jfloat
italic
)
{
double
dmat
[
4
],
ptsz
;
FTScalerContext
*
context
=
(
FTScalerContext
*
)
calloc
(
1
,
sizeof
(
FTScalerContext
));
...
...
src/solaris/classes/sun/awt/X11GraphicsEnvironment.java
浏览文件 @
e3272aa7
...
...
@@ -121,7 +121,7 @@ public class X11GraphicsEnvironment
// only attempt to initialize Xrender if it was requested
if
(
xRenderRequested
)
{
xRenderAvailable
=
initXRender
();
xRenderAvailable
=
initXRender
(
xRenderVerbose
);
if
(
xRenderVerbose
&&
!
xRenderAvailable
)
{
System
.
out
.
println
(
"Could not enable XRender pipeline"
);
...
...
@@ -159,7 +159,7 @@ public class X11GraphicsEnvironment
private
static
boolean
xRenderVerbose
;
private
static
boolean
xRenderAvailable
;
private
static
native
boolean
initXRender
();
private
static
native
boolean
initXRender
(
boolean
verbose
);
public
static
boolean
isXRenderAvailable
()
{
return
xRenderAvailable
;
}
...
...
src/solaris/native/sun/java2d/x11/XRBackendNative.c
浏览文件 @
e3272aa7
...
...
@@ -66,9 +66,10 @@ typedef struct _XRadialGradient {
}
XRadialGradient
;
#endif
#include <dlfcn.h>
#ifdef __solaris__
/* Solaris 10 will not have these symbols at runtime */
#include <dlfcn.h>
#include <link.h>
typedef
Picture
(
*
XRenderCreateLinearGradientFuncType
)
...
...
@@ -104,12 +105,20 @@ static
TRANSFORM.matrix[2][2] = 1<<16; \
}
/* The xrender pipleine requires libXrender.so version 0.9.3 or later. */
#define REQUIRED_XRENDER_VER1 0
#define REQUIRED_XRENDER_VER2 9
#define REQUIRED_XRENDER_VER3 3
static
jboolean
IsXRenderAvailable
()
{
#define PKGINFO_LINE_LEN_MAX 256
#define PKGINFO_LINE_CNT_MAX 50
static
jboolean
IsXRenderAvailable
(
jboolean
verbose
)
{
void
*
xrenderlib
;
int
major_opcode
,
first_event
,
first_error
;
jboolean
available
=
JNI_TRUE
;
if
(
!
XQueryExtension
(
awt_display
,
"RENDER"
,
&
major_opcode
,
&
first_event
,
&
first_error
))
{
...
...
@@ -120,23 +129,113 @@ static jboolean IsXRenderAvailable() {
xrenderlib
=
dlopen
(
"libXrender.so"
,
RTLD_GLOBAL
|
RTLD_LAZY
);
if
(
xrenderlib
!=
NULL
)
{
XRenderCreateLinearGradientFunc
=
(
XRenderCreateLinearGradientFuncType
)
dlsym
(
xrenderlib
,
"XRenderCreateLinearGradient"
);
XRenderCreateLinearGradientFunc
=
(
XRenderCreateLinearGradientFuncType
)
dlsym
(
xrenderlib
,
"XRenderCreateLinearGradient"
);
XRenderCreateRadialGradientFunc
=
(
XRenderCreateRadialGradientFuncType
)
dlsym
(
xrenderlib
,
"XRenderCreateRadialGradient"
);
XRenderCreateRadialGradientFunc
=
(
XRenderCreateRadialGradientFuncType
)
dlsym
(
xrenderlib
,
"XRenderCreateRadialGradient"
);
if
(
XRenderCreateLinearGradientFunc
==
NULL
||
XRenderCreateRadialGradientFunc
==
NULL
)
{
available
=
JNI_FALSE
;
}
dlclose
(
xrenderlib
);
}
else
{
available
=
JNI_FALSE
;
}
#else
Dl_info
info
;
jboolean
versionInfoIsFound
=
JNI_FALSE
;
memset
(
&
info
,
0
,
sizeof
(
Dl_info
));
if
(
dladdr
(
&
XRenderChangePicture
,
&
info
)
&&
info
.
dli_fname
!=
NULL
)
{
char
pkgInfoPath
[
FILENAME_MAX
];
char
*
pkgFileName
=
"/pkgconfig/xrender.pc"
;
size_t
pkgFileNameLen
=
strlen
(
pkgFileName
);
size_t
pos
,
len
=
strlen
(
info
.
dli_fname
);
pos
=
len
;
while
(
pos
>
0
&&
info
.
dli_fname
[
pos
]
!=
'/'
)
{
pos
-=
1
;
}
if
(
XRenderCreateLinearGradientFunc
==
NULL
||
XRenderCreateRadialGradientFunc
==
NULL
)
if
(
pos
>
0
&&
pos
<
(
FILENAME_MAX
-
pkgFileNameLen
-
1
))
{
struct
stat
stat_info
;
// compose absolute filename to package config
strncpy
(
pkgInfoPath
,
info
.
dli_fname
,
pos
);
strcpy
(
pkgInfoPath
+
pos
,
pkgFileName
);
pkgInfoPath
[
pos
+
pkgFileNameLen
]
=
'\0'
;
// check whether the config file exist and is a regular file
if
((
stat
(
pkgInfoPath
,
&
stat_info
)
==
0
)
&&
S_ISREG
(
stat_info
.
st_mode
))
{
dlclose
(
xrenderlib
);
return
JNI_FALSE
;
FILE
*
fp
=
fopen
(
pkgInfoPath
,
"r"
);
if
(
fp
!=
NULL
)
{
char
line
[
PKGINFO_LINE_LEN_MAX
];
int
lineCount
=
PKGINFO_LINE_CNT_MAX
;
char
*
versionPrefix
=
"Version: "
;
size_t
versionPrefixLen
=
strlen
(
versionPrefix
);
// look for version
while
(
fgets
(
line
,
sizeof
(
line
),
fp
)
!=
NULL
&&
--
lineCount
>
0
)
{
size_t
lineLen
=
strlen
(
line
);
if
(
lineLen
>
versionPrefixLen
&&
strncmp
(
versionPrefix
,
line
,
versionPrefixLen
)
==
0
)
{
int
v1
=
0
,
v2
=
0
,
v3
=
0
;
int
numNeeded
=
3
,
numProcessed
;
char
*
version
=
line
+
versionPrefixLen
;
numProcessed
=
sscanf
(
version
,
"%d.%d.%d"
,
&
v1
,
&
v2
,
&
v3
);
if
(
numProcessed
==
numNeeded
)
{
// we successfuly read the library version
versionInfoIsFound
=
JNI_TRUE
;
if
(
REQUIRED_XRENDER_VER1
==
v1
&&
((
REQUIRED_XRENDER_VER2
>
v2
)
||
((
REQUIRED_XRENDER_VER2
==
v2
)
&&
(
REQUIRED_XRENDER_VER3
>
v3
))))
{
available
=
JNI_FALSE
;
if
(
verbose
)
{
printf
(
"INFO: the version %d.%d.%d of libXrender.so is "
"not supported.
\n\t
See release notes for more details.
\n
"
,
v1
,
v2
,
v3
);
fflush
(
stdout
);
}
}
else
{
if
(
verbose
)
{
printf
(
"INFO: The version of libXrender.so "
"is detected as %d.%d%d
\n
"
,
v1
,
v2
,
v3
);
fflush
(
stdout
);
}
}
}
break
;
}
}
fclose
(
fp
);
}
}
}
}
if
(
verbose
&&
!
versionInfoIsFound
)
{
printf
(
"WARNING: The version of libXrender.so cannot be detected.
\n
,"
"The pipe line will be enabled, but note that versions less than 0.9.3
\n
"
"may cause hangs and crashes
\n
"
"
\t
See the release notes for more details.
\n
"
);
fflush
(
stdout
);
}
#endif
return
JNI_TRUE
;
return
available
;
}
/*
* Class: sun_awt_X11GraphicsEnvironment
...
...
@@ -145,7 +244,7 @@ static jboolean IsXRenderAvailable() {
*/
JNIEXPORT
jboolean
JNICALL
Java_sun_awt_X11GraphicsEnvironment_initXRender
(
JNIEnv
*
env
,
jclass
x11g
e
)
(
JNIEnv
*
env
,
jclass
x11ge
,
jboolean
verbos
e
)
{
#ifndef HEADLESS
static
jboolean
xrenderAvailable
=
JNI_FALSE
;
...
...
@@ -153,7 +252,7 @@ Java_sun_awt_X11GraphicsEnvironment_initXRender
if
(
firstTime
)
{
AWT_LOCK
();
xrenderAvailable
=
IsXRenderAvailable
();
xrenderAvailable
=
IsXRenderAvailable
(
verbose
);
AWT_UNLOCK
();
firstTime
=
JNI_FALSE
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录