mirror of
https://github.com/asterisk/asterisk.git
synced 2025-10-11 07:13:20 +00:00
more localizations around sdl_setup
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@94821 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -443,9 +443,6 @@ static void handle_button_event(struct video_desc *env, SDL_MouseButtonEvent but
|
|||||||
case KEY_OUT_OF_KEYPAD:
|
case KEY_OUT_OF_KEYPAD:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case KEY_GUI_CLOSE:
|
|
||||||
env->gui = cleanup_sdl(env->gui);
|
|
||||||
break;
|
|
||||||
case KEY_DIGIT_BACKGROUND:
|
case KEY_DIGIT_BACKGROUND:
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@@ -532,13 +529,19 @@ static void move_capture_source(struct video_desc *env, int x_final_drag, int y_
|
|||||||
* and windowmaker. It is unclear what causes it.
|
* and windowmaker. It is unclear what causes it.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* grab a bunch of events */
|
/*! \brief refresh the screen, and also grab a bunch of events.
|
||||||
|
*/
|
||||||
static void eventhandler(struct video_desc *env)
|
static void eventhandler(struct video_desc *env)
|
||||||
{
|
{
|
||||||
|
struct gui_info *gui = env->gui;
|
||||||
#define N_EVENTS 32
|
#define N_EVENTS 32
|
||||||
int i, n;
|
int i, n;
|
||||||
SDL_Event ev[N_EVENTS];
|
SDL_Event ev[N_EVENTS];
|
||||||
|
|
||||||
|
if (!gui)
|
||||||
|
return;
|
||||||
|
// SDL_UpdateRects(gui->screen, 1, &gui->win[WIN_KEYPAD].rect);// XXX inefficient
|
||||||
|
|
||||||
#define MY_EV (SDL_MOUSEBUTTONDOWN|SDL_KEYDOWN)
|
#define MY_EV (SDL_MOUSEBUTTONDOWN|SDL_KEYDOWN)
|
||||||
while ( (n = SDL_PeepEvents(ev, N_EVENTS, SDL_GETEVENT, SDL_ALLEVENTS)) > 0) {
|
while ( (n = SDL_PeepEvents(ev, N_EVENTS, SDL_GETEVENT, SDL_ALLEVENTS)) > 0) {
|
||||||
for (i = 0; i < n; i++) {
|
for (i = 0; i < n; i++) {
|
||||||
@@ -558,7 +561,7 @@ static void eventhandler(struct video_desc *env)
|
|||||||
handle_button_event(env, ev[i].button);
|
handle_button_event(env, ev[i].button);
|
||||||
break;
|
break;
|
||||||
case SDL_MOUSEBUTTONUP:
|
case SDL_MOUSEBUTTONUP:
|
||||||
if (env->gui->drag_mode != 0) {
|
if (gui->drag_mode != 0) {
|
||||||
move_capture_source(env, ev[i].button.x, ev[i].button.y);
|
move_capture_source(env, ev[i].button.x, ev[i].button.y);
|
||||||
env->gui->drag_mode = 0;
|
env->gui->drag_mode = 0;
|
||||||
}
|
}
|
||||||
@@ -597,7 +600,7 @@ static SDL_Surface *get_keypad(const char *file)
|
|||||||
|
|
||||||
/* TODO: consistency checks, check for bpp, widht and height */
|
/* TODO: consistency checks, check for bpp, widht and height */
|
||||||
/* Init the mask image used to grab the action. */
|
/* Init the mask image used to grab the action. */
|
||||||
static struct gui_info *gui_init(struct video_desc *env)
|
static struct gui_info *gui_init(void)
|
||||||
{
|
{
|
||||||
struct gui_info *gui = ast_calloc(1, sizeof(*gui));
|
struct gui_info *gui = ast_calloc(1, sizeof(*gui));
|
||||||
|
|
||||||
@@ -607,10 +610,6 @@ static struct gui_info *gui_init(struct video_desc *env)
|
|||||||
gui->text_mode = 0;
|
gui->text_mode = 0;
|
||||||
gui->drag_mode = 0;
|
gui->drag_mode = 0;
|
||||||
|
|
||||||
/* initialize grab coordinates */
|
|
||||||
env->out.loc_src.x = 0;
|
|
||||||
env->out.loc_src.y = 0;
|
|
||||||
|
|
||||||
/* initialize keyboard buffer */
|
/* initialize keyboard buffer */
|
||||||
append_char(gui->inbuf, &gui->inbuf_pos, '\0');
|
append_char(gui->inbuf, &gui->inbuf_pos, '\0');
|
||||||
append_char(gui->msgbuf, &gui->msgbuf_pos, '\0');
|
append_char(gui->msgbuf, &gui->msgbuf_pos, '\0');
|
||||||
@@ -714,21 +713,18 @@ static void keypad_setup(struct gui_info *gui, const char *kp_file)
|
|||||||
fclose(fd);
|
fclose(fd);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* [re]set the main sdl window, useful in case of resize */
|
/*! \brief [re]set the main sdl window, useful in case of resize.
|
||||||
|
* We can tell the first from subsequent calls from the value of
|
||||||
|
* env->gui, which is NULL the first time.
|
||||||
|
*/
|
||||||
static void sdl_setup(struct video_desc *env)
|
static void sdl_setup(struct video_desc *env)
|
||||||
{
|
{
|
||||||
int dpy_fmt = SDL_IYUV_OVERLAY; /* YV12 causes flicker in SDL */
|
int dpy_fmt = SDL_IYUV_OVERLAY; /* YV12 causes flicker in SDL */
|
||||||
int depth, maxw, maxh;
|
int depth, maxw, maxh;
|
||||||
const SDL_VideoInfo *info = SDL_GetVideoInfo();
|
const SDL_VideoInfo *info;
|
||||||
int kp_w = 0, kp_h = 0; /* keypad width and height */
|
int kp_w = 0, kp_h = 0; /* keypad width and height */
|
||||||
int sdl_ok = 0;
|
int sdl_ok = 0;
|
||||||
|
|
||||||
/* We want at least 16bpp to support YUV overlays.
|
|
||||||
* E.g with SDL_VIDEODRIVER = aalib the default is 8
|
|
||||||
*/
|
|
||||||
depth = info->vfmt->BitsPerPixel;
|
|
||||||
if (depth < 16)
|
|
||||||
depth = 16;
|
|
||||||
/*
|
/*
|
||||||
* initialize the SDL environment. We have one large window
|
* initialize the SDL environment. We have one large window
|
||||||
* with local and remote video, and a keypad.
|
* with local and remote video, and a keypad.
|
||||||
@@ -740,13 +736,32 @@ static void sdl_setup(struct video_desc *env)
|
|||||||
* SDL window, because the size is only known here.
|
* SDL window, because the size is only known here.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
env->gui = gui_init(env);
|
if (env->gui == NULL && SDL_Init(SDL_INIT_VIDEO)) {
|
||||||
ast_log(LOG_WARNING, "gui_init returned %p\n", env->gui);
|
ast_log(LOG_WARNING, "Could not initialize SDL - %s\n",
|
||||||
|
SDL_GetError());
|
||||||
|
/* again not fatal, just we won't display anything */
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
info = SDL_GetVideoInfo();
|
||||||
|
/* We want at least 16bpp to support YUV overlays.
|
||||||
|
* E.g with SDL_VIDEODRIVER = aalib the default is 8
|
||||||
|
*/
|
||||||
|
depth = info->vfmt->BitsPerPixel;
|
||||||
|
if (depth < 16)
|
||||||
|
depth = 16;
|
||||||
|
if (!env->gui)
|
||||||
|
env->gui = gui_init();
|
||||||
if (!env->gui)
|
if (!env->gui)
|
||||||
goto no_sdl;
|
goto no_sdl;
|
||||||
|
/* initialize grab coordinates */
|
||||||
|
env->out.loc_src.x = 0;
|
||||||
|
env->out.loc_src.y = 0;
|
||||||
|
|
||||||
keypad_setup(env->gui, env->keypad_file);
|
keypad_setup(env->gui, env->keypad_file);
|
||||||
|
#if 0
|
||||||
ast_log(LOG_WARNING, "keypad_setup returned %p %d\n",
|
ast_log(LOG_WARNING, "keypad_setup returned %p %d\n",
|
||||||
env->gui->keypad, env->gui->kp_used);
|
env->gui->keypad, env->gui->kp_used);
|
||||||
|
#endif
|
||||||
if (env->gui->keypad) {
|
if (env->gui->keypad) {
|
||||||
kp_w = env->gui->keypad->w;
|
kp_w = env->gui->keypad->w;
|
||||||
kp_h = env->gui->keypad->h;
|
kp_h = env->gui->keypad->h;
|
||||||
|
@@ -1078,13 +1078,9 @@ static void *video_thread(void *arg)
|
|||||||
unsetenv("DISPLAY");
|
unsetenv("DISPLAY");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (SDL_Init(SDL_INIT_VIDEO)) {
|
sdl_setup(env);
|
||||||
ast_log(LOG_WARNING, "Could not initialize SDL - %s\n",
|
if (env->gui)
|
||||||
SDL_GetError());
|
SDL_UpdateRects(env->gui->screen, 1, &env->gui->win[WIN_KEYPAD].rect);// XXX inefficient
|
||||||
/* again not fatal, just we won't display anything */
|
|
||||||
} else {
|
|
||||||
sdl_setup(env);
|
|
||||||
}
|
|
||||||
ast_mutex_init(&env->in.dec_in_lock);
|
ast_mutex_init(&env->in.dec_in_lock);
|
||||||
if (!ast_strlen_zero(save_display))
|
if (!ast_strlen_zero(save_display))
|
||||||
setenv("DISPLAY", save_display, 1);
|
setenv("DISPLAY", save_display, 1);
|
||||||
@@ -1130,8 +1126,6 @@ static void *video_thread(void *arg)
|
|||||||
/* sleep for a while */
|
/* sleep for a while */
|
||||||
ast_select(0, NULL, NULL, NULL, &t);
|
ast_select(0, NULL, NULL, NULL, &t);
|
||||||
|
|
||||||
if (env->gui)
|
|
||||||
SDL_UpdateRects(env->gui->screen, 1, &env->gui->win[WIN_KEYPAD].rect);// XXX inefficient
|
|
||||||
/*
|
/*
|
||||||
* While there is something to display, call the decoder and free
|
* While there is something to display, call the decoder and free
|
||||||
* the buffer, possibly enabling the receiver to store new data.
|
* the buffer, possibly enabling the receiver to store new data.
|
||||||
|
Reference in New Issue
Block a user