Skip to content

Commit 5256319

Browse files
committed
native service: Restart after daemon_stop due to power-event
1 parent 603a296 commit 5256319

File tree

2 files changed

+10
-4
lines changed

2 files changed

+10
-4
lines changed

service/src/service.c

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -176,10 +176,15 @@ static bool power_callback(LSHandle* sh __attribute__((unused)), LSMessage* msg,
176176

177177
raw_buffer state_buf = jstring_get(state_ref);
178178
const char* state_str = state_buf.m_str;
179-
bool target_state = strcmp(state_str, "Active") == 0;
180-
181-
if (is_running(service->daemon_pid) && !target_state) {
182-
INFO("Shutting down service after power pause...");
179+
bool power_active = strcmp(state_str, "Active") == 0;
180+
181+
if (!is_running(service->daemon_pid) && power_active && service->power_paused) {
182+
INFO("Resuming service after power pause");
183+
service->power_paused = false;
184+
daemon_start(service);
185+
} else if (is_running(service->daemon_pid) && !power_active && !service->power_paused) {
186+
INFO("Shutting down service due to power event...");
187+
service->power_paused = true;
183188
daemon_stop(service);
184189
}
185190

service/src/service.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ typedef struct {
2828
char *daemon_version;
2929
pid_t daemon_pid;
3030
pthread_t execution_thread;
31+
bool power_paused;
3132
} service_t;
3233

3334
int service_start(service_t* service);

0 commit comments

Comments
 (0)