[asterisk-commits] rizzo: trunk r94823 - /trunk/channels/console_gui.c

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Wed Dec 26 18:48:39 CST 2007


Author: rizzo
Date: Wed Dec 26 18:48:38 2007
New Revision: 94823

URL: http://svn.digium.com/view/asterisk?view=rev&rev=94823
Log:
more steps to decouple the gui from the rest of the code.


Modified:
    trunk/channels/console_gui.c

Modified: trunk/channels/console_gui.c
URL: http://svn.digium.com/view/asterisk/trunk/channels/console_gui.c?view=diff&rev=94823&r1=94822&r2=94823
==============================================================================
--- trunk/channels/console_gui.c (original)
+++ trunk/channels/console_gui.c Wed Dec 26 18:48:38 2007
@@ -381,26 +381,27 @@
 static void handle_button_event(struct video_desc *env, SDL_MouseButtonEvent button)
 {
 	uint8_t index = KEY_OUT_OF_KEYPAD;	/* the key or region of the display we clicked on */
+	struct gui_info *gui = env->gui;
 
 #if 0
 	ast_log(LOG_WARNING, "event %d %d have %d/%d regions at %p\n",
-		button.x, button.y, env->gui->kp_used, env->gui->kp_size, env->gui->kp);
+		button.x, button.y, gui->kp_used, gui->kp_size, gui->kp);
 #endif
 	/* for each click we come back in normal mode */
-	env->gui->text_mode = 0;
+	gui->text_mode = 0;
 
 	/* define keypad boundary */
 	if (button.x < env->in.rem_dpy.w)
 		index = KEY_REM_DPY; /* click on remote video */
-	else if (button.x > env->in.rem_dpy.w + env->gui->keypad->w)
+	else if (button.x > env->in.rem_dpy.w + gui->keypad->w)
 		index = KEY_LOC_DPY; /* click on local video */
-	else if (button.y > env->gui->keypad->h)
+	else if (button.y > gui->keypad->h)
 		index = KEY_OUT_OF_KEYPAD; /* click outside the keypad */
-	else if (env->gui->kp) {
+	else if (gui->kp) {
 		int i;
-		for (i = 0; i < env->gui->kp_used; i++) {
-			if (kp_match_area(&env->gui->kp[i], button.x - env->in.rem_dpy.w, button.y)) {
-				index = env->gui->kp[i].c;
+		for (i = 0; i < gui->kp_used; i++) {
+			if (kp_match_area(&gui->kp[i], button.x - env->in.rem_dpy.w, button.y)) {
+				index = gui->kp[i].c;
 				break;
 			}
 		}
@@ -477,20 +478,21 @@
  */
 static void handle_keyboard_input(struct video_desc *env, SDLKey key)
 {
-	if (env->gui->text_mode) {
+	struct gui_info *gui = env->gui;
+	if (gui->text_mode) {
 		/* append in the text-message buffer */
 		if (key == SDLK_RETURN) {
 			/* send the text message and return in normal mode */
-			env->gui->text_mode = 0;
+			gui->text_mode = 0;
 			keypad_send_command(env, "send text");
 		} else {
 			/* accumulate the key in the message buffer */
-			append_char(env->gui->msgbuf, &env->gui->msgbuf_pos, key);
+			append_char(gui->msgbuf, &gui->msgbuf_pos, key);
 		}
 	}
 	else {
 		/* append in the dial buffer */
-		append_char(env->gui->inbuf, &env->gui->inbuf_pos, key);
+		append_char(gui->inbuf, &gui->inbuf_pos, key);
 	}
 
 	return;
@@ -573,7 +575,7 @@
 				handle_keyboard_input(env, ev[i].key.keysym.sym);
 				break;
 			case SDL_MOUSEMOTION:
-				if (env->gui->drag_mode != 0)
+				if (gui->drag_mode != 0)
 					move_capture_source(env, ev[i].motion.x, ev[i].motion.y);
 				break;
 			case SDL_MOUSEBUTTONDOWN:
@@ -582,7 +584,7 @@
 			case SDL_MOUSEBUTTONUP:
 				if (gui->drag_mode != 0) {
 					move_capture_source(env, ev[i].button.x, ev[i].button.y);
-					env->gui->drag_mode = 0;
+					gui->drag_mode = 0;
 				}
 				break;
 			}
@@ -743,6 +745,7 @@
 	const SDL_VideoInfo *info;
 	int kp_w = 0, kp_h = 0;	/* keypad width and height */
 	int sdl_ok = 0;
+	struct gui_info *gui = env->gui;
 
 	/*
 	 * initialize the SDL environment. We have one large window
@@ -755,7 +758,7 @@
 	 * SDL window, because the size is only known here.
 	 */
 
-	if (env->gui == NULL && SDL_Init(SDL_INIT_VIDEO)) {
+	if (gui == NULL && SDL_Init(SDL_INIT_VIDEO)) {
  		ast_log(LOG_WARNING, "Could not initialize SDL - %s\n",
                         SDL_GetError());
                 /* again not fatal, just we won't display anything */
@@ -768,39 +771,39 @@
 	depth = info->vfmt->BitsPerPixel;
 	if (depth < 16)
 		depth = 16;
-	if (!env->gui)
-		env->gui = gui_init();
-	if (!env->gui)
+	if (!gui)
+		env->gui = gui = gui_init();
+	if (!gui)
 		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(gui, env->keypad_file);
 #if 0
 	ast_log(LOG_WARNING, "keypad_setup returned %p %d\n",
-		env->gui->keypad, env->gui->kp_used);
-#endif
-	if (env->gui->keypad) {
-		kp_w = env->gui->keypad->w;
-		kp_h = env->gui->keypad->h;
+		gui->keypad, gui->kp_used);
+#endif
+	if (gui->keypad) {
+		kp_w = gui->keypad->w;
+		kp_h = gui->keypad->h;
 	}
 #define BORDER	5	/* border around our windows */
 	maxw = env->in.rem_dpy.w + env->out.loc_dpy.w + kp_w;
 	maxh = MAX( MAX(env->in.rem_dpy.h, env->out.loc_dpy.h), kp_h);
 	maxw += 4 * BORDER;
 	maxh += 2 * BORDER;
-	env->gui->screen = SDL_SetVideoMode(maxw, maxh, depth, 0);
-	if (!env->gui->screen) {
+	gui->screen = SDL_SetVideoMode(maxw, maxh, depth, 0);
+	if (!gui->screen) {
 		ast_log(LOG_ERROR, "SDL: could not set video mode - exiting\n");
 		goto no_sdl;
 	}
 
 	SDL_WM_SetCaption("Asterisk console Video Output", NULL);
-	if (set_win(env->gui->screen, &env->gui->win[WIN_REMOTE], dpy_fmt,
+	if (set_win(gui->screen, &gui->win[WIN_REMOTE], dpy_fmt,
 			env->in.rem_dpy.w, env->in.rem_dpy.h, BORDER, BORDER))
 		goto no_sdl;
-	if (set_win(env->gui->screen, &env->gui->win[WIN_LOCAL], dpy_fmt,
+	if (set_win(gui->screen, &gui->win[WIN_LOCAL], dpy_fmt,
 			env->out.loc_dpy.w, env->out.loc_dpy.h,
 			3*BORDER+env->in.rem_dpy.w + kp_w, BORDER))
 		goto no_sdl;
@@ -808,14 +811,14 @@
 	/* display the skin, but do not free it as we need it later to
 	 * restore text areas and maybe sliders too.
 	 */
-	if (env->gui && env->gui->keypad) {
-		struct SDL_Rect *dest = &env->gui->win[WIN_KEYPAD].rect;
+	if (gui && gui->keypad) {
+		struct SDL_Rect *dest = &gui->win[WIN_KEYPAD].rect;
 		dest->x = 2*BORDER + env->in.rem_dpy.w;
 		dest->y = BORDER;
-		dest->w = env->gui->keypad->w;
-		dest->h = env->gui->keypad->h;
-		SDL_BlitSurface(env->gui->keypad, NULL, env->gui->screen, dest);
-		SDL_UpdateRects(env->gui->screen, 1, dest);
+		dest->w = gui->keypad->w;
+		dest->h = gui->keypad->h;
+		SDL_BlitSurface(gui->keypad, NULL, gui->screen, dest);
+		SDL_UpdateRects(gui->screen, 1, dest);
 	}
 	env->in.dec_in_cur = &env->in.dec_in[0];
 	env->in.dec_in_dpy = NULL;	/* nothing to display */
@@ -823,7 +826,7 @@
 
 no_sdl:
 	if (!sdl_ok)	/* free resources in case of errors */
-		env->gui = cleanup_sdl(env->gui);
+		env->gui = cleanup_sdl(gui);
 }
 
 /*




More information about the asterisk-commits mailing list