Android.mk
author Ryan C. Gordon
Mon, 21 Aug 2017 00:42:06 -0400
changeset 11334 749cb40916f2
parent 11262 8e5441ab6c63
child 11429 424d7476f72d
permissions -rwxr-xr-x
x11: specify event mask for buttons when grabbing pointer (thanks, Stas!).

This fixes a strange corner case (notes appended below), and should be
safe to do anyhow.

Fixes Bugzilla #3674.

"I did more tests.
It appears the bug only happens if there is
another window on the screen that has "always
on top" property. For me it is xawtv - it is
always opened in a screen corner. Closing
xawtv or removing "always on top" property
from it makes the problem to go away.
Plus, it doesn't appear like the buttons are
not delivered at all. It appears that instead
the button presses are delivered on some mouse
positions, but not delivered when you move the
mouse to other part of the window... So this is
really weird and is likely somewhere deep in the
Xorg.
Maybe somehow it happens that the cursor is
actually above the xawtv window, but, because
my app uses grab, it is not visible there, and
in that case the events are not delivered to
my app?
But with my patch the button events are
always delivered flawlessly, it seems.

Hmm, and that indeed seems to explain my problem:
if the mask is set properly and my app uses
grab, then, even if the mouse is above some
other window, the events would still be delivered
to the grabbing app, which is what actually wanted
because my app uses relative mouse mode, so it
doesn't know the pointer can cross some other window
(my app draws the pointer itself).
So my current theory is that my patch only enforces
the mouse grab, which otherwise can be tricked by
some other window preventing the button events
delivery (but motion events are still delivered
via xinput2, which makes it all look very obscure)."
slouken@4964
     1
LOCAL_PATH := $(call my-dir)
slouken@4964
     2
slouken@4964
     3
###########################
slouken@4964
     4
#
slouken@4964
     5
# SDL shared library
slouken@4964
     6
#
slouken@4964
     7
###########################
slouken@4964
     8
slouken@4964
     9
include $(CLEAR_VARS)
slouken@4964
    10
slouken@6270
    11
LOCAL_MODULE := SDL2
slouken@4964
    12
slouken@4964
    13
LOCAL_C_INCLUDES := $(LOCAL_PATH)/include
slouken@4964
    14
slouken@7311
    15
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_C_INCLUDES)
slouken@7311
    16
slouken@5090
    17
LOCAL_SRC_FILES := \
slouken@4964
    18
	$(subst $(LOCAL_PATH)/,, \
slouken@4964
    19
	$(wildcard $(LOCAL_PATH)/src/*.c) \
slouken@4964
    20
	$(wildcard $(LOCAL_PATH)/src/audio/*.c) \
slouken@5090
    21
	$(wildcard $(LOCAL_PATH)/src/audio/android/*.c) \
slouken@5090
    22
	$(wildcard $(LOCAL_PATH)/src/audio/dummy/*.c) \
slouken@10879
    23
	$(LOCAL_PATH)/src/atomic/SDL_atomic.c.arm \
slouken@5003
    24
	$(LOCAL_PATH)/src/atomic/SDL_spinlock.c.arm \
ewing@7501
    25
	$(wildcard $(LOCAL_PATH)/src/core/android/*.c) \
slouken@4964
    26
	$(wildcard $(LOCAL_PATH)/src/cpuinfo/*.c) \
icculus@8097
    27
	$(wildcard $(LOCAL_PATH)/src/dynapi/*.c) \
slouken@4964
    28
	$(wildcard $(LOCAL_PATH)/src/events/*.c) \
slouken@4964
    29
	$(wildcard $(LOCAL_PATH)/src/file/*.c) \
slouken@5090
    30
	$(wildcard $(LOCAL_PATH)/src/haptic/*.c) \
slouken@11238
    31
	$(wildcard $(LOCAL_PATH)/src/haptic/android/*.c) \
slouken@4964
    32
	$(wildcard $(LOCAL_PATH)/src/joystick/*.c) \
slouken@5090
    33
	$(wildcard $(LOCAL_PATH)/src/joystick/android/*.c) \
slouken@5092
    34
	$(wildcard $(LOCAL_PATH)/src/loadso/dlopen/*.c) \
slouken@5090
    35
	$(wildcard $(LOCAL_PATH)/src/power/*.c) \
slouken@6448
    36
	$(wildcard $(LOCAL_PATH)/src/power/android/*.c) \
slouken@9054
    37
	$(wildcard $(LOCAL_PATH)/src/filesystem/android/*.c) \
slouken@5161
    38
	$(wildcard $(LOCAL_PATH)/src/render/*.c) \
slouken@5204
    39
	$(wildcard $(LOCAL_PATH)/src/render/*/*.c) \
slouken@4964
    40
	$(wildcard $(LOCAL_PATH)/src/stdlib/*.c) \
slouken@4964
    41
	$(wildcard $(LOCAL_PATH)/src/thread/*.c) \
slouken@5090
    42
	$(wildcard $(LOCAL_PATH)/src/thread/pthread/*.c) \
slouken@4964
    43
	$(wildcard $(LOCAL_PATH)/src/timer/*.c) \
slouken@5090
    44
	$(wildcard $(LOCAL_PATH)/src/timer/unix/*.c) \
slouken@4964
    45
	$(wildcard $(LOCAL_PATH)/src/video/*.c) \
gabomdq@7793
    46
	$(wildcard $(LOCAL_PATH)/src/video/android/*.c) \
philipp@9592
    47
	$(wildcard $(LOCAL_PATH)/src/test/*.c))
slouken@4964
    48
slouken@6208
    49
LOCAL_CFLAGS += -DGL_GLEXT_PROTOTYPES
gabomdq@7659
    50
LOCAL_LDLIBS := -ldl -lGLESv1_CM -lGLESv2 -llog -landroid
slouken@4964
    51
slouken@4964
    52
include $(BUILD_SHARED_LIBRARY)
slouken@7804
    53
slouken@7804
    54
###########################
slouken@7804
    55
#
slouken@7804
    56
# SDL static library
slouken@7804
    57
#
slouken@7804
    58
###########################
slouken@7804
    59
slouken@7804
    60
LOCAL_MODULE := SDL2_static
slouken@7804
    61
slouken@7804
    62
LOCAL_MODULE_FILENAME := libSDL2
slouken@7804
    63
slouken@8864
    64
LOCAL_SRC_FILES += $(subst $(LOCAL_PATH)/,,$(LOCAL_PATH)/src/main/android/SDL_android_main.c)
slouken@7804
    65
slouken@7804
    66
LOCAL_LDLIBS := 
slouken@7804
    67
LOCAL_EXPORT_LDLIBS := -Wl,--undefined=Java_org_libsdl_app_SDLActivity_nativeInit -ldl -lGLESv1_CM -lGLESv2 -llog -landroid
slouken@7804
    68
slouken@7804
    69
include $(BUILD_STATIC_LIBRARY)
slouken@11262
    70
slouken@11262
    71
###########################
slouken@11262
    72
#
slouken@11262
    73
# SDL main static library
slouken@11262
    74
#
slouken@11262
    75
###########################
slouken@11262
    76
slouken@11262
    77
include $(CLEAR_VARS)
slouken@11262
    78
slouken@11262
    79
LOCAL_C_INCLUDES := $(LOCAL_PATH)/include
slouken@11262
    80
slouken@11262
    81
LOCAL_MODULE := SDL2_main
slouken@11262
    82
slouken@11262
    83
LOCAL_MODULE_FILENAME := libSDL2main
slouken@11262
    84
slouken@11262
    85
LOCAL_SRC_FILES := $(LOCAL_PATH)/src/main/android/SDL_android_main.c
slouken@11262
    86
slouken@11262
    87
include $(BUILD_STATIC_LIBRARY)
slouken@11262
    88
slouken@11262
    89