delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1998/05/18/03:15:37

From: claytonbrauner AT geocities DOT com
Newsgroups: comp.os.msdos.djgpp
Subject: Mouse Callback function using Allegro 3.0
Message-ID: <355fcc53.30849407@news.sas.shaw.wave.ca>
MIME-Version: 1.0
Lines: 39
Date: Mon, 18 May 1998 05:57:17 GMT
NNTP-Posting-Host: cybers96d194.ss.wave.shaw.ca
NNTP-Posting-Date: Sun, 17 May 1998 23:57:17 MDT
Organization: Shaw Fiberlink Ltd. (Calgary)
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp

	I am trying to set up a very simple mouse event stack to catch
all mouse events by making a mouse callback that pushes pertinent data
onto a stack. The only problem is, it doesn't work. It runs and
registers the first event, but then after the first it refuses to
beleive that the counter variable is changing-and so does nothing.
I've tried making these variables "volatile", as i have been told that
that will make the compiler generate code to check it all the time
rather then when the compiler thinks it has changed. But I got the
same results.

	I know the answer will be something trivial, so this is
killing me!!! Thanks for listening.

	(I've written a smallish program to show my problem:)


#include <allegro.h>

volatile struct evrev {
  int mev,x,y;
} events[50];
volatile int nev=0;

void mouseCB( int mev)
{
  events[nev].mev=mev;
  events[nev].x=mouse_x;
  events[nev].y=mouse_y;
  nev++;
}
END_OF_FUNCTION(mouseCB)

void main( void)
{
  char* s=(char*)malloc(80);

  LOCK_FUNCTION(mouseCB);
  LOCK_VARIABLE(nev);
  LOCK_VARIABLE(events);

  allegro_init();
  install_keyboard();
  install_mouse();
  install_timer();
  install_keyboard();
  set_gfx_mode(GFX_VGA,320,200,0,0);

  mouse_callback=mouseCB;
  show_mouse(screen);
	
  while(!key[KEY_SPACE])
    {
      while(nev>0)
        {
          disable();
          sprintf(s,"event %i",nev);
          textout(screen,font,s,events[nev].x,events[nev].y,15);
          nev--;
          enable();
        }
    }
}

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019