| 243 | /////////////////////////////////////////// |
| 244 | |
| 245 | bool android_read_asset(const char* asset_name, void** out_data, size_t* out_size) { |
| 246 | // See: http://www.50ply.com/blog/2013/01/19/loading-compressed-android-assets-with-file-pointer/ |
| 247 | |
| 248 | AAsset *asset = AAssetManager_open(local.asset_manager, asset_name, AASSET_MODE_BUFFER); |
| 249 | if (asset) { |
| 250 | *out_size = AAsset_getLength(asset); |
| 251 | *out_data = sk_malloc(*out_size + 1); |
| 252 | AAsset_read (asset, *out_data, *out_size); |
| 253 | AAsset_close(asset); |
| 254 | |
| 255 | ((uint8_t *)*out_data)[*out_size] = 0; |
| 256 | return true; |
| 257 | } |
| 258 | return false; |
| 259 | } |
| 260 | |
| 261 | /////////////////////////////////////////// |
| 262 | // Permissions // |
no test coverage detected