⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 entry.c

📁 VLC Player Source Code
💻 C
📖 第 1 页 / 共 2 页
字号:
        case VLC_CONFIG_VALUE:        {            if (IsConfigIntegerType (item->i_type))            {                item->orig.i = item->saved.i =                item->value.i = va_arg (ap, int);                ret = 0;            }            else            if (IsConfigFloatType (item->i_type))            {                item->orig.f = item->saved.f =                item->value.f = va_arg (ap, double);                ret = 0;            }            else            if (IsConfigStringType (item->i_type))            {                const char *value = va_arg (ap, const char *);                item->value.psz = value ? strdup (value) : NULL;                item->orig.psz = value ? strdup (value) : NULL;                item->saved.psz = value ? strdup (value) : NULL;                ret = 0;            }            break;        }        case VLC_CONFIG_RANGE:        {            if (IsConfigIntegerType (item->i_type))            {                item->min.i = va_arg (ap, int);                item->max.i = va_arg (ap, int);                ret = 0;            }            else            if (IsConfigFloatType (item->i_type))            {                item->min.f = va_arg (ap, double);                item->max.f = va_arg (ap, double);                ret = 0;            }            break;        }        case VLC_CONFIG_ADVANCED:            item->b_advanced = true;            ret = 0;            break;        case VLC_CONFIG_VOLATILE:            item->b_unsaveable = true;            ret = 0;            break;        case VLC_CONFIG_PERSISTENT:            item->b_autosave = true;            ret = 0;            break;        case VLC_CONFIG_RESTART:            item->b_restart = true;            ret = 0;            break;        case VLC_CONFIG_PRIVATE:            item->b_internal = true;            ret = 0;            break;        case VLC_CONFIG_REMOVED:            item->b_removed = true;            ret = 0;            break;        case VLC_CONFIG_CAPABILITY:        {            const char *cap = va_arg (ap, const char *);            item->psz_type = cap ? strdup (cap) : NULL;            ret = 0;            break;        }        case VLC_CONFIG_SHORTCUT:            item->i_short = va_arg (ap, int);            ret = 0;            break;        case VLC_CONFIG_LIST_NODOMAIN:        {            size_t len = va_arg (ap, size_t);            if (IsConfigIntegerType (item->i_type))            {                const int *src = va_arg (ap, const int *);                const char *const *text = va_arg (ap, const char *const *);                ret = vlc_config_set (item, VLC_CONFIG_LIST, NULL, len, src,                                      text);            }            else            if (IsConfigStringType (item->i_type))            {                const char *const *src = va_arg (ap, const char *const *);                const char *const *text = va_arg (ap, const char *const *);                ret = vlc_config_set (item, VLC_CONFIG_LIST, NULL, len, src,                                      text);            }            break;        }        case VLC_CONFIG_ADD_ACTION_NODOMAIN:        {            vlc_callback_t cb = va_arg (ap, vlc_callback_t);            const char *name = va_arg (ap, const char *);            ret = vlc_config_set (item, VLC_CONFIG_ADD_ACTION, NULL, cb, name);            break;        }        case VLC_CONFIG_OLDNAME:        {            const char *oldname = va_arg (ap, const char *);            item->psz_oldname = oldname ? strdup (oldname) : NULL;            ret = 0;            break;        }        case VLC_CONFIG_SAFE:            item->b_safe = true;            ret = 0;            break;        case VLC_CONFIG_DESC:        {            const char *domain = va_arg (ap, const char *);            const char *text = va_arg (ap, const char *);            const char *longtext = va_arg (ap, const char *);            if (domain == NULL)                domain = PACKAGE;            item->psz_text = text ? strdup (dgettext (domain, text)) : NULL;            item->psz_longtext =                longtext ? strdup (dgettext (domain, longtext)) : NULL;            ret = 0;            break;        }        case VLC_CONFIG_LIST:        {            const char *domain = va_arg (ap, const char *);            size_t len = va_arg (ap, size_t);            char **dtext = malloc (sizeof (char *) * (len + 1));            if (dtext == NULL)                break;            /* Copy values */            if (IsConfigIntegerType (item->i_type))            {                const int *src = va_arg (ap, const int *);                int *dst = malloc (sizeof (int) * (len + 1));                if (dst != NULL)                {                    memcpy (dst, src, sizeof (int) * len);                    dst[len] = 0;                }                item->pi_list = dst;            }            else#if 0            if (IsConfigFloatType (item->i_type))            {                const float *src = va_arg (ap, const float *);                float *dst = malloc (sizeof (float) * (len + 1));                if (dst != NULL)                {                    memcpy (dst, src, sizeof (float) * len);                    dst[len] = 0.;                }                item->pf_list = dst;            }            else#endif            if (IsConfigStringType (item->i_type))            {                const char *const *src = va_arg (ap, const char *const *);                char **dst = malloc (sizeof (char *) * (len + 1));                if (dst != NULL)                {                    for (size_t i = 0; i < len; i++)                        dst[i] = src[i] ? strdup (src[i]) : NULL;                    dst[len] = NULL;                }                item->ppsz_list = dst;            }            else                break;            /* Copy textual descriptions */            if (domain == NULL)                domain = PACKAGE;            const char *const *text = va_arg (ap, const char *const *);            if (text != NULL)            {                for (size_t i = 0; i < len; i++)                    dtext[i] =                        text[i] ? strdup (dgettext (domain, text[i])) : NULL;                dtext[len] = NULL;                item->ppsz_list_text = dtext;            }            else            {                free (dtext);                item->ppsz_list_text = NULL;            }            item->i_list = len;            item->pf_update_list = va_arg (ap, vlc_callback_t);            ret = 0;            break;        }        case VLC_CONFIG_ADD_ACTION:        {            const char *domain = va_arg (ap, const char *);            vlc_callback_t cb = va_arg (ap, vlc_callback_t), *tabcb;            const char *name = va_arg (ap, const char *);            char **tabtext;            tabcb = realloc (item->ppf_action,                             (item->i_action + 2) * sizeof (cb));            if (tabcb == NULL)                break;            item->ppf_action = tabcb;            tabcb[item->i_action] = cb;            tabcb[item->i_action + 1] = NULL;            tabtext = realloc (item->ppsz_action_text,                               (item->i_action + 2) * sizeof (name));            if (tabtext == NULL)                break;            item->ppsz_action_text = tabtext;            if (domain == NULL)                domain = PACKAGE;            if (name)                tabtext[item->i_action] = strdup (dgettext (domain, name));            else                tabtext[item->i_action] = NULL;            tabtext[item->i_action + 1] = NULL;            item->i_action++;            ret = 0;            break;        }    }    va_end (ap);    return ret;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -