Merge branch 'DRTVWR-501-maint' of https://bitbucket.org/lindenlab/viewer
commit
5cb11c6214
|
|
@ -41,8 +41,8 @@
|
|||
//=========================================================================
|
||||
namespace
|
||||
{
|
||||
LLTrace::BlockTimerStatHandle FTM_BLEND_WATERVALUES("Blending Water Environment");
|
||||
LLTrace::BlockTimerStatHandle FTM_UPDATE_WATERVALUES("Update Water Environment");
|
||||
LLTrace::BlockTimerStatHandle FTM_BLEND_WATERVALUES("Blending Water Environment Day");
|
||||
LLTrace::BlockTimerStatHandle FTM_UPDATE_WATERVALUES("Update Water Environment Day");
|
||||
|
||||
template<typename T>
|
||||
inline T get_wrapping_distance(T begin, T end)
|
||||
|
|
|
|||
|
|
@ -1967,6 +1967,8 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
|
|||
|
||||
LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLongPtr( h_wnd, GWLP_USERDATA );
|
||||
|
||||
bool debug_window_proc = gDebugWindowProc || debugLoggingEnabled("Window");
|
||||
|
||||
|
||||
if (NULL != window_imp)
|
||||
{
|
||||
|
|
@ -2009,9 +2011,9 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
|
|||
|
||||
case WM_DEVICECHANGE:
|
||||
window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_DEVICECHANGE");
|
||||
if (gDebugWindowProc)
|
||||
if (debug_window_proc)
|
||||
{
|
||||
LL_INFOS() << " WM_DEVICECHANGE: wParam=" << w_param
|
||||
LL_INFOS("Window") << " WM_DEVICECHANGE: wParam=" << w_param
|
||||
<< "; lParam=" << l_param << LL_ENDL;
|
||||
}
|
||||
if (w_param == DBT_DEVNODES_CHANGED || w_param == DBT_DEVICEARRIVAL)
|
||||
|
|
@ -2067,7 +2069,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
|
|||
BOOL activating = (BOOL) w_param;
|
||||
BOOL minimized = window_imp->getMinimized();
|
||||
|
||||
if (gDebugWindowProc)
|
||||
if (debug_window_proc)
|
||||
{
|
||||
LL_INFOS("Window") << "WINDOWPROC ActivateApp "
|
||||
<< " activating " << S32(activating)
|
||||
|
|
@ -2118,7 +2120,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
|
|||
// JC - I'm not sure why, but if we don't report that we handled the
|
||||
// WM_ACTIVATE message, the WM_ACTIVATEAPP messages don't work
|
||||
// properly when we run fullscreen.
|
||||
if (gDebugWindowProc)
|
||||
if (debug_window_proc)
|
||||
{
|
||||
LL_INFOS("Window") << "WINDOWPROC Activate "
|
||||
<< " activating " << S32(activating)
|
||||
|
|
@ -2190,7 +2192,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
|
|||
|
||||
window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_KEYDOWN");
|
||||
{
|
||||
if (gDebugWindowProc)
|
||||
if (debug_window_proc)
|
||||
{
|
||||
LL_INFOS("Window") << "Debug WindowProc WM_KEYDOWN "
|
||||
<< " key " << S32(w_param)
|
||||
|
|
@ -2216,7 +2218,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
|
|||
window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_KEYUP");
|
||||
LL_RECORD_BLOCK_TIME(FTM_KEYHANDLER);
|
||||
|
||||
if (gDebugWindowProc)
|
||||
if (debug_window_proc)
|
||||
{
|
||||
LL_INFOS("Window") << "Debug WindowProc WM_KEYUP "
|
||||
<< " key " << S32(w_param)
|
||||
|
|
@ -2232,9 +2234,9 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
|
|||
}
|
||||
case WM_IME_SETCONTEXT:
|
||||
window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_IME_SETCONTEXT");
|
||||
if (gDebugWindowProc)
|
||||
if (debug_window_proc)
|
||||
{
|
||||
LL_INFOS() << "WM_IME_SETCONTEXT" << LL_ENDL;
|
||||
LL_INFOS("Window") << "WM_IME_SETCONTEXT" << LL_ENDL;
|
||||
}
|
||||
if (LLWinImm::isAvailable() && window_imp->mPreeditor)
|
||||
{
|
||||
|
|
@ -2245,7 +2247,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
|
|||
|
||||
case WM_IME_STARTCOMPOSITION:
|
||||
window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_IME_STARTCOMPOSITION");
|
||||
if (gDebugWindowProc)
|
||||
if (debug_window_proc)
|
||||
{
|
||||
LL_INFOS() << "WM_IME_STARTCOMPOSITION" << LL_ENDL;
|
||||
}
|
||||
|
|
@ -2258,7 +2260,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
|
|||
|
||||
case WM_IME_ENDCOMPOSITION:
|
||||
window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_IME_ENDCOMPOSITION");
|
||||
if (gDebugWindowProc)
|
||||
if (debug_window_proc)
|
||||
{
|
||||
LL_INFOS() << "WM_IME_ENDCOMPOSITION" << LL_ENDL;
|
||||
}
|
||||
|
|
@ -2270,7 +2272,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
|
|||
|
||||
case WM_IME_COMPOSITION:
|
||||
window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_IME_COMPOSITION");
|
||||
if (gDebugWindowProc)
|
||||
if (debug_window_proc)
|
||||
{
|
||||
LL_INFOS() << "WM_IME_COMPOSITION" << LL_ENDL;
|
||||
}
|
||||
|
|
@ -2283,7 +2285,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
|
|||
|
||||
case WM_IME_REQUEST:
|
||||
window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_IME_REQUEST");
|
||||
if (gDebugWindowProc)
|
||||
if (debug_window_proc)
|
||||
{
|
||||
LL_INFOS() << "WM_IME_REQUEST" << LL_ENDL;
|
||||
}
|
||||
|
|
@ -2314,7 +2316,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
|
|||
// characters. We just need to take care of surrogate pairs sent as two WM_CHAR's
|
||||
// by ourselves. It is not that tough. -- Alissa Sabre @ SL
|
||||
window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_CHAR");
|
||||
if (gDebugWindowProc)
|
||||
if (debug_window_proc)
|
||||
{
|
||||
LL_INFOS("Window") << "Debug WindowProc WM_CHAR "
|
||||
<< " key " << S32(w_param)
|
||||
|
|
@ -2757,7 +2759,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
|
|||
S32 width = S32( LOWORD(l_param) );
|
||||
S32 height = S32( HIWORD(l_param) );
|
||||
|
||||
if (gDebugWindowProc)
|
||||
if (debug_window_proc)
|
||||
{
|
||||
BOOL maximized = ( w_param == SIZE_MAXIMIZED );
|
||||
BOOL restored = ( w_param == SIZE_RESTORED );
|
||||
|
|
@ -2832,7 +2834,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
|
|||
}
|
||||
|
||||
case WM_SETFOCUS:
|
||||
if (gDebugWindowProc)
|
||||
if (debug_window_proc)
|
||||
{
|
||||
LL_INFOS("Window") << "WINDOWPROC SetFocus" << LL_ENDL;
|
||||
}
|
||||
|
|
@ -2856,7 +2858,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
|
|||
return 0;
|
||||
|
||||
case WM_KILLFOCUS:
|
||||
if (gDebugWindowProc)
|
||||
if (debug_window_proc)
|
||||
{
|
||||
LL_INFOS("Window") << "WINDOWPROC KillFocus" << LL_ENDL;
|
||||
}
|
||||
|
|
@ -2888,7 +2890,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
|
|||
break;
|
||||
default:
|
||||
{
|
||||
if (gDebugWindowProc)
|
||||
if (debug_window_proc)
|
||||
{
|
||||
LL_INFOS("Window") << "Unhandled windows message code: " << U32(u_msg) << LL_ENDL;
|
||||
}
|
||||
|
|
@ -2898,7 +2900,11 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
|
|||
|
||||
window_imp->mCallbacks->handlePauseWatchdog(window_imp);
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
// (NULL == window_imp)
|
||||
LL_DEBUGS("Window") << "No window implementation to handle message with, message code: " << U32(u_msg) << LL_ENDL;
|
||||
}
|
||||
|
||||
// pass unhandled messages down to Windows
|
||||
return DefWindowProc(h_wnd, u_msg, w_param, l_param);
|
||||
|
|
|
|||
|
|
@ -1347,41 +1347,24 @@ void LLIMProcessing::processNewMessage(LLUUID from_id,
|
|||
}
|
||||
else // IM_TASK_INVENTORY_OFFERED
|
||||
{
|
||||
if (offline == IM_OFFLINE && session_id.isNull() && aux_id.notNull() && binary_bucket_size > sizeof(S8)* 5)
|
||||
if (sizeof(S8) != binary_bucket_size)
|
||||
{
|
||||
// cap received offline message
|
||||
std::string str_bucket = ll_safe_string((char*)binary_bucket, binary_bucket_size);
|
||||
typedef boost::tokenizer<boost::char_separator<char> > tokenizer;
|
||||
boost::char_separator<char> sep("|", "", boost::keep_empty_tokens);
|
||||
tokenizer tokens(str_bucket, sep);
|
||||
tokenizer::iterator iter = tokens.begin();
|
||||
|
||||
info->mType = (LLAssetType::EType)(atoi((*(iter++)).c_str()));
|
||||
// Note There is more elements in 'tokens' ...
|
||||
|
||||
info->mObjectID = LLUUID::null;
|
||||
info->mFromObject = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (sizeof(S8) != binary_bucket_size)
|
||||
{
|
||||
LL_WARNS("Messaging") << "Malformed inventory offer from object" << LL_ENDL;
|
||||
delete info;
|
||||
break;
|
||||
}
|
||||
info->mType = (LLAssetType::EType) binary_bucket[0];
|
||||
info->mObjectID = LLUUID::null;
|
||||
info->mFromObject = TRUE;
|
||||
LL_WARNS("Messaging") << "Malformed inventory offer from object" << LL_ENDL;
|
||||
delete info;
|
||||
break;
|
||||
}
|
||||
info->mType = (LLAssetType::EType) binary_bucket[0];
|
||||
info->mObjectID = LLUUID::null;
|
||||
info->mFromObject = TRUE;
|
||||
}
|
||||
|
||||
info->mIM = dialog;
|
||||
info->mFromID = from_id;
|
||||
info->mFromGroup = from_group;
|
||||
info->mTransactionID = session_id;
|
||||
info->mFolderID = gInventory.findCategoryUUIDForType(LLFolderType::assetTypeToFolderType(info->mType));
|
||||
|
||||
info->mTransactionID = session_id.notNull() ? session_id : aux_id;
|
||||
|
||||
info->mFromName = name;
|
||||
info->mDesc = message;
|
||||
info->mHost = sender;
|
||||
|
|
@ -2232,7 +2215,7 @@ void LLIMProcessing::requestOfflineMessagesCoro(std::string url)
|
|||
return;
|
||||
}
|
||||
|
||||
if (gAgent.getRegion() == NULL)
|
||||
if (!gAgent.getRegion())
|
||||
{
|
||||
LL_WARNS("Messaging") << "Region null while attempting to load messages." << LL_ENDL;
|
||||
return;
|
||||
|
|
@ -2240,8 +2223,8 @@ void LLIMProcessing::requestOfflineMessagesCoro(std::string url)
|
|||
|
||||
LL_INFOS("Messaging") << "Processing offline messages." << LL_ENDL;
|
||||
|
||||
std::vector<U8> data;
|
||||
S32 binary_bucket_size = 0;
|
||||
// std::vector<U8> data;
|
||||
// S32 binary_bucket_size = 0;
|
||||
LLHost sender = gAgent.getRegionHost();
|
||||
|
||||
LLSD::array_iterator i = messages.beginArray();
|
||||
|
|
@ -2250,38 +2233,47 @@ void LLIMProcessing::requestOfflineMessagesCoro(std::string url)
|
|||
{
|
||||
const LLSD &message_data(*i);
|
||||
|
||||
LLVector3 position(message_data["local_x"].asReal(), message_data["local_y"].asReal(), message_data["local_z"].asReal());
|
||||
data = message_data["binary_bucket"].asBinary();
|
||||
binary_bucket_size = data.size(); // message_data["count"] always 0
|
||||
U32 parent_estate_id = message_data.has("parent_estate_id") ? message_data["parent_estate_id"].asInteger() : 1; // 1 - IMMainland
|
||||
|
||||
// Todo: once dirtsim-369 releases, remove one of the int/str options
|
||||
BOOL from_group;
|
||||
if (message_data["from_group"].isInteger())
|
||||
/* RIDER: Many fields in this message are using a '_' rather than the standard '-'. This
|
||||
* should be changed but would require tight coordination with the simulator.
|
||||
*/
|
||||
LLVector3 position;
|
||||
if (message_data.has("position"))
|
||||
{
|
||||
from_group = message_data["from_group"].asInteger();
|
||||
position.setValue(message_data["position"]);
|
||||
}
|
||||
else
|
||||
{
|
||||
from_group = message_data["from_group"].asString() == "Y";
|
||||
position.set(message_data["local_x"].asReal(), message_data["local_y"].asReal(), message_data["local_z"].asReal());
|
||||
}
|
||||
|
||||
LLIMProcessing::processNewMessage(message_data["from_agent_id"].asUUID(),
|
||||
from_group,
|
||||
std::vector<U8> bin_bucket;
|
||||
if (message_data.has("binary_bucket"))
|
||||
{
|
||||
bin_bucket = message_data["binary_bucket"].asBinary();
|
||||
}
|
||||
else
|
||||
{
|
||||
bin_bucket.push_back(0);
|
||||
}
|
||||
|
||||
LLIMProcessing::processNewMessage(
|
||||
message_data["from_agent_id"].asUUID(),
|
||||
message_data["from_group"].asBoolean(),
|
||||
message_data["to_agent_id"].asUUID(),
|
||||
IM_OFFLINE,
|
||||
(EInstantMessage)message_data["dialog"].asInteger(),
|
||||
LLUUID::null, // session id, since there is none we can only use frienship/group invite caps
|
||||
message_data["timestamp"].asInteger(),
|
||||
message_data["from_agent_name"].asString(),
|
||||
message_data["message"].asString(),
|
||||
parent_estate_id,
|
||||
static_cast<U8>(message_data["offline"].asInteger()),
|
||||
static_cast<EInstantMessage>(message_data["dialog"].asInteger()),
|
||||
message_data["transaction-id"].asUUID(),
|
||||
static_cast<U32>(message_data["timestamp"].asInteger()),
|
||||
message_data["from_name"].asString(),
|
||||
(message_data.has("message")) ? message_data["message"].asString() : std::string(),
|
||||
static_cast<U32>((message_data.has("parent_estate_id")) ? message_data["parent_estate_id"].asInteger() : 1), // 1 - IMMainland
|
||||
message_data["region_id"].asUUID(),
|
||||
position,
|
||||
&data[0],
|
||||
binary_bucket_size,
|
||||
bin_bucket.data(),
|
||||
bin_bucket.size(),
|
||||
sender,
|
||||
message_data["asset_id"].asUUID()); // not necessarily an asset
|
||||
message_data["asset_id"].asUUID());
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -162,6 +162,10 @@ void display_startup()
|
|||
{
|
||||
LLViewerDynamicTexture::updateAllInstances();
|
||||
}
|
||||
else
|
||||
{
|
||||
LL_DEBUGS("Window") << "First display_startup frame" << LL_ENDL;
|
||||
}
|
||||
|
||||
LLGLState::checkStates();
|
||||
LLGLState::checkTextureChannels();
|
||||
|
|
|
|||
Loading…
Reference in New Issue