[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Beta Version - Please help

On Tue, 17 Aug 1999, Philipp GXhring wrote:
> The first thing I need is delay(long n).
> delay should wait for n milliseconds. (thousands of a second)
as i see it, there are two ways to do this.
the first is to use the gettimeofday function, and set a variable, say 
oldtime, to it.  then just loop, or sleep until the gettimeofday function 
returns the first oldtime+delaytime...but personally (and i'm not sure 
how true this is) i've found that the gettimeofday function is really slow.
theres also the select function which i read somewhere (though don't ask 
me where) is a good way to do a delay type situation...
but wait, theres more...
way back in my dos programming days, there was a technique suggested to 
me where at the beginning of your program, you make a function that is as 
while (i<UPPER_BOUND) && (keepgoing==true) {
  for (j=0; j<i; j++);
  if (gettime()-t==timeyouwanttodelay) keepgoing=false;
and then your own home brewed delay function, use that j value to do the 
function delay() {
  for (k=0; k<j; k++);  
which should theoretically delay for timeyouwanttodelay...
well, all these ways may be back-asswards ways of doing a delay, but 
thats what comes to mind of the top of my head...

> The next thing I need is a constant framerate for my video player (it
> plays .flc and .fli videos) I need for example 15 frames per second.
> So the loop algorithm I wrote was the following:
a modified home-brew delay as described above might work.
> While playing the above way, it should be possible to skip the video
> or a sequence of videos by pressing a key on the keyboard. I realized
> this under DOS with kbhit(), which i couldnīt find in Linux.
> (kbhit is a non-blocking getch)
um, excuse my ignorence, but i don't rightly know if you're doing this 
under x or console.  if you're doing it under x, then the main idle loop 
can look for keyboard hits at any time.  if you're doing it under 
console, i believe there is a way to make io non-blocking via fcntl, 
using the F_SETFL operation and setting the O_NONBLOCK bit, or using 
ioctl with the FIONBIO operation (?????)

> And the last thing is the Background music. I just forked and updated
> mikmod in the background, but it is still playing, when I stop the
> program with CTRL+C.
you just have to let your different forked processes talk to each other 
either via a pipe, shared memory, or the like, and then if one gets an 
exit signal then it will the tell the other accordingly.

well, rather a long winded response, but i hope you can glean some 
usefull information...tell me if any of this actually works...

abram connelly