From: <Mar...@t-...> - 2004-01-26 16:33:47
|
Hi List! I think there is a Problem in the xmms-plugin, but i cant find them. It's a timing bug. When i call a complex XMMS-Screen on my display, like: ______________ |Artist - Song | <- scrolling |Playing | |1:00-3:17 | |===== | <- timebar --------------------- the screen will only refresh complete after ~6sec. I think that lcd4linux is rehasing the informatiion file for each value. So i've played with the hash-age value in the plugin_xmms.c file. when i set "if (age>0 && age<=20000)" the screnn will do all right for 20 seconds, but dont refresh becaus of the long age of the hash. so i think after 20 seconds he must do a rehash of the file, allright? so lcd4linux is rehashing the file after 20sec. and now i think he had again 20 seconds, where he dont have to rehash, but it seems that he now rehash the values every time when they were called. so i think the age wouldn't be reset corretly. Maybe that it's fixed allready, but the CVS Service on sourceforge isn't reachable. Greets Markus -------- Markus Keil Chemnitz,Saxony Germany |
From: <Mar...@t-...> - 2004-01-27 06:44:53
|
Hi List! I think there is a Problem in the xmms-plugin, but i cant find them. It's a timing bug. When i call a complex XMMS-Screen on my display, like: ______________ |Artist - Song | <- scrolling |Playing | |1:00-3:17 | |===== | <- timebar --------------------- the screen will only refresh complete after ~6sec. I think that lcd4linux is rehasing the informatiion file for each value. So i've played with the hash-age value in the plugin_xmms.c file. when i set "if (age>0 && age<=20000)" the screnn will do all right for 20 seconds, but dont refresh becaus of the long age of the hash. so i think after 20 seconds he must do a rehash of the file, allright? so lcd4linux is rehashing the file after 20sec. and now i think he had again 20 seconds, where he dont have to rehash, but it seems that he now rehash the values every time when they were called. so i think the age wouldn't be reset corretly. Maybe that it's fixed allready, but the CVS Service on sourceforge isn't reachable. Greets Markus -------- Markus Keil Chemnitz,Saxony Germany |
From: <Mar...@t-...> - 2004-01-27 14:53:42
|
Hi List! I think there is a Problem in the xmms-plugin, but i cant find them. It's a timing bug. When i call a complex XMMS-Screen on my display, like: ______________ |Artist - Song | <- scrolling |Playing | |1:00-3:17 | |===== | <- timebar --------------------- the screen will only refresh complete after ~6sec. I think that lcd4linux is rehasing the informatiion file for each value. So i've played with the hash-age value in the plugin_xmms.c file. when i set "if (age>0 && age<=20000)" the screnn will do all right for 20 seconds, but dont refresh becaus of the long age of the hash. so i think after 20 seconds he must do a rehash of the file, allright? so lcd4linux is rehashing the file after 20sec. and now i think he had again 20 seconds, where he dont have to rehash, but it seems that he now rehash the values every time when they were called. so i think the age wouldn't be reset corretly. Maybe that it's fixed allready, but the CVS Service on sourceforge isn't reachable. Greets Markus -------- Markus Keil Chemnitz,Saxony Germany |
From: Michael R. <re...@eu...> - 2004-01-26 19:44:50
|
Hi Markus, > I think there is a Problem in the xmms-plugin, but i cant find them. > It's a timing bug. > When i call a complex XMMS-Screen on my display, like: > ______________ > |Artist - Song | <- scrolling > |Playing | > |1:00-3:17 | > |===== | <- timebar > --------------------- Hey! This screen looks cool! Could you please provide your .conf? (good to know what cool designs are possible with my NextGeneration layout) > the screen will only refresh complete after ~6sec. 6 secs? strange... > I think that lcd4linux is rehasing the informatiion file for each value. > So i've played with the hash-age value in the plugin_xmms.c file. > when i set "if (age>0 && age<=20000)" the screnn will do all right for > 20 seconds, but dont refresh becaus of the long age of the hash. Right. > so i think after 20 seconds he must do a rehash of the file, allright? > so lcd4linux is rehashing the file after 20sec. > and now i think he had again 20 seconds, where he dont have to rehash, > but it seems that he now rehash the values every time when they were > called. so i think the age wouldn't be reset corretly. I took a quick look over the code, but I found no error here. Please try the following: in your plugin_xmms.c, at line 96, add a line between if (age>0 && age<=100) return 0; and // Open Filestream for '/tmp/xmms-info' which reads debug ("DEBUG: re-reading /tmp/xmms-info..."); and start lcd4linux with -F -vv it should print out the debug message every time the file is re-read. You could add other debug messages at certain points, too. the debug() functions acts just like a printf(), that means you can print parameters, too: debug ("Hi %s", name) bye, Michael -- Michael Reinelt Tel: +43 676 3079941 Geisslergasse 4 Fax: +43 316 692343 A-8045 Graz, Austria e-mail: re...@eu... |
From: <Mar...@t-...> - 2004-01-26 21:16:10
|
Am 26.01.2004 20:44:40 schrieb(en) Michael Reinelt: > Hey! This screen looks cool! Could you please provide your .conf? > (good to know what cool designs are possible with my NextGeneration > layout) My Config file is in the attechment. > in your plugin_xmms.c, at line 96, add a line between > if (age>0 && age<=100) return 0; > and > // Open Filestream for '/tmp/xmms-info' > > which reads > debug ("DEBUG: re-reading /tmp/xmms-info..."); > > and start lcd4linux with -F -vv > Ok i've put a debugmessage befor the "if (age>0 && age<=10000) return 0;" and after it: // reread every 100msec only age=hash_age(&xmms, NULL, NULL); debug("XMMS: Hash-age=%i", age); if (age>0 && age<=10000) return 0; debug("DEBUG: rehash XMMS-informations age=%i", age); I've set the rehash time so high because so it is better debuging. Here the Output from lcd4linux: plugin_xmms.c: XMMS: Hash-age=8670 plugin_xmms.c: XMMS: Hash-age=8670 plugin_xmms.c: XMMS: Hash-age=8670 plugin_xmms.c: XMMS: Hash-age=8670 plugin_xmms.c: XMMS: Hash-age=8670 plugin_xmms.c: XMMS: Hash-age=9178 plugin_xmms.c: XMMS: Hash-age=9178 plugin_xmms.c: XMMS: Hash-age=9178 plugin_xmms.c: XMMS: Hash-age=9178 plugin_xmms.c: XMMS: Hash-age=9178 plugin_xmms.c: XMMS: Hash-age=9690 plugin_xmms.c: XMMS: Hash-age=9690 plugin_xmms.c: XMMS: Hash-age=9690 plugin_xmms.c: XMMS: Hash-age=9690 plugin_xmms.c: XMMS: Hash-age=9690 plugin_xmms.c: XMMS: Hash-age=10198 plugin_xmms.c: DEBUG: rehash XMMS-informations age=10198 plugin_xmms.c: XMMS: Hash-age=11111 plugin_xmms.c: DEBUG: rehash XMMS-informations age=11111 plugin_xmms.c: XMMS: Hash-age=12119 plugin_xmms.c: DEBUG: rehash XMMS-informations age=12119 plugin_xmms.c: XMMS: Hash-age=13130 plugin_xmms.c: DEBUG: rehash XMMS-informations age=13130 plugin_xmms.c: XMMS: Hash-age=14141 plugin_xmms.c: DEBUG: rehash XMMS-informations age=14141 plugin_xmms.c: XMMS: Hash-age=15659 plugin_xmms.c: DEBUG: rehash XMMS-informations age=15659 plugin_xmms.c: XMMS: Hash-age=16159 plugin_xmms.c: DEBUG: rehash XMMS-informations age=16159 plugin_xmms.c: XMMS: Hash-age=17170 plugin_xmms.c: DEBUG: rehash XMMS-informations age=17170 plugin_xmms.c: XMMS: Hash-age=18180 plugin_xmms.c: DEBUG: rehash XMMS-informations age=18180 plugin_xmms.c: XMMS: Hash-age=19190 plugin_xmms.c: DEBUG: rehash XMMS-informations age=19190 When the Timer hits the 10000sec he begins the reread everytime the value is called. Can you implement a own function to set the age to zero? This would made the code more transparent and better to understand, i think. So Long, Markus PS: My next Plugin is waiting in my development-directory. It will be able to read RDF-Newstickers from the web. but we should first fix the Xmms/hash-problem. If this is done i will finish my new plugin, |
From: Michael R. <re...@eu...> - 2004-01-27 04:56:17
|
Hi Markus, > When the Timer hits the 10000sec he begins the reread everytime the > value is called. Fixed. Thanks for debugging this one! I reset the age of a specific element, but not the hash itself. Should work now. > PS: My next Plugin is waiting in my development-directory. It will be > able to read RDF-Newstickers from the web. but we should first fix the > Xmms/hash-problem. Sounds very interesting! BUT! There's a big BUT! We had some very big problems with the old mail client, which checks POP3 mailboxes and displayed the number of new/unread mails. The problem was that it took some time to parse the mailbox over an internet connection, there have been delays up to several seconds. This is very bad for the lcd4linux internal timing mechanisms. The display got "stuck" in this moments, which looked quite ugly. That's why I don't want to port the mail plugin to the "next Generation", because I'd have to solve this issue. The only solutzion that comes to my mind is an "asynchronous parsing": The plugin should do a fork() upon initialization, and the forked extra thread should parse the mailbox (or the ticker in your case), and deliver the results over a shared memory buffer. The "real" plugin just reads this memory buffer. There have to be some synchronisation mechanisms with mutexes and stuff... Take a look at the (old) X11 driver, it already is asynchronous, you will find all the forking and shared memory stuff in there. Anyone with better ideas? bye, Michael -- Michael Reinelt Tel: +43 676 3079941 Geisslergasse 4 Fax: +43 316 692343 A-8045 Graz, Austria e-mail: re...@eu... |
From: <Mar...@t-...> - 2004-01-27 21:39:24
|
Am 27.01.2004 22:08:58 schrieb(en) Michael Reinelt: > Hmmm... basically a good idea, if you solve the timing/ > synchronisation issues: > > - don't start a new wget process unless the old one has been finished > (how to detect that?) > > - when is the local temporary file "finished" and ready for parsing? > (maybe wget supports some atomic "rename after complete download". > Maybe, i can solve this with a small bash-script, which would create a "lock"-file, start the download and rename the file. I'll find a way! > > anyway, such a plugin would be very cool! > This is because i write it! :-) And it's the perfekt datasource for your Marquee-Scrolling Feature. *g* Markus |
From: <Mar...@t-...> - 2004-01-26 21:33:16
Attachments:
lcd4linux.conf
|
I forgot the config file! here it is: |
From: Michael R. <re...@eu...> - 2004-01-27 04:48:00
|
Hi Markus, Here are some comments on your config file: > Display HD44780-20x4 { > Driver 'HD44780' > # Port '/dev/par0' > Port '0x378' you should really try to get parport up and running. "Raw" port I/O (by specifiying 0x378 as a port) will be dropped someday. > asc255bug 1 does your display really have this bug? double-check it... > Widget XMMS_Title { > class 'Text' > expression xmms('Title') > width 16 > align 'L' ever tried 'M' (marquee scroller)? > Widget XMMS_Bar { > class 'Bar' > expression xmms('uSecPosition') > max 1000000 so your bar is at 100% after 10 Minutes? That's bad... Is there a way to get the length of the current track in uSecs? If so, you could specify max xmms('uSecLength') and get the bar scaled to the real track length... bye, Michael -- Michael Reinelt Tel: +43 676 3079941 Geisslergasse 4 Fax: +43 316 692343 A-8045 Graz, Austria e-mail: re...@eu... |
From: <Mar...@t-...> - 2004-01-27 13:39:18
|
Am 27.01.2004 05:47:40 schrieb(en) Michael Reinelt: > Hi Markus, > > Here are some comments on your config file: > >> Display HD44780-20x4 { >> Driver 'HD44780' >> # Port '/dev/par0' >> Port '0x378' > you should really try to get parport up and running. "Raw" port I/O > (by specifiying 0x378 as a port) will be dropped someday. > >> asc255bug 1 > does your display really have this bug? double-check it... > I've just overtaken the Driversection from the Sampleconfig. >> Widget XMMS_Title { >> class 'Text' >> expression xmms('Title') >> width 16 >> align 'L' > ever tried 'M' (marquee scroller)? > >> Widget XMMS_Bar { >> class 'Bar' >> expression xmms('uSecPosition') >> max 1000000 > > so your bar is at 100% after 10 Minutes? That's bad... Is there a way > to get the length of the current track in uSecs? If so, you could > specify > max xmms('uSecLength') > and get the bar scaled to the real track length... > This is the configuration for my debugging. your "changes" are already in my config, but i've send the wrong one. *g* Markus |
From: <Mar...@t-...> - 2004-01-28 02:47:14
|
Am 27.01.2004 05:47:40 schrieb(en) Michael Reinelt: > Hi Markus, > > Here are some comments on your config file: > >> Display HD44780-20x4 { >> Driver 'HD44780' >> # Port '/dev/par0' >> Port '0x378' > you should really try to get parport up and running. "Raw" port I/O > (by specifiying 0x378 as a port) will be dropped someday. I've try it, but i've got errors: HD44780: controlling 0 GPO's HD44780: using display with 1 controllers HD44780: using 8 bit mode udelay.c: CPU supports Time Stamp Counter udelay.c: CPU runs at 1400.054000 MHz udelay.c: using TSC delay loop, 1401 ticks per microsecond drv_generic_parport.c: using ppdev /dev/par0 HD44780: ioctl(/dev/par0, PPCLAIM) failed: 22 Invalid argument HD44780: could not initialize parallel port! the modules for par0 access are loaded (ppdev, parport, parport_pc). I try to run lcd4linux as root. Markus |
From: Michael R. <re...@eu...> - 2004-01-28 07:08:46
|
Hi Markus, >>> Display HD44780-20x4 { >>> Driver 'HD44780' >>> # Port '/dev/par0' >>> Port '0x378' >> >> you should really try to get parport up and running. "Raw" port I/O >> (by specifiying 0x378 as a port) will be dropped someday. > > I've try it, but i've got errors: > > drv_generic_parport.c: using ppdev /dev/par0 > HD44780: ioctl(/dev/par0, PPCLAIM) failed: 22 Invalid argument > HD44780: could not initialize parallel port! > > the modules for par0 access are loaded (ppdev, parport, parport_pc). > I try to run lcd4linux as root. This means that the parallel port is occupied by some other driver or program, most probably the printing subsystem. - try 'fuser /dev/par0' - Try to unload the "lp" module bye, Michael -- Michael Reinelt Tel: +43 676 3079941 Geisslergasse 4 Fax: +43 316 692343 A-8045 Graz, Austria e-mail: re...@eu... |