History

Graphics and mouse are working

John Floren committed 15 years ago

Commit 8a883ac1 parent 8c814225 files · +47 −8Browse files

Unified · Split

5 files
  1. emu/Linux/emu-g +16 −2
  2. emu/Linux/emu-g.c +11 −3
  3. emu/Linux/mkfile +1 −0
  4. emu/port/devcons.c +2 −0
  5. emu/port/devpointer.c +17 −3
emu/Linux/emu-g+16−2
@@ -16,6 +16,10 @@ dev · 15 unmodified lines
1616 cmd cmd
1717 indir
1818
19+ draw screen
20+ pointer
21+# snarf
22+
1923 ip ipif6-posix ipaux
2024 eia
2125 # audio audio
@@ -23,7 +27,13 @@ dev · 1 unmodified line
2327
2428 lib
2529 interp
30+ tk
31+ freetype
2632 math
33+ draw screen
34+
35+ memlayer
36+ memdraw
2737 keyring
2838 sec
2939 mp
@@ -34,12 +44,16 @@ link · 4 unmodified lines
3444
3545 mod
3646 sys
47+ draw
48+
49+ tk
3750 math
3851 srv srv
3952 keyring
4053 crypt
4154 ipints
4255 loader
56+ freetype
4357
4458 port
4559 alloc
@@ -69,8 +83,8 @@ port · 23 unmodified lines
6983 uqid
7084
7185 code
72− void setpointer(int x, int y){USED(x); USED(y);}
73− ulong strtochan(char *s){USED(s); return ~0;}
86+# void setpointer(int x, int y){USED(x); USED(y);}
87+# ulong strtochan(char *s){USED(s); return ~0;}
7488
7589 init
7690 emuinit
emu/Linux/emu-g.c+11−3
@@ -6,7 +6,7 @@ · 5 unmodified lines
66
77 #include "emu-g.root.h"
88
9−ulong ndevs = 25;
9+ulong ndevs = 27;
1010
1111 extern Dev rootdevtab;
1212 extern Dev consdevtab;
@@ -22,6 +22,8 @@ extern Dev capdevtab; · 9 unmodified lines
2222 extern Dev fsdevtab;
2323 extern Dev cmddevtab;
2424 extern Dev indirdevtab;
25+extern Dev drawdevtab;
26+extern Dev pointerdevtab;
2527 extern Dev ipdevtab;
2628 extern Dev eiadevtab;
2729 extern Dev memdevtab;
@@ -40,6 +42,8 @@ Dev* devtab[]={ · 12 unmodified lines
4042 &fsdevtab,
4143 &cmddevtab,
4244 &indirdevtab,
45+ &drawdevtab,
46+ &pointerdevtab,
4347 &ipdevtab,
4448 &eiadevtab,
4549 &memdevtab,
@@ -58,23 +62,27 @@ void links(void){ · 12 unmodified lines
5862 }
5963
6064 extern void sysmodinit(void);
65+extern void drawmodinit(void);
66+extern void tkmodinit(void);
6167 extern void mathmodinit(void);
6268 extern void srvmodinit(void);
6369 extern void keyringmodinit(void);
6470 extern void cryptmodinit(void);
6571 extern void ipintsmodinit(void);
6672 extern void loadermodinit(void);
73+extern void freetypemodinit(void);
6774 void modinit(void){
6875 sysmodinit();
76+ drawmodinit();
77+ tkmodinit();
6978 mathmodinit();
7079 srvmodinit();
7180 keyringmodinit();
7281 cryptmodinit();
7382 ipintsmodinit();
7483 loadermodinit();
84+ freetypemodinit();
7585 }
7686
77− void setpointer(int x, int y){USED(x); USED(y);}
78− ulong strtochan(char *s){USED(s); return ~0;}
7987 char* conffile = "emu-g";
8088 ulong kerndate = KERNDATE;
emu/Linux/mkfile+1−0
@@ -23,6 +23,7 @@ OBJ=\ · 22 unmodified lines
2323 osp.$O\
2424 kproc-pthreads.$O\
2525 segflush-$OBJTYPE.$O\
26+ framebuffer.$O\
2627 $CONF.root.$O\
2728 lock.$O\
2829 $DEVS\
emu/port/devcons.c+2−0
@@ -610,6 +610,7 @@ nrand(int n) · 609 unmodified lines
610610 randn = randn*1103515245 + 12345 + osusectime();
611611 return (randn>>16) % n;
612612 }
613+
613614 /*
614615 int
615616 rand(void)
@@ -618,6 +619,7 @@ rand(void) · 2 unmodified lines
618619 return randn;
619620 }
620621 */
622+
621623 ulong
622624 truerand(void)
623625 {
emu/port/devpointer.c+17−3
@@ -73,6 +73,14 @@ mousetrack(int b, int x, int y, int isdelta) · 72 unmodified lines
7373 x += mouse.v.x;
7474 y += mouse.v.y;
7575 }
76+ if(x < 0)
77+ x = 0;
78+ else if (x > Xsize)
79+ x = Xsize;
80+ if(y < 0)
81+ y = 0;
82+ else if (y > Ysize)
83+ y = Ysize;
7684 msec = osmillisec();
7785 if(0 && b && (mouse.v.b ^ b)&0x1f){
7886 if(msec - mouse.v.msec < 300 && mouse.lastb == b
@@ -100,7 +108,7 @@ mousetrack(int b, int x, int y, int isdelta) · 21 unmodified lines
100108 ptrq.put++;
101109 Wakeup(&ptrq.r);
102110 /* drawactive(1); */
103−/* setpointer(x, y); */
111+ setpointer(x, y);
104112 }
105113
106114 static int
@@ -227,6 +235,8 @@ pointerread(Chan* c, void* a, long n, vlong off) · 120 unmodified lines
227235 return n;
228236 }
229237
238+extern void drawPointer(int, int);
239+
230240 static long
231241 pointerwrite(Chan* c, void* va, long n, vlong off)
232242 {
@@ -251,6 +261,8 @@ pointerwrite(Chan* c, void* va, long n, vlong off) · 18 unmodified lines
251261 else
252262 b = mouse.v.b;
253263 /*mousetrack(b, x, y, msec);*/
264+ mouse.v.x = x;
265+ mouse.v.y = y;
254266 setpointer(x, y);
255267 USED(b);
256268 break;
@@ -262,7 +274,8 @@ pointerwrite(Chan* c, void* va, long n, vlong off) · 5 unmodified lines
262274 */
263275 if(n == 0){
264276 cur.data = nil;
265− drawcursor(&cur);
277+ //drawcursor(&cur);
278+ drawPointer(cur.hotx, cur.hoty);
266279 break;
267280 }
268281 if(n < 8)
@@ -276,7 +289,8 @@ pointerwrite(Chan* c, void* va, long n, vlong off) · 7 unmodified lines
276289 if(cur.maxx%8 != 0 || cur.maxy%2 != 0 || n-4*4 != (cur.maxx/8 * cur.maxy))
277290 error(Ebadarg);
278291 cur.data = (uchar*)va + 4*4;
279− drawcursor(&cur);
292+ //drawcursor(&cur);
293+ drawPointer(cur.hotx, cur.hoty);
280294 break;
281295 default:
282296 error(Ebadusefd);