X-Git-Url: https://git.sesse.net/?p=cubemap;a=blobdiff_plain;f=server.cpp;h=d41e3c70730b896e44a9362bf150ae534ee9f892;hp=eeab64bb64fbf7bb790d89b14150e4eb97f42251;hb=d9de2a370c08fd6738984e759a1ab4f91015af0c;hpb=37e73170552135663151b0d4c671729ac276cd5c diff --git a/server.cpp b/server.cpp index eeab64b..d41e3c7 100644 --- a/server.cpp +++ b/server.cpp @@ -162,7 +162,7 @@ void Server::do_work() if (should_stop) { return; } - + for (int i = 0; i < nfds; ++i) { int fd = events[i].data.fd; assert(clients.count(fd) != 0); @@ -175,6 +175,11 @@ void Server::do_work() process_client(client); } + + for (unsigned i = 0; i < to_process.size(); ++i) { + process_client(to_process[i]); + } + to_process.clear(); } } @@ -579,10 +584,11 @@ void Server::put_client_to_sleep(Client *client) void Server::wake_up_all_clients() { - vector to_process; - swap(sleeping_clients, to_process); - for (unsigned i = 0; i < to_process.size(); ++i) { - process_client(to_process[i]); + if (to_process.empty()) { + swap(sleeping_clients, to_process); + } else { + to_process.insert(to_process.end(), sleeping_clients.begin(), sleeping_clients.end()); + sleeping_clients.clear(); } }