lm3s1968: generic UART driver.
[bertos.git] / examples / demo / demo.c
index e3c334c574cd84ac0331e346b6e2e91ed6f502cc..cd9487cd93d9b6ef6150b8aea7c3b11fc6efc3f7 100644 (file)
 /**
  * Refresh the GUI.
  */
-void refresh(void)
+void schedule(void)
 {
-       PROC_ATOMIC(
-               lcd_blitBitmap(&lcd_bitmap);
-               emul_idle();
-       );
+       lcd_blitBitmap(&lcd_bitmap);
+       emul_idle();
 }
 
 /**
@@ -87,26 +85,22 @@ static void hello_world(Bitmap *bm)
        extern const Font font_ncenB18;
        const Font *old_font;
 
-       PROC_ATOMIC(
-               old_font = bm->font;
+       old_font = bm->font;
 
-               gfx_bitmapClear(bm);
-
-               /* Set big font */
-               gfx_setFont(bm, &font_ncenB18);
-
-               text_xprintf(bm, 1, 0, STYLEF_BOLD | TEXT_FILL | TEXT_CENTER,
-                               "Hello, world!");
+       gfx_bitmapClear(bm);
 
-               lcd_blitBitmap(bm);
-       );
+       /* Set big font */
+       gfx_setFont(bm, &font_ncenB18);
 
-       timer_delay(1000);
+       text_xprintf(bm, 0, 0, STYLEF_BOLD | TEXT_FILL | TEXT_CENTER,
+                       "Hello, world!");
+       schedule();
+       while (1)
+               if (kbd_peek())
+                       break;
 
-       PROC_ATOMIC(
-               /* Restore old font */
-               gfx_setFont(bm, old_font);
-       );
+       /* Restore old font */
+       gfx_setFont(bm, old_font);
 }
 
 /**
@@ -137,14 +131,12 @@ static void bouncing_logo(Bitmap *bm)
                }
 
                /* Update graphics */
-               PROC_ATOMIC(
-                       gfx_bitmapClear(bm);
-                       gfx_blitImage(bm,
-                               (bm->width - bertos_logo.width) / 2,
-                               h / SPEED_SCALE,
-                               &bertos_logo);
-                       lcd_blitBitmap(bm);
-               );
+               gfx_bitmapClear(bm);
+               gfx_blitImage(bm,
+                       (bm->width - bertos_logo.width) / 2,
+                       h / SPEED_SCALE,
+                       &bertos_logo);
+               schedule();
                timer_delay(10);
        }
 }
@@ -181,51 +173,49 @@ void win_demo(Bitmap *bm)
 
        for(;;)
        {
-               PROC_ATOMIC(
-                       /* Background animation */
-                       bm = root_win.bitmap;
-                       gfx_bitmapClear(bm);
-                       // gfx_setClipRect(bm, 0, 0, bm->width, bm->height);
-                       // gfx_rectDraw(bm, 10, 10, bm->width-10, bm->height-10);
-                       // gfx_setClipRect(bm, 11, 11, bm->width-11, bm->height-11);
-                       magic(bm, x, y);
-                       x += xdir;
-                       y += ydir;
-                       if (x >= bm->width)  xdir = -1;
-                       if (x <= -50)        xdir = +1;
-                       if (y >= bm->height) ydir = -1;
-                       if (y <= -50)        ydir = +1;
-
-                       /* Large window animation */
-                       bm = large_win.bitmap;
-                       gfx_bitmapClear(bm);
-                       for (i = 0; i < bm->height / 2; i += 2)
-                               gfx_rectDraw(bm, 0 + i, 0 + i, bm->width - i, bm->height - i);
-
-                       /* Small window animation */
-                       bm = small_win.bitmap;
-                       gfx_bitmapClear(bm);
-                       gfx_rectDraw(bm, 0, 0, bm->width, bm->height);
-                       gfx_line(bm, 0, 0, bm->width, bm->height);
-                       gfx_line(bm, bm->width, 0, 0, bm->height);
-
-                       /* Move windows around */
-                       win_move(&large_win, large_win.geom.xmin + xdir_large, large_top);
-                       if (large_win.geom.xmin < -20) xdir_large = +1;
-                       if (large_win.geom.xmin > RECT_WIDTH(&root_win.geom) - 5) xdir_large = -1;
-
-                       win_move(&small_win, small_left, small_win.geom.ymin + ydir_small);
-                       if (small_win.geom.ymin < -20) ydir_small = +1;
-                       if (small_win.geom.ymin > RECT_HEIGHT(&root_win.geom) - 5) ydir_small = -1;
-
-                       ++raise_counter;
-                       if (raise_counter % 997 == 0)
-                               win_raise(&small_win);
-                       else if (raise_counter % 731 == 0)
-                               win_raise(&large_win);
-
-                       win_compose(&root_win);
-               );
+               /* Background animation */
+               bm = root_win.bitmap;
+               gfx_bitmapClear(bm);
+               // gfx_setClipRect(bm, 0, 0, bm->width, bm->height);
+               // gfx_rectDraw(bm, 10, 10, bm->width-10, bm->height-10);
+               // gfx_setClipRect(bm, 11, 11, bm->width-11, bm->height-11);
+               magic(bm, x, y);
+               x += xdir;
+               y += ydir;
+               if (x >= bm->width)  xdir = -1;
+               if (x <= -50)        xdir = +1;
+               if (y >= bm->height) ydir = -1;
+               if (y <= -50)        ydir = +1;
+
+               /* Large window animation */
+               bm = large_win.bitmap;
+               gfx_bitmapClear(bm);
+               for (i = 0; i < bm->height / 2; i += 2)
+                       gfx_rectDraw(bm, 0 + i, 0 + i, bm->width - i, bm->height - i);
+
+               /* Small window animation */
+               bm = small_win.bitmap;
+               gfx_bitmapClear(bm);
+               gfx_rectDraw(bm, 0, 0, bm->width, bm->height);
+               gfx_line(bm, 0, 0, bm->width, bm->height);
+               gfx_line(bm, bm->width, 0, 0, bm->height);
+
+               /* Move windows around */
+               win_move(&large_win, large_win.geom.xmin + xdir_large, large_top);
+               if (large_win.geom.xmin < -20) xdir_large = +1;
+               if (large_win.geom.xmin > RECT_WIDTH(&root_win.geom) - 5) xdir_large = -1;
+
+               win_move(&small_win, small_left, small_win.geom.ymin + ydir_small);
+               if (small_win.geom.ymin < -20) ydir_small = +1;
+               if (small_win.geom.ymin > RECT_HEIGHT(&root_win.geom) - 5) ydir_small = -1;
+
+               ++raise_counter;
+               if (raise_counter % 997 == 0)
+                       win_raise(&small_win);
+               else if (raise_counter % 731 == 0)
+                       win_raise(&large_win);
+
+               win_compose(&root_win);
                /* Also does LCD refresh, etc. */
                if (kbd_peek())
                        break;