@@ -17,6 +17,12 @@ typedef void*(*ZN7android7RefBaseC2Ev_t)(void* thisptr);
17
17
static ZN7android7RefBaseC2Ev_t ZN7android7RefBaseC2Ev = nullptr ;
18
18
typedef void *(*ZN7android7RefBaseD2Ev_t)(void * thisptr);
19
19
static ZN7android7RefBaseD2Ev_t ZN7android7RefBaseD2Ev = nullptr ;
20
+ typedef void (*ZNK7android7RefBase9incStrongEPKv_t)(void * thisptr, void * id);
21
+ static ZNK7android7RefBase9incStrongEPKv_t ZNK7android7RefBase9incStrongEPKv = nullptr ;
22
+ typedef void (*ZNK7android7RefBase9decStrongEPKv_t)(void * thisptr, void * id);
23
+ static ZNK7android7RefBase9decStrongEPKv_t ZNK7android7RefBase9decStrongEPKv = nullptr ;
24
+ typedef void *(*ZNK7android7RefBase10createWeakEPKv_t)(void * thisptr, void * id);
25
+ static ZNK7android7RefBase10createWeakEPKv_t ZNK7android7RefBase10createWeakEPKv = nullptr ;
20
26
#include " aosp_stubs.h"
21
27
typedef void *(*ZN7android19parcelForJavaObjectEP7_JNIEnvP8_jobject_t)(_JNIEnv*, _jobject*);
22
28
static ZN7android19parcelForJavaObjectEP7_JNIEnvP8_jobject_t ZN7android19parcelForJavaObjectEP7_JNIEnvP8_jobject = nullptr ;
@@ -26,19 +32,13 @@ typedef void*(*ZN7android10AudioTrackC1ERKNS_7content22AttributionSourceStateE_t
26
32
static ZN7android10AudioTrackC1ERKNS_7content22AttributionSourceStateE_t ZN7android10AudioTrackC1ERKNS_7content22AttributionSourceStateE = nullptr ;
27
33
typedef void *(*ZN7android10AudioTrackC1Ev_t)(void * thisptr);
28
34
static ZN7android10AudioTrackC1Ev_t ZN7android10AudioTrackC1Ev = nullptr ;
29
- typedef void (*ZNK7android7RefBase9incStrongEPKv_t)(void * thisptr, void * id);
30
- static ZNK7android7RefBase9incStrongEPKv_t ZNK7android7RefBase9incStrongEPKv = nullptr ;
31
- typedef void (*ZNK7android7RefBase9decStrongEPKv_t)(void * thisptr, void * id);
32
- static ZNK7android7RefBase9decStrongEPKv_t ZNK7android7RefBase9decStrongEPKv = nullptr ;
33
- typedef void *(*ZNK7android7RefBase10createWeakEPKv_t)(void * thisptr, void * id);
34
- static ZNK7android7RefBase10createWeakEPKv_t ZNK7android7RefBase10createWeakEPKv = nullptr ;
35
35
typedef void (*ZN7android7RefBase12weakref_type7decWeakEPKv_t)(void * thisptr, void * id);
36
36
static ZN7android7RefBase12weakref_type7decWeakEPKv_t ZN7android7RefBase12weakref_type7decWeakEPKv = nullptr ;
37
37
typedef int32_t (*ZN7android10AudioTrack3setE19audio_stream_type_tj14audio_format_t20audio_channel_mask_tm20audio_output_flags_tRKNS_2wpINS0_19IAudioTrackCallbackEEEiRKNS_2spINS_7IMemoryEEEb15audio_session_tNS0_13transfer_typeEPK20audio_offload_info_tRKNS_7content22AttributionSourceStateEPK18audio_attributes_tbfi_t)
38
38
(void * thisptr, int32_t streamType, uint32_t sampleRate, uint32_t format, uint32_t channelMask, size_t frameCount /* = 0 */ , uint32_t flags /* = 0 */ , fake_wp callback /* = nullptr */ , int32_t notificationFrames /* = 0 */ , fake_sp sharedMemory /* = nullptr */ , bool threadCanCallJava /* = false */ , int32_t audioSessionId /* = 0 */ , transfer_type transferType /* = TRANSFER_DEFAULT */ , void * offloadInfo /* = nullptr */ , void * attributionSource, void * attributes /* = nullptr */ , bool doNotReconnect /* = false */ , float maxRequiredSpeed /* = 1.0f */ , int selectedDeviceId /* = 0 */ );
39
39
static ZN7android10AudioTrack3setE19audio_stream_type_tj14audio_format_t20audio_channel_mask_tm20audio_output_flags_tRKNS_2wpINS0_19IAudioTrackCallbackEEEiRKNS_2spINS_7IMemoryEEEb15audio_session_tNS0_13transfer_typeEPK20audio_offload_info_tRKNS_7content22AttributionSourceStateEPK18audio_attributes_tbfi_t ZN7android10AudioTrack3setE19audio_stream_type_tj14audio_format_t20audio_channel_mask_tm20audio_output_flags_tRKNS_2wpINS0_19IAudioTrackCallbackEEEiRKNS_2spINS_7IMemoryEEEb15audio_session_tNS0_13transfer_typeEPK20audio_offload_info_tRKNS_7content22AttributionSourceStateEPK18audio_attributes_tbfi = nullptr ;
40
40
41
- /* class MyCallback : virtual android::AudioTrack::IAudioTrackCallback {
41
+ class MyCallback : public virtual android::AudioTrack::IAudioTrackCallback {
42
42
public:
43
43
MyCallback () : RefBase() {};
44
44
void onUnderrun () override {
@@ -56,11 +56,11 @@ static ZN7android10AudioTrack3setE19audio_stream_type_tj14audio_format_t20audio_
56
56
void onStreamEnd () override {
57
57
ALOGI (" MyCallback::onStreamEnd called" );
58
58
}
59
- };*/
59
+ };
60
60
61
61
struct track_holder {
62
62
void * track;
63
- void * callback;
63
+ MyCallback * callback;
64
64
void * ats;
65
65
};
66
66
@@ -113,19 +113,13 @@ Java_org_akanework_gramophone_logic_utils_NativeTrack_create(
113
113
memset (ats, 0 , ATTRIBUTION_SOURCE_SIZE);
114
114
ZN7android7content22AttributionSourceState14readFromParcelEPKNS_6ParcelE (ats, myParcel);
115
115
ZN7android10AudioTrackC1ERKNS_7content22AttributionSourceStateE (theTrack, ats);
116
- // ZN7android7RefBaseC2Ev(theTrack); // TODO
117
116
holder->ats = ats;
118
117
} else {
119
118
ZN7android10AudioTrackC1Ev (theTrack);
120
119
}
121
- ALOGE (" 0" );
122
- auto callback = nullptr ;// new MyCallback();
123
- // ZN7android7RefBaseC2Ev(callback); // TODO
124
- ALOGE (" 1" );
125
- ZNK7android7RefBase9incStrongEPKv (theTrack, holder);
126
- ALOGE (" 2" );
127
- // ZNK7android7RefBase9incStrongEPKv(callback, holder);
128
- ALOGE (" 3" );
120
+ auto callback = new MyCallback ();
121
+ callback->incStrong (holder);
122
+ ((android::AudioTrack*)theTrack)->incStrong (holder);
129
123
holder->track = theTrack;
130
124
holder->callback = callback;
131
125
return (intptr_t )holder;
@@ -134,9 +128,9 @@ Java_org_akanework_gramophone_logic_utils_NativeTrack_create(
134
128
extern " C" JNIEXPORT jint JNICALL
135
129
Java_org_akanework_gramophone_logic_utils_NativeTrack_doSet (
136
130
JNIEnv *, jobject, jlong ptr) {
137
- return 0 ;
138
131
auto holder = (track_holder*) ptr;
139
- auto refs = ZNK7android7RefBase10createWeakEPKv (holder->callback , holder);
132
+ auto refs = holder->callback ->createWeak (holder);
133
+ ALOGE (" calling set on %p" , holder->track );
140
134
auto ret = ZN7android10AudioTrack3setE19audio_stream_type_tj14audio_format_t20audio_channel_mask_tm20audio_output_flags_tRKNS_2wpINS0_19IAudioTrackCallbackEEEiRKNS_2spINS_7IMemoryEEEb15audio_session_tNS0_13transfer_typeEPK20audio_offload_info_tRKNS_7content22AttributionSourceStateEPK18audio_attributes_tbfi (
141
135
holder->track ,
142
136
/* streamType = */ 3 /* AUDIO_STREAM_MUSIC */ ,
@@ -145,7 +139,7 @@ Java_org_akanework_gramophone_logic_utils_NativeTrack_doSet(
145
139
/* channelMask = */ 1 ,
146
140
/* frameCount = */ 0 /* default */ ,
147
141
/* flags = */ 0 /* AUDIO_OUTPUT_FLAG_NONE */ ,
148
- /* callback = */ { .thePtr = holder-> callback , . refs = refs },
142
+ /* callback = */ { .thePtr = nullptr }, // TODO add back ptr/refs
149
143
/* notificationFrames = */ 0 /* default */ ,
150
144
/* sharedBuffer = */ { .thePtr = nullptr },
151
145
/* threadCanCallJava = */ true ,
@@ -171,7 +165,7 @@ Java_org_akanework_gramophone_logic_utils_NativeTrack_dtor(
171
165
JNIEnv *, jobject, jlong ptr) {
172
166
auto holder = (track_holder*) ptr;
173
167
// RefBase will call the dtor
174
- ZNK7android7RefBase9decStrongEPKv ( holder->track , holder);
175
- ZNK7android7RefBase9decStrongEPKv ( holder->callback , holder);
168
+ ((android::AudioTrack*) holder->track )-> decStrong ( holder);
169
+ holder->callback -> decStrong ( holder);
176
170
delete holder;
177
171
}
0 commit comments