diff options
Diffstat (limited to 'src/vidisp.c')
-rw-r--r-- | src/vidisp.c | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/src/vidisp.c b/src/vidisp.c index 94ceee5..d267f58 100644 --- a/src/vidisp.c +++ b/src/vidisp.c @@ -14,9 +14,6 @@ struct vidisp_st { }; -static struct list vidispl = LIST_INIT; - - static void destructor(void *arg) { struct vidisp *vd = arg; @@ -29,6 +26,7 @@ static void destructor(void *arg) * Register a Video output display * * @param vp Pointer to allocated Video Display + * @param vidispl List of Video-displays * @param name Name of Video Display * @param alloch Allocation handler * @param updateh Update handler @@ -37,20 +35,20 @@ static void destructor(void *arg) * * @return 0 if success, otherwise errorcode */ -int vidisp_register(struct vidisp **vp, const char *name, +int vidisp_register(struct vidisp **vp, struct list *vidispl, const char *name, vidisp_alloc_h *alloch, vidisp_update_h *updateh, vidisp_disp_h *disph, vidisp_hide_h *hideh) { struct vidisp *vd; - if (!vp) + if (!vp || !vidispl) return EINVAL; vd = mem_zalloc(sizeof(*vd), destructor); if (!vd) return ENOMEM; - list_append(&vidispl, &vd->le, vd); + list_append(vidispl, &vd->le, vd); vd->name = name; vd->alloch = alloch; @@ -65,11 +63,11 @@ int vidisp_register(struct vidisp **vp, const char *name, } -const struct vidisp *vidisp_find(const char *name) +const struct vidisp *vidisp_find(const struct list *vidispl, const char *name) { struct le *le; - for (le = vidispl.head; le; le = le->next) { + for (le = list_head(vidispl); le; le = le->next) { struct vidisp *vd = le->data; if (str_isset(name) && 0 != str_casecmp(name, vd->name)) @@ -87,6 +85,7 @@ const struct vidisp *vidisp_find(const char *name) * Allocate a video display state * * @param stp Pointer to allocated display state + * @param vidispl List of Video-displays * @param name Name of video display * @param prm Video display parameters (optional) * @param dev Display device @@ -95,11 +94,12 @@ const struct vidisp *vidisp_find(const char *name) * * @return 0 if success, otherwise errorcode */ -int vidisp_alloc(struct vidisp_st **stp, const char *name, +int vidisp_alloc(struct vidisp_st **stp, struct list *vidispl, + const char *name, struct vidisp_prm *prm, const char *dev, vidisp_resize_h *resizeh, void *arg) { - struct vidisp *vd = (struct vidisp *)vidisp_find(name); + struct vidisp *vd = (struct vidisp *)vidisp_find(vidispl, name); if (!vd) return ENOENT; |