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