static void init(void) { int fd = drmOpen("kgsl", NULL); drmSetMaster(fd); dev = fd_device_new(fd); pipe = fd_pipe_new(dev, FD_PIPE_2D); context_bos[0] = fd_bo_new(dev, 0x1000, DRM_FREEDRENO_GEM_TYPE_KMEM); context_bos[1] = fd_bo_new(dev, 0x9000, DRM_FREEDRENO_GEM_TYPE_KMEM); context_bos[2] = fd_bo_new(dev, 0x81000, DRM_FREEDRENO_GEM_TYPE_KMEM); next_ring(); ring_pre(ring); BEGIN_RING(8); OUT_RING (ring, REGM(VGV1_DIRTYBASE, 3)); OUT_RELOC (ring, context_bos[0]); /* VGV1_DIRTYBASE */ OUT_RELOC (ring, context_bos[1]); /* VGV1_CBASE1 */ OUT_RELOC (ring, context_bos[2]); /* VGV1_UBASE2 */ OUT_RING (ring, 0x11000000); OUT_RING (ring, 0x10fff000); OUT_RING (ring, 0x10ffffff); OUT_RING (ring, 0x0d000404); END_RING (); }
static void flush(PixmapPtr dest, uint32_t *timestamp) { ring_post(ring); fd_ringbuffer_flush(ring); next_ring(); fd_pipe_wait(pipe, fd_ringbuffer_timestamp(ring)); ring_pre(ring); }
int context::circle() { char r[200];int last=0; mst=0; default_queue.node.homedir="d:\\temp\\out"; while(1){ if (!bmodeminit()) return 7; init_circle(0); while(1){ if (f->cn->p = f->cn->getkey()) if (f->cn->p->EventType==KEY_EVENT&&f->cn->p->Event.KeyEvent.bKeyDown){ switch(f->cn->p->Event.KeyEvent.uChar.AsciiChar){ case 'a': case 'A': if (mst==0||mst==3) answer_node();break; case 'c': case 'C': if (mst==0) call_node();break; case 'r': case 'R': TestDialogItem();break; case 'x': if (mst==0&&(f->cn->p->Event.KeyEvent.dwControlKeyState&(LEFT_ALT_PRESSED))) return 0; break; } switch(f->cn->p->Event.KeyEvent.wVirtualKeyCode){ case VK_F1: ShowHelp();break; case VK_F2: MakeConfig();break; case VK_SPACE: case VK_ESCAPE: switch(mst){ case 0: time(&yo);if (v.circle>end_time-yo) init_circle(1);break; case 1: stop_call();break; case 2: stop_answer();break; case 3: f->conresult(15,"NO MORE RINGS",0);init_circle(0);break; } break; } } Sleep(10); if (mst!=-1){ time(&yo); if (current!=yo){ current=yo; if (yo>=end_time){ switch(mst){ case 0: init_circle(1);break; case 1: stop_call();Sleep(400);call_node();break; case 2: stop_answer();break; case 3: f->conresult(15,"NO MORE RINGS");init_circle(0);break; } continue; } int i = end_time - yo; sprintf(s,"%02i:%02i",i/60,i%60); f->conresult(15,s); } } if (int q=bmodemgetchar()){ if (q==13||q==10){ r[last]=0; if (last){ if (checkstring(v.ncarrier+"|"+v.no_dial+"|"+v.busy,r,'|')){ f->conresult(14,r); if (mst==1) Sleep(400),call_node(); else init_circle(0); } else if (v.ring==r){ if (mst!=3) ringno=0; next_ring(); } else if (!strncmp(r,v.connect,v.connect.GetLength())){ f->conresult(14,v.connect); if (mst==1) emsi_connect_out(r,default_queue); else emsi_connect_in(r); last=0; break; } last=0; } } else { if (last>198) last=0; r[last++]=q; } } } } }