summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorKonstantin Käfer <mail@kkaefer.com>2014-10-27 12:05:29 -0400
committerKonstantin Käfer <mail@kkaefer.com>2014-10-27 12:17:52 -0400
commitf50d8bbf3a2e089ee076c2d4527d3922fd5781a7 (patch)
treec671cef837d170c08039011af0f54cbc15180fb4 /src
parentaf9f317c251a0a1adfeaad8dd983ab602cf93070 (diff)
downloadqtlocation-mapboxgl-f50d8bbf3a2e089ee076c2d4527d3922fd5781a7.tar.gz
fix build with libuv 0.11
Diffstat (limited to 'src')
-rw-r--r--src/map/map.cpp31
1 files changed, 16 insertions, 15 deletions
diff --git a/src/map/map.cpp b/src/map/map.cpp
index a7520b2517..2f0dceb427 100644
--- a/src/map/map.cpp
+++ b/src/map/map.cpp
@@ -91,15 +91,28 @@ void Map::start() {
is_stopped = false;
// Setup async notifications
- uv_async_init(**loop, async_terminate.get(), terminate);
+
+// Iron out the differences between libuv 0.10 and 0.11
+#ifdef UV_ASYNC_CALLBACK
+#error Cannot overwrite UV_ASYNC_CALLBACK
+#endif
+#if UV_VERSION_MAJOR == 0 && UV_VERSION_MINOR <= 10
+#define UV_ASYNC_CALLBACK(name) [](uv_async_t *a, int) { return Map::name(a); }
+#else
+#define UV_ASYNC_CALLBACK(name) name
+#endif
+
+ uv_async_init(**loop, async_terminate.get(), UV_ASYNC_CALLBACK(terminate));
async_terminate->data = this;
- uv_async_init(**loop, async_render.get(), render);
+ uv_async_init(**loop, async_render.get(), UV_ASYNC_CALLBACK(render));
async_render->data = this;
- uv_async_init(**loop, async_cleanup.get(), cleanup);
+ uv_async_init(**loop, async_cleanup.get(), UV_ASYNC_CALLBACK(cleanup));
async_cleanup->data = this;
+#undef UV_ASYNC_CALLBACK
+
uv_thread_create(*thread, [](void *arg) {
Map *map = static_cast<Map *>(arg);
#ifndef NDEBUG
@@ -198,11 +211,7 @@ void Map::cleanup() {
}
}
-#if UV_VERSION_MAJOR == 0 && UV_VERSION_MINOR <= 10
-void Map::cleanup(uv_async_t *async, int) {
-#else
void Map::cleanup(uv_async_t *async) {
-#endif
Map *map = static_cast<Map *>(async->data);
map->painter.cleanup();
@@ -223,11 +232,7 @@ void Map::setReachability(bool reachable) {
}
}
-#if UV_VERSION_MAJOR == 0 && UV_VERSION_MINOR <= 10
-void Map::render(uv_async_t *async, int) {
-#else
void Map::render(uv_async_t *async) {
-#endif
Map *map = static_cast<Map *>(async->data);
assert(uv_thread_self() == map->map_thread);
@@ -247,11 +252,7 @@ void Map::render(uv_async_t *async) {
}
}
-#if UV_VERSION_MAJOR == 0 && UV_VERSION_MINOR <= 10
-void Map::terminate(uv_async_t *async, int) {
-#else
void Map::terminate(uv_async_t *async) {
-#endif
// Closes all open handles on the loop. This means that the loop will automatically terminate.
Map *map = static_cast<Map *>(async->data);
assert(uv_thread_self() == map->map_thread);