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

Reply via email to