File src/command.cpp changed (mode: 100644) (index 7443464..e3e029a) |
... |
... |
Control::set_mpd_idle_events(enum mpd_idle idle_reply) |
308 |
308 |
pms->log(MSG_DEBUG, 0, "Set pending MPD IDLE events: %s\n", buffer); |
pms->log(MSG_DEBUG, 0, "Set pending MPD IDLE events: %s\n", buffer); |
309 |
309 |
} |
} |
310 |
310 |
|
|
|
311 |
|
/** |
|
312 |
|
* Check if there are pending updates. |
|
313 |
|
* |
|
314 |
|
* Returns true if there are pending updates, false if not. |
|
315 |
|
*/ |
|
316 |
|
bool |
|
317 |
|
Control::has_pending_updates() |
|
318 |
|
{ |
|
319 |
|
return (idle_events != 0); |
|
320 |
|
} |
|
321 |
|
|
311 |
322 |
/** |
/** |
312 |
323 |
* Run all pending updates. |
* Run all pending updates. |
|
324 |
|
* |
|
325 |
|
* Returns true on success, false on failure. |
313 |
326 |
*/ |
*/ |
314 |
327 |
bool |
bool |
315 |
328 |
Control::run_pending_updates() |
Control::run_pending_updates() |
|
... |
... |
Control::run_pending_updates() |
349 |
362 |
set_update_done(MPD_IDLE_DATABASE); |
set_update_done(MPD_IDLE_DATABASE); |
350 |
363 |
} |
} |
351 |
364 |
|
|
|
365 |
|
/* Hack to make has_pending_updates() work smoothly without too much |
|
366 |
|
* effort. We don't care about the rest of the events, so we just |
|
367 |
|
* pretend they never happened. */ |
|
368 |
|
idle_events = 0; |
|
369 |
|
|
352 |
370 |
return true; |
return true; |
353 |
371 |
} |
} |
354 |
372 |
|
|
|
... |
... |
Control::add(Songlist * list, Song * song) |
787 |
805 |
|
|
788 |
806 |
EXIT_IDLE; |
EXIT_IDLE; |
789 |
807 |
|
|
|
808 |
|
pms->log(MSG_DEBUG, 0, "Adding song %s to list %s\n", song->file.c_str(), list->filename.c_str()); |
|
809 |
|
|
790 |
810 |
if (list == _playlist) { |
if (list == _playlist) { |
791 |
811 |
return mpd_run_add_id(conn->h(), song->file.c_str()); |
return mpd_run_add_id(conn->h(), song->file.c_str()); |
792 |
812 |
} else if (list != _library) { |
} else if (list != _library) { |
File src/command.h changed (mode: 100644) (index 3c3c185..eabe977) |
... |
... |
public: |
247 |
247 |
|
|
248 |
248 |
/* IDLE dispatcher */ |
/* IDLE dispatcher */ |
249 |
249 |
void set_mpd_idle_events(enum mpd_idle); |
void set_mpd_idle_events(enum mpd_idle); |
|
250 |
|
bool has_pending_updates(); |
250 |
251 |
bool run_pending_updates(); |
bool run_pending_updates(); |
251 |
252 |
void set_update_done(enum mpd_idle); |
void set_update_done(enum mpd_idle); |
252 |
253 |
bool has_finished_update(enum mpd_idle); |
bool has_finished_update(enum mpd_idle); |
File src/pms.cpp changed (mode: 100644) (index a0d9070..c7a4e36) |
... |
... |
Pms::main() |
426 |
426 |
|
|
427 |
427 |
/* Run any pending updates */ |
/* Run any pending updates */ |
428 |
428 |
if (!comm->run_pending_updates()) { |
if (!comm->run_pending_updates()) { |
429 |
|
log(MSG_DEBUG, 0, "Failed running pending updates, MPD error follows:\n"); |
|
|
429 |
|
log(MSG_DEBUG, 0, "Failed running pending updates, MPD error follows in next main loop iteration\n"); |
430 |
430 |
continue; |
continue; |
431 |
431 |
} |
} |
432 |
432 |
|
|
|
... |
... |
Pms::main() |
502 |
502 |
disp->refresh(); |
disp->refresh(); |
503 |
503 |
|
|
504 |
504 |
|
|
505 |
|
|
|
506 |
|
|
|
507 |
505 |
/** |
/** |
508 |
506 |
* Start IDLE mode and polling. Keep this code at the end of |
* Start IDLE mode and polling. Keep this code at the end of |
509 |
507 |
* the main loop. |
* the main loop. |
|
... |
... |
Pms::main() |
532 |
530 |
} |
} |
533 |
531 |
} |
} |
534 |
532 |
|
|
535 |
|
continue; |
|
536 |
|
|
|
537 |
|
|
|
538 |
|
/* Progress to next song? */ |
|
539 |
|
progress_nextsong(); |
|
540 |
|
|
|
541 |
533 |
/* Draw XTerm window title */ |
/* Draw XTerm window title */ |
|
534 |
|
/* FIXME: only draw when needed */ |
542 |
535 |
disp->set_xterm_title(); |
disp->set_xterm_title(); |
543 |
536 |
|
|
|
537 |
|
/* Progress to next song if applicable, and make sure we are |
|
538 |
|
* synched with IDLE events before doing it. */ |
|
539 |
|
if (!comm->has_pending_updates()) { |
|
540 |
|
progress_nextsong(); |
|
541 |
|
} |
|
542 |
|
|
544 |
543 |
/* Check out mediator events */ |
/* Check out mediator events */ |
545 |
|
/* FIXME: add these into their appropriate places */ |
|
|
544 |
|
/* FIXME: implement this functionality with ZeroMQ */ |
546 |
545 |
if (mediator->changed("setting.sort")) |
if (mediator->changed("setting.sort")) |
547 |
546 |
comm->library()->sort(options->get_string("sort")); |
comm->library()->sort(options->get_string("sort")); |
548 |
547 |
else if (mediator->changed("setting.ignorecase")) |
else if (mediator->changed("setting.ignorecase")) |
|
... |
... |
Pms::main() |
566 |
565 |
if (options->get_bool("topbarclear")) |
if (options->get_bool("topbarclear")) |
567 |
566 |
options->topbar.clear(); |
options->topbar.clear(); |
568 |
567 |
} |
} |
569 |
|
|
|
570 |
568 |
} |
} |
571 |
569 |
while (!_shutdown); |
while (!_shutdown); |
572 |
570 |
|
|