Event Driven Computing • Basic Interaction Handling – Interactive programs - must pay attention to the user interface walters@buffalo.edu 480/580 Lecture 2 Slide 1 Human Factors 1) Provide simple and consistent interaction sequences eg. each window has same mouse button functions 2) Don't overload user with options - KISS 3) Show available options clearly at every stage of interaction Don't expect user to remember Place info accessibly but not so it interferes with advanced user 4) Give feedback to user Examples in your window manager? - highlights, key echos 5) Allow user to recover gracefully from mistakes Allow for arbitrary input Cancel, undo walters@buffalo.edu 480/580 Lecture 2 Slide 2 Logical Input Devices • Used by graphics packages to provide deviceindependent code • Locator - specify screen coordinates and maybe some state buttons • Keyboard - alphanumeric input • many others walters@buffalo.edu 480/580 Lecture 2 Slide 3 Event Driven Computing How different from programming with simple user input and an emphasis on internal computations? Example A: Read array of integers, Sort them, largest first, Print the sorted array. Example B (ATM machine): W: wait for signal that card has been inserted, Take care of transaction, Go to W. walters@buffalo.edu 480/580 Lecture 2 Slide 4 • In A the program determines the sequence of instructions • In B the users largely determine the sequence • B is an example of interrupt driven computing – An “Interrupt” is the signal that is produced when a physical even is sensed by one of the peripherals of a machine – What are the possible interrupts for the ATM machine? • Example Interrupt Driven Computing (ATM): – If an interrupt occurs • call interrupt_handler (kind_of_interrupt). – Repeat above. walters@buffalo.edu 480/580 Lecture 2 Slide 5 • Programs with Graphical User Interfaces require interrupt driven computing – Not because of the geometric aspects of the display and pictures, etc – But because the program has to wait for signals from the user and execute the appropriate action for each signal received walters@buffalo.edu 480/580 Lecture 2 Slide 6 Events • Programs running under operating systems such as Unix cannot directly sense physical interrupts • What part of the system handles interrupts? • Operating system can pass info about interrupts to program in two different ways – signal the program immediately • program samples or polls a logical input device looking for state changes • continuous sampling required by the application program – store the info in a place that the application program can check it • In window systems the structures containing information about physical interrupts are called “events” • place stored called “event queue” • event driven computing walters@buffalo.edu 480/580 Lecture 2 Slide 7 • Events are more general than interrupts – can be used to pass info about things that are not physical interrupts • Events are associated with “event-triggers” – a user action that causes an event to occur walters@buffalo.edu 480/580 Lecture 2 Slide 8 • Example: Event Handling Program: – Check whether an event has occurred • and it if has, then call event_handler(kind_of_event) – Repeat above • Compare to Interrupt Driven Computing (ATM): – If an interrupt occurs • call interrupt_handler(kind_of_interrupt) – Repeat above. • Appear similar - big difference if program has to perform significant other computations – interrupt driven jumps from current computation to service interrupt when it occurs – event driven doesn’t notice event until it checks for it • problem of user feedback - type-ahead versus draw-ahead walters@buffalo.edu 480/580 Lecture 2 Slide 9 Review • Standard programming versus interaction based programming • Sampling (Polling) versus Event handling of interactions • Interrupt-driven versus Event-driven walters@buffalo.edu 480/580 Lecture 2 Slide 10 Two programming styles for event handling • Response to same event needs to differ at times – what are the input devices on an ATM? – Eg. ATM • typing in PIN number, typing in withdrawal amount, etc. • Nested event handlers • only one sequence of accepted events valid • infinite wait loops inserted were needed • code dealing with events spread throughout so harder to make portable between window systems • State variables • • • • only one sequence of accepted events valid only one wait loop code dealing with events in one place - easier to make portable encourages modular programming walters@buffalo.edu 480/580 Lecture 2 Slide 11 walters@buffalo.edu 480/580 Lecture 2 Slide 12 walters@buffalo.edu 480/580 Lecture 2 Slide 13