summaryrefslogtreecommitdiffstats
path: root/server/reds.c
diff options
context:
space:
mode:
authorMarc-André Lureau <marcandre.lureau@gmail.com>2015-10-23 10:34:24 +0100
committerFrediano Ziglio <fziglio@redhat.com>2015-10-26 09:12:55 +0000
commitf7b48981e37eec27327a010296008ffa6c727d68 (patch)
tree241abc7b1adcac812bf7c6ae27454a6705808eda /server/reds.c
parent579d65454c1e8fac872460b897d8ac3a66259c00 (diff)
downloadspice-f7b48981e37eec27327a010296008ffa6c727d68.tar.gz
spice-f7b48981e37eec27327a010296008ffa6c727d68.tar.xz
spice-f7b48981e37eec27327a010296008ffa6c727d68.zip
worker: remove need for WorkerInitData
Move code around to declare and place it where it fits better. Acked-by: Frediano Ziglio <fziglio@redhat.com>
Diffstat (limited to 'server/reds.c')
-rw-r--r--server/reds.c44
1 files changed, 42 insertions, 2 deletions
diff --git a/server/reds.c b/server/reds.c
index 2aea6885..1f6774ef 100644
--- a/server/reds.c
+++ b/server/reds.c
@@ -3364,6 +3364,46 @@ SPICE_GNUC_VISIBLE SpiceServer *spice_server_new(void)
return reds;
}
+typedef struct RendererInfo {
+ int id;
+ const char *name;
+} RendererInfo;
+
+static RendererInfo renderers_info[] = {
+ {RED_RENDERER_SW, "sw"},
+#ifdef USE_OPENGL
+ {RED_RENDERER_OGL_PBUF, "oglpbuf"},
+ {RED_RENDERER_OGL_PIXMAP, "oglpixmap"},
+#endif
+ {RED_RENDERER_INVALID, NULL},
+};
+
+uint32_t renderers[RED_RENDERER_LAST];
+uint32_t num_renderers = 0;
+
+static RendererInfo *find_renderer(const char *name)
+{
+ RendererInfo *inf = renderers_info;
+ while (inf->name) {
+ if (strcmp(name, inf->name) == 0) {
+ return inf;
+ }
+ inf++;
+ }
+ return NULL;
+}
+
+static int red_add_renderer(const char *name)
+{
+ RendererInfo *inf;
+
+ if (num_renderers == RED_RENDERER_LAST || !(inf = find_renderer(name))) {
+ return FALSE;
+ }
+ renderers[num_renderers++] = inf->id;
+ return TRUE;
+}
+
SPICE_GNUC_VISIBLE int spice_server_init(SpiceServer *s, SpiceCoreInterface *core)
{
int ret;
@@ -3371,7 +3411,7 @@ SPICE_GNUC_VISIBLE int spice_server_init(SpiceServer *s, SpiceCoreInterface *cor
spice_assert(reds == s);
ret = do_spice_init(core);
if (default_renderer) {
- red_dispatcher_add_renderer(default_renderer);
+ red_add_renderer(default_renderer);
}
return ret;
}
@@ -3664,7 +3704,7 @@ SPICE_GNUC_VISIBLE int spice_server_is_server_mouse(SpiceServer *s)
SPICE_GNUC_VISIBLE int spice_server_add_renderer(SpiceServer *s, const char *name)
{
spice_assert(reds == s);
- if (!red_dispatcher_add_renderer(name)) {
+ if (!red_add_renderer(name)) {
return -1;
}
default_renderer = NULL;