Introduction to Computer Graphics by np6KJuHl

VIEWS: 0 PAGES: 13

									                         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 device-
  independent 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

								
To top