On Thu, 31 Jan 2019 08:55:12 -0800 Mike Blumenkrantz <michael.blumenkra...@gmail.com> said:
git aster build break b0rk with this ceommit: In file included from ../src/bindings/cxx/eo_cxx/Eo.hh:11, from ../src/lib/efl/Efl.hh:8, from ../src/bindings/cxx/../../lib/elementary/Elementary.hh:17, from ../src/tests/elementary_cxx/cxx_compile_test.cc:7: ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh: In instantiation of ‘T efl::eolian::convert_to_return(U&) [with T = const efl::eina::value_view; U = const _Eina_Value*]’: src/bindings/cxx/efl_ui_win.eo.impl.hh:90:127: required from here ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:806:33: error: no matching function for call to ‘convert_to_return(const _Eina_Value*&, efl::eolian::impl::tag<const _Eina_Value*, const efl::eina::value_view, false>)’ return impl::convert_to_return(object, impl::tag<U, T>{}); ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:625:3: note: candidate: ‘template<class T> T efl::eolian::impl::convert_to_return(T, efl::eolian::impl::tag<T, T>)’ T convert_to_return(T value, tag<T, T>) ^~~~~~~~~~~~~~~~~ ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:625:3: note: template argument deduction/substitution failed: ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:806:33: note: deduced conflicting types for parameter ‘T’ (‘const _Eina_Value*’ and ‘const efl::eina::value_view’) return impl::convert_to_return(object, impl::tag<U, T>{}); ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:630:3: note: candidate: ‘template<class U, class T> T efl::eolian::impl::convert_to_return(U, efl::eolian::impl::tag<const U, T>)’ T convert_to_return(U const value, tag<U const, T>) ^~~~~~~~~~~~~~~~~ ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:630:3: note: template argument deduction/substitution failed: ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:806:33: note: types ‘const U’ and ‘const _Eina_Value*’ have incompatible cv-qualifiers return impl::convert_to_return(object, impl::tag<U, T>{}); ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:635:4: note: candidate: ‘template<class T> T& efl::eolian::impl::convert_to_return(T*, efl::eolian::impl::tag<T*, T&>)’ T& convert_to_return(T* value, tag<T*, T&>) ^~~~~~~~~~~~~~~~~ ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:635:4: note: template argument deduction/substitution failed: ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:806:33: note: mismatched types ‘T ’ and ‘const efl::eina::value_view’ return impl::convert_to_return(object, impl::tag<U, T>{}); ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:640:3: note: candidate: ‘template<class T> T efl::eolian::impl::convert_to_return(Eo*, efl::eolian::impl::tag<_Eo_Opaque*, T>, typename std::enable_if<efl::eo::is_eolian_object<T>::value, void>::type*)’ T convert_to_return(Eo* value, tag<Eo*, T>, typename std::enable_if< eo::is_eolian_object<T>::value>::type* = 0) ^~~~~~~~~~~~~~~~~ ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:640:3: note: template argument deduction/substitution failed: ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:806:33: note: types ‘_Eo_Opaque’ and ‘const _Eina_Value’ have incompatible cv-qualifiers return impl::convert_to_return(object, impl::tag<U, T>{}); ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:646:3: note: candidate: ‘template<class T> T efl::eolian::impl::convert_to_return(const Eo*, efl::eolian::impl::tag<const _Eo_Opaque*, T>, typename std::enable_if<efl::eo::is_eolian_object<T>::value, void>::type*)’ T convert_to_return(Eo const* value, tag<Eo const*, T>, typename std::enable_if<eo::is_eolian_object<T>::value>::type* = 0) ^~~~~~~~~~~~~~~~~ ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:646:3: note: template argument deduction/substitution failed: ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:806:33: note: mismatched types ‘const _Eo_Opaque’ and ‘const _Eina_Value’ return impl::convert_to_return(object, impl::tag<U, T>{}); ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:651:15: note: candidate: ‘template<class T> efl::eina::list<T> efl::eolian::impl::convert_to_return(Eina_List*, efl::eolian::impl::tag<_Eina_List*, efl::eina::list<T> >)’ eina::list<T> convert_to_return(Eina_List* value, tag<Eina_List*, eina::list<T>>) ^~~~~~~~~~~~~~~~~ ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:651:15: note: template argument deduction/substitution failed: ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:806:33: note: types ‘_Eina_List’ and ‘const _Eina_Value’ have incompatible cv-qualifiers return impl::convert_to_return(object, impl::tag<U, T>{}); ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:656:15: note: candidate: ‘template<class T> efl::eina::list<T> efl::eolian::impl::convert_to_return(const Eina_List*, efl::eolian::impl::tag<const _Eina_List*, efl::eina::list<T> >)’ eina::list<T> convert_to_return(Eina_List const* value, tag<Eina_List const*, eina::list<T>>) ^~~~~~~~~~~~~~~~~ ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:656:15: note: template argument deduction/substitution failed: ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:806:33: note: mismatched types ‘const _Eina_List’ and ‘const _Eina_Value’ return impl::convert_to_return(object, impl::tag<U, T>{}); ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:661:21: note: candidate: ‘template<class T> efl::eina::range_list<T> efl::eolian::impl::convert_to_return(Eina_List*, efl::eolian::impl::tag<_Eina_List*, efl::eina::range_list<T> >)’ eina::range_list<T> convert_to_return(Eina_List* value, tag<Eina_List*, eina::range_list<T>>) ^~~~~~~~~~~~~~~~~ ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:661:21: note: template argument deduction/substitution failed: ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:806:33: note: types ‘_Eina_List’ and ‘const _Eina_Value’ have incompatible cv-qualifiers return impl::convert_to_return(object, impl::tag<U, T>{}); ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:666:21: note: candidate: ‘template<class T> efl::eina::range_list<T> efl::eolian::impl::convert_to_return(const Eina_List*, efl::eolian::impl::tag<const _Eina_List*, efl::eina::range_list<T> >)’ eina::range_list<T> convert_to_return(Eina_List const* value, tag<Eina_List const*, eina::range_list<T>>) ^~~~~~~~~~~~~~~~~ ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:666:21: note: template argument deduction/substitution failed: ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:806:33: note: mismatched types ‘const _Eina_List’ and ‘const _Eina_Value’ return impl::convert_to_return(object, impl::tag<U, T>{}); ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:671:16: note: candidate: ‘template<class T> efl::eina::array<T> efl::eolian::impl::convert_to_return(Eina_Array*, efl::eolian::impl::tag<_Eina_Array*, efl::eina::array<T> >)’ eina::array<T> convert_to_return(Eina_Array* value, tag<Eina_Array*, eina::array<T>>) ^~~~~~~~~~~~~~~~~ ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:671:16: note: template argument deduction/substitution failed: ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:806:33: note: types ‘_Eina_Array’ and ‘const _Eina_Value’ have incompatible cv-qualifiers return impl::convert_to_return(object, impl::tag<U, T>{}); ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:676:16: note: candidate: ‘template<class T> efl::eina::array<T> efl::eolian::impl::convert_to_return(const Eina_Array*, efl::eolian::impl::tag<const _Eina_Array*, efl::eina::array<T> >)’ eina::array<T> convert_to_return(Eina_Array const* value, tag<Eina_Array const*, eina::array<T>>) ^~~~~~~~~~~~~~~~~ ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:676:16: note: template argument deduction/substitution failed: ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:806:33: note: mismatched types ‘const _Eina_Array’ and ‘const _Eina_Value’ return impl::convert_to_return(object, impl::tag<U, T>{}); ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:681:22: note: candidate: ‘template<class T> efl::eina::range_array<T> efl::eolian::impl::convert_to_return(Eina_Array*, efl::eolian::impl::tag<_Eina_Array*, efl::eina::range_array<T> >)’ eina::range_array<T> convert_to_return(Eina_Array* value, tag<Eina_Array*, eina::range_array<T>>) ^~~~~~~~~~~~~~~~~ ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:681:22: note: template argument deduction/substitution failed: ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:806:33: note: types ‘_Eina_Array’ and ‘const _Eina_Value’ have incompatible cv-qualifiers return impl::convert_to_return(object, impl::tag<U, T>{}); ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:686:22: note: candidate: ‘template<class T> efl::eina::range_array<T> efl::eolian::impl::convert_to_return(const Eina_Array*, efl::eolian::impl::tag<const _Eina_Array*, efl::eina::range_array<T> >)’ eina::range_array<T> convert_to_return(Eina_Array const* value, tag<Eina_Array const*, eina::range_array<T>>) ^~~~~~~~~~~~~~~~~ ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:686:22: note: template argument deduction/substitution failed: ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:806:33: note: mismatched types ‘const _Eina_Array’ and ‘const _Eina_Value’ return impl::convert_to_return(object, impl::tag<U, T>{}); ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:692:19: note: candidate: ‘template<class T> efl::eina::iterator<T> efl::eolian::impl::convert_to_return(Eina_Iterator*, efl::eolian::impl::tag<_Eina_Iterator*, efl::eina::iterator<T> >)’ eina::iterator<T> convert_to_return(Eina_Iterator* value, tag<Eina_Iterator*, eina::iterator<T>>) ^~~~~~~~~~~~~~~~~ ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:692:19: note: template argument deduction/substitution failed: ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:806:33: note: types ‘_Eina_Iterator’ and ‘const _Eina_Value’ have incompatible cv-qualifiers return impl::convert_to_return(object, impl::tag<U, T>{}); ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:697:19: note: candidate: ‘template<class T> efl::eina::accessor<T> efl::eolian::impl::convert_to_return(Eina_Accessor*, efl::eolian::impl::tag<_Eina_Accessor*, efl::eina::accessor<T> >)’ eina::accessor<T> convert_to_return(Eina_Accessor* value, tag<Eina_Accessor*, eina::accessor<T>>) ^~~~~~~~~~~~~~~~~ ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:697:19: note: template argument deduction/substitution failed: ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:806:33: note: types ‘_Eina_Accessor’ and ‘const _Eina_Value’ have incompatible cv-qualifiers return impl::convert_to_return(object, impl::tag<U, T>{}); ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:702:25: note: candidate: ‘efl::eina::value efl::eolian::impl::convert_to_return(Eina_Value*, efl::eolian::impl::tag<_Eina_Value*, efl::eina::value>)’ inline efl::eina::value convert_to_return(Eina_Value* value, tag<Eina_Value*, efl::eina::value>) ^~~~~~~~~~~~~~~~~ ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:702:25: note: no known conversion for argument 2 from ‘tag<const _Eina_Value*,const efl::eina::value_view,[...]>’ to ‘tag<_Eina_Value*,efl::eina::value,[...]>’ ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:706:30: note: candidate: ‘efl::eina::value_view efl::eolian::impl::convert_to_return(Eina_Value*, efl::eolian::impl::tag<_Eina_Value*, efl::eina::value_view>)’ inline efl::eina::value_view convert_to_return(Eina_Value* value, tag<Eina_Value*, efl::eina::value_view>) ^~~~~~~~~~~~~~~~~ ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:706:30: note: no known conversion for argument 2 from ‘tag<const _Eina_Value*,const efl::eina::value_view,[...]>’ to ‘tag<_Eina_Value*,efl::eina::value_view,[...]>’ ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:711:3: note: candidate: ‘template<class T, class U> T efl::eolian::impl::convert_to_return(U*, efl::eolian::impl::tag<T, U*>, typename std::enable_if<(efl::eolian::impl::is_range<T>::value || efl::eolian::impl::is_container<T>::value)>::type*)’ T convert_to_return(U* value, tag<T, U*>, typename std::enable_if<is_range<T>::value || is_container<T>::value>::type* = 0) ^~~~~~~~~~~~~~~~~ ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:711:3: note: template argument deduction/substitution failed: ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:806:33: note: mismatched types ‘U ’ and ‘const efl::eina::value_view’ return impl::convert_to_return(object, impl::tag<U, T>{}); ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:716:26: note: candidate: ‘efl::eina::stringshare efl::eolian::impl::convert_to_return(Eina_Stringshare*, efl::eolian::impl::tag<const char*, efl::eina::stringshare>)’ inline eina::stringshare convert_to_return(const Eina_Stringshare* value, tag<const char*, efl::eina::stringshare>) ^~~~~~~~~~~~~~~~~ ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:716:26: note: no known conversion for argument 1 from ‘const _Eina_Value*’ to ‘Eina_Stringshare*’ {aka ‘const char ’} ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:721:3: note: candidate: ‘template<class T> T efl::eolian::impl::convert_to_return(const char**, efl::eolian::impl::tag<const char**, T>, typename std::enable_if<std::is_same<T, efl::eina::basic_string_view<char>*>::value>::type*)’ T convert_to_return(const char** /*value*/, tag<const char**, T>, typename std::enable_if<std::is_same<T, efl::eina::string_view*>::value>::type* = 0) ^~~~~~~~~~~~~~~~~ ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:721:3: note: template argument deduction/substitution failed: ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:806:33: note: mismatched types ‘const char*’ and ‘const _Eina_Value’ return impl::convert_to_return(object, impl::tag<U, T>{}); ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:725:26: note: candidate: ‘efl::eina::string_view efl::eolian::impl::convert_to_return(const char*, efl::eolian::impl::tag<const char*, efl::eina::basic_string_view<char> >)’ inline eina::string_view convert_to_return(const char* value, tag<const char*, efl::eina::string_view>) ^~~~~~~~~~~~~~~~~ ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:725:26: note: no known conversion for argument 1 from ‘const _Eina_Value*’ to ‘const char*’ ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:729:26: note: candidate: ‘efl::eina::string_view efl::eolian::impl::convert_to_return(const char**, efl::eolian::impl::tag<const char**, efl::eina::basic_string_view<char> >)’ inline eina::string_view convert_to_return(const char** value, tag<const char**, efl::eina::string_view>) ^~~~~~~~~~~~~~~~~ ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:729:26: note: no known conversion for argument 1 from ‘const _Eina_Value*’ to ‘const char**’ ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:734:20: note: candidate: ‘template<class S> std::__cxx11::string efl::eolian::impl::convert_to_return(const char*, efl::eolian::impl::tag<const char*, S>, typename std::enable_if<std::is_same<typename std::remove_cv<_Tp>::type, std::__cxx11::basic_string<char> >::value>::type*)’ inline std::string convert_to_return(const char* value, tag<const char*, S> ^~~~~~~~~~~~~~~~~ ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:734:20: note: template argument deduction/substitution failed: ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:806:33: note: mismatched types ‘const char’ and ‘const _Eina_Value’ return impl::convert_to_return(object, impl::tag<U, T>{}); ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:747:20: note: candidate: ‘template<class S> std::__cxx11::string efl::eolian::impl::convert_to_return(const char**, efl::eolian::impl::tag<const char**, T>, typename std::enable_if<std::is_same<typename std::remove_cv<_Tp>::type, std::__cxx11::basic_string<char> >::value>::type*)’ inline std::string convert_to_return(const char** value, tag<const char**, S> ^~~~~~~~~~~~~~~~~ ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:747:20: note: template argument deduction/substitution failed: ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:806:33: note: mismatched types ‘const char*’ and ‘const _Eina_Value’ return impl::convert_to_return(object, impl::tag<U, T>{}); ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:761:20: note: candidate: ‘template<class S> std::__cxx11::string efl::eolian::impl::convert_to_return(char*, efl::eolian::impl::tag<char*, S>, typename std::enable_if<std::is_same<typename std::remove_cv<_Tp>::type, std::__cxx11::basic_string<char> >::value>::type*)’ inline std::string convert_to_return(char* value, tag<char*, S> ^~~~~~~~~~~~~~~~~ ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:761:20: note: template argument deduction/substitution failed: ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:806:33: note: mismatched types ‘char’ and ‘const _Eina_Value’ return impl::convert_to_return(object, impl::tag<U, T>{}); ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:774:20: note: candidate: ‘template<class S> std::__cxx11::string efl::eolian::impl::convert_to_return(char**, efl::eolian::impl::tag<char**, S>, typename std::enable_if<std::is_same<typename std::remove_cv<_Tp>::type, std::__cxx11::basic_string<char> >::value>::type*)’ inline std::string convert_to_return(char** value, tag<char**, S> ^~~~~~~~~~~~~~~~~ ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:774:20: note: template argument deduction/substitution failed: ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:806:33: note: mismatched types ‘char*’ and ‘const _Eina_Value’ return impl::convert_to_return(object, impl::tag<U, T>{}); ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:787:13: note: candidate: ‘bool efl::eolian::impl::convert_to_return(Eina_Bool, efl::eolian::impl::tag<unsigned char, bool>)’ inline bool convert_to_return(Eina_Bool value, tag<Eina_Bool, bool>) ^~~~~~~~~~~~~~~~~ ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:787:13: note: no known conversion for argument 2 from ‘tag<const _Eina_Value*,const efl::eina::value_view,[...]>’ to ‘tag<unsigned char,bool,[...]>’ ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:792:23: note: candidate: ‘template<class T, class D> std::unique_ptr<_Tp, _Dp> efl::eolian::impl::convert_to_return(T*, efl::eolian::impl::tag<T*, std::unique_ptr<_Tp, _Dp> >)’ std::unique_ptr<T, D> convert_to_return(T* value, tag<T*, std::unique_ptr<T, D>>) ^~~~~~~~~~~~~~~~~ ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:792:23: note: template argument deduction/substitution failed: ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:806:33: note: types ‘std::unique_ptr<_Tp, _Dp>’ and ‘const efl::eina::value_view’ have incompatible cv-qualifiers return impl::convert_to_return(object, impl::tag<U, T>{}); ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:797:23: note: candidate: ‘template<class T, class U, class D> std::unique_ptr<T, D> efl::eolian::impl::convert_to_return(U*, efl::eolian::impl::tag<U*, std::unique_ptr<T, D> >)’ std::unique_ptr<T, D> convert_to_return(U* value, tag<U*, std::unique_ptr<T, D>>) ^~~~~~~~~~~~~~~~~ ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:797:23: note: template argument deduction/substitution failed: ../src/bindings/cxx/eo_cxx/eo_cxx_interop.hh:806:33: note: types ‘std::unique_ptr<T, D>’ and ‘const efl::eina::value_view’ have incompatible cv-qualifiers return impl::convert_to_return(object, impl::tag<U, T>{}); ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ [3334/3335] Linking target src/bin/elementary/elementary_test. ninja: build stopped: subcommand failed. ninja 268.04s user 38.56s system 671% cpu 45.630 total make: *** [Makefile:9: efl.done] Error 1 > zmike pushed a commit to branch master. > > http://git.enlightenment.org/core/efl.git/commit/?id=9b129b5c7a9b74b2261066b55037c7891f10c12d > > commit 9b129b5c7a9b74b2261066b55037c7891f10c12d > Author: Mike Blumenkrantz <zm...@samsung.com> > Date: Thu Jan 31 11:54:54 2019 -0500 > > efl_ui_win: add 'exit_on_all_windows_closed' class property and unit test > > Summary: > this property causes the main loop to exit with the passed exit code > when the standby event is triggered > > @feature > ref T5494 > > Reviewers: cedric, bu5hm4n, segfaultxavi > > Reviewed By: cedric, bu5hm4n, segfaultxavi > > Subscribers: segfaultxavi, bu5hm4n, #reviewers, #committers > > Tags: #efl > > Maniphest Tasks: T5494 > > Differential Revision: https://phab.enlightenment.org/D7594 > --- > src/lib/elementary/efl_ui_win.c | 24 +++++++++++++++++++++++- > src/lib/elementary/efl_ui_win.eo | 12 ++++++++++++ > src/tests/elementary/elm_test_win.c | 32 ++++++++++++++++++++++++++++++++ > 3 files changed, 67 insertions(+), 1 deletion(-) > > diff --git a/src/lib/elementary/efl_ui_win.c b/src/lib/elementary/efl_ui_win.c > index 8c0543dc11..a54e4520b6 100644 > --- a/src/lib/elementary/efl_ui_win.c > +++ b/src/lib/elementary/efl_ui_win.c > @@ -360,6 +360,7 @@ static const Elm_Action key_actions[] = { > > Eina_List *_elm_win_list = NULL; > int _elm_win_deferred_free = 0; > +static Eina_Value exit_on_all_windows_closed; > > static Eina_Bool _elm_win_throttle_ok = EINA_FALSE; > static int _elm_win_count = 0; > @@ -2991,7 +2992,11 @@ _efl_ui_win_efl_canvas_group_group_del(Eo *obj, > Efl_Ui_Win_Data *sd) _elm_win_flush_cache_and_exit(obj); > } > if (!_elm_win_list) > - efl_event_callback_call(efl_app_main_get(EFL_APP_CLASS), > EFL_APP_EVENT_STANDBY, NULL); > + { > + efl_event_callback_call(efl_app_main_get(EFL_APP_CLASS), > EFL_APP_EVENT_STANDBY, NULL); > + if (eina_value_type_get(&exit_on_all_windows_closed)) > + efl_loop_quit(efl_loop_get(obj), exit_on_all_windows_closed); > + } > } > > EOLIAN static void > @@ -6240,6 +6245,23 @@ _dbus_menu_set(Eina_Bool dbus_connect, void *data) > //sd->deferred_resize_job = EINA_TRUE; > } > > +EOLIAN static const Eina_Value * > +_efl_ui_win_exit_on_all_windows_closed_get(const Eo *obj EINA_UNUSED, void > *pd EINA_UNUSED) +{ > + return &exit_on_all_windows_closed; > +} > + > +EOLIAN static void > +_efl_ui_win_exit_on_all_windows_closed_set(Eo *obj EINA_UNUSED, void *pd > EINA_UNUSED, const Eina_Value *exit_code) +{ > + const Eina_Value_Type *type = eina_value_type_get(exit_code); > + > + if (type) > + eina_value_copy(exit_code, &exit_on_all_windows_closed); > + else > + eina_value_flush(&exit_on_all_windows_closed); > +} > + > EOLIAN static void > _efl_ui_win_maximized_set(Eo *obj EINA_UNUSED, Efl_Ui_Win_Data *sd, > Eina_Bool maximized) { > diff --git a/src/lib/elementary/efl_ui_win.eo > b/src/lib/elementary/efl_ui_win.eo index 7594ee6edf..5f5085e107 100644 > --- a/src/lib/elementary/efl_ui_win.eo > +++ b/src/lib/elementary/efl_ui_win.eo > @@ -657,6 +657,18 @@ class Efl.Ui.Win extends Efl.Ui.Widget implements > Efl.Canvas.Scene, Efl.Access.W This will try and delete all the windows in > the stack that are above the window.]] > } > + @property exit_on_all_windows_closed @class { > + [[Enable quitting the main loop when all windows are closed. > + > + When set, the main loop will quit with the passed exit code once > all windows have been closed. + > + The Eina.Value passed should be $EMPTY to unset this state or an > int value to be > + used as the exit code. > + ]] > + values { > + exit_code: const(any_value_ptr); [[The exit code to use when > exiting]] > + } > + } > activate { > [[Activate a window object. > > diff --git a/src/tests/elementary/elm_test_win.c > b/src/tests/elementary/elm_test_win.c index 207e777d57..2b0ec55b2c 100644 > --- a/src/tests/elementary/elm_test_win.c > +++ b/src/tests/elementary/elm_test_win.c > @@ -39,6 +39,14 @@ _timer_delete_request_cb(void *data) > return EINA_FALSE; > } > > +static Eina_Bool > +_timer_del_window_cb(void *data) > +{ > + Eo *win = (Eo*) data; > + evas_object_del(win); > + return EINA_FALSE; > +} > + > static Eina_Bool > _timer_hide_window_cb(void *data) > { > @@ -154,6 +162,29 @@ EFL_START_TEST(elm_win_autohide) > } > EFL_END_TEST > > +EFL_START_TEST (elm_win_test_app_exit_on_windows_close) > +{ > + Eo *win = win_add(NULL, "win", ELM_WIN_BASIC); > + Eo *app = efl_app_main_get(EFL_APP_CLASS); > + Eina_Value val, *exit_val; > + int code; > + > + val = eina_value_int_init(66); > + efl_ui_win_exit_on_all_windows_closed_set(win, &val); > + efl_gfx_entity_visible_set(win, EINA_TRUE); > + > + Eina_Bool fail_flag = EINA_FALSE; > + ecore_timer_add(_timeout1, _timer_del_window_cb, win); > + ecore_timer_add(_timeout_fail, _timer_fail_flag_cb, &fail_flag); > + > + exit_val = efl_loop_begin(efl_loop_get(win)); > + ck_assert(eina_value_int_get(exit_val, &code)); > + ck_assert_int_eq(code, 66); > + efl_ui_win_exit_on_all_windows_closed_set(app, &EINA_VALUE_EMPTY); > +} > +EFL_END_TEST > + > + > EFL_START_TEST(elm_win_policy_quit_last_window_hidden) > { > elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_HIDDEN); > @@ -405,6 +436,7 @@ void elm_test_win(TCase *tc) > tcase_add_test(tc, elm_atspi_role_get); > tcase_add_test(tc, elm_atspi_component_screen_position); > tcase_add_test(tc, elm_win_policy_quit_last_window_hidden); > + tcase_add_test(tc, elm_win_test_app_exit_on_windows_close); > tcase_add_test(tc, efl_ui_win_multi_touch_inputs); > #ifdef HAVE_ELEMENTARY_X > tcase_add_test(tc, elm_win_autohide); > > -- > > -- ------------- Codito, ergo sum - "I code, therefore I am" -------------- Carsten Haitzler - ras...@rasterman.com _______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel