2012-04-17 15 views
38

कुछ समय पहले मैं एक मुद्दा में eglSwapBuffers साथ टकरा निम्न संदेश डिवाइस लॉग में दिखाई देने के कारण फोन ठंड:एंड्रॉयड फ्रीज | ES (।। सीपीयू आंकी जा सकता है फिर से कोशिश कर रहा)

W/SharedBufferStack(1110): waitForCondition(LockCondition) timed out (identity=28, status=0). CPU may be pegged. trying again. 

मैंने पूरे वेब पर इस मुद्दे पर चर्चा देखी है, लेकिन मुझे लगता है कि एकमात्र समाधान eglSwapBuffers के बाद कॉल कर रहा है। हालांकि, इस समाधान के परिणामस्वरूप फ्रेमरेट में 10-20 की गिरावट आई है, जो स्वीकार्य से बहुत दूर है।

मुद्दे खोल दिया गया है और एक पाया जा सकता है here

किसी ने टिप्पणी की है कि वर्ग बनावट का उपयोग कर इस मुद्दे को समाप्त कर दिया। स्क्वायर द्वारा मैंने शुरू में सोचा कि उसका मतलब दो शक्तियों का था लेकिन यह सुनिश्चित करने के बाद कि मैं किसी भी गैर-शक्ति-दो बनावट का उपयोग नहीं कर रहा था और इस मुद्दे से छुटकारा नहीं पा रहा था, मुझे लगता है कि वह वास्तव में मिलान के साथ बनावट का मतलब हो सकता है चौड़ाई और ऊंचाई?

मैं एंड्रॉइड 2.3.3 के साथ एक एचटीसी डिजायर पर परीक्षण कर रहा हूं। किसी ने टिप्पणी की कि भविष्य के संस्करणों को इस समस्या को ठीक करना चाहिए था, लेकिन 2.3.3 इतने सारे उपकरणों पर स्थापित है कि हम इसे नजरअंदाज नहीं कर सकते हैं।

वैसे भी, इस पर किसी के पास कोई विचार है? हम एक शीर्षक शिपिंग के बहुत करीब हैं और यह मुद्दा शेड्यूल को खतरे में डाल रहा है।

+2

शायद यह आपके ड्राइवर से एक बग है। – robermorales

+1

इस व्यक्ति को एक और ग्लैड स्वैपबफर के साथ समस्या है, और टिप्पणियों में एक प्रस्तावित शमन है: http://stackoverflow.com/questions/12939705/sdl-gl-swapbuffers-is-intermittently-slow - इससे मदद मिल सकती है। .. – Yakk

+1

dpsys SurfaceFlinger को आज़माएं और देखें कि eglSwapbuffers() रिपोर्ट ... आपके माप की तुलना करें। – Shark

उत्तर

1

मैं भी इस मुद्दे पर आया, मैं एप्लिकेशन को दोबारा स्थापित करता था और यह मेरे लिए काम करता था। अगर नहीं, तो बस अपने डिवाइस को रीबूट करें। यह समस्या OpenGLES के आंतरिक जारी करने से संबंधित है। आप इस लिंक को देख सकते हैं: Android "cpu may be pegged" bug