mirror of
https://github.com/JetBrains/JetBrainsRuntime.git
synced 2025-12-12 12:29:41 +01:00
Compare commits
32 Commits
ui-touch-t
...
670
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7354925566 | ||
|
|
3368768244 | ||
|
|
bd56abc4c3 | ||
|
|
7be5045cbb | ||
|
|
5e0a9f5993 | ||
|
|
915d369d98 | ||
|
|
7d65accaf6 | ||
|
|
78363232b3 | ||
|
|
8fb2341ea8 | ||
|
|
3a79870da8 | ||
|
|
2adf5275f1 | ||
|
|
bfa2d814f8 | ||
|
|
4f44b37f08 | ||
|
|
36e8544049 | ||
|
|
bc0d725f0e | ||
|
|
4858f29ec5 | ||
|
|
31d8ae741b | ||
|
|
7ce0f79561 | ||
|
|
18d2a918c0 | ||
|
|
7ae706b629 | ||
|
|
cf997f71c6 | ||
|
|
308f7ecb12 | ||
|
|
418d5fd97e | ||
|
|
788e078f64 | ||
|
|
9094054cdc | ||
|
|
09eabbd567 | ||
|
|
a00074a86c | ||
|
|
7852ae4321 | ||
|
|
7546a15bf6 | ||
|
|
c00e904304 | ||
|
|
c8ad353f45 | ||
|
|
57162c91c3 |
7
jb/project/docker/Dockerfile.x86
Normal file
7
jb/project/docker/Dockerfile.x86
Normal file
@@ -0,0 +1,7 @@
|
||||
FROM i386/ubuntu:xenial
|
||||
|
||||
RUN linux32 apt-get update && apt-get install -y --no-install-recommends apt-utils
|
||||
COPY jbrsdk-11.0.5-b1 /jbrsdk-11.0.5-b1
|
||||
RUN linux32 apt-get -y install file build-essential zip unzip curl libx11-dev libxext-dev \
|
||||
libxrender-dev libxrandr-dev libxtst-dev libxt-dev libcups2-dev libasound2-data \
|
||||
libpng12-0 libasound2 libfreetype6 libfontconfig1-dev libasound2-dev autoconf
|
||||
@@ -192,16 +192,19 @@ set(SOURCE_FILES
|
||||
../../../src/java.desktop/share/native/libfreetype/include/freetype/fttypes.h
|
||||
../../../src/java.desktop/share/native/libfreetype/include/freetype/ftparams.h
|
||||
../../../src/java.desktop/share/native/libfreetype/include/freetype/ftmm.h
|
||||
../../../src/java.desktop/share/native/libfreetype/include/freetype/config
|
||||
../../../src/java.desktop/share/native/libfreetype/include/freetype/config/ftstdlib.h
|
||||
../../../src/java.desktop/share/native/libfreetype/include/freetype/config/ftheader.h
|
||||
../../../src/java.desktop/share/native/libfreetype/include/freetype/config/ftconfig.h
|
||||
../../../src/java.desktop/share/native/libfreetype/include/freetype/config/ftoption.h
|
||||
../../../src/java.desktop/share/native/libfreetype/include/freetype/config/ftmodule.h
|
||||
../../../src/java.desktop/share/native/libfreetype/include/freetype/ftcolor.h
|
||||
../../../src/java.desktop/share/native/libfreetype/include/freetype/ftmodapi.h
|
||||
../../../src/java.desktop/share/native/libfreetype/include/freetype/fttrigon.h
|
||||
../../../src/java.desktop/share/native/libfreetype/include/freetype/ftbbox.h
|
||||
../../../src/java.desktop/share/native/libfreetype/include/freetype/ftgzip.h
|
||||
../../../src/java.desktop/share/native/libfreetype/include/freetype/ftdriver.h
|
||||
../../../src/java.desktop/share/native/libfreetype/include/freetype/internal
|
||||
../../../src/java.desktop/share/native/libfreetype/include/freetype/internal/sfnt.h
|
||||
../../../src/java.desktop/share/native/libfreetype/include/freetype/internal/internal.h
|
||||
../../../src/java.desktop/share/native/libfreetype/include/freetype/internal/ftdrv.h
|
||||
@@ -216,13 +219,13 @@ set(SOURCE_FILES
|
||||
../../../src/java.desktop/share/native/libfreetype/include/freetype/internal/tttypes.h
|
||||
../../../src/java.desktop/share/native/libfreetype/include/freetype/internal/ftvalid.h
|
||||
../../../src/java.desktop/share/native/libfreetype/include/freetype/internal/ftobjs.h
|
||||
../../../src/java.desktop/share/native/libfreetype/include/freetype/internal/ftpic.h
|
||||
../../../src/java.desktop/share/native/libfreetype/include/freetype/internal/fttrace.h
|
||||
../../../src/java.desktop/share/native/libfreetype/include/freetype/internal/ftmemory.h
|
||||
../../../src/java.desktop/share/native/libfreetype/include/freetype/internal/fthash.h
|
||||
../../../src/java.desktop/share/native/libfreetype/include/freetype/internal/ftgloadr.h
|
||||
../../../src/java.desktop/share/native/libfreetype/include/freetype/internal/ftpsprop.h
|
||||
../../../src/java.desktop/share/native/libfreetype/include/freetype/internal/ftserv.h
|
||||
../../../src/java.desktop/share/native/libfreetype/include/freetype/internal/services
|
||||
../../../src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svprop.h
|
||||
../../../src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svmm.h
|
||||
../../../src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svcfftl.h
|
||||
@@ -272,6 +275,8 @@ set(SOURCE_FILES
|
||||
../../../src/java.desktop/share/native/libfreetype/include/freetype/ftbdf.h
|
||||
../../../src/java.desktop/share/native/libfreetype/include/freetype/ftrender.h
|
||||
../../../src/java.desktop/share/native/libfreetype/include/ft2build.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src
|
||||
../../../src/java.desktop/share/native/libfreetype/src/type1
|
||||
../../../src/java.desktop/share/native/libfreetype/src/type1/t1objs.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/type1/t1load.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/type1/t1afm.h
|
||||
@@ -286,40 +291,42 @@ set(SOURCE_FILES
|
||||
../../../src/java.desktop/share/native/libfreetype/src/type1/t1driver.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/type1/t1parse.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/type1/t1gload.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/sfnt
|
||||
../../../src/java.desktop/share/native/libfreetype/src/sfnt/sfobjs.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/sfnt/ttcmap.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/sfnt/ttpost.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/sfnt/sfntpic.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/sfnt/ttkern.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/sfnt/ttcolr.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/sfnt/pngshim.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/sfnt/ttmtx.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/sfnt/ttload.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/sfnt/sfdriver.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/sfnt/ttsbit.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/sfnt/ttcmapc.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/sfnt/ttcpal.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/sfnt/ttkern.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/sfnt/ttpost.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/sfnt/sfntpic.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/sfnt/sfobjs.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/sfnt/ttcmap.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/sfnt/ttmtx.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/sfnt/pngshim.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/sfnt/ttcolr.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/sfnt/ttsbit.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/sfnt/sfdriver.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/sfnt/ttload.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/sfnt/sferrors.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/sfnt/ttcpal.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/smooth
|
||||
../../../src/java.desktop/share/native/libfreetype/src/smooth/ftgrays.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/smooth/ftsmooth.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/smooth/ftspic.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/smooth/ftsmerrs.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/smooth/ftgrays.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/smooth/ftspic.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/smooth/ftsmooth.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/cff
|
||||
../../../src/java.desktop/share/native/libfreetype/src/cff/cffload.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/cff/cffgload.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/cff/cffobjs.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/cff/cffparse.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/cff/cffpic.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/cff/cffcmap.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/cff/cffdrivr.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/cff/cffparse.c
|
||||
@@ -327,10 +334,10 @@ set(SOURCE_FILES
|
||||
../../../src/java.desktop/share/native/libfreetype/src/cff/cffobjs.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/cff/cffgload.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/cff/cffload.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/cff/cffpic.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/cff/cffdrivr.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/cff/cffcmap.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/cff/cfferrs.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/psaux
|
||||
../../../src/java.desktop/share/native/libfreetype/src/psaux/psarrst.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/psaux/psstack.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/psaux/cffdecode.h
|
||||
@@ -367,6 +374,7 @@ set(SOURCE_FILES
|
||||
../../../src/java.desktop/share/native/libfreetype/src/psaux/afmparse.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/psaux/psauxmod.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/psaux/psread.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/cid
|
||||
../../../src/java.desktop/share/native/libfreetype/src/cid/cidtoken.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/cid/cidriver.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/cid/cidparse.c
|
||||
@@ -379,11 +387,12 @@ set(SOURCE_FILES
|
||||
../../../src/java.desktop/share/native/libfreetype/src/cid/cidparse.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/cid/cidobjs.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/cid/cidload.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/autofit
|
||||
../../../src/java.desktop/share/native/libfreetype/src/autofit/afindic.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/autofit/afdummy.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/autofit/afmodule.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/autofit/afwarp.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/autofit/afpic.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/autofit/afblue.cin
|
||||
../../../src/java.desktop/share/native/libfreetype/src/autofit/afglobal.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/autofit/afcover.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/autofit/afwrtsys.h
|
||||
@@ -396,10 +405,10 @@ set(SOURCE_FILES
|
||||
../../../src/java.desktop/share/native/libfreetype/src/autofit/afranges.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/autofit/afcjk.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/autofit/afstyles.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/autofit/afblue.dat
|
||||
../../../src/java.desktop/share/native/libfreetype/src/autofit/aferrors.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/autofit/afdummy.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/autofit/afindic.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/autofit/afpic.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/autofit/afglobal.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/autofit/afwarp.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/autofit/afmodule.c
|
||||
@@ -409,64 +418,58 @@ set(SOURCE_FILES
|
||||
../../../src/java.desktop/share/native/libfreetype/src/autofit/aftypes.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/autofit/afcjk.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/autofit/afranges.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/autofit/afblue.hin
|
||||
../../../src/java.desktop/share/native/libfreetype/src/autofit/afloader.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/autofit/aflatin.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/autofit/afangles.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/autofit/afhints.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/pshinter
|
||||
../../../src/java.desktop/share/native/libfreetype/src/pshinter/pshmod.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/pshinter/pshrec.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/pshinter/pshpic.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/pshinter/pshglob.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/pshinter/pshalgo.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/pshinter/pshmod.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/pshinter/pshnterr.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/pshinter/pshpic.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/pshinter/pshrec.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/pshinter/pshalgo.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/pshinter/pshglob.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/truetype
|
||||
../../../src/java.desktop/share/native/libfreetype/src/truetype/ttinterp.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/truetype/ttpload.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/truetype/ttgxvar.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/truetype/ttsubpix.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/truetype/tterrors.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/truetype/ttdriver.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/truetype/ttpic.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/truetype/ttobjs.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/truetype/ttgload.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/truetype/ttgxvar.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/truetype/ttpload.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/truetype/ttinterp.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/truetype/ttpic.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/truetype/ttdriver.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/truetype/ttsubpix.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/truetype/ttobjs.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/truetype/ttgload.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/raster
|
||||
../../../src/java.desktop/share/native/libfreetype/src/raster/ftmisc.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/raster/rasterrs.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/raster/rastpic.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/raster/ftrend1.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/raster/ftraster.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/raster/rastpic.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/raster/ftraster.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/raster/ftrend1.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/psnames
|
||||
../../../src/java.desktop/share/native/libfreetype/src/psnames/psnamerr.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/psnames/psmodule.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/psnames/pspic.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/psnames/pstables.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/psnames/psmodule.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/psnames/pspic.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/base
|
||||
../../../src/java.desktop/share/native/libfreetype/src/base/ftobjs.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/base/ftfntfmt.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/base/ftinit.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/base/ftapi.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/base/ftdbgmem.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/base/fthash.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/base/basepic.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/base/ftpic.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/base/ftbitmap.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/base/ftpsprop.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/base/ftcid.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/base/md5.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/base/ftglyph.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/base/ftgloadr.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/base/ftsystem.c
|
||||
@@ -480,11 +483,9 @@ set(SOURCE_FILES
|
||||
../../../src/java.desktop/share/native/libfreetype/src/base/ftsnames.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/base/ftdebug.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/base/ftmm.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/base/basepic.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/base/ftbase.h
|
||||
../../../src/java.desktop/share/native/libfreetype/src/base/ftfstype.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/base/fttrigon.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/base/md5.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/base/ftbbox.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/base/ftstroke.c
|
||||
../../../src/java.desktop/share/native/libfreetype/src/base/ftgasp.c
|
||||
@@ -742,38 +743,214 @@ set(SOURCE_FILES
|
||||
../../../src/java.desktop/share/native/libjavajpeg/jidctred.c
|
||||
../../../src/java.desktop/share/native/libjavajpeg/jpegint.h
|
||||
../../../src/java.desktop/share/native/libjavajpeg/jdpostct.c
|
||||
../../../src/java.desktop/share/native/libfontmanager
|
||||
../../../src/java.desktop/share/native/libfontmanager/DrawGlyphList.c
|
||||
../../../src/java.desktop/share/native/libfontmanager/HBShaper.c
|
||||
../../../src/java.desktop/share/native/libfontmanager/scriptMapping.c
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-buffer.h
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-aat-fdsc-table.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-post-table.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-indic-machine.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-open-type.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-subset-plan.cc
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-aat-layout-common.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-use-machine.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-layout-base-table.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-head-table.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-set.h
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-coretext.cc
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-arabic-win1256.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-khmer.cc
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-shaper-list.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-face.h
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-buffer.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-var.cc
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-cff-interp-common.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-map.cc
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-post-macroman.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-fallback.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-common.h
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-deprecated.h
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-blob.cc
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-subset.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-normalize.cc
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-unicode.cc
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-version.h
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-stat-table.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-name-language.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-aat-ltag-table.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-aat.h
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-font.h
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-color.cc
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-cff-interp-cs-common.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-kern.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-subset-cff-common.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-default.cc
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-face.cc
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-coretext.h
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-tag.h
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-cff1-table.cc
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-aat-layout-just-table.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-color-colr-table.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-deprecated.h
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-subset-cff1.cc
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-arabic-table.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-aat-layout-kerx-table.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-vorg-table.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-blob.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-font.cc
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-unicode.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-indic-table.cc
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-kern-table.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-subset.cc
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-normalize.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-common.cc
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-buffer-serialize.cc
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-name-language.cc
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-layout-gpos-table.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-var-avar-table.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-subset-cff-common.cc
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-fallback-shape.cc
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot.h
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-cff1-table.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-face.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-string-array.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-layout.h
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-subset-cff1.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-aat-layout-lcar-table.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-var-hvar-table.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-layout-gsubgpos.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-var.h
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-atomic.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-static.cc
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ucdn
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ucdn/ucdn.c
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ucdn/ucdn.h
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ucdn/ucdn_db.h
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-aat-layout-morx-table.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-cff2-interp-cs.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ucdn.cc
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-khmer-machine.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-name.h
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-thai.cc
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-hhea-table.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-var-mvar-table.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-shape.h
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-tag.cc
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-subset-plan.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-os2-unicode-ranges.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-warning.cc
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-hdmx-table.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-khmer.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ft.cc
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-cff-common.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-layout-gdef-table.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-glyf-table.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-fallback.cc
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-buffer.cc
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-map.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-subset-glyf.cc
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-name-table.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-set.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-color.h
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-cff2-table.cc
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-shape-plan.h
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-shape-plan.cc
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-font.h
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-use.cc
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-color-sbix-table.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-indic.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-unicode.h
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-unicode-emoji-table.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-aat-layout-feat-table.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-object.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-myanmar.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-gasp-table.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-arabic.cc
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-buffer-deserialize-json.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape.h
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-vector.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-myanmar-machine.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-arabic-fallback.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-debug.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-tag-table.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-vowel-constraints.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-shaper.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-aat-layout.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-iter.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-blob.h
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-layout.cc
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-face.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-aat-layout-trak-table.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-cff1-interp-cs.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-hmtx-table.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-aat-layout-ankr-table.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape.cc
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-cff-interp-dict-common.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-aat-map.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-layout-common.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-subset-input.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-color-cbdt-table.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-color-cpal-table.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-subset-cff2.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-utf.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-hebrew.cc
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-map.cc
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-var-fvar-table.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-font.cc
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-map.h
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb.h
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-shaper.cc
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-layout-jstf-table.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-aat-layout.cc
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-mutex.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-os2-table.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-face.cc
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-layout.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-layout-gsub-table.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-aat-layout.h
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-subset-input.cc
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-math-table.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-cmap-table.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-aat-layout-bsln-table.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-aat-map.cc
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-font.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-maxp-table.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-buffer-deserialize-text.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-map.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-subset-cff2.cc
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-array.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-set.cc
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-shape-plan.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-shape.cc
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-hangul.cc
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-null.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-cff2-table.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-name.cc
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-subset-glyf.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-set-digest.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-indic.cc
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-open-file.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-machinery.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-myanmar.cc
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-subset.h
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-color-svg-table.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-use.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-dsalgs.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-use-table.cc
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-math.h
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-math.cc
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ft.h
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-arabic.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-vowel-constraints.cc
|
||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-shaper-impl.hh
|
||||
../../../src/java.desktop/share/native/libfontmanager/glyphblitting.h
|
||||
../../../src/java.desktop/share/native/libfontmanager/hb-jdk.h
|
||||
../../../src/java.desktop/share/native/libfontmanager/fontconfig.h
|
||||
../../../src/java.desktop/share/native/libfontmanager/hb-jdk-font.cc
|
||||
../../../src/java.desktop/share/native/libfontmanager/freetypeScaler.c
|
||||
../../../src/java.desktop/share/native/libfontmanager/scriptMapping.h
|
||||
../../../src/java.desktop/share/native/libfontmanager/ColorGlyphSurfaceData.c
|
||||
@@ -1149,10 +1326,8 @@ if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin" OR ${CMAKE_SYSTEM_NAME} MATCHES "Linux"
|
||||
../../../src/java.desktop/unix/native/libawt/awt/awt_Mlib.c
|
||||
../../../src/java.desktop/unix/native/libawt/awt/awt_LoadLibrary.c
|
||||
../../../src/java.desktop/unix/native/libawt/awt/initIDs.c
|
||||
../../../src/java.desktop/unix/native/libawt_xawt/java2d/x11/XRBackendNative.c
|
||||
../../../src/java.desktop/unix/native/libawt_xawt/java2d/x11/XRSurfaceData.c
|
||||
../../../src/java.desktop/unix/native/libawt_xawt/awt
|
||||
../../../src/java.desktop/unix/native/libawt_xawt/awt/gtk2_interface.c
|
||||
../../../src/java.desktop/unix/native/libawt_xawt/awt/randr.h
|
||||
../../../src/java.desktop/unix/native/libawt_xawt/awt/list.c
|
||||
../../../src/java.desktop/unix/native/libawt_xawt/awt/awt_DrawingSurface.c
|
||||
../../../src/java.desktop/unix/native/libawt_xawt/awt/swing_GTKStyle.c
|
||||
@@ -1167,7 +1342,6 @@ if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin" OR ${CMAKE_SYSTEM_NAME} MATCHES "Linux"
|
||||
../../../src/java.desktop/unix/native/libawt_xawt/awt/multi_font.c
|
||||
../../../src/java.desktop/unix/native/libawt_xawt/awt/multiVis.h
|
||||
../../../src/java.desktop/unix/native/libawt_xawt/awt/awt_Event.c
|
||||
../../../src/java.desktop/unix/native/libawt_xawt/awt/Xrandr.h
|
||||
../../../src/java.desktop/unix/native/libawt_xawt/awt/robot_common.c
|
||||
../../../src/java.desktop/unix/native/libawt_xawt/awt/awt_util.c
|
||||
../../../src/java.desktop/unix/native/libawt_xawt/awt/list.h
|
||||
@@ -1176,7 +1350,6 @@ if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin" OR ${CMAKE_SYSTEM_NAME} MATCHES "Linux"
|
||||
../../../src/java.desktop/unix/native/libawt_xawt/awt/gtk3_interface.c
|
||||
../../../src/java.desktop/unix/native/libawt_xawt/awt/gtk_interface.h
|
||||
../../../src/java.desktop/unix/native/libawt_xawt/awt/awt_Robot.c
|
||||
../../../src/java.desktop/unix/native/libawt_xawt/awt/HPkeysym.h
|
||||
../../../src/java.desktop/unix/native/libawt_xawt/awt/awt_Event.h
|
||||
../../../src/java.desktop/unix/native/libawt_xawt/awt/multiVis.c
|
||||
../../../src/java.desktop/unix/native/libawt_xawt/awt/canvas.h
|
||||
@@ -1186,14 +1359,6 @@ if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin" OR ${CMAKE_SYSTEM_NAME} MATCHES "Linux"
|
||||
../../../src/java.desktop/unix/native/libawt_xawt/awt/sun_awt_X11_GtkFileDialogPeer.c
|
||||
../../../src/java.desktop/unix/native/libawt_xawt/awt/awt_GraphicsEnv.c
|
||||
../../../src/java.desktop/unix/native/libawt_xawt/awt/awt_InputMethod.c
|
||||
../../../src/java.desktop/unix/native/libawt_xawt/xawt/awt_Desktop.c
|
||||
../../../src/java.desktop/unix/native/libawt_xawt/xawt/XToolkit.c
|
||||
../../../src/java.desktop/unix/native/libawt_xawt/xawt/awt_Taskbar.c
|
||||
../../../src/java.desktop/unix/native/libawt_xawt/xawt/gnome_interface.c
|
||||
../../../src/java.desktop/unix/native/libawt_xawt/xawt/XlibWrapper.c
|
||||
../../../src/java.desktop/unix/native/libawt_xawt/xawt/gnome_interface.h
|
||||
../../../src/java.desktop/unix/native/libawt_xawt/xawt/awt_Taskbar.h
|
||||
../../../src/java.desktop/unix/native/libawt_xawt/xawt/XWindow.c
|
||||
../../../src/java.desktop/unix/native/libfontmanager/X11FontScaler.c
|
||||
../../../src/java.desktop/unix/native/libfontmanager/X11TextRenderer.c
|
||||
../../../src/java.desktop/unix/native/libsplashscreen/splashscreen_config.h
|
||||
|
||||
@@ -37,6 +37,9 @@ BUILD_NAME="$(ls "$EXPLODED")"
|
||||
if test -d $EXPLODED/$BUILD_NAME/Contents/Home/jmods; then
|
||||
mv $EXPLODED/$BUILD_NAME/Contents/Home/jmods $BACKUP_JMODS
|
||||
fi
|
||||
if test -d $EXPLODED/$BUILD_NAME/Contents/Home/Frameworks; then
|
||||
mv $EXPLODED/$BUILD_NAME/Contents/Home/Frameworks $BACKUP_JMODS
|
||||
fi
|
||||
if test -f $EXPLODED/$BUILD_NAME/Contents/MacOS/libjli.dylib; then
|
||||
mv $EXPLODED/$BUILD_NAME/Contents/MacOS/libjli.dylib $BACKUP_JMODS
|
||||
fi
|
||||
@@ -131,6 +134,9 @@ log "Zipping $BUILD_NAME to $INPUT_FILE ..."
|
||||
if test -d $BACKUP_JMODS/jmods; then
|
||||
mv $BACKUP_JMODS/jmods $EXPLODED/$BUILD_NAME/Contents/Home
|
||||
fi
|
||||
if test -d $BACKUP_JMODS/Frameworks; then
|
||||
mv $BACKUP_JMODS/Frameworks $EXPLODED/$BUILD_NAME/Contents/Home
|
||||
fi
|
||||
|
||||
COPYFILE_DISABLE=1 tar -pczf $INPUT_FILE --exclude='*.dSYM' --exclude='man' -C $EXPLODED $BUILD_NAME
|
||||
log "Finished zipping"
|
||||
|
||||
@@ -272,12 +272,14 @@ XEvent.xclient 0
|
||||
XEvent.xcolormap 0
|
||||
XEvent.xconfigure 0
|
||||
XEvent.xconfigurerequest 0
|
||||
XEvent.xcookie 0
|
||||
XEvent.xcreatewindow 0
|
||||
XEvent.xcrossing 0
|
||||
XEvent.xdestroywindow 0
|
||||
XEvent.xerror 0
|
||||
XEvent.xexpose 0
|
||||
XEvent.xfocus 0
|
||||
XEvent.xgeneric 0
|
||||
XEvent.xgraphicsexpose 0
|
||||
XEvent.xgravity 0
|
||||
XEvent.xkey 0
|
||||
@@ -370,6 +372,22 @@ XGCValues.subwindow_mode 64
|
||||
XGCValues.tile 44
|
||||
XGCValues.ts_x_origin 52
|
||||
XGCValues.ts_y_origin 56
|
||||
XGenericEvent 24
|
||||
XGenericEventCookie 32
|
||||
XGenericEventCookie.cookie 24
|
||||
XGenericEventCookie.data 28
|
||||
XGenericEventCookie.display 12
|
||||
XGenericEventCookie.evtype 20
|
||||
XGenericEventCookie.extension 16
|
||||
XGenericEventCookie.send_event 8
|
||||
XGenericEventCookie.serial 4
|
||||
XGenericEventCookie.type 0
|
||||
XGenericEvent.display 12
|
||||
XGenericEvent.evtype 20
|
||||
XGenericEvent.extension 16
|
||||
XGenericEvent.send_event 8
|
||||
XGenericEvent.serial 4
|
||||
XGenericEvent.type 0
|
||||
XGraphicsExposeEvent 48
|
||||
XGraphicsExposeEvent.count 36
|
||||
XGraphicsExposeEvent.display 12
|
||||
@@ -396,6 +414,9 @@ XHostAddress 12
|
||||
XHostAddress.address 8
|
||||
XHostAddress.family 0
|
||||
XHostAddress.length 4
|
||||
XIButtonState 8
|
||||
XIButtonState.mask 4
|
||||
XIButtonState.mask_len 0
|
||||
XIconSize 24
|
||||
XIconSize.height_inc 20
|
||||
XIconSize.max_height 12
|
||||
@@ -403,6 +424,29 @@ XIconSize.max_width 8
|
||||
XIconSize.min_height 4
|
||||
XIconSize.min_width 0
|
||||
XIconSize.width_inc 16
|
||||
XIDeviceEvent 140
|
||||
XIDeviceEvent.buttons 88
|
||||
XIDeviceEvent.child 48
|
||||
XIDeviceEvent.detail 36
|
||||
XIDeviceEvent.deviceid 28
|
||||
XIDeviceEvent.display 12
|
||||
XIDeviceEvent.event 44
|
||||
XIDeviceEvent.event_x 68
|
||||
XIDeviceEvent.event_y 76
|
||||
XIDeviceEvent.evtype 20
|
||||
XIDeviceEvent.extension 16
|
||||
XIDeviceEvent.flags 84
|
||||
XIDeviceEvent.group 124
|
||||
XIDeviceEvent.mods 108
|
||||
XIDeviceEvent.root 40
|
||||
XIDeviceEvent.root_x 52
|
||||
XIDeviceEvent.root_y 60
|
||||
XIDeviceEvent.send_event 8
|
||||
XIDeviceEvent.serial 4
|
||||
XIDeviceEvent.sourceid 32
|
||||
XIDeviceEvent.time 24
|
||||
XIDeviceEvent.type 0
|
||||
XIDeviceEvent.valuators 96
|
||||
XImage 88
|
||||
XImage.bitmap_bit_order 28
|
||||
XImage.bitmap_pad 32
|
||||
@@ -436,6 +480,11 @@ XIMHotKeyTrigger.modifier_mask 8
|
||||
XIMHotKeyTriggers 8
|
||||
XIMHotKeyTriggers.key 4
|
||||
XIMHotKeyTriggers.num_hot_key 0
|
||||
XIModifierState 16
|
||||
XIModifierState.base 0
|
||||
XIModifierState.effective 12
|
||||
XIModifierState.latched 4
|
||||
XIModifierState.locked 8
|
||||
XIMPreeditCaretCallbackStruct 12
|
||||
XIMPreeditCaretCallbackStruct.direction 4
|
||||
XIMPreeditCaretCallbackStruct.position 0
|
||||
@@ -472,6 +521,10 @@ XIMText.string 12
|
||||
XIMValuesList 8
|
||||
XIMValuesList.count_values 0
|
||||
XIMValuesList.supported_values 4
|
||||
XIValuatorState 12
|
||||
XIValuatorState.mask 4
|
||||
XIValuatorState.mask_len 0
|
||||
XIValuatorState.values 8
|
||||
XkbAccessXNotifyEvent 44
|
||||
XkbAccessXNotifyEvent.debounce_delay 40
|
||||
XkbAccessXNotifyEvent.detail 28
|
||||
|
||||
@@ -59,4 +59,6 @@ jdk.security.auth,
|
||||
jdk.security.jgss,
|
||||
jdk.unsupported,
|
||||
jdk.xml.dom,
|
||||
jdk.zipfs
|
||||
jdk.zipfs,
|
||||
jdk.hotspot.agent,
|
||||
jcef
|
||||
|
||||
@@ -1132,7 +1132,7 @@ bool PhaseIdealLoop::loop_predication_impl_helper(IdealLoopTree *loop, ProjNode*
|
||||
Node* idx = cmp->in(1);
|
||||
assert(!invar.is_invariant(idx), "index is variant");
|
||||
Node* rng = cmp->in(2);
|
||||
assert(rng->Opcode() == Op_LoadRange || iff->is_RangeCheck() || _igvn.type(rng)->is_int()->_lo != 0, "must be");
|
||||
// [tav: crash] assert(rng->Opcode() == Op_LoadRange || iff->is_RangeCheck() || _igvn.type(rng)->is_int()->_lo != 0, "must be");
|
||||
assert(invar.is_invariant(rng), "range must be invariant");
|
||||
int scale = 1;
|
||||
Node* offset = zero;
|
||||
|
||||
@@ -70,6 +70,7 @@ import sun.java2d.SurfaceData;
|
||||
import sun.java2d.loops.Blit;
|
||||
import sun.java2d.loops.CompositeType;
|
||||
import sun.java2d.pipe.Region;
|
||||
import sun.lwawt.macosx.CPlatformWindow;
|
||||
import sun.util.logging.PlatformLogger;
|
||||
|
||||
public class LWWindowPeer
|
||||
@@ -1528,4 +1529,17 @@ public class LWWindowPeer
|
||||
public String toString() {
|
||||
return super.toString() + " [target is " + getTarget() + "]";
|
||||
}
|
||||
|
||||
/**
|
||||
* [tav] Used externally.
|
||||
*/
|
||||
@Override
|
||||
public long getWindowHandle() {
|
||||
final long[] handle = new long[1];
|
||||
PlatformWindow window = getPlatformWindow();
|
||||
if (window instanceof CPlatformWindow) {
|
||||
((CPlatformWindow)window).execute(ptr -> handle[0] = ptr);
|
||||
}
|
||||
return handle[0];
|
||||
}
|
||||
}
|
||||
@@ -64,11 +64,7 @@ class CFileDialog implements FileDialogPeer {
|
||||
int dialogMode = target.getMode();
|
||||
String title = (target.getTitle() == null) ? "" : target.getTitle();
|
||||
|
||||
Window owner = target.getOwner();
|
||||
|
||||
final Object peer = AWTAccessor.getComponentAccessor().getPeer(owner);
|
||||
Object platformWindow = ((LWWindowPeer) peer).getPlatformWindow();
|
||||
((CPlatformWindow)platformWindow).execute(ownerPtr -> {
|
||||
final CFRetainedResource.CFNativeAction nativeAction = ownerPtr -> {
|
||||
String[] userFileNames = nativeRunFileDialog(
|
||||
ownerPtr,
|
||||
title,
|
||||
@@ -106,9 +102,16 @@ class CFileDialog implements FileDialogPeer {
|
||||
accessor.setDirectory(target, directory);
|
||||
accessor.setFile(target, file);
|
||||
accessor.setFiles(target, files);
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
final Window owner = target.getOwner();
|
||||
if (owner == null) {
|
||||
nativeAction.run(0);
|
||||
} else {
|
||||
final Object peer = AWTAccessor.getComponentAccessor().getPeer(owner);
|
||||
Object platformWindow = ((LWWindowPeer) peer).getPlatformWindow();
|
||||
((CPlatformWindow)platformWindow).execute(nativeAction);
|
||||
}
|
||||
} finally {
|
||||
// Java2 Dialog waits for hide to let show() return
|
||||
target.dispose();
|
||||
|
||||
@@ -63,6 +63,7 @@ import com.apple.laf.ClientPropertyApplicator.Property;
|
||||
import sun.awt.AWTAccessor;
|
||||
import sun.awt.AWTAccessor.ComponentAccessor;
|
||||
import sun.awt.AWTAccessor.WindowAccessor;
|
||||
import sun.awt.InvokeOnToolkitHelper;
|
||||
import sun.java2d.SurfaceData;
|
||||
import sun.java2d.opengl.CGLSurfaceData;
|
||||
import sun.lwawt.LWLightweightFramePeer;
|
||||
@@ -327,7 +328,7 @@ public class CPlatformWindow extends CFRetainedResource implements PlatformWindo
|
||||
long nativeWindowPtr = java.security.AccessController.doPrivileged(
|
||||
(PrivilegedAction<Long>) () -> {
|
||||
try {
|
||||
return LWCToolkit.SelectorPerformer.perform(() -> {
|
||||
return InvokeOnToolkitHelper.invokeAndBlock(() -> {
|
||||
AtomicLong ref = new AtomicLong();
|
||||
contentView.execute(viewPtr -> {
|
||||
boolean hasOwnerPtr = false;
|
||||
@@ -438,81 +439,84 @@ public class CPlatformWindow extends CFRetainedResource implements PlatformWindo
|
||||
|
||||
if (target instanceof javax.swing.RootPaneContainer) {
|
||||
javax.swing.JRootPane rootpane = ((javax.swing.RootPaneContainer)target).getRootPane();
|
||||
Object prop = null;
|
||||
|
||||
prop = rootpane.getClientProperty(WINDOW_BRUSH_METAL_LOOK);
|
||||
if (prop != null) {
|
||||
styleBits = SET(styleBits, TEXTURED, Boolean.parseBoolean(prop.toString()));
|
||||
}
|
||||
if (rootpane != null) {
|
||||
Object prop;
|
||||
|
||||
if (isDialog && ((Dialog)target).getModalityType() == ModalityType.DOCUMENT_MODAL) {
|
||||
prop = rootpane.getClientProperty(WINDOW_DOC_MODAL_SHEET);
|
||||
prop = rootpane.getClientProperty(WINDOW_BRUSH_METAL_LOOK);
|
||||
if (prop != null) {
|
||||
styleBits = SET(styleBits, SHEET, Boolean.parseBoolean(prop.toString()));
|
||||
styleBits = SET(styleBits, TEXTURED, Boolean.parseBoolean(prop.toString()));
|
||||
}
|
||||
}
|
||||
|
||||
prop = rootpane.getClientProperty(WINDOW_STYLE);
|
||||
if (prop != null) {
|
||||
if ("small".equals(prop)) {
|
||||
styleBits = SET(styleBits, UTILITY, true);
|
||||
if (target.isAlwaysOnTop() && rootpane.getClientProperty(WINDOW_HIDES_ON_DEACTIVATE) == null) {
|
||||
styleBits = SET(styleBits, HIDES_ON_DEACTIVATE, true);
|
||||
if (isDialog && ((Dialog) target).getModalityType() == ModalityType.DOCUMENT_MODAL) {
|
||||
prop = rootpane.getClientProperty(WINDOW_DOC_MODAL_SHEET);
|
||||
if (prop != null) {
|
||||
styleBits = SET(styleBits, SHEET, Boolean.parseBoolean(prop.toString()));
|
||||
}
|
||||
}
|
||||
if ("textured".equals(prop)) styleBits = SET(styleBits, TEXTURED, true);
|
||||
if ("unified".equals(prop)) styleBits = SET(styleBits, UNIFIED, true);
|
||||
if ("hud".equals(prop)) styleBits = SET(styleBits, HUD, true);
|
||||
}
|
||||
|
||||
prop = rootpane.getClientProperty(WINDOW_HIDES_ON_DEACTIVATE);
|
||||
if (prop != null) {
|
||||
styleBits = SET(styleBits, HIDES_ON_DEACTIVATE, Boolean.parseBoolean(prop.toString()));
|
||||
}
|
||||
prop = rootpane.getClientProperty(WINDOW_STYLE);
|
||||
if (prop != null) {
|
||||
if ("small".equals(prop)) {
|
||||
styleBits = SET(styleBits, UTILITY, true);
|
||||
if (target.isAlwaysOnTop() && rootpane.getClientProperty(WINDOW_HIDES_ON_DEACTIVATE) == null) {
|
||||
styleBits = SET(styleBits, HIDES_ON_DEACTIVATE, true);
|
||||
}
|
||||
}
|
||||
if ("textured".equals(prop)) styleBits = SET(styleBits, TEXTURED, true);
|
||||
if ("unified".equals(prop)) styleBits = SET(styleBits, UNIFIED, true);
|
||||
if ("hud".equals(prop)) styleBits = SET(styleBits, HUD, true);
|
||||
}
|
||||
|
||||
prop = rootpane.getClientProperty(WINDOW_CLOSEABLE);
|
||||
if (prop != null) {
|
||||
styleBits = SET(styleBits, CLOSEABLE, Boolean.parseBoolean(prop.toString()));
|
||||
}
|
||||
prop = rootpane.getClientProperty(WINDOW_HIDES_ON_DEACTIVATE);
|
||||
if (prop != null) {
|
||||
styleBits = SET(styleBits, HIDES_ON_DEACTIVATE, Boolean.parseBoolean(prop.toString()));
|
||||
}
|
||||
|
||||
prop = rootpane.getClientProperty(WINDOW_MINIMIZABLE);
|
||||
if (prop != null) {
|
||||
styleBits = SET(styleBits, MINIMIZABLE, Boolean.parseBoolean(prop.toString()));
|
||||
}
|
||||
prop = rootpane.getClientProperty(WINDOW_CLOSEABLE);
|
||||
if (prop != null) {
|
||||
styleBits = SET(styleBits, CLOSEABLE, Boolean.parseBoolean(prop.toString()));
|
||||
}
|
||||
|
||||
prop = rootpane.getClientProperty(WINDOW_DARK_APPEARANCE);
|
||||
if (prop != null) {
|
||||
styleBits = SET(styleBits, DARK, Boolean.parseBoolean(prop.toString()));
|
||||
}
|
||||
prop = rootpane.getClientProperty(WINDOW_MINIMIZABLE);
|
||||
if (prop != null) {
|
||||
styleBits = SET(styleBits, MINIMIZABLE, Boolean.parseBoolean(prop.toString()));
|
||||
}
|
||||
|
||||
prop = rootpane.getClientProperty(WINDOW_TRANSPARENT_TITLEBAR_APPEARANCE);
|
||||
if (prop != null) {
|
||||
styleBits = SET(styleBits, TRANSPARENT_TITLEBAR, Boolean.parseBoolean(prop.toString()));
|
||||
}
|
||||
prop = rootpane.getClientProperty(WINDOW_DARK_APPEARANCE);
|
||||
if (prop != null) {
|
||||
styleBits = SET(styleBits, DARK, Boolean.parseBoolean(prop.toString()));
|
||||
}
|
||||
|
||||
prop = rootpane.getClientProperty(WINDOW_LIGHT_APPEARANCE);
|
||||
if (prop != null) {
|
||||
styleBits = SET(styleBits, LIGHT, Boolean.parseBoolean(prop.toString()));
|
||||
}
|
||||
prop = rootpane.getClientProperty(WINDOW_TRANSPARENT_TITLEBAR_APPEARANCE);
|
||||
if (prop != null) {
|
||||
styleBits = SET(styleBits, TRANSPARENT_TITLEBAR, Boolean.parseBoolean(prop.toString()));
|
||||
}
|
||||
|
||||
prop = rootpane.getClientProperty(WINDOW_ZOOMABLE);
|
||||
if (prop != null) {
|
||||
styleBits = SET(styleBits, ZOOMABLE, Boolean.parseBoolean(prop.toString()));
|
||||
}
|
||||
prop = rootpane.getClientProperty(WINDOW_LIGHT_APPEARANCE);
|
||||
if (prop != null) {
|
||||
styleBits = SET(styleBits, LIGHT, Boolean.parseBoolean(prop.toString()));
|
||||
}
|
||||
|
||||
prop = rootpane.getClientProperty(WINDOW_FULLSCREENABLE);
|
||||
if (prop != null) {
|
||||
styleBits = SET(styleBits, FULLSCREENABLE, Boolean.parseBoolean(prop.toString()));
|
||||
}
|
||||
prop = rootpane.getClientProperty(WINDOW_ZOOMABLE);
|
||||
if (prop != null) {
|
||||
styleBits = SET(styleBits, ZOOMABLE, Boolean.parseBoolean(prop.toString()));
|
||||
}
|
||||
|
||||
prop = rootpane.getClientProperty(WINDOW_SHADOW);
|
||||
if (prop != null) {
|
||||
styleBits = SET(styleBits, HAS_SHADOW, Boolean.parseBoolean(prop.toString()));
|
||||
}
|
||||
prop = rootpane.getClientProperty(WINDOW_FULLSCREENABLE);
|
||||
if (prop != null) {
|
||||
styleBits = SET(styleBits, FULLSCREENABLE, Boolean.parseBoolean(prop.toString()));
|
||||
}
|
||||
|
||||
prop = rootpane.getClientProperty(WINDOW_DRAGGABLE_BACKGROUND);
|
||||
if (prop != null) {
|
||||
styleBits = SET(styleBits, DRAGGABLE_BACKGROUND, Boolean.parseBoolean(prop.toString()));
|
||||
prop = rootpane.getClientProperty(WINDOW_SHADOW);
|
||||
if (prop != null) {
|
||||
styleBits = SET(styleBits, HAS_SHADOW, Boolean.parseBoolean(prop.toString()));
|
||||
}
|
||||
|
||||
prop = rootpane.getClientProperty(WINDOW_DRAGGABLE_BACKGROUND);
|
||||
if (prop != null) {
|
||||
styleBits = SET(styleBits, DRAGGABLE_BACKGROUND, Boolean.parseBoolean(prop.toString()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -87,15 +87,10 @@ import java.lang.reflect.InvocationTargetException;
|
||||
import java.lang.reflect.UndeclaredThrowableException;
|
||||
import java.net.MalformedURLException;
|
||||
import java.net.URL;
|
||||
import java.net.MalformedURLException;
|
||||
import java.security.*;
|
||||
import java.security.AccessController;
|
||||
import java.security.PrivilegedAction;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.*;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
import java.util.concurrent.Callable;
|
||||
import java.util.HashMap;
|
||||
import java.util.Locale;
|
||||
@@ -106,12 +101,7 @@ import java.util.ResourceBundle;
|
||||
import javax.swing.UIManager;
|
||||
|
||||
import com.apple.laf.AquaMenuBarUI;
|
||||
import sun.awt.AWTAccessor;
|
||||
import sun.awt.AppContext;
|
||||
import sun.awt.CGraphicsConfig;
|
||||
import sun.awt.CGraphicsDevice;
|
||||
import sun.awt.LightweightFrame;
|
||||
import sun.awt.SunToolkit;
|
||||
import sun.awt.*;
|
||||
import sun.awt.datatransfer.DataTransferer;
|
||||
import sun.awt.util.ThreadGroupUtils;
|
||||
import sun.java2d.opengl.OGLRenderQueue;
|
||||
@@ -482,7 +472,7 @@ public final class LWCToolkit extends LWToolkit {
|
||||
public Insets getScreenInsets(final GraphicsConfiguration gc) {
|
||||
CGraphicsDevice gd = ((CGraphicsConfig) gc).getDevice();
|
||||
// Avoid deadlock with input methods
|
||||
return LWCToolkit.SelectorPerformer.perform(gd::getScreenInsets);
|
||||
return InvokeOnToolkitHelper.invokeAndBlock(gd::getScreenInsets);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -700,150 +690,6 @@ public final class LWCToolkit extends LWToolkit {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Performs a wrapped native selector on the main thread, waiting on EDT, preventing the threads from a deadlock.
|
||||
*/
|
||||
public static class SelectorPerformer {
|
||||
private ExecutorService executor;
|
||||
// every perform() pushes a queue of invocations
|
||||
private Stack<LinkedBlockingQueue<InvocationEvent>> invocations = new Stack<>();
|
||||
|
||||
// invocations should be dispatched on proper EDT (per AppContext)
|
||||
private static final Map<Thread, SelectorPerformer> edt2performer = new ConcurrentHashMap<>();
|
||||
|
||||
private static final int WAIT_LIMIT_SECONDS = 5;
|
||||
|
||||
private SelectorPerformer() {}
|
||||
|
||||
/**
|
||||
* Performs the selector wrapped in the callable. The selector should be executed via [JNFRunLoop performOnMainThreadWaiting:YES ...]
|
||||
* on the native side so that the native doAWTRunLoop, which is run in [JNFRunLoop javaRunLoopMode], accepts it.
|
||||
* The callable wrapper should not call any Java code which would normally be called on EDT.
|
||||
* <p>
|
||||
* If the main thread posts invocation events caused by the selector, those events are intercepted and dispatched on EDT out of order.
|
||||
* <p>
|
||||
* When called on non-EDT, the method performs the selector in place. The method is reentrant.
|
||||
*
|
||||
* @param selector the native selector wrapper
|
||||
* @param <T> the selector return type
|
||||
* @return the selector result
|
||||
*/
|
||||
public static <T> T perform(Callable<T> selector) {
|
||||
if (selector == null) return null;
|
||||
|
||||
if (EventQueue.isDispatchThread()) {
|
||||
SelectorPerformer performer = getInstance(Thread.currentThread());
|
||||
if (performer != null) {
|
||||
return performer.performImpl(selector);
|
||||
}
|
||||
}
|
||||
// fallback to default
|
||||
try {
|
||||
return selector.call();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private <T> T performImpl(Callable<T> selector) {
|
||||
assert EventQueue.isDispatchThread();
|
||||
if (executor == null) {
|
||||
// init on EDT
|
||||
AccessController.doPrivileged((PrivilegedAction<?>)() ->
|
||||
executor = new ThreadPoolExecutor(1, Integer.MAX_VALUE,
|
||||
60L, TimeUnit.SECONDS,
|
||||
new SynchronousQueue<>(),
|
||||
new ThreadFactory() {
|
||||
private ThreadFactory factory = Executors.privilegedThreadFactory();
|
||||
@Override
|
||||
public Thread newThread(Runnable r) {
|
||||
Thread t = factory.newThread(r);
|
||||
t.setDaemon(true);
|
||||
t.setName("AWT-SelectorPerformer " + t.getName());
|
||||
return t;
|
||||
}
|
||||
})
|
||||
);
|
||||
}
|
||||
LinkedBlockingQueue<InvocationEvent> currentQueue;
|
||||
synchronized (invocations) {
|
||||
invocations.push(currentQueue = new LinkedBlockingQueue<>());
|
||||
}
|
||||
|
||||
FutureTask<T> task = new FutureTask<T>(selector) {
|
||||
@Override
|
||||
protected void done() {
|
||||
synchronized (invocations) {
|
||||
// Done with the current queue, wake it up.
|
||||
invocations.pop().add(new InvocationEvent(executor, () -> {}));
|
||||
}
|
||||
}
|
||||
};
|
||||
executor.execute(task);
|
||||
|
||||
try {
|
||||
while (!task.isDone() || !currentQueue.isEmpty()) {
|
||||
InvocationEvent event = currentQueue.poll(WAIT_LIMIT_SECONDS, TimeUnit.SECONDS);
|
||||
if (event == null) {
|
||||
new RuntimeException("Waiting for the invocation event timed out").printStackTrace();
|
||||
break;
|
||||
}
|
||||
event.dispatch();
|
||||
}
|
||||
return task.isDone() ? task.get() : null;
|
||||
|
||||
} catch (InterruptedException | ExecutionException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if there's an active SelectorPerformer corresponding to the invocation's AppContext,
|
||||
* adds the invocation to the SelectorPerformer's queue and returns true.
|
||||
* Otherwise does nothing and returns false.
|
||||
*/
|
||||
public static boolean offer(InvocationEvent invocation) {
|
||||
Object source = invocation.getSource();
|
||||
|
||||
SelectorPerformer performer = (source instanceof Component) ?
|
||||
getInstance((Component)source) :
|
||||
getInstance(Toolkit.getDefaultToolkit().getSystemEventQueue());
|
||||
|
||||
if (performer == null) return false;
|
||||
|
||||
synchronized (performer.invocations) {
|
||||
if (!performer.invocations.isEmpty()) {
|
||||
performer.invocations.peek().add(invocation);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private static SelectorPerformer getInstance(Component comp) {
|
||||
if (comp == null) return null;
|
||||
|
||||
AppContext appContext = SunToolkit.targetToAppContext(comp);
|
||||
if (appContext == null) return null;
|
||||
|
||||
return getInstance((EventQueue)appContext.get(AppContext.EVENT_QUEUE_KEY));
|
||||
}
|
||||
|
||||
private static SelectorPerformer getInstance(EventQueue eq) {
|
||||
if (eq == null) return null;
|
||||
|
||||
return getInstance(AWTAccessor.getEventQueueAccessor().getDispatchThread(eq));
|
||||
}
|
||||
|
||||
private static SelectorPerformer getInstance(Thread edt) {
|
||||
if (edt == null) return null;
|
||||
|
||||
return edt2performer.computeIfAbsent(edt, key -> new SelectorPerformer());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Kicks an event over to the appropriate event queue and waits for it to
|
||||
* finish To avoid deadlocking, we manually run the NSRunLoop while waiting
|
||||
@@ -889,7 +735,7 @@ public final class LWCToolkit extends LWToolkit {
|
||||
},
|
||||
true);
|
||||
|
||||
if (!SelectorPerformer.offer(invocationEvent)) {
|
||||
if (!InvokeOnToolkitHelper.offer(invocationEvent)) {
|
||||
if (component != null) {
|
||||
AppContext appContext = SunToolkit.targetToAppContext(component);
|
||||
SunToolkit.postEvent(appContext, invocationEvent);
|
||||
|
||||
@@ -165,7 +165,9 @@ canChooseDirectories:(BOOL)inChooseDirectories
|
||||
[CMenuBar activate:menuBar modallyDisabled:isDisabled];
|
||||
}
|
||||
|
||||
[thePanel setAppearance:fOwner.appearance];
|
||||
if (@available(macOS 10.14, *)) {
|
||||
[thePanel setAppearance:fOwner.appearance];
|
||||
}
|
||||
|
||||
void (^onComplete)(BOOL, BOOL) = ^(BOOL responseOK, BOOL doStopModal) {
|
||||
if (responseOK) {
|
||||
|
||||
@@ -50,7 +50,7 @@ BOOL postEventDuringEventSynthesis = NO;
|
||||
* Subtypes of NSApplicationDefined, which are used for custom events.
|
||||
*/
|
||||
enum {
|
||||
ExecuteBlockEvent, NativeSyncQueueEvent
|
||||
ExecuteBlockEvent = 777, NativeSyncQueueEvent
|
||||
};
|
||||
|
||||
@implementation NSApplicationAWT
|
||||
@@ -366,11 +366,15 @@ untilDate:(NSDate *)expiration inMode:(NSString *)mode dequeue:(BOOL)deqFlag {
|
||||
{
|
||||
if ([event type] == NSApplicationDefined
|
||||
&& TS_EQUAL([event timestamp], dummyEventTimestamp)
|
||||
&& [event subtype] == NativeSyncQueueEvent) {
|
||||
&& (short)[event subtype] == NativeSyncQueueEvent
|
||||
&& [event data1] == NativeSyncQueueEvent
|
||||
&& [event data2] == NativeSyncQueueEvent) {
|
||||
[seenDummyEventLock lockWhenCondition:NO];
|
||||
[seenDummyEventLock unlockWithCondition:YES];
|
||||
|
||||
} else if ([event type] == NSApplicationDefined && [event subtype] == ExecuteBlockEvent) {
|
||||
} else if ([event type] == NSApplicationDefined
|
||||
&& (short)[event subtype] == ExecuteBlockEvent
|
||||
&& [event data1] != 0 && [event data2] == ExecuteBlockEvent) {
|
||||
void (^block)() = (void (^)()) [event data1];
|
||||
block();
|
||||
[block release];
|
||||
@@ -401,7 +405,7 @@ untilDate:(NSDate *)expiration inMode:(NSString *)mode dequeue:(BOOL)deqFlag {
|
||||
context: nil
|
||||
subtype: ExecuteBlockEvent
|
||||
data1: encode
|
||||
data2: 0];
|
||||
data2: ExecuteBlockEvent];
|
||||
|
||||
[NSApp postEvent: event atStart: NO];
|
||||
[pool drain];
|
||||
@@ -419,8 +423,8 @@ untilDate:(NSDate *)expiration inMode:(NSString *)mode dequeue:(BOOL)deqFlag {
|
||||
windowNumber: 0
|
||||
context: nil
|
||||
subtype: NativeSyncQueueEvent
|
||||
data1: 0
|
||||
data2: 0];
|
||||
data1: NativeSyncQueueEvent
|
||||
data2: NativeSyncQueueEvent];
|
||||
if (useCocoa) {
|
||||
[NSApp postEvent:event atStart:NO];
|
||||
} else {
|
||||
|
||||
@@ -125,4 +125,11 @@ public interface WindowPeer extends ContainerPeer {
|
||||
* @return the system insets or null
|
||||
*/
|
||||
default Insets getSysInsets() { return null; }
|
||||
|
||||
/**
|
||||
* Returns platform window handle.
|
||||
*/
|
||||
default long getWindowHandle() {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -200,6 +200,7 @@ public class JMenuBar extends JComponent implements Accessible,MenuElement
|
||||
*/
|
||||
public JMenu add(JMenu c) {
|
||||
super.add(c);
|
||||
c.setFocusable(false);
|
||||
return c;
|
||||
}
|
||||
|
||||
|
||||
@@ -1480,13 +1480,9 @@ public class StyleSheet extends StyleContext {
|
||||
}
|
||||
// Get the AttributeSet from linked style sheets.
|
||||
for (int counter = 0; counter < numLinkedSS; counter++) {
|
||||
AttributeSet attr = linkedStyleSheets.elementAt(counter).getRule(selector);
|
||||
if (attr == null) {
|
||||
attrs[counter + numStyles] = SimpleAttributeSet.EMPTY;
|
||||
}
|
||||
else {
|
||||
attrs[counter + numStyles] = attr;
|
||||
}
|
||||
StyleSheet styleSheet = linkedStyleSheets.elementAt(counter);
|
||||
attrs[counter + numStyles] =
|
||||
(styleSheet == null) ? SimpleAttributeSet.EMPTY : styleSheet.getRule(selector);
|
||||
}
|
||||
ResolvedStyle retStyle = new ResolvedStyle(selector, attrs,
|
||||
numStyles);
|
||||
|
||||
@@ -109,7 +109,10 @@ module java.desktop {
|
||||
// see make/GensrcModuleInfo.gmk
|
||||
exports sun.awt to
|
||||
jdk.accessibility,
|
||||
jdk.unsupported.desktop;
|
||||
jdk.unsupported.desktop,
|
||||
jcef;
|
||||
|
||||
exports java.awt.peer to jcef;
|
||||
|
||||
exports java.awt.dnd.peer to jdk.unsupported.desktop;
|
||||
exports sun.awt.dnd to jdk.unsupported.desktop;
|
||||
|
||||
@@ -0,0 +1,157 @@
|
||||
package sun.awt;
|
||||
|
||||
import java.awt.*;
|
||||
import java.awt.event.InvocationEvent;
|
||||
import java.security.AccessController;
|
||||
import java.security.PrivilegedAction;
|
||||
import java.util.Map;
|
||||
import java.util.Stack;
|
||||
import java.util.concurrent.*;
|
||||
|
||||
/**
|
||||
* Used to perform a blocking invocation on Toolkit thread from EDT, preventing a deadlock.
|
||||
* The deadlock can happen when EDT and Toolkit perform blocking invocations at the same time.
|
||||
* The following is performed to resolve it:
|
||||
* 1) The invoker spins a nested event loop on EDT while waiting for the invocation to complete.
|
||||
* 2) A separate pool thread is used to perform the invocation.
|
||||
*/
|
||||
public class InvokeOnToolkitHelper {
|
||||
private ExecutorService executor;
|
||||
// every invokeAndWait() pushes a queue of invocations
|
||||
private final Stack<LinkedBlockingQueue<InvocationEvent>> invocations = new Stack<>();
|
||||
|
||||
// invocations should be dispatched on proper EDT (per AppContext)
|
||||
private static final Map<Thread, InvokeOnToolkitHelper> edt2invokerMap = new ConcurrentHashMap<>();
|
||||
|
||||
private static final int WAIT_LIMIT_SECONDS = 5;
|
||||
|
||||
private InvokeOnToolkitHelper() {}
|
||||
|
||||
/**
|
||||
* Invokes the callable on Toolkit thread and blocks until the completion. The method is re-entrant.
|
||||
*
|
||||
* On macOS it is assumed the callable wraps a native selector. The selector should be executed via [JNFRunLoop performOnMainThreadWaiting:YES ...]
|
||||
* so that the doAWTRunLoop on AppKit (which is run in [JNFRunLoop javaRunLoopMode]) accepts it. The callable wrapper should not call any Java code
|
||||
* which would normally be called on EDT.
|
||||
* <p>
|
||||
* If Toolkit posts invocation events caused by the callable, those events are intercepted and dispatched on EDT out of order.
|
||||
* <p>
|
||||
* When called on non-EDT, the method invokes the callable in place.
|
||||
*/
|
||||
public static <T> T invokeAndBlock(Callable<T> callable) {
|
||||
if (callable == null) return null;
|
||||
|
||||
if (EventQueue.isDispatchThread()) {
|
||||
InvokeOnToolkitHelper invoker = getInstance(Thread.currentThread());
|
||||
if (invoker != null) {
|
||||
return invoker.invoke(callable);
|
||||
}
|
||||
}
|
||||
// fallback to default
|
||||
try {
|
||||
return callable.call();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private <T> T invoke(Callable<T> callable) {
|
||||
assert EventQueue.isDispatchThread();
|
||||
if (executor == null) {
|
||||
// init on EDT
|
||||
AccessController.doPrivileged((PrivilegedAction<?>)() ->
|
||||
executor = new ThreadPoolExecutor(1, Integer.MAX_VALUE,
|
||||
60L, TimeUnit.SECONDS,
|
||||
new SynchronousQueue<>(),
|
||||
new ThreadFactory() {
|
||||
private final ThreadFactory factory = Executors.privilegedThreadFactory();
|
||||
@Override
|
||||
public Thread newThread(Runnable r) {
|
||||
Thread t = factory.newThread(r);
|
||||
t.setDaemon(true);
|
||||
t.setName("AWT-InvokeOnToolkitHelper " + t.getName());
|
||||
return t;
|
||||
}
|
||||
})
|
||||
);
|
||||
}
|
||||
LinkedBlockingQueue<InvocationEvent> currentQueue;
|
||||
synchronized (invocations) {
|
||||
invocations.push(currentQueue = new LinkedBlockingQueue<>());
|
||||
}
|
||||
|
||||
FutureTask<T> task = new FutureTask<T>(callable) {
|
||||
@Override
|
||||
protected void done() {
|
||||
synchronized (invocations) {
|
||||
// Done with the current queue, wake it up.
|
||||
invocations.pop().add(new InvocationEvent(executor, () -> {}));
|
||||
}
|
||||
}
|
||||
};
|
||||
executor.execute(task);
|
||||
|
||||
try {
|
||||
while (!task.isDone() || !currentQueue.isEmpty()) {
|
||||
InvocationEvent event = currentQueue.poll(WAIT_LIMIT_SECONDS, TimeUnit.SECONDS);
|
||||
if (event == null) {
|
||||
new RuntimeException("Waiting for the invocation event timed out").printStackTrace();
|
||||
break;
|
||||
}
|
||||
event.dispatch();
|
||||
}
|
||||
return task.isDone() ? task.get() : null;
|
||||
|
||||
} catch (InterruptedException | ExecutionException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Warning: the method is used by the implementation and should not be used by a client.
|
||||
*
|
||||
* Checks if there's an active InvokeOnToolkitHelper corresponding to the invocation's AppContext,
|
||||
* adds the invocation to the InvokeOnToolkitHelper's queue and returns true.
|
||||
* Otherwise does nothing and returns false.
|
||||
*/
|
||||
public static boolean offer(InvocationEvent invocation) {
|
||||
Object source = invocation.getSource();
|
||||
|
||||
InvokeOnToolkitHelper invoker = (source instanceof Component) ?
|
||||
getInstance((Component)source) :
|
||||
getInstance(Toolkit.getDefaultToolkit().getSystemEventQueue());
|
||||
|
||||
if (invoker == null) return false;
|
||||
|
||||
synchronized (invoker.invocations) {
|
||||
if (!invoker.invocations.isEmpty()) {
|
||||
invoker.invocations.peek().add(invocation);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private static InvokeOnToolkitHelper getInstance(Component comp) {
|
||||
if (comp == null) return null;
|
||||
|
||||
AppContext appContext = SunToolkit.targetToAppContext(comp);
|
||||
if (appContext == null) return null;
|
||||
|
||||
return getInstance((EventQueue)appContext.get(AppContext.EVENT_QUEUE_KEY));
|
||||
}
|
||||
|
||||
private static InvokeOnToolkitHelper getInstance(EventQueue eq) {
|
||||
if (eq == null) return null;
|
||||
|
||||
return getInstance(AWTAccessor.getEventQueueAccessor().getDispatchThread(eq));
|
||||
}
|
||||
|
||||
private static InvokeOnToolkitHelper getInstance(Thread edt) {
|
||||
if (edt == null) return null;
|
||||
|
||||
return edt2invokerMap.computeIfAbsent(edt, key -> new InvokeOnToolkitHelper());
|
||||
}
|
||||
}
|
||||
@@ -53,16 +53,21 @@ class FreetypeFontScaler extends FontScaler {
|
||||
|
||||
String fontConfName = java.security.AccessController.doPrivileged(
|
||||
(PrivilegedAction<String>) () -> {
|
||||
if ("true".equals(System.getProperty(
|
||||
"java2d.font.loadFontConf", ""))) {
|
||||
String loadFontConfig = System.getProperty(
|
||||
"java2d.font.loadFontConf", "");
|
||||
if ("true".equals(loadFontConfig)) {
|
||||
File f = new File(System.getProperty("user.home", "") +
|
||||
File.separator + ".fonts.conf");
|
||||
File.separator + ".fonts.conf");
|
||||
|
||||
if (!f.exists()) {
|
||||
f = new File(System.getProperty("java.home", "") +
|
||||
File.separator + "lib" + File.separator +
|
||||
"fonts" + File.separator + "font.conf");
|
||||
if (f.exists()) {
|
||||
return f.getAbsolutePath();
|
||||
}
|
||||
}
|
||||
|
||||
if ("true".equals(loadFontConfig) || "bundled".equals(loadFontConfig)) {
|
||||
File f = new File(System.getProperty("java.home", "") +
|
||||
File.separator + "lib" + File.separator + "fonts" + File.separator + "font.conf");
|
||||
|
||||
return f.getAbsolutePath();
|
||||
}
|
||||
return null;
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
#include <stdlib.h>
|
||||
#include <math.h>
|
||||
|
||||
#if !defined(_WIN32) && !defined(__APPLE_)
|
||||
#if !defined(_WIN32) && !defined(__APPLE__)
|
||||
#include <dlfcn.h>
|
||||
#else
|
||||
#define DISABLE_FONTCONFIG
|
||||
@@ -736,7 +736,7 @@ static void setupLoadRenderFlags(FTScalerContext *context, int fcHintStyle, FcBo
|
||||
context->loadFlags = FT_LOAD_NO_HINTING;
|
||||
break;
|
||||
case FC_HINT_SLIGHT:
|
||||
context->loadFlags = (fcRenderFlags != FT_RENDER_MODE_MONO) ? FT_LOAD_TARGET_LIGHT : FT_LOAD_NO_HINTING;
|
||||
context->loadFlags = FT_LOAD_TARGET_LIGHT;
|
||||
break;
|
||||
default:
|
||||
context->loadFlags = fcLoadFlags;
|
||||
|
||||
@@ -60,7 +60,7 @@ class XWindow extends XBaseWindow implements X11ComponentPeer {
|
||||
private static int touchBeginX = 0, touchBeginY = 0;
|
||||
private static int trackingId = 0;
|
||||
private static boolean isTouchScroll = false;
|
||||
private static final int TOUCH_CLICK_RADIUS = 3;
|
||||
private static final int TOUCH_CLICK_RADIUS = 10;
|
||||
// all touch scrolls are measured in pixels
|
||||
private static final int TOUCH_BEGIN = 2;
|
||||
private static final int TOUCH_UPDATE = 3;
|
||||
@@ -813,16 +813,13 @@ class XWindow extends XBaseWindow implements X11ComponentPeer {
|
||||
isTouchScroll = false;
|
||||
touchBeginX = x;
|
||||
touchBeginY = y;
|
||||
sendWheelEventFromTouch(dev, jWhen, modifiers, touchBeginX, touchBeginY, TOUCH_BEGIN, 1);
|
||||
break;
|
||||
case XConstants.XI_TouchUpdate:
|
||||
if (isInsideTouchClickBoundaries(x, y)) {
|
||||
if (!isTouchScroll && isInsideTouchClickBoundaries(x, y)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!isTouchScroll) {
|
||||
sendWheelEventFromTouch(dev, jWhen, modifiers, touchBeginX, touchBeginY, TOUCH_BEGIN, 1);
|
||||
isTouchScroll = true;
|
||||
}
|
||||
isTouchScroll = true;
|
||||
|
||||
if (lastY - y != 0) {
|
||||
sendWheelEventFromTouch(dev, jWhen, modifiers, x, y, TOUCH_UPDATE, lastY - y);
|
||||
@@ -834,9 +831,8 @@ class XWindow extends XBaseWindow implements X11ComponentPeer {
|
||||
}
|
||||
break;
|
||||
case XConstants.XI_TouchEnd:
|
||||
if (isTouchScroll) {
|
||||
sendWheelEventFromTouch(dev, jWhen, modifiers, x, y, TOUCH_END, 1);
|
||||
} else {
|
||||
sendWheelEventFromTouch(dev, jWhen, modifiers, x, y, TOUCH_END, 1);
|
||||
if (!isTouchScroll) {
|
||||
sendMouseEventFromTouch(dev, MouseEvent.MOUSE_PRESSED, jWhen, modifiers, touchBeginX, touchBeginY, button);
|
||||
sendMouseEventFromTouch(dev, MouseEvent.MOUSE_RELEASED, jWhen, modifiers, touchBeginX, touchBeginY, button);
|
||||
sendMouseEventFromTouch(dev, MouseEvent.MOUSE_CLICKED, jWhen, modifiers, touchBeginX, touchBeginY, button);
|
||||
|
||||
@@ -54,6 +54,8 @@ import sun.awt.X11GraphicsEnvironment;
|
||||
import sun.java2d.pipe.Region;
|
||||
import sun.util.logging.PlatformLogger;
|
||||
|
||||
import sun.security.action.GetBooleanAction;
|
||||
|
||||
class XWindowPeer extends XPanelPeer implements WindowPeer,
|
||||
DisplayChangedListener {
|
||||
|
||||
@@ -63,6 +65,13 @@ class XWindowPeer extends XPanelPeer implements WindowPeer,
|
||||
private static final PlatformLogger grabLog = PlatformLogger.getLogger("sun.awt.X11.grab.XWindowPeer");
|
||||
private static final PlatformLogger iconLog = PlatformLogger.getLogger("sun.awt.X11.icon.XWindowPeer");
|
||||
|
||||
// workaround for JBR-1680 (see https://youtrack.jetbrains.com/issue/JBR-1680#focus=streamItem-27-3821223.0-0)
|
||||
private static final boolean X11_DISABLE_OVERRIDE_FLAG = AccessController.doPrivileged(
|
||||
new GetBooleanAction("x11.disable.override.flag"));
|
||||
private static final boolean X11_DISABLE_OVERRIDE_XWINDOWPEER = AccessController.doPrivileged(
|
||||
new GetBooleanAction("x11.disable.override.xwindowpeer"));
|
||||
|
||||
|
||||
// should be synchronized on awtLock
|
||||
private static Set<XWindowPeer> windows = new HashSet<XWindowPeer>();
|
||||
|
||||
@@ -158,7 +167,7 @@ class XWindowPeer extends XPanelPeer implements WindowPeer,
|
||||
XA_NET_WM_STATE = XAtom.get("_NET_WM_STATE");
|
||||
|
||||
|
||||
params.put(OVERRIDE_REDIRECT, Boolean.valueOf(isOverrideRedirect()));
|
||||
params.put(OVERRIDE_REDIRECT, X11_DISABLE_OVERRIDE_FLAG ? Boolean.FALSE : Boolean.valueOf(isOverrideRedirect()));
|
||||
|
||||
SunToolkit.awtLock();
|
||||
try {
|
||||
@@ -1246,6 +1255,8 @@ class XWindowPeer extends XPanelPeer implements WindowPeer,
|
||||
}
|
||||
|
||||
boolean isOverrideRedirect() {
|
||||
if (X11_DISABLE_OVERRIDE_XWINDOWPEER)
|
||||
return false;
|
||||
return XWM.getWMID() == XWM.OPENLOOK_WM ||
|
||||
Window.Type.POPUP.equals(getWindowType());
|
||||
}
|
||||
|
||||
@@ -987,9 +987,9 @@ void AwtComponent::ReshapeNoScale(int x, int y, int w, int h)
|
||||
int usrX = x;
|
||||
int usrY = y;
|
||||
|
||||
AwtWin32GraphicsDevice* device = AwtWin32GraphicsDevice::GetDeviceByBounds(RECT_BOUNDS(x, y, w, h), GetHWnd());
|
||||
x = device->ScaleUpDX(x);
|
||||
y = device->ScaleUpDY(y);
|
||||
AwtWin32GraphicsDevice* device = UGetDeviceByBounds(URectBounds(x, y, w, h, USER_SPACE), this);
|
||||
x = device->ScaleUpX(x, RELATIVITY_FOR_COMP_XY(this));
|
||||
y = device->ScaleUpY(y, RELATIVITY_FOR_COMP_XY(this));
|
||||
w = device->ScaleUpX(w);
|
||||
h = device->ScaleUpY(h);
|
||||
|
||||
@@ -1651,7 +1651,7 @@ LRESULT AwtComponent::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
|
||||
window->AwtSetActiveWindow(TRUE, LOWORD(lParam)/*hittest*/);
|
||||
}
|
||||
mr = mrConsume;
|
||||
retValue = MA_NOACTIVATE;
|
||||
retValue = AwtToolkit::GetInstance().IsActiveWindowTrackingEnabled() ? MA_ACTIVATE : MA_NOACTIVATE;
|
||||
break;
|
||||
}
|
||||
case WM_CTLCOLORMSGBOX:
|
||||
@@ -2447,15 +2447,12 @@ void AwtComponent::WmTouchHandler(const TOUCHINPUT& touchInput)
|
||||
m_touchDownPoint = p;
|
||||
m_lastTouchPoint = p;
|
||||
m_isTouchScroll = FALSE;
|
||||
SendMouseWheelEventFromTouch(p, modifiers, TOUCH_BEGIN, 1);
|
||||
} else if (touchInput.dwFlags & TOUCHEVENTF_MOVE) {
|
||||
if (IsInsideTouchClickBoundaries(p)) {
|
||||
if (!m_isTouchScroll && IsInsideTouchClickBoundaries(p)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!m_isTouchScroll) {
|
||||
SendMouseWheelEventFromTouch(p, modifiers, TOUCH_BEGIN, 1);
|
||||
m_isTouchScroll = TRUE;
|
||||
}
|
||||
m_isTouchScroll = TRUE;
|
||||
|
||||
const int deltaY = ScaleDownY(static_cast<int>(m_lastTouchPoint.y - p.y));
|
||||
if (abs(deltaY) != 0) {
|
||||
@@ -2470,9 +2467,9 @@ void AwtComponent::WmTouchHandler(const TOUCHINPUT& touchInput)
|
||||
|
||||
m_lastTouchPoint = p;
|
||||
} else if (touchInput.dwFlags & TOUCHEVENTF_UP) {
|
||||
if (m_isTouchScroll) {
|
||||
SendMouseWheelEventFromTouch(p, modifiers, TOUCH_END, 1);
|
||||
} else {
|
||||
SendMouseWheelEventFromTouch(p, modifiers, TOUCH_END, 1);
|
||||
|
||||
if (!m_isTouchScroll) {
|
||||
SendMouseEventFromTouch(java_awt_event_MouseEvent_MOUSE_PRESSED, p, modifiers);
|
||||
SendMouseEventFromTouch(java_awt_event_MouseEvent_MOUSE_RELEASED, p, modifiers);
|
||||
SendMouseEventFromTouch(java_awt_event_MouseEvent_MOUSE_CLICKED, p, modifiers);
|
||||
@@ -4010,8 +4007,8 @@ void AwtComponent::OpenCandidateWindow(int x, int y)
|
||||
}
|
||||
HWND hTop = GetTopLevelParentForWindow(hWnd);
|
||||
::ClientToScreen(hTop, &p);
|
||||
int sx = ScaleUpDX(x) - p.x;
|
||||
int sy = ScaleUpDY(y) - p.y;
|
||||
int sx = ScaleUpX(x, ABSOLUTE_COORD) - p.x;
|
||||
int sy = ScaleUpY(y, ABSOLUTE_COORD) - p.y;
|
||||
if (!m_bitsCandType) {
|
||||
SetCandidateWindow(m_bitsCandType, sx, sy);
|
||||
return;
|
||||
@@ -4889,7 +4886,8 @@ void AwtComponent::FillAlpha(void *bitmapBits, SIZE &size, BYTE alpha)
|
||||
}
|
||||
}
|
||||
|
||||
int AwtComponent::ScaleUpX(int x) {
|
||||
int AwtComponent::ScaleUpX(int x, const UCoordRelativity& relativity) {
|
||||
if (relativity == ABSOLUTE_COORD) return ScaleUpDX(x);
|
||||
int screen = AwtWin32GraphicsDevice::DeviceIndexForWindow(GetHWnd());
|
||||
Devices::InstanceAccess devices;
|
||||
AwtWin32GraphicsDevice* device = devices->GetDevice(screen);
|
||||
@@ -4903,7 +4901,8 @@ int AwtComponent::ScaleUpDX(int x) {
|
||||
return device == NULL ? x : device->ScaleUpDX(x);
|
||||
}
|
||||
|
||||
int AwtComponent::ScaleUpY(int y) {
|
||||
int AwtComponent::ScaleUpY(int y, const UCoordRelativity& relativity) {
|
||||
if (relativity == ABSOLUTE_COORD) return ScaleUpDY(y);
|
||||
int screen = AwtWin32GraphicsDevice::DeviceIndexForWindow(GetHWnd());
|
||||
Devices::InstanceAccess devices;
|
||||
AwtWin32GraphicsDevice* device = devices->GetDevice(screen);
|
||||
@@ -4917,7 +4916,8 @@ int AwtComponent::ScaleUpDY(int y) {
|
||||
return device == NULL ? y : device->ScaleUpDY(y);
|
||||
}
|
||||
|
||||
int AwtComponent::ScaleDownX(int x) {
|
||||
int AwtComponent::ScaleDownX(int x, const UCoordRelativity& relativity) {
|
||||
if (relativity == ABSOLUTE_COORD) return ScaleDownDX(x);
|
||||
int screen = AwtWin32GraphicsDevice::DeviceIndexForWindow(GetHWnd());
|
||||
Devices::InstanceAccess devices;
|
||||
AwtWin32GraphicsDevice* device = devices->GetDevice(screen);
|
||||
@@ -4931,7 +4931,8 @@ int AwtComponent::ScaleDownDX(int x) {
|
||||
return device == NULL ? x : device->ScaleDownDX(x);
|
||||
}
|
||||
|
||||
int AwtComponent::ScaleDownY(int y) {
|
||||
int AwtComponent::ScaleDownY(int y, const UCoordRelativity& relativity) {
|
||||
if (relativity == ABSOLUTE_COORD) return ScaleUpDY(y);
|
||||
int screen = AwtWin32GraphicsDevice::DeviceIndexForWindow(GetHWnd());
|
||||
Devices::InstanceAccess devices;
|
||||
AwtWin32GraphicsDevice* device = devices->GetDevice(screen);
|
||||
@@ -7435,8 +7436,8 @@ void AwtComponent::VerifyState()
|
||||
target = parent;
|
||||
}
|
||||
|
||||
x = ScaleUpDX(x);
|
||||
y = ScaleUpDY(y);
|
||||
x = ScaleUpX(x, RELATIVITY_FOR_COMP_XY(this));
|
||||
y = ScaleUpY(y, RELATIVITY_FOR_COMP_XY(this));
|
||||
width = ScaleUpX(width);
|
||||
height = ScaleUpY(height);
|
||||
|
||||
|
||||
@@ -32,6 +32,8 @@
|
||||
#include "awt_Brush.h"
|
||||
#include "awt_Pen.h"
|
||||
#include "awt_Win32GraphicsDevice.h"
|
||||
#include "awt_Util.h"
|
||||
|
||||
#include "GDIWindowSurfaceData.h"
|
||||
|
||||
#include "java_awt_Component.h"
|
||||
@@ -736,10 +738,10 @@ public:
|
||||
return m_bPauseDestroy;
|
||||
}
|
||||
|
||||
int ScaleUpX(int x);
|
||||
int ScaleUpY(int y);
|
||||
int ScaleDownX(int x);
|
||||
int ScaleDownY(int y);
|
||||
int ScaleUpX(int x, const UCoordRelativity& relativity = RELATIVE_COORD);
|
||||
int ScaleUpY(int y, const UCoordRelativity& relativity = RELATIVE_COORD);
|
||||
int ScaleDownX(int x, const UCoordRelativity& relativity = RELATIVE_COORD);
|
||||
int ScaleDownY(int y, const UCoordRelativity& relativity = RELATIVE_COORD);
|
||||
int ScaleUpDX(int x);
|
||||
int ScaleUpDY(int y);
|
||||
int ScaleDownDX(int x);
|
||||
|
||||
@@ -1543,8 +1543,8 @@ void AwtFrame::_SetMaximizedBounds(void *param)
|
||||
if (::IsWindow(f->GetHWnd()))
|
||||
{
|
||||
DASSERT(!::IsBadReadPtr(f, sizeof(AwtFrame)));
|
||||
x = f->ScaleUpDX(x);
|
||||
y = f->ScaleUpDY(y);
|
||||
x = f->ScaleUpX(x, ABSOLUTE_COORD);
|
||||
y = f->ScaleUpY(y, ABSOLUTE_COORD);
|
||||
width = f->ScaleUpX(width);
|
||||
height = f->ScaleUpY(height);
|
||||
f->SetMaximizedBounds(x, y, width, height);
|
||||
|
||||
@@ -700,6 +700,13 @@ BOOL AwtToolkit::Initialize(BOOL localPump) {
|
||||
tk.m_touchKbrdAutoShowIsEnabled = env->CallStaticBooleanMethod(
|
||||
sunToolkitCls, isTouchKeyboardAutoShowEnabledMID);
|
||||
|
||||
BOOL tracking = FALSE;
|
||||
int result = 0;
|
||||
result = ::SystemParametersInfo(SPI_GETACTIVEWINDOWTRACKING, 0,
|
||||
&tracking, 0);
|
||||
|
||||
tk.m_active_window_tracking_mode_enabled = (tracking && (result != 0));
|
||||
|
||||
CATCH_BAD_ALLOC_RET(FALSE);
|
||||
|
||||
if (tk.m_isWin8OrLater && tk.m_touchKbrdAutoShowIsEnabled) {
|
||||
@@ -803,6 +810,10 @@ BOOL AwtToolkit::IsDynamicLayoutSet() {
|
||||
return m_isDynamicLayoutSet;
|
||||
}
|
||||
|
||||
BOOL AwtToolkit::IsActiveWindowTrackingEnabled() {
|
||||
return m_active_window_tracking_mode_enabled;
|
||||
}
|
||||
|
||||
BOOL AwtToolkit::IsDynamicLayoutSupported() {
|
||||
// SPI_GETDRAGFULLWINDOWS is only supported on Win95 if
|
||||
// Windows Plus! is installed. Otherwise, box frame resize.
|
||||
|
||||
@@ -240,6 +240,7 @@ public:
|
||||
void SetDynamicLayout(BOOL dynamic);
|
||||
BOOL IsDynamicLayoutSet();
|
||||
BOOL IsDynamicLayoutSupported();
|
||||
BOOL IsActiveWindowTrackingEnabled();
|
||||
BOOL IsDynamicLayoutActive();
|
||||
BOOL areExtraMouseButtonsEnabled();
|
||||
void setExtraMouseButtonsEnabled(BOOL enable);
|
||||
@@ -477,6 +478,7 @@ private:
|
||||
BOOL m_isActive; // set to FALSE at beginning of Dispose
|
||||
BOOL m_isDisposed; // set to TRUE at end of Dispose
|
||||
BOOL m_areExtraMouseButtonsEnabled;
|
||||
BOOL m_active_window_tracking_mode_enabled;
|
||||
|
||||
typedef BOOL (WINAPI *RegisterTouchWindowFunc)(HWND hWnd, ULONG ulFlags);
|
||||
typedef BOOL (WINAPI *GetTouchInputInfoFunc)(HTOUCHINPUT hTouchInput,
|
||||
|
||||
32
src/java.desktop/windows/native/libawt/windows/awt_Util.cpp
Normal file
32
src/java.desktop/windows/native/libawt/windows/awt_Util.cpp
Normal file
@@ -0,0 +1,32 @@
|
||||
// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
|
||||
#include "awt_Util.h"
|
||||
#include "awt_Component.h"
|
||||
#include "awt_Win32GraphicsDevice.h"
|
||||
#include "awt_Win32GraphicsConfig.h"
|
||||
|
||||
AwtWin32GraphicsDevice* UGetDeviceByBounds(const URectBounds& bounds, AwtComponent* comp)
|
||||
{
|
||||
URectBounds _bounds(bounds);
|
||||
if (comp != NULL && !comp->IsTopLevel()) {
|
||||
// use the ancestor window to match the device
|
||||
_bounds = UGetWindowRectBounds(::GetAncestor(comp->GetHWnd(), GA_ROOT));
|
||||
}
|
||||
Devices::InstanceAccess devices;
|
||||
POINT center = {_bounds.x + _bounds.width / 2, _bounds.y + _bounds.height / 2};
|
||||
for (int i = 0; i < devices->GetNumDevices(); i++) {
|
||||
RECT rect = AwtWin32GraphicsConfig::getMonitorBounds(i, _bounds.space);
|
||||
if (::PtInRect(&rect, center)) {
|
||||
return devices->GetDevice(i);
|
||||
}
|
||||
}
|
||||
// default to the hwnd's device
|
||||
return comp != NULL ? devices->GetDevice(AwtWin32GraphicsDevice::DeviceIndexForWindow(comp->GetHWnd())) : NULL;
|
||||
}
|
||||
|
||||
URectBounds UGetWindowRectBounds(HWND hwnd)
|
||||
{
|
||||
RECT r;
|
||||
::GetWindowRect(hwnd, &r);
|
||||
return URectBounds(r.left, r.top, r.right - r.left, r.bottom - r.top, DEVICE_SPACE);
|
||||
}
|
||||
47
src/java.desktop/windows/native/libawt/windows/awt_Util.h
Normal file
47
src/java.desktop/windows/native/libawt/windows/awt_Util.h
Normal file
@@ -0,0 +1,47 @@
|
||||
// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
|
||||
#ifndef NATIVE_AWT_UTIL_H
|
||||
#define NATIVE_AWT_UTIL_H
|
||||
|
||||
#include <windows.h>
|
||||
|
||||
typedef enum {
|
||||
DEVICE_SPACE,
|
||||
USER_SPACE
|
||||
} UCoordSpace;
|
||||
|
||||
typedef enum {
|
||||
RELATIVE_COORD,
|
||||
ABSOLUTE_COORD
|
||||
} UCoordRelativity;
|
||||
|
||||
#define RELATIVITY_FOR_COMP_XY(compPtr) compPtr->IsTopLevel() ? ABSOLUTE_COORD : RELATIVE_COORD
|
||||
|
||||
typedef struct URectBounds {
|
||||
int x;
|
||||
int y;
|
||||
int width;
|
||||
int height;
|
||||
UCoordSpace space;
|
||||
|
||||
URectBounds(int _x, int _y, int _w, int _h, const UCoordSpace& _space) : x(_x), y(_y), width(_w), height(_h), space(_space) {}
|
||||
|
||||
URectBounds(const URectBounds& b) : x(b.x), y(b.y), width(b.width), height(b.height), space(b.space) {}
|
||||
|
||||
URectBounds& operator=(const URectBounds& b) {
|
||||
x = b.x;
|
||||
y = b.y;
|
||||
width = b.width;
|
||||
height = b.height;
|
||||
space = b.space;
|
||||
return *this;
|
||||
}
|
||||
} URectBounds;
|
||||
|
||||
class AwtComponent;
|
||||
class AwtWin32GraphicsDevice;
|
||||
|
||||
URectBounds UGetWindowRectBounds(HWND hwnd);
|
||||
AwtWin32GraphicsDevice* UGetDeviceByBounds(const URectBounds& bounds, AwtComponent* comp = NULL);
|
||||
|
||||
#endif //NATIVE_AWT_UTIL_H
|
||||
@@ -77,7 +77,7 @@ inline int shiftToMask(int numBits, int shift) {
|
||||
return mask;
|
||||
}
|
||||
|
||||
RECT AwtWin32GraphicsConfig::getMonitorBounds(int screen)
|
||||
RECT AwtWin32GraphicsConfig::getMonitorBounds(int screen, const UCoordSpace& space)
|
||||
{
|
||||
RECT rRW = {0, 0, 0, 0};
|
||||
Devices::InstanceAccess devices;
|
||||
@@ -87,9 +87,9 @@ RECT AwtWin32GraphicsConfig::getMonitorBounds(int screen)
|
||||
// don't scale xy to avoid overlapping of the multi-dpi-monitors bounds in the user space
|
||||
int x = rRW.left;
|
||||
int y = rRW.top;
|
||||
int w = (device == NULL) ? rRW.right - rRW.left
|
||||
int w = (device == NULL || space == DEVICE_SPACE) ? rRW.right - rRW.left
|
||||
: device->ScaleDownX(rRW.right - rRW.left);
|
||||
int h = (device == NULL) ? rRW.bottom - rRW.top
|
||||
int h = (device == NULL || space == DEVICE_SPACE) ? rRW.bottom - rRW.top
|
||||
: device->ScaleDownY(rRW.bottom - rRW.top);
|
||||
|
||||
::SetRect(&rRW, x, y, x + w, y + h);
|
||||
@@ -100,8 +100,8 @@ RECT AwtWin32GraphicsConfig::getMonitorBounds(int screen)
|
||||
int w = ::GetSystemMetrics(SM_CXSCREEN);
|
||||
int h = ::GetSystemMetrics(SM_CYSCREEN);
|
||||
|
||||
::SetRect(&rRW, 0, 0, device == NULL ? w : device->ScaleDownX(w),
|
||||
device == NULL ? h : device->ScaleDownY(h));
|
||||
::SetRect(&rRW, 0, 0, device == NULL || space == DEVICE_SPACE ? w : device->ScaleDownX(w),
|
||||
device == NULL || space == DEVICE_SPACE ? h : device->ScaleDownY(h));
|
||||
}
|
||||
return rRW;
|
||||
}
|
||||
@@ -123,7 +123,7 @@ JNIEXPORT jobject JNICALL
|
||||
CHECK_NULL_RETURN(clazz, NULL);
|
||||
mid = env->GetMethodID(clazz, "<init>", "(IIII)V");
|
||||
if (mid != 0) {
|
||||
RECT r = AwtWin32GraphicsConfig::getMonitorBounds((int)screen);
|
||||
RECT r = AwtWin32GraphicsConfig::getMonitorBounds((int)screen, USER_SPACE);
|
||||
bounds = env->NewObject(clazz, mid, r.left, r.top, r.right - r.left, r.bottom - r.top);
|
||||
if (safe_ExceptionOccurred(env)) {
|
||||
return 0;
|
||||
|
||||
@@ -27,12 +27,13 @@
|
||||
#define AWT_WIN32GRAPHICSCONFIG_H
|
||||
|
||||
#include "awt.h"
|
||||
#include "awt_Win32GraphicsDevice.h"
|
||||
|
||||
class AwtWin32GraphicsConfig {
|
||||
public:
|
||||
/* sun.awt.Win32GraphicsConfig fields and method IDs */
|
||||
static jfieldID win32GCVisualID;
|
||||
static RECT getMonitorBounds(int screen);
|
||||
static RECT getMonitorBounds(int screen, const UCoordSpace& space);
|
||||
};
|
||||
|
||||
#endif /* AWT_WIN32GRAPHICSCONFIG_H */
|
||||
|
||||
@@ -631,45 +631,45 @@ void AwtWin32GraphicsDevice::SetScale(float sx, float sy)
|
||||
scaleY = sy;
|
||||
}
|
||||
|
||||
int AwtWin32GraphicsDevice::ScaleUpX(int x)
|
||||
int AwtWin32GraphicsDevice::ScaleUpX(int x, const UCoordRelativity& relativity)
|
||||
{
|
||||
return ClipRound(x * scaleX);
|
||||
return relativity == RELATIVE_COORD ? ClipRound(x * scaleX) : ScaleUpDX(x);
|
||||
}
|
||||
|
||||
// scale up the delta [x - device.x]
|
||||
int AwtWin32GraphicsDevice::ScaleUpDX(int x)
|
||||
{
|
||||
RECT devBounds = AwtWin32GraphicsConfig::getMonitorBounds(screen);
|
||||
RECT devBounds = AwtWin32GraphicsConfig::getMonitorBounds(screen, DEVICE_SPACE);
|
||||
return devBounds.left + ClipRound((x - devBounds.left) * scaleX);
|
||||
}
|
||||
|
||||
int AwtWin32GraphicsDevice::ScaleUpY(int y)
|
||||
int AwtWin32GraphicsDevice::ScaleUpY(int y, const UCoordRelativity& relativity)
|
||||
{
|
||||
return ClipRound(y * scaleY);
|
||||
return relativity == RELATIVE_COORD ? ClipRound(y * scaleY) : ScaleUpDY(y);
|
||||
}
|
||||
|
||||
// scale up the delta [y - device.y]
|
||||
int AwtWin32GraphicsDevice::ScaleUpDY(int y)
|
||||
{
|
||||
RECT devBounds = AwtWin32GraphicsConfig::getMonitorBounds(screen);
|
||||
RECT devBounds = AwtWin32GraphicsConfig::getMonitorBounds(screen, DEVICE_SPACE);
|
||||
return devBounds.top + ClipRound((y - devBounds.top) * scaleY);
|
||||
}
|
||||
|
||||
int AwtWin32GraphicsDevice::ScaleDownX(int x)
|
||||
int AwtWin32GraphicsDevice::ScaleDownX(int x, const UCoordRelativity& relativity)
|
||||
{
|
||||
return ClipRound(x / scaleX);
|
||||
return relativity == RELATIVE_COORD ? ClipRound(x / scaleX) : ScaleDownDX(x);
|
||||
}
|
||||
|
||||
// scale down the delta [x - device.x]
|
||||
int AwtWin32GraphicsDevice::ScaleDownDX(int x)
|
||||
{
|
||||
RECT devBounds = AwtWin32GraphicsConfig::getMonitorBounds(screen);
|
||||
RECT devBounds = AwtWin32GraphicsConfig::getMonitorBounds(screen, USER_SPACE);
|
||||
return devBounds.left + ClipRound((x - devBounds.left) / scaleX);
|
||||
}
|
||||
|
||||
int AwtWin32GraphicsDevice::ScaleDownY(int y)
|
||||
int AwtWin32GraphicsDevice::ScaleDownY(int y, const UCoordRelativity& relativity)
|
||||
{
|
||||
return ClipRound(y / scaleY);
|
||||
return relativity == RELATIVE_COORD ? ClipRound(y / scaleY) : ScaleDownDY(y);
|
||||
}
|
||||
|
||||
int AwtWin32GraphicsDevice::ClipRound(double value)
|
||||
@@ -691,7 +691,7 @@ int AwtWin32GraphicsDevice::ClipRound(double value)
|
||||
// scale down the delta [y - device.y]
|
||||
int AwtWin32GraphicsDevice::ScaleDownDY(int y)
|
||||
{
|
||||
RECT devBounds = AwtWin32GraphicsConfig::getMonitorBounds(screen);
|
||||
RECT devBounds = AwtWin32GraphicsConfig::getMonitorBounds(screen, USER_SPACE);
|
||||
return devBounds.top + ClipRound((y - devBounds.top) / scaleY);
|
||||
}
|
||||
|
||||
@@ -947,20 +947,6 @@ BOOL AwtWin32GraphicsDevice::IsUiScaleEnabled()
|
||||
"()Z").z;
|
||||
}
|
||||
|
||||
AwtWin32GraphicsDevice* AwtWin32GraphicsDevice::GetDeviceByBounds(RECT_BOUNDS bounds, HWND hwnd) // bounds in user space
|
||||
{
|
||||
Devices::InstanceAccess devices;
|
||||
POINT center = {bounds.x + bounds.width / 2, bounds.y + bounds.height / 2};
|
||||
for (int i = 0; i < devices->GetNumDevices(); i++) {
|
||||
RECT rect = AwtWin32GraphicsConfig::getMonitorBounds(i); // rect in user space
|
||||
if (::PtInRect(&rect, center)) {
|
||||
return devices->GetDevice(i);
|
||||
}
|
||||
}
|
||||
// default to the hwnd's device
|
||||
return hwnd != NULL ? devices->GetDevice(AwtWin32GraphicsDevice::DeviceIndexForWindow(hwnd)) : NULL;
|
||||
}
|
||||
|
||||
const DWORD REQUIRED_FLAGS = ( //Flags which must be set in
|
||||
PFD_SUPPORT_GDI | //in the PixelFormatDescriptor.
|
||||
PFD_DRAW_TO_WINDOW); //Used to choose the default config
|
||||
|
||||
@@ -33,14 +33,7 @@ extern "C" {
|
||||
#include "colordata.h"
|
||||
#include "awt_Palette.h"
|
||||
#include "Devices.h"
|
||||
|
||||
struct RECT_BOUNDS {
|
||||
int x;
|
||||
int y;
|
||||
int width;
|
||||
int height;
|
||||
RECT_BOUNDS(int _x, int _y, int _w, int _h) : x(_x), y(_y), width(_w), height(_h) {}
|
||||
};
|
||||
#include "awt_Util.h"
|
||||
|
||||
class AwtPalette;
|
||||
class Devices;
|
||||
@@ -78,10 +71,10 @@ public:
|
||||
void SetScale(float scaleX, float scaleY);
|
||||
float GetScaleX();
|
||||
float GetScaleY();
|
||||
int ScaleUpX(int x);
|
||||
int ScaleUpY(int y);
|
||||
int ScaleDownX(int x);
|
||||
int ScaleDownY(int y);
|
||||
int ScaleUpX(int x, const UCoordRelativity& relativity = RELATIVE_COORD);
|
||||
int ScaleUpY(int y, const UCoordRelativity& relativity = RELATIVE_COORD);
|
||||
int ScaleDownX(int x, const UCoordRelativity& relativity = RELATIVE_COORD);
|
||||
int ScaleDownY(int y, const UCoordRelativity& relativity = RELATIVE_COORD);
|
||||
int ScaleUpDX(int x);
|
||||
int ScaleUpDY(int y);
|
||||
int ScaleDownDX(int x);
|
||||
@@ -107,14 +100,6 @@ public:
|
||||
static HDC GetDCFromScreen(int screen);
|
||||
static int GetScreenFromHMONITOR(HMONITOR mon);
|
||||
static BOOL IsUiScaleEnabled(); // if not, be dpi-unaware (backward compatible behaviour)
|
||||
static AwtWin32GraphicsDevice* GetDeviceByBounds(RECT_BOUNDS bounds , HWND hwnd = NULL); // bounds in user space
|
||||
|
||||
inline static RECT_BOUNDS GetWindowRect(HWND hwnd)
|
||||
{
|
||||
RECT r;
|
||||
::GetWindowRect(hwnd, &r);
|
||||
return RECT_BOUNDS(r.left, r.top, r.right - r.left, r.bottom - r.top);
|
||||
}
|
||||
|
||||
static int primaryIndex;
|
||||
static BOOL primaryPalettized;
|
||||
|
||||
@@ -40,6 +40,7 @@
|
||||
#include "awt_IconCursor.h"
|
||||
#include "ComCtl32Util.h"
|
||||
#include "math.h"
|
||||
#include "awt_Util.h"
|
||||
|
||||
#include "java_awt_Insets.h"
|
||||
#include <java_awt_Container.h>
|
||||
@@ -1870,8 +1871,8 @@ MsgRouting AwtWindow::WmMove(int x, int y)
|
||||
jobject peer = GetPeer(env);
|
||||
jobject target = env->GetObjectField(peer, AwtObject::targetID);
|
||||
|
||||
RECT_BOUNDS rect = AwtWin32GraphicsDevice::GetWindowRect(GetHWnd());
|
||||
AwtWin32GraphicsDevice* device = AwtWin32GraphicsDevice::GetDeviceByBounds(rect, GetHWnd());
|
||||
URectBounds rect = UGetWindowRectBounds(GetHWnd());
|
||||
AwtWin32GraphicsDevice* device = UGetDeviceByBounds(rect, this);
|
||||
|
||||
int usrX = device->ScaleDownDX(rect.x);
|
||||
int usrY = device->ScaleDownDY(rect.y);
|
||||
@@ -1985,8 +1986,8 @@ MsgRouting AwtWindow::WmSize(UINT type, int w, int h)
|
||||
BOOL insetsChanged = UpdateInsets(NULL);
|
||||
int newWidth = w + m_insets.left + m_insets.right;
|
||||
int newHeight = h + m_insets.top + m_insets.bottom;
|
||||
RECT_BOUNDS rect = AwtWin32GraphicsDevice::GetWindowRect(GetHWnd());
|
||||
AwtWin32GraphicsDevice* device = AwtWin32GraphicsDevice::GetDeviceByBounds(rect, GetHWnd());
|
||||
URectBounds rect = UGetWindowRectBounds(GetHWnd());
|
||||
AwtWin32GraphicsDevice* device = UGetDeviceByBounds(rect, this);
|
||||
(env)->SetIntField(target, AwtComponent::widthID, device->ScaleDownX(newWidth));
|
||||
(env)->SetIntField(target, AwtComponent::heightID, device->ScaleDownY(newHeight));
|
||||
|
||||
|
||||
@@ -47,11 +47,14 @@ compiler/codecache/stress/OverloadCompileQueueTest.java
|
||||
compiler/codegen/Test6896617.java 8193479 generic-all
|
||||
compiler/codegen/aes/TestCipherBlockChainingEncrypt.java 8219513 generic-all
|
||||
compiler/compilercontrol/jcmd/ClearDirectivesFileStackTest.java 8140405 generic-all
|
||||
compiler/escapeAnalysis/TestSelfArrayCopy.java 8229016 macosx-all,linux-all
|
||||
compiler/intrinsics/sha/sanity/TestSHA512MultiBlockIntrinsics.java 8209459 linux-aarch64
|
||||
compiler/jsr292/ContinuousCallSiteTargetChange.java 8222030 generic-all
|
||||
compiler/jvmci/compilerToVM/GetFlagValueTest.java 8204459 generic-all
|
||||
compiler/jvmci/compilerToVM/GetResolvedJavaTypeTest.java 8158860 generic-all
|
||||
compiler/jvmci/compilerToVM/InvalidateInstalledCodeTest.java 8163894 generic-all
|
||||
compiler/loopopts/SplitIfSharedFastLockBehindCastPP.java 8235762 linux-all,macosx-all
|
||||
compiler/loopopts/TestDivZeroCheckControl.java 8229496 macosx-all
|
||||
compiler/tiered/LevelTransitionTest.java 8067651 generic-all
|
||||
compiler/types/correctness/CorrectnessTest.java 8066173 generic-all
|
||||
compiler/types/correctness/OffTest.java 8066173 generic-all
|
||||
@@ -73,6 +76,8 @@ gc/g1/humongousObjects/objectGraphTest/TestObjectGraphAfterGC.java
|
||||
gc/survivorAlignment/TestPromotionToSurvivor.java 8129886 generic-all
|
||||
gc/g1/logging/TestG1LoggingFailure.java 8169634 generic-all
|
||||
gc/g1/humongousObjects/TestHeapCounters.java 8178918 generic-all
|
||||
gc/g1/humongousObjects/TestHumongousClassLoader.java 8225186 linux-all,windows-all
|
||||
gc/metaspace/TestCapacityUntilGCWrapAround.java 8226236 windows-x86
|
||||
gc/stress/gclocker/TestGCLockerWithParallel.java 8180622 generic-all
|
||||
gc/stress/gclocker/TestGCLockerWithG1.java 8180622 generic-all
|
||||
gc/survivorAlignment/TestPromotionFromSurvivorToTenuredAfterMinorGC.java 8177765 generic-all
|
||||
@@ -83,6 +88,7 @@ gc/stress/TestReclaimStringsLeaksMemory.java
|
||||
|
||||
# :hotspot_runtime
|
||||
|
||||
runtime/BootstrapMethod/TestLambdaExceptionInInitializer.java 8208172 macosx-all
|
||||
runtime/CompressedOops/UseCompressedOops.java 8079353 generic-all
|
||||
runtime/NMT/MallocStressTest.java 8079353 generic-all
|
||||
runtime/SelectionResolution/InvokeInterfaceICCE.java 8224795 generic-all
|
||||
@@ -100,45 +106,45 @@ runtime/modules/ModuleStress/ModuleStressGC.java
|
||||
|
||||
serviceability/logging/TestQuotedLogOutputs.java 8224505 windows-all
|
||||
|
||||
serviceability/sa/ClhsdbAttach.java 8193639 solaris-all
|
||||
serviceability/sa/ClhsdbCDSCore.java 8207832 linux-all,generic-all crash is the expected behaviour
|
||||
serviceability/sa/ClhsdbAttach.java 8193639,8194687 solaris-all,windows-x86
|
||||
serviceability/sa/ClhsdbCDSCore.java 8207832,8194687 linux-all,generic-all crash is the expected behaviour
|
||||
serviceability/sa/ClhsdbCDSJstackPrintAll.java 8193639 solaris-all
|
||||
serviceability/sa/ClhsdbField.java 8193639 solaris-all
|
||||
serviceability/sa/ClhsdbFindPC.java 8193639 solaris-all
|
||||
serviceability/sa/ClhsdbFlags.java 8193639 solaris-all
|
||||
serviceability/sa/ClhsdbInspect.java 8193639 solaris-all
|
||||
serviceability/sa/ClhsdbJdis.java 8193639 solaris-all
|
||||
serviceability/sa/ClhsdbJhisto.java 8193639 solaris-all
|
||||
serviceability/sa/ClhsdbJstack.java 8193639 solaris-all
|
||||
serviceability/sa/ClhsdbLongConstant.java 8193639 solaris-all
|
||||
serviceability/sa/ClhsdbPmap.java 8193639 solaris-all
|
||||
serviceability/sa/ClhsdbField.java 8193639,8194687 solaris-all,windows-x86
|
||||
serviceability/sa/ClhsdbFindPC.java 8193639,8194687 solaris-all,windows-x86
|
||||
serviceability/sa/ClhsdbFlags.java 8193639,8194687 solaris-all,windows-x86
|
||||
serviceability/sa/ClhsdbInspect.java 8193639,8194687 solaris-all,windows-x86
|
||||
serviceability/sa/ClhsdbJdis.java 8193639,8194687 solaris-all,windows-x86
|
||||
serviceability/sa/ClhsdbJhisto.java 8193639,8194687 solaris-all,windows-x86
|
||||
serviceability/sa/ClhsdbJstack.java 8193639,8194687 solaris-all,windows-x86
|
||||
serviceability/sa/ClhsdbLongConstant.java 8193639,8194687 solaris-all,windows-x86
|
||||
serviceability/sa/ClhsdbPmap.java 8193639,8194687 solaris-all,windows-x86
|
||||
serviceability/sa/ClhsdbPrintAll.java 8193639 solaris-all
|
||||
serviceability/sa/ClhsdbPrintAs.java 8193639 solaris-all
|
||||
serviceability/sa/ClhsdbPrintStatics.java 8193639 solaris-all
|
||||
serviceability/sa/ClhsdbPstack.java 8193639 solaris-all
|
||||
serviceability/sa/ClhsdbPrintAs.java 8193639,8194687 solaris-all,windows-x86
|
||||
serviceability/sa/ClhsdbPrintStatics.java 8193639,8194687 solaris-all,windows-x86
|
||||
serviceability/sa/ClhsdbPstack.java 8193639,8194687 solaris-all,windows-x86
|
||||
serviceability/sa/ClhsdbRegionDetailsScanOopsForG1.java 8193639 solaris-all
|
||||
serviceability/sa/ClhsdbScanOops.java 8193639 solaris-all
|
||||
serviceability/sa/ClhsdbSource.java 8193639 solaris-all
|
||||
serviceability/sa/ClhsdbSymbol.java 8193639 solaris-all
|
||||
serviceability/sa/ClhsdbSymbolTable.java 8193639 solaris-all
|
||||
serviceability/sa/ClhsdbThread.java 8193639 solaris-all
|
||||
serviceability/sa/ClhsdbVmStructsDump.java 8193639 solaris-all
|
||||
serviceability/sa/ClhsdbWhere.java 8193639 solaris-all
|
||||
serviceability/sa/DeadlockDetectionTest.java 8193639 solaris-all
|
||||
serviceability/sa/JhsdbThreadInfoTest.java 8193639 solaris-all
|
||||
serviceability/sa/ClhsdbScanOops.java 8193639,8194687 solaris-all,windows-x86
|
||||
serviceability/sa/ClhsdbSource.java 8193639,8194687 solaris-all,windows-x86
|
||||
serviceability/sa/ClhsdbSymbol.java 8193639,8194687 solaris-all,windows-x86
|
||||
serviceability/sa/ClhsdbSymbolTable.java 8193639,8194687 solaris-all,windows-x86
|
||||
serviceability/sa/ClhsdbThread.java 8193639,8194687 solaris-all,windows-x86
|
||||
serviceability/sa/ClhsdbVmStructsDump.java 8193639,8194687 solaris-all,windows-x86
|
||||
serviceability/sa/ClhsdbWhere.java 8193639,8194687 solaris-all,windows-x86
|
||||
serviceability/sa/DeadlockDetectionTest.java 8193639,8194687 solaris-all,windows-x86
|
||||
serviceability/sa/JhsdbThreadInfoTest.java 8193639,8194687 solaris-all,windows-x86
|
||||
serviceability/sa/sadebugd/SADebugDTest.java 8163805 generic-all
|
||||
serviceability/sa/TestClassDump.java 8193639 solaris-all
|
||||
serviceability/sa/TestCpoolForInvokeDynamic.java 8193639 solaris-all
|
||||
serviceability/sa/TestDefaultMethods.java 8193639 solaris-all
|
||||
serviceability/sa/TestG1HeapRegion.java 8193639 solaris-all
|
||||
serviceability/sa/TestHeapDumpForInvokeDynamic.java 8193639 solaris-all
|
||||
serviceability/sa/TestHeapDumpForLargeArray.java 8193639 solaris-all
|
||||
serviceability/sa/TestInstanceKlassSizeForInterface.java 8193639 solaris-all
|
||||
serviceability/sa/TestIntConstant.java 8193639 solaris-all
|
||||
serviceability/sa/TestJhsdbJstackLock.java 8193639 solaris-all
|
||||
serviceability/sa/TestRevPtrsForInvokeDynamic.java 8191270 generic-all
|
||||
serviceability/sa/TestType.java 8193639 solaris-all
|
||||
serviceability/sa/TestUniverse.java#id0 8193639 solaris-all
|
||||
serviceability/sa/TestClassDump.java 8193639,8194687 solaris-all,windows-x86
|
||||
serviceability/sa/TestCpoolForInvokeDynamic.java 8193639,8194687 solaris-all,windows-x86
|
||||
serviceability/sa/TestDefaultMethods.java 8193639,8194687 solaris-all,windows-x86
|
||||
serviceability/sa/TestG1HeapRegion.java 8193639,8194687 solaris-all,windows-x86
|
||||
serviceability/sa/TestHeapDumpForInvokeDynamic.java 8193639,8194687 solaris-all,windows-x86
|
||||
serviceability/sa/TestHeapDumpForLargeArray.java 8193639,8194687 solaris-all,windows-x86
|
||||
serviceability/sa/TestInstanceKlassSizeForInterface.java 8193639,8194687 solaris-all,windows-x86
|
||||
serviceability/sa/TestIntConstant.java 8193639,8194687 solaris-all,windows-x86
|
||||
serviceability/sa/TestJhsdbJstackLock.java 8193639,8194687 solaris-all,windows-x86
|
||||
serviceability/sa/TestRevPtrsForInvokeDynamic.java 8191270,8194687 generic-all
|
||||
serviceability/sa/TestType.java 8193639,8194687 solaris-all,windows-x86
|
||||
serviceability/sa/TestUniverse.java#id0 8193639,8194687 solaris-all,windows-x86
|
||||
|
||||
#############################################################################
|
||||
|
||||
|
||||
62
test/jdk/java/awt/FileDialog/MacOSGoToFolderCrash.java
Normal file
62
test/jdk/java/awt/FileDialog/MacOSGoToFolderCrash.java
Normal file
@@ -0,0 +1,62 @@
|
||||
/*
|
||||
* Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
import java.awt.EventQueue;
|
||||
import java.awt.FileDialog;
|
||||
import java.awt.Frame;
|
||||
import java.awt.Robot;
|
||||
import java.awt.event.KeyEvent;
|
||||
|
||||
/**
|
||||
* @test
|
||||
* @key headful
|
||||
* @bug 8234522
|
||||
* @requires (os.family == "mac")
|
||||
*/
|
||||
public final class MacOSGoToFolderCrash {
|
||||
|
||||
public static void main(final String[] args) throws Exception {
|
||||
EventQueue.invokeLater(() -> {
|
||||
FileDialog fd = new FileDialog((Frame) null);
|
||||
fd.setVisible(true);
|
||||
});
|
||||
Robot robot = new Robot();
|
||||
robot.setAutoDelay(400);
|
||||
robot.waitForIdle();
|
||||
// "⌘+Shift+G" – Open "Go To Folder" window
|
||||
robot.keyPress(KeyEvent.VK_META);
|
||||
robot.keyPress(KeyEvent.VK_SHIFT);
|
||||
robot.keyPress(KeyEvent.VK_G);
|
||||
robot.keyRelease(KeyEvent.VK_G);
|
||||
robot.keyRelease(KeyEvent.VK_SHIFT);
|
||||
robot.keyRelease(KeyEvent.VK_META);
|
||||
// Select something
|
||||
robot.keyPress(KeyEvent.VK_DOWN);
|
||||
robot.keyRelease(KeyEvent.VK_DOWN);
|
||||
robot.keyPress(KeyEvent.VK_ENTER);
|
||||
robot.keyRelease(KeyEvent.VK_ENTER);
|
||||
// Close File dialog
|
||||
robot.keyPress(KeyEvent.VK_ESCAPE);
|
||||
robot.keyRelease(KeyEvent.VK_ESCAPE);
|
||||
}
|
||||
}
|
||||
@@ -137,7 +137,7 @@ java/awt/Component/SetEnabledPerformance/SetEnabledPerformance.java
|
||||
java/awt/Debug/DumpOnKey/DumpOnKey.java 8202667 windows-all,linux-all
|
||||
java/awt/Dialog/DialogAboveFrame/DialogAboveFrame.java 8214923 windows-all,macosx-all
|
||||
java/awt/Dialog/DialogAboveFrame/DialogAboveFrameTest.java 8215105 macosx-all,windows-all
|
||||
java/awt/Dialog/NestedDialogs/Modeless/NestedModelessDialogTest.java 8225790 linux-all
|
||||
java/awt/Dialog/NestedDialogs/Modeless/NestedModelessDialogTest.java 8225790 linux-all,windows-x86
|
||||
java/awt/Dialog/SiblingChildOrder/SiblingChildOrderTest.java 8215105,8221383 macosx-all,windows-all
|
||||
java/awt/EmbeddedFrame/EmbeddedFrameGrabTest/EmbeddedFrameGrabTest.java 8159069 windows-all
|
||||
java/awt/EventDispatchThread/HandleExceptionOnEDT/HandleExceptionOnEDT.java 8203047 macosx-all,linux-all,windows-all
|
||||
@@ -197,6 +197,7 @@ java/awt/Focus/WrongKeyTypedConsumedTest/WrongKeyTypedConsumedTest.java
|
||||
java/awt/FontMetrics/FontCrash.java 8198336 windows-all
|
||||
java/awt/FontMetrics/MaxAdvanceIsMax.java 8221304 solaris-all,macosx-all
|
||||
java/awt/Frame/DisposeParentGC/DisposeParentGC.java 8079786,8055833 macosx-all,linux-all
|
||||
java/awt/Frame/DisposeStressTest/DisposeStressTest.html JBR-1905 macosx-all
|
||||
java/awt/Frame/ExceptionOnSetExtendedStateTest/ExceptionOnSetExtendedStateTest.java 8198237 macosx-all
|
||||
java/awt/Frame/FramesGC/FramesGC.java 8079069 macosx-all
|
||||
java/awt/Frame/FrameLocation/FrameLocation.java 8019803 macosx-all
|
||||
@@ -206,6 +207,7 @@ java/awt/Frame/MaximizedUndecorated/MaximizedUndecorated.java
|
||||
java/awt/Frame/MiscUndecorated/RepaintTest.java 8079267 windows-all,linux-all
|
||||
java/awt/Frame/SetMaximizedBounds/SetMaximizedBounds.java 8196006 macosx-all,windows-all
|
||||
java/awt/Frame/ShapeNotSetSometimes/ShapeNotSetSometimes.java 8144030 macosx-all,linux-all,windows-all
|
||||
java/awt/Frame/ShownOffScreenOnWin98/ShownOffScreenOnWin98Test.java 8214505 linux-all
|
||||
java/awt/Frame/UnfocusableMaximizedFrameResizablity/UnfocusableMaximizedFrameResizablity.java 8208290 macosx-all
|
||||
java/awt/Frame/WindowDragTest/WindowDragTest.java 8169470 generic-all
|
||||
java/awt/FullScreen/8013581/bug8013581.java 8169471 macosx-all,windows-all,linux-all
|
||||
@@ -282,7 +284,7 @@ java/awt/Mixing/AWT_Mixing/MixingPanelsResizing.java
|
||||
java/awt/Mixing/AWT_Mixing/OpaqueOverlapping.java 8194045 generic-all
|
||||
java/awt/Mixing/AWT_Mixing/OpaqueOverlappingChoice.java 8048171 generic-all
|
||||
java/awt/Mixing/AWT_Mixing/ViewportOverlapping.java 8194045 generic-all
|
||||
java/awt/Mixing/MixingOnDialog.java 7124549 macosx-all,windows-all
|
||||
java/awt/Mixing/MixingOnDialog.java 7124549,8225777 macosx-all,windows-all,linux-all
|
||||
java/awt/Mixing/MixingOnShrinkingHWButton.java 7124549 macosx-all,windows-all
|
||||
java/awt/Mixing/NonOpaqueInternalFrame.java 7124549 macosx-all,windows-all
|
||||
java/awt/Mixing/OpaqueTest.java 7124549,8169457 macosx-all,windows-all,linux-all
|
||||
@@ -568,6 +570,7 @@ java/awt/TextArea/AutoScrollOnSelectAndAppend/AutoScrollOnSelectAndAppend.java
|
||||
java/awt/TextArea/DisposeTest/TestDispose.java JBR-1905 generic-all
|
||||
java/awt/TextArea/TextAreaScrolling/TextAreaScrolling.java 8196300 windows-all
|
||||
java/awt/TextField/SelectionInvisibleTest/SelectionInvisibleTest.java 8169533 macosx-all,windows-all
|
||||
java/awt/TextField/DisposeTest/TestDispose.java JBR-1905 macosx-all
|
||||
java/awt/Toolkit/DesktopProperties/rfe4758438.java 8193547 linux-all
|
||||
java/awt/Toolkit/LockingKeyStateTest/LockingKeyStateTest.java 8208514 windows-all
|
||||
java/awt/Toolkit/RealSync/Test.java 6849383 generic-all
|
||||
@@ -620,12 +623,13 @@ java/awt/dnd/DisposeFrameOnDragCrash/DisposeFrameOnDragTest.java
|
||||
java/awt/dnd/DragInterceptorAppletTest/DragInterceptorAppletTest.html 8215538 windows-all,macosx-all,linux-all (macosx-all,linux-all: commit)
|
||||
java/awt/dnd/DropTargetEnterExitTest/ExtraDragEnterTest.java 8029680 macosx-all,linux-all,windows-all
|
||||
java/awt/dnd/DropTargetEnterExitTest/MissedDragExitTest.java 8028998,8159694 macosx-all,windows-all,linux-all
|
||||
java/awt/dnd/FileListBetweenJVMsTest/FileListBetweenJVMsTest.html 7124379,7188825 macosx-all,linux-all,windows-all
|
||||
java/awt/dnd/ImageTransferTest/ImageTransferTest.java 8176556 generic-all
|
||||
java/awt/dnd/InterJVMGetDropSuccessTest/InterJVMGetDropSuccessTest.html
|
||||
java/awt/dnd/InterJVMGetDropSuccessTest/InterJVMGetDropSuccessTest.html 8208555 windows-all
|
||||
java/awt/dnd/MissingDragExitEventTest/MissingDragExitEventTest.java 8030121 macosx-all,windows-all,linux-all
|
||||
java/awt/dnd/MissingEventsOnModalDialog/MissingEventsOnModalDialogTest.java 8164464 linux-all,macosx-all,windows-all
|
||||
java/awt/dnd/NoFormatsCrashTest/NoFormatsCrashTest.html 8214221 windows-all,linux-all,macosx-all
|
||||
java/awt/dnd/URIListBetweenJVMsTest/URIListBetweenJVMsTest.html 8171510 macosx-all
|
||||
java/awt/dnd/URIListBetweenJVMsTest/URIListBetweenJVMsTest.html 8171510,7124379 macosx-all,linux-all
|
||||
java/awt/dnd/URIListToFileListBetweenJVMsTest/URIListToFileListBetweenJVMsTest.html 8194947 generic-all
|
||||
java/awt/event/ComponentEvent/MovedResizedTardyEventTest/MovedResizedTardyEventTest.html 6511207 generic-all
|
||||
java/awt/event/HierarchyEvent/AncestorResized/AncestorResized.java 6618538 generic-all
|
||||
@@ -659,7 +663,7 @@ java/awt/font/TextLayout/OSXLigatureTest.java
|
||||
java/awt/font/TextLayout/TextLayoutBounds.java 8169188 generic-all
|
||||
java/awt/grab/EmbeddedFrameTest1/EmbeddedFrameTest1.java 7080150 macosx-all
|
||||
java/awt/grab/GrabOnUnfocusableToplevel/GrabOnUnfocusableToplevel.java 8169109 windows-all,linux-all,macosx-all
|
||||
java/awt/im/memoryleak/InputContextMemoryLeakTest.java 8023814 linux-all,solaris-all
|
||||
java/awt/im/memoryleak/InputContextMemoryLeakTest.java 8023814 linux-all,macosx-all,solaris-all
|
||||
java/awt/image/DrawImage/IncorrectAlphaSurface2SW.java 8056077 generic-all
|
||||
java/awt/image/DrawImage/IncorrectBounds.java 8169473 windows-all
|
||||
java/awt/image/DrawImage/IncorrectClipXorModeSW2Surface.java 8196025 windows-all
|
||||
@@ -714,6 +718,7 @@ java/beans/XMLEncoder/Test6570354.java
|
||||
|
||||
# jdk_lang
|
||||
|
||||
java/lang/String/StringRepeat.java 8221400 generic-x86
|
||||
java/lang/StringCoding/CheckEncodings.sh 7008363 generic-all
|
||||
java/lang/System/LoggerFinder/modules/JDKLoggerForImageTest.java nobug windows-6.1 fails on Windows 7 only
|
||||
java/lang/System/LoggerFinder/modules/UnnamedLoggerForImageTest.java nobug windows-6.1 fails on Windows 7 only
|
||||
@@ -973,7 +978,7 @@ javax/swing/JTree/8003830/bug8003830.java
|
||||
javax/swing/JTree/DnD/LastNodeLowerHalfDrop.java 8159131 macosx-all,windows-all,linux-all
|
||||
javax/swing/JWindow/ShapedAndTranslucentWindows/PerPixelTranslucentCanvas.java 8081476 windows-all,macosx-all
|
||||
javax/swing/JWindow/ShapedAndTranslucentWindows/PerPixelTranslucentSwing.java 8194128 macosx-all,linux-all,windows-all
|
||||
javax/swing/JWindow/ShapedAndTranslucentWindows/ShapedPerPixelTranslucentGradient.java 8198667 macosx-all
|
||||
javax/swing/JWindow/ShapedAndTranslucentWindows/ShapedPerPixelTranslucentGradient.java 8198667,8224876 macosx-all,linux-all
|
||||
javax/swing/JWindow/ShapedAndTranslucentWindows/ShapedTranslucentPerPixelTranslucentGradient.java 8079254 linux-all
|
||||
javax/swing/JWindow/ShapedAndTranslucentWindows/SetShapeAndClickSwing.java 8013450 macosx-all,windows-all
|
||||
javax/swing/JWindow/ShapedAndTranslucentWindows/TranslucentJComboBox.java 8024627 macosx-all,windows-all
|
||||
@@ -1045,6 +1050,7 @@ javax/swing/tree/DefaultTreeCellRenderer/6225504/bug6225504.java
|
||||
javax/swing/tree/DefaultTreeCellRenderer/7142955/bug7142955.java 8199076 generic-all
|
||||
|
||||
sanity/client/SwingSet/src/ButtonDemoScreenshotTest.java 8198920 macosx-all,linux-all,windows-all
|
||||
sanity/client/SwingSet/src/GridBagLayoutDemoTest.java.GridBagLayoutDemoTest 8210302 linux-all
|
||||
|
||||
############################################################################
|
||||
|
||||
@@ -1076,6 +1082,52 @@ com/sun/jdi/RepStep.java
|
||||
com/sun/jdi/GetLocalVariables4Test.sh 8067354 windows-all
|
||||
com/sun/jdi/sde/SourceDebugExtensionTest.java 8158066 windows-all
|
||||
com/sun/jdi/NashornPopFrameTest.java 8187143 generic-all
|
||||
com/sun/jdi/ArrayLengthDumpTest.sh 8201652 windows-all
|
||||
com/sun/jdi/BreakpointWithFullGC.sh 8201652 windows-all
|
||||
com/sun/jdi/CatchAllTest.sh 8201652 windows-all
|
||||
com/sun/jdi/CatchCaughtTest.sh 8201652 windows-all
|
||||
com/sun/jdi/CatchPatternTest.sh 8201652 windows-all
|
||||
com/sun/jdi/CommandCommentDelimiter.sh 8201652 windows-all
|
||||
com/sun/jdi/DeferredStepTest.sh 8201652 windows-all
|
||||
com/sun/jdi/DeoptimizeWalk.sh 8201652 windows-all
|
||||
com/sun/jdi/EvalArgs.sh 8201652 windows-all
|
||||
com/sun/jdi/EvalArraysAsList.sh 8201652 windows-all
|
||||
com/sun/jdi/EvalInterfaceStatic.sh 8201652 windows-all
|
||||
com/sun/jdi/GetLocalVariables3Test.sh 8201652 windows-all
|
||||
com/sun/jdi/GetLocalVariables4Test.sh 8201652 windows-all
|
||||
com/sun/jdi/ImmutableResourceTest.sh 8201652 windows-all
|
||||
com/sun/jdi/JdbArgTest.sh 8201652 windows-all
|
||||
com/sun/jdi/JdbExprTest.sh 8201652 windows-all
|
||||
com/sun/jdi/JdbLockTest.sh 8201652 windows-all
|
||||
com/sun/jdi/JdbMethodExitTest.sh 8201652 windows-all
|
||||
com/sun/jdi/JdbMissStep.sh 8201652 windows-all
|
||||
com/sun/jdi/JdbReadTwiceTest.sh 8201652 windows-all
|
||||
com/sun/jdi/JdbVarargsTest.sh 8201652 windows-all
|
||||
com/sun/jdi/JITDebug.sh 8201652 windows-all
|
||||
com/sun/jdi/MixedSuspendTest.sh 8201652 windows-all
|
||||
com/sun/jdi/NotAField.sh 8201652 windows-all
|
||||
com/sun/jdi/NullLocalVariable.sh 8201652 windows-all
|
||||
com/sun/jdi/PrivateTransportTest.sh 8201652 windows-all
|
||||
com/sun/jdi/redefine/RedefineTest.java 8201652 windows-all
|
||||
com/sun/jdi/Redefine-g.sh 8201652 windows-all
|
||||
com/sun/jdi/RedefineAbstractClass.sh 8201652 windows-all
|
||||
com/sun/jdi/RedefineAddPrivateMethod.sh 8201652 windows-all
|
||||
com/sun/jdi/RedefineAnnotation.sh 8201652 windows-all
|
||||
com/sun/jdi/RedefineChangeClassOrder.sh 8201652 windows-all
|
||||
com/sun/jdi/RedefineClasses.sh 8201652 windows-all
|
||||
com/sun/jdi/RedefineClearBreakpoint.sh 8201652 windows-all
|
||||
com/sun/jdi/RedefineException.sh 8201652 windows-all
|
||||
com/sun/jdi/RedefineFinal.sh 8201652 windows-all
|
||||
com/sun/jdi/RedefineImplementor.sh 8201652 windows-all
|
||||
com/sun/jdi/RedefineIntConstantToLong.sh 8201652 windows-all
|
||||
com/sun/jdi/redefineMethod/RedefineTest.java 8201652 windows-all
|
||||
com/sun/jdi/RedefineMulti.sh 8201652 windows-all
|
||||
com/sun/jdi/RedefinePop.sh 8201652 windows-all
|
||||
com/sun/jdi/RedefineStep.sh 8201652 windows-all
|
||||
com/sun/jdi/RedefineTTYLineNumber.sh 8201652 windows-all
|
||||
com/sun/jdi/StringConvertTest.sh 8201652 windows-all
|
||||
com/sun/jdi/WatchFramePop.sh 8201652 windows-all
|
||||
com/sun/jdi/ZZZcleanup.sh 8201652 windows-all
|
||||
|
||||
############################################################################
|
||||
|
||||
|
||||
@@ -112,11 +112,9 @@ java/awt/datatransfer/MissedHtmlAndRtfBug/MissedHtmlAndRtfBug.html
|
||||
java/awt/datatransfer/SystemSelection/SystemSelectionSwingTest.java nobug linux-all
|
||||
java/awt/dnd/AcceptDropMultipleTimes/AcceptDropMultipleTimes.java nobug macosx-all,windows-all,linux-all
|
||||
java/awt/dnd/DnDTestWithHIDPI/DragTestWithHIDPI.java nobug macosx-all,windows-all,linux-all
|
||||
java/awt/dnd/FileListBetweenJVMsTest/FileListBetweenJVMsTest.html nobug macosx-all,linux-all,windows-all
|
||||
java/awt/dnd/InterJVMGetDropSuccessTest/InterJVMGetDropSuccessTest.html nobug macosx-all,windows-all,linux-all
|
||||
java/awt/dnd/RecognizedActionTest/RecognizedActionTest.java nobug macosx-all,windows-all,linux-all
|
||||
java/awt/dnd/RemoveDropTargetCrashTest/RemoveDropTargetCrashTest.java nobug macosx-all,windows-all
|
||||
java/awt/dnd/URIListBetweenJVMsTest/URIListBetweenJVMsTest.html nobug macosx-all,linux-all
|
||||
java/awt/event/KeyEvent/AltCharAcceleratorTest/AltCharAcceleratorTest.java nobug macosx-all,windows-all,linux-all
|
||||
java/awt/event/KeyEvent/DeadKey/DeadKeyMacOSXInputText.java nobug macosx-all
|
||||
java/awt/event/KeyEvent/DeadKey/deadKeyMacOSX.java nobug macosx-all
|
||||
|
||||
@@ -1,38 +0,0 @@
|
||||
###Tips for compiling libraries and preparing env for test running
|
||||
|
||||
|
||||
## Linux
|
||||
|
||||
prepare env for work with uinput: [group permissions](https://github.com/tuomasjjrasanen/python-uinput/issues/6#issuecomment-538710069)
|
||||
|
||||
```shell script
|
||||
cd JetBrainsRuntime/test/jdk/jbu/native
|
||||
# complile lib
|
||||
gcc -shared -fPIC -I<path_to_jdk>/JetBrainsRuntime/build/linux-x86_64-normal-server-release/images/jdk/include/linux -I<path_to_jdk>/JetBrainsRuntime/build/linux-x86_64-normal-server-release/images/jdk/include touchscreen_device.c -o libtouchscreen_device.so
|
||||
```
|
||||
|
||||
In IDEA run configurations set envvar to find libtouchscreen_device.so
|
||||
```
|
||||
LD_LIBRARY_PATH=<path_to_jdk>\JetBrainsRuntime\test\jdk\jbu\native
|
||||
```
|
||||
|
||||
## Windows
|
||||
|
||||
prepare windows env: look for vcvarsall.bat [here](https://github.com/JetBrains/JetBrainsRuntime#windows)
|
||||
```
|
||||
cd JetBrainsRuntime\test\jdk\jbu\native
|
||||
cl -I<path_to_jdk>\JetBrainsRuntime\build\windows-x86_64-normal-server-release\jdk\include\win32 -I<path_to_jdk>\JetBrainsRuntime\build\windows-x86_64-normal-server-release\jdk\include -MD -LD windows_touch_robot.c "<path_to_user32lib>\user32.lib" -Fewindows_touch_robot.dll
|
||||
```
|
||||
|
||||
user32.lib is needed for WinUser.h (touch injection stuff)
|
||||
|
||||
In IDEA run configurations set envvar to find windows_touch_robot.dll
|
||||
```
|
||||
PATH="<path_to_jdk>\JetBrainsRuntime\test\jdk\jbu\native"
|
||||
```
|
||||
|
||||
my paths are
|
||||
```
|
||||
user32: "C:\Program Files (x86)\Windows Kits\10\Lib\10.0.18362.0\um\x64\user32.lib"
|
||||
path_to_jdk: "C:\Program_Files\cygwin64\home\Denis.Konoplev"
|
||||
```
|
||||
@@ -1,205 +0,0 @@
|
||||
#include <jni.h>
|
||||
|
||||
#include <errno.h>
|
||||
#include <fcntl.h>
|
||||
#include <linux/input.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/uinput.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <sys/time.h>
|
||||
#include <sys/types.h>
|
||||
#include <unistd.h>
|
||||
|
||||
// TODO sort includes
|
||||
// TODO add casts
|
||||
|
||||
typedef struct {
|
||||
__u16 type;
|
||||
__u16 code;
|
||||
__s32 value;
|
||||
} TEventData;
|
||||
|
||||
static int set_bit(int fd, unsigned long int request, unsigned long int bit) {
|
||||
return ioctl(fd, request, bit);
|
||||
}
|
||||
|
||||
static int touch_begin(int fd, int tracking_id, int x, int y) {
|
||||
struct input_event ev;
|
||||
|
||||
const int cnt = 7;
|
||||
TEventData eventData[7] = {{EV_ABS, ABS_MT_TRACKING_ID, tracking_id},
|
||||
{EV_ABS, ABS_MT_POSITION_X, x},
|
||||
{EV_ABS, ABS_MT_POSITION_Y, y},
|
||||
{EV_KEY, BTN_TOUCH, 1},
|
||||
{EV_ABS, ABS_X, x},
|
||||
{EV_ABS, ABS_Y, y},
|
||||
{EV_SYN, 0, 0}};
|
||||
|
||||
for (int i = 0; i < cnt; i++) {
|
||||
memset(&ev, 0, sizeof(struct input_event));
|
||||
ev.type = eventData[i].type;
|
||||
ev.code = eventData[i].code;
|
||||
ev.value = eventData[i].value;
|
||||
|
||||
if (write(fd, &ev, sizeof(struct input_event)) < 0) {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int touch_update(int fd, int x, int y) {
|
||||
struct input_event ev;
|
||||
|
||||
const int cnt = 5;
|
||||
TEventData eventData[5] = {{EV_ABS, ABS_MT_POSITION_X, x},
|
||||
{EV_ABS, ABS_MT_POSITION_Y, y},
|
||||
{EV_ABS, ABS_X, x},
|
||||
{EV_ABS, ABS_Y, y},
|
||||
{EV_SYN, 0, 0}};
|
||||
|
||||
for (int i = 0; i < cnt; i++) {
|
||||
memset(&ev, 0, sizeof(struct input_event));
|
||||
ev.type = eventData[i].type;
|
||||
ev.code = eventData[i].code;
|
||||
ev.value = eventData[i].value;
|
||||
|
||||
if (write(fd, &ev, sizeof(struct input_event)) < 0) {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
// todo consider different name in case of multitouch
|
||||
static int touch_end(int fd) {
|
||||
struct input_event ev;
|
||||
|
||||
const int cnt = 3;
|
||||
TEventData eventData[3] = {
|
||||
{EV_ABS, ABS_MT_TRACKING_ID, -1}, {EV_KEY, BTN_TOUCH, 0}, {EV_SYN, 0, 0}};
|
||||
|
||||
for (int i = 0; i < cnt; i++) {
|
||||
memset(&ev, 0, sizeof(struct input_event));
|
||||
ev.type = eventData[i].type;
|
||||
ev.code = eventData[i].code;
|
||||
ev.value = eventData[i].value;
|
||||
|
||||
if (write(fd, &ev, sizeof(struct input_event)) < 0) {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: quality_util_TouchScreenDevice
|
||||
* Method: create
|
||||
* Signature: ()I
|
||||
*/
|
||||
JNIEXPORT jint JNICALL Java_quality_util_UnixTouchScreenDevice_create(JNIEnv *env,
|
||||
jobject o,
|
||||
jint width,
|
||||
jint height) {
|
||||
int productId = 123;
|
||||
const int FAKE_VENDOR_ID = 0x453;
|
||||
const int MAX_FINGER_COUNT = 9;
|
||||
const int MAX_TRACKING_ID = 65535;
|
||||
|
||||
int fd = open("/dev/uinput", O_WRONLY | O_NONBLOCK);
|
||||
if (fd < 0) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
int ret_code = 0;
|
||||
ret_code = set_bit(fd, UI_SET_EVBIT, EV_SYN);
|
||||
ret_code = set_bit(fd, UI_SET_EVBIT, EV_KEY);
|
||||
ret_code = set_bit(fd, UI_SET_KEYBIT, BTN_TOUCH);
|
||||
ret_code = set_bit(fd, UI_SET_EVBIT, EV_ABS);
|
||||
ret_code = set_bit(fd, UI_SET_ABSBIT, ABS_X);
|
||||
ret_code = set_bit(fd, UI_SET_ABSBIT, ABS_Y);
|
||||
ret_code = set_bit(fd, UI_SET_ABSBIT, ABS_MT_SLOT);
|
||||
ret_code = set_bit(fd, UI_SET_ABSBIT, ABS_MT_POSITION_X);
|
||||
ret_code = set_bit(fd, UI_SET_ABSBIT, ABS_MT_POSITION_Y);
|
||||
ret_code = set_bit(fd, UI_SET_ABSBIT, ABS_MT_TRACKING_ID);
|
||||
ret_code = set_bit(fd, UI_SET_PROPBIT, INPUT_PROP_DIRECT);
|
||||
|
||||
if (ret_code < 0) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
struct uinput_user_dev virtual_touch_device;
|
||||
memset(&virtual_touch_device, 0, sizeof(virtual_touch_device));
|
||||
snprintf(virtual_touch_device.name, UINPUT_MAX_NAME_SIZE,
|
||||
"Virtual Touch Device - %#x", productId);
|
||||
virtual_touch_device.id.bustype = BUS_VIRTUAL;
|
||||
virtual_touch_device.id.vendor = FAKE_VENDOR_ID;
|
||||
virtual_touch_device.id.product = productId;
|
||||
virtual_touch_device.id.version = 1;
|
||||
|
||||
virtual_touch_device.absmin[ABS_X] = 0;
|
||||
virtual_touch_device.absmax[ABS_X] = width;
|
||||
virtual_touch_device.absmin[ABS_Y] = 0;
|
||||
virtual_touch_device.absmax[ABS_Y] = height;
|
||||
virtual_touch_device.absmin[ABS_MT_SLOT] = 0;
|
||||
virtual_touch_device.absmax[ABS_MT_SLOT] = MAX_FINGER_COUNT;
|
||||
virtual_touch_device.absmin[ABS_MT_POSITION_X] = 0;
|
||||
virtual_touch_device.absmax[ABS_MT_POSITION_X] = width;
|
||||
virtual_touch_device.absmin[ABS_MT_POSITION_Y] = 0;
|
||||
virtual_touch_device.absmax[ABS_MT_POSITION_Y] = height;
|
||||
virtual_touch_device.absmin[ABS_MT_TRACKING_ID] = 0;
|
||||
virtual_touch_device.absmax[ABS_MT_TRACKING_ID] = MAX_TRACKING_ID;
|
||||
|
||||
ret_code = write(fd, &virtual_touch_device, sizeof(virtual_touch_device));
|
||||
ret_code = ioctl(fd, UI_DEV_CREATE);
|
||||
if (ret_code < 0) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
return fd;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: quality_util_TouchScreenDevice
|
||||
* Method: destroy
|
||||
* Signature: (I)V
|
||||
*/
|
||||
JNIEXPORT jint JNICALL Java_quality_util_UnixTouchScreenDevice_destroy(JNIEnv *env,
|
||||
jobject o,
|
||||
jint fd) {
|
||||
if (ioctl(fd, UI_DEV_DESTROY) < 0) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
return close(fd);
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: quality_util_TouchScreenDevice
|
||||
* Method: clickImpl
|
||||
* Signature: (IIII)V
|
||||
*/
|
||||
// todo return code with checked exception
|
||||
JNIEXPORT jint JNICALL Java_quality_util_UnixTouchScreenDevice_clickImpl(
|
||||
JNIEnv *env, jobject o, jint fd, jint trackingId, jint x, jint y) {
|
||||
touch_begin(fd, trackingId, x, y);
|
||||
touch_end(fd);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: quality_util_TouchScreenDevice
|
||||
* Method: moveImpl
|
||||
* Signature: (IIIIII)V
|
||||
*/
|
||||
JNIEXPORT jint JNICALL Java_quality_util_UnixTouchScreenDevice_moveImpl(
|
||||
JNIEnv *env, jobject o, jint fd, jint trackingId, jint fromX, jint fromY,
|
||||
jint toX, jint toY) {
|
||||
touch_begin(fd, trackingId, fromX, fromY);
|
||||
touch_update(fd, toX, toY);
|
||||
touch_end(fd);
|
||||
return 0;
|
||||
}
|
||||
@@ -1,84 +0,0 @@
|
||||
#include <jni.h>
|
||||
|
||||
#include <windows.h>
|
||||
#include <WinUser.h>
|
||||
|
||||
POINTER_TOUCH_INFO create_touch_info()
|
||||
{
|
||||
POINTER_TOUCH_INFO contact;
|
||||
InitializeTouchInjection(1, TOUCH_FEEDBACK_DEFAULT); // Number of contact point
|
||||
memset(&contact, 0, sizeof(POINTER_TOUCH_INFO));
|
||||
|
||||
contact.touchFlags = TOUCH_FLAG_NONE;
|
||||
contact.touchMask = TOUCH_MASK_CONTACTAREA | TOUCH_MASK_ORIENTATION | TOUCH_MASK_PRESSURE;
|
||||
contact.orientation = 90; // Orientation of 90 means touching perpendicular to screen.
|
||||
contact.pressure = 32000;
|
||||
|
||||
return contact;
|
||||
}
|
||||
|
||||
void set_contact_area(POINTER_TOUCH_INFO *contact)
|
||||
{
|
||||
// 4 x 4 pixel contact area
|
||||
contact->rcContact.top = contact->pointerInfo.ptPixelLocation.y - 2;
|
||||
contact->rcContact.bottom = contact->pointerInfo.ptPixelLocation.y + 2;
|
||||
contact->rcContact.left = contact->pointerInfo.ptPixelLocation.x - 2;
|
||||
contact->rcContact.right = contact->pointerInfo.ptPixelLocation.x + 2;
|
||||
}
|
||||
|
||||
void touchBegin(POINTER_TOUCH_INFO* contact, LONG x, LONG y)
|
||||
{
|
||||
contact->pointerInfo.pointerType = PT_TOUCH;
|
||||
// primary finger pointerId == 0
|
||||
contact->pointerInfo.pointerId = 0;
|
||||
contact->pointerInfo.ptPixelLocation.x = x;
|
||||
contact->pointerInfo.ptPixelLocation.y = y;
|
||||
set_contact_area(contact);
|
||||
|
||||
contact->pointerInfo.pointerFlags = POINTER_FLAG_DOWN | POINTER_FLAG_INRANGE | POINTER_FLAG_INCONTACT;
|
||||
InjectTouchInput(1, contact);
|
||||
}
|
||||
|
||||
void touchUpdate(POINTER_TOUCH_INFO* contact, LONG x, LONG y)
|
||||
{
|
||||
contact->pointerInfo.pointerFlags = POINTER_FLAG_UPDATE | POINTER_FLAG_INRANGE | POINTER_FLAG_INCONTACT;
|
||||
contact->pointerInfo.ptPixelLocation.x = x;
|
||||
contact->pointerInfo.ptPixelLocation.y = y;
|
||||
InjectTouchInput(1, contact);
|
||||
}
|
||||
|
||||
void touchEnd(POINTER_TOUCH_INFO* contact)
|
||||
{
|
||||
contact->pointerInfo.pointerFlags = POINTER_FLAG_UP;
|
||||
InjectTouchInput(1, contact);
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: quality_util_WindowsTouchRobot
|
||||
* Method: clickImpl
|
||||
* Signature: (II)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL
|
||||
Java_quality_util_WindowsTouchRobot_clickImpl(JNIEnv* env, jobject o,
|
||||
jint x, jint y)
|
||||
{
|
||||
POINTER_TOUCH_INFO contact = create_touch_info();
|
||||
touchBegin(&contact, x, y);
|
||||
touchEnd(&contact);
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: quality_util_WindowsTouchRobot
|
||||
* Method: moveImpl
|
||||
* Signature: (IIII)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL
|
||||
Java_quality_util_WindowsTouchRobot_moveImpl(JNIEnv* env, jobject o,
|
||||
jint fromX, jint fromY,
|
||||
jint toX, jint toY)
|
||||
{
|
||||
POINTER_TOUCH_INFO contact = create_touch_info();
|
||||
touchBegin(&contact, fromX, fromY);
|
||||
touchUpdate(&contact, toX, toY);
|
||||
touchEnd(&contact);
|
||||
}
|
||||
@@ -1,338 +0,0 @@
|
||||
package quality.event;
|
||||
|
||||
import org.apache.commons.lang3.SystemUtils;
|
||||
import org.junit.Test;
|
||||
import quality.util.UnixTouchRobot;
|
||||
import quality.util.TouchRobot;
|
||||
import quality.util.WindowsTouchRobot;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
import java.awt.event.*;
|
||||
import java.io.IOException;
|
||||
import java.util.concurrent.CountDownLatch;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
public class TouchScreenEventsTest {
|
||||
static final int TIMEOUT = 2;
|
||||
// TODO make this constants accessible within jdk
|
||||
static final int TOUCH_BEGIN = 2;
|
||||
static final int TOUCH_UPDATE = 3;
|
||||
static final int TOUCH_END = 4;
|
||||
|
||||
@Test
|
||||
public void testTouchClick() throws Exception {
|
||||
runTest(new TouchClickSuite());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testTouchMove() throws Exception {
|
||||
runTest(new TouchMoveSuite());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testTouchTinyMove() throws Exception {
|
||||
runTest(new TouchTinyMoveSuite());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testTouchHorizontalScroll() throws Exception {
|
||||
runTest(new TouchAxesScrollSuite(TouchAxesScrollSuite.AXIS.X));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testTouchVerticalScroll() throws Exception {
|
||||
runTest(new TouchAxesScrollSuite(TouchAxesScrollSuite.AXIS.Y));
|
||||
}
|
||||
|
||||
private static void runTest(TouchTestSuite suite) throws Exception {
|
||||
GUI gui = new GUI();
|
||||
try {
|
||||
TouchRobot robot = getTouchRobot();
|
||||
SwingUtilities.invokeAndWait(gui::createAndShow);
|
||||
suite.addListener(gui.frame);
|
||||
robot.waitForIdle();
|
||||
|
||||
suite.perform(gui, robot);
|
||||
robot.waitForIdle();
|
||||
suite.passed();
|
||||
} finally {
|
||||
SwingUtilities.invokeLater(() -> {
|
||||
if (gui.frame != null) {
|
||||
gui.frame.dispose();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
private static TouchRobot getTouchRobot() throws IOException, AWTException {
|
||||
if (SystemUtils.IS_OS_UNIX) {
|
||||
return new UnixTouchRobot();
|
||||
} else if (SystemUtils.IS_OS_WINDOWS) {
|
||||
return new WindowsTouchRobot();
|
||||
}
|
||||
throw new RuntimeException("Touch robot for this platform isn't implemented");
|
||||
}
|
||||
}
|
||||
|
||||
class GUI {
|
||||
JFrame frame;
|
||||
Rectangle frameBounds;
|
||||
|
||||
void createAndShow() {
|
||||
frame = new JFrame();
|
||||
frame.setSize(640, 480);
|
||||
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||
frame.setVisible(true);
|
||||
frameBounds = frame.getBounds();
|
||||
}
|
||||
}
|
||||
|
||||
interface TouchTestSuite {
|
||||
void perform(GUI gui, TouchRobot robot) throws IOException;
|
||||
|
||||
void passed() throws InterruptedException;
|
||||
|
||||
void addListener(JFrame frame);
|
||||
}
|
||||
|
||||
class TouchClickSuite implements MouseListener, TouchTestSuite {
|
||||
private volatile boolean pressed;
|
||||
private volatile boolean released;
|
||||
private volatile boolean clicked;
|
||||
private final CountDownLatch latch = new CountDownLatch(3);
|
||||
|
||||
@Override
|
||||
public void mouseClicked(MouseEvent e) {
|
||||
if (!clicked) {
|
||||
clicked = true;
|
||||
latch.countDown();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mousePressed(MouseEvent e) {
|
||||
pressed = true;
|
||||
if (!pressed) {
|
||||
pressed = true;
|
||||
latch.countDown();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mouseReleased(MouseEvent e) {
|
||||
if (!released) {
|
||||
released = true;
|
||||
latch.countDown();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mouseEntered(MouseEvent e) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mouseExited(MouseEvent e) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void perform(GUI gui, TouchRobot robot) throws IOException {
|
||||
int x = gui.frameBounds.x + gui.frameBounds.width / 2;
|
||||
int y = gui.frameBounds.y + gui.frameBounds.height / 2;
|
||||
robot.touchClick(42, x, y);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void passed() throws InterruptedException {
|
||||
latch.await(TouchScreenEventsTest.TIMEOUT, TimeUnit.SECONDS);
|
||||
if (!pressed || !released || !clicked) {
|
||||
String error = (pressed ? "" : "pressed: " + pressed) +
|
||||
(released ? "" : ", released: " + released) +
|
||||
(clicked ? "" : ", clicked: " + clicked);
|
||||
throw new RuntimeException("Touch click failed: " + error);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addListener(JFrame frame) {
|
||||
frame.addMouseListener(this);
|
||||
}
|
||||
}
|
||||
|
||||
class TouchMoveSuite implements MouseWheelListener, TouchTestSuite {
|
||||
private volatile boolean begin;
|
||||
private volatile boolean update;
|
||||
private volatile boolean end;
|
||||
private final CountDownLatch latch = new CountDownLatch(3);
|
||||
|
||||
@Override
|
||||
public void mouseWheelMoved(MouseWheelEvent e) {
|
||||
if (e.getScrollType() == TouchScreenEventsTest.TOUCH_BEGIN) {
|
||||
if (!begin) {
|
||||
begin = true;
|
||||
latch.countDown();
|
||||
}
|
||||
} else if (e.getScrollType() == TouchScreenEventsTest.TOUCH_UPDATE) {
|
||||
if (!update) {
|
||||
update = true;
|
||||
latch.countDown();
|
||||
}
|
||||
} else if (e.getScrollType() == TouchScreenEventsTest.TOUCH_END) {
|
||||
if (!end) {
|
||||
end = true;
|
||||
latch.countDown();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void perform(GUI gui, TouchRobot robot) throws IOException {
|
||||
int x1 = gui.frameBounds.x + gui.frameBounds.width / 4;
|
||||
int y1 = gui.frameBounds.y + gui.frameBounds.height / 4;
|
||||
int x2 = gui.frameBounds.x + gui.frameBounds.width / 2;
|
||||
int y2 = gui.frameBounds.y + gui.frameBounds.height / 2;
|
||||
robot.touchMove(42, x1, y1, x2, y2);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void passed() throws InterruptedException {
|
||||
latch.await(TouchScreenEventsTest.TIMEOUT, TimeUnit.SECONDS);
|
||||
if (!begin || !update || !end) {
|
||||
String error = (begin ? "" : "begin: " + begin) +
|
||||
(update ? "" : ", update: " + update) +
|
||||
(end ? "" : ", end: " + end);
|
||||
throw new RuntimeException("Touch move failed: " + error);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addListener(JFrame frame) {
|
||||
frame.addMouseWheelListener(this);
|
||||
}
|
||||
}
|
||||
|
||||
class TouchTinyMoveSuite implements MouseWheelListener, MouseListener, TouchTestSuite {
|
||||
private volatile boolean scroll;
|
||||
private volatile boolean click;
|
||||
private final CountDownLatch latch = new CountDownLatch(1);
|
||||
|
||||
@Override
|
||||
public void mouseWheelMoved(MouseWheelEvent e) {
|
||||
if (e.getScrollType() == TouchScreenEventsTest.TOUCH_UPDATE) {
|
||||
scroll = true;
|
||||
latch.countDown();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void perform(GUI gui, TouchRobot robot) throws IOException {
|
||||
int x1 = gui.frameBounds.x + gui.frameBounds.width / 4;
|
||||
int y1 = gui.frameBounds.y + gui.frameBounds.height / 4;
|
||||
// move inside tiny area
|
||||
int x2 = x1 + 1;
|
||||
int y2 = y1 + 1;
|
||||
robot.touchMove(42, x1, y1, x2, y2);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void passed() throws InterruptedException {
|
||||
latch.await(TouchScreenEventsTest.TIMEOUT, TimeUnit.SECONDS);
|
||||
if (scroll || !click) {
|
||||
String error = (scroll ? "scroll " + scroll : "") +
|
||||
(click ? "" : ", click: " + click);
|
||||
throw new RuntimeException("Tiny touch move failed: " + error);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addListener(JFrame frame) {
|
||||
frame.addMouseWheelListener(this);
|
||||
frame.addMouseListener(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mouseClicked(MouseEvent e) {
|
||||
click = true;
|
||||
latch.countDown();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mousePressed(MouseEvent e) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mouseReleased(MouseEvent e) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mouseEntered(MouseEvent e) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mouseExited(MouseEvent e) {
|
||||
}
|
||||
}
|
||||
|
||||
class TouchAxesScrollSuite implements MouseWheelListener, TouchTestSuite {
|
||||
enum AXIS {X, Y}
|
||||
|
||||
private final AXIS axis;
|
||||
private volatile boolean vertical;
|
||||
private volatile boolean horizontal;
|
||||
private final CountDownLatch latch = new CountDownLatch(1);
|
||||
|
||||
TouchAxesScrollSuite(AXIS axis) {
|
||||
this.axis = axis;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mouseWheelMoved(MouseWheelEvent e) {
|
||||
if (e.getScrollType() == TouchScreenEventsTest.TOUCH_UPDATE) {
|
||||
if (e.isShiftDown()) {
|
||||
horizontal = true;
|
||||
} else {
|
||||
vertical = true;
|
||||
}
|
||||
latch.countDown();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void perform(GUI gui, TouchRobot robot) throws IOException {
|
||||
int x1 = gui.frameBounds.x + gui.frameBounds.width / 4;
|
||||
int y1 = gui.frameBounds.y + gui.frameBounds.height / 4;
|
||||
switch (axis) {
|
||||
case X:
|
||||
int x2 = gui.frameBounds.x + gui.frameBounds.width / 2;
|
||||
robot.touchMove(42, x1, y1, x2, y1);
|
||||
break;
|
||||
case Y:
|
||||
int y2 = gui.frameBounds.y + gui.frameBounds.height / 2;
|
||||
robot.touchMove(42, x1, y1, x1, y2);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void passed() throws InterruptedException {
|
||||
latch.await(TouchScreenEventsTest.TIMEOUT, TimeUnit.SECONDS);
|
||||
String error = "horizontal " + horizontal + ", vertical: " + vertical;
|
||||
switch (axis) {
|
||||
case X:
|
||||
if (!horizontal || vertical) {
|
||||
throw new RuntimeException("Touch axes failed: " + error);
|
||||
}
|
||||
break;
|
||||
case Y:
|
||||
if (horizontal || !vertical) {
|
||||
throw new RuntimeException("Touch axes failed: " + error);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addListener(JFrame frame) {
|
||||
frame.addMouseWheelListener(this);
|
||||
}
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
package quality.util;
|
||||
|
||||
import java.awt.*;
|
||||
import java.io.IOException;
|
||||
|
||||
public abstract class TouchRobot extends Robot {
|
||||
public TouchRobot() throws AWTException {
|
||||
}
|
||||
|
||||
public TouchRobot(GraphicsDevice screen) throws AWTException {
|
||||
super(screen);
|
||||
}
|
||||
|
||||
public abstract void touchClick(int fingerId, int x, int y) throws IOException;
|
||||
|
||||
public abstract void touchMove(int fingerId, int fromX, int fromY, int toX, int toY) throws IOException;
|
||||
}
|
||||
@@ -1,26 +0,0 @@
|
||||
package quality.util;
|
||||
|
||||
import java.awt.*;
|
||||
import java.io.IOException;
|
||||
|
||||
public class UnixTouchRobot extends TouchRobot {
|
||||
private UnixTouchScreenDevice device;
|
||||
|
||||
public UnixTouchRobot() throws AWTException, IOException {
|
||||
super();
|
||||
device = new UnixTouchScreenDevice();
|
||||
}
|
||||
|
||||
public UnixTouchRobot(GraphicsDevice screen) throws AWTException, IOException {
|
||||
super(screen);
|
||||
device = new UnixTouchScreenDevice();
|
||||
}
|
||||
|
||||
public void touchClick(int fingerId, int x, int y) throws IOException {
|
||||
device.click(fingerId, x, y);
|
||||
}
|
||||
|
||||
public void touchMove(int fingerId, int fromX, int fromY, int toX, int toY) throws IOException {
|
||||
device.move(fingerId, fromX, fromY, toX, toY);
|
||||
}
|
||||
}
|
||||
@@ -1,68 +0,0 @@
|
||||
package quality.util;
|
||||
|
||||
import java.awt.*;
|
||||
import java.io.IOException;
|
||||
|
||||
public class UnixTouchScreenDevice implements AutoCloseable {
|
||||
// TODO add product id
|
||||
private int width;
|
||||
private int height;
|
||||
private int fileDescriptor;
|
||||
|
||||
static {
|
||||
System.loadLibrary("touchscreen_device");
|
||||
}
|
||||
|
||||
public UnixTouchScreenDevice() throws IOException {
|
||||
this(Toolkit.getDefaultToolkit().getScreenSize().width, Toolkit.getDefaultToolkit().getScreenSize().height);
|
||||
}
|
||||
|
||||
public UnixTouchScreenDevice(int width, int height) throws IOException {
|
||||
this.width = width;
|
||||
this.height = height;
|
||||
fileDescriptor = create(getWidth(), getHeight());
|
||||
checkCompletion(fileDescriptor,
|
||||
"Failed to create virtual touchscreen device");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void close() throws Exception {
|
||||
checkCompletion(destroy(fileDescriptor),
|
||||
"Failed to close touchscreen device");
|
||||
}
|
||||
|
||||
public int getWidth() {
|
||||
return width;
|
||||
}
|
||||
|
||||
public int getHeight() {
|
||||
return height;
|
||||
}
|
||||
|
||||
public void click(int trackingId, int x, int y) throws IOException {
|
||||
checkCompletion(clickImpl(fileDescriptor, trackingId, x, y),
|
||||
"Failed to click on touchscreen device");
|
||||
|
||||
}
|
||||
|
||||
public void move(int trackingId, int fromX, int fromY, int toX, int toY) throws IOException {
|
||||
checkCompletion(moveImpl(fileDescriptor, trackingId, fromX, fromY, toX, toY),
|
||||
"Failed to move on virtual touchscreen device");
|
||||
}
|
||||
|
||||
private void checkCompletion(int code, String errorMessage) throws IOException {
|
||||
if (code < 0) {
|
||||
throw new IOException(errorMessage);
|
||||
}
|
||||
}
|
||||
|
||||
private native int create(int width, int height);
|
||||
|
||||
private native int destroy(int fd);
|
||||
|
||||
private native int clickImpl(int fd, int trackingId, int x, int y);
|
||||
|
||||
private native int moveImpl(int fd, int trackingId, int fromX, int fromY, int toX, int toY);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
package quality.util;
|
||||
|
||||
import java.awt.*;
|
||||
import java.io.IOException;
|
||||
|
||||
public class WindowsTouchRobot extends TouchRobot {
|
||||
static {
|
||||
System.loadLibrary("windows_touch_robot");
|
||||
}
|
||||
|
||||
public WindowsTouchRobot() throws AWTException, IOException {
|
||||
super();
|
||||
}
|
||||
|
||||
public WindowsTouchRobot(GraphicsDevice screen) throws AWTException, IOException {
|
||||
super(screen);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void touchClick(int fingerId, int x, int y) throws IOException {
|
||||
// TODO unused finger id cause windows use different finger id model
|
||||
clickImpl(x, y);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void touchMove(int fingerId, int fromX, int fromY, int toX, int toY) throws IOException {
|
||||
// TODO unused finger id cause windows use different finger id model
|
||||
moveImpl(fromX, fromY, toX, toY);
|
||||
}
|
||||
|
||||
private native void clickImpl(int x, int y);
|
||||
|
||||
private native void moveImpl(int fromX, int fromY, int toX, int toY);
|
||||
}
|
||||
Reference in New Issue
Block a user