SurfaceFlinger

SurfaceFlinger डंप, किसी खास समय पर SurfaceFlinger का स्नैपशॉट देते हैं. SurfaceFlinger ट्रेस में, समय के हिसाब से राज्यों का क्रम होता है. इससे यह समझने में मदद मिलती है कि कोई विंडो स्क्रीन पर कैसे दिखती है. साथ ही, यह तय किया जा सकता है कि किसी खास जगह पर टच करने पर, किस विंडो को जवाब मिलेगा. यह जानकारी, इन समस्याओं को हल करने के लिए ज़रूरी है: ऐप्लिकेशन, मेरे टच का जवाब नहीं दे रहा है या वीडियो देखते समय स्क्रीन फ़्लिकर हो रही है.

Winscope का SurfaceFlinger व्यूअर, इस जानकारी को ट्रेस के लिए दिखाता है. यह जानकारी, ऐक्टिव मोड का इस्तेमाल करके इकट्ठा की जाती है. इसके अलावा, यह लेन-देन के ट्रेस से जनरेट होती है. ऐसा तब होता है, जब गड़बड़ी की रिपोर्ट ली जाती है (डिफ़ॉल्ट रूप से, Droidfood कॉन्फ़िगरेशन). साथ ही, यह डंप के लिए भी ऐसा करता है.

ट्रेस इकट्ठा करने के बारे में ज़्यादा जानकारी के लिए, SurfaceFlinger (लेयर) देखें.

SurfaceFlinger ट्रेस का विश्लेषण

पहली इमेज. SurfaceFlinger के ट्रेस का विश्लेषण.

स्क्रीन के बाईं ओर, लेयर का 3D व्यू दिखाया गया है. रेक्ट व्यू में, लेयर की सीमाओं, z-ऑर्डर, ओपैसिटी, रिलेटिव Z, और गोल कोनों को ध्यान में रखा जाता है.

हैरारकी वाले चिप

टैब के बीच वाले सेगमेंट में, लेयर के क्रम को दिखाया जाता है. साथ ही, ज़्यादा जानकारी के लिए चिप भी दिए जाते हैं. जैसे, लेयर के बीच पैरंट-चाइल्ड रिलेशनशिप. यह जानकारी इस तरह से दी जाती है:

  • V: इससे दिखने वाली लेयर की पहचान होती है.
  • RelZParent: यह RelZ चाइल्ड वाली लेयर की पहचान करता है.
  • RelZ: यह RelZParent वाली लेयर की पहचान करता है. साथ ही, उन्हें उनके क्रम के हिसाब से z-ऑर्डर में दिखाता है.
  • एचडब्ल्यूसी: इससे हार्डवेयर कंपोज़र की बनाई गई लेयर की पहचान होती है.
  • जीपीयू: इससे जीपीयू से बनी लेयर की पहचान की जाती है.

स्क्रीन की दाईं ओर, चुनी गई प्रॉपर्टी की सूची दिखती है. साथ ही, उपलब्ध सभी लेयर प्रॉपर्टी का प्रोटो डंप भी दिखता है. प्रोटो डंप सेक्शन की सुविधाओं के बारे में ज़्यादा जानने के लिए, प्रॉपर्टी देखें.

चुनी गई प्रॉपर्टी

डीबग करने की प्रोसेस को आसान बनाने के लिए, SurfaceFlinger व्यूअर में प्रॉपर्टी की एक चुनी गई सूची दी गई है. इसमें सबसे ज़्यादा इस्तेमाल की जाने वाली जानकारी को ज़्यादा व्यवस्थित फ़ॉर्मैट में दिखाया गया है:

SurfaceFlinger प्रॉपर्टी

दूसरी इमेज. SurfaceFlinger प्रॉपर्टी.

इस सूची में ये कैटगरी शामिल हैं.

किसको दिखे

इस ब्लॉक में, लेयर की दृश्यता के बारे में जानकारी होती है. साथ ही, यह भी बताया जाता है कि लेयर क्यों नहीं दिख रही है. इसमें ये चीज़ें शामिल हैं:

फ़्लैग: ये विज़िबिलिटी को कंट्रोल करते हैं. उदाहरण के लिए, HIDDEN और OPAQUE.

दिखाई न देने की वजह: अगर लागू हो, तो इसकी वजह बताएं कि लेयर या सरफेस स्क्रीन पर क्यों नहीं दिख रहा है. उदाहरण के लिए, यह खुद या इसके पैरंट ने छिपाया है या इसमें ड्रॉ करने के लिए कोई बफ़र नहीं है.

ढका हुआ, कुछ हिस्सा ढका हुआ या पूरी तरह से ढका हुआ:

  • छिपा हुआ: इस लेयर को दिखने वाली लेयर के तौर पर कैलकुलेट किया जाता है. हालांकि, इस पर दूसरी अपारदर्शी लेयर बनाई जाती है. इससे मौजूदा लेयर दिखनी बंद हो जाती है. Occluded लेयर के ऊपर वाली लेयर ओपेक है. इसका मतलब है कि या तो उसका OPAQUE फ़्लैग सेट है या पिक्सल फ़ॉर्मैट में ऐल्फ़ा नहीं है या लेयर पर कोई ऐल्फ़ा सेट नहीं है.
  • कुछ हिस्सा छिपा हुआ: मौजूदा लेयर का कुछ हिस्सा दिख रहा है, क्योंकि इसके ऊपर बनाई गई अपारदर्शी लेयर ने इसे पूरी तरह से नहीं ढका है. कुछ हद तक ढकी हुई लेयर के ऊपर वाली लेयर ओपेक है. इसका मतलब है कि OPAQUE फ़्लैग सेट है या पिक्सल फ़ॉर्मैट में ऐल्फ़ा नहीं है या लेयर पर कोई ऐल्फ़ा सेट नहीं है.
  • ढका हुआ: मौजूदा लेयर पूरी तरह या कुछ हद तक, अपारदर्शी लेयर से ढकी हुई है. हालांकि, यह अब भी स्क्रीन पर दिख सकती है. कवर किया गया लेयर के ऊपर वाली लेयर ओपेक नहीं है. इसका मतलब है कि OPAQUE फ़्लैग सेट नहीं है या पिक्सल फ़ॉर्मैट में ऐल्फ़ा शामिल है या लेयर पर ऐल्फ़ा सेट है. हालांकि, SurfaceFlinger ट्रेस के लिए, Covered लेयर को विज़िबल के तौर पर दिखाया जाता है. ऐसा SurfaceFlinger के नीचे मौजूद लेयर के लिए होता है:

    SurfaceFlinger पर कवर की गई लेयर

    तीसरी इमेज. SurfaceFlinger पर कवर की गई लेयर.

ज्यामिति और इफ़ेक्ट

इस सेक्शन में, मौजूदा लेयर के लिए अनुरोध की गई और कैलकुलेट की गई ज्यामिति और इफ़ेक्ट के बारे में बताया गया है.

अनुरोध किया गया सेक्शन, लेयर पर सेट की जा रही प्रॉपर्टी दिखाता है. इसके उलट, कैलकुलेट किया गया सेक्शन में, वे प्रॉपर्टी दिखती हैं जो लेयर पर लागू की जा रही हैं. यह अंतर इसलिए है, क्योंकि ज्यामिति और इफ़ेक्ट को पैरंट एलिमेंट से इनहेरिट किया जाता है और उन्हें हाइरारकी में पास किया जाता है.

दूसरी इमेज में, लेयर कोने का रेडियस को 0 पिक्सल पर सेट करने का अनुरोध करती है. हालांकि, इसकी किसी पैरंट लेयर ने कोने का रेडियस 97.419 पिक्सल पर सेट किया है. यही वैल्यू लागू की गई है:

बफ़र

नीचे दी गई प्रॉपर्टी से यह जानकारी मिलती है कि लेयर में बफ़र है या नहीं, उसका साइज़ क्या है, और उसे कैसे बदला गया है.

  • फ़्रेम नंबर: यह ऐप्लिकेशन बनाने के बाद से बढ़ता हुआ नंबर होता है.
  • डेस्टिनेशन फ़्रेम: इसका इस्तेमाल, बफ़र को डेस्टिनेशन फ़्रेम से तय की गई सीमाओं के हिसाब से स्केल करने के लिए किया जाता है.

हैरारकी

यहां दी गई प्रॉपर्टी से पता चलता है कि लेयर के क्रम को कैसे तय किया जाता है:

  • z-ऑर्डर: लेयर के क्रम में, z-ऑर्डरिंग से यह तय होता है कि किसी लेयर की पोज़िशन, उसकी सिबलिंग लेयर के मुकाबले कहां होगी. ज़ेड-वैल्यू 0 वाली लेयर, अपने पैरंट के ऊपर होती है. अगर कई लेयर एक ही z-वैल्यू शेयर करती हैं, तो ज़्यादा लेयर आईडी वाली लेयर को सबसे ऊपर रखा जाता है.
  • रिलेटिव पैरंट: इससे z-ऑर्डर में रिलेटिव पैरंट लेयर का पता चलता है. चाइल्ड प्रॉपर्टी, अपने रिलेटिव पैरंट से कोई भी प्रॉपर्टी इनहेरिट नहीं करती. हालांकि, इसमें छिपे हुए फ़्लैग को शामिल नहीं किया जाता.

टेक्स्ट लिखो

इन प्रॉपर्टी में, टच किए जा सकने वाले क्षेत्र और फ़ोकस के बारे में जानकारी होती है:

  • आइटम के साथ टच रीजन को काटना: लेयर बाउंड का इस्तेमाल करके, टच किए जा सकने वाले रीजन को काटें.
  • टच रीजन को क्रॉप से बदलें: मौजूदा लेयर के क्रॉप किए गए हिस्से को टच किए जा सकने वाले हिस्से के तौर पर इस्तेमाल करें.