u32 procwrap_ctrl(union trapped_args *args, void *pr_ctxt) { u32 cb_data_size, __user * psize = (u32 __user *) args->args_proc_ctrl.args; u8 *pargs = NULL; int status = 0; void *hprocessor = ((struct process_context *)pr_ctxt)->processor; if (psize) { if (get_user(cb_data_size, psize)) { status = -EPERM; goto func_end; } cb_data_size += sizeof(u32); pargs = kmalloc(cb_data_size, GFP_KERNEL); if (pargs == NULL) { status = -ENOMEM; goto func_end; } CP_FM_USR(pargs, args->args_proc_ctrl.args, status, cb_data_size); } if (!status) { status = proc_ctrl(hprocessor, args->args_proc_ctrl.cmd, (struct dsp_cbdata *)pargs); } kfree(pargs); func_end: return status; }
void render() { #ifdef FOR_PSP proc_ctrl(); #endif checkformovedown(); procblocks(); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); glTranslatef(-10.0f,15.0f,-45.0f); glRotatef(rquad,1.0f,0.0f,0.0f); glRotatef(r_quad,0.0f,1.0f,0.0f); //draw the board for(i = 0; i < 17; i++) { for(z = 0; z < 8; z++) { for(p = 0; p < 3; p++) { // draw the current game block if(gblock[p].x == z && gblock[p].y == i) { glBegin(GL_QUADS); glColor3f(gblock[p].r + .3f, gblock[p].g + .3f, gblock[p].b + .3f); glVertex3f( 1.0f, 1.0f,-1.0f); glVertex3f(-1.0f, 1.0f,-1.0f); glVertex3f(-1.0f, 1.0f, 1.0f); glVertex3f( 1.0f, 1.0f, 1.0f); glColor3f(gblock[p].r + .3f, gblock[p].g + .3f, gblock[p].b + .3f); glVertex3f( 1.0f,-0.5f, 1.0f); glVertex3f(-1.0f,-0.5f, 1.0f); glVertex3f(-1.0f,-0.5f,-1.0f); glVertex3f( 1.0f,-0.5f,-1.0f); glColor3f(gblock[p].r,gblock[p].g,gblock[p].b); glVertex3f( 1.0f, 1.0f, 1.0f); glVertex3f(-1.0f, 1.0f, 1.0f); glVertex3f(-1.0f,-.5f, 1.0f); glVertex3f( 1.0f,-.5f, 1.0f); glColor3f(gblock[p].r + .2f,gblock[p].g + .2f,gblock[p].b + .2f); glVertex3f( 1.0f,-.5f,-1.0f); glVertex3f(-1.0f,-.5f,-1.0f); glVertex3f(-1.0f, 1.0f,-1.0f); glVertex3f( 1.0f, 1.0f,-1.0f); glColor3f(gblock[p].r + .1f, gblock[p].g + .1f,gblock[p].b + .1f); glVertex3f(-1.0f, 1.0f,1.0f); glVertex3f(-1.0f, 1.0f,-1.0f); glVertex3f(-1.0f, -0.5f,-1.0f); glVertex3f(-1.0f, -0.5f, 1.0f); glVertex3f(1.0f,1.0f,1.0f); glVertex3f(1.0f,1.0f,-1.0f); glVertex3f(1.0f,-0.5f,-1.0f); glVertex3f(1.0f,-0.5f,1.0f); glEnd(); } } // draw the rest of the blocks if(tiles[i][z].color != BLACK) { glBegin(GL_QUADS); glColor3f(tiles[i][z].r + .3f, tiles[i][z].g + .3f, tiles[i][z].b + .3f); glVertex3f( 1.0f, 1.0f,-1.0f); glVertex3f(-1.0f, 1.0f,-1.0f); glVertex3f(-1.0f, 1.0f, 1.0f); glVertex3f( 1.0f, 1.0f, 1.0f); glColor3f(tiles[i][z].r + .3f, tiles[i][z].g + .3f, tiles[i][z].b + .3f); glVertex3f( 1.0f,-0.5f, 1.0f); glVertex3f(-1.0f,-0.5f, 1.0f); glVertex3f(-1.0f,-0.5f,-1.0f); glVertex3f( 1.0f,-0.5f,-1.0f); glColor3f(tiles[i][z].r,tiles[i][z].g,tiles[i][z].b); glVertex3f( 1.0f, 1.0f, 1.0f); glVertex3f(-1.0f, 1.0f, 1.0f); glVertex3f(-1.0f,-.5f, 1.0f); glVertex3f( 1.0f,-.5f, 1.0f); glColor3f(tiles[i][z].r + .2f,tiles[i][z].g + .2f,tiles[i][z].b + .2f); glVertex3f( 1.0f,-.5f,-1.0f); glVertex3f(-1.0f,-.5f,-1.0f); glVertex3f(-1.0f, 1.0f,-1.0f); glVertex3f( 1.0f, 1.0f,-1.0f); glColor3f(tiles[i][z].r + .1f, tiles[i][z].g + .1f,tiles[i][z].b + .1f); glVertex3f(-1.0f, 1.0f,1.0f); glVertex3f(-1.0f, 1.0f,-1.0f); glVertex3f(-1.0f, -0.5f,-1.0f); glVertex3f(-1.0f, -0.5f, 1.0f); glVertex3f(1.0f,1.0f,1.0f); glVertex3f(1.0f,1.0f,-1.0f); glVertex3f(1.0f,-0.5f,-1.0f); glVertex3f(1.0f,-0.5f,1.0f); glEnd(); } glTranslatef(3.0f,0.0f,0.0f); } glTranslatef(-24.0,-2.0,0.0f); } glutSwapBuffers(); }