Welcome, Guest. Please login or register. Did you miss your activation email?

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - demolishun

Pages: [1]
1
Python / Events for multiple windows
« on: April 04, 2010, 08:18:18 am »
Okay, this is not an event issue.  It was because I was using the same variable for the View.  If I use a separate variable for the View it works great.  No crash, no collisions, no problem!

Here is the change:
Code: [Select]

while stats.GetEvent(event):
        if event.Type == sf.Event.Resized:
            wview2 = stats.GetView()
            wview2.SetCenter(event.Size.Width/2, event.Size.Height/2)
            wview2.SetHalfSize(event.Size.Width/2, event.Size.Height/2)
            stats.SetView(wview2)


2
Python / Events for multiple windows
« on: April 04, 2010, 07:56:22 am »
Version of SFML is 1.4
Platform is Ubuntu 9.04
Binding is Python

The problem is if I create two windows and call the GetEvent function for each the program corrupts something internally.  

The error is this:
*** glibc detected *** python: corrupted double-linked list: 0x09eb17f0 ***

This occurs after I have resized each window independently to test the resizing of the views.

Here is the code:
Code: [Select]

# Include the PySFML extension
from PySFML import sf

# background color
bgroundclr = sf.Color(127, 64, 64)

# Create the main window
window = sf.RenderWindow(sf.VideoMode(800, 600), "Kid's Game")
stats = sf.RenderWindow(sf.VideoMode(400, 400), "Kid's Game Stats")

# Create a graphical string to display
text = sf.String("Hi Kids!")
#windowsize = sf.String("%d %d" %(window.GetWidth(),window.GetHeight()))

# Start the game loop
running = True
while running:
    event = sf.Event()
    while window.GetEvent(event):
        if event.Type == sf.Event.Closed:
            running = False
        if event.Type == sf.Event.Resized:
            wview = window.GetView()
            wview.SetCenter(event.Size.Width/2, event.Size.Height/2)
            wview.SetHalfSize(event.Size.Width/2, event.Size.Height/2)
            window.SetView(wview)

    while stats.GetEvent(event):
        if event.Type == sf.Event.Resized:
            wview = stats.GetView()
            wview.SetCenter(event.Size.Width/2, event.Size.Height/2)
            wview.SetHalfSize(event.Size.Width/2, event.Size.Height/2)
            stats.SetView(wview)

    # Clear screen, draw the text, and update the window
    window.Clear(bgroundclr)
    stats.Clear(bgroundclr)

    tcenter = text.GetCenter()
    xpos = window.GetWidth()/2 - text.GetRect().GetWidth()/2
    ypos = window.GetHeight()/2 - text.GetRect().GetHeight()/2
    text.SetPosition(xpos, ypos)
    window.Draw(text)

    windowsize = sf.String("%d %d" % (window.GetWidth(),window.GetHeight()))
    #postxt = sf.String("%d %d" % (text.GetRect().GetWidth(),text.GetRect().GetHeight()))
    scale = text.GetSize()
    postxt = sf.String("%d %d %d" % (xpos,ypos,scale))
    postxt.SetPosition(0,100)


    stats.Draw(windowsize)
    stats.Draw(postxt)


    window.Display()
    stats.Display()

Pages: [1]