Skip to content
Open
Show file tree
Hide file tree
Changes from 38 commits
Commits
Show all changes
323 commits
Select commit Hold shift + click to select a range
d390cbf
[args null check] jawobject: null check for args
tanya011 Mar 13, 2025
ca3c2a5
[vars null check] jawobject: null check for vars
tanya011 Mar 13, 2025
bcc42f4
[args null check] jawselection: null check for args
tanya011 Mar 13, 2025
0280590
[vars null check] jawselection: null check for vars
tanya011 Mar 13, 2025
b461e01
[args null check] jawtable: check the arguments
tanya011 Mar 13, 2025
dfa592e
[vars null check] jawtable: check the vars
tanya011 Mar 13, 2025
4d97796
[args null check] jawstablecell: check nulls in args
tanya011 Mar 13, 2025
e561878
[vars null check] jawstablecell: null check for vars
tanya011 Mar 13, 2025
0c35f15
[args null check] jawtext: null check for args
tanya011 Mar 13, 2025
3b5fc96
[vars null check] jawtext: null check for vars
tanya011 Mar 13, 2025
91fb0c3
[args null check] jawtoplevel: null check for args
tanya011 Mar 13, 2025
f41f566
[vars null check] jawtoplevel: null check for vars
tanya011 Mar 13, 2025
95a4fcf
[args null check] jawutil: null check for args
tanya011 Mar 13, 2025
61bd7bc
[vars null check] jawutil: null check for vars
tanya011 Mar 13, 2025
2b2bde6
[args null check] jawvalue: null check for args
tanya011 Mar 13, 2025
07799ca
[vars null check] jawvalue: null check for vars
tanya011 Mar 13, 2025
4106d05
[refactoring] clang-format
tanya011 Mar 13, 2025
7dbf79d
AtkObject: getAcceleratorText
tanya011 Mar 14, 2025
4643895
AtkObject: i -> j in the loop
tanya011 Mar 14, 2025
d3486ad
AtkOSelection: Should be run on EDT
tanya011 Mar 14, 2025
cb6423b
AtkObject: missing import
tanya011 Mar 14, 2025
fe438b5
AtUtil: invokeInSwing -> invokeInSwingAndWait
tanya011 Mar 14, 2025
892cf52
[refactoring]
tanya011 Mar 24, 2025
194f9f5
start -> rightStart
tanya011 Mar 24, 2025
bed9a12
p may be null
tanya011 Mar 24, 2025
d854a35
rightOffset
tanya011 Mar 24, 2025
8f4c638
acc_edt_text.getCharCount() on EDT
tanya011 Mar 24, 2025
a639b15
if (end < start) in getRightEnd
tanya011 Mar 24, 2025
1b41e4c
Use getRightStart and getRightEnd in AtkEditableText
tanya011 Mar 24, 2025
cd2744b
fix references releases
tanya011 Mar 24, 2025
286490b
AtkText.java: p may be null
tanya011 Mar 24, 2025
6a42cfa
remove unused jaw_util_is_same_jobject
tanya011 Mar 24, 2025
f59aeee
static JavaVM *cachedJVM = NULL;
tanya011 Mar 24, 2025
2f2bad5
AtkTableCell: initializations in the constructor
tanya011 Mar 24, 2025
1586c15
AtkTableCell: _acc_pt.get() can be null
tanya011 Mar 24, 2025
d8863e9
AtkTable: get_selected_columns and get_selected_rows return null in b…
tanya011 Mar 24, 2025
8b7bd85
AtkTable: delete refs independently of atk_table
tanya011 Mar 24, 2025
a99d5ae
jawtable: The arrays don't get used
tanya011 Mar 24, 2025
9bbc589
jawtable: refactoring
tanya011 Mar 24, 2025
e1c2739
jawtoplevel: releasing jaw_toplevel->windows
tanya011 Mar 24, 2025
e15d426
jawtoplevel: atk_object_get_n_accessible_children
tanya011 Mar 24, 2025
d1bcc9b
jawtoplevel: child != null
tanya011 Mar 24, 2025
f681b16
atkwrapper: alloc_callback_para may return NULL
tanya011 Mar 24, 2025
8f7f0e3
jawimpl: g_hash_table_destroy
tanya011 Mar 24, 2025
d8c64e7
jawimpl: free_callback_para
tanya011 Mar 24, 2025
ddb40d0
remove dependency on java.management
tanya011 Mar 25, 2025
bff5553
Sturtup error fix and small changes in AtkWrapperDisposer
tanya011 Mar 25, 2025
d9b78ae
AtkProvider was removed
tanya011 Mar 25, 2025
1e62a62
[AtkWrapperDisposer]
tanya011 Mar 25, 2025
a27edb8
Improve comments in g_warning
tanya011 Mar 25, 2025
303cd41
[AtkWrapperDisposer]
tanya011 Mar 25, 2025
d9af6d0
loadAtkBridge
tanya011 Mar 25, 2025
872df29
clang-format
tanya011 Mar 25, 2025
fafc0ab
jawimpl: shouldn't check the root
tanya011 Mar 25, 2025
9d3ed12
[null check]
tanya011 Mar 25, 2025
5f6da00
[AtkWrapperDisposer] unused `set`
tanya011 Mar 25, 2025
5b000bd
atkwrapper: free_callback_para_event
tanya011 Mar 25, 2025
c7be549
clang-format
tanya011 Mar 25, 2025
fbffab4
AtkWrapper.java: change visibility and rename jni method
tanya011 Mar 26, 2025
67f14f4
AtkWrapper.java: (KeyEvent) e -> keyEvent
tanya011 Mar 26, 2025
9f7583c
AtkWrapper.java: newSeq
tanya011 Mar 26, 2025
80186dc
AtkWrapper.java: oldSeq
tanya011 Mar 26, 2025
3afa206
AtkWrapper.c: JNI_FALSE and JNI_TRUE
tanya011 Mar 26, 2025
ac18758
AtkWrapper.c: atk_bridge_set_event_context(NULL)
tanya011 Mar 26, 2025
c709d8c
AtkWrapperDisposer to singleton
tanya011 Mar 26, 2025
d394bf4
AtkWrapperDisposer: synchronized block
tanya011 Mar 26, 2025
cd64e39
AtkWrapperDisposer: unused field + documentation
tanya011 Mar 26, 2025
bc1408b
AtkWrapperDisposer: DisposerRecord is unused
tanya011 Mar 26, 2025
ad0a3ce
AtkWrapperDisposer: add addRecordWithDefaultReference
tanya011 Mar 27, 2025
5ed9138
AtkWrapperDisposer: Object -> AccessibleContext
tanya011 Mar 27, 2025
57da895
AtkWrapperDisposer: InnocuousThread
tanya011 Mar 27, 2025
84387bb
AtkWrapper: g_free(event)
tanya011 Mar 27, 2025
8a6b38a
AtkWrapper: g_free(insert_text) and g_free(delete_text)
tanya011 Mar 27, 2025
8d0a963
AtkWrapper: child_impl ref and unref
tanya011 Mar 28, 2025
c1566fa
[AtkWrapperDisposer]
tanya011 Mar 28, 2025
16166eb
Reuse AtkSignal values in native
tanya011 Mar 28, 2025
41e4f89
[AtkWrapperDispatcher]
tanya011 Mar 28, 2025
4a27b9e
Changes in get_string_value
tanya011 Mar 28, 2025
dab8a90
[AtkWrapperDispatcher]
tanya011 Mar 28, 2025
2d6b080
AtkTable: set_row_description and set_column_description
tanya011 Mar 28, 2025
254103b
clang-format
tanya011 Mar 28, 2025
0718faa
clang-format
tanya011 Mar 28, 2025
8b2200e
clang-format
tanya011 Mar 28, 2025
97083b0
Unused var `args`
tanya011 Mar 28, 2025
6f5781e
jaw_util_get_jni_env
tanya011 Mar 28, 2025
cfbe0c0
Names for threads
tanya011 Mar 28, 2025
c033f05
transfer full or none?
tanya011 Mar 28, 2025
47bdd73
clang-format
tanya011 Mar 28, 2025
621da4d
remove data->link_table
tanya011 Mar 28, 2025
98737a3
jaw_hypertext_get_link: add documentation
tanya011 Mar 28, 2025
2306612
AtkText: some refactoring in getRightEnd
tanya011 Mar 28, 2025
9c4d15f
AtkText: fix get_text_XXX_offset and add documentation
tanya011 Mar 28, 2025
614d57f
AtkText: refactoring, separate jni functions and not jni
tanya011 Mar 28, 2025
ff95928
AtkText: introduce `jaw_text_get_string_at_offset`
tanya011 Mar 28, 2025
5f071b2
AtkUtil: documentation
tanya011 Mar 31, 2025
33d83dc
AtkWrapper text events: documentation
tanya011 Mar 31, 2025
692389f
PushLocalFrame and PopLocalFrame
tanya011 Mar 31, 2025
ec21e60
AtkWrapper: registerPropertyChangeListener -> register_property_chang…
tanya011 Mar 31, 2025
063e1f2
fix in jaw_impl_find_instance
tanya011 Apr 1, 2025
2a53171
[AtkWrapperDisposer]
tanya011 Apr 1, 2025
36fcf78
jawobject: `g_object_ref` in `jaw_object_ref_child`
tanya011 Apr 1, 2025
a35d6b4
Some comments and refactoring
tanya011 Apr 1, 2025
5b53f8d
atkwrapper: free_callback_para -> queue_free_callback_para
tanya011 Apr 1, 2025
3eeb026
jaw_impl_get_instance_from_jaw
tanya011 Apr 1, 2025
c0881e9
jawutil: args.group = NULL;
tanya011 Apr 1, 2025
c988d0b
clang-format
tanya011 Apr 1, 2025
b251a3d
PushLocalFrame and PopLocalFrame
tanya011 Apr 1, 2025
92b2fcf
AtkWrapper dispatchKeyEvent
tanya011 Apr 1, 2025
6a2ab7c
AtkWrapper: type_pressed and type_released mau be null
tanya011 Apr 1, 2025
1fb4bb8
AtkWrapper: jaw_vdc_last_ac
tanya011 Apr 1, 2025
bd37af1
PushLocalFrame and PopLocalFrame
tanya011 Apr 1, 2025
a357c6c
jawtable: env -> jniEnv
tanya011 Apr 1, 2025
913b5a8
PushLocalFrame and PopLocalFrame
tanya011 Apr 1, 2025
1f74ead
PushLocalFrame and PopLocalFrame
tanya011 Apr 2, 2025
e879373
Refactoring + documentation
tanya011 Apr 3, 2025
615b021
AtkProvider
tanya011 Apr 4, 2025
5af8449
refactoring
tanya011 Apr 4, 2025
ff6bea6
Check `java.lang.Boolean.parseBoolean(System.getProperty("linux.jdk.a…
tanya011 Apr 4, 2025
82fa527
refactoring
tanya011 Apr 7, 2025
2871ae2
Add assert EventQueue.isDispatchThread();
tanya011 Apr 7, 2025
067e0c4
refactoring
tanya011 Apr 7, 2025
f4d4c23
Introduce AtkInterface
tanya011 Apr 7, 2025
2d875c5
clang-format
tanya011 Apr 7, 2025
2f1aeaf
AtkWrapperDisposer
tanya011 Apr 8, 2025
e62004e
refactoring
tanya011 Apr 8, 2025
1195461
AtkWrapperDisposer
tanya011 Apr 8, 2025
10bf5d4
AtkAction: check i
tanya011 Apr 8, 2025
5641dc7
AtkAction: add fixme comment
tanya011 Apr 8, 2025
3ce003a
refactoring
tanya011 Apr 8, 2025
29fb3a8
AtkWrapperDisposer logging
tanya011 Apr 8, 2025
737ab28
AtkWrapper: define accessibilityEnabled
tanya011 Apr 8, 2025
274a64e
AtkWrapperDisposer: imports
tanya011 Apr 8, 2025
0ea521a
AtkInterface: documentation + refactoring
tanya011 Apr 8, 2025
7c3c6c3
AtkComponent: documentation + refactoring
tanya011 Apr 8, 2025
25133c2
jawimpl: documentation
tanya011 Apr 8, 2025
8552569
AtkWrapper: missed System.loadLibrary("atk-wrapper");
tanya011 Apr 8, 2025
b149772
Remove added dependencies
tanya011 Dec 2, 2025
0d679c0
Remove dead code and unused variables
tanya011 Dec 2, 2025
4540f43
Make public methods private where it is possible
tanya011 Dec 2, 2025
63aae9b
Make INSTANCE volatile for the correct check outside the synchronized…
tanya011 Dec 2, 2025
8457be1
Add comments
tanya011 Dec 2, 2025
2317a5e
Init data right before its usage
tanya011 Dec 2, 2025
2d4e7fd
Fix all data_finalize methods
tanya011 Dec 2, 2025
90bf7da
Fix wrong usages of vars
tanya011 Dec 2, 2025
9ff4daa
Setting to null after deleting global ref
tanya011 Dec 2, 2025
d6283dc
Remove para->ac
tanya011 Dec 2, 2025
4fecd3a
Free para in all cases
tanya011 Dec 2, 2025
d3dda7d
Add `ReleaseStringUTFChars`
tanya011 Dec 2, 2025
dcee3ee
add PopLocalFrame and DeleteGlobalRef
tanya011 Dec 3, 2025
afdbe8b
DeleteGlobalRef(jniEnv, jaw_vdc_last_ac)
tanya011 Dec 3, 2025
0db7e0d
fix static var initializing
tanya011 Dec 3, 2025
3eb70cf
add g_object_unref(G_OBJECT(jaw_impl));
tanya011 Dec 3, 2025
4868f2b
Remove temp_ref
tanya011 Dec 3, 2025
d9167f9
obj global ref to local ref
tanya011 Dec 3, 2025
46b810d
Fix default invalid values usage
tanya011 Dec 3, 2025
4a4d74c
jawtablecell.c: small fixes and refactorings
tanya011 Dec 3, 2025
1566dc2
jawtext: fix
tanya011 Dec 4, 2025
8d3767e
jawtext.c and AtkText.java: different small fixes
tanya011 Dec 4, 2025
f9a99f3
toplevel.c: fixes and refactoring
tanya011 Dec 4, 2025
bc66169
ATK_ROLE_RADIO_BUTTON
tanya011 Dec 4, 2025
3759d67
all files refactoring
tanya011 Dec 5, 2025
a5dbdad
fix thread safety
tanya011 Dec 15, 2025
91c7b30
jawaction.c
tanya011 Dec 15, 2025
c00e182
AtkComponent.java: refactorings
tanya011 Dec 15, 2025
d06cfbe
jawcomponent.c : implement jaw_jawcomponent_init_jni_cache and add (*…
tanya011 Dec 15, 2025
c34e65c
jaweditabletext.c : implement jaw_editable_text_init_jni_cach and add…
tanya011 Dec 16, 2025
f73bf61
jawhyperlink.c: implement jaw_editable_text_init_jni_cach and add (*j…
tanya011 Dec 16, 2025
0967961
jawhypertext.c: implement jaw_editable_text_init_jni_cach and add (*j…
tanya011 Dec 16, 2025
f4a63b9
jawimage.c: implement jaw_editable_text_init_jni_cach and add (*jniEn…
tanya011 Dec 16, 2025
9337613
jawobject.c: implement jaw_editable_text_init_jni_cach and add (*jniE…
tanya011 Dec 16, 2025
d27ae05
jawselection.c: implement jaw_editable_text_init_jni_cach and add (*j…
tanya011 Dec 16, 2025
9c1f393
check NewGlobalRef in data_init
tanya011 Dec 17, 2025
521de7c
introduce jaw_vdc_clear_last_ac
tanya011 Dec 17, 2025
5845e1d
fixed wrong type usage
tanya011 Dec 17, 2025
9d51adf
add g_warning
tanya011 Dec 17, 2025
da01ef4
jawutil.c: illegal value in bitmask is 0
tanya011 Dec 17, 2025
0892346
jawtable.c: implement jaw_editable_text_init_jni_cach and add (*jniEn…
tanya011 Dec 17, 2025
1ef5a78
jawtablecell.c: implement jaw_editable_text_init_jni_cach and add (*j…
tanya011 Dec 17, 2025
7f7d14f
jawtext.c: implement jaw_editable_text_init_jni_cach and add (*jniEnv…
tanya011 Dec 17, 2025
e3cda66
jawvalue.c: implement jaw_editable_text_init_jni_cach and add (*jniEn…
tanya011 Dec 17, 2025
98e590c
AtkComponent.java: add comment for future to check function logic
tanya011 Dec 17, 2025
6ebb31f
java files: fix modifiers
tanya011 Dec 17, 2025
d6cfd5b
java files: all files 'reformat code'
tanya011 Dec 17, 2025
225dec5
jawcomponent.c: fix wrong types return
tanya011 Dec 17, 2025
7acc913
jawcomponent.c: remove second (*jniEnv)->PopLocalFrame(jniEnv, NULL);
tanya011 Dec 17, 2025
a5040e2
jawcomponent.c: doc says @x: (out) (optional), so the implementation …
tanya011 Dec 17, 2025
e81e500
jawcomponent.c: add a comment todo
tanya011 Dec 17, 2025
affc494
jawcomponent.c: use g_debug in jaw_editable_text_data_finalize
tanya011 Dec 17, 2025
00a3bb8
AtkProvider.java: change default value
tanya011 Dec 17, 2025
5e48eac
jawhyperlink.c: add checks in jaw_hyperlink_new
tanya011 Dec 17, 2025
3c64225
jawhyperlink.c: add null check
tanya011 Dec 17, 2025
41b6eef
jawaction.c: add todo
tanya011 Dec 17, 2025
9eb975b
jawhypertext.c: add null check
tanya011 Dec 17, 2025
b10e004
jawtable.c: fix jaw_table_get_selected_columns and jaw_table_get_sele…
tanya011 Dec 18, 2025
d124791
module-info.java: remove `exports org.GNOME.Accessibility`
tanya011 Dec 18, 2025
913f637
jawtablecell.c:
tanya011 Dec 18, 2025
368f5ea
jawtext.c: text and jstrText are never used
tanya011 Dec 18, 2025
5b0fa01
jawtext.c: parameters are optional
tanya011 Dec 18, 2025
fc97656
jawhyperlink.c, jawobject.c, jawtoplevel.c: fix finalize and dispose …
tanya011 Dec 18, 2025
db34fdd
jawvalue.c: check if value is inited before g_value_unset
tanya011 Dec 18, 2025
e8bfeb3
jawvalue.c: separate int and short
tanya011 Dec 18, 2025
b985155
jawvalue.c: cache Number classes
tanya011 Dec 18, 2025
57dfeed
jawvalue.c: introduce jaw_jni_clear_exception
tanya011 Dec 18, 2025
851f08b
add cleanup_and_fail to c files
tanya011 Dec 18, 2025
150c926
jawutil.c: introduce jawutil_init_jni_cache
tanya011 Dec 18, 2025
86b8d9d
fixes with (*jniEnv)->ExceptionCheck(jniEnv)
tanya011 Dec 18, 2025
182c0c2
clean cashes with jaw_cache_cleanup
tanya011 Dec 18, 2025
3fb844d
AtkObject.java: fix [missing-explicit-ctor]
tanya011 Dec 18, 2025
6f0a366
jawobject.c: fix argument type
tanya011 Dec 18, 2025
5aad83c
AtkKeyEvent.java: keyMap should not be final
tanya011 Dec 18, 2025
6c91ed7
run clang-format
tanya011 Dec 18, 2025
c998790
AtkKeyEvent: [refactoring] meaningless boxing
tanya011 Dec 18, 2025
b53f2f9
AtkWrapper.c: use DeleteLocalRef instead of PopLocalFrame
tanya011 Dec 18, 2025
f69e397
AtkKeyEvent.java: do not cast char to int
tanya011 Dec 18, 2025
d077e2f
add todo
tanya011 Dec 18, 2025
5b259e4
JAW_GET_OBJ_IFACE and JAW_GET_OBJ: create local ref instead of global
tanya011 Dec 19, 2025
358cef8
add debug comments
tanya011 Dec 19, 2025
ed1a7bf
jawcache.h: move variable declarations back to seperate files
tanya011 Dec 19, 2025
285016f
jawcache.h: add #include <glib.h>
tanya011 Dec 19, 2025
a34e067
jawobject.c: cash some classes and methods
tanya011 Dec 19, 2025
6a5998d
jawimpl.c: cash some classes and methods
tanya011 Dec 19, 2025
3a6e888
AtkWrapper.c: cash some classes and methods
tanya011 Dec 19, 2025
3eb3261
introduce JAW_DEFAULT_LOCAL_FRAME_SIZE
tanya011 Dec 19, 2025
7e22f06
JAW_GET_OBJ_IFACE and JAW_GET_OBJ: create local ref instead of global
tanya011 Dec 19, 2025
5ea71b0
add todo
tanya011 Dec 22, 2025
1b8f907
jawtablecell.c: remove unused description and jstrDescription
tanya011 Dec 22, 2025
30c8ade
jawtable.c: add todo
tanya011 Dec 22, 2025
7735822
add mutex to data
tanya011 Dec 22, 2025
92c6977
jawimpl.c: rename var
tanya011 Dec 22, 2025
03abad3
Use const gchar* where string is not modified through this pointer
tanya011 Dec 22, 2025
fc72063
AtkWrapper.c: remove PushLocalFrame
tanya011 Dec 22, 2025
5e89df9
remove wrong (*jniEnv)->DeleteGlobalRef(jniEnv, ac);
tanya011 Dec 22, 2025
be5656a
AtkText.java: return number of selected regions, not length
tanya011 Dec 22, 2025
27410c7
AtkText.java and jawtext.c: fix typos
tanya011 Dec 22, 2025
6ec65a0
AtkTableCell.java: check instanceof instead of casting
tanya011 Dec 22, 2025
abd3264
AtkTableCell.java: add null checks
tanya011 Dec 22, 2025
88e09b3
Add null checks before addRecord
tanya011 Dec 22, 2025
a06b6bc
AtkWrapper.java: use equals so we don't send unnecessary signals
tanya011 Dec 22, 2025
91efa64
AtkWrapper.java: add null check
tanya011 Dec 22, 2025
65eb219
AtkComponent.java: fix logic in set_extents and get_extents
tanya011 Jan 12, 2026
a326719
AtkComponent: implement set_position
tanya011 Jan 12, 2026
8f1415b
AtkComponent: implement set_size
tanya011 Jan 12, 2026
29ae7d9
AtkComponent.java: fix warnings by using the right methods
tanya011 Jan 12, 2026
d755ce8
AtkKeyEvent.java: call String.valueOf(char) instead of String.valueOf…
tanya011 Jan 12, 2026
2c35aea
log stacktrace with JAW_DEBUG and all warnings with glib
tanya011 Jan 16, 2026
3707706
Remove JAW_CHECK_NULL
tanya011 Jan 16, 2026
af7b8dd
Implement AccessibleAnnouncer for Wayland
tanya011 Jan 16, 2026
8ebb6c3
Running clang-format
tanya011 Jan 16, 2026
cc8050c
Rename description and jstrDescription vars
tanya011 Jan 16, 2026
29ff62d
get_string_at_offset is implemented
tanya011 Jan 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/build-cross-compile.yml
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ jobs:
g++-${{ inputs.gcc-major-version }} \
gcc-${{ inputs.gcc-major-version }}-${{ matrix.gnu-arch }}-linux-gnu${{ matrix.gnu-abi}} \
g++-${{ inputs.gcc-major-version }}-${{ matrix.gnu-arch }}-linux-gnu${{ matrix.gnu-abi}} \
libxrandr-dev libxtst-dev libcups2-dev libasound2-dev
libxrandr-dev libxtst-dev libcups2-dev libasound2-dev libatspi2.0-dev libatk1.0-dev libglib2.0-dev libatk-bridge2.0-dev
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-${{ inputs.gcc-major-version }} 100 --slave /usr/bin/g++ g++ /usr/bin/g++-${{ inputs.gcc-major-version }}

- name: 'Check cache for sysroot'
Expand All @@ -133,7 +133,7 @@ jobs:
sudo debootstrap
--arch=${{ matrix.debian-arch }}
--verbose
--include=fakeroot,symlinks,build-essential,libx11-dev,libxext-dev,libxrender-dev,libxrandr-dev,libxtst-dev,libxt-dev,libcups2-dev,libfontconfig1-dev,libasound2-dev,libfreetype-dev,libpng-dev
--include=fakeroot,symlinks,build-essential,libx11-dev,libxext-dev,libxrender-dev,libxrandr-dev,libxtst-dev,libxt-dev,libcups2-dev,libfontconfig1-dev,libasound2-dev,libfreetype-dev,libpng-dev,libatspi2.0-dev,libatk1.0-dev,libglib2.0-dev,libatk-bridge2.0-dev
--resolve-deps
--variant=minbase
${{ matrix.debian-version }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/build-linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ jobs:
fi
sudo apt-get update
sudo apt-get install --only-upgrade apt
sudo apt-get install gcc-${{ inputs.gcc-major-version }}${{ inputs.gcc-package-suffix }} g++-${{ inputs.gcc-major-version }}${{ inputs.gcc-package-suffix }} libxrandr-dev${{ steps.arch.outputs.suffix }} libxtst-dev${{ steps.arch.outputs.suffix }} libcups2-dev${{ steps.arch.outputs.suffix }} libasound2-dev${{ steps.arch.outputs.suffix }} ${{ inputs.apt-extra-packages }}
sudo apt-get install gcc-${{ inputs.gcc-major-version }}${{ inputs.gcc-package-suffix }} g++-${{ inputs.gcc-major-version }}${{ inputs.gcc-package-suffix }} libxrandr-dev${{ steps.arch.outputs.suffix }} libxtst-dev${{ steps.arch.outputs.suffix }} libcups2-dev${{ steps.arch.outputs.suffix }} libasound2-dev${{ steps.arch.outputs.suffix }} libatspi2.0-dev${{ steps.arch.outputs.suffix }} libatk1.0-dev${{ steps.arch.outputs.suffix }} libglib2.0-dev${{ steps.arch.outputs.suffix }} ${{ inputs.apt-extra-packages }}
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-${{ inputs.gcc-major-version }} 100 --slave /usr/bin/g++ g++ /usr/bin/g++-${{ inputs.gcc-major-version }}

- name: 'Configure'
Expand Down
9 changes: 9 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,15 @@ $ make images
```
This will build the release configuration under `./build/linux-x86_64-server-release/`.

#### Java ATK Wrapper

To enable [Java ATK Wrapper](https://wiki.gnome.org/Accessibility/JavaAtkWrapper):
1. Install the necessary libraries and headers with:
```
$ sudo apt-get install libatspi2.0-dev libatk1.0-dev libglib2.0-dev libatk-bridge2.0-dev
```
2. Run `configure` using `--enable-java-atk-wrapper`

### Windows
<a name="build-windows"></a>
Install the following:
Expand Down
2 changes: 2 additions & 0 deletions make/autoconf/help.m4
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,8 @@ apt_help() {
PKGHANDLER_COMMAND="sudo apt-get install systemtap-sdt-dev" ;;
capstone)
PKGHANDLER_COMMAND="sudo apt-get install libcapstone-dev" ;;
atk)
PKGHANDLER_COMMAND="sudo apt-get install libatspi2.0-dev libatk1.0-dev libglib2.0-dev" ;;
esac
}

Expand Down
22 changes: 22 additions & 0 deletions make/autoconf/jdk-options.m4
Original file line number Diff line number Diff line change
Expand Up @@ -270,6 +270,28 @@ AC_DEFUN_ONCE([JDKOPT_SETUP_JDK_OPTIONS],
A11Y_JAWS_ANNOUNCING_ENABLED=false
fi
AC_SUBST(A11Y_JAWS_ANNOUNCING_ENABLED)

# Should we build support for Java ATK Wrapper?
if test "x$OPENJDK_TARGET_OS" = xlinux; then
AC_MSG_CHECKING([if Java ATK Wrapper support is enabled])

A11Y_JAVA_ATK_WRAPPER_ENABLED=false
AC_ARG_ENABLE(
[java-atk-wrapper],
[AS_HELP_STRING([--enable-java-atk-wrapper], [Set to enable the Java ATK Wrapper])],
[
if test "x$ENABLE_HEADLESS_ONLY" = xtrue; then
AC_MSG_WARN([--[enable|disable]-java-atk-wrapper[=*] flags are ignored for headless builds])
elif test "x$enableval" == xyes; then
A11Y_JAVA_ATK_WRAPPER_ENABLED=true
fi
]
)
AC_MSG_RESULT([$A11Y_JAVA_ATK_WRAPPER_ENABLED])
else
A11Y_JAVA_ATK_WRAPPER_ENABLED=false
fi
AC_SUBST(A11Y_JAVA_ATK_WRAPPER_ENABLED)
])

###############################################################################
Expand Down
70 changes: 70 additions & 0 deletions make/autoconf/lib-at-spi2-atk.m4
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
################################################################################
# Setup at-spi2-atk
################################################################################
AC_DEFUN_ONCE([LIB_SETUP_AT_SPI2_ATK],
[
AC_ARG_WITH(at-spi2-atk, [AS_HELP_STRING([--with-at-spi2-atk],
[specify prefix directory for the at-spi2-atk package
(expecting the headers under PATH/include); required for atk-wrapper to work])])
AC_ARG_WITH(at-spi2-atk-include, [AS_HELP_STRING([--with-at-spi2-atk-include],
[specify directory for the at-spi2-atk include files])])
AC_ARG_WITH(at-spi2-atk-version, [AS_HELP_STRING([--with-at-spi2-atk-version],
[specify version for the at-spi2-atk package])])

if test "x$NEEDS_LIB_AT_SPI2_ATK" = xfalse || test "x${with_at_spi2_atk}" = xno || \
test "x${with_at_spi2_atk_include}" = xno; then
if (test "x${with_at_spi2_atk}" != x && test "x${with_at_spi2_atk}" != xno) || \
(test "x${with_at_spi2_atk_include}" != x && test "x${with_at_spi2_atk_include}" != xno); then
AC_MSG_WARN([[at-spi2-atk not used, so --with-at-spi2-atk[-*] is ignored]])
fi
AT_SPI2_ATK_CFLAGS=
AT_SPI2_ATK_LIBS=
else
AT_SPI2_ATK_FOUND=no
if test "x${with_at_spi2_atk}" != x && test "x${with_at_spi2_atk}" != xyes; then
AC_MSG_CHECKING([for at-spi2-atk header and library])
if test "x${with_at_spi2_atk_version}" != x && "x${with_at_spi2_atk_version}" != xyes; then
AT_SPI2_ATK_VERSION="${with_at_spi2_atk_version}"
else
AC_MSG_ERROR([Define at-spi2-atk package version using --with-at-spi2-atk-version if you use --with-at-spi2-atk option.])
fi
if test -s "${with_at_spi2_atk}/include/at-spi2-atk/2.0/atk-bridge.h"; then
AT_SPI2_ATK_CFLAGS="-I${with_at_spi2_atk}/include/at-spi2-atk/2.0"
AT_SPI2_ATK_LIBS="-L${with_at_spi2_atk}/lib -latk-bridge-2.0"
AT_SPI2_ATK_FOUND=yes
AC_MSG_RESULT([$AT_SPI2_ATK_FOUND])
else
AC_MSG_ERROR([Can't find '/include/at-spi2-atk/2.0/atk-bridge.h' under ${with_at_spi2_atk} given with the --with-at-spi2-atk option.])
fi
fi
if test "x${with_at_spi2_atk_include}" != x; then
AC_MSG_CHECKING([for at-spi2-atk headers])
if test "x${with_at_spi2_atk_version}" != x && "x${with_at_spi2_atk_version}" != xyes; then
AT_SPI2_ATK_VERSION="${with_at_spi2_atk_version}"
else
AC_MSG_ERROR([Define at-spi2-atk package version using --with-at-spi2-atk-version if you use --with-at-spi2-atk-include option.])
fi
if test -s "${with_at_spi2_atk_include}/at-spi2-atk/2.0/atk-bridge.h"; then
AT_SPI2_ATK_CFLAGS="-I${with_at_spi2_atk_include}/at-spi2-atk/2.0"
AT_SPI2_ATK_FOUND=yes
AC_MSG_RESULT([$AT_SPI2_ATK_FOUND])
else
AC_MSG_ERROR([Can't find 'include/at-spi2-atk-2.0/atk-bridge.h' under ${with_at_spi2_atk_include} given with the --with-at-spi2-atk-include option.])
fi
fi
if test "x$AT_SPI2_ATK_FOUND" = xno; then
# Are the at-spi2-atk headers installed in the default /usr/include location?
PKG_CHECK_MODULES([AT_SPI2_ATK], [atk-bridge-2.0],
[AT_SPI2_ATK_FOUND=yes; AT_SPI2_ATK_VERSION=$("$PKG_CONFIG" --modversion atk-bridge-2.0)],
[AT_SPI2_ATK_FOUND=no; break]
)
fi
if test "x$AT_SPI2_ATK_FOUND" = xno; then
HELP_MSG_MISSING_DEPENDENCY([at-spi2-atk])
AC_MSG_ERROR([Could not find at-spi2-atk! $HELP_MSG ])
fi
fi
AT_SPI2_ATK_CFLAGS="$AT_SPI2_ATK_CFLAGS -DATSPI_MAJOR_VERSION=$(echo $AT_SPI2_ATK_VERSION | cut -d. -f1) -DATSPI_MINOR_VERSION=$(echo $AT_SPI2_ATK_VERSION | cut -d. -f2) -DATSPI_MICRO_VERSION=$(echo $AT_SPI2_ATK_VERSION | cut -d. -f3)"
AC_SUBST(AT_SPI2_ATK_CFLAGS)
AC_SUBST(AT_SPI2_ATK_LIBS)
])
53 changes: 53 additions & 0 deletions make/autoconf/lib-atk.m4
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
################################################################################
# Setup atk
################################################################################
AC_DEFUN_ONCE([LIB_SETUP_ATK],
[
AC_ARG_WITH(atk, [AS_HELP_STRING([--with-atk],
[specify prefix directory for the atk package
(expecting the headers under PATH/include); required for atk-wrapper to work])])
AC_ARG_WITH(atk-include, [AS_HELP_STRING([--with-atk-include],
[specify directory for the atk include files])])
if test "x$NEEDS_LIB_ATK" = xfalse || test "x${with_atk}" = xno || \
test "x${with_atk_include}" = xno; then
if (test "x${with_atk}" != x && test "x${with_atk}" != xno) || \
(test "x${with_atk_include}" != x && test "x${with_atk_include}" != xno); then
AC_MSG_WARN([[atk not used, so --with-atk[-*] is ignored]])
fi
ATK_CFLAGS=
ATK_LIBS=
else
ATK_FOUND=no
if test "x${with_atk}" != x && test "x${with_atk}" != xyes; then
AC_MSG_CHECKING([for atk header and library])
if test -s "${with_atk}/include/atk-1.0/atk/atk.h"; then
ATK_CFLAGS="-I${with_atk}/include/atk-1.0"
ATK_LIBS="-L${with_atk}/lib -latk-1.0"
ATK_FOUND=yes
AC_MSG_RESULT([$ATK_FOUND])
else
AC_MSG_ERROR([Can't find '/include/atk-1.0/atk/atk.h' under ${with_atk} given with the --with-atk option.])
fi
fi
if test "x${with_atk_include}" != x; then
AC_MSG_CHECKING([for atk headers])
if test -s "${with_atk_include}/atk-1.0/atk/atk.h"; then
ATK_CFLAGS="-I${with_atk_include}/atk-1.0"
ATK_FOUND=yes
AC_MSG_RESULT([$ATK_FOUND])
else
AC_MSG_ERROR([Can't find 'include/atk-1.0/atk/atk.h' under ${with_atk_include} given with the --with-atk-include option.])
fi
fi
if test "x$ATK_FOUND" = xno; then
# Are the atk headers installed in the default /usr/include location?
PKG_CHECK_MODULES([ATK], [atk], [ATK_FOUND=yes;], [ATK_FOUND=no; break])
fi
if test "x$ATK_FOUND" = xno; then
HELP_MSG_MISSING_DEPENDENCY([atk])
AC_MSG_ERROR([Could not find atk! $HELP_MSG ])
fi
fi
AC_SUBST(ATK_CFLAGS)
AC_SUBST(ATK_LIBS)
])
86 changes: 86 additions & 0 deletions make/autoconf/lib-glib.m4
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
################################################################################
# Setup glib
################################################################################
AC_DEFUN_ONCE([LIB_SETUP_GLIB],
[
AC_ARG_WITH(glib, [AS_HELP_STRING([--with-glib],
[specify prefix directory for the glib package
(expecting the headers under PATH/include); required for atk-wrapper to work])])
AC_ARG_WITH(glib-include, [AS_HELP_STRING([--with-glib-include],
[specify directory for the glib include files])])
AC_ARG_WITH(glibconfig, [AS_HELP_STRING([--with-glibconfig],
[specify prefix directory for the glibconfig package
(expecting the headers under PATH/include); required for atk-wrapper to work])])
AC_ARG_WITH(glibconfig-include, [AS_HELP_STRING([--with-glibconfig-include],
[specify directory for the glibconfig include files])])

if test "x$NEEDS_LIB_GLIB" = xfalse || test "x${with_glib}" = xno || \
test "x${with_glib_include}" = xno || \
test "x${with_glibconfig}" = xno || test "x${with_glibconfig_include}" = xno; then
if (test "x${with_glib}" != x && test "x${with_glib}" != xno) || \
(test "x${with_glib_include}" != x && test "x${with_glib_include}" != xno) || \
(test "x${with_glibconfig}" != x && test "x${with_glibconfig}" != xno) || \
(test "x${with_glibconfig_include}" != x && test "x${with_glibconfig_include}" != xno); then
AC_MSG_WARN([[glib not used, so --with-glib[-*] and --with-glibconfig[-*] are ignored]])
fi
GLIB_CFLAGS=
GLIB_LIBS=
GLIBCONFIG_CFLAGS=
else
GLIB_FOUND=no
GLIBCONFIG_FOUND=no
GLIBCONFIG_CFLAGS=
if test "x${with_glib}" != x && test "x${with_glib}" != xyes; then
AC_MSG_CHECKING([for glib header and library])
if test -s "${with_glib}/include/glib-2.0/glib.h"; then
GLIB_CFLAGS="-I${with_glib}/include/glib-2.0"
GLIB_LIBS="-L${with_glib}/lib -lglib-2.0"
GLIB_FOUND=yes
AC_MSG_RESULT([$GLIB_FOUND])
else
AC_MSG_ERROR([Can't find '/include/glib-2.0/glib.h' under ${with_glib} given with the --with-glib option.])
fi
fi
if test "x${with_glib_include}" != x; then
AC_MSG_CHECKING([for glib headers])
if test -s "${with_glib_include}/glib-2.0/glib.h"; then
GLIB_CFLAGS="-I${with_glib_include}"
GLIB_FOUND=yes
AC_MSG_RESULT([$GLIB_FOUND])
else
AC_MSG_ERROR([Can't find '/include/glib-2.0/glib.h' under ${with_glib_include} given with the --with-glib-include option.])
fi
fi
if test "x${with_glibconfig}" != x && test "x${with_glibconfig}" != xyes; then
AC_MSG_CHECKING([for glibconfig header])
if test -s "${with_glibconfig}/include/glibconfig.h"; then
GLIBCONFIG_CFLAGS="-I${with_glibconfig}/include"
GLIBCONFIG_FOUND=yes
AC_MSG_RESULT([$GLIBCONFIG_FOUND])
else
AC_MSG_ERROR([Can't find '/include/glibconfig.h' under ${with_glibconfig} given with the --with-glibconfig option.])
fi
fi
if test "x${with_glibconfig_include}" != x; then
AC_MSG_CHECKING([for glibconfig headers])
if test -s "${with_glibconfig_include}/glibconfig.h"; then
GLIBCONFIG_CFLAGS="-I${with_glibconfig_include}"
GLIBCONFIG_FOUND=yes
AC_MSG_RESULT([$GLIBCONFIG_FOUND])
else
AC_MSG_ERROR([Can't find '/include/glibconfig.h' under ${with_glibconfig_include} given with the --with-glibconfig-include option.])
fi
fi
if test "x$GLIB_FOUND" = xno || test "x$GLIBCONFIG_FOUND" = xno; then
# Are the glib headers installed in the default /usr/include location?
PKG_CHECK_MODULES([GLIB], [glib-2.0], [GLIB_FOUND=yes; GLIBCONFIG_FOUND=yes], [GLIB_FOUND=no; GLIBCONFIG_FOUND=no; break])
fi
if test "x$GLIB_FOUND" = xno || test "x$GLIBCONFIG_FOUND" = xno; then
HELP_MSG_MISSING_DEPENDENCY([glib])
AC_MSG_ERROR([Could not find glib! $HELP_MSG])
fi
fi
GLIB_CFLAGS="$GLIB_CFLAGS $GLIBCONFIG_CFLAGS"
AC_SUBST(GLIB_CFLAGS)
AC_SUBST(GLIB_LIBS)
])
58 changes: 58 additions & 0 deletions make/autoconf/lib-gobject.m4
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
################################################################################
# Setup gobject
################################################################################
AC_DEFUN_ONCE([LIB_SETUP_GOBJECT],
[
AC_ARG_WITH(gobject, [AS_HELP_STRING([--with-gobject],
[specify prefix directory for the gobject package
(expecting the headers under PATH/include); required for atk-wrapper to work])])
AC_ARG_WITH(gobject-include, [AS_HELP_STRING([--with-gobject-include],
[specify directory for the gobject include files])])

if test "x$NEEDS_LIB_GOBJECT" = xfalse || test "x${with_gobject}" = xno || \
test "x${with_gobject_include}" = xno; then
if (test "x${with_gobject}" != x && test "x${with_gobject}" != xno) || \
(test "x${with_gobject_include}" != x && test "x${with_gobject_include}" != xno); then
AC_MSG_WARN([[gobject not used, so --with-gobject[-*] is ignored]])
fi
GOBJECT_CFLAGS=
GOBJECT_LIBS=
else
GOBJECT_FOUND=no

if test "x${with_gobject}" != x && test "x${with_gobject}" != xyes; then
AC_MSG_CHECKING([for gobject header and library])
if test -s "${with_gobject}/include/glib-2.0/gobject/gobject.h"; then
GOBJECT_CFLAGS="-I${with_gobject}/include/glib-2.0/gobject"
GOBJECT_LIBS="-L${with_gobject}/lib -lgobject-2.0"
GOBJECT_FOUND=yes
AC_MSG_RESULT([$GOBJECT_FOUND])
else
AC_MSG_ERROR([Can't find '/include/glib-2.0/gobject/gobject.h' under ${with_gobject} given with the --with-gobject option.])
fi
fi
if test "x${with_gobject_include}" != x; then
AC_MSG_CHECKING([for gobject headers])
if test -s "${with_gobject_include}/glib-2.0/gobject/gobject.h"; then
GOBJECT_CFLAGS="-I${with_gobject_include}/glib-2.0/gobject"
GOBJECT_FOUND=yes
AC_MSG_RESULT([$GOBJECT_FOUND])
else
AC_MSG_ERROR([Can't find '/include/glib-2.0/gobject/gobject.h' under ${with_gobject_include} given with the --with-gobject-include option.])
fi
fi
if test "x$GOBJECT_FOUND" = xno; then
# Are the gobject headers installed in the default /usr/include location?
PKG_CHECK_MODULES([GOBJECT], [gobject-2.0],
[ GOBJECT_FOUND=yes;],
[ GOBJECT_FOUND=no; break ]
)
fi
if test "x$GOBJECT_FOUND" = xno; then
HELP_MSG_MISSING_DEPENDENCY([gobject])
AC_MSG_ERROR([Could not find gobject! $HELP_MSG ])
fi
fi
AC_SUBST(GOBJECT_CFLAGS)
AC_SUBST(GOBJECT_LIBS)
])
23 changes: 23 additions & 0 deletions make/autoconf/libraries.m4
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just a note: here seems the full list of Ubuntu 22 packages that must be additionally installed to build the patch:

  • libatspi2.0-dev
  • libatk1.0-dev
  • libglib2.0-dev
  • libatk-bridge2.0-dev

Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,10 @@ m4_include([lib-nvdacontrollerclient.m4])
m4_include([lib-wayland.m4])
m4_include([lib-dbus.m4])
m4_include([lib-tests.m4])
m4_include([lib-atk.m4])
m4_include([lib-at-spi2-atk.m4])
m4_include([lib-glib.m4])
m4_include([lib-gobject.m4])

################################################################################
# Determine which libraries are needed for this configuration
Expand Down Expand Up @@ -112,6 +116,19 @@ AC_DEFUN_ONCE([LIB_DETERMINE_DEPENDENCIES],
else
NEEDS_LIB_NVDACONTROLLERCLIENT=false
fi

# Check if atk, at-spi2-atk, glib, gobject is needed
if test "x$A11Y_JAVA_ATK_WRAPPER_ENABLED" = xtrue; then
NEEDS_LIB_ATK=true
NEEDS_LIB_AT_SPI2_ATK=true
NEEDS_LIB_GLIB=true
NEEDS_LIB_GOBJECT=true
else
NEEDS_LIB_ATK=false
NEEDS_LIB_AT_SPI2_ATK=false
NEEDS_LIB_GLIB=false
NEEDS_LIB_GOBJECT=false
fi
])

################################################################################
Expand Down Expand Up @@ -185,6 +202,12 @@ AC_DEFUN_ONCE([LIB_SETUP_LIBRARIES],
BASIC_JVM_LIBS="$BASIC_JVM_LIBS -lrt"
fi

# libraries for Java ATK Wrapper
LIB_SETUP_AT_SPI2_ATK
LIB_SETUP_ATK
LIB_SETUP_GLIB
LIB_SETUP_GOBJECT

# perfstat lib
if test "x$OPENJDK_TARGET_OS" = xaix; then
BASIC_JVM_LIBS="$BASIC_JVM_LIBS -lperfstat"
Expand Down
Loading