From: Maikel V. <ma...@la...> - 2002-10-29 10:09:27
|
Hi Andrey, Your svga.c uses some Linux (I assume) specific ASSEMBLY stuff, and I was trying to get this working under FreeBSD. Can you help me get it to work on a freebsd machine as well? Thank you, Maikel Verheijen. It is a book about a Spanish guy called Manual. You should read it. -- Dilbert > -----Oorspronkelijk bericht----- > Van: Andrey Kovalev [mailto:ak...@pe...] > Verzonden: dinsdag 29 oktober 2002 10:17 > Aan: rde...@li... > Onderwerp: [rdesktop-devel] port for svgalib > > > Hello all! > > I make svgalib's UI port. > > Port based at svga.c by Donald Gordon (I take it from unified > patch), and I rewrite a lot of code in this file for speed it > up. You can download this file from http://dotstream.net/aka/svga.c. > > Speed is a main goal of this port. It's faster than rdesktop > for X and may be usefull for old PCs (currently I use a lot > of 486dx66 with linux and rdesktop with svgalib UI, and it > work fast enough for almost comfortable work). Second goal is > memory usage - rdesktop with my svgalib UI work on computers > with only 8MB RAM without swap. > > > One file (svga.c) should be added to project, and here > some changes in Makefile, Makeconf. > > Makeconf: > > ........... > # Generated by ./configure > CFLAGS += -DGUI_SVGA -I/usr/local/include > LDFLAGS += -lvgagl -lvga > ........... > > Makefile: > > remove 'xwin.o' anf 'xkeymap.o' from RDPOBJ and add 'svga.o' > > > That's enough for my system to compile it > > > PS: I use gcc-3.2 and uClibc instead of standart libc for > building rdesktop with svgalib UI. > > PPS: I think all coordinates come from windows terminal > server are signed short, not uint16. I sometimes see, for > example, RECT_ORDER where x:65523, y:65276, cx:788, cy:1118, > color:255 and I am shure that it should be x:-13, y:-260, > cx:788, cy:1118, color:255 > > XLib draw both orders right, but my svgalib UI doesn't :( > > I already saw negative coordinates in RECT_ORDER and > TEXT2_ORDER, and such patch is usefull for svgalib UI (but > not enough, I think a lot of 'uint16' in order.c and order.h > should be changed): > > -------------------- > File orders.h: > > typedef struct _TEXT2_ORDER > { > uint8 font; > uint8 flags; > uint8 mixmode; > uint8 unknown; > uint8 fgcolour; > uint8 bgcolour; > - uint16 clipleft; > - uint16 cliptop; > - uint16 clipright; > - uint16 clipbottom; > - uint16 boxleft; > - uint16 boxtop; > - uint16 boxright; > - uint16 boxbottom; > - uint16 x; > - uint16 y; > + sint16 clipleft; > + sint16 cliptop; > + sint16 clipright; > + sint16 clipbottom; > + sint16 boxleft; > + sint16 boxtop; > + sint16 boxright; > + sint16 boxbottom; > + sint16 x; > + sint16 y; > uint8 length; > uint8 text[MAX_TEXT]; > } > TEXT2_ORDER; > > typedef struct _RECT_ORDER > { > - uint16 x; > - uint16 y; > - uint16 cx; > - uint16 cy; > + sint16 x; > + sint16 y; > + sint16 cx; > + sint16 cy; > uint8 colour; > } > RECT_ORDER; > -------------------- > > File types.h: > > typedef unsigned char uint8; > typedef unsigned short uint16; > +typedef signed short sint16; > typedef unsigned int uint32; > -------------------- > > > PPPS: sometimes (about once per 10-40 hours of work) mouse > pointer cache in rdesktop begin to work wrong - > cache.c::cache_get_cursor return a lot of NULLs and I receive > a lot of RDP_DATA_PDU_POINTER with message_type = 8 > (RDP_POINTER_PDU_TYPE::RDP_POINTER_MOVE = 3, > RDP_POINTER_PDU_TYPE::RDP_POINTER_COLOR = 6, > RDP_POINTER_PDU_TYPE::RDP_POINTER_CACHED = 7, and what is > 8?). When I disconnect (i.e. kill rdesktop) and then log in > previous session again > - everything work well. > > Workaround is: > rdp.c, about 375 line: > - out_uint16_le(s, 20); /* Cache size */ > + out_uint16_le(s, 1); /* Cache size */ > > But how can I found right solution? > > > > Regards, > Andrey Kovalev > St.Petersburg, Russia > > > > > > ------------------------------------------------------- > This sf.net email is sponsored by:ThinkGeek > Welcome to geek heaven. > http://thinkgeek.com/sf > _______________________________________________ > rdesktop-devel mailing list rde...@li... > https://lists.sourceforge.net/lists/listinfo/rdesktop-devel > |
From: Andrey K. <ak...@pe...> - 2002-11-01 15:10:55
|
Hello Maikel, MV> svga.c:1584: `__NR_clone' undeclared (first use in this function) I think, it's for linux only... MV> this is my error message. I cannot find ANY reference to CLONE in my header MV> files or man pages. Should I just try to rewrite it to use pthreads? Why did MV> you make your own thread function instead of using the pthreads libraries? Donald Gordon wrote start_thread, and I leave it unchanged, just because it work well for me. When we use direct calls to linux kernel, we make it "more portable", i.e. it will work at almost every linux ;) Ok, now I describe changes in svga.c for working with pthread. 1. Remove start_thread function. 2. Include <pthread.h>. 3. int ui_select_fd() { + pthread_t thrd; FTR("ui_select_fd"); if (pipe(fd_vga_evt) == -1) { ERROR("ui_select_fd(): ERROR while creating pipe\n"); return -1; } - if (start_thread (svga_thread_wait, (void *) &fd_vga_evt[1]) == -1) + if (pthread_create (&thrd, NULL, svga_thread_wait, (void *) &fd_vga_evt[1])) { 4. Add pthread library to linker command string, i.e. add -lpthread to LDFLAGS in Makeconf. -- Best regards, Andrey mailto:ak...@pe... |
From: Peter <pet...@ub...> - 2002-11-08 06:29:01
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On Friday 01 November 2002 16.06, Andrey Kovalev wrote: > Hello Maikel, > > MV> svga.c:1584: `__NR_clone' undeclared (first use in this function) > I think, it's for linux only... > > MV> this is my error message. I cannot find ANY reference to CLONE in m= y > header MV> files or man pages. Should I just try to rewrite it to use > pthreads? Why did MV> you make your own thread function instead of usin= g > the pthreads libraries? > > Donald Gordon wrote start_thread, and I leave it unchanged, just > because it work well for me. actually it was me modifying the code. start_thread was needed, to be=20 compatible with the ui scheme in the patches. I didn't use pthread, becau= se=20 svgalib and pthreads don't mix well. they use the same signals.=20 the notes are in the svgalib documentation, if they haven't changed it, = it's=20 a while ago. at the time I verified against pthreads documentation, and i= t=20 was true at the time. since the ui scheme of the patches aren't used in the cvs you may consid= er=20 reworking it again, against the current cvs at sourceforge, in which case= you=20 wont need threads at all.. best regards, Peter > > When we use direct calls to linux kernel, we make it "more portable", > i.e. it will work at almost every linux ;) > > Ok, now I describe changes in svga.c for working with pthread. > 1. Remove start_thread function. > 2. Include <pthread.h>. > 3. > > int > ui_select_fd() > { > + pthread_t thrd; > FTR("ui_select_fd"); > if (pipe(fd_vga_evt) =3D=3D -1) > { > ERROR("ui_select_fd(): ERROR while creating pipe\n"); > return -1; > } > > - if (start_thread (svga_thread_wait, (void *) &fd_vga_evt[1]) =3D=3D = -1) > + if (pthread_create (&thrd, NULL, svga_thread_wait, (void *) > &fd_vga_evt[1])) { > > 4. Add pthread library to linker command string, i.e. add > -lpthread > to LDFLAGS in Makeconf. - --=20 Peter Bystr=F6m <pet...@ub...> Systemstechnician =D6rebro UNI, Library =20 PGP Key-ID: 0x41C60D62 - -- This electronic act of communication (called "mail") may only be read by non-US citizens since it might contain security related material covered by the DMCA act. This mail is therefore released under the license found here: http://www.thefreeworld.net/non-US/index.php -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.7 (GNU/Linux) iD8DBQE9y1miqORp8UHGDWIRAslLAJ9qzQi3Gwq/6STNikOwBLv8IkvNNgCfTe3M 6/HVdVPTYhKtwNrw1Eh+7X0=3D =3Dqulo -----END PGP SIGNATURE----- |