server: Keep a count of clients that use damage
parent
55beea3464
commit
c5a5437a9e
|
@ -113,6 +113,8 @@ struct nvnc {
|
||||||
nvnc_auth_fn auth_fn;
|
nvnc_auth_fn auth_fn;
|
||||||
void* auth_ud;
|
void* auth_ud;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
uint32_t n_damage_clients;
|
||||||
};
|
};
|
||||||
|
|
||||||
void nvnc__damage_region(struct nvnc* self,
|
void nvnc__damage_region(struct nvnc* self,
|
||||||
|
|
14
src/server.c
14
src/server.c
|
@ -105,6 +105,11 @@ static void client_close(struct nvnc_client* client)
|
||||||
|
|
||||||
LIST_REMOVE(client, link);
|
LIST_REMOVE(client, link);
|
||||||
stream_destroy(client->net_stream);
|
stream_destroy(client->net_stream);
|
||||||
|
if (client->encoder) {
|
||||||
|
client->server->n_damage_clients -=
|
||||||
|
!(client->encoder->impl->flags &
|
||||||
|
ENCODER_IMPL_FLAG_IGNORES_DAMAGE);
|
||||||
|
}
|
||||||
encoder_destroy(client->encoder);
|
encoder_destroy(client->encoder);
|
||||||
pixman_region_fini(&client->damage);
|
pixman_region_fini(&client->damage);
|
||||||
free(client->cut_text.buffer);
|
free(client->cut_text.buffer);
|
||||||
|
@ -560,6 +565,11 @@ static void process_fb_update_requests(struct nvnc_client* client)
|
||||||
if (!client->encoder || encoding != encoder_get_type(client->encoder)) {
|
if (!client->encoder || encoding != encoder_get_type(client->encoder)) {
|
||||||
int width = server->display->buffer->width;
|
int width = server->display->buffer->width;
|
||||||
int height = server->display->buffer->height;
|
int height = server->display->buffer->height;
|
||||||
|
if (client->encoder) {
|
||||||
|
server->n_damage_clients -=
|
||||||
|
!(client->encoder->impl->flags &
|
||||||
|
ENCODER_IMPL_FLAG_IGNORES_DAMAGE);
|
||||||
|
}
|
||||||
encoder_destroy(client->encoder);
|
encoder_destroy(client->encoder);
|
||||||
client->encoder = encoder_new(encoding, width, height);
|
client->encoder = encoder_new(encoding, width, height);
|
||||||
if (!client->encoder) {
|
if (!client->encoder) {
|
||||||
|
@ -572,6 +582,10 @@ static void process_fb_update_requests(struct nvnc_client* client)
|
||||||
client->encoder->on_done = on_encoder_push_done;
|
client->encoder->on_done = on_encoder_push_done;
|
||||||
client->encoder->userdata = client;
|
client->encoder->userdata = client;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
server->n_damage_clients +=
|
||||||
|
!(client->encoder->impl->flags &
|
||||||
|
ENCODER_IMPL_FLAG_IGNORES_DAMAGE);
|
||||||
}
|
}
|
||||||
|
|
||||||
enum encoder_kind kind = encoder_get_kind(client->encoder);
|
enum encoder_kind kind = encoder_get_kind(client->encoder);
|
||||||
|
|
Loading…
Reference in New Issue