7 void guest_read_host_requests(pluginData
* pd
)
11 if(fread(&cmd
,sizeof(int),1,pd
->pr
)<=0) return; //no data
14 fread(&s
,sizeof(s
),1,pd
->pr
);
15 pd
->handle_newstream(pd
,s
);
17 case gln_destroy_stream
:
18 fread(&s
,sizeof(s
),1,pd
->pr
);
19 pd
->handle_destroystream(pd
,s
);
25 fread(&s
,sizeof(s
),1,pd
->pr
);
26 fread(&off
,sizeof(off
),1,pd
->pr
);
27 fread(&len
,sizeof(len
),1,pd
->pr
);
30 fread(data
,len
,1,pd
->pr
);
31 pd
->handle_write(pd
,s
,off
,len
,data
);
33 } else Log("w: zero len!");
36 default: Log("Unhandled request to guest: %d",cmd
);
40 void guest_newstream(pluginData
*pd
, NPStream
*s
)
42 Log("guest has NEWSTREAM: %p",s
);
45 void guest_destroystream(pluginData
*pd
, NPStream
*s
)
47 Log("guest has DESTROYSTREAM: %p",s
);
50 void guest_write(pluginData
*pd
,NPStream
*s
,int32 off
,int32 len
,void*data
)
52 Log("guest has WRITE: %p %d %d, data followz:",s
,off
,len
);
53 for(int i
=0;i
<len
;++i
)Log("%8X: %c",i
,((char*)data
)[i
]);
56 void glugin_proc(pluginData
*pd
)
59 float r
=pd
->r
/255.0,g
=pd
->g
/255.0,b
=pd
->b
/255.0;
61 float br
=pd
->br
/255.0,bg
=pd
->bg
/255.0,bb
=pd
->bb
/255.0;
63 pd
->handle_newstream
=guest_newstream
;
64 pd
->handle_destroystream
=guest_destroystream
;
65 pd
->handle_write
=guest_write
;
68 glClearColor(br
,bg
,bb
,0);
69 glDisable(GL_DEPTH_TEST
);
70 glDepthFunc(GL_LEQUAL
);
71 glShadeModel(GL_SMOOTH
);
73 glMatrixMode(GL_PROJECTION
);
75 gluPerspective(80,1.3333,0.1,100);
76 glMatrixMode(GL_MODELVIEW
);
78 while(!(pd
->exit_request
)) {
79 guest_read_host_requests(pd
);
81 glClear(GL_COLOR_BUFFER_BIT
|GL_DEPTH_BUFFER_BIT
);
85 {float ri
,rj
,gi
,gj
,bi
,bj
;
92 for(int i
=0;i
<10;++i
) {
93 glBegin(GL_TRIANGLES
);
102 glRotatef(-20,0,0,1);