Commit Graph

22 Commits

Author SHA1 Message Date
Julian Winkler
3bdffe7ce9 View: prevent redundant measuring for performance reasons
No need to remeasure or relayout when nothing has changed
2023-10-29 15:28:06 +01:00
Mis012
9ef2151c5e GLSurfaceView: remove old implementation, import the one from AOSP
Now that we have a reasonably well working SurfaceView implementation,
it is actually cleaner to just implement GLSurfaceView the way AOSP
does. In fact, their code doesn't have any weird dependencies, and
can mostly be used as-is.

The AOSP code is pure Java, which means we had to implement some
EGL wrappers.

This change fixes issues with Wayland (it only ever worked because
the pbuffers were allocated using an XWayland EGLDisplay), and
with resizing (which we simply didn't support), all while getting
rid of quite some (arguably not very readable) LoC.
2023-10-20 20:54:37 +02:00
Mis012
4a0755c6e0 api-impl{-jni}: make view.onTouchEvent work, misc stuff to make input work for Unity games
onTouchEvent was previously incorrectly handled in GLSurfaceView; move it
to View so that it works properly with any of it's descendants.

This is done by reusing the existing setOnTouchListener implementation
and changing it to use GtkEventControllerLegacy which provides motion
events.

Technically some of the code is in WrapperWidget.c since every widget
calls wrapper_widget_set_jobject and we already have related code
there.
2023-10-17 21:33:59 +02:00
Julian Winkler
b340032e9f impement android.media.MediaCodec using libavcodec
The current implementation requires a VA-API driver and a Wayland
compositor with YUV-buffer support. GNOME supports YUV-buffers
since the recent version 45 release
2023-10-14 18:29:33 +02:00
Julian Winkler
23c0b006ef use handle_cache for Looper methods
These methods need to be called very often
2023-10-14 18:29:33 +02:00
Mis012
4e22428a27 api-impl-jni/app/android_app_Activity.c: call OnWindowFocusChanged in activity_update_current
also rename apk_main_activity to activity since that's the class it's now for
2023-09-25 19:54:25 +02:00
Mis012
90cb1c925a api-impl: use liblog for android.util.Log; use Log.v for debugging prints and Log.w for stub tracing 2023-09-12 13:41:52 +02:00
Julian Winkler
295d9dfda3 LinearLayout: handle overwritten performClick() method
This is needed to make TabLayout functional
2023-09-01 12:19:45 +02:00
Julian Winkler
fb1a07967e copy android.widget.Scroller from AOSP and implement missing scroll APIs
This is needed to make ViewPager functional
2023-09-01 12:13:24 +02:00
Julian Winkler
c4b7bdc63d ViewGroup: handle scroll events 2023-08-23 12:39:55 +02:00
Julian Winkler
ca975a0e7c add support for ViewGroups with custom onLayout()
A custom GtkLayoutManager is set to these objects, which calls into the
java handlers when measure or layout is requested.

Androids onMeasure method is quite different from GTKs measure method,
because Android already defines the final size during onMeasure.
Therefore, we call onMeasure from GTKs allocate callback instead of the
measure callback.
2023-08-23 12:39:10 +02:00
Julian Winkler
a8e39cd613 get Application class from AndroidManifest.xml and call onCreate() 2023-08-22 15:53:09 +02:00
Mis012
4a1159f5cb api-impl: add misc stubs 2023-08-12 13:09:33 +02:00
Julian Winkler
18ca242096 support multiple Activities 2023-08-11 18:15:19 +02:00
Julian Winkler
4491de7f63 MessageQueue: integrate with glib main loop
Adds a special treatment for the main Looper to not block in java code,
but instead return to glib managed thread loop. Timeouts in the mainloop
are now handled using g_timeout_add_full().

Also defer Activity construction, so that every thing is set up properly
when the constructor runs.
2023-08-08 14:18:20 +02:00
Julian Winkler
def91a688d handle overwritten onDraw function in WrapperWidget
This makes it easy to support for example ImageView with custom
onDraw function
2023-08-08 14:18:20 +02:00
Julian Winkler
12e9e9788a load assets and bitmaps directly from apk 2023-06-21 22:38:08 +02:00
Mis012
1c94d56a11 src/api-impl-jni/util.c: add caching for SurfaceHolder; add gdb helper functions 2022-12-27 17:14:30 +01:00
Mis012
33b4515cb9 add support for the boneheaded method of receiving input events that is used by NativeActivity apps
currently, our "not-actually-a-queue" implementation is quite ugly,
hopefully it might be possible to make it look somewhat sane while
not needing to make it as much of a queue as it is on android
2022-11-11 19:18:21 +01:00
Mis012
7ad1ce86f2 call onStart when starting an activity; uncomment handler for onWindowFocusChanged in NativeActivity 2022-11-08 21:12:41 +01:00
Mis012
b801f0fb3c implement some stuff to make exaple SDL app run
NOTE: the main addition in this commit is WIP support for apps which
render on an EGL surface obtained using ANativeWindow_fromSurface

currently, this EGL surface is obtained by creating a 700x700 pixel
window with GLFW (the 700x700 size is hardcoded in several places)
and only Wayland is supported

ideally, we'd want to use a wayland subsurface to position the EGL
surface above the Surface widget it's associated with (and do
whatever for X11)
2022-10-26 18:39:04 +02:00
Mis012
449090143e refactor source tree organization, switch to meson 2022-10-09 22:59:16 +02:00