Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(90)

Side by Side Diff: ppapi/utility/completion_callback_factory.h

Issue 18611004: PPAPI: Initialize CompletionCallbackWithOutput storage (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: review comments Created 7 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « ppapi/tests/test_utils.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef PPAPI_UTILITY_COMPLETION_CALLBACK_FACTORY_H_ 5 #ifndef PPAPI_UTILITY_COMPLETION_CALLBACK_FACTORY_H_
6 #define PPAPI_UTILITY_COMPLETION_CALLBACK_FACTORY_H_ 6 #define PPAPI_UTILITY_COMPLETION_CALLBACK_FACTORY_H_
7 7
8 #include "ppapi/cpp/completion_callback.h" 8 #include "ppapi/cpp/completion_callback.h"
9 #include "ppapi/utility/completion_callback_factory_thread_traits.h" 9 #include "ppapi/utility/completion_callback_factory_thread_traits.h"
10 10
(...skipping 710 matching lines...) Expand 10 before | Expand all | Expand 10 after
721 }; 721 };
722 722
723 template <typename Traits, typename Output, typename Method> 723 template <typename Traits, typename Output, typename Method>
724 class DispatcherWithOutput0 { 724 class DispatcherWithOutput0 {
725 public: 725 public:
726 typedef Output OutputType; 726 typedef Output OutputType;
727 727
728 DispatcherWithOutput0() 728 DispatcherWithOutput0()
729 : method_(NULL), 729 : method_(NULL),
730 output_() { 730 output_() {
731 Traits::Initialize(&output_);
731 } 732 }
732 DispatcherWithOutput0(Method method) 733 DispatcherWithOutput0(Method method)
733 : method_(method), 734 : method_(method),
734 output_() { 735 output_() {
736 Traits::Initialize(&output_);
735 } 737 }
736 void operator()(T* object, int32_t result) { 738 void operator()(T* object, int32_t result) {
737 // We must call Traits::StorageToPluginArg() even if we don't need to call 739 // We must call Traits::StorageToPluginArg() even if we don't need to call
738 // the callback anymore, otherwise we may leak resource or var references. 740 // the callback anymore, otherwise we may leak resource or var references.
739 if (object) 741 if (object)
740 (object->*method_)(result, Traits::StorageToPluginArg(output_)); 742 (object->*method_)(result, Traits::StorageToPluginArg(output_));
741 else 743 else
742 Traits::StorageToPluginArg(output_); 744 Traits::StorageToPluginArg(output_);
743 } 745 }
744 typename Traits::StorageType* output() { 746 typename Traits::StorageType* output() {
(...skipping 27 matching lines...) Expand all
772 774
773 template <typename Traits, typename Output, typename Method, typename A> 775 template <typename Traits, typename Output, typename Method, typename A>
774 class DispatcherWithOutput1 { 776 class DispatcherWithOutput1 {
775 public: 777 public:
776 typedef Output OutputType; 778 typedef Output OutputType;
777 779
778 DispatcherWithOutput1() 780 DispatcherWithOutput1()
779 : method_(NULL), 781 : method_(NULL),
780 a_(), 782 a_(),
781 output_() { 783 output_() {
784 Traits::Initialize(&output_);
782 } 785 }
783 DispatcherWithOutput1(Method method, const A& a) 786 DispatcherWithOutput1(Method method, const A& a)
784 : method_(method), 787 : method_(method),
785 a_(a), 788 a_(a),
786 output_() { 789 output_() {
790 Traits::Initialize(&output_);
787 } 791 }
788 void operator()(T* object, int32_t result) { 792 void operator()(T* object, int32_t result) {
789 // We must call Traits::StorageToPluginArg() even if we don't need to call 793 // We must call Traits::StorageToPluginArg() even if we don't need to call
790 // the callback anymore, otherwise we may leak resource or var references. 794 // the callback anymore, otherwise we may leak resource or var references.
791 if (object) 795 if (object)
792 (object->*method_)(result, Traits::StorageToPluginArg(output_), a_); 796 (object->*method_)(result, Traits::StorageToPluginArg(output_), a_);
793 else 797 else
794 Traits::StorageToPluginArg(output_); 798 Traits::StorageToPluginArg(output_);
795 } 799 }
796 typename Traits::StorageType* output() { 800 typename Traits::StorageType* output() {
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
833 typename B> 837 typename B>
834 class DispatcherWithOutput2 { 838 class DispatcherWithOutput2 {
835 public: 839 public:
836 typedef Output OutputType; 840 typedef Output OutputType;
837 841
838 DispatcherWithOutput2() 842 DispatcherWithOutput2()
839 : method_(NULL), 843 : method_(NULL),
840 a_(), 844 a_(),
841 b_(), 845 b_(),
842 output_() { 846 output_() {
847 Traits::Initialize(&output_);
843 } 848 }
844 DispatcherWithOutput2(Method method, const A& a, const B& b) 849 DispatcherWithOutput2(Method method, const A& a, const B& b)
845 : method_(method), 850 : method_(method),
846 a_(a), 851 a_(a),
847 b_(b), 852 b_(b),
848 output_() { 853 output_() {
854 Traits::Initialize(&output_);
849 } 855 }
850 void operator()(T* object, int32_t result) { 856 void operator()(T* object, int32_t result) {
851 // We must call Traits::StorageToPluginArg() even if we don't need to call 857 // We must call Traits::StorageToPluginArg() even if we don't need to call
852 // the callback anymore, otherwise we may leak resource or var references. 858 // the callback anymore, otherwise we may leak resource or var references.
853 if (object) 859 if (object)
854 (object->*method_)(result, Traits::StorageToPluginArg(output_), a_, b_); 860 (object->*method_)(result, Traits::StorageToPluginArg(output_), a_, b_);
855 else 861 else
856 Traits::StorageToPluginArg(output_); 862 Traits::StorageToPluginArg(output_);
857 } 863 }
858 typename Traits::StorageType* output() { 864 typename Traits::StorageType* output() {
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
901 class DispatcherWithOutput3 { 907 class DispatcherWithOutput3 {
902 public: 908 public:
903 typedef Output OutputType; 909 typedef Output OutputType;
904 910
905 DispatcherWithOutput3() 911 DispatcherWithOutput3()
906 : method_(NULL), 912 : method_(NULL),
907 a_(), 913 a_(),
908 b_(), 914 b_(),
909 c_(), 915 c_(),
910 output_() { 916 output_() {
917 Traits::Initialize(&output_);
911 } 918 }
912 DispatcherWithOutput3(Method method, const A& a, const B& b, const C& c) 919 DispatcherWithOutput3(Method method, const A& a, const B& b, const C& c)
913 : method_(method), 920 : method_(method),
914 a_(a), 921 a_(a),
915 b_(b), 922 b_(b),
916 c_(c), 923 c_(c),
917 output_() { 924 output_() {
925 Traits::Initialize(&output_);
918 } 926 }
919 void operator()(T* object, int32_t result) { 927 void operator()(T* object, int32_t result) {
920 // We must call Traits::StorageToPluginArg() even if we don't need to call 928 // We must call Traits::StorageToPluginArg() even if we don't need to call
921 // the callback anymore, otherwise we may leak resource or var references. 929 // the callback anymore, otherwise we may leak resource or var references.
922 if (object) { 930 if (object) {
923 (object->*method_)(result, Traits::StorageToPluginArg(output_), 931 (object->*method_)(result, Traits::StorageToPluginArg(output_),
924 a_, b_, c_); 932 a_, b_, c_);
925 } else { 933 } else {
926 Traits::StorageToPluginArg(output_); 934 Traits::StorageToPluginArg(output_);
927 } 935 }
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
989 typename ThreadTraits::Lock lock_; 997 typename ThreadTraits::Lock lock_;
990 998
991 // Protected by the lock. This will get reset when you do CancelAll, for 999 // Protected by the lock. This will get reset when you do CancelAll, for
992 // example. 1000 // example.
993 BackPointer* back_pointer_; 1001 BackPointer* back_pointer_;
994 }; 1002 };
995 1003
996 } // namespace pp 1004 } // namespace pp
997 1005
998 #endif // PPAPI_UTILITY_COMPLETION_CALLBACK_FACTORY_H_ 1006 #endif // PPAPI_UTILITY_COMPLETION_CALLBACK_FACTORY_H_
OLDNEW
« no previous file with comments | « ppapi/tests/test_utils.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698