int main(int argc, const char *argv[]) { fb_info fb_v; fb_info * temp; pthread_t id; int ret; Dot mid; mid.x = 512; mid.y = 275; char ip_address[20]; int mode; create_fb(&fb_v); system("clear"); mode = startup(fb_v, ip_address); draw_pic(fb_v,OFFSET - 20,0,940,720,gImage_chessboard); draw_pic(fb_v,OFFSET - 120,200,100,100,gImage_chessboard); draw_pic(fb_v,OFFSET - 120,500,100,100,gImage_chessboard); draw_piece(fb_v,OFFSET - 70,250,40,0x00000000); draw_piece(fb_v,OFFSET - 70,550,40,0xffffffff); print_board(fb_v,23,30,30,OFFSET,15,0x00000000); temp = &fb_v; if((ret = pthread_create(&id, NULL, (void *) mouse_test,(void *)temp)) != 0) { printf("Create pthread error!\n"); exit(1); } if(mode == 1) udp_server(fb_v); else udp_client(fb_v, ip_address); return 0; }
int main(void) { //int x = 0, y = 0; create_fb(); //scan_screen(); fb_backgound(0, 0, fb_v.w - 1, fb_v.h - 1, 0x00996600); fb_backgound(STARTX, STARTY, STARTX + (V_NUM - 1) * SPACE, STARTY + (H_NUM - 1) * SPACE, 0x00ffcc33); fb_board(0x000000ff); print_color(); mouse_cursor(512, 384); //save_shape(300, 300); //mouse_cursor(300, 300); //restore_shape(300, 300); //mouse_cursor(512, 384); //mouse_doing(); server_op(); while(1) { //mouse_doing(); } return 0; }
static bool page_flip(struct wlc_backend_surface *bsurface) { assert(bsurface && bsurface->internal); struct drm_surface *dsurface = bsurface->internal; assert(!dsurface->flipping); struct drm_fb *fb = &dsurface->fb[dsurface->index]; release_fb(dsurface->surface, fb); struct wlc_output *o; except((o = wl_container_of(bsurface, o, bsurface))); if (!create_fb(dsurface->surface, fb)) return false; if (fb->stride != dsurface->stride) { if (drm.api.drmModeSetCrtc(drm.fd, dsurface->crtc->crtc_id, fb->fd, 0, 0, &dsurface->connector->connector_id, 1, &dsurface->connector->modes[o->active.mode])) goto set_crtc_fail; dsurface->stride = fb->stride; } if (drm.api.drmModePageFlip(drm.fd, dsurface->crtc->crtc_id, fb->fd, DRM_MODE_PAGE_FLIP_EVENT, bsurface)) goto failed_to_page_flip; dsurface->flipping = true; return true; set_crtc_fail: wlc_log(WLC_LOG_WARN, "Failed to set mode: %m"); goto fail; failed_to_page_flip: wlc_log(WLC_LOG_WARN, "Failed to page flip: %m"); fail: release_fb(dsurface->surface, fb); return false; }
static void edp_subtest(int drm_fd, drmModeResPtr drm_res, drmModeConnectorPtr *drm_connectors, uint32_t devid, bool use_panel_fitter) { int i, rc; uint32_t connector_id = 0, crtc_id = 0, buffer_id = 0; drmModeModeInfoPtr mode = NULL; drmModeModeInfo std_1024_mode = { .clock = 65000, .hdisplay = 1024, .hsync_start = 1048, .hsync_end = 1184, .htotal = 1344, .vtotal = 806, .hskew = 0, .vdisplay = 768, .vsync_start = 771, .vsync_end = 777, .vtotal = 806, .vscan = 0, .vrefresh = 60, .flags = 0xA, .type = 0x40, .name = "Custom 1024x768", }; kmstest_unset_all_crtcs(drm_fd, drm_res); for (i = 0; i < drm_res->count_connectors; i++) { drmModeConnectorPtr c = drm_connectors[i]; if (c->connector_type != DRM_MODE_CONNECTOR_eDP) continue; if (c->connection != DRM_MODE_CONNECTED) continue; if (!use_panel_fitter && c->count_modes) { connector_id = c->connector_id; mode = &c->modes[0]; break; } if (use_panel_fitter) { connector_id = c->connector_id; /* This is one of the modes Xorg creates for panels, so * it should work just fine. Notice that Gens that * support LPSP are too new for panels with native * 1024x768 resolution, so this should force the panel * fitter. */ igt_assert(c->count_modes && c->modes[0].hdisplay > 1024); igt_assert(c->count_modes && c->modes[0].vdisplay > 768); mode = &std_1024_mode; break; } } igt_require(connector_id); crtc_id = drm_res->crtcs[0]; buffer_id = create_fb(drm_fd, mode->hdisplay, mode->vdisplay); igt_assert(crtc_id); igt_assert(buffer_id); igt_assert(connector_id); igt_assert(mode); rc = drmModeSetCrtc(drm_fd, crtc_id, buffer_id, 0, 0, &connector_id, 1, mode); igt_assert_eq(rc, 0); if (use_panel_fitter) { if (IS_HASWELL(devid)) igt_assert(!lpsp_is_enabled(drm_fd)); else igt_assert(lpsp_is_enabled(drm_fd)); } else { igt_assert(lpsp_is_enabled(drm_fd)); } } static void non_edp_subtest(int drm_fd, drmModeResPtr drm_res, drmModeConnectorPtr *drm_connectors) { int i, rc; uint32_t connector_id = 0, crtc_id = 0, buffer_id = 0; drmModeModeInfoPtr mode = NULL; kmstest_unset_all_crtcs(drm_fd, drm_res); for (i = 0; i < drm_res->count_connectors; i++) { drmModeConnectorPtr c = drm_connectors[i]; if (c->connector_type == DRM_MODE_CONNECTOR_eDP) continue; if (c->connection != DRM_MODE_CONNECTED) continue; if (c->count_modes) { connector_id = c->connector_id; mode = &c->modes[0]; break; } } igt_require(connector_id); crtc_id = drm_res->crtcs[0]; buffer_id = create_fb(drm_fd, mode->hdisplay, mode->vdisplay); igt_assert(crtc_id); igt_assert(buffer_id); igt_assert(connector_id); igt_assert(mode); rc = drmModeSetCrtc(drm_fd, crtc_id, buffer_id, 0, 0, &connector_id, 1, mode); igt_assert_eq(rc, 0); igt_assert(!lpsp_is_enabled(drm_fd)); }