fixed win motion bug
authorEleni Maria Stea <elene.mst@gmail.com>
Sun, 24 Feb 2013 21:04:04 +0000 (23:04 +0200)
committerEleni Maria Stea <elene.mst@gmail.com>
Sun, 24 Feb 2013 21:04:04 +0000 (23:04 +0200)
Makefile
src/fbdev/gfx.cc
src/window.cc
src/wm.cc

index ad3fd6c..a894e52 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -7,7 +7,7 @@ dbg = -g
 opt = -O0
 inc = -Isrc
 
-#backend = SDL
+backend = SDL
 
 ifeq ($(backend), SDL)
        def = -DWINNIE_SDL
index db579ff..e4527b0 100644 (file)
@@ -55,6 +55,9 @@ bool init_gfx()
                return false;
        }
 
+// TODO: uncomment when I find how to use intelfb instead of i915 GRRRR.-      
+
+/*
        fb_vblank vblank;
        if(ioctl(dev_fd, FBIOGET_VBLANK, &vblank) == -1) {
                fprintf(stderr, "FBIOGET_VBLANK error: %s\n", strerror(errno));
@@ -64,6 +67,7 @@ bool init_gfx()
                printf("count: %d\n", vblank.count);
                printf("beam position: %d, %d\n", vblank.hcount, vblank.vcount);
        }
+*/
 
        return true;
 }
@@ -247,16 +251,9 @@ void gfx_update()
 void wait_vsync()
 {
        unsigned long arg = 0;
-
-       timeval tvstart, tvend;
-       gettimeofday(&tvstart, 0);
-       
        if(ioctl(dev_fd, FBIO_WAITFORVSYNC, &arg) == -1) {
-               printf("ioctl error %s\n", strerror(errno));
+//             printf("ioctl error %s\n", strerror(errno));
        }
-
-       gettimeofday(&tvend, 0);
-       printf("%ld %ld\n", tvend.tv_sec - tvstart.tv_sec, tvend.tv_usec - tvstart.tv_usec);
 }
 
 #endif // WINNIE_FBDEV
index a0388fe..21ff70f 100644 (file)
@@ -92,14 +92,15 @@ void Window::invalidate()
 
 void Window::draw(const Rect &dirty_region)
 {
-       Rect intersect = rect_intersection(rect, dirty_region);
+       Rect abs_rect = get_absolute_rect();
+       Rect intersect = rect_intersection(abs_rect, dirty_region);
        if(intersect.width && intersect.height) {
                if(callbacks.display) {
                        callbacks.display(this);
                }
                dirty = false;
 
-               draw_children(rect);
+               draw_children(abs_rect);
        }
 }
 
index 4547e1d..a77f026 100644 (file)
--- a/src/wm.cc
+++ b/src/wm.cc
@@ -23,9 +23,8 @@ void WindowManager::create_frame(Window *win)
        frame->set_display_callback(display);
        frame->set_mouse_button_callback(mouse);
        frame->set_mouse_motion_callback(motion);
-
-       frame->add_child(win);
        frame->set_focusable(false);
+       frame->add_child(win);
 
        windows.push_back(frame);