/* * my_fbcopy.c * */ #include #include #include #include #include "tft.h" #include "RAIO8870.h" int main(int argc, char **argv) { DISPMANX_DISPLAY_HANDLE_T main_display_handle; DISPMANX_RESOURCE_HANDLE_T screen_resource_handle; VC_RECT_T rectangle; int ret; uint32_t image_prt; uint16_t image[2][ PICTURE_PIXELS ]; uint32_t current_frame = 0, old_frame=1; uint32_t i, x, y, start, end, count; uint16_t *p_current_frame, *p_old_frame, *p_start; bcm_host_init(); if ( !bcm2835_init() ) return ( -1 ); TFT_init_board(); TFT_hard_reset(); RAIO_init(); //clear old image p_old_frame = &image[ old_frame ][0]; for(x=0; x<76800; x++) { *p_old_frame++ = 0x1111; } // open main framebuffer device main_display_handle = vc_dispmanx_display_open( 0 ); if ( !main_display_handle ) { printf("\n Unable to open primary display"); return( -1 ); } // now build up the shadow area for RAIO screen_resource_handle = vc_dispmanx_resource_create( VC_IMAGE_RGB565, DISPLAY_WIDTH, DISPLAY_HEIGHT, &image_prt ); if ( !screen_resource_handle ) { printf("\n Unable to create screen buffer"); vc_dispmanx_display_close( main_display_handle ); return ( -1 ); } vc_dispmanx_rect_set( &rectangle, 0, 0, DISPLAY_WIDTH, DISPLAY_HEIGHT ); while( 1 ) { ret = vc_dispmanx_snapshot( main_display_handle, screen_resource_handle, DISPMANX_NO_ROTATE ); vc_dispmanx_resource_read_data( screen_resource_handle, &rectangle, &image[ current_frame ][0], DISPLAY_WIDTH*2 ); i=0; p_current_frame = &image[ current_frame ][ 0 ]; p_old_frame = &image[ old_frame ][ 0 ]; while (i 10 fps usleep( 100 * 1000 ); } return ( 0 ); }