xref: /aosp_15_r20/external/crosvm/third_party/virglrenderer/src/proxy/proxy_renderer.c (revision bbecb9d118dfdb95f99bd754f8fa9be01f189df3)
1 /*
2  * Copyright 2021 Google LLC
3  * SPDX-License-Identifier: MIT
4  */
5 
6 #include "proxy_common.h"
7 
8 #include "proxy_client.h"
9 #include "proxy_renderer.h"
10 #include "proxy_server.h"
11 
12 int
proxy_renderer_init(const struct proxy_renderer_cbs * cbs,uint32_t flags)13 proxy_renderer_init(const struct proxy_renderer_cbs *cbs, uint32_t flags)
14 {
15    proxy_renderer.cbs = cbs;
16    proxy_renderer.flags = flags;
17 
18    proxy_renderer.server = proxy_server_create();
19    if (!proxy_renderer.server)
20       goto fail;
21 
22    proxy_renderer.client =
23       proxy_client_create(proxy_renderer.server, proxy_renderer.flags);
24    if (!proxy_renderer.client)
25       goto fail;
26 
27    return 0;
28 
29 fail:
30    proxy_renderer_fini();
31    return -1;
32 }
33 
34 void
proxy_renderer_fini(void)35 proxy_renderer_fini(void)
36 {
37    if (proxy_renderer.server)
38       proxy_server_destroy(proxy_renderer.server);
39 
40    if (proxy_renderer.client)
41       proxy_client_destroy(proxy_renderer.client);
42 
43    memset(&proxy_renderer, 0, sizeof(struct proxy_renderer));
44 }
45 
46 void
proxy_renderer_reset(void)47 proxy_renderer_reset(void)
48 {
49    proxy_client_reset(proxy_renderer.client);
50 }
51