क्यूटी क्विक एपीआई की कमियों में से एक यह है कि हालांकि एक समर्पित धागे में प्रतिपादन किया जाता है, फिर भी, हमारा एनीमेशन हमेशा एक जीयूआई धागे में काम करता है।
मुख्य एप्लिकेशन स्ट्रीम के बाहर एक एनीमेशन चलाने से एनीमेशन पर संसाधन-गहन कार्यों के प्रभाव को कम करने में काफी फायदा होता है, जो आमतौर पर मुख्य स्ट्रीम को ब्लॉक करते हैं और एनीमेशन देरी को जन्म देते हैं।
तीन मुख्य समस्याएं हैं जो हमें एनीमेशन को एक अलग स्ट्रीम में जाने से रोकती हैं:
- गुण बदलने पर एनिमेशन अपडेट होता है। गुण QObject और मेटा-ऑब्जेक्ट सिस्टम का हिस्सा हैं। थ्रेड्स के साथ पागलपन से बचने के लिए, हमें केवल GUI थ्रेड में इन गुणों को पढ़ने और लिखने की अनुमति है।
- प्रॉपर्टी में अक्सर क्यूएमएल में बाइंडिंग और रिश्ते होते हैं जो कुछ घटनाओं के होने पर जावास्क्रिप्ट कोड को ट्रिगर करते हैं, जिसे जीयूआई थ्रेड में भी निष्पादित किया जाना चाहिए।
- QtQuick लाइब्रेरी में रेंडर चक्र एक GUI थ्रेड से जुड़ा हुआ है, और इसलिए, जब यह थ्रेड ब्लॉक किया जाता है, तो एनीमेशन अपडेट नहीं होता है।
जैसा कि मेरी
पिछली पोस्ट में लिखा गया था,
यह पैच तीसरी समस्या को ठीक करता है, लेकिन QObject तक पहुंचने और जावास्क्रिप्ट को रोकने के मुद्दे को खोलता है।
मेरा सहयोगी, मार्को नीमेल, एक एनीमेशन सिस्टम पर काम कर रहा है जो QObject / QML संचार समस्या को हल करता है। एनिमेशन संपत्ति के साथ उनका काम खेल के मैदान सैंडबॉक्स में है।
यह क्यूटी 5.0 कार्यात्मक नहीं है, लेकिन शायद हम इसे क्यूटी 5.1 में देखेंगे
इसका आनंद लें!