Hi Sibtey, would it be possible for you to share a complete working source to a program that can be used to demonstrate the problem?
If it's a problem to share your code as is, maybe you could make a minimal example? (i.e. remove everything except the code required to make the problem happen) On Fri, Jun 27, 2008 at 3:52 AM, Sibtey Mehdi <[EMAIL PROTECTED]> wrote: > Hugo, > > logicalSurface is an object that contain pygame surface I am drawing > everything on it and blitting this surface to the pygame screen. > > I haven't locked the surface anywhere else, all the others drawing function > working fine only blit function gives the problem if and only if I draw the > pages quickly by pressing pageUp and pand pageDown. > > > > I have temporary fixed this problem like this, but I want a better solution > > def blit(self,screen, logicalSurface, (offsetX,offsetY)): > > """ > > blit the surface on to the pygamewindow, logicalSurface -> pygame > surface > > """ > > try: > > screen.blit (logicalSurface.surface, (-offsetX, -offsetY)) > > except: > > time.sleep(0.1) > > self.blit(screen, pygameSurface,(offsetX, offsetY)) > > > > Thanks, > > Sibtey > > > ------------------------------ > > *On Behalf Of *Hugo Arts > > > > What exactly is the difference between logicalSurface and > logicalsurface.surface? in draw(), you draw directly on logicalSurface. But > after that you blit logicalSurface.surface to the screen. > > pygame draw functions will lock/unlock surface automagically IIRC, so the > problem is likely with the blit call. Try to find out if either of the > surfaces is locked, and if so, try to unlock them. The surface may be locked > multiple times, and you must unlock it the same number of times to regain > access, so you might need more than one unlock call. > > Are you locking these surfaces elsewhere in your code? There may be a bug > in that code that causes some surfaces to stay locked when they shouldn't. > Remember to call unlock the same amount of times you called lock. > > If you don't use lock in your code, there may be a bug in 1.8.0 locking. > > On Fri, Jun 27, 2008 at 11:16 AM, Sibtey Mehdi <[EMAIL PROTECTED]> > wrote: > > > > I am using 1.8.0 packages (march 29 2008). On page Up and Page Down I am > calling the drawPage() function. > > > > def drawPage(self, page, logicalSurface): > > self.draw(page, logicalSurface) > > self.screen.blit (logicalSurface.surface, (-offsetX, -offsetY)) > > > > def draw(self, page, logicalSurf): > > #draw rect > > for rec in page.rects: > > > self.Pygame.draw.rect(logicalSurf,rec.color,(rec.x1,rec.y1,rec.x2,rec.y2), > 1) > > #text > > for text in page.texts: > > #draw text > > #lines > > for line in page.lines: > > self.Pygame.draw.line(logicalSurf, > [line.colline.x1,line.y1],[line.x2,line.y2],1) > > > > thanks, > > Sibtey > > > > > > > > > > Are you using svn pygame? There have been some changes since 1.8.0 to > > the locking code. > > > > Hugo Arts wrote: > > > well, if pygame says this is a locking issue, then it is most likely a > > > locking issue. If you say unlocking the surface did not fix the problem > as > > > you said, I don't have another solution with the current supplied > > > information. > > > > > > We'll likely need to see some code before we can figure out the actual > > > error. > > > > > > Hugo > > > > > > On Fri, Jun 27, 2008 at 8:54 AM, Sibtey Mehdi <[EMAIL PROTECTED]> > > > wrote: > > > > > > > > >> Hi > > >> > > >> I am drawing some graphics page (Text, rect, lines, polygon) on pygame > > >> surface, but when I quickly pressing page up and page down my > application > > >> give the Pygame error "Surfaces must not be locked during blit". > > >> > > >> I have also unlocked the surface by suface.unlock before blitting but it > > >> doesn't solve the problem. > > >> > > >> So please help me out of this problem > > >> > > >> > > >> > > >> Thanks, > > >> > > >> Sibtey > > >> > > >> > > >> > > >> > > > > > > > > >