diff options
Diffstat (limited to 'lib/wx/src')
-rw-r--r-- | lib/wx/src/gen/wxGraphicsContext.erl | 4 | ||||
-rw-r--r-- | lib/wx/src/gen/wxe_debug.hrl | 10 | ||||
-rw-r--r-- | lib/wx/src/gen/wxe_funcs.hrl | 10 | ||||
-rw-r--r-- | lib/wx/src/wx_object.erl | 51 | ||||
-rw-r--r-- | lib/wx/src/wxe_master.erl | 12 |
5 files changed, 61 insertions, 26 deletions
diff --git a/lib/wx/src/gen/wxGraphicsContext.erl b/lib/wx/src/gen/wxGraphicsContext.erl index 2d0271ac48..5d371ecd7a 100644 --- a/lib/wx/src/gen/wxGraphicsContext.erl +++ b/lib/wx/src/gen/wxGraphicsContext.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2008-2016. All Rights Reserved. +%% Copyright Ericsson AB 2008-2017. All Rights Reserved. %% %% Licensed under the Apache License, Version 2.0 (the "License"); %% you may not use this file except in compliance with the License. @@ -41,8 +41,6 @@ -export([getRenderer/1,isNull/1,parent_class/1]). -export_type([wxGraphicsContext/0]). --deprecated([createLinearGradientBrush/7,createRadialGradientBrush/8]). - %% @hidden parent_class(wxGraphicsObject) -> true; parent_class(_Class) -> erlang:error({badtype, ?MODULE}). diff --git a/lib/wx/src/gen/wxe_debug.hrl b/lib/wx/src/gen/wxe_debug.hrl index 58cb5298e6..533f9f2df0 100644 --- a/lib/wx/src/gen/wxe_debug.hrl +++ b/lib/wx/src/gen/wxe_debug.hrl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2008-2016. All Rights Reserved. +%% Copyright Ericsson AB 2008-2017. All Rights Reserved. %% %% Licensed under the Apache License, Version 2.0 (the "License"); %% you may not use this file except in compliance with the License. @@ -1491,10 +1491,10 @@ wxdebug_table() -> {1637, {wxStaticBox, 'Destroy', undefined}}, {1639, {wxStaticLine, new_2, 2}}, {1640, {wxStaticLine, new_0, 0}}, - {1641, {wxStaticLine, create, 2}}, - {1642, {wxStaticLine, isVertical, 0}}, - {1643, {wxStaticLine, getDefaultSize, 0}}, - {1644, {wxStaticLine, 'Destroy', undefined}}, + {1641, {wxStaticLine, destruct, 0}}, + {1642, {wxStaticLine, create, 2}}, + {1643, {wxStaticLine, isVertical, 0}}, + {1644, {wxStaticLine, getDefaultSize, 0}}, {1647, {wxListBox, new_3, 3}}, {1648, {wxListBox, new_0, 0}}, {1650, {wxListBox, destruct, 0}}, diff --git a/lib/wx/src/gen/wxe_funcs.hrl b/lib/wx/src/gen/wxe_funcs.hrl index af0cee0dcd..14b5545676 100644 --- a/lib/wx/src/gen/wxe_funcs.hrl +++ b/lib/wx/src/gen/wxe_funcs.hrl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2008-2016. All Rights Reserved. +%% Copyright Ericsson AB 2008-2017. All Rights Reserved. %% %% Licensed under the Apache License, Version 2.0 (the "License"); %% you may not use this file except in compliance with the License. @@ -1488,10 +1488,10 @@ -define(wxStaticBox_destroy, 1637). -define(wxStaticLine_new_2, 1639). -define(wxStaticLine_new_0, 1640). --define(wxStaticLine_Create, 1641). --define(wxStaticLine_IsVertical, 1642). --define(wxStaticLine_GetDefaultSize, 1643). --define(wxStaticLine_destroy, 1644). +-define(wxStaticLine_destruct, 1641). +-define(wxStaticLine_Create, 1642). +-define(wxStaticLine_IsVertical, 1643). +-define(wxStaticLine_GetDefaultSize, 1644). -define(wxListBox_new_3, 1647). -define(wxListBox_new_0, 1648). -define(wxListBox_destruct, 1650). diff --git a/lib/wx/src/wx_object.erl b/lib/wx/src/wx_object.erl index 40170b6eb1..42973335b4 100644 --- a/lib/wx/src/wx_object.erl +++ b/lib/wx/src/wx_object.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2008-2016. All Rights Reserved. +%% Copyright Ericsson AB 2008-2017. All Rights Reserved. %% %% Licensed under the Apache License, Version 2.0 (the "License"); %% you may not use this file except in compliance with the License. @@ -39,19 +39,31 @@ %% {wxObject, State} | {wxObject, State, Timeout} | %% ignore | {stop, Reason} %% +%% Asynchronous window event handling: <br/> +%% handle_event(#wx{}, State) should return <br/> +%% {noreply, State} | {noreply, State, Timeout} | {stop, Reason, State} +%% +%% The user module can export the following callback functions: +%% %% handle_call(Msg, {From, Tag}, State) should return <br/> %% {reply, Reply, State} | {reply, Reply, State, Timeout} | %% {noreply, State} | {noreply, State, Timeout} | %% {stop, Reason, Reply, State} %% -%% Asynchronous window event handling: <br/> -%% handle_event(#wx{}, State) should return <br/> -%% {noreply, State} | {noreply, State, Timeout} | {stop, Reason, State} +%% handle_cast(Msg, State) should return <br/> +%% {noreply, State} | {noreply, State, Timeout} | +%% {stop, Reason, State} +%% +%% If the above are not exported but called, the wx_object process will crash. +%% The user module can also export: %% %% Info is message e.g. {'EXIT', P, R}, {nodedown, N}, ... <br/> %% handle_info(Info, State) should return , ... <br/> %% {noreply, State} | {noreply, State, Timeout} | {stop, Reason, State} -%% +%% +%% If a message is sent to the wx_object process when handle_info is not +%% exported, the message will be dropped and ignored. +%% %% When stop is returned in one of the functions above with Reason = %% normal | shutdown | Term, terminate(State) is called. It lets the %% user module clean up, it is always called when server terminates or @@ -135,6 +147,8 @@ {'noreply', NewState :: term()} | {'noreply', NewState :: term(), timeout() | 'hibernate'} | {'stop', Reason :: term(), NewState :: term()}. +-callback handle_sync_event(Request :: #wx{}, Ref :: #wx_ref{}, State :: term()) -> + ok. -callback terminate(Reason :: ('normal' | 'shutdown' | {'shutdown', term()} | term()), State :: term()) -> @@ -143,6 +157,9 @@ Extra :: term()) -> {'ok', NewState :: term()} | {'error', Reason :: term()}. +-optional_callbacks( + [handle_call/3, handle_cast/2, handle_info/2, + handle_sync_event/3, terminate/2, code_change/3]). %% System exports -export([system_continue/3, @@ -426,6 +443,7 @@ dispatch(Msg = #wx{}, Mod, State) -> Mod:handle_event(Msg, State); dispatch(Info, Mod, State) -> Mod:handle_info(Info, State). + %% @hidden handle_msg({'$gen_call', From, Msg}, Parent, Name, State, Mod) -> case catch Mod:handle_call(Msg, From, State) of @@ -447,8 +465,12 @@ handle_msg({'$gen_call', From, Msg}, Parent, Name, State, Mod) -> Other -> handle_common_reply(Other, Name, Msg, Mod, State, []) end; handle_msg(Msg, Parent, Name, State, Mod) -> - Reply = (catch dispatch(Msg, Mod, State)), - handle_no_reply(Reply, Parent, Name, Msg, Mod, State, []). + case catch dispatch(Msg, Mod, State) of + {'EXIT', {undef, [{Mod, handle_info, [_,_], _}|_]}} -> + handle_no_reply({noreply, State}, Parent, Name, Msg, Mod, State, []); + Reply -> + handle_no_reply(Reply, Parent, Name, Msg, Mod, State, []) + end. %% @hidden handle_msg({'$gen_call', From, Msg}, Parent, Name, State, Mod, Debug) -> @@ -528,8 +550,8 @@ system_terminate(Reason, _Parent, Debug, [Name, State, Mod, _Time]) -> %% @hidden system_code_change([Name, State, Mod, Time], _Module, OldVsn, Extra) -> case catch Mod:code_change(OldVsn, State, Extra) of - {ok, NewState} -> {ok, [Name, NewState, Mod, Time]}; - Else -> Else + {ok, NewState} -> {ok, [Name, NewState, Mod, Time]}; + Else -> Else end. %%----------------------------------------------------------------- @@ -560,7 +582,7 @@ print_event(Dev, Event, Name) -> %%% --------------------------------------------------- %% @hidden terminate(Reason, Name, Msg, Mod, State, Debug) -> - case catch Mod:terminate(Reason, State) of + case try_terminate(Mod, Reason, State) of {'EXIT', R} -> error_info(R, Name, Msg, State, Debug), exit(R); @@ -577,6 +599,15 @@ terminate(Reason, Name, Msg, Mod, State, Debug) -> exit(Reason) end end. + +try_terminate(Mod, Reason, State) -> + case erlang:function_exported(Mod, terminate, 2) of + true -> + catch Mod:terminate(Reason, State); + _ -> + ok + end. + %% @hidden error_info(_Reason, application_controller, _Msg, _State, _Debug) -> ok; diff --git a/lib/wx/src/wxe_master.erl b/lib/wx/src/wxe_master.erl index e17a3327ac..ce859b3eb3 100644 --- a/lib/wx/src/wxe_master.erl +++ b/lib/wx/src/wxe_master.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2008-2016. All Rights Reserved. +%% Copyright Ericsson AB 2008-2017. All Rights Reserved. %% %% Licensed under the Apache License, Version 2.0 (the "License"); %% you may not use this file except in compliance with the License. @@ -82,8 +82,14 @@ init_port(SilentStart) -> %% Initalizes the opengl library %%-------------------------------------------------------------------- init_opengl() -> - GLLib = wxe_util:wxgl_dl(), - wxe_util:call(?WXE_INIT_OPENGL, <<(list_to_binary(GLLib))/binary, 0:8>>). + case get(wx_init_opengl) of + true -> {ok, "already initialized"}; + _ -> + GLLib = wxe_util:wxgl_dl(), + Res = wxe_util:call(?WXE_INIT_OPENGL, <<(list_to_binary(GLLib))/binary, 0:8>>), + element(1, Res) =:= ok andalso put(wx_init_opengl, true), + Res + end. %%-------------------------------------------------------------------- %% Fetch early messages, hack to get start up args on mac |