| #include "include/dvr/dvr_api.h" |
| |
| #include <errno.h> |
| #include <utils/Log.h> |
| |
| // Headers from libdvr |
| #include <dvr/dvr_buffer.h> |
| #include <dvr/dvr_buffer_queue.h> |
| #include <dvr/dvr_display_manager.h> |
| #include <dvr/dvr_surface.h> |
| #include <dvr/dvr_vsync.h> |
| |
| // Headers not yet moved into libdvr. |
| // TODO(jwcai) Move these once their callers are moved into Google3. |
| #include <dvr/dvr_hardware_composer_client.h> |
| #include <dvr/pose_client.h> |
| #include <dvr/virtual_touchpad_client.h> |
| |
| extern "C" { |
| |
| int dvrGetApi(void* api, size_t struct_size, int version) { |
| ALOGI("dvrGetApi: api=%p struct_size=%zu version=%d", api, struct_size, |
| version); |
| if (version == 1) { |
| if (struct_size != sizeof(DvrApi_v1)) { |
| ALOGE("dvrGetApi: Size mismatch: expected %zu; actual %zu", |
| sizeof(DvrApi_v1), struct_size); |
| return -EINVAL; |
| } |
| DvrApi_v1* dvr_api = static_cast<DvrApi_v1*>(api); |
| |
| // Defines an API entry for V1 (no version suffix). |
| #define DVR_V1_API_ENTRY(name) dvr_api->name = dvr##name |
| |
| #include "include/dvr/dvr_api_entries.h" |
| |
| // Undefine macro definitions to play nice with Google3 style rules. |
| #undef DVR_V1_API_ENTRY |
| |
| return 0; |
| } |
| |
| ALOGE("dvrGetApi: Unknown API version=%d", version); |
| return -EINVAL; |
| } |
| |
| } // extern "C" |