diff options
Diffstat (limited to 'indra/newview')
| -rw-r--r-- | indra/newview/llappviewerwin32.cpp | 41 | ||||
| -rw-r--r-- | indra/newview/lluilistener.cpp | 28 | ||||
| -rw-r--r-- | indra/newview/lluilistener.h | 1 | 
3 files changed, 61 insertions, 9 deletions
diff --git a/indra/newview/llappviewerwin32.cpp b/indra/newview/llappviewerwin32.cpp index d328567a0e..2fbec6e49e 100644 --- a/indra/newview/llappviewerwin32.cpp +++ b/indra/newview/llappviewerwin32.cpp @@ -301,23 +301,44 @@ void create_console()  	// redirect unbuffered STDOUT to the console  	l_std_handle = (long)GetStdHandle(STD_OUTPUT_HANDLE);  	h_con_handle = _open_osfhandle(l_std_handle, _O_TEXT); -	fp = _fdopen( h_con_handle, "w" ); -	*stdout = *fp; -	setvbuf( stdout, NULL, _IONBF, 0 ); +	if (h_con_handle == -1) +	{ +		llwarns << "create_console() failed to open stdout handle" << llendl; +	} +	else +	{ +		fp = _fdopen( h_con_handle, "w" ); +		*stdout = *fp; +		setvbuf( stdout, NULL, _IONBF, 0 ); +	}  	// redirect unbuffered STDIN to the console  	l_std_handle = (long)GetStdHandle(STD_INPUT_HANDLE);  	h_con_handle = _open_osfhandle(l_std_handle, _O_TEXT); -	fp = _fdopen( h_con_handle, "r" ); -	*stdin = *fp; -	setvbuf( stdin, NULL, _IONBF, 0 ); +	if (h_con_handle == -1) +	{ +		llwarns << "create_console() failed to open stdin handle" << llendl; +	} +	else +	{ +		fp = _fdopen( h_con_handle, "r" ); +		*stdin = *fp; +		setvbuf( stdin, NULL, _IONBF, 0 ); +	}  	// redirect unbuffered STDERR to the console  	l_std_handle = (long)GetStdHandle(STD_ERROR_HANDLE);  	h_con_handle = _open_osfhandle(l_std_handle, _O_TEXT); -	fp = _fdopen( h_con_handle, "w" ); -	*stderr = *fp; -	setvbuf( stderr, NULL, _IONBF, 0 ); +	if (h_con_handle == -1) +	{ +		llwarns << "create_console() failed to open stderr handle" << llendl; +	} +	else +	{ +		fp = _fdopen( h_con_handle, "w" ); +		*stderr = *fp; +		setvbuf( stderr, NULL, _IONBF, 0 ); +	}  }  LLAppViewerWin32::LLAppViewerWin32(const char* cmd_line) : @@ -363,8 +384,10 @@ bool LLAppViewerWin32::initLogging()  void LLAppViewerWin32::initConsole()  { +	llinfos << "Test before create_console" << llendl;  	// pop up debug console  	create_console(); +	llinfos << "Test after create_console" << llendl;  	return LLAppViewer::initConsole();  } diff --git a/indra/newview/lluilistener.cpp b/indra/newview/lluilistener.cpp index 4d6eac4958..6b2cd71d40 100644 --- a/indra/newview/lluilistener.cpp +++ b/indra/newview/lluilistener.cpp @@ -34,9 +34,11 @@  // std headers  // external library headers  // other Linden headers +#include "llui.h" // getRootView(), resolvePath()  #include "lluictrl.h"  #include "llerror.h" +  LLUIListener::LLUIListener():      LLEventAPI("UI",                 "LLUICtrl::CommitCallbackRegistry listener.\n" @@ -47,6 +49,12 @@ LLUIListener::LLUIListener():          "as if from a user gesture on a menu -- or a button click.",          &LLUIListener::call,          LLSD().with("function", LLSD())); + +    add("getValue", +        "For the UI control identified by the path in [\"path\"], return the control's\n" +        "current value as [\"value\"] reply.", +        &LLUIListener::getValue, +        LLSDMap("path", LLSD())("reply", LLSD()));  }  void LLUIListener::call(const LLSD& event) const @@ -71,3 +79,23 @@ void LLUIListener::call(const LLSD& event) const          (*func)(NULL, event["parameter"]);      }  } + +void LLUIListener::getValue(const LLSD&event) const +{ +    LLSD reply = LLSD::emptyMap(); + +    const LLView* root = LLUI::getRootView(); +    const LLView* view = LLUI::resolvePath(root, event["path"].asString()); +    const LLUICtrl* ctrl(dynamic_cast<const LLUICtrl*>(view)); + +    if (ctrl)  +    { +        reply["value"] = ctrl->getValue(); +    } +    else +    { +        // *TODO: ??? return something indicating failure to resolve +    } +     +    sendReply(reply, event); +} diff --git a/indra/newview/lluilistener.h b/indra/newview/lluilistener.h index e7847f01e8..08724024dc 100644 --- a/indra/newview/lluilistener.h +++ b/indra/newview/lluilistener.h @@ -41,6 +41,7 @@ public:  private:      void call(const LLSD& event) const; +    void getValue(const LLSD&event) const;  };  #endif /* ! defined(LL_LLUILISTENER_H) */  | 
