Modify framebuffer and NGA framebuffer to read screen size from board model dtb file. Optimise memory usuage of frame buffer
Add example minigui application with hooks to profiler (which writes results to S:\). Modified NGA framebuffer to run its own dfc queue at high priority
#! /usr/bin/env python
# Simulate "electrons" migrating across the screen.
# An optional bitmap file in can be in the background.
#
# Usage: electrons [n [bitmapfile]]
#
# n is the number of electrons to animate; default is 30.
#
# The bitmap file can be any X11 bitmap file (look in
# /usr/include/X11/bitmaps for samples); it is displayed as the
# background of the animation. Default is no bitmap.
from Tkinter import *
import random
# The graphical interface
class Electrons:
# Create our objects
def __init__(self, n, bitmap = None):
self.n = n
self.tk = tk = Tk()
self.canvas = c = Canvas(tk)
c.pack()
width, height = tk.getint(c['width']), tk.getint(c['height'])
# Add background bitmap
if bitmap:
self.bitmap = c.create_bitmap(width/2, height/2,
bitmap=bitmap,
foreground='blue')
self.pieces = []
x1, y1, x2, y2 = 10,70,14,74
for i in range(n):
p = c.create_oval(x1, y1, x2, y2, fill='red')
self.pieces.append(p)
y1, y2 = y1 +2, y2 + 2
self.tk.update()
def random_move(self, n):
c = self.canvas
for p in self.pieces:
x = random.choice(range(-2,4))
y = random.choice(range(-3,4))
c.move(p, x, y)
self.tk.update()
# Run -- allow 500 movemens
def run(self):
try:
for i in range(500):
self.random_move(self.n)
except TclError:
try:
self.tk.destroy()
except TclError:
pass
# Main program
def main():
import sys, string
# First argument is number of electrons, default 30
if sys.argv[1:]:
n = string.atoi(sys.argv[1])
else:
n = 30
# Second argument is bitmap file, default none
if sys.argv[2:]:
bitmap = sys.argv[2]
# Reverse meaning of leading '@' compared to Tk
if bitmap[0] == '@': bitmap = bitmap[1:]
else: bitmap = '@' + bitmap
else:
bitmap = None
# Create the graphical objects...
h = Electrons(n, bitmap)
# ...and run!
h.run()
# Call main when run as script
if __name__ == '__main__':
main()