Page 1 sur 1

Linux Fuite mémoire ?

Publié : mar. 12/mai/2009 14:28
par Scrat
Bonjour à tous

Décidement j'ai pas de bol avec PB sous linux a chaque fois que j'essaye un truc ça bug :cry:

Le code est sans interet mais c'est juste pour mettre en evidence le probleme:

Code : Tout sélectionner

UseJPEGImageDecoder()

Enumeration
#Main
#Img
#Tile
EndEnumeration


If OpenWindow(#Main,0,0,400,400,"Test")
ImageGadget(#Img,0,0,256,256,0)

Repeat
Ev=WaitWindowEvent(10)

If LoadImage(#Tile,GetCurrentDirectory()+"img.jpg")
SetGadgetState(#Img,ImageID(#Tile))
If IsImage(#Tile) : FreeImage(#Tile):EndIf
EndIf

Until Ev = #PB_Event_CloseWindow

EndIf
End

Image

En gros on perd un mega/seconde :cry:
Quelqu'un a t'il déja rencontré ce souci ?

Merci
A+

Publié : mar. 12/mai/2009 15:03
par Geo Trouvpatou
Salut.

Testes ça :

Code : Tout sélectionner

UseJPEGImageDecoder()

Enumeration
    #Main
    #Img
    #Tile
EndEnumeration


If OpenWindow(#Main,0,0,400,400,"Test")
    ImageGadget(#Img,0,0,256,256,0)
    
    If LoadImage(#Tile,GetCurrentDirectory()+"img.jpg")
        SetGadgetState(#Img,ImageID(#Tile))
        If IsImage(#Tile) : FreeImage(#Tile) : EndIf
    EndIf
    
    Repeat
        Ev=WaitWindowEvent(10)
        
    Until Ev = #PB_Event_CloseWindow
EndIf
End
Et du coup l'image ne disparaît plus.

Publié : mar. 12/mai/2009 15:12
par Scrat
Salut

Le probleme c'est que j'ai absolument besoin de recharger les images dans la boucle.
Dans le vrai prog les images sont sur un ramdisk, chargée, modifiées, et ensuite affichées.

Le concept fonctionne mais en 3 minutes y'a plus de ram a cause de cette fuite.

Sous Win je me sers de sprite mais sous linux on peut pas utiliser startdrawing sur des sprite avec l'opengl, donc je suis dans le caca.
En plus la lib serial est verollée bref c'est pas la joie sous linux.

A+

Publié : mar. 12/mai/2009 15:17
par Geo Trouvpatou
D'autant que le code que j'ai donné fonctionne sous Linux mais plus sous Windows :cry:

Publié : sam. 22/août/2009 11:42
par Scrat
Pb résolu en 4.40 beta

A+

Publié : sam. 22/août/2009 11:50
par Anonyme
Toujours la fuite avec ton 1° code. sous la 4.40

j'ai mis sa :
If LoadImage(#Tile,GetCurrentDirectory()+"01.bmp") And Imageloaded=0
Imageloaded=1
SetGadgetState(#Img,ImageID(#Tile))
If IsImage(#Tile) : FreeImage(#Tile):EndIf
EndIf
si tu veut changer d'image pendant l'execution du passe ImageLoaded à 0

Publié : mer. 26/août/2009 16:55
par Scrat
Salut

C'est bizarre je n'ai plus de fuite en 4.40 b2.

Peut etre un pb de distrib linux ?
Je suis en Jauntu (Ubuntu) et toi ?

Merci

A+

Publié : mer. 26/août/2009 17:44
par Scrat
Bon ben j'ai plus de fuite en 4.40b2 mais quand j'ouvre un ecran fenêtré j'ai 2 fenetres indpendantes:

La Gui et l'écran.

Je sens que je commence a craquer

A+