Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
f02e7533
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看板
提交
f02e7533
编写于
3月 13, 2014
作者:
P
pchelko
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
8030787: [Parfait] JNI-related warnings from b119 for jdk/src/share/native/sun/awt/image
Reviewed-by: serb, prr
上级
6c08e19a
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
279 addition
and
306 deletion
+279
-306
src/share/native/sun/awt/image/BufImgSurfaceData.c
src/share/native/sun/awt/image/BufImgSurfaceData.c
+16
-14
src/share/native/sun/awt/image/DataBufferNative.c
src/share/native/sun/awt/image/DataBufferNative.c
+3
-1
src/share/native/sun/awt/image/awt_ImageRep.c
src/share/native/sun/awt/image/awt_ImageRep.c
+8
-4
src/share/native/sun/awt/image/awt_parseImage.c
src/share/native/sun/awt/image/awt_parseImage.c
+51
-26
src/share/native/sun/awt/image/gif/gifdecoder.c
src/share/native/sun/awt/image/gif/gifdecoder.c
+10
-8
src/share/native/sun/awt/image/imageInitIDs.c
src/share/native/sun/awt/image/imageInitIDs.c
+89
-161
src/share/native/sun/awt/image/jpeg/imageioJPEG.c
src/share/native/sun/awt/image/jpeg/imageioJPEG.c
+93
-83
src/share/native/sun/awt/image/jpeg/jpegdecoder.c
src/share/native/sun/awt/image/jpeg/jpegdecoder.c
+9
-9
未找到文件。
src/share/native/sun/awt/image/BufImgSurfaceData.c
浏览文件 @
f02e7533
/*
/*
* Copyright (c) 1999, 201
2
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1999, 201
4
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
*
* This code is free software; you can redistribute it and/or modify it
* This code is free software; you can redistribute it and/or modify it
...
@@ -69,17 +69,14 @@ Java_sun_awt_image_BufImgSurfaceData_initIDs
...
@@ -69,17 +69,14 @@ Java_sun_awt_image_BufImgSurfaceData_initIDs
}
}
clsICMCD
=
(
*
env
)
->
NewWeakGlobalRef
(
env
,
cd
);
clsICMCD
=
(
*
env
)
->
NewWeakGlobalRef
(
env
,
cd
);
initICMCDmID
=
(
*
env
)
->
GetMethodID
(
env
,
cd
,
"<init>"
,
"(J)V"
);
JNU_CHECK_EXCEPTION
(
env
);
pDataID
=
(
*
env
)
->
GetFieldID
(
env
,
cd
,
"pData"
,
"J"
);
CHECK_NULL
(
initICMCDmID
=
(
*
env
)
->
GetMethodID
(
env
,
cd
,
"<init>"
,
"(J)V"
));
CHECK_NULL
(
pDataID
=
(
*
env
)
->
GetFieldID
(
env
,
cd
,
"pData"
,
"J"
));
rgbID
=
(
*
env
)
->
GetFieldID
(
env
,
icm
,
"rgb"
,
"[I"
);
CHECK_NULL
(
rgbID
=
(
*
env
)
->
GetFieldID
(
env
,
icm
,
"rgb"
,
"[I"
));
allGrayID
=
(
*
env
)
->
GetFieldID
(
env
,
icm
,
"allgrayopaque"
,
"Z"
);
CHECK_NULL
(
allGrayID
=
(
*
env
)
->
GetFieldID
(
env
,
icm
,
"allgrayopaque"
,
"Z"
));
mapSizeID
=
(
*
env
)
->
GetFieldID
(
env
,
icm
,
"map_size"
,
"I"
);
CHECK_NULL
(
mapSizeID
=
(
*
env
)
->
GetFieldID
(
env
,
icm
,
"map_size"
,
"I"
));
colorDataID
=
(
*
env
)
->
GetFieldID
(
env
,
icm
,
"colorData"
,
CHECK_NULL
(
colorDataID
=
(
*
env
)
->
GetFieldID
(
env
,
icm
,
"colorData"
,
"Lsun/awt/image/BufImgSurfaceData$ICMColorData;"
);
"Lsun/awt/image/BufImgSurfaceData$ICMColorData;"
));
if
(
allGrayID
==
0
||
rgbID
==
0
||
mapSizeID
==
0
||
pDataID
==
0
||
colorDataID
==
0
||
initICMCDmID
==
0
)
{
JNU_ThrowInternalError
(
env
,
"Could not get field IDs"
);
}
}
}
/*
/*
...
@@ -120,6 +117,7 @@ Java_sun_awt_image_BufImgSurfaceData_initRaster(JNIEnv *env, jobject bisd,
...
@@ -120,6 +117,7 @@ Java_sun_awt_image_BufImgSurfaceData_initRaster(JNIEnv *env, jobject bisd,
bisdo
->
sdOps
.
Unlock
=
NULL
;
bisdo
->
sdOps
.
Unlock
=
NULL
;
bisdo
->
sdOps
.
Dispose
=
BufImg_Dispose
;
bisdo
->
sdOps
.
Dispose
=
BufImg_Dispose
;
bisdo
->
array
=
(
*
env
)
->
NewWeakGlobalRef
(
env
,
array
);
bisdo
->
array
=
(
*
env
)
->
NewWeakGlobalRef
(
env
,
array
);
JNU_CHECK_EXCEPTION
(
env
);
bisdo
->
offset
=
offset
;
bisdo
->
offset
=
offset
;
bisdo
->
bitoffset
=
bitoffset
;
bisdo
->
bitoffset
=
bitoffset
;
bisdo
->
scanStr
=
scanStr
;
bisdo
->
scanStr
=
scanStr
;
...
@@ -131,6 +129,7 @@ Java_sun_awt_image_BufImgSurfaceData_initRaster(JNIEnv *env, jobject bisd,
...
@@ -131,6 +129,7 @@ Java_sun_awt_image_BufImgSurfaceData_initRaster(JNIEnv *env, jobject bisd,
}
else
{
}
else
{
jobject
lutarray
=
(
*
env
)
->
GetObjectField
(
env
,
icm
,
rgbID
);
jobject
lutarray
=
(
*
env
)
->
GetObjectField
(
env
,
icm
,
rgbID
);
bisdo
->
lutarray
=
(
*
env
)
->
NewWeakGlobalRef
(
env
,
lutarray
);
bisdo
->
lutarray
=
(
*
env
)
->
NewWeakGlobalRef
(
env
,
lutarray
);
JNU_CHECK_EXCEPTION
(
env
);
bisdo
->
lutsize
=
(
*
env
)
->
GetIntField
(
env
,
icm
,
mapSizeID
);
bisdo
->
lutsize
=
(
*
env
)
->
GetIntField
(
env
,
icm
,
mapSizeID
);
bisdo
->
icm
=
(
*
env
)
->
NewWeakGlobalRef
(
env
,
icm
);
bisdo
->
icm
=
(
*
env
)
->
NewWeakGlobalRef
(
env
,
icm
);
}
}
...
@@ -174,8 +173,8 @@ static jint BufImg_Lock(JNIEnv *env,
...
@@ -174,8 +173,8 @@ static jint BufImg_Lock(JNIEnv *env,
{
{
bipriv
->
cData
=
BufImg_SetupICM
(
env
,
bisdo
);
bipriv
->
cData
=
BufImg_SetupICM
(
env
,
bisdo
);
if
(
bipriv
->
cData
==
NULL
)
{
if
(
bipriv
->
cData
==
NULL
)
{
JNU_ThrowNullPointerException
(
env
,
"Could not initialize "
(
*
env
)
->
ExceptionClear
(
env
);
"
inverse tables"
);
JNU_ThrowNullPointerException
(
env
,
"Could not initialize
inverse tables"
);
return
SD_FAILURE
;
return
SD_FAILURE
;
}
}
}
else
{
}
else
{
...
@@ -201,6 +200,7 @@ static void BufImg_GetRasInfo(JNIEnv *env,
...
@@ -201,6 +200,7 @@ static void BufImg_GetRasInfo(JNIEnv *env,
if
((
bipriv
->
lockFlags
&
(
SD_LOCK_RD_WR
))
!=
0
)
{
if
((
bipriv
->
lockFlags
&
(
SD_LOCK_RD_WR
))
!=
0
)
{
bipriv
->
base
=
bipriv
->
base
=
(
*
env
)
->
GetPrimitiveArrayCritical
(
env
,
bisdo
->
array
,
NULL
);
(
*
env
)
->
GetPrimitiveArrayCritical
(
env
,
bisdo
->
array
,
NULL
);
CHECK_NULL
(
bipriv
->
base
);
}
}
if
((
bipriv
->
lockFlags
&
(
SD_LOCK_LUT
))
!=
0
)
{
if
((
bipriv
->
lockFlags
&
(
SD_LOCK_LUT
))
!=
0
)
{
bipriv
->
lutbase
=
bipriv
->
lutbase
=
...
@@ -291,6 +291,7 @@ static ColorData *BufImg_SetupICM(JNIEnv *env,
...
@@ -291,6 +291,7 @@ static ColorData *BufImg_SetupICM(JNIEnv *env,
=
(
*
env
)
->
GetBooleanField
(
env
,
bisdo
->
icm
,
allGrayID
);
=
(
*
env
)
->
GetBooleanField
(
env
,
bisdo
->
icm
,
allGrayID
);
int
*
pRgb
=
(
int
*
)
int
*
pRgb
=
(
int
*
)
((
*
env
)
->
GetPrimitiveArrayCritical
(
env
,
bisdo
->
lutarray
,
NULL
));
((
*
env
)
->
GetPrimitiveArrayCritical
(
env
,
bisdo
->
lutarray
,
NULL
));
CHECK_NULL_RETURN
(
pRgb
,
(
ColorData
*
)
NULL
);
cData
->
img_clr_tbl
=
initCubemap
(
pRgb
,
bisdo
->
lutsize
,
32
);
cData
->
img_clr_tbl
=
initCubemap
(
pRgb
,
bisdo
->
lutsize
,
32
);
if
(
allGray
==
JNI_TRUE
)
{
if
(
allGray
==
JNI_TRUE
)
{
initInverseGrayLut
(
pRgb
,
bisdo
->
lutsize
,
cData
);
initInverseGrayLut
(
pRgb
,
bisdo
->
lutsize
,
cData
);
...
@@ -303,6 +304,7 @@ static ColorData *BufImg_SetupICM(JNIEnv *env,
...
@@ -303,6 +304,7 @@ static ColorData *BufImg_SetupICM(JNIEnv *env,
if
(
JNU_IsNull
(
env
,
colorData
))
{
if
(
JNU_IsNull
(
env
,
colorData
))
{
jlong
pData
=
ptr_to_jlong
(
cData
);
jlong
pData
=
ptr_to_jlong
(
cData
);
colorData
=
(
*
env
)
->
NewObjectA
(
env
,
clsICMCD
,
initICMCDmID
,
(
jvalue
*
)
&
pData
);
colorData
=
(
*
env
)
->
NewObjectA
(
env
,
clsICMCD
,
initICMCDmID
,
(
jvalue
*
)
&
pData
);
JNU_CHECK_EXCEPTION_RETURN
(
env
,
(
ColorData
*
)
NULL
);
(
*
env
)
->
SetObjectField
(
env
,
bisdo
->
icm
,
colorDataID
,
colorData
);
(
*
env
)
->
SetObjectField
(
env
,
bisdo
->
icm
,
colorDataID
,
colorData
);
}
}
}
}
...
...
src/share/native/sun/awt/image/DataBufferNative.c
浏览文件 @
f02e7533
/*
/*
* Copyright (c) 2000, 201
2
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 201
4
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
*
* This code is free software; you can redistribute it and/or modify it
* This code is free software; you can redistribute it and/or modify it
...
@@ -74,6 +74,7 @@ Java_sun_awt_image_DataBufferNative_getElem(JNIEnv *env, jobject dbn,
...
@@ -74,6 +74,7 @@ Java_sun_awt_image_DataBufferNative_getElem(JNIEnv *env, jobject dbn,
SurfaceDataOps
*
ops
;
SurfaceDataOps
*
ops
;
ops
=
SurfaceData_GetOps
(
env
,
sd
);
ops
=
SurfaceData_GetOps
(
env
,
sd
);
JNU_CHECK_EXCEPTION_RETURN
(
env
,
-
1
);
if
(
!
(
pixelPtr
=
DBN_GetPixelPointer
(
env
,
x
,
y
,
&
lockInfo
,
if
(
!
(
pixelPtr
=
DBN_GetPixelPointer
(
env
,
x
,
y
,
&
lockInfo
,
ops
,
SD_LOCK_READ
)))
ops
,
SD_LOCK_READ
)))
...
@@ -115,6 +116,7 @@ Java_sun_awt_image_DataBufferNative_setElem(JNIEnv *env, jobject dbn,
...
@@ -115,6 +116,7 @@ Java_sun_awt_image_DataBufferNative_setElem(JNIEnv *env, jobject dbn,
ops
=
SurfaceData_GetOps
(
env
,
sd
);
ops
=
SurfaceData_GetOps
(
env
,
sd
);
JNU_CHECK_EXCEPTION
(
env
);
if
(
!
(
pixelPtr
=
DBN_GetPixelPointer
(
env
,
x
,
y
,
&
lockInfo
,
if
(
!
(
pixelPtr
=
DBN_GetPixelPointer
(
env
,
x
,
y
,
&
lockInfo
,
ops
,
SD_LOCK_WRITE
)))
ops
,
SD_LOCK_WRITE
)))
...
...
src/share/native/sun/awt/image/awt_ImageRep.c
浏览文件 @
f02e7533
/*
/*
* Copyright (c) 1997, 201
3
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 201
4
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
*
* This code is free software; you can redistribute it and/or modify it
* This code is free software; you can redistribute it and/or modify it
...
@@ -97,9 +97,9 @@ static jfieldID s_JsrcLUTtransIndexID;
...
@@ -97,9 +97,9 @@ static jfieldID s_JsrcLUTtransIndexID;
JNIEXPORT
void
JNICALL
JNIEXPORT
void
JNICALL
Java_sun_awt_image_ImageRepresentation_initIDs
(
JNIEnv
*
env
,
jclass
cls
)
{
Java_sun_awt_image_ImageRepresentation_initIDs
(
JNIEnv
*
env
,
jclass
cls
)
{
s_JnumSrcLUTID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"numSrcLUT"
,
"I"
);
CHECK_NULL
(
s_JnumSrcLUTID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"numSrcLUT"
,
"I"
)
);
s_JsrcLUTtransIndexID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"srcLUTtransIndex"
,
CHECK_NULL
(
s_JsrcLUTtransIndexID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"I"
);
"srcLUTtransIndex"
,
"I"
)
);
}
}
/*
/*
...
@@ -166,6 +166,7 @@ Java_sun_awt_image_ImageRepresentation_setICMpixels(JNIEnv *env, jclass cls,
...
@@ -166,6 +166,7 @@ Java_sun_awt_image_ImageRepresentation_setICMpixels(JNIEnv *env, jclass cls,
cOffs
=
(
int
*
)
(
*
env
)
->
GetPrimitiveArrayCritical
(
env
,
joffs
,
NULL
);
cOffs
=
(
int
*
)
(
*
env
)
->
GetPrimitiveArrayCritical
(
env
,
joffs
,
NULL
);
if
(
cOffs
==
NULL
)
{
if
(
cOffs
==
NULL
)
{
(
*
env
)
->
ExceptionClear
(
env
);
JNU_ThrowNullPointerException
(
env
,
"Null channel offset array"
);
JNU_ThrowNullPointerException
(
env
,
"Null channel offset array"
);
return
JNI_FALSE
;
return
JNI_FALSE
;
}
}
...
@@ -190,6 +191,7 @@ Java_sun_awt_image_ImageRepresentation_setICMpixels(JNIEnv *env, jclass cls,
...
@@ -190,6 +191,7 @@ Java_sun_awt_image_ImageRepresentation_setICMpixels(JNIEnv *env, jclass cls,
srcLUT
=
(
int
*
)
(
*
env
)
->
GetPrimitiveArrayCritical
(
env
,
jlut
,
NULL
);
srcLUT
=
(
int
*
)
(
*
env
)
->
GetPrimitiveArrayCritical
(
env
,
jlut
,
NULL
);
if
(
srcLUT
==
NULL
)
{
if
(
srcLUT
==
NULL
)
{
(
*
env
)
->
ExceptionClear
(
env
);
JNU_ThrowNullPointerException
(
env
,
"Null IndexColorModel LUT"
);
JNU_ThrowNullPointerException
(
env
,
"Null IndexColorModel LUT"
);
return
JNI_FALSE
;
return
JNI_FALSE
;
}
}
...
@@ -198,6 +200,7 @@ Java_sun_awt_image_ImageRepresentation_setICMpixels(JNIEnv *env, jclass cls,
...
@@ -198,6 +200,7 @@ Java_sun_awt_image_ImageRepresentation_setICMpixels(JNIEnv *env, jclass cls,
NULL
);
NULL
);
if
(
srcData
==
NULL
)
{
if
(
srcData
==
NULL
)
{
(
*
env
)
->
ReleasePrimitiveArrayCritical
(
env
,
jlut
,
srcLUT
,
JNI_ABORT
);
(
*
env
)
->
ReleasePrimitiveArrayCritical
(
env
,
jlut
,
srcLUT
,
JNI_ABORT
);
(
*
env
)
->
ExceptionClear
(
env
);
JNU_ThrowNullPointerException
(
env
,
"Null data array"
);
JNU_ThrowNullPointerException
(
env
,
"Null data array"
);
return
JNI_FALSE
;
return
JNI_FALSE
;
}
}
...
@@ -206,6 +209,7 @@ Java_sun_awt_image_ImageRepresentation_setICMpixels(JNIEnv *env, jclass cls,
...
@@ -206,6 +209,7 @@ Java_sun_awt_image_ImageRepresentation_setICMpixels(JNIEnv *env, jclass cls,
if
(
dstData
==
NULL
)
{
if
(
dstData
==
NULL
)
{
(
*
env
)
->
ReleasePrimitiveArrayCritical
(
env
,
jlut
,
srcLUT
,
JNI_ABORT
);
(
*
env
)
->
ReleasePrimitiveArrayCritical
(
env
,
jlut
,
srcLUT
,
JNI_ABORT
);
(
*
env
)
->
ReleasePrimitiveArrayCritical
(
env
,
jpix
,
srcData
,
JNI_ABORT
);
(
*
env
)
->
ReleasePrimitiveArrayCritical
(
env
,
jpix
,
srcData
,
JNI_ABORT
);
(
*
env
)
->
ExceptionClear
(
env
);
JNU_ThrowNullPointerException
(
env
,
"Null tile data array"
);
JNU_ThrowNullPointerException
(
env
,
"Null tile data array"
);
return
JNI_FALSE
;
return
JNI_FALSE
;
}
}
...
...
src/share/native/sun/awt/image/awt_parseImage.c
浏览文件 @
f02e7533
/*
/*
* Copyright (c) 1997, 201
3
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 201
4
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
*
* This code is free software; you can redistribute it and/or modify it
* This code is free software; you can redistribute it and/or modify it
...
@@ -226,8 +226,11 @@ int awt_parseRaster(JNIEnv *env, jobject jraster, RasterS_t *rasterP) {
...
@@ -226,8 +226,11 @@ int awt_parseRaster(JNIEnv *env, jobject jraster, RasterS_t *rasterP) {
rasterP
->
sppsm
.
isUsed
=
0
;
rasterP
->
sppsm
.
isUsed
=
0
;
jclass
singlePixelPackedSampleModelClass
=
(
*
env
)
->
FindClass
(
env
,
"java/awt/image/SinglePixelPackedSampleModel"
);
CHECK_NULL_RETURN
(
singlePixelPackedSampleModelClass
,
-
1
);
if
((
*
env
)
->
IsInstanceOf
(
env
,
rasterP
->
jsampleModel
,
if
((
*
env
)
->
IsInstanceOf
(
env
,
rasterP
->
jsampleModel
,
(
*
env
)
->
FindClass
(
env
,
"java/awt/image/SinglePixelPackedSampleModel"
)
))
{
singlePixelPackedSampleModelClass
))
{
jobject
jmask
,
joffs
,
jnbits
;
jobject
jmask
,
joffs
,
jnbits
;
rasterP
->
sppsm
.
isUsed
=
1
;
rasterP
->
sppsm
.
isUsed
=
1
;
...
@@ -261,8 +264,19 @@ int awt_parseRaster(JNIEnv *env, jobject jraster, RasterS_t *rasterP) {
...
@@ -261,8 +264,19 @@ int awt_parseRaster(JNIEnv *env, jobject jraster, RasterS_t *rasterP) {
rasterP
->
jsampleModel
,
rasterP
->
jsampleModel
,
g_SMHeightID
);
g_SMHeightID
);
if
((
*
env
)
->
IsInstanceOf
(
env
,
jraster
,
jclass
integerComponentRasterClass
=
(
*
env
)
->
FindClass
(
env
,
(
*
env
)
->
FindClass
(
env
,
"sun/awt/image/IntegerComponentRaster"
))){
"sun/awt/image/IntegerComponentRaster"
);
CHECK_NULL_RETURN
(
integerComponentRasterClass
,
-
1
);
jclass
byteComponentRasterClass
=
(
*
env
)
->
FindClass
(
env
,
"sun/awt/image/ByteComponentRaster"
);
CHECK_NULL_RETURN
(
byteComponentRasterClass
,
-
1
);
jclass
shortComponentRasterClass
=
(
*
env
)
->
FindClass
(
env
,
"sun/awt/image/ShortComponentRaster"
);
CHECK_NULL_RETURN
(
shortComponentRasterClass
,
-
1
);
jclass
bytePackedRasterClass
=
(
*
env
)
->
FindClass
(
env
,
"sun/awt/image/BytePackedRaster"
);
CHECK_NULL_RETURN
(
bytePackedRasterClass
,
-
1
);
if
((
*
env
)
->
IsInstanceOf
(
env
,
jraster
,
integerComponentRasterClass
)){
rasterP
->
jdata
=
(
*
env
)
->
GetObjectField
(
env
,
jraster
,
g_ICRdataID
);
rasterP
->
jdata
=
(
*
env
)
->
GetObjectField
(
env
,
jraster
,
g_ICRdataID
);
rasterP
->
dataType
=
INT_DATA_TYPE
;
rasterP
->
dataType
=
INT_DATA_TYPE
;
rasterP
->
dataSize
=
4
;
rasterP
->
dataSize
=
4
;
...
@@ -273,8 +287,7 @@ int awt_parseRaster(JNIEnv *env, jobject jraster, RasterS_t *rasterP) {
...
@@ -273,8 +287,7 @@ int awt_parseRaster(JNIEnv *env, jobject jraster, RasterS_t *rasterP) {
rasterP
->
pixelStride
=
(
*
env
)
->
GetIntField
(
env
,
jraster
,
g_ICRpixstrID
);
rasterP
->
pixelStride
=
(
*
env
)
->
GetIntField
(
env
,
jraster
,
g_ICRpixstrID
);
joffs
=
(
*
env
)
->
GetObjectField
(
env
,
jraster
,
g_ICRdataOffsetsID
);
joffs
=
(
*
env
)
->
GetObjectField
(
env
,
jraster
,
g_ICRdataOffsetsID
);
}
}
else
if
((
*
env
)
->
IsInstanceOf
(
env
,
jraster
,
else
if
((
*
env
)
->
IsInstanceOf
(
env
,
jraster
,
byteComponentRasterClass
)){
(
*
env
)
->
FindClass
(
env
,
"sun/awt/image/ByteComponentRaster"
))){
rasterP
->
jdata
=
(
*
env
)
->
GetObjectField
(
env
,
jraster
,
g_BCRdataID
);
rasterP
->
jdata
=
(
*
env
)
->
GetObjectField
(
env
,
jraster
,
g_BCRdataID
);
rasterP
->
dataType
=
BYTE_DATA_TYPE
;
rasterP
->
dataType
=
BYTE_DATA_TYPE
;
rasterP
->
dataSize
=
1
;
rasterP
->
dataSize
=
1
;
...
@@ -285,8 +298,7 @@ int awt_parseRaster(JNIEnv *env, jobject jraster, RasterS_t *rasterP) {
...
@@ -285,8 +298,7 @@ int awt_parseRaster(JNIEnv *env, jobject jraster, RasterS_t *rasterP) {
rasterP
->
pixelStride
=
(
*
env
)
->
GetIntField
(
env
,
jraster
,
g_BCRpixstrID
);
rasterP
->
pixelStride
=
(
*
env
)
->
GetIntField
(
env
,
jraster
,
g_BCRpixstrID
);
joffs
=
(
*
env
)
->
GetObjectField
(
env
,
jraster
,
g_BCRdataOffsetsID
);
joffs
=
(
*
env
)
->
GetObjectField
(
env
,
jraster
,
g_BCRdataOffsetsID
);
}
}
else
if
((
*
env
)
->
IsInstanceOf
(
env
,
jraster
,
else
if
((
*
env
)
->
IsInstanceOf
(
env
,
jraster
,
shortComponentRasterClass
)){
(
*
env
)
->
FindClass
(
env
,
"sun/awt/image/ShortComponentRaster"
))){
rasterP
->
jdata
=
(
*
env
)
->
GetObjectField
(
env
,
jraster
,
g_SCRdataID
);
rasterP
->
jdata
=
(
*
env
)
->
GetObjectField
(
env
,
jraster
,
g_SCRdataID
);
rasterP
->
dataType
=
SHORT_DATA_TYPE
;
rasterP
->
dataType
=
SHORT_DATA_TYPE
;
rasterP
->
dataSize
=
2
;
rasterP
->
dataSize
=
2
;
...
@@ -297,8 +309,7 @@ int awt_parseRaster(JNIEnv *env, jobject jraster, RasterS_t *rasterP) {
...
@@ -297,8 +309,7 @@ int awt_parseRaster(JNIEnv *env, jobject jraster, RasterS_t *rasterP) {
rasterP
->
pixelStride
=
(
*
env
)
->
GetIntField
(
env
,
jraster
,
g_SCRpixstrID
);
rasterP
->
pixelStride
=
(
*
env
)
->
GetIntField
(
env
,
jraster
,
g_SCRpixstrID
);
joffs
=
(
*
env
)
->
GetObjectField
(
env
,
jraster
,
g_SCRdataOffsetsID
);
joffs
=
(
*
env
)
->
GetObjectField
(
env
,
jraster
,
g_SCRdataOffsetsID
);
}
}
else
if
((
*
env
)
->
IsInstanceOf
(
env
,
jraster
,
else
if
((
*
env
)
->
IsInstanceOf
(
env
,
jraster
,
bytePackedRasterClass
)){
(
*
env
)
->
FindClass
(
env
,
"sun/awt/image/BytePackedRaster"
))){
rasterP
->
rasterType
=
PACKED_RASTER_TYPE
;
rasterP
->
rasterType
=
PACKED_RASTER_TYPE
;
rasterP
->
dataType
=
BYTE_DATA_TYPE
;
rasterP
->
dataType
=
BYTE_DATA_TYPE
;
rasterP
->
dataSize
=
1
;
rasterP
->
dataSize
=
1
;
...
@@ -397,30 +408,41 @@ int awt_parseRaster(JNIEnv *env, jobject jraster, RasterS_t *rasterP) {
...
@@ -397,30 +408,41 @@ int awt_parseRaster(JNIEnv *env, jobject jraster, RasterS_t *rasterP) {
}
}
static
int
getColorModelType
(
JNIEnv
*
env
,
jobject
jcmodel
)
{
static
int
getColorModelType
(
JNIEnv
*
env
,
jobject
jcmodel
)
{
int
type
=
UNKNOWN_CM_TYPE
;
jclass
colorModelClass
;
if
((
*
env
)
->
IsInstanceOf
(
env
,
jcmodel
,
colorModelClass
=
(
*
env
)
->
FindClass
(
env
,
(
*
env
)
->
FindClass
(
env
,
"java/awt/image/IndexColorModel"
)))
"java/awt/image/IndexColorModel"
);
CHECK_NULL_RETURN
(
colorModelClass
,
UNKNOWN_CM_TYPE
);
if
((
*
env
)
->
IsInstanceOf
(
env
,
jcmodel
,
colorModelClass
))
{
{
type
=
INDEX_CM_TYPE
;
return
INDEX_CM_TYPE
;
}
else
if
((
*
env
)
->
IsInstanceOf
(
env
,
jcmodel
,
}
(
*
env
)
->
FindClass
(
env
,
"java/awt/image/PackedColorModel"
)))
colorModelClass
=
(
*
env
)
->
FindClass
(
env
,
"java/awt/image/PackedColorModel"
);
CHECK_NULL_RETURN
(
colorModelClass
,
UNKNOWN_CM_TYPE
);
if
((
*
env
)
->
IsInstanceOf
(
env
,
jcmodel
,
colorModelClass
))
{
{
if
((
*
env
)
->
IsInstanceOf
(
env
,
jcmodel
,
colorModelClass
=
(
*
env
)
->
FindClass
(
env
,
(
*
env
)
->
FindClass
(
env
,
"java/awt/image/DirectColorModel"
)))
{
"java/awt/image/DirectColorModel"
);
type
=
DIRECT_CM_TYPE
;
CHECK_NULL_RETURN
(
colorModelClass
,
UNKNOWN_CM_TYPE
);
if
((
*
env
)
->
IsInstanceOf
(
env
,
jcmodel
,
colorModelClass
))
{
return
DIRECT_CM_TYPE
;
}
}
else
{
else
{
type
=
PACKED_CM_TYPE
;
return
PACKED_CM_TYPE
;
}
}
}
}
else
if
((
*
env
)
->
IsInstanceOf
(
env
,
jcmodel
,
colorModelClass
=
(
*
env
)
->
FindClass
(
env
,
(
*
env
)
->
FindClass
(
env
,
"java/awt/image/ComponentColorModel"
)))
"java/awt/image/ComponentColorModel"
);
CHECK_NULL_RETURN
(
colorModelClass
,
UNKNOWN_CM_TYPE
);
if
((
*
env
)
->
IsInstanceOf
(
env
,
jcmodel
,
colorModelClass
))
{
{
type
=
COMPONENT_CM_TYPE
;
return
COMPONENT_CM_TYPE
;
}
}
return
type
;
return
UNKNOWN_CM_TYPE
;
}
}
int
awt_parseColorModel
(
JNIEnv
*
env
,
jobject
jcmodel
,
int
imageType
,
int
awt_parseColorModel
(
JNIEnv
*
env
,
jobject
jcmodel
,
int
imageType
,
...
@@ -506,12 +528,13 @@ int awt_parseColorModel (JNIEnv *env, jobject jcmodel, int imageType,
...
@@ -506,12 +528,13 @@ int awt_parseColorModel (JNIEnv *env, jobject jcmodel, int imageType,
if
(
s_jdefCM
==
NULL
)
{
if
(
s_jdefCM
==
NULL
)
{
jobject
defCM
;
jobject
defCM
;
jclass
jcm
=
(
*
env
)
->
FindClass
(
env
,
"java/awt/image/ColorModel"
);
jclass
jcm
=
(
*
env
)
->
FindClass
(
env
,
"java/awt/image/ColorModel"
);
CHECK_NULL_RETURN
(
jcm
,
-
1
);
defCM
=
(
*
env
)
->
CallStaticObjectMethod
(
env
,
jcm
,
defCM
=
(
*
env
)
->
CallStaticObjectMethod
(
env
,
jcm
,
g_CMgetRGBdefaultMID
,
NULL
);
g_CMgetRGBdefaultMID
,
NULL
);
s_jdefCM
=
(
*
env
)
->
NewGlobalRef
(
env
,
defCM
);
s_jdefCM
=
(
*
env
)
->
NewGlobalRef
(
env
,
defCM
);
if
(
defCM
==
NULL
||
s_jdefCM
==
NULL
)
{
if
(
defCM
==
NULL
||
s_jdefCM
==
NULL
)
{
JNU_ThrowNullPointerException
(
env
,
(
*
env
)
->
ExceptionClear
(
env
);
"Unable to find default CM"
);
JNU_ThrowNullPointerException
(
env
,
"Unable to find default CM"
);
return
-
1
;
return
-
1
;
}
}
}
}
...
@@ -931,6 +954,7 @@ int awt_getPixels(JNIEnv *env, RasterS_t *rasterP, void *bufferP) {
...
@@ -931,6 +954,7 @@ int awt_getPixels(JNIEnv *env, RasterS_t *rasterP, void *bufferP) {
jdata
=
(
*
env
)
->
NewIntArray
(
env
,
maxSamples
);
jdata
=
(
*
env
)
->
NewIntArray
(
env
,
maxSamples
);
if
(
JNU_IsNull
(
env
,
jdata
))
{
if
(
JNU_IsNull
(
env
,
jdata
))
{
(
*
env
)
->
ExceptionClear
(
env
);
JNU_ThrowOutOfMemoryError
(
env
,
"Out of Memory"
);
JNU_ThrowOutOfMemoryError
(
env
,
"Out of Memory"
);
return
-
1
;
return
-
1
;
}
}
...
@@ -1028,6 +1052,7 @@ int awt_setPixels(JNIEnv *env, RasterS_t *rasterP, void *bufferP) {
...
@@ -1028,6 +1052,7 @@ int awt_setPixels(JNIEnv *env, RasterS_t *rasterP, void *bufferP) {
jdata
=
(
*
env
)
->
NewIntArray
(
env
,
maxSamples
);
jdata
=
(
*
env
)
->
NewIntArray
(
env
,
maxSamples
);
if
(
JNU_IsNull
(
env
,
jdata
))
{
if
(
JNU_IsNull
(
env
,
jdata
))
{
(
*
env
)
->
ExceptionClear
(
env
);
JNU_ThrowOutOfMemoryError
(
env
,
"Out of Memory"
);
JNU_ThrowOutOfMemoryError
(
env
,
"Out of Memory"
);
return
-
1
;
return
-
1
;
}
}
...
...
src/share/native/sun/awt/image/gif/gifdecoder.c
浏览文件 @
f02e7533
/*
/*
* Copyright (c) 1995, 20
06
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1995, 20
14
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
*
* This code is free software; you can redistribute it and/or modify it
* This code is free software; you can redistribute it and/or modify it
...
@@ -104,12 +104,12 @@ static jfieldID outCodeID;
...
@@ -104,12 +104,12 @@ static jfieldID outCodeID;
JNIEXPORT
void
JNICALL
JNIEXPORT
void
JNICALL
Java_sun_awt_image_GifImageDecoder_initIDs
(
JNIEnv
*
env
,
jclass
this
)
Java_sun_awt_image_GifImageDecoder_initIDs
(
JNIEnv
*
env
,
jclass
this
)
{
{
readID
=
(
*
env
)
->
GetMethodID
(
env
,
this
,
"readBytes"
,
"([BII)I"
);
CHECK_NULL
(
readID
=
(
*
env
)
->
GetMethodID
(
env
,
this
,
"readBytes"
,
"([BII)I"
)
);
sendID
=
(
*
env
)
->
GetMethodID
(
env
,
this
,
"sendPixels"
,
CHECK_NULL
(
sendID
=
(
*
env
)
->
GetMethodID
(
env
,
this
,
"sendPixels"
,
"(IIII[BLjava/awt/image/ColorModel;)I"
);
"(IIII[BLjava/awt/image/ColorModel;)I"
)
)
;
prefixID
=
(
*
env
)
->
GetFieldID
(
env
,
this
,
"prefix"
,
"[S"
);
CHECK_NULL
(
prefixID
=
(
*
env
)
->
GetFieldID
(
env
,
this
,
"prefix"
,
"[S"
)
);
suffixID
=
(
*
env
)
->
GetFieldID
(
env
,
this
,
"suffix"
,
"[B"
);
CHECK_NULL
(
suffixID
=
(
*
env
)
->
GetFieldID
(
env
,
this
,
"suffix"
,
"[B"
)
);
outCodeID
=
(
*
env
)
->
GetFieldID
(
env
,
this
,
"outCode"
,
"[B"
);
CHECK_NULL
(
outCodeID
=
(
*
env
)
->
GetFieldID
(
env
,
this
,
"outCode"
,
"[B"
)
);
}
}
JNIEXPORT
jboolean
JNICALL
JNIEXPORT
jboolean
JNICALL
...
@@ -292,8 +292,10 @@ Java_sun_awt_image_GifImageDecoder_parseImage(JNIEnv *env,
...
@@ -292,8 +292,10 @@ Java_sun_awt_image_GifImageDecoder_parseImage(JNIEnv *env,
* reads the immediately subsequent code as uncompressed data.
* reads the immediately subsequent code as uncompressed data.
*/
*/
if
(
verbose
)
{
if
(
verbose
)
{
RELEASE_ARRAYS
();
fprintf
(
stdout
,
"."
);
fprintf
(
stdout
,
"."
);
fflush
(
stdout
);
fflush
(
stdout
);
GET_ARRAYS
();
}
}
/* Note that freeCode is one less than it is supposed to be,
/* Note that freeCode is one less than it is supposed to be,
...
@@ -319,10 +321,10 @@ Java_sun_awt_image_GifImageDecoder_parseImage(JNIEnv *env,
...
@@ -319,10 +321,10 @@ Java_sun_awt_image_GifImageDecoder_parseImage(JNIEnv *env,
/* make sure we read the whole block of pixels. */
/* make sure we read the whole block of pixels. */
flushit:
flushit:
while
(
!
blockEnd
)
{
while
(
!
blockEnd
)
{
RELEASE_ARRAYS
();
if
(
verbose
)
{
if
(
verbose
)
{
fprintf
(
stdout
,
"flushing %d bytes
\n
"
,
blockLength
);
fprintf
(
stdout
,
"flushing %d bytes
\n
"
,
blockLength
);
}
}
RELEASE_ARRAYS
();
if
((
*
env
)
->
CallIntMethod
(
env
,
this
,
readID
,
if
((
*
env
)
->
CallIntMethod
(
env
,
this
,
readID
,
blockh
,
0
,
blockLength
+
1
)
!=
0
blockh
,
0
,
blockLength
+
1
)
!=
0
||
(
*
env
)
->
ExceptionOccurred
(
env
))
||
(
*
env
)
->
ExceptionOccurred
(
env
))
...
...
src/share/native/sun/awt/image/imageInitIDs.c
浏览文件 @
f02e7533
/*
/*
* Copyright (c) 1997,
1998
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997,
2014
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
*
* This code is free software; you can redistribute it and/or modify it
* This code is free software; you can redistribute it and/or modify it
...
@@ -29,211 +29,139 @@
...
@@ -29,211 +29,139 @@
JNIEXPORT
void
JNICALL
JNIEXPORT
void
JNICALL
Java_java_awt_image_BufferedImage_initIDs
(
JNIEnv
*
env
,
jclass
cls
)
{
Java_java_awt_image_BufferedImage_initIDs
(
JNIEnv
*
env
,
jclass
cls
)
{
g_BImgRasterID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"raster"
,
CHECK_NULL
(
g_BImgRasterID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"raster"
,
"Ljava/awt/image/WritableRaster;"
);
"Ljava/awt/image/WritableRaster;"
));
g_BImgTypeID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"imageType"
,
"I"
);
CHECK_NULL
(
g_BImgTypeID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"imageType"
,
"I"
));
g_BImgCMID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"colorModel"
,
CHECK_NULL
(
g_BImgCMID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"colorModel"
,
"Ljava/awt/image/ColorModel;"
);
"Ljava/awt/image/ColorModel;"
));
g_BImgGetRGBMID
=
(
*
env
)
->
GetMethodID
(
env
,
cls
,
"getRGB"
,
CHECK_NULL
(
g_BImgGetRGBMID
=
(
*
env
)
->
GetMethodID
(
env
,
cls
,
"getRGB"
,
"(IIII[III)[I"
);
"(IIII[III)[I"
));
g_BImgSetRGBMID
=
(
*
env
)
->
GetMethodID
(
env
,
cls
,
"setRGB"
,
CHECK_NULL
(
g_BImgSetRGBMID
=
(
*
env
)
->
GetMethodID
(
env
,
cls
,
"setRGB"
,
"(IIII[III)V"
);
"(IIII[III)V"
));
if
(
g_BImgRasterID
==
NULL
||
g_BImgTypeID
==
NULL
||
g_BImgCMID
==
NULL
||
g_BImgGetRGBMID
==
NULL
)
{
JNU_ThrowNullPointerException
(
env
,
"Unable to grab field ids"
);
}
}
}
JNIEXPORT
void
JNICALL
JNIEXPORT
void
JNICALL
Java_java_awt_image_Raster_initIDs
(
JNIEnv
*
env
,
jclass
cls
)
{
Java_java_awt_image_Raster_initIDs
(
JNIEnv
*
env
,
jclass
cls
)
{
g_RasterWidthID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"width"
,
"I"
);
CHECK_NULL
(
g_RasterWidthID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"width"
,
"I"
));
g_RasterHeightID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"height"
,
"I"
);
CHECK_NULL
(
g_RasterHeightID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"height"
,
"I"
));
g_RasterNumBandsID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"numBands"
,
"I"
);
CHECK_NULL
(
g_RasterNumBandsID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"numBands"
,
"I"
));
g_RasterGetDataMID
=
(
*
env
)
->
GetMethodID
(
env
,
cls
,
"getDataElements"
,
CHECK_NULL
(
g_RasterGetDataMID
=
(
*
env
)
->
GetMethodID
(
env
,
cls
,
"getDataElements"
,
"(IIIILjava/lang/Object;)Ljava/lang/Object;"
);
"(IIIILjava/lang/Object;)Ljava/lang/Object;"
));
g_RasterMinXID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"minX"
,
"I"
);
CHECK_NULL
(
g_RasterMinXID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"minX"
,
"I"
));
g_RasterMinYID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"minY"
,
"I"
);
CHECK_NULL
(
g_RasterMinYID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"minY"
,
"I"
));
g_RasterBaseOriginXID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
CHECK_NULL
(
g_RasterBaseOriginXID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"sampleModelTranslateX"
,
"I"
);
"sampleModelTranslateX"
,
"I"
));
g_RasterBaseOriginYID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
CHECK_NULL
(
g_RasterBaseOriginYID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"sampleModelTranslateY"
,
"I"
);
"sampleModelTranslateY"
,
"I"
));
g_RasterSampleModelID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
CHECK_NULL
(
g_RasterSampleModelID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"sampleModel"
,
"Ljava/awt/image/SampleModel;"
);
"sampleModel"
,
"Ljava/awt/image/SampleModel;"
));
g_RasterNumDataElementsID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"numDataElements"
,
CHECK_NULL
(
g_RasterNumDataElementsID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"I"
);
"numDataElements"
,
"I"
));
g_RasterNumBandsID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"numBands"
,
"I"
);
CHECK_NULL
(
g_RasterNumBandsID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"numBands"
,
"I"
));
g_RasterDataBufferID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"dataBuffer"
,
CHECK_NULL
(
g_RasterDataBufferID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"dataBuffer"
,
"Ljava/awt/image/DataBuffer;"
);
"Ljava/awt/image/DataBuffer;"
));
if
(
g_RasterWidthID
==
NULL
||
g_RasterHeightID
==
NULL
||
g_RasterNumBandsID
==
NULL
||
g_RasterGetDataMID
==
NULL
||
g_RasterMinXID
==
NULL
||
g_RasterMinYID
==
NULL
||
g_RasterBaseOriginXID
==
NULL
||
g_RasterBaseOriginYID
==
NULL
||
g_RasterSampleModelID
==
NULL
||
g_RasterNumDataElementsID
==
NULL
||
g_RasterNumBandsID
==
NULL
||
g_RasterDataBufferID
==
NULL
)
{
JNU_ThrowNullPointerException
(
env
,
"Unable to grab field ids"
);
}
}
}
JNIEXPORT
void
JNICALL
JNIEXPORT
void
JNICALL
Java_sun_awt_image_ByteComponentRaster_initIDs
(
JNIEnv
*
env
,
jclass
cls
)
{
Java_sun_awt_image_ByteComponentRaster_initIDs
(
JNIEnv
*
env
,
jclass
cls
)
{
g_BCRdataID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"data"
,
"[B"
);
CHECK_NULL
(
g_BCRdataID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"data"
,
"[B"
));
g_BCRscanstrID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"scanlineStride"
,
"I"
);
CHECK_NULL
(
g_BCRscanstrID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"scanlineStride"
,
"I"
));
g_BCRpixstrID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"pixelStride"
,
"I"
);
CHECK_NULL
(
g_BCRpixstrID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"pixelStride"
,
"I"
));
g_BCRbandoffsID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"bandOffset"
,
"I"
);
CHECK_NULL
(
g_BCRbandoffsID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"bandOffset"
,
"I"
));
g_BCRdataOffsetsID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"dataOffsets"
,
"[I"
);
CHECK_NULL
(
g_BCRdataOffsetsID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"dataOffsets"
,
"[I"
));
g_BCRtypeID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"type"
,
"I"
);
CHECK_NULL
(
g_BCRtypeID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"type"
,
"I"
));
if
(
g_BCRdataID
==
NULL
||
g_BCRscanstrID
==
NULL
||
g_BCRpixstrID
==
NULL
||
g_BCRbandoffsID
==
NULL
||
g_BCRtypeID
==
NULL
)
{
JNU_ThrowNullPointerException
(
env
,
"Unable to grab field ids"
);
}
}
}
JNIEXPORT
void
JNICALL
JNIEXPORT
void
JNICALL
Java_sun_awt_image_BytePackedRaster_initIDs
(
JNIEnv
*
env
,
jclass
cls
)
{
Java_sun_awt_image_BytePackedRaster_initIDs
(
JNIEnv
*
env
,
jclass
cls
)
{
g_BPRdataID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"data"
,
"[B"
);
CHECK_NULL
(
g_BPRdataID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"data"
,
"[B"
));
g_BPRscanstrID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"scanlineStride"
,
"I"
);
CHECK_NULL
(
g_BPRscanstrID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"scanlineStride"
,
"I"
));
g_BPRpixstrID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"pixelBitStride"
,
"I"
);
CHECK_NULL
(
g_BPRpixstrID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"pixelBitStride"
,
"I"
));
g_BPRtypeID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"type"
,
"I"
);
CHECK_NULL
(
g_BPRtypeID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"type"
,
"I"
));
g_BPRdataBitOffsetID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"dataBitOffset"
,
"I"
);
CHECK_NULL
(
g_BPRdataBitOffsetID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"dataBitOffset"
,
"I"
));
if
(
g_BPRdataID
==
NULL
||
g_BPRscanstrID
==
NULL
||
g_BPRpixstrID
==
NULL
||
g_BPRtypeID
==
NULL
)
{
JNU_ThrowNullPointerException
(
env
,
"Unable to grab field ids"
);
}
}
}
JNIEXPORT
void
JNICALL
JNIEXPORT
void
JNICALL
Java_sun_awt_image_ShortComponentRaster_initIDs
(
JNIEnv
*
env
,
jclass
cls
)
{
Java_sun_awt_image_ShortComponentRaster_initIDs
(
JNIEnv
*
env
,
jclass
cls
)
{
g_SCRdataID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"data"
,
"[S"
);
CHECK_NULL
(
g_SCRdataID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"data"
,
"[S"
));
g_SCRscanstrID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"scanlineStride"
,
"I"
);
CHECK_NULL
(
g_SCRscanstrID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"scanlineStride"
,
"I"
));
g_SCRpixstrID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"pixelStride"
,
"I"
);
CHECK_NULL
(
g_SCRpixstrID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"pixelStride"
,
"I"
));
g_SCRbandoffsID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"bandOffset"
,
"I"
);
CHECK_NULL
(
g_SCRbandoffsID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"bandOffset"
,
"I"
));
g_SCRdataOffsetsID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"dataOffsets"
,
"[I"
);
CHECK_NULL
(
g_SCRdataOffsetsID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"dataOffsets"
,
"[I"
));
g_SCRtypeID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"type"
,
"I"
);
CHECK_NULL
(
g_SCRtypeID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"type"
,
"I"
));
if
(
g_SCRdataID
==
NULL
||
g_SCRscanstrID
==
NULL
||
g_SCRpixstrID
==
NULL
||
g_SCRbandoffsID
==
NULL
||
g_SCRdataOffsetsID
==
NULL
||
g_SCRtypeID
==
NULL
)
{
JNU_ThrowNullPointerException
(
env
,
"Unable to grab field ids"
);
}
}
}
JNIEXPORT
void
JNICALL
JNIEXPORT
void
JNICALL
Java_sun_awt_image_IntegerComponentRaster_initIDs
(
JNIEnv
*
env
,
jclass
cls
)
{
Java_sun_awt_image_IntegerComponentRaster_initIDs
(
JNIEnv
*
env
,
jclass
cls
)
{
g_ICRdataID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"data"
,
"[I"
);
CHECK_NULL
(
g_ICRdataID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"data"
,
"[I"
));
g_ICRscanstrID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"scanlineStride"
,
"I"
);
CHECK_NULL
(
g_ICRscanstrID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"scanlineStride"
,
"I"
));
g_ICRpixstrID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"pixelStride"
,
"I"
);
CHECK_NULL
(
g_ICRpixstrID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"pixelStride"
,
"I"
));
g_ICRdataOffsetsID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"dataOffsets"
,
"[I"
);
CHECK_NULL
(
g_ICRdataOffsetsID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"dataOffsets"
,
"[I"
));
g_ICRbandoffsID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"bandOffset"
,
"I"
);
CHECK_NULL
(
g_ICRbandoffsID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"bandOffset"
,
"I"
));
g_ICRputDataMID
=
(
*
env
)
->
GetMethodID
(
env
,
cls
,
"setDataElements"
,
CHECK_NULL
(
g_ICRputDataMID
=
(
*
env
)
->
GetMethodID
(
env
,
cls
,
"setDataElements"
,
"(IIIILjava/lang/Object;)V"
);
"(IIIILjava/lang/Object;)V"
));
g_ICRtypeID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"type"
,
"I"
);
CHECK_NULL
(
g_ICRtypeID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"type"
,
"I"
));
if
(
g_ICRdataID
==
NULL
||
g_ICRscanstrID
==
NULL
||
g_ICRpixstrID
==
NULL
||
g_ICRbandoffsID
==
NULL
||
g_ICRputDataMID
==
NULL
||
g_ICRdataOffsetsID
==
NULL
||
g_ICRtypeID
==
NULL
)
{
JNU_ThrowNullPointerException
(
env
,
"Unable to grab field ids"
);
}
}
}
JNIEXPORT
void
JNICALL
JNIEXPORT
void
JNICALL
Java_java_awt_image_SinglePixelPackedSampleModel_initIDs
(
JNIEnv
*
env
,
Java_java_awt_image_SinglePixelPackedSampleModel_initIDs
(
JNIEnv
*
env
,
jclass
cls
)
{
jclass
cls
)
{
CHECK_NULL
(
g_SPPSMmaskArrID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"bitMasks"
,
"[I"
));
g_SPPSMmaskArrID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"bitMasks"
,
"[I"
);
CHECK_NULL
(
g_SPPSMmaskOffID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"bitOffsets"
,
"[I"
));
g_SPPSMmaskOffID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"bitOffsets"
,
"[I"
);
CHECK_NULL
(
g_SPPSMnBitsID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"bitSizes"
,
"[I"
));
g_SPPSMnBitsID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"bitSizes"
,
"[I"
);
CHECK_NULL
(
g_SPPSMmaxBitID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"maxBitSize"
,
"I"
));
g_SPPSMmaxBitID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"maxBitSize"
,
"I"
);
if
(
g_SPPSMmaskArrID
==
NULL
||
g_SPPSMmaskOffID
==
NULL
||
g_SPPSMnBitsID
==
NULL
||
g_SPPSMmaxBitID
==
NULL
)
{
JNU_ThrowNullPointerException
(
env
,
"Unable to grab field ids"
);
}
}
}
JNIEXPORT
void
JNICALL
JNIEXPORT
void
JNICALL
Java_java_awt_image_ColorModel_initIDs
(
JNIEnv
*
env
,
jclass
cls
)
{
Java_java_awt_image_ColorModel_initIDs
(
JNIEnv
*
env
,
jclass
cls
)
{
g_CMpDataID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"pData"
,
"J"
);
CHECK_NULL
(
g_CMpDataID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"pData"
,
"J"
)
);
g_CMnBitsID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"nBits"
,
"[I"
);
CHECK_NULL
(
g_CMnBitsID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"nBits"
,
"[I"
)
);
g_CMcspaceID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"colorSpace"
,
CHECK_NULL
(
g_CMcspaceID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"colorSpace"
,
"Ljava/awt/color/ColorSpace;"
);
"Ljava/awt/color/ColorSpace;"
)
)
;
g_CMnumComponentsID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"numComponents"
,
"I"
);
CHECK_NULL
(
g_CMnumComponentsID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"numComponents"
,
"I"
)
);
g_CMsuppAlphaID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"supportsAlpha"
,
"Z"
);
CHECK_NULL
(
g_CMsuppAlphaID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"supportsAlpha"
,
"Z"
)
);
g_CMisAlphaPreID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"isAlphaPremultiplied"
,
CHECK_NULL
(
g_CMisAlphaPreID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"isAlphaPremultiplied"
,
"Z"
);
"Z"
)
)
;
g_CMtransparencyID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"transparency"
,
"I"
);
CHECK_NULL
(
g_CMtransparencyID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"transparency"
,
"I"
)
);
g_CMgetRGBMID
=
(
*
env
)
->
GetMethodID
(
env
,
cls
,
"getRGB"
,
CHECK_NULL
(
g_CMgetRGBMID
=
(
*
env
)
->
GetMethodID
(
env
,
cls
,
"getRGB"
,
"(Ljava/lang/Object;)I"
);
"(Ljava/lang/Object;)I"
)
)
;
g_CMcsTypeID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"colorSpaceType"
,
"I"
);
CHECK_NULL
(
g_CMcsTypeID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"colorSpaceType"
,
"I"
)
);
g_CMis_sRGBID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"is_sRGB"
,
"Z"
);
CHECK_NULL
(
g_CMis_sRGBID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"is_sRGB"
,
"Z"
)
);
g_CMgetRGBdefaultMID
=
(
*
env
)
->
GetStaticMethodID
(
env
,
cls
,
CHECK_NULL
(
g_CMgetRGBdefaultMID
=
(
*
env
)
->
GetStaticMethodID
(
env
,
cls
,
"getRGBdefault"
,
"getRGBdefault"
,
"()Ljava/awt/image/ColorModel;"
);
"()Ljava/awt/image/ColorModel;"
));
if
(
g_CMnBitsID
==
NULL
||
g_CMcspaceID
==
NULL
||
g_CMnumComponentsID
==
NULL
||
g_CMsuppAlphaID
==
NULL
||
g_CMisAlphaPreID
==
NULL
||
g_CMtransparencyID
==
NULL
||
g_CMgetRGBMID
==
NULL
||
g_CMgetRGBMID
==
NULL
||
g_CMis_sRGBID
==
NULL
||
g_CMgetRGBdefaultMID
==
NULL
||
g_CMpDataID
==
NULL
)
{
JNU_ThrowNullPointerException
(
env
,
"Unable to grab field ids"
);
}
}
}
JNIEXPORT
void
JNICALL
JNIEXPORT
void
JNICALL
Java_java_awt_image_IndexColorModel_initIDs
(
JNIEnv
*
env
,
jclass
cls
)
{
Java_java_awt_image_IndexColorModel_initIDs
(
JNIEnv
*
env
,
jclass
cls
)
{
g_ICMtransIdxID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"transparent_index"
,
"I"
);
CHECK_NULL
(
g_ICMtransIdxID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"transparent_index"
,
"I"
));
g_ICMmapSizeID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"map_size"
,
"I"
);
CHECK_NULL
(
g_ICMmapSizeID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"map_size"
,
"I"
));
g_ICMrgbID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"rgb"
,
"[I"
);
CHECK_NULL
(
g_ICMrgbID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"rgb"
,
"[I"
));
if
(
g_ICMtransIdxID
==
NULL
||
g_ICMmapSizeID
==
NULL
||
g_ICMrgbID
==
NULL
)
{
JNU_ThrowNullPointerException
(
env
,
"Unable to grab field ids"
);
}
}
}
JNIEXPORT
void
JNICALL
JNIEXPORT
void
JNICALL
Java_java_awt_image_SampleModel_initIDs
(
JNIEnv
*
env
,
jclass
cls
)
{
Java_java_awt_image_SampleModel_initIDs
(
JNIEnv
*
env
,
jclass
cls
)
{
g_SMWidthID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"width"
,
"I"
);
CHECK_NULL
(
g_SMWidthID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"width"
,
"I"
));
g_SMHeightID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"height"
,
"I"
);
CHECK_NULL
(
g_SMHeightID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"height"
,
"I"
));
g_SMGetPixelsMID
=
(
*
env
)
->
GetMethodID
(
env
,
cls
,
"getPixels"
,
CHECK_NULL
(
g_SMGetPixelsMID
=
(
*
env
)
->
GetMethodID
(
env
,
cls
,
"getPixels"
,
"(IIII[ILjava/awt/image/DataBuffer;)[I"
);
"(IIII[ILjava/awt/image/DataBuffer;)[I"
));
g_SMSetPixelsMID
=
(
*
env
)
->
GetMethodID
(
env
,
cls
,
"setPixels"
,
CHECK_NULL
(
g_SMSetPixelsMID
=
(
*
env
)
->
GetMethodID
(
env
,
cls
,
"setPixels"
,
"(IIII[ILjava/awt/image/DataBuffer;)V"
);
"(IIII[ILjava/awt/image/DataBuffer;)V"
));
if
(
g_SMWidthID
==
NULL
||
g_SMHeightID
==
NULL
||
g_SMGetPixelsMID
==
NULL
||
g_SMSetPixelsMID
==
NULL
)
{
JNU_ThrowNullPointerException
(
env
,
"Unable to grab field ids"
);
}
}
}
JNIEXPORT
void
JNICALL
JNIEXPORT
void
JNICALL
Java_java_awt_image_ComponentSampleModel_initIDs
(
JNIEnv
*
env
,
jclass
cls
)
{
Java_java_awt_image_ComponentSampleModel_initIDs
(
JNIEnv
*
env
,
jclass
cls
)
{
g_CSMPixStrideID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"pixelStride"
,
"I"
);
CHECK_NULL
(
g_CSMPixStrideID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"pixelStride"
,
"I"
));
g_CSMScanStrideID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"scanlineStride"
,
"I"
);
CHECK_NULL
(
g_CSMScanStrideID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"scanlineStride"
,
"I"
));
g_CSMBandOffsetsID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"bandOffsets"
,
"[I"
);
CHECK_NULL
(
g_CSMBandOffsetsID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"bandOffsets"
,
"[I"
));
if
(
g_CSMPixStrideID
==
NULL
||
g_CSMScanStrideID
==
NULL
||
g_CSMBandOffsetsID
==
NULL
)
{
JNU_ThrowNullPointerException
(
env
,
"Unable to grab field ids"
);
}
}
}
JNIEXPORT
void
JNICALL
JNIEXPORT
void
JNICALL
Java_java_awt_image_Kernel_initIDs
(
JNIEnv
*
env
,
jclass
cls
)
{
Java_java_awt_image_Kernel_initIDs
(
JNIEnv
*
env
,
jclass
cls
)
{
g_KernelWidthID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"width"
,
"I"
);
CHECK_NULL
(
g_KernelWidthID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"width"
,
"I"
));
g_KernelHeightID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"height"
,
"I"
);
CHECK_NULL
(
g_KernelHeightID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"height"
,
"I"
));
g_KernelDataID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"data"
,
"[F"
);
CHECK_NULL
(
g_KernelDataID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"data"
,
"[F"
));
if
(
g_KernelWidthID
==
NULL
||
g_KernelHeightID
==
NULL
||
g_KernelDataID
==
NULL
)
{
JNU_ThrowNullPointerException
(
env
,
"Unable to grab field ids"
);
}
}
}
JNIEXPORT
void
JNICALL
JNIEXPORT
void
JNICALL
Java_java_awt_image_DataBufferInt_initIDs
(
JNIEnv
*
env
,
jclass
cls
)
{
Java_java_awt_image_DataBufferInt_initIDs
(
JNIEnv
*
env
,
jclass
cls
)
{
g_DataBufferIntPdataID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"pData"
,
"J"
);
CHECK_NULL
(
g_DataBufferIntPdataID
=
(
*
env
)
->
GetFieldID
(
env
,
cls
,
"pData"
,
"J"
));
if
(
g_DataBufferIntPdataID
==
NULL
)
{
JNU_ThrowNullPointerException
(
env
,
"Unable to grab DataBufferInt.pData"
);
return
;
}
}
}
src/share/native/sun/awt/image/jpeg/imageioJPEG.c
浏览文件 @
f02e7533
/*
/*
* Copyright (c) 2000, 201
3
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 201
4
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
*
* This code is free software; you can redistribute it and/or modify it
* This code is free software; you can redistribute it and/or modify it
...
@@ -153,6 +153,7 @@ static int initStreamBuffer(JNIEnv *env, streamBufferPtr sb) {
...
@@ -153,6 +153,7 @@ static int initStreamBuffer(JNIEnv *env, streamBufferPtr sb) {
/* Initialize a new buffer */
/* Initialize a new buffer */
jbyteArray
hInputBuffer
=
(
*
env
)
->
NewByteArray
(
env
,
STREAMBUF_SIZE
);
jbyteArray
hInputBuffer
=
(
*
env
)
->
NewByteArray
(
env
,
STREAMBUF_SIZE
);
if
(
hInputBuffer
==
NULL
)
{
if
(
hInputBuffer
==
NULL
)
{
(
*
env
)
->
ExceptionClear
(
env
);
JNU_ThrowByName
(
env
,
JNU_ThrowByName
(
env
,
"java/lang/OutOfMemoryError"
,
"java/lang/OutOfMemoryError"
,
"Initializing Reader"
);
"Initializing Reader"
);
...
@@ -557,6 +558,7 @@ sun_jpeg_output_message (j_common_ptr cinfo)
...
@@ -557,6 +558,7 @@ sun_jpeg_output_message (j_common_ptr cinfo)
// Create a new java string from the message
// Create a new java string from the message
string
=
(
*
env
)
->
NewStringUTF
(
env
,
buffer
);
string
=
(
*
env
)
->
NewStringUTF
(
env
,
buffer
);
CHECK_NULL
(
string
);
theObject
=
data
->
imageIOobj
;
theObject
=
data
->
imageIOobj
;
...
@@ -591,12 +593,7 @@ static void imageio_set_stream(JNIEnv *env,
...
@@ -591,12 +593,7 @@ static void imageio_set_stream(JNIEnv *env,
/* Now we need a new weak global reference for the I/O provider */
/* Now we need a new weak global reference for the I/O provider */
if
(
io
!=
NULL
)
{
// Fix for 4411955
if
(
io
!=
NULL
)
{
// Fix for 4411955
sb
->
ioRef
=
(
*
env
)
->
NewWeakGlobalRef
(
env
,
io
);
sb
->
ioRef
=
(
*
env
)
->
NewWeakGlobalRef
(
env
,
io
);
if
(
sb
->
ioRef
==
NULL
)
{
CHECK_NULL
(
sb
->
ioRef
);
JNU_ThrowByName
(
env
,
"java/lang/OutOfMemoryError"
,
"Setting I/O provider"
);
return
;
}
}
}
/* And finally reset state */
/* And finally reset state */
...
@@ -693,6 +690,7 @@ static int setQTables(JNIEnv *env,
...
@@ -693,6 +690,7 @@ static int setQTables(JNIEnv *env,
}
}
for
(
i
=
0
;
i
<
qlen
;
i
++
)
{
for
(
i
=
0
;
i
<
qlen
;
i
++
)
{
table
=
(
*
env
)
->
GetObjectArrayElement
(
env
,
qtables
,
i
);
table
=
(
*
env
)
->
GetObjectArrayElement
(
env
,
qtables
,
i
);
CHECK_NULL_RETURN
(
table
,
0
);
qdata
=
(
*
env
)
->
GetObjectField
(
env
,
table
,
JPEGQTable_tableID
);
qdata
=
(
*
env
)
->
GetObjectField
(
env
,
table
,
JPEGQTable_tableID
);
qdataBody
=
(
*
env
)
->
GetPrimitiveArrayCritical
(
env
,
qdata
,
NULL
);
qdataBody
=
(
*
env
)
->
GetPrimitiveArrayCritical
(
env
,
qdata
,
NULL
);
...
@@ -724,7 +722,7 @@ static int setQTables(JNIEnv *env,
...
@@ -724,7 +722,7 @@ static int setQTables(JNIEnv *env,
return
qlen
;
return
qlen
;
}
}
static
void
setHuffTable
(
JNIEnv
*
env
,
static
boolean
setHuffTable
(
JNIEnv
*
env
,
JHUFF_TBL
*
huff_ptr
,
JHUFF_TBL
*
huff_ptr
,
jobject
table
)
{
jobject
table
)
{
...
@@ -742,6 +740,8 @@ static void setHuffTable(JNIEnv *env,
...
@@ -742,6 +740,8 @@ static void setHuffTable(JNIEnv *env,
hlensBody
=
(
*
env
)
->
GetShortArrayElements
(
env
,
hlensBody
=
(
*
env
)
->
GetShortArrayElements
(
env
,
huffLens
,
huffLens
,
NULL
);
NULL
);
CHECK_NULL_RETURN
(
hlensBody
,
FALSE
);
if
(
hlensLen
>
16
)
{
if
(
hlensLen
>
16
)
{
/* Ignore extra elements of bits array. Only 16 elements can be
/* Ignore extra elements of bits array. Only 16 elements can be
stored. 0-th element is not used. (see jpeglib.h, line 107) */
stored. 0-th element is not used. (see jpeglib.h, line 107) */
...
@@ -762,6 +762,7 @@ static void setHuffTable(JNIEnv *env,
...
@@ -762,6 +762,7 @@ static void setHuffTable(JNIEnv *env,
hvalsBody
=
(
*
env
)
->
GetShortArrayElements
(
env
,
hvalsBody
=
(
*
env
)
->
GetShortArrayElements
(
env
,
huffValues
,
huffValues
,
NULL
);
NULL
);
CHECK_NULL_RETURN
(
hvalsBody
,
FALSE
);
if
(
hvalsLen
>
256
)
{
if
(
hvalsLen
>
256
)
{
/* Ignore extra elements of hufval array. Only 256 elements
/* Ignore extra elements of hufval array. Only 256 elements
...
@@ -775,6 +776,7 @@ static void setHuffTable(JNIEnv *env,
...
@@ -775,6 +776,7 @@ static void setHuffTable(JNIEnv *env,
huffValues
,
huffValues
,
hvalsBody
,
hvalsBody
,
JNI_ABORT
);
JNI_ABORT
);
return
TRUE
;
}
}
static
int
setHTables
(
JNIEnv
*
env
,
static
int
setHTables
(
JNIEnv
*
env
,
...
@@ -810,7 +812,9 @@ static int setHTables(JNIEnv *env,
...
@@ -810,7 +812,9 @@ static int setHTables(JNIEnv *env,
huff_ptr
=
comp
->
dc_huff_tbl_ptrs
[
i
];
huff_ptr
=
comp
->
dc_huff_tbl_ptrs
[
i
];
}
}
table
=
(
*
env
)
->
GetObjectArrayElement
(
env
,
DCHuffmanTables
,
i
);
table
=
(
*
env
)
->
GetObjectArrayElement
(
env
,
DCHuffmanTables
,
i
);
setHuffTable
(
env
,
huff_ptr
,
table
);
if
(
table
==
NULL
||
!
setHuffTable
(
env
,
huff_ptr
,
table
))
{
return
0
;
}
huff_ptr
->
sent_table
=
!
write
;
huff_ptr
->
sent_table
=
!
write
;
}
}
hlen
=
(
*
env
)
->
GetArrayLength
(
env
,
ACHuffmanTables
);
hlen
=
(
*
env
)
->
GetArrayLength
(
env
,
ACHuffmanTables
);
...
@@ -835,7 +839,9 @@ static int setHTables(JNIEnv *env,
...
@@ -835,7 +839,9 @@ static int setHTables(JNIEnv *env,
huff_ptr
=
comp
->
ac_huff_tbl_ptrs
[
i
];
huff_ptr
=
comp
->
ac_huff_tbl_ptrs
[
i
];
}
}
table
=
(
*
env
)
->
GetObjectArrayElement
(
env
,
ACHuffmanTables
,
i
);
table
=
(
*
env
)
->
GetObjectArrayElement
(
env
,
ACHuffmanTables
,
i
);
setHuffTable
(
env
,
huff_ptr
,
table
);
if
(
table
==
NULL
||
!
setHuffTable
(
env
,
huff_ptr
,
table
))
{
return
0
;
}
huff_ptr
->
sent_table
=
!
write
;
huff_ptr
->
sent_table
=
!
write
;
}
}
return
hlen
;
return
hlen
;
...
@@ -1409,57 +1415,57 @@ Java_com_sun_imageio_plugins_jpeg_JPEGImageReader_initReaderIDs
...
@@ -1409,57 +1415,57 @@ Java_com_sun_imageio_plugins_jpeg_JPEGImageReader_initReaderIDs
jclass
qTableClass
,
jclass
qTableClass
,
jclass
huffClass
)
{
jclass
huffClass
)
{
JPEGImageReader_readInputDataID
=
(
*
env
)
->
GetMethodID
(
env
,
CHECK_NULL
(
JPEGImageReader_readInputDataID
=
(
*
env
)
->
GetMethodID
(
env
,
cls
,
cls
,
"readInputData"
,
"readInputData"
,
"([BII)I"
);
"([BII)I"
)
)
;
JPEGImageReader_skipInputBytesID
=
(
*
env
)
->
GetMethodID
(
env
,
CHECK_NULL
(
JPEGImageReader_skipInputBytesID
=
(
*
env
)
->
GetMethodID
(
env
,
cls
,
cls
,
"skipInputBytes"
,
"skipInputBytes"
,
"(J)J"
);
"(J)J"
)
)
;
JPEGImageReader_warningOccurredID
=
(
*
env
)
->
GetMethodID
(
env
,
CHECK_NULL
(
JPEGImageReader_warningOccurredID
=
(
*
env
)
->
GetMethodID
(
env
,
cls
,
cls
,
"warningOccurred"
,
"warningOccurred"
,
"(I)V"
);
"(I)V"
)
)
;
JPEGImageReader_warningWithMessageID
=
CHECK_NULL
(
JPEGImageReader_warningWithMessageID
=
(
*
env
)
->
GetMethodID
(
env
,
(
*
env
)
->
GetMethodID
(
env
,
cls
,
cls
,
"warningWithMessage"
,
"warningWithMessage"
,
"(Ljava/lang/String;)V"
);
"(Ljava/lang/String;)V"
)
)
;
JPEGImageReader_setImageDataID
=
(
*
env
)
->
GetMethodID
(
env
,
CHECK_NULL
(
JPEGImageReader_setImageDataID
=
(
*
env
)
->
GetMethodID
(
env
,
cls
,
cls
,
"setImageData"
,
"setImageData"
,
"(IIIII[B)V"
);
"(IIIII[B)V"
)
)
;
JPEGImageReader_acceptPixelsID
=
(
*
env
)
->
GetMethodID
(
env
,
CHECK_NULL
(
JPEGImageReader_acceptPixelsID
=
(
*
env
)
->
GetMethodID
(
env
,
cls
,
cls
,
"acceptPixels"
,
"acceptPixels"
,
"(IZ)V"
);
"(IZ)V"
)
)
;
JPEGImageReader_passStartedID
=
(
*
env
)
->
GetMethodID
(
env
,
CHECK_NULL
(
JPEGImageReader_passStartedID
=
(
*
env
)
->
GetMethodID
(
env
,
cls
,
cls
,
"passStarted"
,
"passStarted"
,
"(I)V"
);
"(I)V"
)
)
;
JPEGImageReader_passCompleteID
=
(
*
env
)
->
GetMethodID
(
env
,
CHECK_NULL
(
JPEGImageReader_passCompleteID
=
(
*
env
)
->
GetMethodID
(
env
,
cls
,
cls
,
"passComplete"
,
"passComplete"
,
"()V"
);
"()V"
)
)
;
JPEGImageReader_pushBackID
=
(
*
env
)
->
GetMethodID
(
env
,
CHECK_NULL
(
JPEGImageReader_pushBackID
=
(
*
env
)
->
GetMethodID
(
env
,
cls
,
cls
,
"pushBack"
,
"pushBack"
,
"(I)V"
);
"(I)V"
)
)
;
JPEGQTable_tableID
=
(
*
env
)
->
GetFieldID
(
env
,
CHECK_NULL
(
JPEGQTable_tableID
=
(
*
env
)
->
GetFieldID
(
env
,
qTableClass
,
qTableClass
,
"qTable"
,
"qTable"
,
"[I"
);
"[I"
)
)
;
JPEGHuffmanTable_lengthsID
=
(
*
env
)
->
GetFieldID
(
env
,
CHECK_NULL
(
JPEGHuffmanTable_lengthsID
=
(
*
env
)
->
GetFieldID
(
env
,
huffClass
,
huffClass
,
"lengths"
,
"lengths"
,
"[S"
);
"[S"
)
)
;
JPEGHuffmanTable_valuesID
=
(
*
env
)
->
GetFieldID
(
env
,
CHECK_NULL
(
JPEGHuffmanTable_valuesID
=
(
*
env
)
->
GetFieldID
(
env
,
huffClass
,
huffClass
,
"values"
,
"values"
,
"[S"
);
"[S"
)
)
;
}
}
JNIEXPORT
jlong
JNICALL
JNIEXPORT
jlong
JNICALL
...
@@ -1540,9 +1546,9 @@ Java_com_sun_imageio_plugins_jpeg_JPEGImageReader_initJPEGImageReader
...
@@ -1540,9 +1546,9 @@ Java_com_sun_imageio_plugins_jpeg_JPEGImageReader_initJPEGImageReader
/* set up the association to persist for future calls */
/* set up the association to persist for future calls */
ret
=
initImageioData
(
env
,
(
j_common_ptr
)
cinfo
,
this
);
ret
=
initImageioData
(
env
,
(
j_common_ptr
)
cinfo
,
this
);
if
(
ret
==
NULL
)
{
if
(
ret
==
NULL
)
{
JNU_ThrowByName
(
env
,
(
*
env
)
->
ExceptionClear
(
env
);
"java/lang/OutOfMemoryError"
,
JNU_ThrowByName
(
env
,
"java/lang/OutOfMemoryError"
,
"Initializing Reader"
);
"Initializing Reader"
);
imageio_dispose
((
j_common_ptr
)
cinfo
);
imageio_dispose
((
j_common_ptr
)
cinfo
);
return
0
;
return
0
;
}
}
...
@@ -1637,6 +1643,7 @@ Java_com_sun_imageio_plugins_jpeg_JPEGImageReader_readImageHeader
...
@@ -1637,6 +1643,7 @@ Java_com_sun_imageio_plugins_jpeg_JPEGImageReader_readImageHeader
#endif
#endif
if
(
GET_ARRAYS
(
env
,
data
,
&
src
->
next_input_byte
)
==
NOT_OK
)
{
if
(
GET_ARRAYS
(
env
,
data
,
&
src
->
next_input_byte
)
==
NOT_OK
)
{
(
*
env
)
->
ExceptionClear
(
env
);
JNU_ThrowByName
(
env
,
JNU_ThrowByName
(
env
,
"javax/imageio/IIOException"
,
"javax/imageio/IIOException"
,
"Array pin failed"
);
"Array pin failed"
);
...
@@ -1900,6 +1907,7 @@ Java_com_sun_imageio_plugins_jpeg_JPEGImageReader_readImage
...
@@ -1900,6 +1907,7 @@ Java_com_sun_imageio_plugins_jpeg_JPEGImageReader_readImage
body
=
(
*
env
)
->
GetIntArrayElements
(
env
,
srcBands
,
NULL
);
body
=
(
*
env
)
->
GetIntArrayElements
(
env
,
srcBands
,
NULL
);
if
(
body
==
NULL
)
{
if
(
body
==
NULL
)
{
(
*
env
)
->
ExceptionClear
(
env
);
JNU_ThrowByName
(
env
,
JNU_ThrowByName
(
env
,
"java/lang/OutOfMemoryError"
,
"java/lang/OutOfMemoryError"
,
"Initializing Read"
);
"Initializing Read"
);
...
@@ -1958,6 +1966,7 @@ Java_com_sun_imageio_plugins_jpeg_JPEGImageReader_readImage
...
@@ -1958,6 +1966,7 @@ Java_com_sun_imageio_plugins_jpeg_JPEGImageReader_readImage
}
}
if
(
GET_ARRAYS
(
env
,
data
,
&
src
->
next_input_byte
)
==
NOT_OK
)
{
if
(
GET_ARRAYS
(
env
,
data
,
&
src
->
next_input_byte
)
==
NOT_OK
)
{
(
*
env
)
->
ExceptionClear
(
env
);
JNU_ThrowByName
(
env
,
JNU_ThrowByName
(
env
,
"javax/imageio/IIOException"
,
"javax/imageio/IIOException"
,
"Array pin failed"
);
"Array pin failed"
);
...
@@ -2403,44 +2412,39 @@ Java_com_sun_imageio_plugins_jpeg_JPEGImageWriter_initWriterIDs
...
@@ -2403,44 +2412,39 @@ Java_com_sun_imageio_plugins_jpeg_JPEGImageWriter_initWriterIDs
jclass
qTableClass
,
jclass
qTableClass
,
jclass
huffClass
)
{
jclass
huffClass
)
{
JPEGImageWriter_writeOutputDataID
=
(
*
env
)
->
GetMethodID
(
env
,
CHECK_NULL
(
JPEGImageWriter_writeOutputDataID
=
(
*
env
)
->
GetMethodID
(
env
,
cls
,
cls
,
"writeOutputData"
,
"writeOutputData"
,
"([BII)V"
);
"([BII)V"
));
CHECK_NULL
(
JPEGImageWriter_warningOccurredID
=
(
*
env
)
->
GetMethodID
(
env
,
JPEGImageWriter_warningOccurredID
=
(
*
env
)
->
GetMethodID
(
env
,
cls
,
cls
,
"warningOccurred"
,
"warningOccurred"
,
"(I)V"
);
"(I)V"
));
JPEGImageWriter_warningWithMessageID
=
CHECK_NULL
(
JPEGImageWriter_warningWithMessageID
=
(
*
env
)
->
GetMethodID
(
env
,
(
*
env
)
->
GetMethodID
(
env
,
cls
,
cls
,
"warningWithMessage"
,
"warningWithMessage"
,
"(Ljava/lang/String;)V"
);
"(Ljava/lang/String;)V"
));
CHECK_NULL
(
JPEGImageWriter_writeMetadataID
=
(
*
env
)
->
GetMethodID
(
env
,
JPEGImageWriter_writeMetadataID
=
(
*
env
)
->
GetMethodID
(
env
,
cls
,
cls
,
"writeMetadata"
,
"writeMetadata"
,
"()V"
);
"()V"
)
)
;
JPEGImageWriter_grabPixelsID
=
(
*
env
)
->
GetMethodID
(
env
,
CHECK_NULL
(
JPEGImageWriter_grabPixelsID
=
(
*
env
)
->
GetMethodID
(
env
,
cls
,
cls
,
"grabPixels"
,
"grabPixels"
,
"(I)V"
);
"(I)V"
));
CHECK_NULL
(
JPEGQTable_tableID
=
(
*
env
)
->
GetFieldID
(
env
,
JPEGQTable_tableID
=
(
*
env
)
->
GetFieldID
(
env
,
qTableClass
,
qTableClass
,
"qTable"
,
"qTable"
,
"[I"
);
"[I"
));
CHECK_NULL
(
JPEGHuffmanTable_lengthsID
=
(
*
env
)
->
GetFieldID
(
env
,
JPEGHuffmanTable_lengthsID
=
(
*
env
)
->
GetFieldID
(
env
,
huffClass
,
huffClass
,
"lengths"
,
"lengths"
,
"[S"
);
"[S"
));
CHECK_NULL
(
JPEGHuffmanTable_valuesID
=
(
*
env
)
->
GetFieldID
(
env
,
JPEGHuffmanTable_valuesID
=
(
*
env
)
->
GetFieldID
(
env
,
huffClass
,
huffClass
,
"values"
,
"values"
,
"[S"
);
"[S"
)
)
;
}
}
JNIEXPORT
jlong
JNICALL
JNIEXPORT
jlong
JNICALL
...
@@ -2516,6 +2520,7 @@ Java_com_sun_imageio_plugins_jpeg_JPEGImageWriter_initJPEGImageWriter
...
@@ -2516,6 +2520,7 @@ Java_com_sun_imageio_plugins_jpeg_JPEGImageWriter_initJPEGImageWriter
/* set up the association to persist for future calls */
/* set up the association to persist for future calls */
ret
=
initImageioData
(
env
,
(
j_common_ptr
)
cinfo
,
this
);
ret
=
initImageioData
(
env
,
(
j_common_ptr
)
cinfo
,
this
);
if
(
ret
==
NULL
)
{
if
(
ret
==
NULL
)
{
(
*
env
)
->
ExceptionClear
(
env
);
JNU_ThrowByName
(
env
,
JNU_ThrowByName
(
env
,
"java/lang/OutOfMemoryError"
,
"java/lang/OutOfMemoryError"
,
"Initializing Writer"
);
"Initializing Writer"
);
...
@@ -2593,6 +2598,7 @@ Java_com_sun_imageio_plugins_jpeg_JPEGImageWriter_writeTables
...
@@ -2593,6 +2598,7 @@ Java_com_sun_imageio_plugins_jpeg_JPEGImageWriter_writeTables
if
(
GET_ARRAYS
(
env
,
data
,
if
(
GET_ARRAYS
(
env
,
data
,
(
const
JOCTET
**
)(
&
dest
->
next_output_byte
))
==
NOT_OK
)
{
(
const
JOCTET
**
)(
&
dest
->
next_output_byte
))
==
NOT_OK
)
{
(
*
env
)
->
ExceptionClear
(
env
);
JNU_ThrowByName
(
env
,
JNU_ThrowByName
(
env
,
"javax/imageio/IIOException"
,
"javax/imageio/IIOException"
,
"Array pin failed"
);
"Array pin failed"
);
...
@@ -2664,6 +2670,7 @@ Java_com_sun_imageio_plugins_jpeg_JPEGImageWriter_writeImage
...
@@ -2664,6 +2670,7 @@ Java_com_sun_imageio_plugins_jpeg_JPEGImageWriter_writeImage
imageIODataPtr
data
=
(
imageIODataPtr
)
jlong_to_ptr
(
ptr
);
imageIODataPtr
data
=
(
imageIODataPtr
)
jlong_to_ptr
(
ptr
);
j_compress_ptr
cinfo
;
j_compress_ptr
cinfo
;
UINT8
**
scale
=
NULL
;
UINT8
**
scale
=
NULL
;
boolean
success
=
TRUE
;
/* verify the inputs */
/* verify the inputs */
...
@@ -2708,13 +2715,14 @@ Java_com_sun_imageio_plugins_jpeg_JPEGImageWriter_writeImage
...
@@ -2708,13 +2715,14 @@ Java_com_sun_imageio_plugins_jpeg_JPEGImageWriter_writeImage
}
}
bandSize
=
(
*
env
)
->
GetIntArrayElements
(
env
,
bandSizes
,
NULL
);
bandSize
=
(
*
env
)
->
GetIntArrayElements
(
env
,
bandSizes
,
NULL
);
CHECK_NULL_RETURN
(
bandSize
,
JNI_FALSE
);
for
(
i
=
0
;
i
<
numBands
;
i
++
)
{
for
(
i
=
0
;
i
<
numBands
;
i
++
)
{
if
(
bandSize
[
i
]
<=
0
||
bandSize
[
i
]
>
JPEG_BAND_SIZE
)
{
if
(
bandSize
[
i
]
<=
0
||
bandSize
[
i
]
>
JPEG_BAND_SIZE
)
{
(
*
env
)
->
ReleaseIntArrayElements
(
env
,
bandSizes
,
(
*
env
)
->
ReleaseIntArrayElements
(
env
,
bandSizes
,
bandSize
,
JNI_ABORT
);
bandSize
,
JNI_ABORT
);
JNU_ThrowByName
(
env
,
"javax/imageio/IIOException"
,
"Invalid Image"
);
JNU_ThrowByName
(
env
,
"javax/imageio/IIOException"
,
"Invalid Image"
);
return
JNI_FALSE
;
;
return
JNI_FALSE
;
}
}
}
}
...
@@ -2825,30 +2833,30 @@ Java_com_sun_imageio_plugins_jpeg_JPEGImageWriter_writeImage
...
@@ -2825,30 +2833,30 @@ Java_com_sun_imageio_plugins_jpeg_JPEGImageWriter_writeImage
vfactors
=
(
*
env
)
->
GetIntArrayElements
(
env
,
VsamplingFactors
,
NULL
);
vfactors
=
(
*
env
)
->
GetIntArrayElements
(
env
,
VsamplingFactors
,
NULL
);
qsels
=
(
*
env
)
->
GetIntArrayElements
(
env
,
QtableSelectors
,
NULL
);
qsels
=
(
*
env
)
->
GetIntArrayElements
(
env
,
QtableSelectors
,
NULL
);
if
((
ids
==
NULL
)
||
if
(
ids
&&
hfactors
&&
vfactors
&&
qsels
)
{
(
hfactors
==
NULL
)
||
(
vfactors
==
NULL
)
||
for
(
i
=
0
;
i
<
numBands
;
i
++
)
{
(
qsels
==
NULL
))
{
cinfo
->
comp_info
[
i
].
component_id
=
ids
[
i
];
JNU_ThrowByName
(
env
,
cinfo
->
comp_info
[
i
].
h_samp_factor
=
hfactors
[
i
];
"java/lang/OutOfMemoryError"
,
cinfo
->
comp_info
[
i
].
v_samp_factor
=
vfactors
[
i
];
"Writing JPEG"
);
cinfo
->
comp_info
[
i
].
quant_tbl_no
=
qsels
[
i
];
return
JNI_FALSE
;
}
}
else
{
success
=
FALSE
;
}
}
for
(
i
=
0
;
i
<
numBands
;
i
++
)
{
if
(
ids
)
{
cinfo
->
comp_info
[
i
].
component_id
=
ids
[
i
];
(
*
env
)
->
ReleaseIntArrayElements
(
env
,
componentIds
,
ids
,
JNI_ABORT
);
cinfo
->
comp_info
[
i
].
h_samp_factor
=
hfactors
[
i
];
cinfo
->
comp_info
[
i
].
v_samp_factor
=
vfactors
[
i
];
cinfo
->
comp_info
[
i
].
quant_tbl_no
=
qsels
[
i
];
}
}
if
(
hfactors
)
{
(
*
env
)
->
ReleaseIntArrayElements
(
env
,
componentIds
,
(
*
env
)
->
ReleaseIntArrayElements
(
env
,
HsamplingFactors
,
hfactors
,
JNI_ABORT
);
ids
,
JNI_ABORT
);
}
(
*
env
)
->
ReleaseIntArrayElements
(
env
,
HsamplingFactors
,
if
(
vfactors
)
{
hfactors
,
JNI_ABORT
);
(
*
env
)
->
ReleaseIntArrayElements
(
env
,
VsamplingFactors
,
vfactors
,
JNI_ABORT
);
(
*
env
)
->
ReleaseIntArrayElements
(
env
,
VsamplingFactors
,
}
vfactors
,
JNI_ABORT
);
if
(
qsels
)
{
(
*
env
)
->
ReleaseIntArrayElements
(
env
,
QtableSelectors
,
(
*
env
)
->
ReleaseIntArrayElements
(
env
,
QtableSelectors
,
qsels
,
JNI_ABORT
);
qsels
,
JNI_ABORT
);
}
if
(
!
success
)
return
data
->
abortFlag
;
jpeg_suppress_tables
(
cinfo
,
TRUE
);
// Disable writing any current
jpeg_suppress_tables
(
cinfo
,
TRUE
);
// Disable writing any current
...
@@ -2865,6 +2873,7 @@ Java_com_sun_imageio_plugins_jpeg_JPEGImageWriter_writeImage
...
@@ -2865,6 +2873,7 @@ Java_com_sun_imageio_plugins_jpeg_JPEGImageWriter_writeImage
if
(
GET_ARRAYS
(
env
,
data
,
if
(
GET_ARRAYS
(
env
,
data
,
(
const
JOCTET
**
)(
&
dest
->
next_output_byte
))
==
NOT_OK
)
{
(
const
JOCTET
**
)(
&
dest
->
next_output_byte
))
==
NOT_OK
)
{
(
*
env
)
->
ExceptionClear
(
env
);
JNU_ThrowByName
(
env
,
JNU_ThrowByName
(
env
,
"javax/imageio/IIOException"
,
"javax/imageio/IIOException"
,
"Array pin failed"
);
"Array pin failed"
);
...
@@ -2899,6 +2908,7 @@ Java_com_sun_imageio_plugins_jpeg_JPEGImageWriter_writeImage
...
@@ -2899,6 +2908,7 @@ Java_com_sun_imageio_plugins_jpeg_JPEGImageWriter_writeImage
cinfo
->
scan_info
=
cinfo
->
script_space
;
cinfo
->
scan_info
=
cinfo
->
script_space
;
scanptr
=
(
int
*
)
cinfo
->
script_space
;
scanptr
=
(
int
*
)
cinfo
->
script_space
;
scanData
=
(
*
env
)
->
GetIntArrayElements
(
env
,
scanInfo
,
NULL
);
scanData
=
(
*
env
)
->
GetIntArrayElements
(
env
,
scanInfo
,
NULL
);
CHECK_NULL_RETURN
(
scanData
,
data
->
abortFlag
);
// number of jints per scan is 9
// number of jints per scan is 9
// We avoid a memcpy to handle different size ints
// We avoid a memcpy to handle different size ints
for
(
i
=
0
;
i
<
numScans
*
9
;
i
++
)
{
for
(
i
=
0
;
i
<
numScans
*
9
;
i
++
)
{
...
...
src/share/native/sun/awt/image/jpeg/jpegdecoder.c
浏览文件 @
f02e7533
/*
/*
* Copyright (c) 1995, 201
3
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1995, 201
4
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
*
* This code is free software; you can redistribute it and/or modify it
* This code is free software; you can redistribute it and/or modify it
...
@@ -465,14 +465,14 @@ JNIEXPORT void JNICALL
...
@@ -465,14 +465,14 @@ JNIEXPORT void JNICALL
Java_sun_awt_image_JPEGImageDecoder_initIDs
(
JNIEnv
*
env
,
jclass
cls
,
Java_sun_awt_image_JPEGImageDecoder_initIDs
(
JNIEnv
*
env
,
jclass
cls
,
jclass
InputStreamClass
)
jclass
InputStreamClass
)
{
{
sendHeaderInfoID
=
(
*
env
)
->
GetMethodID
(
env
,
cls
,
"sendHeaderInfo"
,
CHECK_NULL
(
sendHeaderInfoID
=
(
*
env
)
->
GetMethodID
(
env
,
cls
,
"sendHeaderInfo"
,
"(IIZZZ)Z"
);
"(IIZZZ)Z"
)
)
;
sendPixelsByteID
=
(
*
env
)
->
GetMethodID
(
env
,
cls
,
"sendPixels"
,
"([BI)Z"
);
CHECK_NULL
(
sendPixelsByteID
=
(
*
env
)
->
GetMethodID
(
env
,
cls
,
"sendPixels"
,
"([BI)Z"
)
);
sendPixelsIntID
=
(
*
env
)
->
GetMethodID
(
env
,
cls
,
"sendPixels"
,
"([II)Z"
);
CHECK_NULL
(
sendPixelsIntID
=
(
*
env
)
->
GetMethodID
(
env
,
cls
,
"sendPixels"
,
"([II)Z"
)
);
InputStream_readID
=
(
*
env
)
->
GetMethodID
(
env
,
InputStreamClass
,
CHECK_NULL
(
InputStream_readID
=
(
*
env
)
->
GetMethodID
(
env
,
InputStreamClass
,
"read"
,
"([BII)I"
);
"read"
,
"([BII)I"
)
)
;
InputStream_availableID
=
(
*
env
)
->
GetMethodID
(
env
,
InputStreamClass
,
CHECK_NULL
(
InputStream_availableID
=
(
*
env
)
->
GetMethodID
(
env
,
InputStreamClass
,
"available"
,
"()I"
);
"available"
,
"()I"
)
)
;
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录