From 31ba05810c641f14e8ab5da8ad2aaf527779f6c1 Mon Sep 17 00:00:00 2001 From: Jacek Antonelli Date: Fri, 15 Aug 2008 23:45:37 -0500 Subject: Second Life viewer sources 1.19.1.2 --- linden/doc/contributions.txt | 1 + linden/indra/SConstruct | 12 +- linden/indra/indra_complete/indra_complete_vc8.sln | 12 + linden/indra/lib/python/indra/util/llmanifest.py | 5 +- linden/indra/llcharacter/llgesture.cpp | 2 +- linden/indra/llcharacter/llgesture.h | 2 +- linden/indra/llcommon/lltimer.h | 2 + linden/indra/llcommon/llversionviewer.h | 2 +- linden/indra/llcrashlogger/llcrashlogger.cpp | 63 +- linden/indra/llcrashlogger/llcrashlogger.h | 2 +- linden/indra/llimage/llimage.cpp | 7 +- linden/indra/llimage/llimage.h | 6 +- linden/indra/llimage/llimagebmp.h | 4 +- linden/indra/llimage/llimagedxt.cpp | 4 +- linden/indra/llimage/llimagedxt.h | 8 +- linden/indra/llimage/llimagej2c.cpp | 4 +- linden/indra/llimage/llimagej2c.h | 6 +- linden/indra/llimage/llimagejpeg.h | 4 +- linden/indra/llimage/llimagepng.h | 4 +- linden/indra/llimage/llimageworker.cpp | 2 +- linden/indra/llinventory/llinventory.cpp | 18 +- linden/indra/llinventory/llinventory.h | 8 +- linden/indra/llmath/lloctree.h | 2 - linden/indra/llmath/llvolume.cpp | 2 +- linden/indra/llmath/llvolumemgr.cpp | 11 +- linden/indra/llmath/llvolumemgr.h | 2 +- linden/indra/llmedia/llmediaimplgstreamer.cpp | 4 + linden/indra/llmedia/llmediaimplgstreamer_syms.cpp | 2 +- linden/indra/llmedia/llmediaimplllmozlib.cpp | 40 +- linden/indra/llmessage/llblowfishcipher.cpp | 3 - linden/indra/llmessage/llcurl.h | 9 +- linden/indra/llmessage/llhttpnode.cpp | 8 +- linden/indra/llmessage/llhttpnode.h | 2 +- linden/indra/llmessage/llpartdata.cpp | 4 + linden/indra/llmessage/llpartdata.h | 5 +- linden/indra/llrender/llfontgl.cpp | 14 +- linden/indra/llrender/llfontgl.h | 4 +- linden/indra/llui/llcheckboxctrl.h | 2 +- linden/indra/llui/lldraghandle.h | 1 - linden/indra/llui/llfloater.cpp | 28 +- linden/indra/llui/llfloater.h | 8 +- linden/indra/llui/llmenugl.cpp | 28 +- linden/indra/llui/llmenugl.h | 13 +- linden/indra/llui/llmodaldialog.h | 2 +- linden/indra/llui/llmultisliderctrl.cpp | 2 +- linden/indra/llui/llmultisliderctrl.h | 2 +- linden/indra/llui/llpanel.cpp | 12 +- linden/indra/llui/llscrollcontainer.h | 2 +- linden/indra/llui/llscrolllistctrl.cpp | 3 + linden/indra/llui/lltabcontainer.h | 2 +- linden/indra/llui/lltexteditor.h | 2 +- linden/indra/llui/llui.cpp | 7 + linden/indra/llui/llui.h | 6 + linden/indra/llui/llview.cpp | 4 +- linden/indra/llui/llview.h | 8 +- linden/indra/llwindow/llwindowmacosx.cpp | 2 +- linden/indra/llwindow/llwindowmacosx.h | 3 +- linden/indra/llwindow/llwindowsdl.cpp | 8 +- linden/indra/mac_updater/mac_updater.cpp | 17 +- .../indra/newview/English.lproj/InfoPlist.strings | 4 +- linden/indra/newview/Info-SecondLife.plist | 2 +- .../app_settings/windlight/skies/A%2D6PM.xml | 11 +- linden/indra/newview/featuretable.txt | 4 +- linden/indra/newview/gpu_table.txt | 1 + .../installers/windows/installer_template.nsi | 21 +- linden/indra/newview/llappviewer.cpp | 92 +- linden/indra/newview/llappviewer.h | 10 +- linden/indra/newview/llcontroldef.cpp | 8 +- linden/indra/newview/llcurrencyuimanager.cpp | 8 + linden/indra/newview/lldrawable.cpp | 6 +- linden/indra/newview/lldrawable.h | 2 +- linden/indra/newview/lldrawpoolbump.cpp | 4 +- linden/indra/newview/lldrawpoolwlsky.cpp | 2 +- linden/indra/newview/llfilepicker.cpp | 1 - linden/indra/newview/llfloaterauction.cpp | 2 +- linden/indra/newview/llfloaterbuycurrency.cpp | 9 + linden/indra/newview/llfloatercustomize.cpp | 2 +- linden/indra/newview/llfloatereditui.cpp | 2 +- linden/indra/newview/llfloatereditui.h | 2 +- linden/indra/newview/llfloaterhtmlhelp.cpp | 5 +- linden/indra/newview/llfloaterimagepreview.cpp | 9 +- linden/indra/newview/llfloaterimagepreview.h | 2 +- linden/indra/newview/llfloaterscriptdebug.cpp | 4 +- linden/indra/newview/llfloaterscriptdebug.h | 2 +- linden/indra/newview/llfloatersnapshot.cpp | 10 +- linden/indra/newview/llfolderview.cpp | 3 + linden/indra/newview/llfolderview.h | 5 +- linden/indra/newview/llimview.cpp | 15 +- linden/indra/newview/llinventorymodel.cpp | 6 +- linden/indra/newview/llmimetypes.h | 2 +- linden/indra/newview/llnameeditor.cpp | 2 +- linden/indra/newview/llnameeditor.h | 2 +- linden/indra/newview/lloverlaybar.h | 2 +- linden/indra/newview/llpanelclassified.cpp | 6 +- linden/indra/newview/llpanelclassified.h | 2 +- linden/indra/newview/llpaneldirbrowser.cpp | 2 +- linden/indra/newview/llpaneldirbrowser.h | 2 +- linden/indra/newview/llpaneldirgroups.cpp | 16 +- linden/indra/newview/llpaneldirpeople.cpp | 8 +- linden/indra/newview/llpaneldirplaces.cpp | 17 +- linden/indra/newview/llpanelgroupnotices.cpp | 4 +- linden/indra/newview/llpanelgroupvoting.cpp | 7 +- linden/indra/newview/llpanelinventory.cpp | 4 +- linden/indra/newview/llpreview.h | 2 +- linden/indra/newview/llpreviewscript.cpp | 2 +- linden/indra/newview/llpreviewtexture.cpp | 3 + linden/indra/newview/llselectmgr.cpp | 101 +- linden/indra/newview/llspatialpartition.cpp | 6 + linden/indra/newview/llstartup.cpp | 2 +- linden/indra/newview/llstatgraph.cpp | 4 +- linden/indra/newview/llstatgraph.h | 3 +- linden/indra/newview/llstatview.h | 2 +- linden/indra/newview/lltexturectrl.cpp | 2 +- linden/indra/newview/lltexturectrl.h | 2 +- linden/indra/newview/lltexturefetch.cpp | 4 +- linden/indra/newview/lltoolbar.h | 2 +- linden/indra/newview/llurlsimstring.cpp | 2 +- linden/indra/newview/llviewerdisplay.cpp | 2 +- linden/indra/newview/llviewerimagelist.cpp | 27 +- linden/indra/newview/llviewerinventory.cpp | 22 +- linden/indra/newview/llviewerinventory.h | 8 +- linden/indra/newview/llviewerjoint.cpp | 2 +- linden/indra/newview/llviewerjoint.h | 2 +- linden/indra/newview/llviewerjointattachment.cpp | 4 +- linden/indra/newview/llviewermenu.cpp | 14 +- linden/indra/newview/llviewerobject.cpp | 9 +- linden/indra/newview/llviewerobject.h | 3 +- linden/indra/newview/llviewerparcelmedia.cpp | 29 + linden/indra/newview/llviewerpartsim.cpp | 6 +- linden/indra/newview/llviewerpartsource.cpp | 3 +- linden/indra/newview/llviewerwindow.cpp | 14 +- linden/indra/newview/llvoavatar.cpp | 6 +- linden/indra/newview/llvosurfacepatch.cpp | 4 +- linden/indra/newview/llvotextbubble.cpp | 8 +- linden/indra/newview/llvotextbubble.h | 2 +- linden/indra/newview/llvovolume.cpp | 20 +- linden/indra/newview/llvovolume.h | 1 + linden/indra/newview/llwebbrowserctrl.cpp | 27 +- linden/indra/newview/llwebbrowserctrl.h | 2 +- linden/indra/newview/llwindebug.cpp | 50 + linden/indra/newview/llwindebug.h | 2 +- linden/indra/newview/lsl_guide.html | 5 +- linden/indra/newview/releasenotes.txt | 63 +- linden/indra/newview/res/newViewRes.rc | 8 +- .../newview/secondlife setup build A08T01.bat | 4 + .../newview/secondlife setup build B08T01.bat | 4 + linden/indra/newview/skins/xui/de/alerts.xml | 442 +- .../indra/newview/skins/xui/de/floater_about.xml | 8 +- .../newview/skins/xui/de/floater_about_land.xml | 61 +- .../newview/skins/xui/de/floater_buy_object.xml | 5 +- .../skins/xui/de/floater_day_cycle_options.xml | 96 + .../newview/skins/xui/de/floater_env_settings.xml | 23 + .../skins/xui/de/floater_hardware_settings.xml | 20 + .../skins/xui/de/floater_instant_message.xml | 5 +- .../xui/de/floater_instant_message_ad_hoc.xml | 3 + .../skins/xui/de/floater_live_lsleditor.xml | 3 + .../newview/skins/xui/de/floater_media_browser.xml | 19 + .../newview/skins/xui/de/floater_post_process.xml | 53 + .../newview/skins/xui/de/floater_snapshot.xml | 10 +- linden/indra/newview/skins/xui/de/floater_test.xml | 15 +- .../indra/newview/skins/xui/de/floater_tools.xml | 9 + .../newview/skins/xui/de/floater_url_entry.xml | 13 + .../indra/newview/skins/xui/de/floater_water.xml | 88 + .../skins/xui/de/floater_windlight_options.xml | 190 + linden/indra/newview/skins/xui/de/menu_viewer.xml | 22 +- linden/indra/newview/skins/xui/de/need_to_long.xml | 235 +- .../newview/skins/xui/de/need_to_translate.xml | 5214 ++++++++++++++++++- .../indra/newview/skins/xui/de/need_to_update.xml | 534 +- linden/indra/newview/skins/xui/de/notify.xml | 18 +- .../newview/skins/xui/de/panel_audio_device.xml | 6 + linden/indra/newview/skins/xui/de/panel_avatar.xml | 5 +- .../newview/skins/xui/de/panel_classified.xml | 3 + .../indra/newview/skins/xui/de/panel_friends.xml | 6 +- .../newview/skins/xui/de/panel_group_general.xml | 1 + .../skins/xui/de/panel_group_land_money.xml | 3 + .../newview/skins/xui/de/panel_group_roles.xml | 9 +- .../newview/skins/xui/de/panel_media_controls.xml | 32 +- .../newview/skins/xui/de/panel_media_remote.xml | 14 +- .../skins/xui/de/panel_preferences_audio.xml | 10 +- .../skins/xui/de/panel_preferences_general.xml | 6 + .../skins/xui/de/panel_preferences_graphics1.xml | 142 +- .../newview/skins/xui/de/panel_preferences_im.xml | 3 + .../skins/xui/de/panel_preferences_input.xml | 4 + .../skins/xui/de/panel_preferences_voice.xml | 3 + .../newview/skins/xui/de/panel_preferences_web.xml | 9 + .../newview/skins/xui/de/panel_region_estate.xml | 1 + .../newview/skins/xui/de/panel_voice_enable.xml | 6 +- .../newview/skins/xui/de/panel_voice_options.xml | 1 + linden/indra/newview/skins/xui/en-us/alerts.xml | 12 +- .../newview/skins/xui/en-us/floater_about_land.xml | 6 +- .../skins/xui/en-us/floater_buy_currency.xml | 4 + .../skins/xui/en-us/floater_media_browser.xml | 6 +- .../floater_preview_notecard_keep_discard.xml | 5 +- linden/indra/newview/skins/xui/ja/alerts.xml | 444 +- .../indra/newview/skins/xui/ja/floater_about.xml | 12 +- .../newview/skins/xui/ja/floater_about_land.xml | 62 +- .../newview/skins/xui/ja/floater_buy_object.xml | 5 +- .../skins/xui/ja/floater_day_cycle_options.xml | 97 + .../newview/skins/xui/ja/floater_env_settings.xml | 24 + .../skins/xui/ja/floater_hardware_settings.xml | 22 + .../skins/xui/ja/floater_instant_message.xml | 3 + .../xui/ja/floater_instant_message_ad_hoc.xml | 3 + .../skins/xui/ja/floater_live_lsleditor.xml | 3 + .../newview/skins/xui/ja/floater_media_browser.xml | 19 + .../newview/skins/xui/ja/floater_post_process.xml | 54 + .../newview/skins/xui/ja/floater_snapshot.xml | 10 +- linden/indra/newview/skins/xui/ja/floater_test.xml | 15 +- .../indra/newview/skins/xui/ja/floater_tools.xml | 18 +- .../newview/skins/xui/ja/floater_url_entry.xml | 13 + .../indra/newview/skins/xui/ja/floater_water.xml | 89 + .../skins/xui/ja/floater_windlight_options.xml | 190 + linden/indra/newview/skins/xui/ja/menu_viewer.xml | 22 +- linden/indra/newview/skins/xui/ja/need_to_long.xml | 235 +- .../newview/skins/xui/ja/need_to_translate.xml | 5205 ++++++++++++++++++- .../indra/newview/skins/xui/ja/need_to_update.xml | 538 +- linden/indra/newview/skins/xui/ja/notify.xml | 22 +- .../newview/skins/xui/ja/panel_audio_device.xml | 6 + linden/indra/newview/skins/xui/ja/panel_avatar.xml | 5 +- .../newview/skins/xui/ja/panel_classified.xml | 3 + .../indra/newview/skins/xui/ja/panel_friends.xml | 3 + .../newview/skins/xui/ja/panel_group_general.xml | 3 +- .../skins/xui/ja/panel_group_land_money.xml | 3 + .../newview/skins/xui/ja/panel_group_roles.xml | 13 +- .../newview/skins/xui/ja/panel_land_covenant.xml | 2 +- .../newview/skins/xui/ja/panel_media_controls.xml | 37 +- .../newview/skins/xui/ja/panel_media_remote.xml | 17 +- .../skins/xui/ja/panel_preferences_audio.xml | 10 +- .../skins/xui/ja/panel_preferences_general.xml | 7 + .../skins/xui/ja/panel_preferences_graphics1.xml | 143 +- .../newview/skins/xui/ja/panel_preferences_im.xml | 3 + .../skins/xui/ja/panel_preferences_input.xml | 4 + .../skins/xui/ja/panel_preferences_voice.xml | 3 + .../newview/skins/xui/ja/panel_preferences_web.xml | 9 + .../newview/skins/xui/ja/panel_region_estate.xml | 1 + .../newview/skins/xui/ja/panel_voice_enable.xml | 6 +- .../newview/skins/xui/ja/panel_voice_options.xml | 5 +- linden/indra/newview/skins/xui/ko/alerts.xml | 458 +- .../indra/newview/skins/xui/ko/floater_about.xml | 10 +- .../newview/skins/xui/ko/floater_about_land.xml | 64 +- .../newview/skins/xui/ko/floater_buy_object.xml | 5 +- .../skins/xui/ko/floater_day_cycle_options.xml | 97 + .../newview/skins/xui/ko/floater_env_settings.xml | 24 + .../skins/xui/ko/floater_hardware_settings.xml | 20 + .../skins/xui/ko/floater_instant_message.xml | 3 + .../xui/ko/floater_instant_message_ad_hoc.xml | 3 + .../skins/xui/ko/floater_live_lsleditor.xml | 3 + .../newview/skins/xui/ko/floater_media_browser.xml | 19 + .../newview/skins/xui/ko/floater_post_process.xml | 53 + .../newview/skins/xui/ko/floater_snapshot.xml | 4 +- linden/indra/newview/skins/xui/ko/floater_test.xml | 15 +- .../indra/newview/skins/xui/ko/floater_tools.xml | 9 + .../newview/skins/xui/ko/floater_url_entry.xml | 13 + .../indra/newview/skins/xui/ko/floater_water.xml | 89 + .../skins/xui/ko/floater_windlight_options.xml | 190 + linden/indra/newview/skins/xui/ko/menu_viewer.xml | 20 +- linden/indra/newview/skins/xui/ko/need_to_long.xml | 235 +- .../newview/skins/xui/ko/need_to_translate.xml | 5221 +++++++++++++++++++- .../indra/newview/skins/xui/ko/need_to_update.xml | 530 +- linden/indra/newview/skins/xui/ko/notify.xml | 16 +- .../newview/skins/xui/ko/panel_audio_device.xml | 6 + linden/indra/newview/skins/xui/ko/panel_avatar.xml | 5 +- .../newview/skins/xui/ko/panel_classified.xml | 3 + .../indra/newview/skins/xui/ko/panel_friends.xml | 3 + .../newview/skins/xui/ko/panel_group_general.xml | 3 +- .../skins/xui/ko/panel_group_land_money.xml | 3 + .../newview/skins/xui/ko/panel_group_roles.xml | 12 +- .../newview/skins/xui/ko/panel_land_covenant.xml | 2 +- .../newview/skins/xui/ko/panel_media_controls.xml | 32 +- .../newview/skins/xui/ko/panel_media_remote.xml | 15 +- .../skins/xui/ko/panel_preferences_audio.xml | 10 +- .../skins/xui/ko/panel_preferences_general.xml | 6 + .../skins/xui/ko/panel_preferences_graphics1.xml | 140 +- .../newview/skins/xui/ko/panel_preferences_im.xml | 3 + .../skins/xui/ko/panel_preferences_input.xml | 6 +- .../skins/xui/ko/panel_preferences_voice.xml | 3 + .../newview/skins/xui/ko/panel_preferences_web.xml | 9 + .../newview/skins/xui/ko/panel_region_estate.xml | 1 + .../newview/skins/xui/ko/panel_voice_enable.xml | 4 +- .../newview/skins/xui/ko/panel_voice_options.xml | 2 + linden/indra/newview/skins/xui/pt/alerts.xml | 1473 ------ .../indra/newview/skins/xui/pt/floater_about.xml | 42 - .../newview/skins/xui/pt/floater_about_land.xml | 279 -- .../skins/xui/pt/floater_account_history.xml | 4 - .../skins/xui/pt/floater_animation_preview.xml | 63 - .../indra/newview/skins/xui/pt/floater_auction.xml | 11 - .../newview/skins/xui/pt/floater_avatar_picker.xml | 24 - .../skins/xui/pt/floater_avatar_textures.xml | 25 - .../newview/skins/xui/pt/floater_build_options.xml | 8 - .../indra/newview/skins/xui/pt/floater_bumps.xml | 9 - .../newview/skins/xui/pt/floater_buy_contents.xml | 10 - .../newview/skins/xui/pt/floater_buy_currency.xml | 11 - .../newview/skins/xui/pt/floater_buy_land.xml | 93 - .../newview/skins/xui/pt/floater_buy_object.xml | 12 - .../newview/skins/xui/pt/floater_chat_history.xml | 8 - .../newview/skins/xui/pt/floater_choose_group.xml | 7 - .../newview/skins/xui/pt/floater_clothing.xml | 8 - .../newview/skins/xui/pt/floater_color_picker.xml | 20 - .../newview/skins/xui/pt/floater_critical.xml | 13 - .../newview/skins/xui/pt/floater_customize.xml | 252 - .../newview/skins/xui/pt/floater_directory.xml | 214 - .../indra/newview/skins/xui/pt/floater_friends.xml | 22 - .../indra/newview/skins/xui/pt/floater_gesture.xml | 13 - .../newview/skins/xui/pt/floater_god_tools.xml | 67 - .../newview/skins/xui/pt/floater_group_info.xml | 146 - .../indra/newview/skins/xui/pt/floater_groups.xml | 12 - linden/indra/newview/skins/xui/pt/floater_html.xml | 7 - linden/indra/newview/skins/xui/pt/floater_im.xml | 32 - .../newview/skins/xui/pt/floater_image_preview.xml | 21 - .../indra/newview/skins/xui/pt/floater_import.xml | 12 - .../indra/newview/skins/xui/pt/floater_inspect.xml | 9 - .../skins/xui/pt/floater_instant_message.xml | 17 - .../newview/skins/xui/pt/floater_inventory.xml | 82 - .../xui/pt/floater_inventory_item_properties.xml | 37 - .../skins/xui/pt/floater_inventory_view_finder.xml | 32 - .../newview/skins/xui/pt/floater_joystick.xml | 57 - .../newview/skins/xui/pt/floater_land_holdings.xml | 19 - .../skins/xui/pt/floater_live_lsleditor.xml | 5 - .../newview/skins/xui/pt/floater_lsl_guide.xml | 23 - .../newview/skins/xui/pt/floater_moveview.xml | 11 - linden/indra/newview/skins/xui/pt/floater_mute.xml | 6 - .../skins/xui/pt/floater_name_description.xml | 8 - .../indra/newview/skins/xui/pt/floater_new_im.xml | 7 - .../skins/xui/pt/floater_new_outfit_dialog.xml | 65 - .../newview/skins/xui/pt/floater_openobject.xml | 6 - linden/indra/newview/skins/xui/pt/floater_pay.xml | 13 - .../newview/skins/xui/pt/floater_pay_object.xml | 16 - .../newview/skins/xui/pt/floater_postcard.xml | 18 - .../newview/skins/xui/pt/floater_preferences.xml | 15 - .../skins/xui/pt/floater_preview_animation.xml | 6 - .../xui/pt/floater_preview_embedded_texture.xml | 4 - .../xui/pt/floater_preview_existing_landmark.xml | 7 - .../skins/xui/pt/floater_preview_gesture.xml | 33 - .../skins/xui/pt/floater_preview_new_landmark.xml | 8 - .../skins/xui/pt/floater_preview_notecard.xml | 7 - .../pt/floater_preview_notecard_keep_discard.xml | 8 - .../newview/skins/xui/pt/floater_preview_sound.xml | 6 - .../skins/xui/pt/floater_preview_texture.xml | 5 - .../pt/floater_preview_texture_keep_discard.xml | 7 - .../skins/xui/pt/floater_price_for_listing.xml | 7 - .../indra/newview/skins/xui/pt/floater_profile.xml | 3 - linden/indra/newview/skins/xui/pt/floater_rate.xml | 19 - .../newview/skins/xui/pt/floater_report_abuse.xml | 39 - .../newview/skins/xui/pt/floater_report_bug.xml | 43 - .../newview/skins/xui/pt/floater_script_debug.xml | 4 - .../skins/xui/pt/floater_script_ed_panel.xml | 30 - .../skins/xui/pt/floater_script_preview.xml | 6 - .../newview/skins/xui/pt/floater_script_queue.xml | 4 - .../newview/skins/xui/pt/floater_script_search.xml | 10 - .../newview/skins/xui/pt/floater_sell_land.xml | 37 - .../skins/xui/pt/floater_settings_debug.xml | 14 - .../newview/skins/xui/pt/floater_snapshot.xml | 49 - .../newview/skins/xui/pt/floater_sound_preview.xml | 14 - .../indra/newview/skins/xui/pt/floater_telehub.xml | 13 - .../newview/skins/xui/pt/floater_texture_ctrl.xml | 14 - .../indra/newview/skins/xui/pt/floater_tools.xml | 302 -- .../newview/skins/xui/pt/floater_top_objects.xml | 29 - linden/indra/newview/skins/xui/pt/floater_tos.xml | 12 - .../skins/xui/pt/floater_wearable_save_as.xml | 6 - .../newview/skins/xui/pt/floater_world_map.xml | 61 - .../indra/newview/skins/xui/pt/menu_inventory.xml | 146 - .../newview/skins/xui/pt/menu_pie_attachment.xml | 16 - .../indra/newview/skins/xui/pt/menu_pie_avatar.xml | 37 - .../indra/newview/skins/xui/pt/menu_pie_land.xml | 21 - .../indra/newview/skins/xui/pt/menu_pie_object.xml | 60 - .../indra/newview/skins/xui/pt/menu_pie_self.xml | 59 - linden/indra/newview/skins/xui/pt/menu_viewer.xml | 504 -- linden/indra/newview/skins/xui/pt/notify.xml | 279 -- .../newview/skins/xui/pt/panel_account_details.xml | 5 - .../skins/xui/pt/panel_account_planning.xml | 3 - .../skins/xui/pt/panel_account_transactions.xml | 5 - linden/indra/newview/skins/xui/pt/panel_avatar.xml | 127 - .../skins/xui/pt/panel_avatar_classified.xml | 16 - .../newview/skins/xui/pt/panel_avatar_pick.xml | 12 - .../indra/newview/skins/xui/pt/panel_chat_bar.xml | 8 - .../newview/skins/xui/pt/panel_classified.xml | 13 - linden/indra/newview/skins/xui/pt/panel_event.xml | 24 - linden/indra/newview/skins/xui/pt/panel_group.xml | 14 - .../newview/skins/xui/pt/panel_group_finder.xml | 10 - .../newview/skins/xui/pt/panel_group_general.xml | 39 - .../newview/skins/xui/pt/panel_group_invite.xml | 10 - .../skins/xui/pt/panel_group_land_money.xml | 40 - .../newview/skins/xui/pt/panel_group_notices.xml | 41 - .../newview/skins/xui/pt/panel_group_roles.xml | 102 - .../newview/skins/xui/pt/panel_group_voting.xml | 43 - .../newview/skins/xui/pt/panel_land_covenant.xml | 16 - linden/indra/newview/skins/xui/pt/panel_login.xml | 23 - .../newview/skins/xui/pt/panel_media_remote.xml | 7 - .../newview/skins/xui/pt/panel_music_remote.xml | 7 - .../newview/skins/xui/pt/panel_overlaybar.xml | 9 - linden/indra/newview/skins/xui/pt/panel_place.xml | 10 - .../newview/skins/xui/pt/panel_place_small.xml | 10 - .../skins/xui/pt/panel_preferences_audio.xml | 30 - .../skins/xui/pt/panel_preferences_chat.xml | 30 - .../skins/xui/pt/panel_preferences_general.xml | 37 - .../skins/xui/pt/panel_preferences_graphics1.xml | 21 - .../skins/xui/pt/panel_preferences_graphics2.xml | 43 - .../skins/xui/pt/panel_preferences_graphics3.xml | 31 - .../newview/skins/xui/pt/panel_preferences_im.xml | 20 - .../skins/xui/pt/panel_preferences_input.xml | 13 - .../skins/xui/pt/panel_preferences_network.xml | 14 - .../skins/xui/pt/panel_preferences_popups.xml | 31 - .../newview/skins/xui/pt/panel_preferences_web.xml | 34 - .../newview/skins/xui/pt/panel_region_covenant.xml | 29 - .../newview/skins/xui/pt/panel_region_debug.xml | 34 - .../newview/skins/xui/pt/panel_region_estate.xml | 63 - .../newview/skins/xui/pt/panel_region_general.xml | 31 - .../newview/skins/xui/pt/panel_region_terrain.xml | 26 - .../newview/skins/xui/pt/panel_region_texture.xml | 30 - .../newview/skins/xui/pt/panel_scrolling_param.xml | 9 - .../newview/skins/xui/pt/panel_settings_chat.xml | 29 - .../newview/skins/xui/pt/panel_settings_im.xml | 8 - .../newview/skins/xui/pt/panel_settings_msgbox.xml | 8 - .../skins/xui/pt/panel_settings_network.xml | 24 - .../newview/skins/xui/pt/panel_settings_web.xml | 23 - .../newview/skins/xui/pt/panel_status_bar.xml | 16 - .../indra/newview/skins/xui/pt/panel_toolbar.xml | 12 - .../indra/newview/skins/xui/pt/panel_top_pick.xml | 12 - linden/indra/newview/skins/xui/pt/role_actions.xml | 186 - .../newview/skins/xui/pt/teleport_strings.xml | 87 - linden/indra/newview/skins/xui/pt/xui_version.xml | 2 - linden/indra/newview/viewer_manifest.py | 22 +- linden/indra/test/inventory.cpp | 6 +- 422 files changed, 21695 insertions(+), 8563 deletions(-) create mode 100644 linden/indra/newview/secondlife setup build A08T01.bat create mode 100644 linden/indra/newview/secondlife setup build B08T01.bat create mode 100644 linden/indra/newview/skins/xui/de/floater_day_cycle_options.xml create mode 100644 linden/indra/newview/skins/xui/de/floater_env_settings.xml create mode 100644 linden/indra/newview/skins/xui/de/floater_hardware_settings.xml create mode 100644 linden/indra/newview/skins/xui/de/floater_media_browser.xml create mode 100644 linden/indra/newview/skins/xui/de/floater_post_process.xml create mode 100644 linden/indra/newview/skins/xui/de/floater_url_entry.xml create mode 100644 linden/indra/newview/skins/xui/de/floater_water.xml create mode 100644 linden/indra/newview/skins/xui/de/floater_windlight_options.xml create mode 100644 linden/indra/newview/skins/xui/ja/floater_day_cycle_options.xml create mode 100644 linden/indra/newview/skins/xui/ja/floater_env_settings.xml create mode 100644 linden/indra/newview/skins/xui/ja/floater_hardware_settings.xml create mode 100644 linden/indra/newview/skins/xui/ja/floater_media_browser.xml create mode 100644 linden/indra/newview/skins/xui/ja/floater_post_process.xml create mode 100644 linden/indra/newview/skins/xui/ja/floater_url_entry.xml create mode 100644 linden/indra/newview/skins/xui/ja/floater_water.xml create mode 100644 linden/indra/newview/skins/xui/ja/floater_windlight_options.xml create mode 100644 linden/indra/newview/skins/xui/ko/floater_day_cycle_options.xml create mode 100644 linden/indra/newview/skins/xui/ko/floater_env_settings.xml create mode 100644 linden/indra/newview/skins/xui/ko/floater_hardware_settings.xml create mode 100644 linden/indra/newview/skins/xui/ko/floater_media_browser.xml create mode 100644 linden/indra/newview/skins/xui/ko/floater_post_process.xml create mode 100644 linden/indra/newview/skins/xui/ko/floater_url_entry.xml create mode 100644 linden/indra/newview/skins/xui/ko/floater_water.xml create mode 100644 linden/indra/newview/skins/xui/ko/floater_windlight_options.xml delete mode 100644 linden/indra/newview/skins/xui/pt/alerts.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_about.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_about_land.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_account_history.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_animation_preview.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_auction.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_avatar_picker.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_avatar_textures.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_build_options.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_bumps.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_buy_contents.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_buy_currency.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_buy_land.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_buy_object.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_chat_history.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_choose_group.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_clothing.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_color_picker.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_critical.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_customize.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_directory.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_friends.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_gesture.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_god_tools.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_group_info.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_groups.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_html.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_im.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_image_preview.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_import.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_inspect.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_instant_message.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_inventory.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_inventory_item_properties.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_inventory_view_finder.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_joystick.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_land_holdings.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_live_lsleditor.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_lsl_guide.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_moveview.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_mute.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_name_description.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_new_im.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_new_outfit_dialog.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_openobject.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_pay.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_pay_object.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_postcard.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_preferences.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_preview_animation.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_preview_embedded_texture.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_preview_existing_landmark.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_preview_gesture.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_preview_new_landmark.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_preview_notecard.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_preview_notecard_keep_discard.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_preview_sound.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_preview_texture.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_preview_texture_keep_discard.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_price_for_listing.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_profile.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_rate.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_report_abuse.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_report_bug.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_script_debug.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_script_ed_panel.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_script_preview.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_script_queue.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_script_search.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_sell_land.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_settings_debug.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_snapshot.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_sound_preview.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_telehub.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_texture_ctrl.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_tools.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_top_objects.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_tos.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_wearable_save_as.xml delete mode 100644 linden/indra/newview/skins/xui/pt/floater_world_map.xml delete mode 100644 linden/indra/newview/skins/xui/pt/menu_inventory.xml delete mode 100644 linden/indra/newview/skins/xui/pt/menu_pie_attachment.xml delete mode 100644 linden/indra/newview/skins/xui/pt/menu_pie_avatar.xml delete mode 100644 linden/indra/newview/skins/xui/pt/menu_pie_land.xml delete mode 100644 linden/indra/newview/skins/xui/pt/menu_pie_object.xml delete mode 100644 linden/indra/newview/skins/xui/pt/menu_pie_self.xml delete mode 100644 linden/indra/newview/skins/xui/pt/menu_viewer.xml delete mode 100644 linden/indra/newview/skins/xui/pt/notify.xml delete mode 100644 linden/indra/newview/skins/xui/pt/panel_account_details.xml delete mode 100644 linden/indra/newview/skins/xui/pt/panel_account_planning.xml delete mode 100644 linden/indra/newview/skins/xui/pt/panel_account_transactions.xml delete mode 100644 linden/indra/newview/skins/xui/pt/panel_avatar.xml delete mode 100644 linden/indra/newview/skins/xui/pt/panel_avatar_classified.xml delete mode 100644 linden/indra/newview/skins/xui/pt/panel_avatar_pick.xml delete mode 100644 linden/indra/newview/skins/xui/pt/panel_chat_bar.xml delete mode 100644 linden/indra/newview/skins/xui/pt/panel_classified.xml delete mode 100644 linden/indra/newview/skins/xui/pt/panel_event.xml delete mode 100644 linden/indra/newview/skins/xui/pt/panel_group.xml delete mode 100644 linden/indra/newview/skins/xui/pt/panel_group_finder.xml delete mode 100644 linden/indra/newview/skins/xui/pt/panel_group_general.xml delete mode 100644 linden/indra/newview/skins/xui/pt/panel_group_invite.xml delete mode 100644 linden/indra/newview/skins/xui/pt/panel_group_land_money.xml delete mode 100644 linden/indra/newview/skins/xui/pt/panel_group_notices.xml delete mode 100644 linden/indra/newview/skins/xui/pt/panel_group_roles.xml delete mode 100644 linden/indra/newview/skins/xui/pt/panel_group_voting.xml delete mode 100644 linden/indra/newview/skins/xui/pt/panel_land_covenant.xml delete mode 100644 linden/indra/newview/skins/xui/pt/panel_login.xml delete mode 100644 linden/indra/newview/skins/xui/pt/panel_media_remote.xml delete mode 100644 linden/indra/newview/skins/xui/pt/panel_music_remote.xml delete mode 100644 linden/indra/newview/skins/xui/pt/panel_overlaybar.xml delete mode 100644 linden/indra/newview/skins/xui/pt/panel_place.xml delete mode 100644 linden/indra/newview/skins/xui/pt/panel_place_small.xml delete mode 100644 linden/indra/newview/skins/xui/pt/panel_preferences_audio.xml delete mode 100644 linden/indra/newview/skins/xui/pt/panel_preferences_chat.xml delete mode 100644 linden/indra/newview/skins/xui/pt/panel_preferences_general.xml delete mode 100644 linden/indra/newview/skins/xui/pt/panel_preferences_graphics1.xml delete mode 100644 linden/indra/newview/skins/xui/pt/panel_preferences_graphics2.xml delete mode 100644 linden/indra/newview/skins/xui/pt/panel_preferences_graphics3.xml delete mode 100644 linden/indra/newview/skins/xui/pt/panel_preferences_im.xml delete mode 100644 linden/indra/newview/skins/xui/pt/panel_preferences_input.xml delete mode 100644 linden/indra/newview/skins/xui/pt/panel_preferences_network.xml delete mode 100644 linden/indra/newview/skins/xui/pt/panel_preferences_popups.xml delete mode 100644 linden/indra/newview/skins/xui/pt/panel_preferences_web.xml delete mode 100644 linden/indra/newview/skins/xui/pt/panel_region_covenant.xml delete mode 100644 linden/indra/newview/skins/xui/pt/panel_region_debug.xml delete mode 100644 linden/indra/newview/skins/xui/pt/panel_region_estate.xml delete mode 100644 linden/indra/newview/skins/xui/pt/panel_region_general.xml delete mode 100644 linden/indra/newview/skins/xui/pt/panel_region_terrain.xml delete mode 100644 linden/indra/newview/skins/xui/pt/panel_region_texture.xml delete mode 100644 linden/indra/newview/skins/xui/pt/panel_scrolling_param.xml delete mode 100644 linden/indra/newview/skins/xui/pt/panel_settings_chat.xml delete mode 100644 linden/indra/newview/skins/xui/pt/panel_settings_im.xml delete mode 100644 linden/indra/newview/skins/xui/pt/panel_settings_msgbox.xml delete mode 100644 linden/indra/newview/skins/xui/pt/panel_settings_network.xml delete mode 100644 linden/indra/newview/skins/xui/pt/panel_settings_web.xml delete mode 100644 linden/indra/newview/skins/xui/pt/panel_status_bar.xml delete mode 100644 linden/indra/newview/skins/xui/pt/panel_toolbar.xml delete mode 100644 linden/indra/newview/skins/xui/pt/panel_top_pick.xml delete mode 100644 linden/indra/newview/skins/xui/pt/role_actions.xml delete mode 100644 linden/indra/newview/skins/xui/pt/teleport_strings.xml delete mode 100644 linden/indra/newview/skins/xui/pt/xui_version.xml (limited to 'linden') diff --git a/linden/doc/contributions.txt b/linden/doc/contributions.txt index 68d2858..4706f39 100644 --- a/linden/doc/contributions.txt +++ b/linden/doc/contributions.txt @@ -250,6 +250,7 @@ Nicholaz Beresford VWR-2614 VWR-2411 VWR-2412 + VWR-2682 VWR-2684 Nounouch Hapmouche VWR-238 diff --git a/linden/indra/SConstruct b/linden/indra/SConstruct index 1dfb980..9bc78c4 100644 --- a/linden/indra/SConstruct +++ b/linden/indra/SConstruct @@ -77,6 +77,9 @@ except: # COMMAND LINE OPTIONS # ######################### +DEFAULT_CHANNEL='Release' # TODO: Make this the full channel name, i.e. "Second Life Release" + + opts = Options() opts.AddOptions( EnumOption('BUILD', 'Set build type', 'releasefordownload', @@ -92,8 +95,8 @@ opts.AddOptions( BoolOption('COLORGCC', 'Enabled colorgcc', True), EnumOption('GRID', 'Client package\'s default grid', 'default', allowed_values=('default', 'aditi', 'agni', 'durga', 'ganga', 'shakti', 'siva', 'soma', 'uma', 'vaak', 'yami', 'mohini', 'aruna', 'mitra', 'nandi', 'radha', 'ravi')), - EnumOption('CHANNEL', 'Client package\'s default channel', 'Release', - allowed_values=('Release', 'Release Candidate', 'WindLight')), + ('CHANNEL', 'Client package\'s channel', DEFAULT_CHANNEL), + ('LOGINCHANNEL', 'Client package\'s channel for login only', False), BoolOption('ELFIO', 'Enabled enhanced backtraces with libELFIO symbol extraction support', True), BoolOption('STANDALONE', 'Build using system packages (implies OPENSOURCE)', False), BoolOption('RUNTESTS', 'Run tests at end of compilation', True), @@ -111,6 +114,7 @@ enable_gstreamer = optenv['GSTREAMER'] enable_colorgcc = optenv['COLORGCC'] grid = optenv['GRID'] channel = optenv['CHANNEL'] +login_channel = optenv['LOGINCHANNEL'] standalone = optenv['STANDALONE'] runtests = optenv['RUNTESTS'] opensource = standalone or optenv['OPENSOURCE'] @@ -680,7 +684,7 @@ for build_target in targets: product_name = 'SecondLife_' + arch + '_' + "_".join(version_viewer.split(".")) if grid not in ['default', 'agni']: product_name += "_" + grid.upper() - if channel not in ['Release']: + if channel != DEFAULT_CHANNEL: product_name += "_" + "".join((channel.upper()).split()) package_name = product_name + '.tar.bz2' complete_channel = 'Second Life ' + channel @@ -689,6 +693,8 @@ for build_target in targets: 'grid':grid, 'ch':complete_channel, 'arch':arch} + if login_channel: + cmd += ' --login_channel=\'Second Life %s\'' % (login_channel) env.Command('newview/' + package_name, 'newview/viewer_manifest.py', cmd) Depends('newview/' + package_name, output_bin + '-stripped') Depends('newview/' + package_name, output_crashlogger_bin + '-stripped') diff --git a/linden/indra/indra_complete/indra_complete_vc8.sln b/linden/indra/indra_complete/indra_complete_vc8.sln index f00d16b..e35c0f9 100644 --- a/linden/indra/indra_complete/indra_complete_vc8.sln +++ b/linden/indra/indra_complete/indra_complete_vc8.sln @@ -193,6 +193,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "llimagej2coj", "..\llimagej EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lscript_compile_fb_vc8", "..\lscript\lscript_compile\lscript_compile_fb_vc8.vcproj", "{B771CF1B-E253-47BD-8B0A-6B0440CC9228}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "web-plugin-asset-upload", "..\web\doc\web-plugin-asset-upload_vc8.vcproj", "{0332E7B1-8913-4669-AD7E-7E2EB6204A75}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 @@ -560,6 +562,16 @@ Global {B771CF1B-E253-47BD-8B0A-6B0440CC9228}.ReleaseForDownload|Win32.Build.0 = Release|Win32 {B771CF1B-E253-47BD-8B0A-6B0440CC9228}.ReleaseNoOpt|Win32.ActiveCfg = Release|Win32 {B771CF1B-E253-47BD-8B0A-6B0440CC9228}.ReleaseNoOpt|Win32.Build.0 = Release|Win32 + {0332E7B1-8913-4669-AD7E-7E2EB6204A75}.Debug|Win32.ActiveCfg = Debug|Win32 + {0332E7B1-8913-4669-AD7E-7E2EB6204A75}.Debug|Win32.Build.0 = Debug|Win32 + {0332E7B1-8913-4669-AD7E-7E2EB6204A75}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32 + {0332E7B1-8913-4669-AD7E-7E2EB6204A75}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32 + {0332E7B1-8913-4669-AD7E-7E2EB6204A75}.Release|Win32.ActiveCfg = Release|Win32 + {0332E7B1-8913-4669-AD7E-7E2EB6204A75}.Release|Win32.Build.0 = Release|Win32 + {0332E7B1-8913-4669-AD7E-7E2EB6204A75}.ReleaseForDownload|Win32.ActiveCfg = Release|Win32 + {0332E7B1-8913-4669-AD7E-7E2EB6204A75}.ReleaseForDownload|Win32.Build.0 = Release|Win32 + {0332E7B1-8913-4669-AD7E-7E2EB6204A75}.ReleaseNoOpt|Win32.ActiveCfg = Release|Win32 + {0332E7B1-8913-4669-AD7E-7E2EB6204A75}.ReleaseNoOpt|Win32.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/linden/indra/lib/python/indra/util/llmanifest.py b/linden/indra/lib/python/indra/util/llmanifest.py index e5a732d..1bd44ae 100644 --- a/linden/indra/lib/python/indra/util/llmanifest.py +++ b/linden/indra/lib/python/indra/util/llmanifest.py @@ -128,8 +128,11 @@ ARGUMENTS=[ value for this parameter.""", default=""), dict(name='channel', - description="""The channel to use for updates.""", + description="""The channel to use for updates, packaging, settings name, etc.""", default=get_channel), + dict(name='login_channel', + description="""The channel to use for login handshake/updates only.""", + default=None), dict(name='installer_name', description=""" The name of the file that the installer should be packaged up into. Only used on Linux at the moment.""", diff --git a/linden/indra/llcharacter/llgesture.cpp b/linden/indra/llcharacter/llgesture.cpp index c124ad0..60f0624 100644 --- a/linden/indra/llcharacter/llgesture.cpp +++ b/linden/indra/llcharacter/llgesture.cpp @@ -103,7 +103,7 @@ BOOL LLGesture::trigger(KEY key, MASK mask) } -BOOL LLGesture::trigger(const LLString &trigger_string) +BOOL LLGesture::trigger(const std::string& trigger_string) { llwarns << "Parent class trigger called: you probably didn't mean this." << llendl; return FALSE; diff --git a/linden/indra/llcharacter/llgesture.h b/linden/indra/llcharacter/llgesture.h index 0e4b781..003d236 100644 --- a/linden/indra/llcharacter/llgesture.h +++ b/linden/indra/llcharacter/llgesture.h @@ -64,7 +64,7 @@ public: virtual BOOL trigger(KEY key, MASK mask); // Triggers if case-insensitive substring matches (assumes string is lowercase) - virtual BOOL trigger(const LLString &string); + virtual BOOL trigger(const std::string &string); // non-endian-neutral serialization U8 *serialize(U8 *buffer) const; diff --git a/linden/indra/llcommon/lltimer.h b/linden/indra/llcommon/lltimer.h index bd4c274..8a4bc76 100644 --- a/linden/indra/llcommon/lltimer.h +++ b/linden/indra/llcommon/lltimer.h @@ -36,6 +36,8 @@ #include #endif +#include "stdtypes.h" + // units conversions #ifndef USEC_PER_SEC const U32 USEC_PER_SEC = 1000000; diff --git a/linden/indra/llcommon/llversionviewer.h b/linden/indra/llcommon/llversionviewer.h index 998ea9e..c0296db 100644 --- a/linden/indra/llcommon/llversionviewer.h +++ b/linden/indra/llcommon/llversionviewer.h @@ -35,7 +35,7 @@ const S32 LL_VERSION_MAJOR = 1; const S32 LL_VERSION_MINOR = 19; const S32 LL_VERSION_PATCH = 1; -const S32 LL_VERSION_BUILD = 1; +const S32 LL_VERSION_BUILD = 2; const char * const LL_CHANNEL = "Second Life Release"; diff --git a/linden/indra/llcrashlogger/llcrashlogger.cpp b/linden/indra/llcrashlogger/llcrashlogger.cpp index ebd2303..948932f 100755 --- a/linden/indra/llcrashlogger/llcrashlogger.cpp +++ b/linden/indra/llcrashlogger/llcrashlogger.cpp @@ -85,7 +85,8 @@ void LLCrashLoggerText::updateApplication(LLString message) LLCrashLogger::LLCrashLogger() : mCrashBehavior(CRASH_BEHAVIOR_ASK), mCrashInPreviousExec(false), - mSentCrashLogs(false) + mSentCrashLogs(false), + mCrashHost("") { } @@ -145,21 +146,14 @@ void LLCrashLogger::gatherFiles() gatherPlatformSpecificFiles(); //Use the debug log to reconstruct the URL to send the crash report to - mCrashHost = "https://"; - mCrashHost += mDebugLog["CurrentSimHost"].asString(); - mCrashHost += ":12043/crash/report"; - // Use login servers as the alternate, since they are already load balanced and have a known name - // First, check to see if we have a valid grid name. If not, use agni. - mAltCrashHost = "https://login."; - if(mDebugLog["GridName"].asString() != "") - { - mAltCrashHost += mDebugLog["GridName"].asString(); - } - else + if(mDebugLog.has("CurrentSimHost")) { - mAltCrashHost += "agni"; + mCrashHost = "https://"; + mCrashHost += mDebugLog["CurrentSimHost"].asString(); + mCrashHost += ":12043/crash/report"; } - mAltCrashHost += ".lindenlab.com:12043/crash/report"; + // Use login servers as the alternate, since they are already load balanced and have a known name + mAltCrashHost = "https://login.agni.lindenlab.com:12043/crash/report"; mCrashInfo["DebugLog"] = mDebugLog; mFileMap["StatsLog"] = gDirUtilp->getExpandedFilename(LL_PATH_LOGS,"stats.log"); @@ -218,6 +212,26 @@ bool LLCrashLogger::saveCrashBehaviorSetting(S32 crash_behavior) return true; } +bool LLCrashLogger::runCrashLogPost(LLString host, LLSD data, LLString msg, int retries, int timeout) +{ + gBreak = false; + LLString status_message; + for(int i = 0; i < retries; ++i) + { + status_message = llformat("%s, try %d...", msg.c_str(), i+1); + LLHTTPClient::post(host, data, new LLCrashLoggerResponder(), timeout); + while(!gBreak) + { + updateApplication(status_message); + } + if(gSent) + { + return gSent; + } + } + return gSent; +} + bool LLCrashLogger::sendCrashLogs() { gatherFiles(); @@ -234,27 +248,20 @@ bool LLCrashLogger::sendCrashLogs() std::ofstream out_file(report_file.c_str()); LLSDSerialize::toPrettyXML(post_data, out_file); out_file.close(); - LLHTTPClient::post(mCrashHost, post_data, new LLCrashLoggerResponder(), 5); - gBreak = false; - while(!gBreak) + bool sent = false; + + if(mCrashHost != "") { - updateApplication("Sending logs..."); + sent = runCrashLogPost(mCrashHost, post_data, "Sending to server", 3, 5); } - if(!gSent) + if(!sent) { - gBreak = false; - LLHTTPClient::post(mAltCrashHost, post_data, new LLCrashLoggerResponder(), 5); - - while(!gBreak) - { - updateApplication("Sending logs to Alternate Server..."); - } + sent = runCrashLogPost(mAltCrashHost, post_data, "Sending to alternate server", 3, 5); } - - mSentCrashLogs = gSent; + mSentCrashLogs = sent; return true; } diff --git a/linden/indra/llcrashlogger/llcrashlogger.h b/linden/indra/llcrashlogger/llcrashlogger.h index d5618b7..bf51e71 100755 --- a/linden/indra/llcrashlogger/llcrashlogger.h +++ b/linden/indra/llcrashlogger/llcrashlogger.h @@ -56,11 +56,11 @@ public: virtual bool cleanup() { return true; } void setUserText(LLString& text) { mCrashInfo["UserNotes"] = text; } S32 getCrashBehavior() { return mCrashBehavior; } + bool runCrashLogPost(LLString host, LLSD data, LLString msg, int retries, int timeout); protected: S32 mCrashBehavior; BOOL mCrashInPreviousExec; std::map mFileMap; - static const int mMaxSendSize = 200000; LLString mGridName; LLControlGroup mCrashSettings; LLString mProductName; diff --git a/linden/indra/llimage/llimage.cpp b/linden/indra/llimage/llimage.cpp index b9bf26a..15da71a 100644 --- a/linden/indra/llimage/llimage.cpp +++ b/linden/indra/llimage/llimage.cpp @@ -144,7 +144,10 @@ U8* LLImageBase::allocateData(S32 size) mData = new U8[size]; if (!mData) { - llerrs << "allocate image data: " << size << llendl; + //llerrs << "allocate image data: " << size << llendl; + llwarns << "allocate image data: " << size << llendl; + size = 0 ; + mWidth = mHeight = 0 ; } mDataSize = size; } @@ -1340,7 +1343,7 @@ S32 LLImageFormatted::calcDiscardLevelBytes(S32 bytes) //---------------------------------------------------------------------------- // Subclasses that can handle more than 4 channels should override this function. -BOOL LLImageFormatted::decode(LLImageRaw* raw_image,F32 decode_time, S32 first_channel, S32 max_channel) +BOOL LLImageFormatted::decodeChannels(LLImageRaw* raw_image,F32 decode_time, S32 first_channel, S32 max_channel) { llassert( (first_channel == 0) && (max_channel == 4) ); return decode( raw_image, decode_time ); // Loads first 4 channels by default. diff --git a/linden/indra/llimage/llimage.h b/linden/indra/llimage/llimage.h index ef736ec..8546303 100644 --- a/linden/indra/llimage/llimage.h +++ b/linden/indra/llimage/llimage.h @@ -268,11 +268,11 @@ public: void appendData(U8 *data, S32 size); // Loads first 4 channels. - virtual BOOL decode(LLImageRaw* raw_image, F32 decode_time=0.0) = 0; + virtual BOOL decode(LLImageRaw* raw_image, F32 decode_time) = 0; // Subclasses that can handle more than 4 channels should override this function. - virtual BOOL decode(LLImageRaw* raw_image, F32 decode_time, S32 first_channel, S32 max_channel); + virtual BOOL decodeChannels(LLImageRaw* raw_image, F32 decode_time, S32 first_channel, S32 max_channel); - virtual BOOL encode(const LLImageRaw* raw_image, F32 encode_time=0.0) = 0; + virtual BOOL encode(const LLImageRaw* raw_image, F32 encode_time) = 0; S8 getCodec() const; BOOL isDecoding() const { return mDecoding ? TRUE : FALSE; } diff --git a/linden/indra/llimage/llimagebmp.h b/linden/indra/llimage/llimagebmp.h index 8c83bc5..2b25c43 100644 --- a/linden/indra/llimage/llimagebmp.h +++ b/linden/indra/llimage/llimagebmp.h @@ -45,8 +45,8 @@ public: LLImageBMP(); /*virtual*/ BOOL updateData(); - /*virtual*/ BOOL decode(LLImageRaw* raw_image, F32 time=0.0); - /*virtual*/ BOOL encode(const LLImageRaw* raw_image, F32 time=0.0); + /*virtual*/ BOOL decode(LLImageRaw* raw_image, F32 decode_time); + /*virtual*/ BOOL encode(const LLImageRaw* raw_image, F32 encode_time); protected: BOOL decodeColorTable8( U8* dst, U8* src ); diff --git a/linden/indra/llimage/llimagedxt.cpp b/linden/indra/llimage/llimagedxt.cpp index 722ac9b..d3b8225 100644 --- a/linden/indra/llimage/llimagedxt.cpp +++ b/linden/indra/llimage/llimagedxt.cpp @@ -308,7 +308,7 @@ BOOL LLImageDXT::getMipData(LLPointer& raw, S32 discard) return TRUE; } -BOOL LLImageDXT::encode(const LLImageRaw* raw_image, F32 time, bool explicit_mips) +BOOL LLImageDXT::encodeDXT(const LLImageRaw* raw_image, F32 time, bool explicit_mips) { llassert_always(raw_image); @@ -396,7 +396,7 @@ BOOL LLImageDXT::encode(const LLImageRaw* raw_image, F32 time, bool explicit_mip // virtual BOOL LLImageDXT::encode(const LLImageRaw* raw_image, F32 time) { - return encode(raw_image, time, false); + return encodeDXT(raw_image, time, false); } // virtual diff --git a/linden/indra/llimage/llimagedxt.h b/linden/indra/llimage/llimagedxt.h index c795d4e..f144c21 100644 --- a/linden/indra/llimage/llimagedxt.h +++ b/linden/indra/llimage/llimagedxt.h @@ -95,15 +95,17 @@ public: protected: /*virtual*/ ~LLImageDXT(); + +private: + BOOL encodeDXT(const LLImageRaw* raw_image, F32 decode_time, bool explicit_mips); public: LLImageDXT(); /*virtual*/ BOOL updateData(); - /*virtual*/ BOOL decode(LLImageRaw* raw_image, F32 time=0.0); - BOOL encode(const LLImageRaw* raw_image, F32 time, bool explicit_mips); - /*virtual*/ BOOL encode(const LLImageRaw* raw_image, F32 time=0.0); + /*virtual*/ BOOL decode(LLImageRaw* raw_image, F32 decode_time); + /*virtual*/ BOOL encode(const LLImageRaw* raw_image, F32 encode_time); /*virtual*/ S32 calcHeaderSize(); /*virtual*/ S32 calcDataSize(S32 discard_level = 0); diff --git a/linden/indra/llimage/llimagej2c.cpp b/linden/indra/llimage/llimagej2c.cpp index 0011296..9de4d5f 100644 --- a/linden/indra/llimage/llimagej2c.cpp +++ b/linden/indra/llimage/llimagej2c.cpp @@ -250,11 +250,11 @@ BOOL LLImageJ2C::updateData() BOOL LLImageJ2C::decode(LLImageRaw *raw_imagep, F32 decode_time) { - return decode(raw_imagep, decode_time, 0, 4); + return decodeChannels(raw_imagep, decode_time, 0, 4); } -BOOL LLImageJ2C::decode(LLImageRaw *raw_imagep, F32 decode_time, S32 first_channel, S32 max_channel_count ) +BOOL LLImageJ2C::decodeChannels(LLImageRaw *raw_imagep, F32 decode_time, S32 first_channel, S32 max_channel_count ) { LLMemType mt1((LLMemType::EMemType)mMemType); diff --git a/linden/indra/llimage/llimagej2c.h b/linden/indra/llimage/llimagej2c.h index da844a1..7e02c98 100644 --- a/linden/indra/llimage/llimagej2c.h +++ b/linden/indra/llimage/llimagej2c.h @@ -46,9 +46,9 @@ public: // Base class overrides /*virtual*/ BOOL updateData(); - /*virtual*/ BOOL decode(LLImageRaw *raw_imagep, F32 decode_time=0.0); - /*virtual*/ BOOL decode(LLImageRaw *raw_imagep, F32 decode_time, S32 first_channel, S32 max_channel_count); - /*virtual*/ BOOL encode(const LLImageRaw *raw_imagep, F32 encode_time=0.0); + /*virtual*/ BOOL decode(LLImageRaw *raw_imagep, F32 decode_time); + /*virtual*/ BOOL decodeChannels(LLImageRaw *raw_imagep, F32 decode_time, S32 first_channel, S32 max_channel_count); + /*virtual*/ BOOL encode(const LLImageRaw *raw_imagep, F32 encode_time); /*virtual*/ S32 calcHeaderSize(); /*virtual*/ S32 calcDataSize(S32 discard_level = 0); /*virtual*/ S32 calcDiscardLevelBytes(S32 bytes); diff --git a/linden/indra/llimage/llimagejpeg.h b/linden/indra/llimage/llimagejpeg.h index b143c47..a890bf4 100644 --- a/linden/indra/llimage/llimagejpeg.h +++ b/linden/indra/llimage/llimagejpeg.h @@ -55,8 +55,8 @@ public: LLImageJPEG(); /*virtual*/ BOOL updateData(); - /*virtual*/ BOOL decode(LLImageRaw* raw_image, F32 time=0.0); - /*virtual*/ BOOL encode(const LLImageRaw* raw_image, F32 time=0.0); + /*virtual*/ BOOL decode(LLImageRaw* raw_image, F32 decode_time); + /*virtual*/ BOOL encode(const LLImageRaw* raw_image, F32 encode_time); void setEncodeQuality( S32 q ) { mEncodeQuality = q; } // on a scale from 1 to 100 S32 getEncodeQuality() { return mEncodeQuality; } diff --git a/linden/indra/llimage/llimagepng.h b/linden/indra/llimage/llimagepng.h index 982454a..7ca59cf 100644 --- a/linden/indra/llimage/llimagepng.h +++ b/linden/indra/llimage/llimagepng.h @@ -43,8 +43,8 @@ public: LLImagePNG(); BOOL updateData(); - BOOL decode(LLImageRaw* raw_image, F32 decode_time = 0.0); - BOOL encode(const LLImageRaw* raw_image, F32 encode_time = 0.0); + BOOL decode(LLImageRaw* raw_image, F32 decode_time); + BOOL encode(const LLImageRaw* raw_image, F32 encode_time); private: U8* mTmpWriteBuffer; diff --git a/linden/indra/llimage/llimageworker.cpp b/linden/indra/llimage/llimageworker.cpp index 2800caf..dc6f2e4 100644 --- a/linden/indra/llimage/llimageworker.cpp +++ b/linden/indra/llimage/llimageworker.cpp @@ -115,7 +115,7 @@ bool LLImageWorker::doWork(S32 param) else { // Decode aux channel - decoded = mFormattedImage->decode(mDecodedImage, .1f, param, param); // 1ms + decoded = mFormattedImage->decodeChannels(mDecodedImage, .1f, param, param); // 1ms } } if (decoded) diff --git a/linden/indra/llinventory/llinventory.cpp b/linden/indra/llinventory/llinventory.cpp index e6c1175..3afa2be 100644 --- a/linden/indra/llinventory/llinventory.cpp +++ b/linden/indra/llinventory/llinventory.cpp @@ -99,7 +99,7 @@ LLInventoryObject::~LLInventoryObject( void ) { } -void LLInventoryObject::copy(const LLInventoryObject* other) +void LLInventoryObject::copyObject(const LLInventoryObject* other) { mUUID = other->mUUID; mParentUUID = other->mParentUUID; @@ -309,7 +309,7 @@ LLInventoryItem::LLInventoryItem() : LLInventoryItem::LLInventoryItem(const LLInventoryItem* other) : LLInventoryObject() { - copy(other); + copyItem(other); } LLInventoryItem::~LLInventoryItem() @@ -317,9 +317,9 @@ LLInventoryItem::~LLInventoryItem() } // virtual -void LLInventoryItem::copy(const LLInventoryItem* other) +void LLInventoryItem::copyItem(const LLInventoryItem* other) { - LLInventoryObject::copy(other); + copyObject(other); mPermissions = other->mPermissions; mAssetUUID = other->mAssetUUID; mDescription = other->mDescription; @@ -331,10 +331,10 @@ void LLInventoryItem::copy(const LLInventoryItem* other) // As a constructor alternative, the clone() method works like a // copy constructor, but gens a new UUID. -void LLInventoryItem::clone(LLPointer& newitem) const +void LLInventoryItem::cloneItem(LLPointer& newitem) const { newitem = new LLInventoryItem; - newitem->copy(this); + newitem->copyItem(this); newitem->mUUID.generate(); } @@ -1334,7 +1334,7 @@ LLInventoryCategory::LLInventoryCategory() : LLInventoryCategory::LLInventoryCategory(const LLInventoryCategory* other) : LLInventoryObject() { - copy(other); + copyCategory(other); } LLInventoryCategory::~LLInventoryCategory() @@ -1342,9 +1342,9 @@ LLInventoryCategory::~LLInventoryCategory() } // virtual -void LLInventoryCategory::copy(const LLInventoryCategory* other) +void LLInventoryCategory::copyCategory(const LLInventoryCategory* other) { - LLInventoryObject::copy(other); + copyObject(other); mPreferredType = other->mPreferredType; } diff --git a/linden/indra/llinventory/llinventory.h b/linden/indra/llinventory/llinventory.h index 3662d63..1623edf 100644 --- a/linden/indra/llinventory/llinventory.h +++ b/linden/indra/llinventory/llinventory.h @@ -85,7 +85,7 @@ public: LLInventoryObject(const LLUUID& uuid, const LLUUID& parent_uuid, LLAssetType::EType type, const LLString& name); LLInventoryObject(); - virtual void copy(const LLInventoryObject* other); // LLRefCount requires custom copy + void copyObject(const LLInventoryObject* other); // LLRefCount requires custom copy // accessors const LLUUID& getUUID() const; @@ -194,12 +194,12 @@ public: // Note: Because InventoryItems are ref counted, reference copy (a = b) // is prohibited LLInventoryItem(const LLInventoryItem* other); - virtual void copy(const LLInventoryItem* other); // LLRefCount requires custom copy + virtual void copyItem(const LLInventoryItem* other); // LLRefCount requires custom copy // As a constructor alternative, the clone() method works like a // copy constructor, but gens a new UUID. // It is up to the caller to delete (unref) the item. - virtual void clone(LLPointer& newitem) const; + virtual void cloneItem(LLPointer& newitem) const; // accessors const LLPermissions& getPermissions() const; @@ -278,7 +278,7 @@ public: const LLString& name); LLInventoryCategory(); LLInventoryCategory(const LLInventoryCategory* other); - virtual void copy(const LLInventoryCategory* other); // LLRefCount requires custom copy + void copyCategory(const LLInventoryCategory* other); // LLRefCount requires custom copy // accessors and mutators LLAssetType::EType getPreferredType() const; diff --git a/linden/indra/llmath/lloctree.h b/linden/indra/llmath/lloctree.h index 203cb41..52ad1bb 100644 --- a/linden/indra/llmath/lloctree.h +++ b/linden/indra/llmath/lloctree.h @@ -567,8 +567,6 @@ public: { } - bool isLeaf() { return false; } - bool balance() { if (this->getChildCount() == 1 && diff --git a/linden/indra/llmath/llvolume.cpp b/linden/indra/llmath/llvolume.cpp index 7403724..4f1c260 100644 --- a/linden/indra/llmath/llvolume.cpp +++ b/linden/indra/llmath/llvolume.cpp @@ -1859,7 +1859,7 @@ inline U32 sculpt_xy_to_index(U32 x, U32 y, U16 sculpt_width, U16 sculpt_height, U32 index = (x + y * sculpt_width) * sculpt_components; // attempt to resolve DEV-11158 - remove assert later. - llassert(index < sculpt_width * sculpt_height * sculpt_components); + //llassert(index < sculpt_width * sculpt_height * sculpt_components); return index; } diff --git a/linden/indra/llmath/llvolumemgr.cpp b/linden/indra/llmath/llvolumemgr.cpp index 4bf7ca6..db99959 100644 --- a/linden/indra/llmath/llvolumemgr.cpp +++ b/linden/indra/llmath/llvolumemgr.cpp @@ -229,12 +229,6 @@ LLVolumeLODGroup::LLVolumeLODGroup(const LLVolumeParams ¶ms) LLVolumeLODGroup::~LLVolumeLODGroup() { - S32 i; - for (i = 0; i < NUM_LODS; i++) - { - delete mVolumeLODs[i]; - mVolumeLODs[i] = NULL; - } } @@ -242,11 +236,12 @@ LLVolume * LLVolumeLODGroup::getLOD(const S32 detail) { llassert(detail >=0 && detail < NUM_LODS); mAccessCount[detail]++; - mLODRefs[detail]++; - if (!mVolumeLODs[detail]) + + if (!mLODRefs[detail]) { mVolumeLODs[detail] = new LLVolume(mParams, mDetailScales[detail]); } + mLODRefs[detail]++; return mVolumeLODs[detail]; } diff --git a/linden/indra/llmath/llvolumemgr.h b/linden/indra/llmath/llvolumemgr.h index 0d6aa56..889bc56 100644 --- a/linden/indra/llmath/llvolumemgr.h +++ b/linden/indra/llmath/llvolumemgr.h @@ -69,7 +69,7 @@ protected: LLVolumeParams mParams; S32 mLODRefs[NUM_LODS]; - LLVolume *mVolumeLODs[NUM_LODS]; + LLPointer mVolumeLODs[NUM_LODS]; static F32 mDetailThresholds[NUM_LODS]; static F32 mDetailScales[NUM_LODS]; S32 mAccessCount[NUM_LODS]; diff --git a/linden/indra/llmedia/llmediaimplgstreamer.cpp b/linden/indra/llmedia/llmediaimplgstreamer.cpp index b54d088..8b0363a 100644 --- a/linden/indra/llmedia/llmediaimplgstreamer.cpp +++ b/linden/indra/llmedia/llmediaimplgstreamer.cpp @@ -185,11 +185,15 @@ startup ( LLMediaManagerData* init_data ) else WARNMSG("gst_segtrap_set_enabled() is not available; Automated crash-reporter may cease to function until next restart."); + // Protect against GStreamer resetting the locale, yuck. + std::string saved_locale = setlocale(LC_ALL, NULL); if (0 == llgst_init_check(NULL, NULL, NULL)) { WARNMSG("GST init failed for unspecified reason."); + setlocale(LC_ALL, saved_locale.c_str() ); return false; } + setlocale(LC_ALL, saved_locale.c_str() ); // Init our custom plugins - only really need do this once. gst_slvideo_init_class(); diff --git a/linden/indra/llmedia/llmediaimplgstreamer_syms.cpp b/linden/indra/llmedia/llmediaimplgstreamer_syms.cpp index bba3ef5..c5e3c7b 100644 --- a/linden/indra/llmedia/llmediaimplgstreamer_syms.cpp +++ b/linden/indra/llmedia/llmediaimplgstreamer_syms.cpp @@ -124,7 +124,7 @@ bool grab_gst_syms(std::string gst_dso_name, } else { - INFOMSG("Couldn't load DSO: ", gst_dso_name.c_str()); + INFOMSG("Couldn't load DSO: %s", gst_dso_name.c_str()); rtn = false; // failure } diff --git a/linden/indra/llmedia/llmediaimplllmozlib.cpp b/linden/indra/llmedia/llmediaimplllmozlib.cpp index 87d9c77..5efaa59 100644 --- a/linden/indra/llmedia/llmediaimplllmozlib.cpp +++ b/linden/indra/llmedia/llmediaimplllmozlib.cpp @@ -47,7 +47,10 @@ // Linux, MESA headers, but not necessarily assuming MESA runtime. // quotes so we get libraries/.../GL/ version #include "GL/gl.h" - #include +#endif + +#if LL_LINUX + #include #endif #include @@ -59,7 +62,8 @@ static LLMediaImplRegister sLLMediaImplLLMozLibReg( "LLMediaImplLLMozLib", new L // LLMediaImplLLMozLibMaker::LLMediaImplLLMozLibMaker() { - // Register to handle the scheme + // Register to handle the mime category + mMimeTypes.push_back( "image/svg+xml" ); mMimeTypeCategories.push_back( "text" ); #if !LL_QUICKTIME_ENABLED mMimeTypeCategories.push_back( "image" ); @@ -198,17 +202,9 @@ bool LLMediaImplLLMozLib::setCaretColor( unsigned int red, unsigned int green, u // virtual bool LLMediaImplLLMozLib::navigateTo( const std::string url ) { -#if LL_LINUX - std::string saved_locale = setlocale(LC_ALL, NULL); -#endif // LL_LINUX - // pass url to llmozlib LLMozLib::getInstance()->navigateTo( mWindowId, url ); -#if LL_LINUX - setlocale(LC_ALL, saved_locale.c_str() ); -#endif // LL_LINUX - // emit event with size change to kick things off LLMediaEvent event( this ); mEventEmitter.update( &LLMediaObserver::onMediaSizeChange, event ); @@ -264,10 +260,6 @@ bool LLMediaImplLLMozLib::updateState() clearCommand(); }; -#if LL_LINUX - std::string saved_locale = setlocale(LC_ALL, NULL); -#endif // LL_LINUX - if ( nextCommand() == LLMediaBase::COMMAND_BACK ) { setStatus( LLMediaBase::STATUS_STARTED ); @@ -282,10 +274,6 @@ bool LLMediaImplLLMozLib::updateState() clearCommand(); }; -#if LL_LINUX - setlocale(LC_ALL, saved_locale.c_str() ); -#endif // LL_LINUX - return true; } @@ -382,16 +370,8 @@ bool LLMediaImplLLMozLib::recomputeSizes() new_height = LLMediaManager::textureHeightFromMediaHeight( new_height ); } -#if LL_LINUX - std::string saved_locale = setlocale(LC_ALL, NULL); -#endif // LL_LINUX - bool status = LLMozLib::getInstance()->setSize( mWindowId, new_width, new_height ); -#if LL_LINUX - setlocale(LC_ALL, saved_locale.c_str() ); -#endif // LL_LINUX - if (status) setMediaSize(new_width, new_height); @@ -623,20 +603,12 @@ bool LLMediaImplLLMozLib::clearCookies() // virtual bool LLMediaImplLLMozLib::reset() { -#if LL_LINUX - std::string saved_locale = setlocale(LC_ALL, NULL); -#endif // LL_LINUX - LLMozLib::getInstance()->remObserver( mWindowId, this ); LLMozLib::getInstance()->destroyBrowserWindow( mWindowId ); mWindowId = 0; -#if LL_LINUX - setlocale(LC_ALL, saved_locale.c_str() ); -#endif // LL_LINUX - return true; } diff --git a/linden/indra/llmessage/llblowfishcipher.cpp b/linden/indra/llmessage/llblowfishcipher.cpp index cdaa096..45ff045 100644 --- a/linden/indra/llmessage/llblowfishcipher.cpp +++ b/linden/indra/llmessage/llblowfishcipher.cpp @@ -2,9 +2,6 @@ * @file llblowfishcipher.cpp * @brief Wrapper around OpenSSL Blowfish encryption algorithm. * - * We do not have OpenSSL headers or libraries on Windows, so this - * class only works on Linux. - * * $LicenseInfo:firstyear=2007&license=viewergpl$ * * Copyright (c) 2007-2008, Linden Research, Inc. diff --git a/linden/indra/llmessage/llcurl.h b/linden/indra/llmessage/llcurl.h index 3d9770b..2737f6e 100644 --- a/linden/indra/llmessage/llcurl.h +++ b/linden/indra/llmessage/llcurl.h @@ -150,13 +150,10 @@ public: static std::vector sSSLMutex; // OpenSSL callbacks - static void LLCurl::ssl_locking_callback(int mode, int type, const char *file, int line); - static unsigned long LLCurl::ssl_thread_id(void); - - - -private: + static void ssl_locking_callback(int mode, int type, const char *file, int line); + static unsigned long ssl_thread_id(void); +private: static std::string sCAPath; static std::string sCAFile; }; diff --git a/linden/indra/llmessage/llhttpnode.cpp b/linden/indra/llmessage/llhttpnode.cpp index afd27e9..540b507 100644 --- a/linden/indra/llmessage/llhttpnode.cpp +++ b/linden/indra/llmessage/llhttpnode.cpp @@ -169,15 +169,9 @@ void LLHTTPNode::del(LLHTTPNode::ResponsePtr response, const LLSD& context) cons } // virtual -LLSD LLHTTPNode::del() const -{ - throw NotImplemented(); -} - -// virtual LLSD LLHTTPNode::del(const LLSD&) const { - return del(); + throw NotImplemented(); } diff --git a/linden/indra/llmessage/llhttpnode.h b/linden/indra/llmessage/llhttpnode.h index b4d4aed..7d9cb95 100644 --- a/linden/indra/llmessage/llhttpnode.h +++ b/linden/indra/llmessage/llhttpnode.h @@ -86,7 +86,6 @@ public: virtual LLSD put(const LLSD& input) const; virtual LLSD post(const LLSD& input) const; - virtual LLSD del() const; virtual LLSD del(const LLSD& context) const; class Response : public LLRefCount @@ -109,6 +108,7 @@ public: virtual void get(ResponsePtr, const LLSD& context) const; virtual void put(ResponsePtr, const LLSD& context, const LLSD& input) const; virtual void post(ResponsePtr, const LLSD& context, const LLSD& input) const; + virtual void del(ResponsePtr, const LLSD& context) const; //@} diff --git a/linden/indra/llmessage/llpartdata.cpp b/linden/indra/llmessage/llpartdata.cpp index 606abd0..b77536d 100644 --- a/linden/indra/llmessage/llpartdata.cpp +++ b/linden/indra/llmessage/llpartdata.cpp @@ -155,6 +155,8 @@ void LLPartData::setEndAlpha(const F32 alpha) LLPartSysData::LLPartSysData() { mCRC = 0; + mFlags = 0; + mPartData.mFlags = 0; mPartData.mStartColor = LLColor4(1.f, 1.f, 1.f, 1.f); mPartData.mEndColor = LLColor4(1.f, 1.f, 1.f, 1.f); @@ -172,6 +174,8 @@ LLPartSysData::LLPartSysData() mBurstSpeedMin = 1.f; // Minimum particle velocity mBurstSpeedMax = 1.f; // Maximum particle velocity mBurstRadius = 0.f; + + mNumParticles = 0; } diff --git a/linden/indra/llmessage/llpartdata.h b/linden/indra/llmessage/llpartdata.h index 216e547..82757ec 100644 --- a/linden/indra/llmessage/llpartdata.h +++ b/linden/indra/llmessage/llpartdata.h @@ -84,7 +84,8 @@ class LLPartData public: LLPartData() : mFlags(0), - mMaxAge(0) + mMaxAge(0.f), + mParameter(0.f) { } BOOL unpack(LLDataPacker &dp); @@ -108,7 +109,7 @@ public: LL_PART_BEAM_MASK = 0x200, // Particle is a "beam" connecting source and target // Not implemented yet! - //LL_PART_RANDOM_ACCEL_MASK = 0x100, // Patricles have random accelearation + //LL_PART_RANDOM_ACCEL_MASK = 0x100, // Particles have random acceleration //LL_PART_RANDOM_VEL_MASK = 0x200, // Particles have random velocity shifts" //LL_PART_TRAIL_MASK = 0x400, // Particles have historical "trails" diff --git a/linden/indra/llrender/llfontgl.cpp b/linden/indra/llrender/llfontgl.cpp index bb60b70..9298e8c 100644 --- a/linden/indra/llrender/llfontgl.cpp +++ b/linden/indra/llrender/llfontgl.cpp @@ -234,10 +234,10 @@ bool LLFontGL::loadFaceFallback(LLFontList *fontlistp, const LLString& fontname, { LLFont *fontp = new LLFont(); LLString font_path = local_path + *token_iter; - if (!fontp->loadFace(font_path.c_str(), point_size, sVertDPI, sHorizDPI, 2, TRUE)) + if (!fontp->loadFace(font_path, point_size, sVertDPI, sHorizDPI, 2, TRUE)) { font_path = sys_path + *token_iter; - if (!fontp->loadFace(font_path.c_str(), point_size, sVertDPI, sHorizDPI, 2, TRUE)) + if (!fontp->loadFace(font_path, point_size, sVertDPI, sHorizDPI, 2, TRUE)) { llwarns << "Couldn't load font " << *token_iter << llendl; delete fontp; @@ -260,11 +260,11 @@ bool LLFontGL::loadFace(LLFontGL *fontp, const LLString& fontname, const F32 poi { LLString local_path = getFontPathLocal(); LLString font_path = local_path + fontname; - if (!fontp->loadFace(font_path.c_str(), point_size, sVertDPI, sHorizDPI)) + if (!fontp->loadFace(font_path, point_size, sVertDPI, sHorizDPI, 2, FALSE)) { LLString sys_path = getFontPathSystem(); font_path = sys_path + fontname; - if (!fontp->loadFace(font_path.c_str(), point_size, sVertDPI, sHorizDPI)) + if (!fontp->loadFace(font_path, point_size, sVertDPI, sHorizDPI, 2, FALSE)) { llwarns << "Couldn't load font " << fontname << llendl; return false; @@ -505,9 +505,11 @@ LLFontGL &LLFontGL::operator=(const LLFontGL &source) return *this; } -BOOL LLFontGL::loadFace(const LLString& filename, const F32 point_size, const F32 vert_dpi, const F32 horz_dpi) +BOOL LLFontGL::loadFace(const std::string& filename, + const F32 point_size, const F32 vert_dpi, const F32 horz_dpi, + const S32 components, BOOL is_fallback) { - if (!LLFont::loadFace(filename, point_size, vert_dpi, horz_dpi, 2, FALSE)) + if (!LLFont::loadFace(filename, point_size, vert_dpi, horz_dpi, components, is_fallback)) { return FALSE; } diff --git a/linden/indra/llrender/llfontgl.h b/linden/indra/llrender/llfontgl.h index f740039..ce55385 100644 --- a/linden/indra/llrender/llfontgl.h +++ b/linden/indra/llrender/llfontgl.h @@ -97,7 +97,9 @@ public: static bool loadFaceFallback(LLFontList *fontp, const LLString& fontname, const F32 point_size); static bool loadFace(LLFontGL *fontp, const LLString& fontname, const F32 point_size, LLFontList *fallback_fontp); - BOOL loadFace(const LLString& filename, const F32 point_size, const F32 vert_dpi, const F32 horz_dpi); + /* virtual*/ BOOL loadFace(const std::string& filename, + const F32 point_size, const F32 vert_dpi, const F32 horz_dpi, + const S32 components, BOOL is_fallback); S32 renderUTF8(const LLString &text, const S32 begin_offset, diff --git a/linden/indra/llui/llcheckboxctrl.h b/linden/indra/llui/llcheckboxctrl.h index 1f92708..6df0e77 100644 --- a/linden/indra/llui/llcheckboxctrl.h +++ b/linden/indra/llui/llcheckboxctrl.h @@ -83,7 +83,7 @@ public: virtual void setEnabled( BOOL b ); virtual void draw(); - virtual void reshape(S32 width, S32 height, BOOL called_from_parent); + virtual void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE); // LLUICtrl interface virtual void setValue(const LLSD& value ); diff --git a/linden/indra/llui/lldraghandle.h b/linden/indra/llui/lldraghandle.h index cb9924d..88e16dc 100644 --- a/linden/indra/llui/lldraghandle.h +++ b/linden/indra/llui/lldraghandle.h @@ -57,7 +57,6 @@ public: virtual void setTitle( const LLString& title ) = 0; virtual const LLString& getTitle() const = 0; - virtual void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE) = 0; virtual BOOL handleHover(S32 x, S32 y, MASK mask); virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask); diff --git a/linden/indra/llui/llfloater.cpp b/linden/indra/llui/llfloater.cpp index 493e68f..1e825d3 100644 --- a/linden/indra/llui/llfloater.cpp +++ b/linden/indra/llui/llfloater.cpp @@ -154,7 +154,7 @@ LLFloater::LLFloater(const LLString& name) mButtons[i] = NULL; } LLString title; // null string - init(title, FALSE, DEFAULT_MIN_WIDTH, DEFAULT_MIN_HEIGHT, FALSE, TRUE, TRUE); // defaults + initFloater(title, FALSE, DEFAULT_MIN_WIDTH, DEFAULT_MIN_HEIGHT, FALSE, TRUE, TRUE); // defaults } @@ -173,7 +173,7 @@ LLFloater::LLFloater(const LLString& name, const LLRect& rect, const LLString& t mButtonsEnabled[i] = FALSE; mButtons[i] = NULL; } - init( title, resizable, min_width, min_height, drag_on_left, minimizable, close_btn); + initFloater( title, resizable, min_width, min_height, drag_on_left, minimizable, close_btn); } LLFloater::LLFloater(const LLString& name, const LLString& rect_control, const LLString& title, @@ -191,12 +191,12 @@ LLFloater::LLFloater(const LLString& name, const LLString& rect_control, const L mButtonsEnabled[i] = FALSE; mButtons[i] = NULL; } - init( title, resizable, min_width, min_height, drag_on_left, minimizable, close_btn); + initFloater( title, resizable, min_width, min_height, drag_on_left, minimizable, close_btn); } // Note: Floaters constructed from XML call init() twice! -void LLFloater::init(const LLString& title, +void LLFloater::initFloater(const LLString& title, BOOL resizable, S32 min_width, S32 min_height, BOOL drag_on_left, BOOL minimizable, BOOL close_btn) { @@ -576,6 +576,11 @@ void LLFloater::close(bool app_quitting) } } +/*virtual*/ +void LLFloater::reshape(S32 width, S32 height, BOOL called_from_parent) +{ + LLPanel::reshape(width, height, called_from_parent); +} void LLFloater::releaseFocus() { @@ -777,8 +782,6 @@ void LLFloater::setMinimized(BOOL minimize) { mExpandedRect = getRect(); - reshape( MINIMIZED_WIDTH, LLFLOATER_HEADER_SIZE, TRUE); - // If the floater has been dragged while minimized in the // past, then locate it at its previous minimized location. // Otherwise, ask the view for a minimize position. @@ -841,6 +844,9 @@ void LLFloater::setMinimized(BOOL minimize) releaseFocus(); mMinimized = TRUE; + + // Reshape *after* setting mMinimized + reshape( MINIMIZED_WIDTH, LLFLOATER_HEADER_SIZE, TRUE); } else { @@ -853,7 +859,6 @@ void LLFloater::setMinimized(BOOL minimize) mPreviousMinimizedBottom = currentRect.mBottom; } - reshape( mExpandedRect.getWidth(), mExpandedRect.getHeight(), TRUE ); setOrigin( mExpandedRect.mLeft, mExpandedRect.mBottom ); if (mButtonsEnabled[BUTTON_RESTORE]) @@ -894,6 +899,9 @@ void LLFloater::setMinimized(BOOL minimize) } mMinimized = FALSE; + + // Reshape *after* setting mMinimized + reshape( mExpandedRect.getWidth(), mExpandedRect.getHeight(), TRUE ); } make_ui_sound("UISndWindowClose"); updateButtons(); @@ -1633,11 +1641,11 @@ LLFloaterView::LLFloaterView( const LLString& name, const LLRect& rect ) // By default, adjust vertical. void LLFloaterView::reshape(S32 width, S32 height, BOOL called_from_parent) { - reshape(width, height, called_from_parent, ADJUST_VERTICAL_YES); + reshapeFloater(width, height, called_from_parent, ADJUST_VERTICAL_YES); } // When reshaping this view, make the floaters follow their closest edge. -void LLFloaterView::reshape(S32 width, S32 height, BOOL called_from_parent, BOOL adjust_vertical) +void LLFloaterView::reshapeFloater(S32 width, S32 height, BOOL called_from_parent, BOOL adjust_vertical) { S32 old_width = getRect().getWidth(); S32 old_height = getRect().getHeight(); @@ -2894,7 +2902,7 @@ void LLFloater::initFloaterXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactor setRect(rect); setName(name); - init(title, + initFloater(title, resizable, min_width, min_height, diff --git a/linden/indra/llui/llfloater.h b/linden/indra/llui/llfloater.h index 534af16..f0bbcaf 100644 --- a/linden/indra/llui/llfloater.h +++ b/linden/indra/llui/llfloater.h @@ -119,7 +119,7 @@ public: // Can be called multiple times to reset floater parameters. // Deletes all children of the floater. - virtual void init(const LLString& title, BOOL resizable, + virtual void initFloater(const LLString& title, BOOL resizable, S32 min_width, S32 min_height, BOOL drag_on_left, BOOL minimizable, BOOL close_btn); virtual EWidgetType getWidgetType() const { return WIDGET_TYPE_FLOATER; } @@ -130,6 +130,8 @@ public: // If allowed, close the floater cleanly, releasing focus. // app_quitting is passed to onClose() below. virtual void close(bool app_quitting = false); + + /*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE); // Release keyboard and mouse focus void releaseFocus(); @@ -303,8 +305,8 @@ public: virtual EWidgetType getWidgetType() const { return WIDGET_TYPE_FLOATER_VIEW; } virtual LLString getWidgetTag() const { return LL_FLOATER_VIEW_TAG; } - /*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent); - void reshape(S32 width, S32 height, BOOL called_from_parent, BOOL adjust_vertical); + /*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE); + void reshapeFloater(S32 width, S32 height, BOOL called_from_parent, BOOL adjust_vertical); /*virtual*/ void draw(); /*virtual*/ LLRect getSnapRect() const; diff --git a/linden/indra/llui/llmenugl.cpp b/linden/indra/llui/llmenugl.cpp index 4a12870..cb54476 100644 --- a/linden/indra/llui/llmenugl.cpp +++ b/linden/indra/llui/llmenugl.cpp @@ -3068,8 +3068,7 @@ void LLMenuGL::showPopup(LLView* spawning_view, LLMenuGL* menu, S32 x, S32 y) class LLPieMenuBranch : public LLMenuItemGL { public: - LLPieMenuBranch(const LLString& name, const LLString& label, LLPieMenu* branch, - enabled_callback ecb, void* user_data); + LLPieMenuBranch(const LLString& name, const LLString& label, LLPieMenu* branch); virtual EWidgetType getWidgetType() const { return WIDGET_TYPE_PIE_MENU_BRANCH; } virtual LLString getWidgetTag() const { return LL_PIE_MENU_BRANCH_TAG; } @@ -3084,19 +3083,13 @@ public: protected: LLPieMenu* mBranch; - enabled_callback mEnabledCallback; - void* mUserData; }; LLPieMenuBranch::LLPieMenuBranch(const LLString& name, const LLString& label, - LLPieMenu* branch, - enabled_callback ecb, - void* user_data) + LLPieMenu* branch) : LLMenuItemGL( name, label, KEY_NONE, MASK_NONE ), - mBranch( branch ), - mEnabledCallback( ecb ), - mUserData(user_data) + mBranch( branch ) { mBranch->hide(FALSE); mBranch->setParentMenuItem(this); @@ -3105,12 +3098,6 @@ LLPieMenuBranch::LLPieMenuBranch(const LLString& name, // called to rebuild the draw label void LLPieMenuBranch::buildDrawLabel( void ) { - if(mEnabledCallback) - { - setEnabled(mEnabledCallback(mUserData)); - setDrawTextDisabled(FALSE); - } - else { // default enablement is this -- if any of the subitems are // enabled, this item is enabled. JC @@ -3203,7 +3190,7 @@ void LLPieMenu::initXML(LLXMLNodePtr node, LLView *context, LLUICtrlFactory *fac child->getAttributeString("label", label); LLPieMenu *submenu = new LLPieMenu(name, label); - appendMenu(submenu); + appendPieMenu(submenu); submenu->initXML(child, context, factory); } else @@ -3585,17 +3572,14 @@ BOOL LLPieMenu::appendSeparator(const LLString &separator_name) } -// virtual -BOOL LLPieMenu::appendMenu(LLPieMenu *menu, - enabled_callback enabled_cb, - void* user_data) +BOOL LLPieMenu::appendPieMenu(LLPieMenu *menu) { if (menu == this) { llerrs << "Can't attach a pie menu to itself" << llendl; } LLPieMenuBranch *item; - item = new LLPieMenuBranch(menu->getName(), menu->getLabel(), menu, enabled_cb, user_data); + item = new LLPieMenuBranch(menu->getName(), menu->getLabel(), menu); getParent()->addChild(item->getBranch()); item->setFont( LLFontGL::sSansSerifSmall ); return append( item ); diff --git a/linden/indra/llui/llmenugl.h b/linden/indra/llui/llmenugl.h index 4e5ac69..cd39006 100644 --- a/linden/indra/llui/llmenugl.h +++ b/linden/indra/llui/llmenugl.h @@ -524,8 +524,6 @@ public: static void setKeyboardMode(BOOL mode) { sKeyboardMode = mode; } static BOOL getKeyboardMode() { return sKeyboardMode; } - static void onFocusLost(LLView* old_focus); - static class LLMenuHolderGL* sMenuContainer; protected: @@ -666,18 +664,15 @@ public: virtual BOOL append(LLMenuItemGL* item); virtual BOOL appendSeparator( const LLString &separator_name = "separator" ); - // the enabled callback is meant for the submenu. The api works - // this way because the menu branch item responsible for the pie - // submenu is constructed here. - virtual BOOL appendMenu(LLPieMenu *menu, - enabled_callback enabled_cb = NULL, - void* user_data = NULL ); + BOOL appendPieMenu(LLPieMenu *menu); + virtual void arrange( void ); // Display the menu centered on this point on the screen. void show(S32 x, S32 y, BOOL mouse_down); void hide(BOOL item_selected); + private: LLMenuItemGL *pieItemFromXY(S32 x, S32 y); S32 pieItemIndexFromXY(S32 x, S32 y); @@ -763,7 +758,7 @@ public: virtual LLString getWidgetTag() const { return LL_MENU_HOLDER_GL_TAG; } virtual BOOL hideMenus(); - void reshape(S32 width, S32 height, BOOL called_from_parent); + void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE); void setCanHide(BOOL can_hide) { mCanHide = can_hide; } // LLView functionality diff --git a/linden/indra/llui/llmodaldialog.h b/linden/indra/llui/llmodaldialog.h index dd82b25..0199498 100644 --- a/linden/indra/llui/llmodaldialog.h +++ b/linden/indra/llui/llmodaldialog.h @@ -49,7 +49,7 @@ public: /*virtual*/ void open(); /* Flawfinder: ignore */ - /*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent = 1); + /*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE); /*virtual*/ void startModal(); /*virtual*/ void stopModal(); diff --git a/linden/indra/llui/llmultisliderctrl.cpp b/linden/indra/llui/llmultisliderctrl.cpp index 0d23dd7..47e21d8 100644 --- a/linden/indra/llui/llmultisliderctrl.cpp +++ b/linden/indra/llui/llmultisliderctrl.cpp @@ -183,7 +183,7 @@ void LLMultiSliderCtrl::setCurSlider(const LLString& name) mCurValue = mMultiSlider->getCurSliderValue(); } -BOOL LLMultiSliderCtrl::setLabelArg( const LLString& key, const LLString& text ) +BOOL LLMultiSliderCtrl::setLabelArg( const LLString& key, const LLStringExplicit& text ) { BOOL res = FALSE; if (mLabelBox) diff --git a/linden/indra/llui/llmultisliderctrl.h b/linden/indra/llui/llmultisliderctrl.h index 90f43df..5e2d13c 100644 --- a/linden/indra/llui/llmultisliderctrl.h +++ b/linden/indra/llui/llmultisliderctrl.h @@ -81,7 +81,7 @@ public: virtual void setValue(const LLSD& value ); virtual LLSD getValue() const { return mMultiSlider->getValue(); } - virtual BOOL setLabelArg( const LLString& key, const LLString& text ); + virtual BOOL setLabelArg( const LLString& key, const LLStringExplicit& text ); const LLString& getCurSlider() const { return mMultiSlider->getCurSlider(); } F32 getCurSliderValue() const { return mCurValue; } diff --git a/linden/indra/llui/llpanel.cpp b/linden/indra/llui/llpanel.cpp index 9a3f1a2..567d29e 100644 --- a/linden/indra/llui/llpanel.cpp +++ b/linden/indra/llui/llpanel.cpp @@ -715,7 +715,17 @@ LLString LLPanel::getString(const LLString& name, const LLString::format_map_t& formatted_string.setArgList(args); return formatted_string.getString(); } - llerrs << "Failed to find string " << name << " in panel " << getName() << llendl; + LLString err_str("Failed to find string " + name + " in panel " + getName()); + // *TODO: once the QAR-369 ui-cleanup work on settings is in we need to change the following line to be + //if(LLUI::sConfigGroup->getBOOL("QAMode")) + if(LLUI::sQAMode) + { + llerrs << err_str << llendl; + } + else + { + llwarns << err_str << llendl; + } return LLString::null; } diff --git a/linden/indra/llui/llscrollcontainer.h b/linden/indra/llui/llscrollcontainer.h index d512957..51b1527 100644 --- a/linden/indra/llui/llscrollcontainer.h +++ b/linden/indra/llui/llscrollcontainer.h @@ -89,7 +89,7 @@ public: BOOL needsToScroll(S32 x, S32 y, SCROLL_ORIENTATION axis) const; // LLView functionality - virtual void reshape(S32 width, S32 height, BOOL called_from_parent); + virtual void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE); virtual BOOL handleKey(KEY key, MASK mask, BOOL called_from_parent); virtual BOOL handleScrollWheel( S32 x, S32 y, S32 clicks ); virtual BOOL handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, diff --git a/linden/indra/llui/llscrolllistctrl.cpp b/linden/indra/llui/llscrolllistctrl.cpp index eee2bcf..01c37d9 100644 --- a/linden/indra/llui/llscrolllistctrl.cpp +++ b/linden/indra/llui/llscrolllistctrl.cpp @@ -842,6 +842,9 @@ BOOL LLScrollListCtrl::addItem( LLScrollListItem* item, EAddPosition pos, BOOL r return not_too_big; } +// NOTE: This is *very* expensive for large lists, especially when we are dirtying the list every frame +// while receiving a long list of names. +// *TODO: Use bookkeeping to make this an incramental cost with item additions void LLScrollListCtrl::calcColumnWidths() { const S32 HEADING_TEXT_PADDING = 30; diff --git a/linden/indra/llui/lltabcontainer.h b/linden/indra/llui/lltabcontainer.h index 07554b4..152bd05 100644 --- a/linden/indra/llui/lltabcontainer.h +++ b/linden/indra/llui/lltabcontainer.h @@ -64,7 +64,7 @@ public: /*virtual*/ void setValue(const LLSD& value); /*virtual*/ EWidgetType getWidgetType() const; /*virtual*/ LLString getWidgetTag() const; - /*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent); + /*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE); /*virtual*/ void draw(); /*virtual*/ BOOL handleMouseDown( S32 x, S32 y, MASK mask ); /*virtual*/ BOOL handleHover( S32 x, S32 y, MASK mask ); diff --git a/linden/indra/llui/lltexteditor.h b/linden/indra/llui/lltexteditor.h index 82d9069..7943129 100644 --- a/linden/indra/llui/lltexteditor.h +++ b/linden/indra/llui/lltexteditor.h @@ -95,7 +95,7 @@ public: virtual void onMouseCaptureLost(); // view overrides - virtual void reshape(S32 width, S32 height, BOOL called_from_parent); + virtual void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE); virtual void draw(); virtual void onFocusReceived(); virtual void onFocusLost(); diff --git a/linden/indra/llui/llui.cpp b/linden/indra/llui/llui.cpp index 5904573..ec8c94e 100644 --- a/linden/indra/llui/llui.cpp +++ b/linden/indra/llui/llui.cpp @@ -81,6 +81,7 @@ LLWindow* LLUI::sWindow = NULL; LLHtmlHelp* LLUI::sHtmlHelp = NULL; BOOL LLUI::sShowXUINames = FALSE; std::stack LLScreenClipRect::sClipRectStack; +BOOL LLUI::sQAMode = FALSE; // // Functions @@ -1759,6 +1760,12 @@ void LLUI::setHtmlHelp(LLHtmlHelp* html_help) LLUI::sHtmlHelp = html_help; } +//static +void LLUI::setQAMode(BOOL b) +{ + LLUI::sQAMode = b; +} + LLScreenClipRect::LLScreenClipRect(const LLRect& rect, BOOL enabled) : mScissorState(GL_SCISSOR_TEST), mEnabled(enabled) { if (mEnabled) diff --git a/linden/indra/llui/llui.h b/linden/indra/llui/llui.h index c419cb6..9e275a5 100644 --- a/linden/indra/llui/llui.h +++ b/linden/indra/llui/llui.h @@ -201,6 +201,12 @@ public: static BOOL sShowXUINames; static LLHtmlHelp* sHtmlHelp; + // *TODO: remove the following when QAR-369 settings clean-up work is in. + // Also remove the call to this method which will then be obsolete. + // Search for QAR-369 below to enable the proper accessing of this feature. -MG + static void setQAMode(BOOL b); + static BOOL sQAMode; + }; // UI widgets diff --git a/linden/indra/llui/llview.cpp b/linden/indra/llui/llview.cpp index fbcb69e..e5415f8 100644 --- a/linden/indra/llui/llview.cpp +++ b/linden/indra/llui/llview.cpp @@ -633,13 +633,13 @@ void LLView::translate(S32 x, S32 y) } // virtual -BOOL LLView::canSnapTo(const LLView* other_view) const +BOOL LLView::canSnapTo(const LLView* other_view) { return other_view != this && other_view->getVisible(); } // virtual -void LLView::snappedTo(LLView* snap_view) +void LLView::snappedTo(const LLView* snap_view) { } diff --git a/linden/indra/llui/llview.h b/linden/indra/llui/llview.h index 52c7e3d..51c314a 100644 --- a/linden/indra/llui/llview.h +++ b/linden/indra/llui/llview.h @@ -108,9 +108,9 @@ virtual void userSetShape(const LLRect& new_rect); virtual LLView* findSnapRect(LLRect& new_rect, const LLCoordGL& mouse_dir, LLView::ESnapType snap_type, S32 threshold, S32 padding = 0); virtual LLView* findSnapEdge(S32& new_edge_val, const LLCoordGL& mouse_dir, ESnapEdge snap_edge, ESnapType snap_type, S32 threshold, S32 padding = 0); LLScrollListCtrl -virtual BOOL canSnapTo(const LLView* other_view) const { return other_view != this && other_view->getVisible(); } +virtual BOOL canSnapTo(const LLView* other_view) { return other_view != this && other_view->getVisible(); } LLFloater -virtual void snappedTo(LLView* snap_view) {} +virtual void snappedTo(const LLView* snap_view) {} LLFloater virtual BOOL handleKey(KEY key, MASK mask, BOOL called_from_parent); * @@ -339,9 +339,9 @@ public: virtual LLView* findSnapRect(LLRect& new_rect, const LLCoordGL& mouse_dir, LLView::ESnapType snap_type, S32 threshold, S32 padding = 0); virtual LLView* findSnapEdge(S32& new_edge_val, const LLCoordGL& mouse_dir, ESnapEdge snap_edge, ESnapType snap_type, S32 threshold, S32 padding = 0); - virtual BOOL canSnapTo(const LLView* other_view) const; + virtual BOOL canSnapTo(const LLView* other_view); - virtual void snappedTo(LLView* snap_view); + virtual void snappedTo(const LLView* snap_view); virtual BOOL handleKey(KEY key, MASK mask, BOOL called_from_parent); virtual BOOL handleUnicodeChar(llwchar uni_char, BOOL called_from_parent); diff --git a/linden/indra/llwindow/llwindowmacosx.cpp b/linden/indra/llwindow/llwindowmacosx.cpp index b616595..5c91cc0 100644 --- a/linden/indra/llwindow/llwindowmacosx.cpp +++ b/linden/indra/llwindow/llwindowmacosx.cpp @@ -2858,7 +2858,7 @@ void LLWindowMacOSX::setCursor(ECursorType cursor) mCurrentCursor = cursor; } -ECursorType LLWindowMacOSX::getCursor() +ECursorType LLWindowMacOSX::getCursor() const { return mCurrentCursor; } diff --git a/linden/indra/llwindow/llwindowmacosx.h b/linden/indra/llwindow/llwindowmacosx.h index 80145b9..789e2ed 100644 --- a/linden/indra/llwindow/llwindowmacosx.h +++ b/linden/indra/llwindow/llwindowmacosx.h @@ -68,7 +68,7 @@ public: /*virtual*/ void hideCursorUntilMouseMove(); /*virtual*/ BOOL isCursorHidden(); /*virtual*/ void setCursor(ECursorType cursor); - /*virtual*/ ECursorType getCursor(); + /*virtual*/ ECursorType getCursor() const; /*virtual*/ void captureMouse(); /*virtual*/ void releaseMouse(); /*virtual*/ void setMouseClipping( BOOL b ); @@ -112,7 +112,6 @@ public: /*virtual*/ void bringToFront() {}; /*virtual*/ void allowLanguageTextInput(LLPreeditor *preeditor, BOOL b); - /*virtual*/ void updateLanguageTextInputArea(const LLCoordGL& caret, const LLRect& bounds); /*virtual*/ void interruptLanguageTextInput(); protected: diff --git a/linden/indra/llwindow/llwindowsdl.cpp b/linden/indra/llwindow/llwindowsdl.cpp index e0a4169..3eb4872 100644 --- a/linden/indra/llwindow/llwindowsdl.cpp +++ b/linden/indra/llwindow/llwindowsdl.cpp @@ -138,11 +138,11 @@ BOOL ll_try_gtk_init(void) << gtk_major_version << "." << gtk_minor_version << "." << gtk_micro_version << llendl; - gchar *gtk_warning; maybe_lock_display(); - gtk_warning = gtk_check_version(GTK_MAJOR_VERSION, - GTK_MINOR_VERSION, - GTK_MICRO_VERSION); + const gchar* gtk_warning = gtk_check_version( + GTK_MAJOR_VERSION, + GTK_MINOR_VERSION, + GTK_MICRO_VERSION); maybe_unlock_display(); if (gtk_warning) { diff --git a/linden/indra/mac_updater/mac_updater.cpp b/linden/indra/mac_updater/mac_updater.cpp index 72cd4c4..623db1f 100644 --- a/linden/indra/mac_updater/mac_updater.cpp +++ b/linden/indra/mac_updater/mac_updater.cpp @@ -733,7 +733,7 @@ void *updatethreadproc(void*) FSRef targetRef; FSRef targetParentRef; FSVolumeRefNum targetVol; - FSRef trashFolderRef, tempFolderRef; + FSRef trashFolderRef; Boolean replacingTarget = false; memset(&tempDirRef, 0, sizeof(tempDirRef)); @@ -892,6 +892,10 @@ void *updatethreadproc(void*) if(err != noErr) throw 0; +#if 0 // *HACK for DEV-11935 see below for details. + + FSRef tempFolderRef; + err = FSFindFolder( targetVol, kTemporaryFolderType, @@ -905,6 +909,17 @@ void *updatethreadproc(void*) if(err != noErr) throw 0; + +#else + + // *HACK for DEV-11935 the above kTemporaryFolderType query was giving + // back results with path names that seem to be too long to be used as + // mount points. I suspect this incompatibility was introduced in the + // Leopard 10.5.2 update, but I have not verified this. + char const HARDCODED_TMP[] = "/tmp"; + strncpy(temp, HARDCODED_TMP, sizeof(HARDCODED_TMP)); + +#endif // 0 *HACK for DEV-11935 strncat(temp, "/SecondLifeUpdate_XXXXXX", (sizeof(temp) - strlen(temp)) - 1); if(mkdtemp(temp) == NULL) diff --git a/linden/indra/newview/English.lproj/InfoPlist.strings b/linden/indra/newview/English.lproj/InfoPlist.strings index 9ac8301..2cadac9 100644 --- a/linden/indra/newview/English.lproj/InfoPlist.strings +++ b/linden/indra/newview/English.lproj/InfoPlist.strings @@ -1,5 +1,5 @@ /* Localized versions of Info.plist keys */ CFBundleName = "Second Life"; -CFBundleShortVersionString = "Second Life version 1.19.1.1"; -CFBundleGetInfoString = "Second Life version 1.19.1.1, Copyright 2004-2008 Linden Research, Inc."; +CFBundleShortVersionString = "Second Life version 1.19.1.2"; +CFBundleGetInfoString = "Second Life version 1.19.1.2, Copyright 2004-2008 Linden Research, Inc."; diff --git a/linden/indra/newview/Info-SecondLife.plist b/linden/indra/newview/Info-SecondLife.plist index 2f53848..83953bf 100644 --- a/linden/indra/newview/Info-SecondLife.plist +++ b/linden/indra/newview/Info-SecondLife.plist @@ -32,7 +32,7 @@ CFBundleVersion - 1.19.1.1 + 1.19.1.2 CSResourcesFileMapped diff --git a/linden/indra/newview/app_settings/windlight/skies/A%2D6PM.xml b/linden/indra/newview/app_settings/windlight/skies/A%2D6PM.xml index 6e82f2e..ebf08e1 100644 --- a/linden/indra/newview/app_settings/windlight/skies/A%2D6PM.xml +++ b/linden/indra/newview/app_settings/windlight/skies/A%2D6PM.xml @@ -2,10 +2,10 @@ ambient - 0.14840038120746613 - 0.17633917927742004 - 0.23999999463558197 - 0.079999998211860657 + 1.0199999809265137 + 0.80999994277954102 + 0.80999994277954102 + 1.0199999809265137 blue_density @@ -70,7 +70,7 @@ distance_multiplier - 2.7000000476837158 + 1 0 0 1 @@ -139,3 +139,4 @@ + diff --git a/linden/indra/newview/featuretable.txt b/linden/indra/newview/featuretable.txt index 898751d..793e235 100644 --- a/linden/indra/newview/featuretable.txt +++ b/linden/indra/newview/featuretable.txt @@ -318,7 +318,9 @@ list Intel_Springdale RenderTerrainDetail 1 0 RenderVBOEnable 1 0 - +list ATI_FireGL_5200 +RenderVBOEnable 1 0 +WindLightUseAtmosShaders 0 0 list ATI_Mobility_Radeon_9800 RenderAvatarCloth 0 0 diff --git a/linden/indra/newview/gpu_table.txt b/linden/indra/newview/gpu_table.txt index 1d33fcb..1929d45 100644 --- a/linden/indra/newview/gpu_table.txt +++ b/linden/indra/newview/gpu_table.txt @@ -39,6 +39,7 @@ ATI ASUS EAH26xx .*ATI.*ASUS.*EAH26.* 3 1 ATI ASUS X1xxx .*ATI.*ASUS.*X1.* 2 1 ATI Diamond X1xxx .*ATI.*Diamond.*X1.* 3 1 ATI Diamond X550 .*ATI.*Diamond X550.* 1 1 +ATI FireGL 5200 .*ATI.*FireGL V52.* 0 1 ATI FireGL 5xxx .*ATI.*FireGL V5.* 1 1 ATI FireGL .*ATI.*Fire.*GL.* 0 1 ATI FireMV .*ATI.*FireMV.* 0 0 diff --git a/linden/indra/newview/installers/windows/installer_template.nsi b/linden/indra/newview/installers/windows/installer_template.nsi index fa94a09..0566b7e 100644 --- a/linden/indra/newview/installers/windows/installer_template.nsi +++ b/linden/indra/newview/installers/windows/installer_template.nsi @@ -380,7 +380,7 @@ FunctionEnd ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Function un.CheckIfAdministrator - DetailPrint $(CheckAdministratorUnInstDP) + DetailPrint $(CheckAdministratorUnInstDP) UserInfo::GetAccountType Pop $R0 StrCmp $R0 "Admin" is_admin @@ -583,6 +583,22 @@ Function un.CloseSecondLife Return FunctionEnd + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; +; Delete the stored password for the current Windows user +; DEV-10821 -- Unauthorised user can gain access to an SL account after a real user has uninstalled +; +Function un.RemovePassword + +DetailPrint "Removing Second Life password" + +SetShellVarContext current +Delete "$APPDATA\SecondLife\user_settings\password.dat" +SetShellVarContext all + +FunctionEnd + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Delete the installed files ;;; This deletes the uninstall executable, but it works @@ -682,6 +698,9 @@ Delete "$INSTDIR\Uninstall $INSTSHORTCUT.lnk" Call un.DocumentsAndSettingsFolder !endif +; remove stored password on uninstall +Call un.RemovePassword + Call un.ProgramFiles SectionEnd ; end of uninstall section diff --git a/linden/indra/newview/llappviewer.cpp b/linden/indra/newview/llappviewer.cpp index 5baf7b6..5573633 100644 --- a/linden/indra/newview/llappviewer.cpp +++ b/linden/indra/newview/llappviewer.cpp @@ -324,7 +324,7 @@ BOOL gPeriodicSlowFrame = FALSE; BOOL gQAMode = FALSE; BOOL gLLErrorActivated = FALSE; - +BOOL gLogoutInProgress = FALSE; //////////////////////////////////////////////////////////// // Internal globals... that should be removed. static F32 gQuitAfterSeconds = 0.f; @@ -348,6 +348,7 @@ static const char* LEGACY_DEFAULT_SETTINGS_FILE = "settings.ini"; const char* MARKER_FILE_NAME = "SecondLife.exec_marker"; const char* ERROR_MARKER_FILE_NAME = "SecondLife.error_marker"; const char* LLERROR_MARKER_FILE_NAME = "SecondLife.llerror_marker"; +const char* LOGOUT_MARKER_FILE_NAME = "SecondLife.logout_marker"; static BOOL gDoDisconnect = FALSE; static LLString gLaunchFileOnQuit; @@ -884,7 +885,14 @@ int parse_args(int argc, char **argv) #endif else if(!strncmp(argv[j], "-qa", 3)) { + // This whole case should disappear with settings clean-up work in QAR-369 + // or at least be replaced by setting a boolean in the settings repository. -MG gQAMode = TRUE; + LLUI::setQAMode(gQAMode); + } + else if(argument == "-crash") + { + LLAppViewer::instance()->forceErrorBadMemoryAccess(); } else { @@ -1359,9 +1367,10 @@ bool LLAppViewer::mainLoop() while (!LLApp::isExiting()) { LLFastTimer::reset(); // Should be outside of any timer instances + try { LLFastTimer t(LLFastTimer::FTM_FRAME); - + { LLFastTimer t2(LLFastTimer::FTM_MESSAGES); #if LL_WINDOWS @@ -1523,12 +1532,23 @@ bool LLAppViewer::mainLoop() } } + catch(std::bad_alloc) + { + llwarns << "Bad memory allocation in LLAppViewer::mainLoop()!" << llendl ; + } } // Save snapshot for next time, if we made it through initialization if (STATE_STARTED == LLStartUp::getStartupState()) { - saveFinalSnapshot(); + try + { + saveFinalSnapshot(); + } + catch(std::bad_alloc) + { + llwarns << "Bad memory allocation when saveFinalSnapshot() is called!" << llendl ; + } } delete gServicePump; @@ -2492,6 +2512,7 @@ void LLAppViewer::writeSystemInfo() gDebugInfo["ClientInfo"]["PatchVersion"] = LL_VERSION_PATCH; gDebugInfo["ClientInfo"]["BuildVersion"] = LL_VERSION_BUILD; + gDebugInfo["CPUInfo"]["CPUString"] = gSysCPU.getCPUString(); gDebugInfo["CPUInfo"]["CPUFamily"] = gSysCPU.getFamily(); gDebugInfo["CPUInfo"]["CPUMhz"] = gSysCPU.getMhz(); gDebugInfo["CPUInfo"]["CPUAltivec"] = gSysCPU.hasAltivec(); @@ -2541,7 +2562,20 @@ void LLAppViewer::handleViewerCrash() gDebugInfo["CAFilename"] = gDirUtilp->getCAFile(); gDebugInfo["ViewerExePath"] = gDirUtilp->getExecutablePathAndName().c_str(); gDebugInfo["CurrentPath"] = gDirUtilp->getCurPath().c_str(); - gDebugInfo["CurrentSimHost"] = gAgent.getRegionHost().getHostName(); + if(gLogoutInProgress) + { + gDebugInfo["LastExecEvent"] = LAST_EXEC_LOGOUT_CRASH; + } + else + { + gDebugInfo["LastExecEvent"] = gLLErrorActivated ? LAST_EXEC_LLERROR_CRASH : LAST_EXEC_OTHER_CRASH; + } + + if(gAgent.getRegion()) + { + gDebugInfo["CurrentSimHost"] = gAgent.getRegionHost().getHostName(); + gDebugInfo["CurrentRegion"] = gAgent.getRegion()->getName(); + } //Write out the crash status file //Use marker file style setup, as that's the simplest, especially since @@ -2591,7 +2625,14 @@ void LLAppViewer::handleViewerCrash() LLError::logToFile(""); // Remove the marker file, since otherwise we'll spawn a process that'll keep it locked - pApp->removeMarkerFile(); + if(gDebugInfo["LastExecEvent"].asInteger() == LAST_EXEC_LOGOUT_CRASH) + { + pApp->removeMarkerFile(true); + } + else + { + pApp->removeMarkerFile(false); + } // Call to pure virtual, handled by platform specifc llappviewer instance. pApp->handleCrashReporting(); @@ -2656,24 +2697,35 @@ void LLAppViewer::initMarkerFile() // These checks should also remove these files for the last 2 cases if they currently exist //LLError/Error checks. Only one of these should ever happen at a time. + LLString logout_marker_file = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, LOGOUT_MARKER_FILE_NAME); LLString llerror_marker_file = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, LLERROR_MARKER_FILE_NAME); LLString error_marker_file = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, ERROR_MARKER_FILE_NAME); - apr_file_t* fMarker = ll_apr_file_open(llerror_marker_file, LL_APR_RB); + + apr_file_t* fMarker = ll_apr_file_open(logout_marker_file, LL_APR_RB); + if(fMarker != NULL) + { + apr_file_close(fMarker); + llinfos << "Last exec LLError crashed, setting LastExecEvent to " << LAST_EXEC_LLERROR_CRASH << llendl; + gLastExecEvent = LAST_EXEC_LOGOUT_FROZE; + } + fMarker = ll_apr_file_open(llerror_marker_file, LL_APR_RB); if(fMarker != NULL) { apr_file_close(fMarker); llinfos << "Last exec LLError crashed, setting LastExecEvent to " << LAST_EXEC_LLERROR_CRASH << llendl; - gLastExecEvent = LAST_EXEC_LLERROR_CRASH; + if(gLastExecEvent == LAST_EXEC_LOGOUT_FROZE) gLastExecEvent = LAST_EXEC_LOGOUT_CRASH; + else gLastExecEvent = LAST_EXEC_LLERROR_CRASH; } - fMarker = ll_apr_file_open(error_marker_file, LL_APR_RB); if(fMarker != NULL) { apr_file_close(fMarker); llinfos << "Last exec crashed, setting LastExecEvent to " << LAST_EXEC_OTHER_CRASH << llendl; - gLastExecEvent = LAST_EXEC_OTHER_CRASH; + if(gLastExecEvent == LAST_EXEC_LOGOUT_FROZE) gLastExecEvent = LAST_EXEC_LOGOUT_CRASH; + else gLastExecEvent = LAST_EXEC_OTHER_CRASH; } + ll_apr_file_remove(logout_marker_file); ll_apr_file_remove(llerror_marker_file); ll_apr_file_remove(error_marker_file); @@ -2696,6 +2748,7 @@ void LLAppViewer::initMarkerFile() else { llinfos << "Failed to create marker file." << llendl; + return; } if (apr_file_lock(mMarkerFile, APR_FLOCK_NONBLOCK | APR_FLOCK_EXCLUSIVE) != APR_SUCCESS) { @@ -2708,7 +2761,7 @@ void LLAppViewer::initMarkerFile() llinfos << "Exiting initMarkerFile()." << llendl; } -void LLAppViewer::removeMarkerFile() +void LLAppViewer::removeMarkerFile(bool leave_logout_marker) { llinfos << "removeMarkerFile()" << llendl; if (mMarkerFile != NULL) @@ -2716,6 +2769,11 @@ void LLAppViewer::removeMarkerFile() ll_apr_file_remove( mMarkerFileName ); mMarkerFile = NULL; } + if (mLogoutMarkerFile != NULL && !leave_logout_marker) + { + ll_apr_file_remove( mLogoutMarkerFileName ); + mLogoutMarkerFile = NULL; + } } void LLAppViewer::forceQuit() @@ -3731,6 +3789,20 @@ void LLAppViewer::sendLogoutRequest() mLogoutRequestSent = TRUE; gVoiceClient->leaveChannel(); + + //Set internal status variables and marker files + gLogoutInProgress = TRUE; + mLogoutMarkerFileName = gDirUtilp->getExpandedFilename(LL_PATH_LOGS,LOGOUT_MARKER_FILE_NAME); + mLogoutMarkerFile = ll_apr_file_open(mLogoutMarkerFileName, LL_APR_W); + if (mLogoutMarkerFile) + { + llinfos << "Created logout marker file " << mLogoutMarkerFileName << llendl; + } + else + { + llwarns << "Cannot create logout marker file " << mLogoutMarkerFileName << llendl; + } + apr_file_close(mLogoutMarkerFile); } } diff --git a/linden/indra/newview/llappviewer.h b/linden/indra/newview/llappviewer.h index ddf51b3..88f3fdd 100644 --- a/linden/indra/newview/llappviewer.h +++ b/linden/indra/newview/llappviewer.h @@ -115,7 +115,7 @@ public: bool isInProductionGrid(); - void removeMarkerFile(); + void removeMarkerFile(bool leave_logout_marker = false); // LLAppViewer testing helpers. // *NOTE: These will potentially crash the viewer. Only for debugging. @@ -167,6 +167,10 @@ private: LLString mMarkerFileName; apr_file_t* mMarkerFile; // A file created to indicate the app is running. + LLString mLogoutMarkerFileName; + apr_file_t* mLogoutMarkerFile; // A file created to indicate the app is running. + + LLOSInfo mSysOSInfo; S32 mCrashBehavior; bool mReportedCrash; @@ -231,7 +235,9 @@ typedef enum LAST_EXEC_NORMAL = 0, LAST_EXEC_FROZE, LAST_EXEC_LLERROR_CRASH, - LAST_EXEC_OTHER_CRASH + LAST_EXEC_OTHER_CRASH, + LAST_EXEC_LOGOUT_FROZE, + LAST_EXEC_LOGOUT_CRASH } eLastExecEvent; extern eLastExecEvent gLastExecEvent; // llstartup diff --git a/linden/indra/newview/llcontroldef.cpp b/linden/indra/newview/llcontroldef.cpp index aed0a82..97fd268 100644 --- a/linden/indra/newview/llcontroldef.cpp +++ b/linden/indra/newview/llcontroldef.cpp @@ -1068,7 +1068,7 @@ void declare_settings() gSavedSettings.declareRect("FloaterOpenObjectRect", LLRect(0, 350, 300, 0), "Rectangle for Open Object window"); // the about box - gSavedSettings.declareRect("FloaterMediaRect", LLRect(0, 400, 400, 0), "Rectangle for media browser window"); + gSavedSettings.declareRect("FloaterMediaRect", LLRect(16,650,600,128), "Rectangle for media browser window"); // the about box gSavedSettings.declareRect("FloaterAboutRect", LLRect(0, 440, 470, 0), "Rectangle for About window"); @@ -1187,7 +1187,7 @@ void declare_settings() gSavedSettings.declareString("HelpLastVisitedURL", "help/index.html", "URL of last help page, will be shown next time help is accessed"); // HTML dialog (general purpose) - gSavedSettings.declareRect("HtmlFloaterRect", LLRect(100,460,370,100), "Rectangle for HTML Floater window"); + gSavedSettings.declareRect("HtmlFloaterRect", LLRect(16,650,600,128), "Rectangle for HTML Floater window"); // HTML sim release message floater gSavedSettings.declareRect("HtmlReleaseMessage", LLRect(46,520,400,128), "Rectangle for HTML Release Message Floater window"); @@ -1524,7 +1524,7 @@ void declare_settings() // use object-object occlusion culling gSavedSettings.declareBOOL("UseOcclusion", TRUE, "Enable object culling based on occlusion (coverage) by other objects"); - gSavedSettings.declareBOOL("RenderFastAlpha", TRUE, "Use lossy alpha rendering optimization (opaque/nonexistent small alpha faces)."); + gSavedSettings.declareBOOL("RenderFastAlpha", FALSE, "Use lossy alpha rendering optimization (opaque/nonexistent small alpha faces)."); gSavedSettings.declareBOOL("DoubleClickAutoPilot", FALSE, "Enable double-click auto pilot"); @@ -1576,6 +1576,8 @@ void declare_settings() gSavedSettings.declareBOOL("VectorizeSkin", TRUE, "Enable vector operations for avatar skinning."); gSavedSettings.declareU32( "VectorizeProcessor", 0, "0=Compiler Default, 1=SSE, 2=SSE2, autodetected", NO_PERSIST); + gSavedSettings.declareBOOL("SaveMinidump", TRUE, "Save minidump for developer debugging on crash"); + // // crash_settings.xml // diff --git a/linden/indra/newview/llcurrencyuimanager.cpp b/linden/indra/newview/llcurrencyuimanager.cpp index 413adf2..74ee8cc 100644 --- a/linden/indra/newview/llcurrencyuimanager.cpp +++ b/linden/indra/newview/llcurrencyuimanager.cpp @@ -332,6 +332,7 @@ void LLCurrencyUIManager::Impl::currencyKey(S32 value) // get reset and the cursor will change... mPanel.childHide("currency_est"); + mPanel.childSetVisible("getting_data",TRUE); } mCurrencyChanged = true; @@ -392,6 +393,13 @@ void LLCurrencyUIManager::Impl::updateUI() mPanel.childSetTextArg("currency_est", "[USD]", llformat("%#.2f", mSiteCurrencyEstimatedCost / 100.0)); mPanel.childSetVisible("currency_est", mSiteCurrencyEstimated && mUserCurrencyBuy > 0); + + if (mPanel.childIsEnabled("buy_btn") + ||mPanel.childIsVisible("currency_est") + || mPanel.childIsVisible("error_web")) + { + mPanel.childSetVisible("getting_data",FALSE); + } } diff --git a/linden/indra/newview/lldrawable.cpp b/linden/indra/newview/lldrawable.cpp index 4b6bd7c..228049f 100644 --- a/linden/indra/newview/lldrawable.cpp +++ b/linden/indra/newview/lldrawable.cpp @@ -409,14 +409,14 @@ void LLDrawable::makeActive() } -void LLDrawable::makeStatic() +void LLDrawable::makeStatic(BOOL warning_enabled) { if (isState(ACTIVE)) { clearState(ACTIVE); gPipeline.setActive(this, FALSE); - if (mParent.notNull() && mParent->isActive()) + if (mParent.notNull() && mParent->isActive() && warning_enabled) { llwarns << "Drawable becamse static with active parent!" << llendl; } @@ -431,7 +431,7 @@ void LLDrawable::makeStatic() { llwarns << "Child drawable has unknown parent." << llendl; } - child_drawable->makeStatic(); + child_drawable->makeStatic(warning_enabled); } } diff --git a/linden/indra/newview/lldrawable.h b/linden/indra/newview/lldrawable.h index 8493747..97b97f4 100644 --- a/linden/indra/newview/lldrawable.h +++ b/linden/indra/newview/lldrawable.h @@ -140,7 +140,7 @@ public: F32 updateXform(BOOL undamped); virtual void makeActive(); - virtual void makeStatic(); + /*virtual*/ void makeStatic(BOOL warning_enabled = TRUE); BOOL isActive() const { return isState(ACTIVE); } BOOL isStatic() const { return !isActive(); } diff --git a/linden/indra/newview/lldrawpoolbump.cpp b/linden/indra/newview/lldrawpoolbump.cpp index 987e65e..0bfb737 100644 --- a/linden/indra/newview/lldrawpoolbump.cpp +++ b/linden/indra/newview/lldrawpoolbump.cpp @@ -73,7 +73,7 @@ const U32 VERTEX_MASK_SHINY = LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_N const U32 VERTEX_MASK_BUMP = LLVertexBuffer::MAP_VERTEX |LLVertexBuffer::MAP_TEXCOORD | LLVertexBuffer::MAP_TEXCOORD2; U32 LLDrawPoolBump::sVertexMask = VERTEX_MASK_SHINY; -static LLCubeMap* sCubeMap = NULL; +static LLPointer sCubeMap; static LLGLSLShader* shader = NULL; static S32 cube_channel = -1; @@ -592,7 +592,7 @@ void LLDrawPoolBump::renderGroup(LLSpatialGroup* group, U32 type, U32 mask, BOOL { sCubeMap->bind(); } - else + else if (gSky.mVOSkyp->getCubeMap()) { gSky.mVOSkyp->getCubeMap()->bind(); } diff --git a/linden/indra/newview/lldrawpoolwlsky.cpp b/linden/indra/newview/lldrawpoolwlsky.cpp index 65d1d20..3e8d1b2 100644 --- a/linden/indra/newview/lldrawpoolwlsky.cpp +++ b/linden/indra/newview/lldrawpoolwlsky.cpp @@ -68,7 +68,7 @@ LLDrawPoolWLSky::LLDrawPoolWLSky(void) : sCloudNoiseRawImage = new LLImageRaw(); - cloudNoiseFile->decode(sCloudNoiseRawImage); + cloudNoiseFile->decode(sCloudNoiseRawImage, 0.0f); LLImageGL::create(sCloudNoiseTexture, sCloudNoiseRawImage, TRUE); diff --git a/linden/indra/newview/llfilepicker.cpp b/linden/indra/newview/llfilepicker.cpp index af68e21..1be1199 100644 --- a/linden/indra/newview/llfilepicker.cpp +++ b/linden/indra/newview/llfilepicker.cpp @@ -1348,7 +1348,6 @@ const char* LLFilePicker::getDirname() void LLFilePicker::reset() { - llinfos << "GTK LLFilePicker::reset()" << llendl; mNextFileIndex = 0; mStoreFilenames.win = NULL; mStoreFilenames.fileVector.clear(); diff --git a/linden/indra/newview/llfloaterauction.cpp b/linden/indra/newview/llfloaterauction.cpp index 100e4dc..f0086c4 100644 --- a/linden/indra/newview/llfloaterauction.cpp +++ b/linden/indra/newview/llfloaterauction.cpp @@ -197,7 +197,7 @@ void LLFloaterAuction::onClickSnapshot(void* data) llinfos << "Writing J2C..." << llendl; LLPointer j2c = new LLImageJ2C; - j2c->encode(raw); + j2c->encode(raw, 0.0f); LLVFile::writeFile(j2c->getData(), j2c->getDataSize(), gVFS, self->mImageID, LLAssetType::AT_TEXTURE); self->mImage = new LLImageGL((LLImageRaw*)raw, FALSE); diff --git a/linden/indra/newview/llfloaterbuycurrency.cpp b/linden/indra/newview/llfloaterbuycurrency.cpp index f4e1118..dd7732d 100644 --- a/linden/indra/newview/llfloaterbuycurrency.cpp +++ b/linden/indra/newview/llfloaterbuycurrency.cpp @@ -229,6 +229,10 @@ void LLFloaterBuyCurrencyUI::updateUI() } childSetVisible("error_web", !mManager.errorURI().empty()); + if (!mManager.errorURI().empty()) + { + childHide("getting_data"); + } } else { @@ -308,6 +312,11 @@ void LLFloaterBuyCurrencyUI::updateUI() } childSetEnabled("buy_btn", mManager.canBuy()); + + if (!mManager.canBuy() && !childIsVisible("error_web")) + { + childShow("getting_data"); + } } // static diff --git a/linden/indra/newview/llfloatercustomize.cpp b/linden/indra/newview/llfloatercustomize.cpp index 923c358..f4baa9f 100644 --- a/linden/indra/newview/llfloatercustomize.cpp +++ b/linden/indra/newview/llfloatercustomize.cpp @@ -1653,7 +1653,7 @@ void LLFloaterCustomize::onBtnSnapshot( void* userdata ) if (!success) return; LLPointer jpeg_image = new LLImageJPEG; - success = jpeg_image->encode(raw); + success = jpeg_image->encode(raw, 0.0f); if(!success) return; LLString filepath("C:\\snapshot"); diff --git a/linden/indra/newview/llfloatereditui.cpp b/linden/indra/newview/llfloatereditui.cpp index 8daaf6a..b68f696 100644 --- a/linden/indra/newview/llfloatereditui.cpp +++ b/linden/indra/newview/llfloatereditui.cpp @@ -327,7 +327,7 @@ void LLFloaterEditUI::show(void*) } // static -BOOL LLFloaterEditUI::handleKey(KEY key, MASK mask) +BOOL LLFloaterEditUI::handleKeyEditUI(KEY key, MASK mask) { if (!LLView::sEditingUIView) return FALSE; diff --git a/linden/indra/newview/llfloatereditui.h b/linden/indra/newview/llfloatereditui.h index 2795e54..9012d23 100644 --- a/linden/indra/newview/llfloatereditui.h +++ b/linden/indra/newview/llfloatereditui.h @@ -53,7 +53,7 @@ public: static void navigateHierarchyButtonPressed(void* data); static void show(void* unused = NULL); - static BOOL handleKey(KEY key, MASK mask); + static BOOL handleKeyEditUI(KEY key, MASK mask); static void onCommitLabel(LLUICtrl* ctrl, void* data); static void onCommitHeight(LLUICtrl* ctrl, void* data); diff --git a/linden/indra/newview/llfloaterhtmlhelp.cpp b/linden/indra/newview/llfloaterhtmlhelp.cpp index 9a5ba0e..db68bf8 100644 --- a/linden/indra/newview/llfloaterhtmlhelp.cpp +++ b/linden/indra/newview/llfloaterhtmlhelp.cpp @@ -211,7 +211,10 @@ void LLFloaterMediaBrowser::onClickOpenWebBrowser(void* user_data) { LLFloaterMediaBrowser* self = (LLFloaterMediaBrowser*)user_data; - LLWeb::loadURLExternal(self->mCurrentURL); + std::string url = self->mCurrentURL.empty() ? + self->mBrowser->getHomePageUrl() : + self->mCurrentURL; + LLWeb::loadURLExternal(url); } void LLFloaterMediaBrowser::onClickAssign(void* user_data) diff --git a/linden/indra/newview/llfloaterimagepreview.cpp b/linden/indra/newview/llfloaterimagepreview.cpp index 551ae95..926a117 100644 --- a/linden/indra/newview/llfloaterimagepreview.cpp +++ b/linden/indra/newview/llfloaterimagepreview.cpp @@ -353,7 +353,7 @@ bool LLFloaterImagePreview::loadImage(const char *src_filename) return false; } - if (!bmp_image->decode(raw_image)) + if (!bmp_image->decode(raw_image, 0.0f)) { return false; } @@ -390,7 +390,7 @@ bool LLFloaterImagePreview::loadImage(const char *src_filename) return false; } - if (!jpeg_image->decode(raw_image)) + if (!jpeg_image->decode(raw_image, 0.0f)) { return false; } @@ -405,7 +405,7 @@ bool LLFloaterImagePreview::loadImage(const char *src_filename) return false; } - if (!png_image->decode(raw_image)) + if (!png_image->decode(raw_image, 0.0f)) { return false; } @@ -589,7 +589,8 @@ BOOL LLFloaterImagePreview::handleScrollWheel(S32 x, S32 y, S32 clicks) //----------------------------------------------------------------------------- // onMouseCaptureLost() //----------------------------------------------------------------------------- -void LLFloaterImagePreview::onMouseCaptureLost(LLMouseHandler* handler) +// static +void LLFloaterImagePreview::onMouseCaptureLostImagePreview(LLMouseHandler* handler) { gViewerWindow->showCursor(); } diff --git a/linden/indra/newview/llfloaterimagepreview.h b/linden/indra/newview/llfloaterimagepreview.h index cd5d80b..8cf9b85 100644 --- a/linden/indra/newview/llfloaterimagepreview.h +++ b/linden/indra/newview/llfloaterimagepreview.h @@ -112,7 +112,7 @@ public: BOOL handleHover(S32 x, S32 y, MASK mask); BOOL handleScrollWheel(S32 x, S32 y, S32 clicks); - static void onMouseCaptureLost(LLMouseHandler*); + static void onMouseCaptureLostImagePreview(LLMouseHandler*); static void setUploadAmount(S32 amount) { sUploadAmount = amount; } protected: diff --git a/linden/indra/newview/llfloaterscriptdebug.cpp b/linden/indra/newview/llfloaterscriptdebug.cpp index b88ab78..e25468b 100644 --- a/linden/indra/newview/llfloaterscriptdebug.cpp +++ b/linden/indra/newview/llfloaterscriptdebug.cpp @@ -181,11 +181,11 @@ LLFloaterScriptDebugOutput::LLFloaterScriptDebugOutput(const LLUUID& object_id) addChild(mHistoryEditor); } -void LLFloaterScriptDebugOutput::init(const LLString& title, BOOL resizable, +void LLFloaterScriptDebugOutput::initFloater(const LLString& title, BOOL resizable, S32 min_width, S32 min_height, BOOL drag_on_left, BOOL minimizable, BOOL close_btn) { - LLFloater::init(title, resizable, min_width, min_height, drag_on_left, minimizable, close_btn); + LLFloater::initFloater(title, resizable, min_width, min_height, drag_on_left, minimizable, close_btn); S32 y = getRect().getHeight() - LLFLOATER_HEADER_SIZE - LLFLOATER_VPAD; S32 x = LLFLOATER_HPAD; // History editor diff --git a/linden/indra/newview/llfloaterscriptdebug.h b/linden/indra/newview/llfloaterscriptdebug.h index b20a460..42c3e7f 100644 --- a/linden/indra/newview/llfloaterscriptdebug.h +++ b/linden/indra/newview/llfloaterscriptdebug.h @@ -62,7 +62,7 @@ public: LLFloaterScriptDebugOutput(const LLUUID& object_id); ~LLFloaterScriptDebugOutput(); - virtual void init(const LLString& title, BOOL resizable, + virtual void initFloater(const LLString& title, BOOL resizable, S32 min_width, S32 min_height, BOOL drag_on_left, BOOL minimizable, BOOL close_btn); diff --git a/linden/indra/newview/llfloatersnapshot.cpp b/linden/indra/newview/llfloatersnapshot.cpp index 9c91348..88e9235 100644 --- a/linden/indra/newview/llfloatersnapshot.cpp +++ b/linden/indra/newview/llfloatersnapshot.cpp @@ -585,10 +585,10 @@ void LLSnapshotLivePreview::onIdle( void* snapshot_preview ) previewp->mJPEGImage = NULL; // deletes image previewp->mJPEGImage = new LLImageJPEG(); previewp->mJPEGImage->setEncodeQuality(llclamp(previewp->mSnapshotQuality, 0, 100)); - if (previewp->mJPEGImage->encode(previewp->mRawImage)) + if (previewp->mJPEGImage->encode(previewp->mRawImage, 0.0f)) { previewp->mDataSize = previewp->mJPEGImage->getDataSize(); - previewp->mJPEGImage->decode(previewp->mRawImageEncoded); + previewp->mJPEGImage->decode(previewp->mRawImageEncoded, 0.0f); } } else if (previewp->getSnapshotType() == SNAPSHOT_TEXTURE) @@ -601,10 +601,10 @@ void LLSnapshotLivePreview::onIdle( void* snapshot_preview ) scaled->biasedScaleToPowerOfTwo(512); previewp->mImageScaled[previewp->mCurImageIndex] = TRUE; - if (formatted->encode(scaled)) + if (formatted->encode(scaled, 0.0f)) { previewp->mDataSize = formatted->getDataSize(); - formatted->decode(previewp->mRawImageEncoded); + formatted->decode(previewp->mRawImageEncoded, 0.0f); } } else @@ -695,7 +695,7 @@ void LLSnapshotLivePreview::saveTexture() scaled->biasedScaleToPowerOfTwo(512); - if (formatted->encode(scaled)) + if (formatted->encode(scaled, 0.0f)) { LLVFile::writeFile(formatted->getData(), formatted->getDataSize(), gVFS, new_asset_id, LLAssetType::AT_TEXTURE); std::string pos_string; diff --git a/linden/indra/newview/llfolderview.cpp b/linden/indra/newview/llfolderview.cpp index 586c466..9c59c7b 100644 --- a/linden/indra/newview/llfolderview.cpp +++ b/linden/indra/newview/llfolderview.cpp @@ -4563,6 +4563,9 @@ LLInventoryFilter::LLInventoryFilter(const LLString& name) : mLastLogoff = gSavedPerAccountSettings.getU32("LastLogoff"); mFilterBehavior = FILTER_NONE; + + // copy mFilterOps into mDefaultFilterOps + markDefault(); } LLInventoryFilter::~LLInventoryFilter() diff --git a/linden/indra/newview/llfolderview.h b/linden/indra/newview/llfolderview.h index 0f26dfa..1bd46d7 100644 --- a/linden/indra/newview/llfolderview.h +++ b/linden/indra/newview/llfolderview.h @@ -286,7 +286,10 @@ class LLInventorySort { public: LLInventorySort() - : mSortOrder(0) { } + : mSortOrder(0), + mByDate(false), + mSystemToTop(false), + mFoldersByName(false) { } // Returns true if order has changed bool updateSort(U32 order); diff --git a/linden/indra/newview/llimview.cpp b/linden/indra/newview/llimview.cpp index 92e46b4..cad8649 100644 --- a/linden/indra/newview/llimview.cpp +++ b/linden/indra/newview/llimview.cpp @@ -420,6 +420,8 @@ void LLIMMgr::addMessage( other_participant_id = LLUUID::null; } + + LLFloaterIMPanel* floater; LLUUID new_session_id = session_id; if (new_session_id.isNull()) @@ -871,19 +873,14 @@ public: if ( floaterp ) { - std::string error_string; - if ( 404 == statusNum ) { + std::string error_string; error_string = "does not exist"; - } - else - { - error_string = "generic"; - } - floaterp->showSessionStartError( - error_string); + floaterp->showSessionStartError( + error_string); + } } } } diff --git a/linden/indra/newview/llinventorymodel.cpp b/linden/indra/newview/llinventorymodel.cpp index feab282..5a91cac 100644 --- a/linden/indra/newview/llinventorymodel.cpp +++ b/linden/indra/newview/llinventorymodel.cpp @@ -538,7 +538,7 @@ U32 LLInventoryModel::updateItem(const LLViewerInventoryItem* item) { mask |= LLInventoryObserver::LABEL; } - old_item->copy(item); + old_item->copyViewerItem(item); mask |= LLInventoryObserver::INTERNAL; } else @@ -654,14 +654,14 @@ void LLInventoryModel::updateCategory(const LLViewerInventoryCategory* cat) { mask |= LLInventoryObserver::LABEL; } - old_cat->copy(cat); + old_cat->copyViewerCategory(cat); addChangedMask(mask, cat->getUUID()); } else { // add this category LLPointer new_cat = new LLViewerInventoryCategory(cat->getParentUUID()); - new_cat->copy(cat); + new_cat->copyViewerCategory(cat); addCategory(new_cat); // make sure this category is correctly referenced by it's parent. diff --git a/linden/indra/newview/llmimetypes.h b/linden/indra/newview/llmimetypes.h index 6267e7f..a6a3fde 100644 --- a/linden/indra/newview/llmimetypes.h +++ b/linden/indra/newview/llmimetypes.h @@ -68,7 +68,7 @@ public: static bool findAllowResize(const LLString& mime_type); // accessor for flag to enable/disable media size edit fields - static bool LLMIMETypes::findAllowLooping(const LLString& mime_type); + static bool findAllowLooping(const LLString& mime_type); // accessor for flag to enable/disable media looping checkbox public: diff --git a/linden/indra/newview/llnameeditor.cpp b/linden/indra/newview/llnameeditor.cpp index 2ba25c3..dcb8911 100644 --- a/linden/indra/newview/llnameeditor.cpp +++ b/linden/indra/newview/llnameeditor.cpp @@ -135,7 +135,7 @@ void LLNameEditor::refreshAll(const LLUUID& id, const char* firstname, } } -void LLNameEditor::setValue( LLSD value ) +void LLNameEditor::setValue( const LLSD& value ) { setNameID(value.asUUID(), FALSE); } diff --git a/linden/indra/newview/llnameeditor.h b/linden/indra/newview/llnameeditor.h index 02e67aa..1f31f64 100644 --- a/linden/indra/newview/llnameeditor.h +++ b/linden/indra/newview/llnameeditor.h @@ -78,7 +78,7 @@ public: virtual LLString getWidgetTag() const { return LL_NAME_EDITOR_TAG; } // Take/return agent UUIDs - virtual void setValue( LLSD value ); + virtual void setValue( const LLSD& value ); virtual LLSD getValue() const; private: diff --git a/linden/indra/newview/lloverlaybar.h b/linden/indra/newview/lloverlaybar.h index 136c4e7..abbc33f 100644 --- a/linden/indra/newview/lloverlaybar.h +++ b/linden/indra/newview/lloverlaybar.h @@ -61,7 +61,7 @@ public: virtual LLString getWidgetTag() const; /*virtual*/ void refresh(); - /*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent); + /*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE); /*virtual*/ BOOL postBuild(); void layoutButtons(); diff --git a/linden/indra/newview/llpanelclassified.cpp b/linden/indra/newview/llpanelclassified.cpp index 7b9c3f8..45c4e38 100644 --- a/linden/indra/newview/llpanelclassified.cpp +++ b/linden/indra/newview/llpanelclassified.cpp @@ -231,14 +231,14 @@ BOOL LLPanelClassified::postBuild() mNameEditor = LLViewerUICtrlFactory::getLineEditorByName(this, "given_name_editor"); mNameEditor->setMaxTextLength(DB_PARCEL_NAME_LEN); mNameEditor->setCommitOnFocusLost(TRUE); - mNameEditor->setFocusReceivedCallback(onFocusReceived, this); + mNameEditor->setFocusReceivedCallback(focusReceived, this); mNameEditor->setCommitCallback(onCommitAny); mNameEditor->setCallbackUserData(this); mNameEditor->setPrevalidate( LLLineEditor::prevalidateASCII ); mDescEditor = LLUICtrlFactory::getTextEditorByName(this, "desc_editor"); mDescEditor->setCommitOnFocusLost(TRUE); - mDescEditor->setFocusReceivedCallback(onFocusReceived, this); + mDescEditor->setFocusReceivedCallback(focusReceived, this); mDescEditor->setCommitCallback(onCommitAny); mDescEditor->setCallbackUserData(this); mDescEditor->setTabsToNextField(TRUE); @@ -965,7 +965,7 @@ void LLPanelClassified::onCommitAny(LLUICtrl* ctrl, void* data) } // static -void LLPanelClassified::onFocusReceived(LLFocusableElement* ctrl, void* data) +void LLPanelClassified::focusReceived(LLFocusableElement* ctrl, void* data) { // allow the data to be saved onCommitAny((LLUICtrl*)ctrl, data); diff --git a/linden/indra/newview/llpanelclassified.h b/linden/indra/newview/llpanelclassified.h index ecc196a..78f8a90 100644 --- a/linden/indra/newview/llpanelclassified.h +++ b/linden/indra/newview/llpanelclassified.h @@ -113,7 +113,7 @@ protected: static void onClickProfile(void* data); static void onClickSet(void* data); - static void onFocusReceived(LLFocusableElement* ctrl, void* data); + static void focusReceived(LLFocusableElement* ctrl, void* data); static void onCommitAny(LLUICtrl* ctrl, void* data); BOOL checkDirty(); // Update and return mDirty diff --git a/linden/indra/newview/llpaneldirbrowser.cpp b/linden/indra/newview/llpaneldirbrowser.cpp index cd9e6ae..3ce533c 100644 --- a/linden/indra/newview/llpaneldirbrowser.cpp +++ b/linden/indra/newview/llpaneldirbrowser.cpp @@ -234,7 +234,7 @@ void LLPanelDirBrowser::onClickNext(void* data) } // static -const std::string LLPanelDirBrowser::filter_short_words( const std::string source_string, +std::string LLPanelDirBrowser::filterShortWords( const std::string source_string, int shortest_word_length, bool& was_filtered ) { diff --git a/linden/indra/newview/llpaneldirbrowser.h b/linden/indra/newview/llpaneldirbrowser.h index 23df195..fd32e5a 100644 --- a/linden/indra/newview/llpaneldirbrowser.h +++ b/linden/indra/newview/llpaneldirbrowser.h @@ -121,7 +121,7 @@ public: static void processDirPopularReply(LLMessageSystem* msg, void**); static void processDirLandReply(LLMessageSystem *msg, void**); - const std::string filter_short_words( const std::string source_string, int shortest_word_length, bool& was_filtered ); + std::string filterShortWords( const std::string source_string, int shortest_word_length, bool& was_filtered ); protected: void updateResultCount(); diff --git a/linden/indra/newview/llpaneldirgroups.cpp b/linden/indra/newview/llpaneldirgroups.cpp index ab2ec38..0a0a14d 100644 --- a/linden/indra/newview/llpaneldirgroups.cpp +++ b/linden/indra/newview/llpaneldirgroups.cpp @@ -82,18 +82,16 @@ void LLPanelDirGroups::draw() // virtual void LLPanelDirGroups::performQuery() { - if (childGetValue("name").asString().length() < mMinSearchChars) + std::string group_name = childGetValue("name").asString(); + if (group_name.length() < mMinSearchChars) { return; } - // filter short words out of the query string - // and indidate if we did have to filter it - bool query_was_filtered = false; - std::string query_string = LLPanelDirBrowser::filter_short_words( - childGetValue("name").asString(), - mMinSearchChars, - query_was_filtered ); + // "hi " is three chars but not a long-enough search + std::string query_string = group_name; + LLString::trim( query_string ); + bool query_was_filtered = (query_string != group_name); // possible we threw away all the short words in the query so check length if ( query_string.length() < mMinSearchChars ) @@ -107,7 +105,7 @@ void LLPanelDirGroups::performQuery() { LLString::format_map_t args; args["[FINALQUERY]"] = query_string; - gViewerWindow->alertXml("SeachFilteredOnShortWords"); + gViewerWindow->alertXml("SeachFilteredOnShortWords", args); }; setupNewSearch(); diff --git a/linden/indra/newview/llpaneldirpeople.cpp b/linden/indra/newview/llpaneldirpeople.cpp index 64cde2d..cae2bef 100644 --- a/linden/indra/newview/llpaneldirpeople.cpp +++ b/linden/indra/newview/llpaneldirpeople.cpp @@ -75,10 +75,12 @@ void LLPanelDirPeople::performQuery() // filter short words out of the query string // and indidate if we did have to filter it + // The shortest username is 2 characters long. + const S32 SHORTEST_WORD_LEN = 2; bool query_was_filtered = false; - std::string query_string = LLPanelDirBrowser::filter_short_words( + std::string query_string = LLPanelDirBrowser::filterShortWords( childGetValue("name").asString(), - mMinSearchChars, + SHORTEST_WORD_LEN, query_was_filtered ); // possible we threw away all the short words in the query so check length @@ -93,7 +95,7 @@ void LLPanelDirPeople::performQuery() { LLString::format_map_t args; args["[FINALQUERY]"] = query_string; - gViewerWindow->alertXml("SeachFilteredOnShortWords"); + gViewerWindow->alertXml("SeachFilteredOnShortWords", args); }; setupNewSearch(); diff --git a/linden/indra/newview/llpaneldirplaces.cpp b/linden/indra/newview/llpaneldirplaces.cpp index 9a761c4..3e79ec0 100644 --- a/linden/indra/newview/llpaneldirplaces.cpp +++ b/linden/indra/newview/llpaneldirplaces.cpp @@ -99,19 +99,16 @@ void LLPanelDirPlaces::draw() // virtual void LLPanelDirPlaces::performQuery() { - LLString name = childGetValue("name").asString(); - if (name.length() < mMinSearchChars) + LLString place_name = childGetValue("name").asString(); + if (place_name.length() < mMinSearchChars) { return; } - // filter short words out of the query string - // and indidate if we did have to filter it - bool query_was_filtered = false; - std::string query_string = LLPanelDirBrowser::filter_short_words( - name, - mMinSearchChars, - query_was_filtered ); + // "hi " is three chars but not a long-enough search + std::string query_string = place_name; + LLString::trim( query_string ); + bool query_was_filtered = (query_string != place_name); // possible we threw away all the short words in the query so check length if ( query_string.length() < mMinSearchChars ) @@ -125,7 +122,7 @@ void LLPanelDirPlaces::performQuery() { LLString::format_map_t args; args["[FINALQUERY]"] = query_string; - gViewerWindow->alertXml("SeachFilteredOnShortWords"); + gViewerWindow->alertXml("SeachFilteredOnShortWords", args); }; LLString catstring = childGetValue("Category").asString(); diff --git a/linden/indra/newview/llpanelgroupnotices.cpp b/linden/indra/newview/llpanelgroupnotices.cpp index ef57aff..30709af 100644 --- a/linden/indra/newview/llpanelgroupnotices.cpp +++ b/linden/indra/newview/llpanelgroupnotices.cpp @@ -508,8 +508,10 @@ void LLPanelGroupNotices::processNotices(LLMessageSystem* msg) row["columns"][4]["column"] = "sort"; row["columns"][4]["value"] = buffer; - mNoticesList->addElement(row, ADD_SORTED); + mNoticesList->addElement(row, ADD_BOTTOM); } + + mNoticesList->sortItems(); } void LLPanelGroupNotices::onSelectNotice(LLUICtrl* ctrl, void* data) diff --git a/linden/indra/newview/llpanelgroupvoting.cpp b/linden/indra/newview/llpanelgroupvoting.cpp index d0e513c..dae1eda 100644 --- a/linden/indra/newview/llpanelgroupvoting.cpp +++ b/linden/indra/newview/llpanelgroupvoting.cpp @@ -148,9 +148,9 @@ public: static std::map sGroupIDs; }; -//**************************************** -//** LLPanelGroupVoting::impl Functions ** -//**************************************** +// **************************************** +// ** LLPanelGroupVoting::impl Functions ** +// **************************************** LLPanelGroupVoting::impl::impl(LLPanelGroupVoting& panel, const LLUUID& group_id) : mPanel(panel), @@ -204,6 +204,7 @@ LLPanelGroupVoting::impl::impl(LLPanelGroupVoting& panel, const LLUUID& group_id mProposalText = NULL; mBtnCreateProposal = NULL; mBtnSubmitProposal = NULL; + mBtnCancelProposal = NULL; mBtnViewProposalList = NULL; mBtnViewProposalItem = NULL; diff --git a/linden/indra/newview/llpanelinventory.cpp b/linden/indra/newview/llpanelinventory.cpp index 0d85e94..3e92760 100644 --- a/linden/indra/newview/llpanelinventory.cpp +++ b/linden/indra/newview/llpanelinventory.cpp @@ -707,7 +707,7 @@ public: virtual BOOL isItemRemovable(); virtual void buildContextMenu(LLMenuGL& menu, U32 flags); virtual BOOL hasChildren() const; - virtual BOOL startDrag(EDragAndDropType* type, LLUUID* id); + virtual BOOL startDrag(EDragAndDropType* type, LLUUID* id) const; virtual BOOL dragOrDrop(MASK mask, BOOL drop, EDragAndDropType cargo_type, void* cargo_data); @@ -757,7 +757,7 @@ BOOL LLTaskCategoryBridge::hasChildren() const return FALSE; } -BOOL LLTaskCategoryBridge::startDrag(EDragAndDropType* type, LLUUID* id) +BOOL LLTaskCategoryBridge::startDrag(EDragAndDropType* type, LLUUID* id) const { //llinfos << "LLTaskInvFVBridge::startDrag()" << llendl; if(mPanel) diff --git a/linden/indra/newview/llpreview.h b/linden/indra/newview/llpreview.h index 6265943..d7496d6 100644 --- a/linden/indra/newview/llpreview.h +++ b/linden/indra/newview/llpreview.h @@ -100,7 +100,7 @@ public: void setAuxItem( const LLInventoryItem* item ) { if ( mAuxItem ) - mAuxItem->copy(item); + mAuxItem->copyItem(item); } static void onBtnCopyToInv(void* userdata); diff --git a/linden/indra/newview/llpreviewscript.cpp b/linden/indra/newview/llpreviewscript.cpp index e9a0b4a..2f3a8a2 100644 --- a/linden/indra/newview/llpreviewscript.cpp +++ b/linden/indra/newview/llpreviewscript.cpp @@ -2049,7 +2049,7 @@ void LLLiveLSLEditor::saveIfNeeded() LLInventoryItem* inv_item = (LLInventoryItem*)object->getInventoryObject(mItemID); if(inv_item) { - mItem->copy(inv_item); + mItem->copyItem(inv_item); } // Don't need to save if we're pristine diff --git a/linden/indra/newview/llpreviewtexture.cpp b/linden/indra/newview/llpreviewtexture.cpp index b8fa668..9f401f4 100644 --- a/linden/indra/newview/llpreviewtexture.cpp +++ b/linden/indra/newview/llpreviewtexture.cpp @@ -427,6 +427,9 @@ void LLPreviewTexture::updateAspectRatio() view_height += BTN_HEIGHT + CLIENT_RECT_VPAD; button_height = BTN_HEIGHT + PREVIEW_PAD; } + + view_width = llmax(view_width, getMinWidth()); + view_height = llmax(view_height, getMinHeight()); if (client_height != mLastHeight || client_width != mLastWidth) { diff --git a/linden/indra/newview/llselectmgr.cpp b/linden/indra/newview/llselectmgr.cpp index 45a4ff5..da71c6b 100644 --- a/linden/indra/newview/llselectmgr.cpp +++ b/linden/indra/newview/llselectmgr.cpp @@ -83,6 +83,7 @@ #include "llglheaders.h" +LLViewerObject* getSelectedParentObject(LLViewerObject *object) ; // // Consts // @@ -262,7 +263,7 @@ void LLSelectMgr::overrideObjectUpdates() virtual bool apply(LLSelectNode* selectNode) { LLViewerObject* object = selectNode->getObject(); - if (object->permMove()) + if (object && object->permMove()) { if (!selectNode->mLastPositionLocal.isExactlyZero()) { @@ -1038,10 +1039,19 @@ void LLSelectMgr::getGrid(LLVector3& origin, LLQuaternion &rotation, LLVector3 & if (mGridMode == GRID_MODE_LOCAL && mSelectedObjects->getObjectCount()) { + LLViewerObject* root = getSelectedParentObject(mSelectedObjects->getFirstObject()); LLBBox bbox = mSavedSelectionBBox; mGridOrigin = mSavedSelectionBBox.getCenterAgent(); - mGridRotation = mSavedSelectionBBox.getRotation(); mGridScale = mSavedSelectionBBox.getExtentLocal() * 0.5f; + + if(mSelectedObjects->getObjectCount() < 2 || !root || root->mDrawable.isNull()) + { + mGridRotation = mSavedSelectionBBox.getRotation(); + } + else //set to the root object + { + mGridRotation = root->getRenderRotation(); + } } else if (mGridMode == GRID_MODE_REF_OBJECT && first_grid_object && first_grid_object->mDrawable.notNull()) { @@ -1317,6 +1327,8 @@ void LLSelectMgr::dump() { LLSelectNode* node = *iter; LLViewerObject* objectp = node->getObject(); + if (!objectp) + continue; for (S32 te = 0; te < objectp->getNumTEs(); ++te ) { if (node->isTESelected(te)) @@ -2099,6 +2111,11 @@ void LLSelectMgr::adjustTexturesByScale(BOOL send_to_sim, BOOL stretch) LLSelectNode* selectNode = *iter; LLViewerObject* object = selectNode->getObject(); + if (!object) + { + continue; + } + if (!object->permModify()) { continue; @@ -2199,7 +2216,7 @@ BOOL LLSelectMgr::selectGetModify() { LLSelectNode* node = *iter; LLViewerObject* object = node->getObject(); - if( !node->mValid ) + if( !object || !node->mValid ) { return FALSE; } @@ -3259,7 +3276,7 @@ void LLSelectMgr::packBuyObjectIDs(LLSelectNode* node, void* data) { buy->mObjectsSent.push_back(object); gMessageSystem->nextBlockFast(_PREHASH_ObjectData); - gMessageSystem->addU32Fast(_PREHASH_ObjectLocalID, node->getObject()->getLocalID() ); + gMessageSystem->addU32Fast(_PREHASH_ObjectLocalID, object->getLocalID() ); gMessageSystem->addU8Fast(_PREHASH_SaleType, buy->mSaleInfo.getSaleType()); gMessageSystem->addS32Fast(_PREHASH_SalePrice, buy->mSaleInfo.getSalePrice()); } @@ -3690,6 +3707,10 @@ void LLSelectMgr::saveSelectedObjectTransform(EActionType action_type) virtual bool apply(LLSelectNode* selectNode) { LLViewerObject* object = selectNode->getObject(); + if (!object) + { + return true; // skip + } selectNode->mSavedPositionLocal = object->getPosition(); if (object->isAttachment()) { @@ -4020,7 +4041,10 @@ void LLSelectMgr::sendListToRegions(const LLString& message_name, push_all(std::queue& n) : nodes_to_send(n) {} virtual bool apply(LLSelectNode* node) { - nodes_to_send.push(node); + if (node->getObject()) + { + nodes_to_send.push(node); + } return true; } }; @@ -4031,29 +4055,20 @@ void LLSelectMgr::sendListToRegions(const LLString& message_name, push_some(std::queue& n, bool roots) : nodes_to_send(n), mRoots(roots) {} virtual bool apply(LLSelectNode* node) { - BOOL is_root = node->getObject()->isRootEdit(); - if ((mRoots && is_root) || (!mRoots && !is_root)) + if (node->getObject()) { - nodes_to_send.push(node); + BOOL is_root = node->getObject()->isRootEdit(); + if ((mRoots && is_root) || (!mRoots && !is_root)) + { + nodes_to_send.push(node); + } } return true; } }; - struct push_editable : public LLSelectedNodeFunctor - { - std::queue& nodes_to_send; - push_editable(std::queue& n) : nodes_to_send(n) {} - virtual bool apply(LLSelectNode* node) - { - - nodes_to_send.push(node); - return true; - } - }; struct push_all pushall(nodes_to_send); struct push_some pushroots(nodes_to_send, TRUE); struct push_some pushnonroots(nodes_to_send, FALSE); - struct push_editable pusheditable(nodes_to_send); switch(send_type) { @@ -4061,7 +4076,7 @@ void LLSelectMgr::sendListToRegions(const LLString& message_name, if(message_name == "ObjectBuy") getSelection()->applyToRootNodes(&pushroots); else - getSelection()->applyToRootNodes(&pusheditable); + getSelection()->applyToRootNodes(&pushall); break; case SEND_INDIVIDUALS: @@ -4125,7 +4140,7 @@ void LLSelectMgr::sendListToRegions(const LLString& message_name, } else { - node = nodes_to_send.front(); + node = nodes_to_send.front(); nodes_to_send.pop(); } } @@ -4265,7 +4280,7 @@ void LLSelectMgr::processObjectProperties(LLMessageSystem* msg, void** user_data f(const LLUUID& id) : mID(id) {} virtual bool apply(LLSelectNode* node) { - return (node->getObject()->mID == mID); + return (node->getObject() && node->getObject()->mID == mID); } } func(id); LLSelectNode* node = gSelectMgr->getSelection()->getFirstNode(&func); @@ -4408,7 +4423,7 @@ void LLSelectMgr::processObjectPropertiesFamily(LLMessageSystem* msg, void** use f(const LLUUID& id) : mID(id) {} virtual bool apply(LLSelectNode* node) { - return (node->getObject()->mID == mID); + return (node->getObject() && node->getObject()->mID == mID); } } func(id); LLSelectNode* node = gSelectMgr->getHoverObjects()->getFirstNode(&func); @@ -4516,7 +4531,8 @@ void LLSelectMgr::updateSilhouettes() { LLSelectNode* node = *iter; LLViewerObject* objectp = node->getObject(); - + if (!objectp) + continue; // do roots first, then children so that root flags are cleared ASAP BOOL roots_only = (pass == 0); BOOL is_root = (objectp->isRootEdit()); @@ -4589,6 +4605,8 @@ void LLSelectMgr::updateSilhouettes() { LLSelectNode* node = *iter; LLViewerObject* objectp = node->getObject(); + if (!objectp) + continue; if (objectp->isRoot() || !select_linked_set) { if (roots.count(objectp) == 0) @@ -4677,7 +4695,9 @@ void LLSelectMgr::updateSilhouettes() { LLSelectNode* node = *iter; LLViewerObject* objectp = node->getObject(); - + if (!objectp) + continue; + // do roots first, then children so that root flags are cleared ASAP BOOL roots_only = (pass == 0); BOOL is_root = objectp->isRootEdit(); @@ -4781,6 +4801,8 @@ void LLSelectMgr::renderSilhouettes(BOOL for_hud) { LLSelectNode* node = *iter; LLViewerObject* objectp = node->getObject(); + if (!objectp) + continue; if (objectp->isHUDAttachment() != for_hud) { continue; @@ -4819,6 +4841,8 @@ void LLSelectMgr::renderSilhouettes(BOOL for_hud) { LLSelectNode* node = *iter; LLViewerObject* objectp = node->getObject(); + if (!objectp) + continue; if (objectp->isHUDAttachment() != for_hud) { continue; @@ -5414,6 +5438,8 @@ void LLSelectMgr::updateSelectionCenter() { LLSelectNode* node = *iter; LLViewerObject* object = node->getObject(); + if (!object) + continue; LLViewerObject *myAvatar = gAgent.getAvatarObject(); LLViewerObject *root = object->getRootEdit(); if (mSelectedObjects->mSelectType == SELECT_TYPE_WORLD && // not an attachment @@ -5826,6 +5852,8 @@ S32 LLObjectSelection::getTECount() { LLSelectNode* node = *iter; LLViewerObject* object = node->getObject(); + if (!object) + continue; S32 num_tes = object->getNumTEs(); for (S32 te = 0; te < num_tes; te++) { @@ -5858,6 +5886,8 @@ bool LLObjectSelection::applyToObjects(LLSelectedObjectFunctor* func, bool first { iterator nextiter = iter++; LLViewerObject* object = (*nextiter)->getObject(); + if (!object) + continue; bool r = func->apply(object); if (firstonly && r) return true; @@ -5874,6 +5904,8 @@ bool LLObjectSelection::applyToRootObjects(LLSelectedObjectFunctor* func, bool f { root_iterator nextiter = iter++; LLViewerObject* object = (*nextiter)->getObject(); + if (!object) + continue; bool r = func->apply(object); if (firstonly && r) return true; @@ -5891,6 +5923,8 @@ bool LLObjectSelection::applyToTEs(LLSelectedTEFunctor* func, bool firstonly) iterator nextiter = iter++; LLSelectNode* node = *nextiter; LLViewerObject* object = (*nextiter)->getObject(); + if (!object) + continue; S32 num_tes = llmin((S32)object->getNumTEs(), (S32)object->getNumFaces()); // avatars have TEs but no faces for (S32 te = 0; te < num_tes; ++te) { @@ -6093,7 +6127,7 @@ LLSelectNode* LLObjectSelection::getFirstMoveableNode(BOOL get_root_first) bool apply(LLSelectNode* node) { LLViewerObject* obj = node->getObject(); - return obj->permMove(); + return obj && obj->permMove(); } } func; LLSelectNode* res = get_root_first ? getFirstRootNode(&func, TRUE) : getFirstNode(&func); @@ -6110,7 +6144,7 @@ LLViewerObject* LLObjectSelection::getFirstCopyableObject(BOOL get_parent) bool apply(LLSelectNode* node) { LLViewerObject* obj = node->getObject(); - return obj->permCopy() && !obj->isAttachment(); + return obj && obj->permCopy() && !obj->isAttachment(); } } func; return getFirstSelectedObject(&func, get_parent); @@ -6131,10 +6165,9 @@ LLViewerObject* LLObjectSelection::getFirstDeleteableObject() LLViewerObject* obj = node->getObject(); // you can delete an object if you are the owner // or you have permission to modify it. - if( (obj->permModify()) - || (obj->permYouOwner()) - || (!obj->permAnyOwner()) // public - ) + if( obj && ( (obj->permModify()) || + (obj->permYouOwner()) || + (!obj->permAnyOwner()) )) // public { if( !obj->isAttachment() ) { @@ -6158,7 +6191,7 @@ LLViewerObject* LLObjectSelection::getFirstEditableObject(BOOL get_parent) bool apply(LLSelectNode* node) { LLViewerObject* obj = node->getObject(); - return obj->permModify(); + return obj && obj->permModify(); } } func; return getFirstSelectedObject(&func, get_parent); @@ -6174,7 +6207,7 @@ LLViewerObject* LLObjectSelection::getFirstMoveableObject(BOOL get_parent) bool apply(LLSelectNode* node) { LLViewerObject* obj = node->getObject(); - return obj->permMove(); + return obj && obj->permMove(); } } func; return getFirstSelectedObject(&func, get_parent); diff --git a/linden/indra/newview/llspatialpartition.cpp b/linden/indra/newview/llspatialpartition.cpp index 774bf6b..b6fbfbf 100644 --- a/linden/indra/newview/llspatialpartition.cpp +++ b/linden/indra/newview/llspatialpartition.cpp @@ -1602,6 +1602,12 @@ public: { return mCamera->AABBInFrustumNoFarClip(group->mBounds[0], group->mBounds[1]); } + + virtual S32 frustumCheckObjects(const LLSpatialGroup* group) + { + S32 res = mCamera->AABBInFrustumNoFarClip(group->mObjectBounds[0], group->mObjectBounds[1]); + return res; + } }; class LLOctreeSelect : public LLOctreeCull diff --git a/linden/indra/newview/llstartup.cpp b/linden/indra/newview/llstartup.cpp index 69ac136..c41c4ba 100644 --- a/linden/indra/newview/llstartup.cpp +++ b/linden/indra/newview/llstartup.cpp @@ -3629,7 +3629,7 @@ void init_start_screen(S32 location_id) gStartImageWidth = start_image_bmp->getWidth(); gStartImageHeight = start_image_bmp->getHeight(); LLPointer raw = new LLImageRaw; - if (!start_image_bmp->decode(raw)) + if (!start_image_bmp->decode(raw, 0.0f)) { llinfos << "Bitmap decode failed" << llendl; gStartImageGL = NULL; diff --git a/linden/indra/newview/llstatgraph.cpp b/linden/indra/newview/llstatgraph.cpp index 992b959..3725228 100644 --- a/linden/indra/newview/llstatgraph.cpp +++ b/linden/indra/newview/llstatgraph.cpp @@ -134,9 +134,9 @@ void LLStatGraph::draw() } } -void LLStatGraph::setValue(const F32 value) +void LLStatGraph::setValue(const LLSD& value) { - mValue = value; + mValue = (F32)value.asReal(); } void LLStatGraph::setMin(const F32 min) diff --git a/linden/indra/newview/llstatgraph.h b/linden/indra/newview/llstatgraph.h index 2c71e4d..be44985 100644 --- a/linden/indra/newview/llstatgraph.h +++ b/linden/indra/newview/llstatgraph.h @@ -55,7 +55,8 @@ public: void setMin(const F32 min); void setMax(const F32 max); - void setValue(const F32 value); + /*virtual*/ void setValue(const LLSD& value); + LLStat *mStatp; BOOL mPerSec; private: diff --git a/linden/indra/newview/llstatview.h b/linden/indra/newview/llstatview.h index 0db0850..523b2af 100644 --- a/linden/indra/newview/llstatview.h +++ b/linden/indra/newview/llstatview.h @@ -48,7 +48,7 @@ public: virtual LLString getWidgetTag() const; /* virtual void draw(); - virtual void reshape(S32 width, S32 height); + virtual void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE); virtual LLRect getRequiredRect(); // Return the height of this object, given the set options. */ diff --git a/linden/indra/newview/lltexturectrl.cpp b/linden/indra/newview/lltexturectrl.cpp index 2ca9f99..ec8d91c 100644 --- a/linden/indra/newview/lltexturectrl.cpp +++ b/linden/indra/newview/lltexturectrl.cpp @@ -1380,7 +1380,7 @@ BOOL LLTextureCtrl::handleUnicodeCharHere(llwchar uni_char, BOOL called_from_par return LLUICtrl::handleUnicodeCharHere(uni_char, called_from_parent); } -void LLTextureCtrl::setValue( LLSD value ) +void LLTextureCtrl::setValue( const LLSD& value ) { setImageAssetID(value.asUUID()); } diff --git a/linden/indra/newview/lltexturectrl.h b/linden/indra/newview/lltexturectrl.h index 91dee4f..ec45159 100644 --- a/linden/indra/newview/lltexturectrl.h +++ b/linden/indra/newview/lltexturectrl.h @@ -100,7 +100,7 @@ public: virtual void clear(); // Takes a UUID, wraps get/setImageAssetID - virtual void setValue( LLSD value ); + virtual void setValue(const LLSD& value ); virtual LLSD getValue() const; // LLTextureCtrl interface diff --git a/linden/indra/newview/lltexturefetch.cpp b/linden/indra/newview/lltexturefetch.cpp index 1b02970..3201055 100644 --- a/linden/indra/newview/lltexturefetch.cpp +++ b/linden/indra/newview/lltexturefetch.cpp @@ -55,6 +55,7 @@ class LLTextureFetchWorker : public LLWorkerClass friend class LLTextureFetch; private: +#if 0 class URLResponder : public LLHTTPClient::Responder { public: @@ -131,7 +132,8 @@ private: LLTextureFetch* mFetcher; LLUUID mID; }; - +#endif + class CacheReadResponder : public LLTextureCache::ReadResponder { public: diff --git a/linden/indra/newview/lltoolbar.h b/linden/indra/newview/lltoolbar.h index d42d7bb..dcefb98 100644 --- a/linden/indra/newview/lltoolbar.h +++ b/linden/indra/newview/lltoolbar.h @@ -58,7 +58,7 @@ public: EAcceptance* accept, LLString& tooltip_msg); - /*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent); + /*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE); static void toggle(void*); static BOOL visible(void*); diff --git a/linden/indra/newview/llurlsimstring.cpp b/linden/indra/newview/llurlsimstring.cpp index 5829e73..931cf7b 100644 --- a/linden/indra/newview/llurlsimstring.cpp +++ b/linden/indra/newview/llurlsimstring.cpp @@ -77,7 +77,7 @@ S32 LLURLSimString::parseGridIdx(const LLString& in_string, S32 idx0, S32* res, { if (idx0 == LLString::npos || in_string[idx0] != '/') { - return LLString::npos; // parse error + return (S32)LLString::npos; // parse error } idx0++; LLString::size_type idx1 = in_string.find_first_of('/', idx0); diff --git a/linden/indra/newview/llviewerdisplay.cpp b/linden/indra/newview/llviewerdisplay.cpp index 1e4958b..9395b97 100644 --- a/linden/indra/newview/llviewerdisplay.cpp +++ b/linden/indra/newview/llviewerdisplay.cpp @@ -1114,7 +1114,7 @@ void render_disconnected_background() gDisconnectedImagep = new LLImageGL( FALSE ); LLPointer raw = new LLImageRaw; - if (!image_bmp->decode(raw)) + if (!image_bmp->decode(raw, 0.0f)) { llinfos << "Bitmap decode failed" << llendl; gDisconnectedImagep = NULL; diff --git a/linden/indra/newview/llviewerimagelist.cpp b/linden/indra/newview/llviewerimagelist.cpp index 0e29f76..faa0afb 100644 --- a/linden/indra/newview/llviewerimagelist.cpp +++ b/linden/indra/newview/llviewerimagelist.cpp @@ -888,7 +888,24 @@ F32 LLViewerImageList::updateImagesFetchTextures(F32 max_time) image_priority_list_t::iterator iter1 = mImageList.begin(); while(update_counter > 0) { - entries.insert(*iter1); + // added extra granularity and verbosity for crash logging during 1.19.1 RC. -Brad + if(iter1 == mImageList.end()) + { + llerrs << "DEV-12002: update_counter not calculated correctly!" << llendl; + } + + LLPointer const & ptr = *iter1; + + LLViewerImage * img = ptr.get(); + + // added extra granularity and verbosity for crash logging during 1.19.1 RC. -Brad + if(img == NULL) + { + llwarns << "DEV-12002: image is NULL!" << llendl; + } + + entries.insert(img); + ++iter1; update_counter--; } @@ -1021,7 +1038,7 @@ BOOL LLViewerImageList::createUploadFile(const LLString& filename, return FALSE; } - if (!bmp_image->decode(raw_image)) + if (!bmp_image->decode(raw_image, 0.0f)) { return FALSE; } @@ -1058,7 +1075,7 @@ BOOL LLViewerImageList::createUploadFile(const LLString& filename, return FALSE; } - if (!jpeg_image->decode(raw_image)) + if (!jpeg_image->decode(raw_image, 0.0f)) { return FALSE; } @@ -1073,7 +1090,7 @@ BOOL LLViewerImageList::createUploadFile(const LLString& filename, return FALSE; } - if (!png_image->decode(raw_image)) + if (!png_image->decode(raw_image, 0.0f)) { return FALSE; } @@ -1114,7 +1131,7 @@ LLPointer LLViewerImageList::convertToUploadFile(LLPointergetHeight() <= LL_IMAGE_REZ_LOSSLESS_CUTOFF)) compressedImage->setReversible(TRUE); - compressedImage->encode(raw_image); + compressedImage->encode(raw_image, 0.0f); return compressedImage; } diff --git a/linden/indra/newview/llviewerinventory.cpp b/linden/indra/newview/llviewerinventory.cpp index bbd6cd4..db005c7 100644 --- a/linden/indra/newview/llviewerinventory.cpp +++ b/linden/indra/newview/llviewerinventory.cpp @@ -97,7 +97,7 @@ LLViewerInventoryItem::LLViewerInventoryItem() : LLViewerInventoryItem::LLViewerInventoryItem(const LLViewerInventoryItem* other) : LLInventoryItem() { - copy(other); + copyViewerItem(other); if (!mIsComplete) { llwarns << "LLViewerInventoryItem copy constructor for incomplete item" @@ -116,23 +116,22 @@ LLViewerInventoryItem::~LLViewerInventoryItem() { } -// virtual -void LLViewerInventoryItem::copy(const LLViewerInventoryItem* other) +void LLViewerInventoryItem::copyViewerItem(const LLViewerInventoryItem* other) { - LLInventoryItem::copy(other); + LLInventoryItem::copyItem(other); mIsComplete = other->mIsComplete; mTransactionID = other->mTransactionID; } -void LLViewerInventoryItem::copy(const LLInventoryItem *other) +// virtual +void LLViewerInventoryItem::copyItem(const LLInventoryItem *other) { - LLInventoryItem::copy(other); + LLInventoryItem::copyItem(other); mIsComplete = true; mTransactionID.setNull(); } -// virtual -void LLViewerInventoryItem::clone(LLPointer& newitem) const +void LLViewerInventoryItem::cloneViewerItem(LLPointer& newitem) const { newitem = new LLViewerInventoryItem(this); if(newitem.notNull()) @@ -348,17 +347,16 @@ LLViewerInventoryCategory::LLViewerInventoryCategory(const LLUUID& owner_id) : LLViewerInventoryCategory::LLViewerInventoryCategory(const LLViewerInventoryCategory* other) { - copy(other); + copyViewerCategory(other); } LLViewerInventoryCategory::~LLViewerInventoryCategory() { } -// virtual -void LLViewerInventoryCategory::copy(const LLViewerInventoryCategory* other) +void LLViewerInventoryCategory::copyViewerCategory(const LLViewerInventoryCategory* other) { - LLInventoryCategory::copy(other); + copyCategory(other); mOwnerID = other->mOwnerID; mVersion = other->mVersion; mDescendentCount = other->mDescendentCount; diff --git a/linden/indra/newview/llviewerinventory.h b/linden/indra/newview/llviewerinventory.h index 016f7c8..05dc19a 100644 --- a/linden/indra/newview/llviewerinventory.h +++ b/linden/indra/newview/llviewerinventory.h @@ -83,13 +83,13 @@ public: LLViewerInventoryItem(const LLViewerInventoryItem* other); LLViewerInventoryItem(const LLInventoryItem* other); - virtual void copy(const LLViewerInventoryItem* other); - virtual void copy(const LLInventoryItem* other); + void copyViewerItem(const LLViewerInventoryItem* other); + /*virtual*/ void copyItem(const LLInventoryItem* other); // construct a new clone of this item - it creates a new viewer // inventory item using the copy constructor, and returns it. // It is up to the caller to delete (unref) the item. - virtual void clone(LLPointer& newitem) const; + void cloneViewerItem(LLPointer& newitem) const; // virtual methods virtual void removeFromServer( void ); @@ -156,7 +156,7 @@ public: // Note: Because InventoryCategorys are ref counted, reference copy (a = b) // is prohibited LLViewerInventoryCategory(const LLViewerInventoryCategory* other); - virtual void copy(const LLViewerInventoryCategory* other); + void copyViewerCategory(const LLViewerInventoryCategory* other); virtual void removeFromServer(); virtual void updateParentOnServer(BOOL restamp_children) const; diff --git a/linden/indra/newview/llviewerjoint.cpp b/linden/indra/newview/llviewerjoint.cpp index 0aa9112..9e243a0 100644 --- a/linden/indra/newview/llviewerjoint.cpp +++ b/linden/indra/newview/llviewerjoint.cpp @@ -519,7 +519,7 @@ LLViewerJointCollisionVolume::LLViewerJointCollisionVolume(const std::string &na } -void LLViewerJointCollisionVolume::render() +void LLViewerJointCollisionVolume::renderCollision() { updateWorldMatrix(); glMatrixMode(GL_MODELVIEW); diff --git a/linden/indra/newview/llviewerjoint.h b/linden/indra/newview/llviewerjoint.h index ea0202e..d223c42 100644 --- a/linden/indra/newview/llviewerjoint.h +++ b/linden/indra/newview/llviewerjoint.h @@ -152,7 +152,7 @@ public: virtual BOOL inheritScale() { return TRUE; } - void render(); + void renderCollision(); LLVector3 getVolumePos(LLVector3 &offset); }; diff --git a/linden/indra/newview/llviewerjointattachment.cpp b/linden/indra/newview/llviewerjointattachment.cpp index 0747f68..ad7d5df 100644 --- a/linden/indra/newview/llviewerjointattachment.cpp +++ b/linden/indra/newview/llviewerjointattachment.cpp @@ -197,7 +197,7 @@ BOOL LLViewerJointAttachment::addObject(LLViewerObject* object) //if object is active, make it static if(drawablep->isActive()) { - drawablep->makeStatic() ; + drawablep->makeStatic(FALSE) ; } setupDrawable(drawablep); @@ -238,7 +238,7 @@ void LLViewerJointAttachment::removeObject(LLViewerObject *object) //if object is active, make it static if(object->mDrawable->isActive()) { - object->mDrawable->makeStatic() ; + object->mDrawable->makeStatic(FALSE) ; } LLVector3 cur_position = object->getRenderPosition(); diff --git a/linden/indra/newview/llviewermenu.cpp b/linden/indra/newview/llviewermenu.cpp index 0f48d7d..d531455 100644 --- a/linden/indra/newview/llviewermenu.cpp +++ b/linden/indra/newview/llviewermenu.cpp @@ -885,13 +885,15 @@ void init_client_menu(LLMenuGL* menu) NULL, &get_visibility, (void*)gDebugView->mFastTimerView, - '9', MASK_CONTROL|MASK_SHIFT ) ); + '9', MASK_CONTROL|MASK_SHIFT ) ); +#if MEM_TRACK_MEM sub->append(new LLMenuItemCheckGL("Memory", &toggle_visibility, NULL, &get_visibility, (void*)gDebugView->mMemoryView, - '0', MASK_CONTROL|MASK_SHIFT ) ); + '0', MASK_CONTROL|MASK_SHIFT ) ); +#endif sub->appendSeparator(); sub->append(new LLMenuItemCallGL("Region Info to Debug Console", &handle_region_dump_settings, NULL)); @@ -1099,6 +1101,12 @@ void init_client_menu(LLMenuGL* menu) menu->appendMenu(sub); } + menu->append(new LLMenuItemCheckGL( "Output Debug Minidump", + &menu_toggle_control, + NULL, + &menu_check_control, + (void*)"SaveMinidump")); + // TomY Temporary menu item so we can test this floater menu->append(new LLMenuItemCheckGL("Clothing...", &handle_clothing, @@ -5263,7 +5271,7 @@ class LLShowFloater : public view_listener_t { if (gAgent.getWearablesLoaded()) { - gAgent.changeCameraToCustomizeAvatar(gSavedSettings.getBOOL("AppearanceCameraMovement")); + gAgent.changeCameraToCustomizeAvatar(); } } else if (floater_name == "friends") diff --git a/linden/indra/newview/llviewerobject.cpp b/linden/indra/newview/llviewerobject.cpp index 056475b..9c895cb 100644 --- a/linden/indra/newview/llviewerobject.cpp +++ b/linden/indra/newview/llviewerobject.cpp @@ -3650,7 +3650,12 @@ S32 LLViewerObject::setTETexture(const U8 te, const LLUUID& uuid) } -S32 LLViewerObject::setTEColor(const U8 te, const LLColor4 &color) +S32 LLViewerObject::setTEColor(const U8 te, const LLColor3& color) +{ + return setTEColor(te, LLColor4(color)); +} + +S32 LLViewerObject::setTEColor(const U8 te, const LLColor4& color) { S32 retval = 0; const LLTextureEntry *tep = getTE(te); @@ -4857,7 +4862,7 @@ void LLViewerObject::dirtySpatialGroup() const } } -void LLViewerObject::dirtyMesh() const +void LLViewerObject::dirtyMesh() { if (mDrawable) { diff --git a/linden/indra/newview/llviewerobject.h b/linden/indra/newview/llviewerobject.h index 798edf8..329ef6a 100644 --- a/linden/indra/newview/llviewerobject.h +++ b/linden/indra/newview/llviewerobject.h @@ -280,6 +280,7 @@ public: /*virtual*/ void setTE(const U8 te, const LLTextureEntry &texture_entry); /*virtual*/ S32 setTETexture(const U8 te, const LLUUID &uuid); S32 setTETextureCore(const U8 te, const LLUUID& uuid, LLHost host); + /*virtual*/ S32 setTEColor(const U8 te, const LLColor3 &color); /*virtual*/ S32 setTEColor(const U8 te, const LLColor4 &color); /*virtual*/ S32 setTEScale(const U8 te, const F32 s, const F32 t); /*virtual*/ S32 setTEScaleS(const U8 te, const F32 s); @@ -453,7 +454,7 @@ public: virtual S32 getLOD() const { return 3; } virtual U32 getPartitionType() const; virtual void dirtySpatialGroup() const; - virtual void dirtyMesh() const; + virtual void dirtyMesh(); virtual LLNetworkData* getParameterEntry(U16 param_type) const; virtual bool setParameterEntry(U16 param_type, const LLNetworkData& new_value, bool local_origin); diff --git a/linden/indra/newview/llviewerparcelmedia.cpp b/linden/indra/newview/llviewerparcelmedia.cpp index 2925b8d..9180fb2 100644 --- a/linden/indra/newview/llviewerparcelmedia.cpp +++ b/linden/indra/newview/llviewerparcelmedia.cpp @@ -41,6 +41,7 @@ #include "lluuid.h" #include "message.h" #include "llviewerparcelmediaautoplay.h" +#include "llviewerwindow.h" #include "llfirstuse.h" // Static Variables @@ -48,6 +49,9 @@ S32 LLViewerParcelMedia::sMediaParcelLocalID = 0; LLUUID LLViewerParcelMedia::sMediaRegionID; +// Local functions +void callback_play_media(S32 option, void* data); + // Move this to its own file. // helper class that tries to download a URL from a web site and calls a method // on the Panel Land Media and to discover the MIME type @@ -152,6 +156,14 @@ void LLViewerParcelMedia::update(LLParcel* parcel) LLViewerMedia::setMimeType(parcel->getMediaType()); } + // First use warning + if( gSavedSettings.getWarning("FirstStreamingVideo") ) + { + gViewerWindow->alertXml("ParcelCanPlayMedia", + callback_play_media, (void*)parcel); + + } + } } else @@ -361,3 +373,20 @@ void LLViewerParcelMedia::processParcelMediaUpdate( LLMessageSystem *msg, void * } } } + +void callback_play_media(S32 option, void* data) +{ + LLParcel* parcel = (LLParcel*)data; + if (option == 0) + { + gSavedSettings.setBOOL("AudioStreamingVideo", TRUE); + LLViewerParcelMedia::play(parcel); + } + else + { + gSavedSettings.setBOOL("AudioStreamingVideo", FALSE); + } + gSavedSettings.setWarning("FirstStreamingVideo", FALSE); + +} + diff --git a/linden/indra/newview/llviewerpartsim.cpp b/linden/indra/newview/llviewerpartsim.cpp index 0766a01..267f0c8 100644 --- a/linden/indra/newview/llviewerpartsim.cpp +++ b/linden/indra/newview/llviewerpartsim.cpp @@ -75,7 +75,11 @@ F32 calc_desired_size(LLVector3 pos, LLVector2 scale) return llclamp(desired_size, scale.magVec()*0.5f, PART_SIM_BOX_SIDE*2); } -LLViewerPart::LLViewerPart() +LLViewerPart::LLViewerPart() : + mPartID(0), + mLastUpdateTime(0.f), + mVPCallback(NULL), + mImagep(NULL) { LLMemType mt(LLMemType::MTYPE_PARTICLES); mPartSourcep = NULL; diff --git a/linden/indra/newview/llviewerpartsource.cpp b/linden/indra/newview/llviewerpartsource.cpp index d0ef2aa..0f30edf 100644 --- a/linden/indra/newview/llviewerpartsource.cpp +++ b/linden/indra/newview/llviewerpartsource.cpp @@ -46,7 +46,8 @@ LLViewerPartSource::LLViewerPartSource(const U32 type) : mType(type), - mOwnerUUID(LLUUID::null) + mOwnerUUID(LLUUID::null), + mPartFlags(0) { mLastUpdateTime = 0.f; mLastPartTime = 0.f; diff --git a/linden/indra/newview/llviewerwindow.cpp b/linden/indra/newview/llviewerwindow.cpp index eaaa4d2..0e5218c 100644 --- a/linden/indra/newview/llviewerwindow.cpp +++ b/linden/indra/newview/llviewerwindow.cpp @@ -2415,7 +2415,7 @@ BOOL LLViewerWindow::handleKey(KEY key, MASK mask) // HACK look for UI editing keys if (LLView::sEditingUI) { - if (LLFloaterEditUI::handleKey(key, mask)) + if (LLFloaterEditUI::handleKeyEditUI(key, mask)) { return TRUE; } @@ -3042,8 +3042,8 @@ BOOL LLViewerWindow::handlePerFrameHover() { floater_rect.mBottom = bar_rect.mBottom+1; // Don't bounce the floaters up and down. - gFloaterView->reshape(floater_rect.getWidth(), floater_rect.getHeight(), - TRUE, ADJUST_VERTICAL_NO); + gFloaterView->reshapeFloater(floater_rect.getWidth(), floater_rect.getHeight(), + TRUE, ADJUST_VERTICAL_NO); gFloaterView->setRect(floater_rect); } @@ -4165,7 +4165,7 @@ BOOL LLViewerWindow::saveImageNumbered(LLImageRaw *raw, const LLString& extensio LLPointer formatted_image = LLImageFormatted::createFromExtension(extension); LLImageBase::setSizeOverride(TRUE); - BOOL success = formatted_image->encode(raw); + BOOL success = formatted_image->encode(raw, 0.0f); if( success ) { success = formatted_image->save(filepath); @@ -4323,7 +4323,7 @@ BOOL LLViewerWindow::saveSnapshot( const LLString& filepath, S32 image_width, S3 if (success) { LLPointer bmp_image = new LLImageBMP; - success = bmp_image->encode(raw); + success = bmp_image->encode(raw, 0.0f); if( success ) { success = bmp_image->save(filepath); @@ -4463,6 +4463,10 @@ BOOL LLViewerWindow::rawSnapshot(LLImageRaw *raw, S32 image_width, S32 image_hei image_buffer_y = llfloor(snapshot_height *scale_factor) ; } raw->resize(image_buffer_x, image_buffer_y, type == SNAPSHOT_TYPE_DEPTH ? 4 : 3); + if(!raw->getData()) + { + return FALSE ; + } BOOL high_res = scale_factor > 1.f; if (high_res) diff --git a/linden/indra/newview/llvoavatar.cpp b/linden/indra/newview/llvoavatar.cpp index 5d04009..957ea5c 100644 --- a/linden/indra/newview/llvoavatar.cpp +++ b/linden/indra/newview/llvoavatar.cpp @@ -1930,7 +1930,7 @@ void LLVOAvatar::buildCharacter() { if (gAttachBodyPartPieMenus[i]) { - gAttachPieMenu->appendMenu( gAttachBodyPartPieMenus[i] ); + gAttachPieMenu->appendPieMenu( gAttachBodyPartPieMenus[i] ); } else { @@ -1964,7 +1964,7 @@ void LLVOAvatar::buildCharacter() if (gDetachBodyPartPieMenus[i]) { - gDetachPieMenu->appendMenu( gDetachBodyPartPieMenus[i] ); + gDetachPieMenu->appendPieMenu( gDetachBodyPartPieMenus[i] ); } else { @@ -4143,7 +4143,7 @@ void LLVOAvatar::renderCollisionVolumes() { for (S32 i = 0; i < mNumCollisionVolumes; i++) { - mCollisionVolumes[i].render(); + mCollisionVolumes[i].renderCollision(); } } diff --git a/linden/indra/newview/llvosurfacepatch.cpp b/linden/indra/newview/llvosurfacepatch.cpp index 3665ec7..c0474f2 100644 --- a/linden/indra/newview/llvosurfacepatch.cpp +++ b/linden/indra/newview/llvosurfacepatch.cpp @@ -920,7 +920,7 @@ void LLVOSurfacePatch::updateSpatialExtents(LLVector3& newMin, LLVector3 &newMax { LLVector3 posAgent = getPositionAgent(); LLVector3 scale = getScale(); - newMin = posAgent-scale*0.5f; + newMin = posAgent-scale*0.5f; // Changing to 2.f makes the culling a -little- better, but still wrong newMax = posAgent+scale*0.5f; mDrawable->setPositionGroup((newMin+newMax)*0.5f); } @@ -935,7 +935,7 @@ LLTerrainPartition::LLTerrainPartition() { mOcclusionEnabled = FALSE; mRenderByGroup = FALSE; - mInfiniteFarClip = FALSE; + mInfiniteFarClip = TRUE; mBufferUsage = GL_DYNAMIC_DRAW_ARB; mDrawableType = LLPipeline::RENDER_TYPE_TERRAIN; mPartitionType = LLViewerRegion::PARTITION_TERRAIN; diff --git a/linden/indra/newview/llvotextbubble.cpp b/linden/indra/newview/llvotextbubble.cpp index d4af0da..4f5ca38 100644 --- a/linden/indra/newview/llvotextbubble.cpp +++ b/linden/indra/newview/llvotextbubble.cpp @@ -61,7 +61,7 @@ LLVOTextBubble::LLVOTextBubble(const LLUUID &id, const LLPCode pcode, LLViewerRe volume_params.setBeginAndEndT(0.f, 1.f); volume_params.setRatio(0.25f, 0.25f); volume_params.setShear(0.f, 0.f); - setVolume(volume_params); + setVolume(volume_params, 0); mColor = LLColor4(1.0f, 0.0f, 0.0f, 1.f); S32 i; for (i = 0; i < getNumTEs(); i++) @@ -165,8 +165,8 @@ LLDrawable *LLVOTextBubble::createDrawable(LLPipeline *pipeline) return mDrawable; } - -BOOL LLVOTextBubble::setVolume(const LLVolumeParams &volume_params) +// virtual +BOOL LLVOTextBubble::setVolume(const LLVolumeParams &volume_params, const S32 detail, bool unique_volume) { if (LLPrimitive::setVolume(volume_params, mLOD)) { @@ -194,7 +194,7 @@ BOOL LLVOTextBubble::updateGeometry(LLDrawable *drawable) if (mVolumeChanged) { LLVolumeParams volume_params = getVolume()->getParams(); - setVolume(volume_params); + setVolume(volume_params, 0); LLPipeline::sCompiles++; diff --git a/linden/indra/newview/llvotextbubble.h b/linden/indra/newview/llvotextbubble.h index 5f83f56..cf50cb1 100644 --- a/linden/indra/newview/llvotextbubble.h +++ b/linden/indra/newview/llvotextbubble.h @@ -64,7 +64,7 @@ public: protected: ~LLVOTextBubble(); - BOOL setVolume(const LLVolumeParams &volume_params); + BOOL setVolume(const LLVolumeParams &volume_params, const S32 detail, bool unique_volume = false); LLFrameTimer mUpdateTimer; }; diff --git a/linden/indra/newview/llvovolume.cpp b/linden/indra/newview/llvovolume.cpp index 494e0fa..e4318ff 100644 --- a/linden/indra/newview/llvovolume.cpp +++ b/linden/indra/newview/llvovolume.cpp @@ -1124,30 +1124,36 @@ BOOL LLVOVolume::updateGeometry(LLDrawable *drawable) } else if ((mLODChanged) || (mSculptChanged)) { - LLPointer old_volumep, new_volumep; + LLVolume *old_volumep, *new_volumep; F32 old_lod, new_lod; + S32 old_num_faces, new_num_faces ; old_volumep = getVolume(); old_lod = old_volumep->getDetail(); + old_num_faces = old_volumep->getNumFaces() ; + old_volumep = NULL ; { LLFastTimer ftm(LLFastTimer::FTM_GEN_VOLUME); LLVolumeParams volume_params = getVolume()->getParams(); setVolume(volume_params, 0); } + new_volumep = getVolume(); new_lod = new_volumep->getDetail(); + new_num_faces = new_volumep->getNumFaces() ; + new_volumep = NULL ; if ((new_lod != old_lod) || mSculptChanged) { compiled = TRUE; - sNumLODChanges += getVolume()->getNumFaces(); + sNumLODChanges += new_num_faces ; drawable->setState(LLDrawable::REBUILD_VOLUME); // for face->genVolumeTriangles() { LLFastTimer t(LLFastTimer::FTM_GEN_TRIANGLES); - if (new_volumep->getNumFaces() != old_volumep->getNumFaces()) + if (new_num_faces != old_num_faces) { regenFaces(); } @@ -1225,7 +1231,12 @@ S32 LLVOVolume::setTETexture(const U8 te, const LLUUID &uuid) return res; } -S32 LLVOVolume::setTEColor(const U8 te, const LLColor4 &color) +S32 LLVOVolume::setTEColor(const U8 te, const LLColor3& color) +{ + return setTEColor(te, LLColor4(color)); +} + +S32 LLVOVolume::setTEColor(const U8 te, const LLColor4& color) { S32 res = LLViewerObject::setTEColor(te, color); if (res) @@ -2458,6 +2469,7 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group) if (facep->mGeomCount + index_offset > 65535) { //cut off alpha nodes at 64k vertices facep->mVertexBuffer = NULL ; + facep->mLastVertexBuffer = NULL ; continue ; } diff --git a/linden/indra/newview/llvovolume.h b/linden/indra/newview/llvovolume.h index c3b25bf..6177340 100644 --- a/linden/indra/newview/llvovolume.h +++ b/linden/indra/newview/llvovolume.h @@ -141,6 +141,7 @@ public: /*virtual*/ void setTEImage(const U8 te, LLViewerImage *imagep); /*virtual*/ S32 setTETexture(const U8 te, const LLUUID &uuid); + /*virtual*/ S32 setTEColor(const U8 te, const LLColor3 &color); /*virtual*/ S32 setTEColor(const U8 te, const LLColor4 &color); /*virtual*/ S32 setTEBumpmap(const U8 te, const U8 bump); /*virtual*/ S32 setTEShiny(const U8 te, const U8 shiny); diff --git a/linden/indra/newview/llwebbrowserctrl.cpp b/linden/indra/newview/llwebbrowserctrl.cpp index 763f73d..79f5a21 100644 --- a/linden/indra/newview/llwebbrowserctrl.cpp +++ b/linden/indra/newview/llwebbrowserctrl.cpp @@ -88,17 +88,20 @@ LLWebBrowserCtrl::LLWebBrowserCtrl( const std::string& name, const LLRect& rect if ( !mMediaSource ) { llwarns << "media source create failed " << llendl; - return; + // return; } + else + { - // mMediaSource->init(); - mMediaSource->addCommand( LLMediaBase::COMMAND_START ); + // mMediaSource->init(); + mMediaSource->addCommand( LLMediaBase::COMMAND_START ); - // observe the browser so we can trap HREF events) - mMediaSource->addObserver(this); + // observe the browser so we can trap HREF events) + mMediaSource->addObserver(this); - // create a new texture (based on LLDynamic texture) that will be used to display the output - mWebBrowserImage = new LLWebBrowserTexture( screen_width, screen_height, this, mMediaSource ); + // create a new texture (based on LLDynamic texture) that will be used to display the output + mWebBrowserImage = new LLWebBrowserTexture( screen_width, screen_height, this, mMediaSource ); + } LLRect border_rect( 0, getRect().getHeight() + 2, getRect().getWidth() + 2, 0 ); mBorder = new LLViewBorder( "web control border", border_rect, LLViewBorder::BEVEL_IN ); @@ -409,14 +412,20 @@ bool LLWebBrowserCtrl::canNavigateForward() bool LLWebBrowserCtrl::set404RedirectUrl( std::string redirect_url ) { - return mMediaSource->set404RedirectUrl( redirect_url ); + if(mMediaSource) + return mMediaSource->set404RedirectUrl( redirect_url ); + else + return false; } //////////////////////////////////////////////////////////////////////////////// // bool LLWebBrowserCtrl::clr404RedirectUrl() { - return mMediaSource->clr404RedirectUrl(); + if(mMediaSource) + return mMediaSource->clr404RedirectUrl(); + else + return false; } //////////////////////////////////////////////////////////////////////////////// diff --git a/linden/indra/newview/llwebbrowserctrl.h b/linden/indra/newview/llwebbrowserctrl.h index 251d453..abfb18b 100644 --- a/linden/indra/newview/llwebbrowserctrl.h +++ b/linden/indra/newview/llwebbrowserctrl.h @@ -228,7 +228,7 @@ class LLWebBrowserCtrl : // over-rides virtual BOOL handleKey( KEY key, MASK mask, BOOL called_from_parent ); virtual BOOL handleUnicodeChar(llwchar uni_char, BOOL called_from_parent); - virtual void reshape( S32 width, S32 height, BOOL called_from_parent ); + virtual void reshape( S32 width, S32 height, BOOL called_from_parent = TRUE); virtual void draw(); virtual void onVisibilityChange ( BOOL curVisibilityIn ); diff --git a/linden/indra/newview/llwindebug.cpp b/linden/indra/newview/llwindebug.cpp index e6c11d8..1b52a14 100644 --- a/linden/indra/newview/llwindebug.cpp +++ b/linden/indra/newview/llwindebug.cpp @@ -633,6 +633,44 @@ BOOL LLWinDebug::setupExceptionHandler() // Internal builds don't mess with exception handling. //return TRUE; } + +void LLWinDebug::writeDumpToFile(MINIDUMP_TYPE type, MINIDUMP_EXCEPTION_INFORMATION *ExInfop, const char *filename) +{ + if(f_mdwp == NULL || gDirUtilp == NULL) + { + return; + //write_debug("No way to generate a minidump, no MiniDumpWriteDump function!\n"); + } + else + { + std::string dump_path = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, + filename); + + HANDLE hFile = CreateFileA(dump_path.c_str(), + GENERIC_WRITE, + FILE_SHARE_WRITE, + NULL, + CREATE_ALWAYS, + FILE_ATTRIBUTE_NORMAL, + NULL); + + if (hFile != INVALID_HANDLE_VALUE) + { + // Write the dump, ignoring the return value + f_mdwp(GetCurrentProcess(), + GetCurrentProcessId(), + hFile, + type, + ExInfop, + NULL, + NULL); + + CloseHandle(hFile); + } + + } +} + // static LONG LLWinDebug::handleException(struct _EXCEPTION_POINTERS *exception_infop) { @@ -648,6 +686,18 @@ LONG LLWinDebug::handleException(struct _EXCEPTION_POINTERS *exception_infop) if (exception_infop) { + if(gSavedSettings.getControl("SaveMinidump") != NULL && gSavedSettings.getBOOL("SaveMinidump")) + { + _MINIDUMP_EXCEPTION_INFORMATION ExInfo; + + ExInfo.ThreadId = ::GetCurrentThreadId(); + ExInfo.ExceptionPointers = exception_infop; + ExInfo.ClientPointers = NULL; + + writeDumpToFile(MiniDumpNormal, &ExInfo, "SecondLife.dmp"); + writeDumpToFile((MINIDUMP_TYPE)(MiniDumpWithDataSegs | MiniDumpWithIndirectlyReferencedMemory), &ExInfo, "SecondLifePlus.dmp"); + } + std::string dump_path = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, "SecondLifeException"); diff --git a/linden/indra/newview/llwindebug.h b/linden/indra/newview/llwindebug.h index fdc9a52..b11cdf6 100644 --- a/linden/indra/newview/llwindebug.h +++ b/linden/indra/newview/llwindebug.h @@ -41,7 +41,7 @@ public: static BOOL setupExceptionHandler(); static LONG WINAPI handleException(struct _EXCEPTION_POINTERS *pExceptionInfo); - //static void writeDumpToFile(MINIDUMP_TYPE type, MINIDUMP_EXCEPTION_INFORMATION *ExInfop, const char *filename); + static void writeDumpToFile(MINIDUMP_TYPE type, MINIDUMP_EXCEPTION_INFORMATION *ExInfop, const char *filename); }; #endif // LL_LLWINDEBUG_H diff --git a/linden/indra/newview/lsl_guide.html b/linden/indra/newview/lsl_guide.html index 03a0a58..9f8c673 100644 --- a/linden/indra/newview/lsl_guide.html +++ b/linden/indra/newview/lsl_guide.html @@ -10631,7 +10631,8 @@ CLASS="FUNCDEF" CLASS="parameter" >category in the - recipients inventory. If the recipient is an object, the same + recipients inventory. The avatar must be, or have recently been, within the same + Region as the sending object. If the recipient is an object, the same permissions apply as if you were dragging inventory onto the object by hand, ie if \ No newline at end of file +> diff --git a/linden/indra/newview/releasenotes.txt b/linden/indra/newview/releasenotes.txt index 5c9dc87..8e96127 100644 --- a/linden/indra/newview/releasenotes.txt +++ b/linden/indra/newview/releasenotes.txt @@ -1,8 +1,67 @@ -Release Notes for Second Life 1.19.1(0) March 5th, 2008 +Release Notes for Second Life 1.19.1(2) March 19th, 2008 +===================================== +Chnages and fixes: +* Fix for crash in LLViewerPartGroup::updateParticles +* VWR-5372 Specific Search (People, Places, etc) queries are modified and words less then 3 characters are removed. Now allow searches for resident names of 2 characters, and place/group names containing 1 char words. +* VWR-5517: Search failure dialog doesn't fill in [FINAL SEARCH]. +* Updated help text for llGiveInventoryList. +* Notecards crash users when passed from person to person +* Add "getting data" progress display to buy currency dialog. +* Raw SVG doesn't render correctly on a parcel media prim +* First use media present enabling dialog doesnt show +* Feature table and gpu table changes to help with lenovo. +* Open in My Web Browser" doesn't work if the page failed to load +* VWR-2628: Fix for crash in operator*(LLVector3 const&, LLQuaternion const&) / LL ... +* VWR-2682: Possible crash fix when accessing dead cubemap +* About land > Access doesnt look correct at the minimum window size +* Crash: linux regression - 'Error parsing skeleton XML file' +* VWR-1852: Edit Manipulators have Wrong Orientation with Local Ruler Mode on Linked Objects +* Notecards/Texture windows don't open completely when opened from inventory +* VWR-4963: Group archive freezes viewer +* SL Viewer's Client Memory Tool is missing +* Fix for terrain culling to patch 1.19.0 +* VWR-5499: Fix for Crash on Mac when looking with option-E +* Fix for Crash in VLLVolume::unref +* Fix for Crash in LLVertexBuffer::destroyGLBuffer +* Fix for white areas on lenovo with ATI FireGL 5200 + +Installer fixes: +* Unauthorised users could gain access to an SL account after a real user had uninstalled. +* Mac autoupdater was failing. Now uses /tmp instead of asking the OS for what tmpdir to use. + +Loclization fixes: +* DEV-12125 floater_media_browser.xml was not getting localized +* Out of date Portuguese localization files wound cause a crash; removed. + + +Open Source fixes: +* VWR-5519 - Errors in lltimer.h while compiling llmediaimplquicktime +* VWR-5323 - Probable fixes for gcc-4.1 problems. +* VWR-5515 - OpenSSL required on MS Windows now +* VWR-5519 - Errors in lltimer.h while compiling llmediaimplquicktime +* VWR-5460: llmozlib2 is missing from 1.19.1.0 source distribution (Macintosh library bundle) + +Release Notes for Second Life 1.19.1(1) March 12th, 2008 +===================================== +Changes and fixes: +* VWR-5479: The option "Save Texture As" from File menu is not active in 1.19.1 (0) (Second Life Release Candidate) +* VWR-5087: Attach To... from inventory ignores selected postion and attaches to stored location. +* VWR-4899: Windlight Particle System - burst severely weakened +* crash when quitting from login screen +* SVC-1764: Setting parcel media for a single agent is broken with new media functionality ( PARCEL_MEDIA_COMMAND_AGENT broken) +* Scripted object for playing movies no longer functions under 1-19-1 +* FireGL and Quadros no longer show 'unsupported' dialog +* Crash: 'Error parsing skeleton XML file' +* Crash when opening the expanded media control +* VWR-4959: WindLight: "Sculpted Prim" preview makes a huge distorted mess of polygons +* Propagate client language setting into search URL + + +Release Notes for Second Life 1.19.1(0) March 6th, 2008 ===================================== New features and changes: -* WindLight - Physically accurate atmospheric rendering and lighting +* Physically accurate atmospheric rendering and lighting (previously code named WindLight) ** Animateable day cycles ** Vastly improved realistic water with reflections and glimmer ** "Glow" as new object attribute diff --git a/linden/indra/newview/res/newViewRes.rc b/linden/indra/newview/res/newViewRes.rc index ed4539f..3f2f76e 100644 --- a/linden/indra/newview/res/newViewRes.rc +++ b/linden/indra/newview/res/newViewRes.rc @@ -231,8 +231,8 @@ TOOLMEDIAOPEN CURSOR "toolmediaopen.cur" // VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,19,1,1 - PRODUCTVERSION 1,19,1,1 + FILEVERSION 1,19,1,2 + PRODUCTVERSION 1,19,1,2 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -249,12 +249,12 @@ BEGIN BEGIN VALUE "CompanyName", "Linden Lab" VALUE "FileDescription", "Second Life" - VALUE "FileVersion", "1.19.1.1" + VALUE "FileVersion", "1.19.1.2" VALUE "InternalName", "Second Life" VALUE "LegalCopyright", "Copyright © 2001-2008, Linden Research, Inc." VALUE "OriginalFilename", "SecondLife.exe" VALUE "ProductName", "Second Life" - VALUE "ProductVersion", "1.19.1.1" + VALUE "ProductVersion", "1.19.1.2" END END BLOCK "VarFileInfo" diff --git a/linden/indra/newview/secondlife setup build A08T01.bat b/linden/indra/newview/secondlife setup build A08T01.bat new file mode 100644 index 0000000..230319c --- /dev/null +++ b/linden/indra/newview/secondlife setup build A08T01.bat @@ -0,0 +1,4 @@ +@rem Invoke the script which preps then runs the installer. +@rem This batch file is customized per grid. + +@"secondlife setup build.bat" --login_channel="Second Life Release A08T01" diff --git a/linden/indra/newview/secondlife setup build B08T01.bat b/linden/indra/newview/secondlife setup build B08T01.bat new file mode 100644 index 0000000..19ea7d0 --- /dev/null +++ b/linden/indra/newview/secondlife setup build B08T01.bat @@ -0,0 +1,4 @@ +@rem Invoke the script which preps then runs the installer. +@rem This batch file is customized per grid. + +@"secondlife setup build.bat" --login_channel="Second Life Release B08T01" diff --git a/linden/indra/newview/skins/xui/de/alerts.xml b/linden/indra/newview/skins/xui/de/alerts.xml index a534508..d3fd64f 100644 --- a/linden/indra/newview/skins/xui/de/alerts.xml +++ b/linden/indra/newview/skins/xui/de/alerts.xml @@ -727,6 +727,52 @@ Möchten Sie auf www.secondlife.com ein Konto anlegen? Abbrechen + + + Ihr Computer entspricht nicht den Hardwareanforderungen von Second Life. Second Life setzt eine OpenGL-Grafikkarte mit Multitextur-Unterstützung voraus. Falls Ihre Grafikkarte diese Funktion unterstützt, installieren Sie die neuesten Treiber sowie die aktuellen Service Packs und Patches für Ihr Betriebssystem. + +Sollte das Problem fortbestehen, finden Sie weitere Hilfestellung unter: http://www.secondlife.com/support + + + + + Achtung: Ihr System erfüllt nicht die Mindestanforderungen von Second Life. Dies kann eine schlechte Darstellungsleistung in Second Life zur Folge haben. Für nicht unterstützte Systemkonfigurationen bieten wir keinen technischen Support. + +MINDESTANF. +Die Seite [_URL] für weitere Informationen öffnen? + + + + + + + - Ihre Grafikkarte entspricht nicht den Mindestanforderungen. + + + + + - Ihre CPU-Geschwindigkeit entspricht nicht den Mindestanforderungen. + + + + + 796 + + + + + - Ihr Arbeitsspeicher entspricht nicht den Mindestanforderungen. + + + + + 510 + + QuickTime wurde deaktiviert, weil Sie eine alte Version verwenden @@ -1024,10 +1070,10 @@ Anzeige-Einstellungen gewählt. [SECOND_LIFE] ist bei der Initialisierung der Grafiktreiber abgestürzt. -Um allgemeine Treiberprobleme zu umgehen, werden Shader deaktiviert. +Die Grafikqualität wird auf eine niedrige Stufe zurückgesetzt, um einige typische Treiberfehler zu vermeiden. Einige Grafikfunktionen werden ausgeschaltet. Wir empfehlen die Aktualisierung Ihrer Grafikkartentreiber. -Die Shader können unter 'Einstellungen' > 'Grafikdetails' wieder aktiviert werden. +Sie können die Grafikqualität unter 'Einstellungen' > 'Grafik' wieder erhöhen. @@ -1272,6 +1318,15 @@ Standard: aus - die öffentlichen Objekte dieser Parzelle + + + Geben Sie hier eine E-Mail-Adresse ein, an die +Missbrauchsmeldungen von diesem Grundstück gesendet werden. +Wenn dieses Feld leer ist, werden Missbrauchsmeldungen +nur an Linden Lab gesendet. + + Die Parzellen auf diesem Grundstück können über eigene Voice- @@ -1286,6 +1341,20 @@ Standard: aus Diese Version von Second ist mit dem Voice-Chat-Feature in dieser Region nicht kompatibel. Damit Voice-Chat funktioniert, müssen Sie Second Life aktualisieren. + + + Zeitüberschreitung bei Inventarabfrage vom Server. Wiederholen? + + + Inventarobjekt-Abfrage wiederholen + + + + Wirklich beenden? @@ -3902,7 +3971,7 @@ Standard: aus Der Zugang zu diesem Grundstück wird auf die hier aufgeführten Einwohner und Gruppen beschränkt. Diese Einstellung ist -nur verfügbar, wenn 'Vom Festland aus sichtbar' +nur verfügbar, wenn 'Öffentlich' deaktiviert ist. @@ -3910,7 +3979,7 @@ deaktiviert ist. Der Zugang zu diesem Grundstück wird auf die hier aufgeführten Einwohner und Gruppen beschränkt. Diese Einstellung ist -nur verfügbar, wenn 'Vom Festland aus sichtbar' +nur verfügbar, wenn 'Öffentlich' deaktiviert ist. @@ -4351,6 +4420,17 @@ wirklich löschen? Abbrechen + + + Die Liste mit gespeicherten URLs wirklich löschen? + + + + Möchten Sie den Inhalt Ihres Fundstücke-Ordners @@ -4414,6 +4494,360 @@ zu erleichtern, oder testen Sie sie, indem Sie sie in die Adressleiste Ihres Bro OK + + + Die Optionen in diesem Dialog steuern Fenstergröße und Auflösung sowie die Qualität der Grafikdarstellung auf dem Client. Vier grundlegende Grafikeinstellungen stehen zur Wahl: Niedrig, Mittel, Hoch und Ultra. Wenn Sie das Kontrollkästchen "Benutzerdefiniert" anklicken, können Sie folgende Grafikeinstellungen selbst vornehmen: + +Shader: Aktivieren oder deaktivieren Sie die verschiedenen Pixel-Shader. + +Spiegelung: Legen Sie hier fest, welche Objekte sich in Wasser spiegeln. + +Avatar-Darstellung: Einige Optionen, die über die Darstellung Ihres Avatars bestimmen. + +Sichtweite: Legt fest, bis zu welcher Entfernung von Ihrem Avatar die Objekte in der Szene berechnet und dargestellt werden. + +Max. Partikelzahl: Legt fest, wie viele Partikel gleichzeitig berechnet und angezeigt werden. + +Post-Processing-Qualität: Legt fest, mit welcher Auflösung der Glüheffekt berechnet wird. + +Gitterdetails: Legt den Detailgrad bei der Berechnung bestimmter Objekte fest. + +Beleuchtungsdetails: Legt fest, welche Lichtquellen berechnet werden. + +Terraindetails: Legt den Detailgrad bei der Berechnung des Terrains fest. + +Himmeldetails: Steuert die Gitterauflösung der Himmelskuppel. Höhere Werte führen zu einer runderen Sonnendarstellung, dauern aber länger in der Berechnung. + + + + + Die gespeicherte Voreinstellung überschreiben? + + + + + + + [SKY] löschen? + + + + + + + Standardvoreinstellungen können nicht bearbeitet oder gelöscht werden. + + + + + Diese Tageszyklusdatei verweist auf eine fehlende Himmel-Datei: [SKY]. + + + + + Post-Processing-Effekt bereits vorhanden. Möchten Sie ihn überschreiben? + + + + + + + Verschieben Sie die WindLight-Regler, um verschiedene Himmelsansichten zu erstellen und zu speichern. + + + + + Wählen Sie für jede Tageszeit eine Himmelsansicht aus. + + + + + Diese Einstellungen haben Auswirkung auf die lokale Darstellung der Umwelt auf Ihrem Computer. Zugriff auf alle Einstellungen haben Sie nur, wenn Ihre Grafikkarte Atmosphären-Shader unterstützt. + +Mit dem Regler "Tageszeit" stellen Sie die lokal in Ihrem Viewer dargestellte Tageszeit ein. + +Mit dem Regler "Wolkendecke" steuern Sie die Wolkendichte am Himmel. + +Unter "Wasserfarbe" können Sie eine Farbe für die Wasserdarstellung auswählen. + +Mit dem Regler "Wassertrübung" steuern Sie die Sichtweite unter Wasser. + +Klicken Sie auf "Grundstückszeit verw.", um die aktuelle Zeit in der Region fest als Tageszeit einzustellen. + +Klicken Sie auf "Himmel (erweitert)", um einen Editor mit erweiterten Einstellungen für die Himmeldarstellung anzuzeigen. + +Klicken Sie auf "Wasser (erweitert)", um einen Editor mit erweiterten Einstellungen für die Wasserdarstellung anzuzeigen. + + + + + Im Tageszyklus-Editor steuern Sie den Tag-/Nachtzyklus am Second Life Himmel. Dabei handelt es sich um den Zyklus, der mit dem Tageszeit-Regler im Umwelt-Basiseditor gesteuert wird. + +Der Tageszyklus-Editor verwendet sogenannte Keyframes zur Steuerung des Tag-/Nachtablaufs. Dabei handelt es sich um "Schlüsselbilder" (die grauen Kreise auf der Zeitskala), für die bestimmte Himmelseinstellungen definiert wurden. Bei voranschreitender Tageszeit interpoliert WindLight den Ãœbergang zwischen diesen Keyframes und erzeugt eine entsprechende Himmelsanimation. + +Der gelbe Pfeil über der Zeitskala repräsentiert die aktuelle Tageszeit-Darstellung. Ziehen Sie den Pfeil, um die Tagesanimation anzuzeigen. Mit "Key hinzu" und "Key löschen" rechts neben der Zeitskala können Sie neue Keys einfügen und vorhandene löschen. + +Keyframes lassen sich einfach entlang der Zeitskala verschieben, oder Sie geben die Werte manuell unter "Keyframe-Einstellungen" ein. Hier wählen Sie auch eine WindLight-Voreinstellung für den Keyframe aus. + +"Zykluslänge" bestimmt die Gesamtlänge eines "Tages". Ein niedriger Wert (z.B. 2 Minuten) führt dazu, dass ein ganzer 24-Stunden-Tag innerhalb von zwei Minuten Echtzeit abgespult wird! Wenn Sie alle Einstellungen auf der Zeitskala und für die einzelnen Keyframes vorgenommen haben, können Sie mit "Start" und "Stopp" die Animation anzeigen. Das funktioniert natürlich genauso interaktiv, indem Sie den gelben Pfeil über der Zeitskala verschieben. Mit der Schaltfläche "Grundstückszeit verw." synchronisieren Sie die Tageszeit und -länge mit den auf dem Grundstück geltenden Einstellungen. + +Ihre Tageszyklus-Einstellungen lassen sich mit den Schaltflächen "Testtag speichern" und "Testtag laden" speichern bzw. laden. Bis dato kann nur ein Tageszyklus gleichzeitig in Verwendung sein. + + + + + Mit den Reglern für Rot/Grün/Blau (RGB) steuern Sie die Farbe des Himmels. Verwenden Sie den Intensitätsregler (I), um alle drei RGB-Regler gleichzeitig zu verschieben. + + + + + Horizonttrübung ist einer der wichtigsten Parameter, um +die Gesamtlichtsituation in der Szene zu steuern. Damit +lassen sich viele Belichtungseinstellungen simulieren, +z.B. ein Ãœberstrahlen durch die Sonne oder +starker Dunst. + + + + + Farbintensität steuert die Gesamtfarbsättigung von Himmel und Nebel. Je weiter Sie den Intensitätsregler (I) nach rechts verschieben, desto heller und lebendiger werden die Farben. Wenn Sie ihn ganz nach links verschieben, verlieren die Farben an Intensität und gehen in Schwarz oder Weiß über. Volle Kontrolle über die Farbsättigung des Himmels bieten ihnen die Regler für Rot/Grün/Blau (RGB). + + + + + Trübungsintensität steuert die Stärke des grauen +Dunsts in der Atmosphäre. Damit lassen sich +zum Beispiel starker Rauch oder Luftverschmutzung +simulieren. Auch für Nebel und +Sprühregen geeignet. + + + + + Der Dichtemultiplikator beeinflusst die Gesamtdichte der Atmosphäre. Niedrige Einstellungen erzeugen die Anmutung "dünner, sauberer Luft", hohe Einstellungen erzeugen den Eindruck schweren Smogs. + + + + + Steuert die Entfernungswirkung von WindLight. Ein Wert von +Null schaltet den Einfluss von WindLight auf Terrain und +Objekte praktisch aus. Werte über 1 simulieren +größere Entfernungen und verstärken den Atmosphäreneffekt. + + + + + Max. Höhe steuert die Höhenberechnungen von WindLight +bei der Berechnung der atmosphärischen Beleuchtung. Zu +späteren Tageszeiten lässt sich damit zum Beispiel +die "Intensität" des Sonnenuntergangs beeinflussen. + + + + + Steuert Farbe und Intensität von direktem Licht in der Szene. + + + + + Steuert Farbe und Intensität von atmosphärischem Umgebungslicht in der Szene. + + + + + Der Regler "Größe" steuert die Größe der Sonne. +Der Regler "Fokus" steuert, wie unscharf die Sonne +am Himmel erscheint. + + + + + Regelt den Hell/Dunkel-Wert des Bildschirms. + + + + + Regelt die Helligkeit der Sterne am Himmel. + + + + + Steuert die Sonnenstellung am Himmel. +Entspricht der Elevation. + + + + + Steuert die Sonnenstellung am Himmel. +Entspricht dem Azimut. + + + + + Steuert die Wolkenfarbe. Generell empfiehlt +sich hier ein Weißton, aber hey, +warum nicht ein bisschen Spaß haben? + + + + + Steuert das Detailbild, welches über das Wolken- +Hauptbild gelegt wird. X und Y bestimmen +seine Position. D (Dichte) regelt, wie ausgebeult oder +zerrissen die Wolken wirken. + + + + + Mit den X- und Y-Reglern steuern Sie die +Position der Wolken, mit dem Regler D die +Wolkendichte. + + + + + Steuert, wie stark die Wolken den Himmel bedecken. + + + + + Steuert die Skalierung des Wolkenbilds auf der Himmelskuppel. + + + + + Steuert die Bewegungsgeschwindigkeit der Wolken in X-Richtung. + + + + + Steuert die Bewegungsgeschwindigkeit der Wolken in Y-Richtung. + + + + + Aktivieren Sie dieses Kontrollkästchen, um die Darstellung der klassischen Second Life Wolken zusätzlich zu den WindLight-Wolken zu erzwingen. + + + + + Steuert die Farbe der Wassertrübung + + + + + Steuert die Dichte der Wassertrübung und wie weit Sie unter Wasser sehen können. + + + + + Beeinflusst die Auswirkung des Wassertrübungs-Exponenten und regelt die Sichtweite Ihres Avatars unter Wasser. + + + + + Steuert, wie groß der Anteil der leuchtenden Wasseroberfläche ist. + + + + + Steuert die Skalierung der drei Elementarwellen, die das Wasser ausmachen. + + + + + Steuert die winkelabhängige Lichtreflexion. + + + + + Steuert die Intensität des reflektierten Lichts. + + + + + Steuert die Stärke der Lichtbrechung von oberhalb der Wasseroberfläche aus gesehen. + + + + + Steuert die Stärke der Lichtbrechung von unterhalb der Wasseroberfläche aus gesehen. + + + + + Steuert die Mischung von Wellen und Reflexionen. + + + + + Ermöglicht die Auswahl einer Normal-Map zur +Berechnung von Reflexionen/Brechungen auf dem Wasser. + + + + + Steuert die Bewegungsgeschwindigkeit und -richtung der großen +Normal-Map-Version in X- und Y-Richtung. + + + + + Steuert die Bewegungsgeschwindigkeit und -richtung der kleinen +Normal-Map-Version in X- und Y-Richtung. + + + + + Wählen Sie einen Namen für den neuen Himmel. + + + + Neue Voreinstellung + + + + Voreinstellung bereits vorhanden! + + + + + Wählen Sie einen Namen für die neue Wasservoreinstellung. + + + + Neue Voreinstellung + + + + Voreinstellung bereits vorhanden! + + + + + Standardvoreinstellungen können nicht bearbeitet oder gelöscht werden. + + Fehler beim Starten einer neuen Chat-Sitzung mit [RECIPIENT]. diff --git a/linden/indra/newview/skins/xui/de/floater_about.xml b/linden/indra/newview/skins/xui/de/floater_about.xml index f05a7d5..17bed86 100644 --- a/linden/indra/newview/skins/xui/de/floater_about.xml +++ b/linden/indra/newview/skins/xui/de/floater_about.xml @@ -1,11 +1,9 @@ - Second Life wird Ihnen präsentiert von Philip, Andrew, Tessa, Cory, Frank, James, Doug, Hunter, Richard, John, Eric, Avi, AaronB, AaronY, Ian, Peter, Mark, Robin, Stephen, Tracy, Ryan, Alberto, Haney, Tanya, JimJ, Dan, Ben, Stephanie, Tim, Evan, Catherine, Colin, Chris, Reuben, Charity, Jeska, James, JonHenry, Kelly, Callum, Char, Daniel, DavidF, Don, Jeff, Lauren, Lee, Michael, Ramzi, Vektor, Steve, TomY, Tess, Kona, Brent, Clarissa, PeterP, Jesse, Annette, Cyn, Blue, Ginsu, Jonathan, Karen, Adam, Nova, Deana, Lizzie, Patsy, DavidK, Isaac, Pathfinder, Monroe, Jill, Benny, Altruima, Rheya, Jennifer, Jack, DaveP, Brad, Mick, Babbage, Elisabeth, Brian, Beth, Data, Ethan, Wendy, Nicole, Sky, Jeffrey, Zero, Coffee, Tesla, Kenny, Makiko, Nigel, Teeple, Lucy, Mia, Dee, Guy, Harry, Liana, Branka, Jimbo, Aura, Vasuda, SarahD, bethanye, Torley, Runitai, MikeS, PaulM, Milo, Hermia, JoeM, Melanie, Rejean, DSmith, SMiller, Susan, Jose, DongYun, Justin, Andrey, Syrah, Donovan, Henrik, Nora, Lexie, AC, Donna, ChrisC, Alex, Leyla, Kyle, Mathew, Devin, Joshua, DanC, Jessica, Harmony, Claudia, Tramel, Glenn, Betsy, Fritz, Jun, Adam, Cassandra, Ken, RyanW, Spike, Tofu, Varas, Andy, Luke, RobLa, Chiyo, JohnZ, Dustin, George, Del, PeterP, Migyeong, Matthew, RMullane, CChampion, JTurbin, JamesC, Viola, Lightfoot, Jacqui, Sturm, Adrian, Buttercup, Alfred, Sunil, Alfred, Noel, Irfan, Jill, Yool, Jane, Yuki, Yoz, Matthew, Arthur, Jennifer, Karl, Brian, Ben, Janine, Christopher, Madhavi, Everett, Anthony, Joon, Jake, sean, Adreanne, Stephany, KellyJo, Jeremy, Pramod, Joshua, Sean, Christopher, Amy, Ceren, Katherine, jon, Sudheendra, James, Stephan, Kari, Kartic, Todd, Thomas, Joki, Rebecca, Belinda, Bert, Roger, Bridie, Kristi, Brian, Maria, John, Aric, Nathanel, Melinda, Darrell, Jennifer, Sandy, Greg, Rob, Brad, Chris, Eric, Palmer, Asi, Katja, Lisa, Minda, Jen, Aaron, Bryan, Mark, Jonathan, Jamie, Laurel, William, Matthew, Steve, David, Remy, James, Tim, Lee, Brian, Ashlei, Sam, Mike, Ethan, Austin, Wanda, Paul, Brian, Rachel, Valentyn, Emma Williams, Autum, Steven, Laley, Charles, Jessica, Sue, Gillian, CG, Kip, Kristen, Shamiran, Blake, Brett, Erica, Kent, Joel, Plexus, Twilight, Joppa und vielen anderen. + Second Life wird Ihnen präsentiert von Philip, Andrew, Tessa, Cory, Frank, James, Doug, Hunter, Richard, John, Eric, Avi, AaronB, AaronY, Ian, Peter, Mark, Robin, Stephen, Tracy, Ryan, Alberto, Haney, Tanya, JimJ, Dan, Ben, Stephanie, Tim, Evan, Catherine, Colin, Chris, Reuben, Charity, Jeska, James, JonHenry, Kelly, Callum, Char, Daniel, DavidF, Don, Jeff, Lauren, Lee, Michael, Ramzi, Vektor, Steve, TomY, Tess, Kona, Brent, Clarissa, PeterP, Jesse, Annette, Cyn, Blue, Ginsu, Jonathan, Karen, Adam, Nova, Deana, Lizzie, Patsy, DavidK, Isaac, Pathfinder, Monroe, Jill, Benny, Altruima, Rheya, Jennifer, Jack, DaveP, Brad, Mick, Babbage, Elisabeth, Brian, Beth, Data, Ethan, Wendy, Nicole, Sky, Jeffrey, Zero, Coffee, Tesla, Kenny, Makiko, Nigel, Teeple, Lucy, Mia, Dee, Guy, Harry, Liana, Branka, Jimbo, Aura, Vasuda, SarahD, bethanye, Torley, Runitai, MikeS, PaulM, Milo, Hermia, JoeM, Melanie, Rejean, DSmith, SMiller, Susan, Jose, DongYun, Justin, Andrey, Syrah, Donovan, Henrik, Nora, Lexie, AC, Donna, ChrisC, Alex, Leyla, Kyle, Mathew, Devin, Joshua, DanC, Jessica, Harmony, Claudia, Tramel, Glenn, Betsy, Fritz, Jun, Adam, Cassandra, Ken, RyanW, Spike, Tofu, Varas, Andy, Luke, RobLa, Chiyo, JohnZ, Dustin, George, Del, PeterP, Migyeong, Matthew, RMullane, CChampion, JTurbin, JamesC, Viola, Lightfoot, Jacqui, Sturm, Adrian, Buttercup, Alfred, Sunil, Alfred, Noel, Irfan, Jill, Yool, Jane, Yuki, Yoz, Matthew, Arthur, Jennifer, Karl, Brian, Ben, Janine, Christopher, Madhavi, Everett, Anthony, Joon, Jake, sean, Adreanne, Stephany, KellyJo, Jeremy, Pramod, Joshua, Sean, Christopher, Amy, Ceren, Katherine, jon, Sudheendra, James, Stephan, Kari, Kartic, Todd, Thomas, Joki, Rebecca, Belinda, Bert, Roger, Bridie, Kristi, Brian, Maria, John, Aric, Nathanel, Melinda, Darrell, Jennifer, Sandy, Greg, Rob, Brad, Chris, Eric, Palmer, Asi, Katja, Lisa, Minda, Jen, Aaron, Bryan, Mark, Jonathan, Jamie, Laurel, William, Matthew, Steve, David, Remy, James, Tim, Lee, Brian, Ashlei, Sam, Mike, Ethan, Austin, Wanda, Paul, Brian, Rachel, Valentyn, Emma Williams, Autum, Steven, Laley, Charles, Jessica, Sue, Gillian, CG, Kip, Kristen, Shamiran, Blake, Brett, Erica, Kent, Joel, Plexus, Twilight, Joppa, Enus, Kraft, Naveen, Simon, Q, Ronp, Laurap, Ram, KyleJM, Marty, Kend, Daveh, Prospero, Melissa, Nat, Hamilton, Green, Seraph, Ekim, Miz, Jimmy, Kosmo, Rome, Doris, JT, Benoc, Whump, Mango, Trinity, Patch, TJ, Christy, Bao, Joohwan, Kate, Oreh, Angela, Johan, Cheah, Lan, Matias, Brandy, Cogsworth, Aleks, Mitchell, Space, Einstein, Bambers, Colton, Malbers, Maggie, Umesh, Santosh, Rose, Stash, Rothman, Winnie, Stella, Niall und vielen anderen. -Im Gedenken an Jesse Malthus. Du wirst allen in Erinnerung bleiben, die deine Stimme hören durften. - -Vielen Dank den folgenden Einwohnern, die uns geholfen haben, dies zur bisher besten Version zu machen: Aces Spade, Adrian Buckler, Adrienne LeShelle, Amanda Ascot, AnnaQuay Heart, Aquamina Khalifa, Arienne Anatine, Aston Hildyard, Ayami Kamachi, Badinage Odets, Biffy Berjis, Bigfox Pye, BigJohn Jade, BigRick Byrd, Brettus Tripsa, Brock Fitzgerald, Broker Allen, Browse by Name, Chiria Celt, Christopher Prudhomme, dale Cao, dale Lynch, Dante Tucker, DaQbet Kish, Dargon Pacer, Darius Antonelli, Deira Llanfair, DeviantBone Xi, Dore Dorado, Englishwob Etchegaray, Enya Masala, Eric Renneville, Fairfax Michinaga, FireFox Bancroft, FOXI Cortes, Frederick Earp, Geo Meek, Gotthilf Fischer, Hallo Loon, Hawk Carter, Hazel Kyrgyz, Hecter Barbosa, Hex Link, Ice Pak, Ideasu Mukerji, Itoku Kamachi, Jared Halleck, Jaykob Carter, Jennifer Drumheller, JensMartin Tomsen, JIAB Boa, Jim Gustafson, JimmyJet Fossett, Joseph Rustamova, Jt Volos, Karilyn Kidomen, Kaysha Sion, Keaton Nacon, Kevin Susenko, Khashai Steinbeck, Kira Cuddihy, Kit Massiel, Kojo Dixon, KUieTSToRm Lightcloud, Kwai Kyong, Kyrtis Daehlie, LazyGunGuy Bartlett, Lewcas Zapedzki, Lioc Cioc, LLIB Utu, Lou Liebknecht, Luca Draken, Maci Homewood, Major Sewell, Mari Todriya, MarieElize Noel, matt27 Churchill, Maverick Miasma, maydaysos Young, Mediaho Ball, Mikayla Gillespie, Mike Faulkland, Modfire Milland, MollyBrown Foxley, Mosley Jewell, Nuahs Zapedzki, Nyx Divine, Panther Farber, Paul Bumi, Preciousse Moody, PrincessNina Prefect, Prio Serpentine, Rainbow Drake, Randall Rall, Randy Kazan, Reinhart Mokeev, Rhyph Somme, Rico Roizman, Ruge Dryke, Ryan Orbit, Safira Rosher, Samantha Bainbridge, Sammy Foxley, Sash Furst, Saturn Ariantho, Sienna Summers, Skye Enoch, Sofie Kanno, Solar Legion, Sonic Oki, Sunra Saenz, Taina Heart, Taryn Sprawl, tenerife Wei, TomDragon Nilsson, Trebla Reve, Trouble Carnell, user1cat Orbit, Vance Merlin, Veritas Variscan, Web Page, Wi3g3ht3s Ihnen, WinDrftr DeFarge, Yuu Nakamichi, Zac Delec, Zed Fairweather, Zimmo Hallard. +Vielen Dank den folgenden Einwohnern, die uns geholfen haben, dies zur bisher besten Version zu machen: aaron23 decuir, Abelv Vollmar, Abyssin Otoro, ActingIll Igaly, Adamas Carter, Addy Broome, Adelia Menges, Alexandra Rucker, Alexandrea Fride, Alissa Sabre, Alyx Jonson, Ann Otoole, Anton Fargis, Aradia Dielli, Araina jewell, Arcane Clawtooth, arcangelo vantelli, Are Sperber, Argent Stonecutter, arkady yost, Ashcroft Burnham, Ashen Arida, Auron Forcella, Azadine Umarov, Azildin Furst, Balp Allen, Balpien Hammerer, Barney Boomslang, Barrett Slade, becky pippen, Beeflin Grut, Beer Dailey, Behemoth Greenwood, bigmanu greene, bitova loon, Bonca Chikuwa, Bonnie Bechir, Brandon Catteneo, buttonpusher jones, Carina Raymaker, Ceera Murakami, Celierra Darling, ChatNoir Moonsoo, Cheetah Hammerer, chet neurocam, Cinthya Loveless, Cold Spitteler, Coral Quinnell, Crash Pointe, CrazyTB Oh, Creem Pye, Crom Chaffe, ctrl althouse, dade carver, Dael Ra, dakota schwade, Dale Innis, Damian McLeod, Danger Lytton, danielluh ashton, DanOfWA Flanagan, Davec Horsforth, Davidius Morigi, davie zinner, Day Oh, DBDigital Epsilon, Deany Fall, deBruce Munro, Decaf Coffey, Dedric Mauriac, Deeso Saeed, Dekka Raymaker, dexter eberhart, Dildo Spitz, Dizzy Banjo, djcabello klaar, Dnali Anabuki, Domchi Underwood, Doran Zemlja, Drew Dwi, Duckless Vandyke, Duncan Stenvaag, Dylan Rickenbacker, dzogchen Moody, Dzonatas Sol, Eddy Stryker, Edward Griffith, Edward Pearse, ein duesenburg, Elle Pollack, Elle74 Zaftig, Emileigh Starbrook, Emma Nowhere, ener bing, Erdrick Balbozar, eric domela, Evangeline Biedermann, Excalibur Longstaff, Fake Fitzgerald, Feldspar Millgrove, Feynt Mistral, Fluf Fredriksson, Forbid Utorid, Fortyniner Beck, Francesco Despres, Francisco Koolhoven, Franta Burt, Fury Rosewood, garde Burrel, Garmin Kawaguichi, Gavin Ichigo, Gellan Glenelg, Genie Demina, Gennifer Meredith, Gigs Taggart, Goldie Katsu, Gwyneth Llewelyn, Haravikk Mistral, Harleen Gretzky, Haruki Watanabe, Heather Manatiso, Henri Beauchamp, Honey Fairweather, Hypatia Callisto, Ice Brodie, icktoofay Kamachi, IntLibber Brautigan, Janise Dreamscape, Jay Shinobu, Jenni Ryba, Jeremy Ondricek, JetZep Zabelin, Jims Smythe, Jini Hammerer, Jopy Weber, JustOneMore Loon, Kaluura Boa, Kara Markova, Kevin Susenko, Khyra Ares, Kii Lilliehook, Kitty Barnett, Kris Kuttelwascher, Lanita Wingtips, Laura18 Streeter, Lee Ludd, Lettrius Jewell, Liberty Tesla, LilyAnna Carter, Lindal Kidd, Lisa Lowe, Lisa McConnell, Lola Machin, luca peck, Lupus Clawtooth, M1sha Dallin, Macsima Dagostino, Mana Janus, Mani Canning, Manjusri Binder, marceledward edman, march Korda, marchino villota, Marcus Llewellyn, MartinRJ Fayray, Matthew Dowd, Max Kleiber, mazzy fastback, McCabe Maxsted, Mckailen Kohnke, Meghan Dench, Melvin Starbrook, Mercia Mcmahon, Miakoda Carnell, Michelle2 Zenovka, Michi Lumin, mick parnall, Milla Michinaga, Millie Thompson, miranda Ashby, Mircea Lobo, MIssSara Beck, mouse mimistrobell, Myria Boa, Nanci Barthelmess, Nargus Asturias, Natalya Debevec, Nedrae Messmer, Nexeus Fatale, Niky Zenovka, Nimrod Szondi, Ninane Yoshikawa, Noch Tripsa, nokithecat writer, Nyko Merlin, Onyx Halberd, oryx tempel, Osprey Therian, Pac Hyun, Panagea McMillan, Patrick Ferrentino, PattehPh0x Katsu, ponk bing, Poppy Linden, Prajna Vella, Precious Rhiano, Prokofy Neva, Randall Lovenkraft, Rascal Ratelle, Raydon Writer, Rhaorth Antonelli, Rock Hayek, Ron Crimson, Ron Khondji, Ronald Richez, Rui Clary, Ruud Lathrop, Sakkano Imako, Sam Reinard, Sascha Vandyke, Scrippy Scofield, Sean18 McCarey, Sedona Mills, Sekonda Huet, Seraph Nephilim, Sergei Milos, Shadowquine Maltz, shai khalifa, sheilah flatley, Sheri Underwood, Shuggy Husky, Sierra Janus, Sigma Avro, Simil Miles, simon kline, Simon Nolan, Sindy Tsure, Sparks Keynes, Squirrel Wood, Stahi Columbia, StarSong Bright, Summer Seale, Sunn Thunders, Susan Koltai, Syler Zhora, Synack Fitzgerald, Tayra Dagostino, Tee Cramer, Teravus Ousley, Thomas Shikami, Tia Araw, Tillie Ariantho, Topher Brooks, Torley Linden, Twosteppin Jewell, tx Oh, urantia jewell, vaguegirl Petty, VeC Merlin, venus petrov, vv33d Beck, vynka dean, zann canto, zeebster colasanti, Zi Ree, Zion Tristan, Zorin Frobozz, Zyzzy Zarf APR Copyright (C) 2000-2004 The Apache Software Foundation cURL Copyright (C) 1996-2002, Daniel Stenberg, (daniel@haxx.se) @@ -27,7 +25,7 @@ Alle Rechte vorbehalten. Details siehe licenses.txt. Voice-Chat-Audiocoding: Polycom(R) Siren14(TM) (ITU-T Empf. G.722.1 Anhang C) -Mr. Watson – kommen Sie bitte her – ich möchte Sie sehen. +Happiness is a warm puppy. -- Charles M. Schulz Sie befinden sich in [POSITION] diff --git a/linden/indra/newview/skins/xui/de/floater_about_land.xml b/linden/indra/newview/skins/xui/de/floater_about_land.xml index fe9542f..fdb7257 100644 --- a/linden/indra/newview/skins/xui/de/floater_about_land.xml +++ b/linden/indra/newview/skins/xui/de/floater_about_land.xml @@ -441,13 +441,58 @@ + + Medien-URL: + +