summaryrefslogtreecommitdiffstats
path: root/include/utils/RefBase.h
Commit message (Collapse)AuthorAgeFilesLines
* am 4c818dc8: am 56b28f6b: Merge "RefBase: make Renamer destructor virtual"Elliott Hughes2014-08-061-2/+4
|\ | | | | | | | | * commit '4c818dc800d97e2fdee0337a0e9736099d90cc47': RefBase: make Renamer destructor virtual
| * RefBase: make Renamer destructor virtualUkri Niemimuukko2014-08-061-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch makes the Renamer class destructor virtual and fixes the incorrect constructor initialization list ordering. These issues and related compiler warnings have been suppressed by the build system which uses the gcc –isystem command line option, unless a project explicitly adds the include the path system/core/include to Android.mk and uses the templates. Change-Id: Iff76a655eb8bd547adfe994c7315a005e98aed41 Signed-off-by: Ukri Niemimuukko <ukri.niemimuukko@intel.com> Signed-off-by: Mingwei Shi <mingwei.shi@intel.com> Signed-off-by: Yong Yao <yong.yao@intel.com>
* | Add VirtualLightRefBaseJohn Reck2014-05-091-0/+7
|/ | | | Change-Id: I040db87d9e87ba0584e7e5bdd72f0c319a522fa1
* Fix a crasher with RefBase debugging and vectors of wp<>Mathias Agopian2013-07-301-39/+56
| | | | | | | | | | | | | | | | | | | | | | | background: we have some code to fix-up the IDs of references when using RefBase's DEBUG_REFS when those refs are managed by arrays wp<> or sp<> (this is because wp<> / sp<> don't have a trivial ctor when DEBUG_REFS is enabled, and Vector treats them as trivial for obvious performance reasons) this is complicated by the fact that we don't want to have to recompile everything when enabling DEBUG_REFs (i.e.: the Vector code cannot know wheter it's enabled or not for its template stuff). problem: there was a bug in the fix-up code for wp<> which was trying to access the weakref_impl from the RefBase* however, this was moronic since RefBase could have been destroyed if there wasn't any more strong refs -- and this happned. Instead we need to get the weakref_impl directly from the wp<> Change-Id: Ie16e334204205fdbff142acb9faff8479a78450b
* utils: fix warnings for unused parametersIgor Murashkin2013-07-301-2/+2
| | | | Change-Id: Ibfb755a30ba2923669060fe0aed019beecbe38a1
* Add traits to common utils data structures.Jeff Brown2013-07-301-0/+1
| | | | | | | | | | | Many of our basic data structures are trivially movable using memcpy() even if they are not trivially constructable, destructable or copyable. It's worth taking advantage of this *ahem* trait. Adding trivial_move_trait to String16 reduces appt running time on frameworks/base/core/res by 40%! Change-Id: I630a1a027e2d0ded96856e4ca042ea82906289fe
* fix a memory leak and memory corruption in RefBaseMathias Agopian2013-07-301-3/+7
| | | | | | | | | | | | | | | | | we would leak a weakref_impl if a RefBase was never incWeak()'ed. there was also a dangling pointer that would cause memory corruption and double-delete when a custom destroyer was used to delay the execution of ~RefBase. it turns out that the custom destroyer feature caused most of the problems, so it's now gone. The only client was SurfaceFlinger who now handles things on its own. RefBase is essentially back its "gingerbread" state, but the code was slightly cleaned-up. Bug: 5151207, 5084978 Change-Id: Id6ef1d707f96d96366f75068f77b30e0ce2722a5
* Revert "merge various SF fixes from gingerbread to honeycomb-mr2" (DO NOT MERGE)Mathias Agopian2013-07-301-1/+1
| | | | | | | | | | | | Also revert all dependent changes: This reverts commit 8e18668d14adf601cbe5973030c310ec23d88461. This reverts commit 69b4587bfbb3e98f793959d9123340360fa233a2. This reverts commit a9c9a4baf24700e8817d47d8ea8da1742caea0b5. This reverts commit 2c0042b666a969091c931614f2fc0dce2f1cfac8. This reverts commit f6c8206735e7e078461e5f2aef6e1a1446fdd075. This reverts commit 24855c09173a6caaec7dcedd0c2d7ce15121d39b. Change-Id: I33e699640f3f59e42fa03c99a9a1b7af0d27d4d8
* revert surfaceflinger leak fix as it uncovered a crasher on xoom (DO NOT MERGE)Mathias Agopian2013-07-301-14/+0
| | | | | | This reverts commit 52a43990880b27808bcf562afcc4209d34728e6e. Change-Id: I1856a48f863b051395b8091ddfd1e01292fa1b1e
* Revert "revert surfaceflinger leak fix as it uncovered a crasher on xoom"Mathias Agopian2013-07-301-0/+14
| | | | | | This reverts commit af6edba59e250adbdfa5b3c3be134f70d8c38a16. Change-Id: I7793d3ca8a4d20a2b188364f47854328ab5f586d
* revert surfaceflinger leak fix as it uncovered a crasher on xoomMathias Agopian2013-07-301-14/+0
| | | | | Bug: 4600244 Change-Id: Ia68ebf0f243a051ff6a21b3863e3e5d259bbf7ac
* may fix build on some version of gccMathias Agopian2013-07-301-0/+1
| | | | Change-Id: Ia88787c0432ec84d51fe505fd6a2b6f98ebe8f33
* fix RefBase so it retains binary-compatibility with gingerbread (DO NOT MERGE)Mathias Agopian2013-07-301-7/+13
| | | | | Bug: 4595257 Change-Id: I1db83149107d7dab1f0b7e73c684e0ff82e17e62
* RefBase subclasses can now decide how they want to be destroyed.Mathias Agopian2013-07-301-2/+8
| | | | | | | This adds a destroy() virtual on RefBase which sublasses can implement. destroy() is called in lieu of the destructor whenthe last strong ref goes away.
* Fix a wp<> bug where the owner ID would be wrongMathias Agopian2013-07-301-2/+5
| | | | | | | this was introduced recently. we make sure to use the correct owner id (the sp) instead of the wp. Change-Id: I78fdc6ec0c2d3e687278b70442d74d1924b512a2
* Fix some issues with RefBase debugging.Mathias Agopian2013-07-301-176/+101
| | | | | | | | | | | | | | | | | | | | | | | | | | First slipt sp<> out of RefBase into StrongPointer.h so it can be reused more easily and to make it clear that it doesn't require RefBase. Note: the rest of the change only affects the system when DEBUG_REFS is enabled. The main problem we fix here is that the owner id associated with each reference could get out of date when a sp<> or wp<> was moved, for instance when they're used in a Vector< >. We fix this issue by calling into RefBase::moveReferences from a template specialization for sp<TYPE> and wp<TYPE> of the type helpers. RefBase::moveReferences() has then a chance to update the owner ids. There is a little bit of trickery to implement this generically in RefBase, where we need to use a templatized functor that can turn a sp<TYPE>* casted to a void* into a RefBase*. Introduced a new debug option DEBUG_REFS_FATAL_SANITY_CHECKS currently set to 0 by default as there seem to be an issue with sp<ANativeWindow> which trips the sanity checks. Change-Id: I4825b21c8ec47d4a0ef35d760760ae0c9cdfbd7f
* Remove RefBase.h dependency on TextOutput.hMathias Agopian2013-07-301-5/+6
| | | | Change-Id: I72cd6b98ef82b4868fe1c8ec87862cf43fb4ee73
* fix [3408713] Dialog window invisible sometimesMathias Agopian2013-07-301-14/+48
| | | | | | | | | | | | weak pointer comparison operators were implemented wrong, they were using the internal "unsafe" pointer. We could end up with two "equal" weak pointer pointing to different objects. this caused KeyedVector keyed by weak pointer to work incorrectly, in turn causing a window that just got added to a list to be immediately removed. Change-Id: Ib191010c39aafa9229109e4211f6c3b2b2f9696d
* Fix a bug in sp<> and wp<> which could cause memory corruptionsMathias Agopian2013-07-301-12/+20
| | | | | | | | | | | when assigning a smart pointer to another one, we need to make sure to read all the data we need from the right-hand-side reference (the assignee) before we decRef the assigned. This bug would cause linked-list of smart-pointers to fail miserably. Change-Id: Ibb554c15fddf909f7737c632b7c80322e80ea93f
* update surfaceflinger, libui and libagl to the new gralloc apiMathias Agopian2013-07-301-0/+4
| | | | | | | | | | | | | | - Currently the lock/unlock path is naive and is done for each drawing operation (glDrawElements and glDrawArrays). this should be improved eventually. - factor all the lock/unlock code in SurfaceBuffer. - fixed "showupdate" so it works even when we don't have preserving eglSwapBuffers(). - improved the situation with the dirty-region and fixed a problem that caused GL apps to not update. - make use of LightRefBase() where needed, instead of duplicating its implementation - add LightRefBase::getStrongCount() - renamed EGLNativeWindowSurface.cpp to FramebufferNativeWindow.cpp - disabled copybits test, since it clashes with the new gralloc api - Camera/Video will be fixed later when we rework the overlay apis
* auto import from //depot/cupcake/@135843The Android Open Source Project2013-07-301-0/+550
|
* auto import from //depot/cupcake/@135843The Android Open Source Project2013-07-301-550/+0
|
* auto import from //branches/cupcake/...@125939The Android Open Source Project2013-07-301-0/+24
|
* Initial ContributionThe Android Open Source Project2013-07-301-0/+526