IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants FMX Delphi Discussion :

Firemonkey (Delphi XE2) - Canvas vs controls -- soucis majeur?


Sujet :

Composants FMX Delphi

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 72
    Par défaut Firemonkey (Delphi XE2) - Canvas vs controls -- soucis majeur?
    Bonjour,

    Je bute sur un gros soucis et je souhaiterai de tout cœur que ce soit moi qui rate l'évidence, parce qu'autrement, FireMonkey a un défaut de conception majeur, osons le mot!

    Le soucis est qu'il y a conflit entre les opérations que vous effectuez sur les canvas (d'un TImage par exemple) et le rafraichissement régulier qu'effectue Firemonkey sur les contrôles visuels.

    J'ai bien entendu essayé de contourner le problème, mais je bute. Ma théorie est la suivante. FM fonctionne via DirectX en mode fenêtré. DirectX n'est pas threadsafe (de ce que j'en sais, mais quasi certitude). Le rafraichissement des controles visuels de FM se fait donc forcément dans le thread principal. Les opérations sur les canvas aussi du coup, puisque DirectX force à utiliser le thread principal.

    Il n'y a apparemment aucune synchronisation entre le moment où FM déclenche les rafraichissement des contrôles visuels et la fin de la mise à jour des Canvas. Aussi régulièrement on a un conflit, qui est résolu par la mise en attente des Canvas, ce qui provoque visuellement un fort ralentissement visuel de leurs opérations.

    Naïvement je pensais que le EndScene à effectuer sur le Canvas ou bien le BitmapChanged était en quelque sorte la synchronisation avec le reste des contrôles. Alternativement il faudrait que l'on puisse indiquer à FM de rafraichir les anims des contrôles uniquement quand on le dit, sur un go général.

    En tout cas, le résultat est catastrophique. Si vous pensiez faire une application graphique ou un jeu en Firemonkey, vous pouvez oublier. Si je ne me trompe pas (et qu'il n'y a aucun moyen de contourner ce gros soucis), alors FM à un gros gros problème!

    nb: j'ai essayé avec ou sans timer threadé, c'est encore pire...

    Vous voulez la preuve? la voici, petite appli de test qui parle d'elle même


    Version avec EXECUTABLE:
    http://www.mediafire.com/?f9ojw4jx8rj5zuh

    La version sans EXE en PJ de ce message.
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Firemonkey (Delphi XE2) Application.ExeName
    Par Pocus dans le forum Composants FMX
    Réponses: 4
    Dernier message: 26/04/2019, 16h30
  2. Delphi XE2 FireMonkey : impression ?
    Par Invité dans le forum Débuter
    Réponses: 6
    Dernier message: 12/04/2012, 12h19
  3. Firemonkey (Delphi XE2) exemple basique ne tournant pas
    Par Pocus dans le forum Composants FMX
    Réponses: 7
    Dernier message: 13/09/2011, 09h48
  4. Première présentation de Delphi XE2
    Par John Colibri dans le forum EDI
    Réponses: 53
    Dernier message: 04/09/2011, 11h28
  5. Réponses: 3
    Dernier message: 03/05/2006, 15h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo