diff options
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/llinventory/llsettingsdaycycle.cpp | 4 | ||||
| -rw-r--r-- | indra/llwindow/llwindowwin32.cpp | 42 | ||||
| -rw-r--r-- | indra/newview/llimprocessing.cpp | 106 | ||||
| -rw-r--r-- | indra/newview/llviewerdisplay.cpp | 4 | 
4 files changed, 92 insertions, 64 deletions
| diff --git a/indra/llinventory/llsettingsdaycycle.cpp b/indra/llinventory/llsettingsdaycycle.cpp index 457e5b7478..a687fd840d 100644 --- a/indra/llinventory/llsettingsdaycycle.cpp +++ b/indra/llinventory/llsettingsdaycycle.cpp @@ -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) diff --git a/indra/llwindow/llwindowwin32.cpp b/indra/llwindow/llwindowwin32.cpp index d3cf1d49e4..7783505c27 100644 --- a/indra/llwindow/llwindowwin32.cpp +++ b/indra/llwindow/llwindowwin32.cpp @@ -1948,6 +1948,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)  	{ @@ -1990,9 +1992,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) @@ -2048,7 +2050,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) @@ -2099,7 +2101,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)  @@ -2171,7 +2173,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)  @@ -2197,7 +2199,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)  @@ -2213,9 +2215,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)  			{ @@ -2226,7 +2228,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;  			} @@ -2239,7 +2241,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;  			} @@ -2251,7 +2253,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;  			} @@ -2264,7 +2266,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;  			} @@ -2295,7 +2297,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)  @@ -2738,7 +2740,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 ); @@ -2813,7 +2815,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;  			} @@ -2822,7 +2824,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;  			} @@ -2854,7 +2856,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;  				} @@ -2864,7 +2866,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); diff --git a/indra/newview/llimprocessing.cpp b/indra/newview/llimprocessing.cpp index 0d2553fd55..85f0120481 100644 --- a/indra/newview/llimprocessing.cpp +++ b/indra/newview/llimprocessing.cpp @@ -857,41 +857,41 @@ 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; +                    info->mType = (LLAssetType::EType) binary_bucket[0];                  }                  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; +                    /*RIDER*/ // The previous version of the protocol returned the wrong binary bucket... we  +                    // still might be able to figure out the type... even though the offer is not retrievable.  + +                    // Should be safe to remove once DRTSIM-451 fully deploys +                    std::string str_bucket(reinterpret_cast<char *>(binary_bucket)); +                    std::string str_type(str_bucket.substr(0, str_bucket.find('|'))); + +                    std::stringstream type_convert(str_type); + +                    S32 type; +                    type_convert >> type; + +                    // We could try AT_UNKNOWN which would be more accurate, but that causes an auto decline +                    info->mType = static_cast<LLAssetType::EType>(type); +                    // Don't break in the case of a bad binary bucket.  Go ahead and show the  +                    // accept/decline popup even though it will not do anything. +                    LL_WARNS("Messaging") << "Malformed inventory offer from object, type might be " << info->mType << LL_ENDL;                  } +                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; @@ -1569,7 +1569,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; @@ -1577,8 +1577,6 @@ void LLIMProcessing::requestOfflineMessagesCoro(std::string url)      LL_INFOS("Messaging") << "Processing offline messages." << LL_ENDL; -    std::vector<U8> data; -    S32 binary_bucket_size = 0;      LLHost sender = gAgent.getRegionHost();      LLSD::array_iterator i = messages.beginArray(); @@ -1587,38 +1585,58 @@ 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 +        /* 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")) +        { +            position.setValue(message_data["position"]); +        } +        else +        { +            position.set(message_data["local_x"].asReal(), message_data["local_y"].asReal(), message_data["local_z"].asReal()); +        } -        // Todo: once dirtsim-369 releases, remove one of the int/str options -        BOOL from_group; -        if (message_data["from_group"].isInteger()) +        std::vector<U8> bin_bucket; +        if (message_data.has("binary_bucket"))          { -            from_group = message_data["from_group"].asInteger(); +            bin_bucket = message_data["binary_bucket"].asBinary();          }          else          { -            from_group = message_data["from_group"].asString() == "Y"; +            bin_bucket.push_back(0);          } -        LLIMProcessing::processNewMessage(message_data["from_agent_id"].asUUID(), +        // Todo: once drtsim-451 releases, remove the string option
 +        BOOL from_group;
 +        if (message_data["from_group"].isInteger())
 +        {
 +            from_group = message_data["from_group"].asInteger();
 +        }
 +        else
 +        {
 +            from_group = message_data["from_group"].asString() == "Y";
 +        } + +        LLIMProcessing::processNewMessage( +            message_data["from_agent_id"].asUUID(),              from_group,              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.has("offline") ? static_cast<U8>(message_data["offline"].asInteger()) : IM_OFFLINE, +            static_cast<EInstantMessage>(message_data["dialog"].asInteger()), +            message_data["transaction-id"].asUUID(), +            static_cast<U32>(message_data["timestamp"].asInteger()),              message_data["from_agent_name"].asString(),              message_data["message"].asString(), -            parent_estate_id, +            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()); +      }  } diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp index 4c7eb41418..f025863072 100644 --- a/indra/newview/llviewerdisplay.cpp +++ b/indra/newview/llviewerdisplay.cpp @@ -151,6 +151,10 @@ void display_startup()  	{  		LLViewerDynamicTexture::updateAllInstances();  	} +    else +    { +        LL_DEBUGS("Window") << "First display_startup frame" << LL_ENDL; +    }  	LLGLState::checkStates();  	LLGLState::checkTextureChannels(); | 
