From b69545670faefd9ed3d010272efbc54ca70129bb Mon Sep 17 00:00:00 2001
From: Matthieu Schaller <matthieu.schaller@durham.ac.uk>
Date: Thu, 24 May 2018 12:48:22 +0100
Subject: [PATCH] Make sure the new task is activated correctly.

---
 src/cell.c   | 1 +
 src/engine.c | 2 +-
 src/task.c   | 3 +++
 3 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/cell.c b/src/cell.c
index 2c89b4f536..585aa65acb 100644
--- a/src/cell.c
+++ b/src/cell.c
@@ -2302,6 +2302,7 @@ int cell_unskip_gravity_tasks(struct cell *c, struct scheduler *s) {
     if (c->timestep != NULL) scheduler_activate(s, c->timestep);
     if (c->end_force != NULL) scheduler_activate(s, c->end_force);
     if (c->grav_down != NULL) scheduler_activate(s, c->grav_down);
+    if (c->grav_mesh != NULL) scheduler_activate(s, c->grav_mesh);
     if (c->grav_long_range != NULL) scheduler_activate(s, c->grav_long_range);
   }
 
diff --git a/src/engine.c b/src/engine.c
index ee8975e604..9ae1e59ee1 100644
--- a/src/engine.c
+++ b/src/engine.c
@@ -3592,7 +3592,7 @@ void engine_marktasks_mapper(void *map_data, int num_elements,
     }
 
     /* Gravity stuff ? */
-    else if (t->type == task_type_grav_down ||
+    else if (t->type == task_type_grav_down || t->type == task_type_grav_mesh ||
              t->type == task_type_grav_long_range ||
              t->type == task_type_init_grav) {
       if (cell_is_active_gravity(t->ci, e)) scheduler_activate(s, t);
diff --git a/src/task.c b/src/task.c
index 2e2e2f0393..255dadbb39 100644
--- a/src/task.c
+++ b/src/task.c
@@ -180,6 +180,7 @@ __attribute__((always_inline)) INLINE static enum task_actions task_acts_on(
 
     case task_type_drift_gpart:
     case task_type_grav_down:
+    case task_type_grav_mesh:
       return task_action_gpart;
       break;
 
@@ -290,6 +291,7 @@ void task_unlock(struct task *t) {
       break;
 
     case task_type_drift_gpart:
+    case task_type_grav_mesh:
       cell_gunlocktree(ci);
       break;
 
@@ -385,6 +387,7 @@ int task_lock(struct task *t) {
       break;
 
     case task_type_drift_gpart:
+    case task_type_grav_mesh:
       if (ci->ghold) return 0;
       if (cell_glocktree(ci) != 0) return 0;
       break;
-- 
GitLab