From cc92525b0df952659102d2e5adcc4140fea7f371 Mon Sep 17 00:00:00 2001 From: Adam Moss Date: Mon, 4 May 2009 17:43:26 +0000 Subject: QAR-1476 Combo-merge to trunk: Viewer 1.23 RC0 and Simulator 1.26.3 svn merge -r118927:118939 svn+ssh://svn.lindenlab.com/svn/linden/branches/viewer/viewer-1.23.0-merge-2-combo-QAR-1476 this is a composite of... svn merge -r115088:118182 svn+ssh://svn.lindenlab.com/svn/linden/branches/viewer/viewer_1-23 conflicts resolved: C doc/contributions.txt C indra/llaudio/audioengine.cpp C indra/newview/CMakeLists.txt C indra/newview/llfloaterlandholdings.cpp C indra/newview/llpaneldirbrowser.cpp C indra/newview/llpanelgrouplandmoney.cpp C indra/newview/llpreviewscript.cpp C indra/newview/llviewermenu.cpp C indra/newview/skins/default/xui/en-us/notifications.xml and... svn merge -r116937:118673 svn+ssh://svn.lindenlab.com/svn/linden/branches/server/server-1.26 minor-to-trivial conflicts resolved: C indra/llcommon/llversionserver.h C indra/newsim/llrezdata.cpp C indra/newsim/llstate.cpp C indra/upgrade/schema_version/sequence/3/index_log_paypal.sql --- indra/newview/CMakeLists.txt | 4 +- indra/newview/app_settings/settings.xml | 13 +- indra/newview/gpu_table.txt | 20 +- .../installers/windows/installer_template.nsi | 8 +- indra/newview/llagent.cpp | 36 +- indra/newview/llagent.h | 5 +- indra/newview/llappviewer.cpp | 115 +- indra/newview/llappviewer.h | 3 +- indra/newview/lldrawpool.h | 6 +- indra/newview/lldrawpoolavatar.cpp | 61 - indra/newview/llface.cpp | 6 - indra/newview/llfloaterbuyland.cpp | 6 +- indra/newview/llfloaterimagepreview.cpp | 30 + indra/newview/llfloaterimagepreview.h | 3 + indra/newview/llfloaterland.cpp | 35 +- indra/newview/llfloaterlandholdings.cpp | 41 +- indra/newview/llfloaternotificationsconsole.cpp | 2 +- indra/newview/llfloaterregioninfo.cpp | 49 +- indra/newview/llfloatersnapshot.cpp | 3 +- indra/newview/llfloaterurldisplay.cpp | 4 +- indra/newview/llimpanel.cpp | 4 + indra/newview/llmenucommands.cpp | 7 - indra/newview/llmenucommands.h | 1 - indra/newview/llpanelclassified.cpp | 73 +- indra/newview/llpanelclassified.h | 2 + indra/newview/llpanelgrouplandmoney.cpp | 51 +- indra/newview/llpanelgrouproles.cpp | 2 +- indra/newview/llpanellandmedia.cpp | 106 +- indra/newview/llpanellandmedia.h | 6 +- indra/newview/llpanelplace.cpp | 41 +- indra/newview/llpanelplace.h | 5 +- indra/newview/llproductinforequest.cpp | 92 + indra/newview/llproductinforequest.h | 60 + indra/newview/llprogressview.cpp | 12 +- indra/newview/llspatialpartition.cpp | 54 +- indra/newview/llstartup.cpp | 6 + indra/newview/lltexlayer.cpp | 6 + indra/newview/lltoolbar.cpp | 12 - indra/newview/lltoolbar.h | 1 - indra/newview/llviewerjoint.cpp | 22 +- indra/newview/llviewerjoint.h | 4 +- indra/newview/llviewerjointattachment.cpp | 2 +- indra/newview/llviewerjointattachment.h | 2 +- indra/newview/llviewerjointmesh.cpp | 13 +- indra/newview/llviewerjointmesh.h | 2 +- indra/newview/llviewermenu.cpp | 41 +- indra/newview/llviewermessage.cpp | 23 +- indra/newview/llviewerobject.cpp | 9 +- indra/newview/llviewerparcelmgr.cpp | 23 +- indra/newview/llviewerregion.cpp | 9 +- indra/newview/llviewerwindow.cpp | 5 +- indra/newview/llvoavatar.cpp | 91 +- indra/newview/llvoavatar.h | 8 +- indra/newview/llvovolume.cpp | 15 +- indra/newview/llworldmapview.cpp | 83 +- indra/newview/pipeline.h | 2 + .../newview/skins/default/xui/da/floater_about.xml | 1 + .../skins/default/xui/da/floater_about_land.xml | 450 +- .../default/xui/da/floater_animation_preview.xml | 80 +- .../skins/default/xui/da/floater_auction.xml | 6 +- .../skins/default/xui/da/floater_avatar_picker.xml | 4 +- .../default/xui/da/floater_avatar_textures.xml | 22 +- .../skins/default/xui/da/floater_beacons.xml | 23 +- .../skins/default/xui/da/floater_build_options.xml | 10 +- .../newview/skins/default/xui/da/floater_bumps.xml | 6 +- .../skins/default/xui/da/floater_buy_contents.xml | 12 +- .../skins/default/xui/da/floater_buy_currency.xml | 34 +- .../skins/default/xui/da/floater_buy_land.xml | 90 +- .../skins/default/xui/da/floater_buy_object.xml | 18 +- .../skins/default/xui/da/floater_camera.xml | 2 +- .../skins/default/xui/da/floater_choose_group.xml | 2 +- .../skins/default/xui/da/floater_color_picker.xml | 6 +- .../skins/default/xui/da/floater_critical.xml | 2 +- .../skins/default/xui/da/floater_customize.xml | 320 +- .../default/xui/da/floater_day_cycle_options.xml | 43 +- .../skins/default/xui/da/floater_env_settings.xml | 26 + .../skins/default/xui/da/floater_gesture.xml | 16 + .../default/xui/da/floater_hardware_settings.xml | 40 + indra/newview/skins/default/xui/da/floater_hud.xml | 2 + indra/newview/skins/default/xui/da/floater_im.xml | 45 + .../skins/default/xui/da/floater_image_preview.xml | 52 + .../skins/default/xui/da/floater_inspect.xml | 13 + .../skins/default/xui/da/floater_inventory.xml | 68 +- .../xui/da/floater_inventory_item_properties.xml | 18 +- .../xui/da/floater_inventory_view_finder.xml | 24 + .../skins/default/xui/da/floater_joystick.xml | 60 +- .../skins/default/xui/da/floater_lagmeter.xml | 41 +- .../skins/default/xui/da/floater_land_holdings.xml | 20 +- .../default/xui/da/floater_live_lsleditor.xml | 12 +- .../skins/default/xui/da/floater_lsl_guide.xml | 2 +- .../skins/default/xui/da/floater_media_browser.xml | 4 +- .../skins/default/xui/da/floater_mem_leaking.xml | 18 + .../skins/default/xui/da/floater_mute_object.xml | 10 +- .../skins/default/xui/da/floater_openobject.xml | 6 +- indra/newview/skins/default/xui/da/floater_pay.xml | 6 +- .../skins/default/xui/da/floater_pay_object.xml | 10 +- .../skins/default/xui/da/floater_postcard.xml | 16 +- .../skins/default/xui/da/floater_preferences.xml | 8 +- .../default/xui/da/floater_preview_animation.xml | 8 +- .../default/xui/da/floater_preview_classified.xml | 2 +- .../skins/default/xui/da/floater_preview_event.xml | 2 +- .../default/xui/da/floater_preview_gesture.xml | 21 +- .../default/xui/da/floater_preview_notecard.xml | 7 +- .../skins/default/xui/da/floater_preview_sound.xml | 4 +- .../default/xui/da/floater_preview_texture.xml | 2 +- .../skins/default/xui/da/floater_region_info.xml | 2 + .../skins/default/xui/da/floater_report_abuse.xml | 94 +- .../skins/default/xui/da/floater_script_debug.xml | 4 +- .../default/xui/da/floater_script_preview.xml | 2 +- .../skins/default/xui/da/floater_script_queue.xml | 2 +- .../skins/default/xui/da/floater_script_search.xml | 6 +- .../skins/default/xui/da/floater_select_key.xml | 4 +- .../skins/default/xui/da/floater_sell_land.xml | 20 +- .../default/xui/da/floater_settings_debug.xml | 8 +- .../skins/default/xui/da/floater_snapshot.xml | 70 +- .../skins/default/xui/da/floater_sound_preview.xml | 6 +- .../skins/default/xui/da/floater_telehub.xml | 18 +- .../skins/default/xui/da/floater_texture_ctrl.xml | 8 +- .../newview/skins/default/xui/da/floater_tools.xml | 476 +- .../skins/default/xui/da/floater_top_objects.xml | 55 + indra/newview/skins/default/xui/da/floater_tos.xml | 10 +- .../skins/default/xui/da/floater_url_entry.xml | 12 + .../newview/skins/default/xui/da/floater_water.xml | 103 + .../default/xui/da/floater_wearable_save_as.xml | 4 +- .../default/xui/da/floater_windlight_options.xml | 228 + .../skins/default/xui/da/floater_world_map.xml | 61 +- .../skins/default/xui/da/menu_inventory.xml | 108 +- indra/newview/skins/default/xui/da/menu_login.xml | 2 +- indra/newview/skins/default/xui/da/menu_slurl.xml | 4 +- indra/newview/skins/default/xui/da/menu_viewer.xml | 372 +- indra/newview/skins/default/xui/da/mime_types.xml | 230 + .../newview/skins/default/xui/da/notifications.xml | 1782 ++++++ .../skins/default/xui/da/panel_audio_device.xml | 25 + .../newview/skins/default/xui/da/panel_friends.xml | 26 + .../skins/default/xui/da/panel_group_general.xml | 79 + .../skins/default/xui/da/panel_group_invite.xml | 30 + .../default/xui/da/panel_group_land_money.xml | 80 + .../skins/default/xui/da/panel_group_notices.xml | 73 + .../skins/default/xui/da/panel_group_roles.xml | 161 + .../newview/skins/default/xui/da/panel_groups.xml | 18 + indra/newview/skins/default/xui/da/panel_login.xml | 28 +- .../default/xui/da/panel_preferences_chat.xml | 94 +- .../default/xui/da/panel_preferences_general.xml | 106 +- .../default/xui/da/panel_preferences_graphics1.xml | 70 +- .../skins/default/xui/da/panel_region_covenant.xml | 50 + .../skins/default/xui/da/panel_region_debug.xml | 51 + .../skins/default/xui/da/panel_region_estate.xml | 71 + .../skins/default/xui/da/panel_region_general.xml | 46 + .../skins/default/xui/da/panel_region_terrain.xml | 30 + .../skins/default/xui/da/panel_region_texture.xml | 57 + .../skins/default/xui/da/panel_scrolling_param.xml | 12 + .../skins/default/xui/da/panel_status_bar.xml | 44 + .../newview/skins/default/xui/da/role_actions.xml | 201 + indra/newview/skins/default/xui/da/strings.xml | 391 +- .../skins/default/xui/da/teleport_strings.xml | 88 + .../skins/default/xui/de/floater_about_land.xml | 8 +- .../skins/default/xui/de/floater_report_abuse.xml | 18 +- .../skins/default/xui/de/floater_sell_land.xml | 1 + .../skins/default/xui/de/floater_world_map.xml | 6 +- .../newview/skins/default/xui/de/notifications.xml | 5770 +++++++++++++++++++ .../skins/default/xui/de/panel_group_general.xml | 12 +- .../default/xui/de/panel_group_land_money.xml | 2 +- .../skins/default/xui/de/panel_group_notices.xml | 2 +- indra/newview/skins/default/xui/de/panel_login.xml | 2 +- .../skins/default/xui/de/panel_region_general.xml | 10 +- .../newview/skins/default/xui/es/floater_about.xml | 36 +- .../skins/default/xui/es/floater_about_land.xml | 565 +- .../default/xui/es/floater_animation_preview.xml | 143 +- .../skins/default/xui/es/floater_auction.xml | 21 +- .../skins/default/xui/es/floater_avatar_picker.xml | 24 +- .../default/xui/es/floater_avatar_textures.xml | 54 +- .../skins/default/xui/es/floater_beacons.xml | 15 + .../skins/default/xui/es/floater_build_options.xml | 13 +- .../newview/skins/default/xui/es/floater_bumps.xml | 16 +- .../skins/default/xui/es/floater_buy_contents.xml | 21 +- .../skins/default/xui/es/floater_buy_currency.xml | 54 +- .../skins/default/xui/es/floater_buy_land.xml | 292 +- .../skins/default/xui/es/floater_buy_object.xml | 27 +- .../skins/default/xui/es/floater_camera.xml | 12 + .../skins/default/xui/es/floater_choose_group.xml | 6 +- .../skins/default/xui/es/floater_color_picker.xml | 17 +- .../skins/default/xui/es/floater_critical.xml | 8 +- .../skins/default/xui/es/floater_customize.xml | 619 +- .../default/xui/es/floater_day_cycle_options.xml | 94 + .../default/xui/es/floater_device_settings.xml | 2 + .../skins/default/xui/es/floater_env_settings.xml | 23 + .../skins/default/xui/es/floater_gesture.xml | 23 +- .../default/xui/es/floater_hardware_settings.xml | 38 + indra/newview/skins/default/xui/es/floater_hud.xml | 2 + indra/newview/skins/default/xui/es/floater_im.xml | 50 +- .../skins/default/xui/es/floater_image_preview.xml | 32 +- .../skins/default/xui/es/floater_inspect.xml | 11 + .../skins/default/xui/es/floater_inventory.xml | 65 +- .../xui/es/floater_inventory_item_properties.xml | 46 +- .../xui/es/floater_inventory_view_finder.xml | 42 +- .../skins/default/xui/es/floater_joystick.xml | 83 + .../skins/default/xui/es/floater_lagmeter.xml | 152 + .../skins/default/xui/es/floater_land_holdings.xml | 35 +- .../default/xui/es/floater_live_lsleditor.xml | 15 +- .../skins/default/xui/es/floater_lsl_guide.xml | 7 + .../skins/default/xui/es/floater_media_browser.xml | 19 + .../skins/default/xui/es/floater_mem_leaking.xml | 18 + .../skins/default/xui/es/floater_moveview.xml | 22 +- .../skins/default/xui/es/floater_mute_object.xml | 12 + .../skins/default/xui/es/floater_my_friends.xml | 7 + .../skins/default/xui/es/floater_openobject.xml | 10 +- indra/newview/skins/default/xui/es/floater_pay.xml | 26 +- .../skins/default/xui/es/floater_pay_object.xml | 36 +- .../skins/default/xui/es/floater_post_process.xml | 53 + .../skins/default/xui/es/floater_postcard.xml | 32 +- .../skins/default/xui/es/floater_preferences.xml | 11 +- .../default/xui/es/floater_preview_animation.xml | 10 +- .../default/xui/es/floater_preview_classified.xml | 2 + .../skins/default/xui/es/floater_preview_event.xml | 2 + .../default/xui/es/floater_preview_gesture.xml | 64 +- .../default/xui/es/floater_preview_notecard.xml | 14 +- .../skins/default/xui/es/floater_preview_sound.xml | 12 +- .../default/xui/es/floater_preview_texture.xml | 8 +- .../skins/default/xui/es/floater_region_info.xml | 2 + .../skins/default/xui/es/floater_report_abuse.xml | 190 +- .../skins/default/xui/es/floater_script_debug.xml | 6 +- .../default/xui/es/floater_script_preview.xml | 6 +- .../skins/default/xui/es/floater_script_queue.xml | 6 +- .../skins/default/xui/es/floater_script_search.xml | 18 +- .../skins/default/xui/es/floater_select_key.xml | 7 + .../skins/default/xui/es/floater_sell_land.xml | 38 +- .../default/xui/es/floater_settings_debug.xml | 19 +- .../skins/default/xui/es/floater_snapshot.xml | 85 +- .../skins/default/xui/es/floater_sound_preview.xml | 23 +- .../skins/default/xui/es/floater_telehub.xml | 30 +- .../skins/default/xui/es/floater_texture_ctrl.xml | 33 +- .../newview/skins/default/xui/es/floater_tools.xml | 546 +- .../skins/default/xui/es/floater_top_objects.xml | 71 +- indra/newview/skins/default/xui/es/floater_tos.xml | 24 +- .../skins/default/xui/es/floater_url_entry.xml | 12 + .../newview/skins/default/xui/es/floater_water.xml | 88 + .../default/xui/es/floater_wearable_save_as.xml | 10 +- .../default/xui/es/floater_windlight_options.xml | 189 + .../skins/default/xui/es/floater_world_map.xml | 85 +- .../skins/default/xui/es/menu_inventory.xml | 119 +- indra/newview/skins/default/xui/es/menu_login.xml | 13 + indra/newview/skins/default/xui/es/menu_slurl.xml | 6 + indra/newview/skins/default/xui/es/menu_viewer.xml | 380 +- indra/newview/skins/default/xui/es/mime_types.xml | 230 + .../newview/skins/default/xui/es/notifications.xml | 5759 +++++++++++++++++++ .../skins/default/xui/es/panel_audio_device.xml | 25 + .../newview/skins/default/xui/es/panel_friends.xml | 20 + .../skins/default/xui/es/panel_group_general.xml | 100 +- .../skins/default/xui/es/panel_group_invite.xml | 37 +- .../default/xui/es/panel_group_land_money.xml | 87 +- .../skins/default/xui/es/panel_group_notices.xml | 65 +- .../skins/default/xui/es/panel_group_roles.xml | 165 +- .../newview/skins/default/xui/es/panel_groups.xml | 15 + indra/newview/skins/default/xui/es/panel_login.xml | 36 +- .../default/xui/es/panel_preferences_chat.xml | 73 +- .../default/xui/es/panel_preferences_general.xml | 144 +- .../default/xui/es/panel_preferences_graphics1.xml | 187 +- .../skins/default/xui/es/panel_region_covenant.xml | 32 +- .../skins/default/xui/es/panel_region_debug.xml | 64 +- .../skins/default/xui/es/panel_region_estate.xml | 87 +- .../skins/default/xui/es/panel_region_general.xml | 72 +- .../skins/default/xui/es/panel_region_terrain.xml | 43 +- .../skins/default/xui/es/panel_region_texture.xml | 46 +- .../skins/default/xui/es/panel_scrolling_param.xml | 10 +- .../skins/default/xui/es/panel_status_bar.xml | 54 +- indra/newview/skins/default/xui/es/strings.xml | 421 ++ .../skins/default/xui/es/teleport_strings.xml | 74 + .../skins/default/xui/fr/floater_about_land.xml | 9 +- .../skins/default/xui/fr/floater_bulk_perms.xml | 40 + .../skins/default/xui/fr/floater_buy_land.xml | 173 +- .../skins/default/xui/fr/floater_customize.xml | 20 +- .../skins/default/xui/fr/floater_joystick.xml | 32 +- .../skins/default/xui/fr/floater_media_browser.xml | 4 +- .../skins/default/xui/fr/floater_notification.xml | 7 + .../xui/fr/floater_notifications_console.xml | 5 + .../skins/default/xui/fr/floater_perm_prefs.xml | 16 + .../skins/default/xui/fr/floater_report_abuse.xml | 18 +- .../skins/default/xui/fr/floater_script_search.xml | 16 +- .../skins/default/xui/fr/floater_snapshot.xml | 4 +- .../skins/default/xui/fr/floater_sound_preview.xml | 2 +- .../newview/skins/default/xui/fr/floater_tools.xml | 148 +- .../skins/default/xui/fr/floater_world_map.xml | 17 +- .../skins/default/xui/fr/menu_inventory.xml | 7 +- indra/newview/skins/default/xui/fr/menu_viewer.xml | 24 +- .../newview/skins/default/xui/fr/notifications.xml | 5732 +++++++++++++++++++ .../skins/default/xui/fr/panel_group_general.xml | 13 +- .../skins/default/xui/fr/panel_group_invite.xml | 9 +- .../default/xui/fr/panel_group_land_money.xml | 2 +- .../skins/default/xui/fr/panel_group_roles.xml | 2 +- indra/newview/skins/default/xui/fr/panel_login.xml | 2 +- .../default/xui/fr/panel_notifications_channel.xml | 15 + .../default/xui/fr/panel_preferences_general.xml | 12 +- .../skins/default/xui/fr/panel_region_general.xml | 11 +- indra/newview/skins/default/xui/fr/strings.xml | 55 +- .../newview/skins/default/xui/it/floater_about.xml | 36 + .../skins/default/xui/it/floater_about_land.xml | 428 ++ .../default/xui/it/floater_animation_preview.xml | 163 + .../skins/default/xui/it/floater_auction.xml | 9 + .../skins/default/xui/it/floater_avatar_picker.xml | 15 + .../default/xui/it/floater_avatar_textures.xml | 30 + .../skins/default/xui/it/floater_beacons.xml | 15 + .../skins/default/xui/it/floater_build_options.xml | 8 + .../newview/skins/default/xui/it/floater_bumps.xml | 21 + .../skins/default/xui/it/floater_buy_contents.xml | 21 + .../skins/default/xui/it/floater_buy_currency.xml | 66 + .../skins/default/xui/it/floater_buy_land.xml | 228 + .../skins/default/xui/it/floater_buy_object.xml | 26 + .../skins/default/xui/it/floater_camera.xml | 12 + .../skins/default/xui/it/floater_choose_group.xml | 8 + .../skins/default/xui/it/floater_color_picker.xml | 30 + .../skins/default/xui/it/floater_critical.xml | 11 + .../skins/default/xui/it/floater_customize.xml | 427 ++ .../default/xui/it/floater_day_cycle_options.xml | 94 + .../default/xui/it/floater_device_settings.xml | 2 + .../skins/default/xui/it/floater_env_settings.xml | 23 + .../skins/default/xui/it/floater_gesture.xml | 15 + .../default/xui/it/floater_hardware_settings.xml | 38 + indra/newview/skins/default/xui/it/floater_hud.xml | 2 + indra/newview/skins/default/xui/it/floater_im.xml | 45 + .../skins/default/xui/it/floater_image_preview.xml | 52 + .../skins/default/xui/it/floater_inspect.xml | 11 + .../skins/default/xui/it/floater_inventory.xml | 47 + .../xui/it/floater_inventory_item_properties.xml | 85 + .../xui/it/floater_inventory_view_finder.xml | 24 + .../skins/default/xui/it/floater_joystick.xml | 83 + .../skins/default/xui/it/floater_lagmeter.xml | 152 + .../skins/default/xui/it/floater_land_holdings.xml | 38 + .../default/xui/it/floater_live_lsleditor.xml | 12 + .../skins/default/xui/it/floater_lsl_guide.xml | 7 + .../skins/default/xui/it/floater_media_browser.xml | 19 + .../skins/default/xui/it/floater_mem_leaking.xml | 18 + .../skins/default/xui/it/floater_moveview.xml | 11 + .../skins/default/xui/it/floater_mute_object.xml | 12 + .../skins/default/xui/it/floater_my_friends.xml | 7 + .../skins/default/xui/it/floater_openobject.xml | 8 + indra/newview/skins/default/xui/it/floater_pay.xml | 21 + .../skins/default/xui/it/floater_pay_object.xml | 30 + .../skins/default/xui/it/floater_post_process.xml | 53 + .../skins/default/xui/it/floater_postcard.xml | 36 + .../skins/default/xui/it/floater_preferences.xml | 8 + .../default/xui/it/floater_preview_animation.xml | 8 + .../default/xui/it/floater_preview_classified.xml | 2 + .../skins/default/xui/it/floater_preview_event.xml | 2 + .../default/xui/it/floater_preview_gesture.xml | 61 + .../default/xui/it/floater_preview_notecard.xml | 16 + .../skins/default/xui/it/floater_preview_sound.xml | 8 + .../default/xui/it/floater_preview_texture.xml | 9 + .../skins/default/xui/it/floater_region_info.xml | 2 + .../skins/default/xui/it/floater_report_abuse.xml | 180 + .../skins/default/xui/it/floater_script_debug.xml | 6 + .../default/xui/it/floater_script_preview.xml | 6 + .../skins/default/xui/it/floater_script_queue.xml | 4 + .../skins/default/xui/it/floater_script_search.xml | 13 + .../skins/default/xui/it/floater_select_key.xml | 7 + .../skins/default/xui/it/floater_sell_land.xml | 68 + .../default/xui/it/floater_settings_debug.xml | 17 + .../skins/default/xui/it/floater_snapshot.xml | 137 + .../skins/default/xui/it/floater_sound_preview.xml | 11 + .../skins/default/xui/it/floater_telehub.xml | 28 + .../skins/default/xui/it/floater_texture_ctrl.xml | 23 + .../newview/skins/default/xui/it/floater_tools.xml | 611 ++ .../skins/default/xui/it/floater_top_objects.xml | 55 + indra/newview/skins/default/xui/it/floater_tos.xml | 16 + .../skins/default/xui/it/floater_url_entry.xml | 12 + .../newview/skins/default/xui/it/floater_water.xml | 88 + .../default/xui/it/floater_wearable_save_as.xml | 11 + .../default/xui/it/floater_windlight_options.xml | 189 + .../skins/default/xui/it/floater_world_map.xml | 63 + .../skins/default/xui/it/menu_inventory.xml | 65 + indra/newview/skins/default/xui/it/menu_login.xml | 13 + indra/newview/skins/default/xui/it/menu_slurl.xml | 6 + indra/newview/skins/default/xui/it/menu_viewer.xml | 203 + indra/newview/skins/default/xui/it/mime_types.xml | 230 + .../newview/skins/default/xui/it/notifications.xml | 5795 +++++++++++++++++++ .../skins/default/xui/it/panel_audio_device.xml | 25 + .../newview/skins/default/xui/it/panel_friends.xml | 20 + .../skins/default/xui/it/panel_group_general.xml | 70 + .../skins/default/xui/it/panel_group_invite.xml | 23 + .../default/xui/it/panel_group_land_money.xml | 74 + .../skins/default/xui/it/panel_group_notices.xml | 71 + .../skins/default/xui/it/panel_group_roles.xml | 143 + .../newview/skins/default/xui/it/panel_groups.xml | 15 + indra/newview/skins/default/xui/it/panel_login.xml | 43 + .../default/xui/it/panel_preferences_chat.xml | 57 + .../default/xui/it/panel_preferences_general.xml | 114 + .../default/xui/it/panel_preferences_graphics1.xml | 176 + .../skins/default/xui/it/panel_region_covenant.xml | 50 + .../skins/default/xui/it/panel_region_debug.xml | 40 + .../skins/default/xui/it/panel_region_estate.xml | 69 + .../skins/default/xui/it/panel_region_general.xml | 43 + .../skins/default/xui/it/panel_region_terrain.xml | 27 + .../skins/default/xui/it/panel_region_texture.xml | 57 + .../skins/default/xui/it/panel_scrolling_param.xml | 10 + .../skins/default/xui/it/panel_status_bar.xml | 38 + indra/newview/skins/default/xui/it/strings.xml | 421 ++ .../skins/default/xui/it/teleport_strings.xml | 73 + .../skins/default/xui/ja/floater_about_land.xml | 16 +- .../skins/default/xui/ja/floater_bulk_perms.xml | 43 + .../skins/default/xui/ja/floater_buy_land.xml | 182 +- .../skins/default/xui/ja/floater_joystick.xml | 112 +- .../skins/default/xui/ja/floater_media_browser.xml | 4 +- .../skins/default/xui/ja/floater_notification.xml | 7 + .../xui/ja/floater_notifications_console.xml | 5 + .../skins/default/xui/ja/floater_perm_prefs.xml | 16 + .../skins/default/xui/ja/floater_report_abuse.xml | 18 +- .../skins/default/xui/ja/floater_snapshot.xml | 4 +- .../skins/default/xui/ja/floater_sound_preview.xml | 3 +- .../newview/skins/default/xui/ja/floater_tools.xml | 431 +- .../default/xui/ja/floater_windlight_options.xml | 4 +- .../skins/default/xui/ja/floater_world_map.xml | 8 +- .../skins/default/xui/ja/menu_inventory.xml | 120 +- indra/newview/skins/default/xui/ja/menu_viewer.xml | 32 +- .../newview/skins/default/xui/ja/notifications.xml | 5947 ++++++++++++++++++++ .../newview/skins/default/xui/ja/panel_friends.xml | 2 +- .../skins/default/xui/ja/panel_group_general.xml | 12 +- .../skins/default/xui/ja/panel_group_invite.xml | 8 +- .../skins/default/xui/ja/panel_group_roles.xml | 4 +- indra/newview/skins/default/xui/ja/panel_login.xml | 2 +- .../default/xui/ja/panel_notifications_channel.xml | 15 + .../default/xui/ja/panel_preferences_general.xml | 9 +- .../skins/default/xui/ja/panel_region_general.xml | 12 +- indra/newview/skins/default/xui/ja/strings.xml | 73 +- .../newview/skins/default/xui/nl/floater_about.xml | 35 + .../skins/default/xui/nl/floater_about_land.xml | 424 ++ .../skins/default/xui/nl/floater_auction.xml | 9 + .../skins/default/xui/nl/floater_beacons.xml | 15 + .../newview/skins/default/xui/nl/floater_bumps.xml | 21 + .../skins/default/xui/nl/floater_buy_contents.xml | 21 + .../skins/default/xui/nl/floater_buy_currency.xml | 66 + .../skins/default/xui/nl/floater_buy_land.xml | 224 + .../skins/default/xui/nl/floater_buy_object.xml | 26 + .../skins/default/xui/nl/floater_camera.xml | 12 + .../skins/default/xui/nl/floater_choose_group.xml | 8 + .../skins/default/xui/nl/floater_color_picker.xml | 30 + .../skins/default/xui/nl/floater_critical.xml | 11 + .../skins/default/xui/nl/floater_customize.xml | 427 ++ .../skins/default/xui/nl/floater_env_settings.xml | 23 + .../skins/default/xui/nl/floater_gesture.xml | 15 + indra/newview/skins/default/xui/nl/floater_hud.xml | 2 + indra/newview/skins/default/xui/nl/floater_im.xml | 45 + .../skins/default/xui/nl/floater_inspect.xml | 11 + .../skins/default/xui/nl/floater_inventory.xml | 47 + .../skins/default/xui/nl/floater_joystick.xml | 83 + .../skins/default/xui/nl/floater_lagmeter.xml | 152 + .../skins/default/xui/nl/floater_lsl_guide.xml | 7 + .../skins/default/xui/nl/floater_mem_leaking.xml | 18 + .../skins/default/xui/nl/floater_moveview.xml | 11 + .../skins/default/xui/nl/floater_mute_object.xml | 11 + .../skins/default/xui/nl/floater_my_friends.xml | 7 + .../skins/default/xui/nl/floater_openobject.xml | 8 + indra/newview/skins/default/xui/nl/floater_pay.xml | 21 + .../skins/default/xui/nl/floater_pay_object.xml | 30 + .../skins/default/xui/nl/floater_post_process.xml | 53 + .../skins/default/xui/nl/floater_postcard.xml | 36 + .../skins/default/xui/nl/floater_preferences.xml | 8 + .../skins/default/xui/nl/floater_region_info.xml | 2 + .../skins/default/xui/nl/floater_report_abuse.xml | 179 + .../skins/default/xui/nl/floater_script_debug.xml | 6 + .../skins/default/xui/nl/floater_script_queue.xml | 4 + .../skins/default/xui/nl/floater_select_key.xml | 7 + .../skins/default/xui/nl/floater_sell_land.xml | 68 + .../skins/default/xui/nl/floater_snapshot.xml | 137 + .../skins/default/xui/nl/floater_telehub.xml | 25 + .../skins/default/xui/nl/floater_texture_ctrl.xml | 23 + .../newview/skins/default/xui/nl/floater_tools.xml | 610 ++ .../skins/default/xui/nl/floater_top_objects.xml | 55 + indra/newview/skins/default/xui/nl/floater_tos.xml | 15 + .../skins/default/xui/nl/floater_url_entry.xml | 12 + .../newview/skins/default/xui/nl/floater_water.xml | 88 + .../skins/default/xui/nl/floater_world_map.xml | 63 + .../skins/default/xui/nl/menu_inventory.xml | 65 + indra/newview/skins/default/xui/nl/menu_login.xml | 13 + indra/newview/skins/default/xui/nl/menu_slurl.xml | 6 + indra/newview/skins/default/xui/nl/menu_viewer.xml | 203 + indra/newview/skins/default/xui/nl/mime_types.xml | 230 + .../newview/skins/default/xui/nl/notifications.xml | 5791 +++++++++++++++++++ .../skins/default/xui/nl/panel_audio_device.xml | 25 + .../newview/skins/default/xui/nl/panel_friends.xml | 20 + .../skins/default/xui/nl/panel_group_general.xml | 67 + .../skins/default/xui/nl/panel_group_invite.xml | 21 + .../skins/default/xui/nl/panel_group_notices.xml | 61 + .../skins/default/xui/nl/panel_group_roles.xml | 135 + .../newview/skins/default/xui/nl/panel_groups.xml | 15 + indra/newview/skins/default/xui/nl/panel_login.xml | 43 + .../skins/default/xui/nl/panel_region_debug.xml | 40 + .../skins/default/xui/nl/panel_region_estate.xml | 68 + .../skins/default/xui/nl/panel_region_general.xml | 46 + .../skins/default/xui/nl/panel_region_terrain.xml | 27 + .../skins/default/xui/nl/panel_region_texture.xml | 57 + .../skins/default/xui/nl/panel_status_bar.xml | 38 + indra/newview/skins/default/xui/nl/strings.xml | 421 ++ .../skins/default/xui/nl/teleport_strings.xml | 73 + .../newview/skins/default/xui/pl/floater_about.xml | 6 +- .../skins/default/xui/pl/floater_about_land.xml | 6 +- .../skins/default/xui/pl/floater_buy_land.xml | 2 +- .../skins/default/xui/pl/floater_report_abuse.xml | 18 +- .../skins/default/xui/pl/floater_snapshot.xml | 4 +- .../skins/default/xui/pl/floater_sound_preview.xml | 2 +- .../newview/skins/default/xui/pl/floater_tools.xml | 2 +- .../skins/default/xui/pl/floater_world_map.xml | 4 +- indra/newview/skins/default/xui/pl/menu_viewer.xml | 10 +- .../newview/skins/default/xui/pl/notifications.xml | 5718 +++++++++++++++++++ .../skins/default/xui/pl/panel_group_general.xml | 13 +- indra/newview/skins/default/xui/pl/panel_login.xml | 2 +- .../skins/default/xui/pl/panel_region_general.xml | 11 +- .../newview/skins/default/xui/pt/floater_about.xml | 30 + .../skins/default/xui/pt/floater_about_land.xml | 133 +- .../default/xui/pt/floater_animation_preview.xml | 17 +- .../skins/default/xui/pt/floater_auction.xml | 18 +- .../skins/default/xui/pt/floater_avatar_picker.xml | 6 +- .../default/xui/pt/floater_avatar_textures.xml | 2 +- .../skins/default/xui/pt/floater_beacons.xml | 4 +- .../newview/skins/default/xui/pt/floater_bumps.xml | 4 +- .../skins/default/xui/pt/floater_buy_currency.xml | 14 +- .../skins/default/xui/pt/floater_buy_land.xml | 60 +- .../skins/default/xui/pt/floater_buy_object.xml | 2 +- .../skins/default/xui/pt/floater_color_picker.xml | 16 +- .../skins/default/xui/pt/floater_critical.xml | 11 +- .../skins/default/xui/pt/floater_customize.xml | 50 +- .../default/xui/pt/floater_day_cycle_options.xml | 14 +- .../default/xui/pt/floater_device_settings.xml | 2 + .../skins/default/xui/pt/floater_gesture.xml | 11 +- .../skins/default/xui/pt/floater_god_tools.xml | 120 +- indra/newview/skins/default/xui/pt/floater_im.xml | 8 +- .../skins/default/xui/pt/floater_image_preview.xml | 4 +- .../skins/default/xui/pt/floater_inspect.xml | 19 +- .../skins/default/xui/pt/floater_inventory.xml | 4 +- .../xui/pt/floater_inventory_item_properties.xml | 6 +- .../xui/pt/floater_inventory_view_finder.xml | 44 +- .../skins/default/xui/pt/floater_joystick.xml | 1 - .../skins/default/xui/pt/floater_lagmeter.xml | 4 +- .../skins/default/xui/pt/floater_land_holdings.xml | 17 +- .../skins/default/xui/pt/floater_media_browser.xml | 12 +- .../skins/default/xui/pt/floater_moveview.xml | 20 +- .../skins/default/xui/pt/floater_my_friends.xml | 7 + .../skins/default/xui/pt/floater_openobject.xml | 10 +- .../skins/default/xui/pt/floater_post_process.xml | 53 + .../skins/default/xui/pt/floater_postcard.xml | 2 +- .../skins/default/xui/pt/floater_preferences.xml | 12 +- .../default/xui/pt/floater_preview_animation.xml | 10 +- .../default/xui/pt/floater_preview_classified.xml | 2 +- .../skins/default/xui/pt/floater_preview_event.xml | 2 +- .../default/xui/pt/floater_preview_gesture.xml | 16 +- .../skins/default/xui/pt/floater_preview_sound.xml | 12 +- .../skins/default/xui/pt/floater_report_abuse.xml | 31 +- .../skins/default/xui/pt/floater_script_debug.xml | 6 +- .../skins/default/xui/pt/floater_script_queue.xml | 6 +- .../skins/default/xui/pt/floater_script_search.xml | 16 +- .../skins/default/xui/pt/floater_select_key.xml | 7 + .../skins/default/xui/pt/floater_sell_land.xml | 20 +- .../default/xui/pt/floater_settings_debug.xml | 18 +- .../skins/default/xui/pt/floater_snapshot.xml | 12 +- .../skins/default/xui/pt/floater_sound_preview.xml | 23 +- .../skins/default/xui/pt/floater_telehub.xml | 15 +- .../skins/default/xui/pt/floater_texture_ctrl.xml | 1 - .../newview/skins/default/xui/pt/floater_tools.xml | 72 +- .../skins/default/xui/pt/floater_top_objects.xml | 12 +- indra/newview/skins/default/xui/pt/floater_tos.xml | 2 +- .../skins/default/xui/pt/floater_url_entry.xml | 2 +- .../default/xui/pt/floater_wearable_save_as.xml | 10 +- .../skins/default/xui/pt/floater_world_map.xml | 65 +- .../skins/default/xui/pt/menu_inventory.xml | 116 +- indra/newview/skins/default/xui/pt/menu_viewer.xml | 66 +- .../newview/skins/default/xui/pt/notifications.xml | 5748 +++++++++++++++++++ .../skins/default/xui/pt/panel_audio_device.xml | 10 + .../newview/skins/default/xui/pt/panel_friends.xml | 16 +- .../skins/default/xui/pt/panel_group_general.xml | 38 +- .../skins/default/xui/pt/panel_group_invite.xml | 8 +- .../default/xui/pt/panel_group_land_money.xml | 17 +- .../skins/default/xui/pt/panel_group_notices.xml | 47 +- .../skins/default/xui/pt/panel_group_roles.xml | 65 +- .../newview/skins/default/xui/pt/panel_groups.xml | 16 + indra/newview/skins/default/xui/pt/panel_login.xml | 4 +- .../default/xui/pt/panel_preferences_chat.xml | 15 +- .../default/xui/pt/panel_preferences_general.xml | 17 +- .../default/xui/pt/panel_preferences_graphics1.xml | 39 +- .../skins/default/xui/pt/panel_region_covenant.xml | 29 +- .../skins/default/xui/pt/panel_region_debug.xml | 18 +- .../skins/default/xui/pt/panel_region_estate.xml | 24 +- .../skins/default/xui/pt/panel_region_general.xml | 20 +- .../skins/default/xui/pt/panel_region_terrain.xml | 43 +- .../skins/default/xui/pt/panel_scrolling_param.xml | 10 +- .../skins/default/xui/pt/panel_status_bar.xml | 20 +- indra/newview/skins/default/xui/pt/strings.xml | 16 +- .../skins/default/xui/pt/teleport_strings.xml | 26 +- indra/newview/viewer_manifest.py | 5 +- 586 files changed, 70884 insertions(+), 6000 deletions(-) create mode 100644 indra/newview/llproductinforequest.cpp create mode 100644 indra/newview/llproductinforequest.h create mode 100644 indra/newview/skins/default/xui/da/floater_env_settings.xml create mode 100644 indra/newview/skins/default/xui/da/floater_gesture.xml create mode 100644 indra/newview/skins/default/xui/da/floater_hardware_settings.xml create mode 100644 indra/newview/skins/default/xui/da/floater_hud.xml create mode 100644 indra/newview/skins/default/xui/da/floater_im.xml create mode 100644 indra/newview/skins/default/xui/da/floater_image_preview.xml create mode 100644 indra/newview/skins/default/xui/da/floater_inspect.xml create mode 100644 indra/newview/skins/default/xui/da/floater_inventory_view_finder.xml create mode 100644 indra/newview/skins/default/xui/da/floater_mem_leaking.xml create mode 100644 indra/newview/skins/default/xui/da/floater_region_info.xml create mode 100644 indra/newview/skins/default/xui/da/floater_top_objects.xml create mode 100644 indra/newview/skins/default/xui/da/floater_url_entry.xml create mode 100644 indra/newview/skins/default/xui/da/floater_water.xml create mode 100644 indra/newview/skins/default/xui/da/floater_windlight_options.xml create mode 100644 indra/newview/skins/default/xui/da/mime_types.xml create mode 100644 indra/newview/skins/default/xui/da/notifications.xml create mode 100644 indra/newview/skins/default/xui/da/panel_audio_device.xml create mode 100644 indra/newview/skins/default/xui/da/panel_friends.xml create mode 100644 indra/newview/skins/default/xui/da/panel_group_general.xml create mode 100644 indra/newview/skins/default/xui/da/panel_group_invite.xml create mode 100644 indra/newview/skins/default/xui/da/panel_group_land_money.xml create mode 100644 indra/newview/skins/default/xui/da/panel_group_notices.xml create mode 100644 indra/newview/skins/default/xui/da/panel_group_roles.xml create mode 100644 indra/newview/skins/default/xui/da/panel_groups.xml create mode 100644 indra/newview/skins/default/xui/da/panel_region_covenant.xml create mode 100644 indra/newview/skins/default/xui/da/panel_region_debug.xml create mode 100644 indra/newview/skins/default/xui/da/panel_region_estate.xml create mode 100644 indra/newview/skins/default/xui/da/panel_region_general.xml create mode 100644 indra/newview/skins/default/xui/da/panel_region_terrain.xml create mode 100644 indra/newview/skins/default/xui/da/panel_region_texture.xml create mode 100644 indra/newview/skins/default/xui/da/panel_scrolling_param.xml create mode 100644 indra/newview/skins/default/xui/da/panel_status_bar.xml create mode 100644 indra/newview/skins/default/xui/da/role_actions.xml create mode 100644 indra/newview/skins/default/xui/da/teleport_strings.xml create mode 100644 indra/newview/skins/default/xui/de/notifications.xml create mode 100644 indra/newview/skins/default/xui/es/floater_beacons.xml create mode 100644 indra/newview/skins/default/xui/es/floater_camera.xml create mode 100644 indra/newview/skins/default/xui/es/floater_day_cycle_options.xml create mode 100644 indra/newview/skins/default/xui/es/floater_device_settings.xml create mode 100644 indra/newview/skins/default/xui/es/floater_env_settings.xml create mode 100644 indra/newview/skins/default/xui/es/floater_hardware_settings.xml create mode 100644 indra/newview/skins/default/xui/es/floater_hud.xml create mode 100644 indra/newview/skins/default/xui/es/floater_inspect.xml create mode 100644 indra/newview/skins/default/xui/es/floater_joystick.xml create mode 100644 indra/newview/skins/default/xui/es/floater_lagmeter.xml create mode 100644 indra/newview/skins/default/xui/es/floater_lsl_guide.xml create mode 100644 indra/newview/skins/default/xui/es/floater_media_browser.xml create mode 100644 indra/newview/skins/default/xui/es/floater_mem_leaking.xml create mode 100644 indra/newview/skins/default/xui/es/floater_mute_object.xml create mode 100644 indra/newview/skins/default/xui/es/floater_my_friends.xml create mode 100644 indra/newview/skins/default/xui/es/floater_post_process.xml create mode 100644 indra/newview/skins/default/xui/es/floater_preview_classified.xml create mode 100644 indra/newview/skins/default/xui/es/floater_preview_event.xml create mode 100644 indra/newview/skins/default/xui/es/floater_region_info.xml create mode 100644 indra/newview/skins/default/xui/es/floater_select_key.xml create mode 100644 indra/newview/skins/default/xui/es/floater_url_entry.xml create mode 100644 indra/newview/skins/default/xui/es/floater_water.xml create mode 100644 indra/newview/skins/default/xui/es/floater_windlight_options.xml create mode 100644 indra/newview/skins/default/xui/es/menu_login.xml create mode 100644 indra/newview/skins/default/xui/es/menu_slurl.xml create mode 100644 indra/newview/skins/default/xui/es/mime_types.xml create mode 100644 indra/newview/skins/default/xui/es/notifications.xml create mode 100644 indra/newview/skins/default/xui/es/panel_audio_device.xml create mode 100644 indra/newview/skins/default/xui/es/panel_friends.xml create mode 100644 indra/newview/skins/default/xui/es/panel_groups.xml create mode 100644 indra/newview/skins/default/xui/es/strings.xml create mode 100644 indra/newview/skins/default/xui/es/teleport_strings.xml create mode 100644 indra/newview/skins/default/xui/fr/floater_bulk_perms.xml create mode 100644 indra/newview/skins/default/xui/fr/floater_notification.xml create mode 100644 indra/newview/skins/default/xui/fr/floater_notifications_console.xml create mode 100644 indra/newview/skins/default/xui/fr/floater_perm_prefs.xml create mode 100644 indra/newview/skins/default/xui/fr/notifications.xml create mode 100644 indra/newview/skins/default/xui/fr/panel_notifications_channel.xml create mode 100644 indra/newview/skins/default/xui/it/floater_about.xml create mode 100644 indra/newview/skins/default/xui/it/floater_about_land.xml create mode 100644 indra/newview/skins/default/xui/it/floater_animation_preview.xml create mode 100644 indra/newview/skins/default/xui/it/floater_auction.xml create mode 100644 indra/newview/skins/default/xui/it/floater_avatar_picker.xml create mode 100644 indra/newview/skins/default/xui/it/floater_avatar_textures.xml create mode 100644 indra/newview/skins/default/xui/it/floater_beacons.xml create mode 100644 indra/newview/skins/default/xui/it/floater_build_options.xml create mode 100644 indra/newview/skins/default/xui/it/floater_bumps.xml create mode 100644 indra/newview/skins/default/xui/it/floater_buy_contents.xml create mode 100644 indra/newview/skins/default/xui/it/floater_buy_currency.xml create mode 100644 indra/newview/skins/default/xui/it/floater_buy_land.xml create mode 100644 indra/newview/skins/default/xui/it/floater_buy_object.xml create mode 100644 indra/newview/skins/default/xui/it/floater_camera.xml create mode 100644 indra/newview/skins/default/xui/it/floater_choose_group.xml create mode 100644 indra/newview/skins/default/xui/it/floater_color_picker.xml create mode 100644 indra/newview/skins/default/xui/it/floater_critical.xml create mode 100644 indra/newview/skins/default/xui/it/floater_customize.xml create mode 100644 indra/newview/skins/default/xui/it/floater_day_cycle_options.xml create mode 100644 indra/newview/skins/default/xui/it/floater_device_settings.xml create mode 100644 indra/newview/skins/default/xui/it/floater_env_settings.xml create mode 100644 indra/newview/skins/default/xui/it/floater_gesture.xml create mode 100644 indra/newview/skins/default/xui/it/floater_hardware_settings.xml create mode 100644 indra/newview/skins/default/xui/it/floater_hud.xml create mode 100644 indra/newview/skins/default/xui/it/floater_im.xml create mode 100644 indra/newview/skins/default/xui/it/floater_image_preview.xml create mode 100644 indra/newview/skins/default/xui/it/floater_inspect.xml create mode 100644 indra/newview/skins/default/xui/it/floater_inventory.xml create mode 100644 indra/newview/skins/default/xui/it/floater_inventory_item_properties.xml create mode 100644 indra/newview/skins/default/xui/it/floater_inventory_view_finder.xml create mode 100644 indra/newview/skins/default/xui/it/floater_joystick.xml create mode 100644 indra/newview/skins/default/xui/it/floater_lagmeter.xml create mode 100644 indra/newview/skins/default/xui/it/floater_land_holdings.xml create mode 100644 indra/newview/skins/default/xui/it/floater_live_lsleditor.xml create mode 100644 indra/newview/skins/default/xui/it/floater_lsl_guide.xml create mode 100644 indra/newview/skins/default/xui/it/floater_media_browser.xml create mode 100644 indra/newview/skins/default/xui/it/floater_mem_leaking.xml create mode 100644 indra/newview/skins/default/xui/it/floater_moveview.xml create mode 100644 indra/newview/skins/default/xui/it/floater_mute_object.xml create mode 100644 indra/newview/skins/default/xui/it/floater_my_friends.xml create mode 100644 indra/newview/skins/default/xui/it/floater_openobject.xml create mode 100644 indra/newview/skins/default/xui/it/floater_pay.xml create mode 100644 indra/newview/skins/default/xui/it/floater_pay_object.xml create mode 100644 indra/newview/skins/default/xui/it/floater_post_process.xml create mode 100644 indra/newview/skins/default/xui/it/floater_postcard.xml create mode 100644 indra/newview/skins/default/xui/it/floater_preferences.xml create mode 100644 indra/newview/skins/default/xui/it/floater_preview_animation.xml create mode 100644 indra/newview/skins/default/xui/it/floater_preview_classified.xml create mode 100644 indra/newview/skins/default/xui/it/floater_preview_event.xml create mode 100644 indra/newview/skins/default/xui/it/floater_preview_gesture.xml create mode 100644 indra/newview/skins/default/xui/it/floater_preview_notecard.xml create mode 100644 indra/newview/skins/default/xui/it/floater_preview_sound.xml create mode 100644 indra/newview/skins/default/xui/it/floater_preview_texture.xml create mode 100644 indra/newview/skins/default/xui/it/floater_region_info.xml create mode 100644 indra/newview/skins/default/xui/it/floater_report_abuse.xml create mode 100644 indra/newview/skins/default/xui/it/floater_script_debug.xml create mode 100644 indra/newview/skins/default/xui/it/floater_script_preview.xml create mode 100644 indra/newview/skins/default/xui/it/floater_script_queue.xml create mode 100644 indra/newview/skins/default/xui/it/floater_script_search.xml create mode 100644 indra/newview/skins/default/xui/it/floater_select_key.xml create mode 100644 indra/newview/skins/default/xui/it/floater_sell_land.xml create mode 100644 indra/newview/skins/default/xui/it/floater_settings_debug.xml create mode 100644 indra/newview/skins/default/xui/it/floater_snapshot.xml create mode 100644 indra/newview/skins/default/xui/it/floater_sound_preview.xml create mode 100644 indra/newview/skins/default/xui/it/floater_telehub.xml create mode 100644 indra/newview/skins/default/xui/it/floater_texture_ctrl.xml create mode 100644 indra/newview/skins/default/xui/it/floater_tools.xml create mode 100644 indra/newview/skins/default/xui/it/floater_top_objects.xml create mode 100644 indra/newview/skins/default/xui/it/floater_tos.xml create mode 100644 indra/newview/skins/default/xui/it/floater_url_entry.xml create mode 100644 indra/newview/skins/default/xui/it/floater_water.xml create mode 100644 indra/newview/skins/default/xui/it/floater_wearable_save_as.xml create mode 100644 indra/newview/skins/default/xui/it/floater_windlight_options.xml create mode 100644 indra/newview/skins/default/xui/it/floater_world_map.xml create mode 100644 indra/newview/skins/default/xui/it/menu_inventory.xml create mode 100644 indra/newview/skins/default/xui/it/menu_login.xml create mode 100644 indra/newview/skins/default/xui/it/menu_slurl.xml create mode 100644 indra/newview/skins/default/xui/it/menu_viewer.xml create mode 100644 indra/newview/skins/default/xui/it/mime_types.xml create mode 100644 indra/newview/skins/default/xui/it/notifications.xml create mode 100644 indra/newview/skins/default/xui/it/panel_audio_device.xml create mode 100644 indra/newview/skins/default/xui/it/panel_friends.xml create mode 100644 indra/newview/skins/default/xui/it/panel_group_general.xml create mode 100644 indra/newview/skins/default/xui/it/panel_group_invite.xml create mode 100644 indra/newview/skins/default/xui/it/panel_group_land_money.xml create mode 100644 indra/newview/skins/default/xui/it/panel_group_notices.xml create mode 100644 indra/newview/skins/default/xui/it/panel_group_roles.xml create mode 100644 indra/newview/skins/default/xui/it/panel_groups.xml create mode 100644 indra/newview/skins/default/xui/it/panel_login.xml create mode 100644 indra/newview/skins/default/xui/it/panel_preferences_chat.xml create mode 100644 indra/newview/skins/default/xui/it/panel_preferences_general.xml create mode 100644 indra/newview/skins/default/xui/it/panel_preferences_graphics1.xml create mode 100644 indra/newview/skins/default/xui/it/panel_region_covenant.xml create mode 100644 indra/newview/skins/default/xui/it/panel_region_debug.xml create mode 100644 indra/newview/skins/default/xui/it/panel_region_estate.xml create mode 100644 indra/newview/skins/default/xui/it/panel_region_general.xml create mode 100644 indra/newview/skins/default/xui/it/panel_region_terrain.xml create mode 100644 indra/newview/skins/default/xui/it/panel_region_texture.xml create mode 100644 indra/newview/skins/default/xui/it/panel_scrolling_param.xml create mode 100644 indra/newview/skins/default/xui/it/panel_status_bar.xml create mode 100644 indra/newview/skins/default/xui/it/strings.xml create mode 100644 indra/newview/skins/default/xui/it/teleport_strings.xml create mode 100644 indra/newview/skins/default/xui/ja/floater_bulk_perms.xml create mode 100644 indra/newview/skins/default/xui/ja/floater_notification.xml create mode 100644 indra/newview/skins/default/xui/ja/floater_notifications_console.xml create mode 100644 indra/newview/skins/default/xui/ja/floater_perm_prefs.xml create mode 100644 indra/newview/skins/default/xui/ja/notifications.xml create mode 100644 indra/newview/skins/default/xui/ja/panel_notifications_channel.xml create mode 100644 indra/newview/skins/default/xui/nl/floater_about.xml create mode 100644 indra/newview/skins/default/xui/nl/floater_about_land.xml create mode 100644 indra/newview/skins/default/xui/nl/floater_auction.xml create mode 100644 indra/newview/skins/default/xui/nl/floater_beacons.xml create mode 100644 indra/newview/skins/default/xui/nl/floater_bumps.xml create mode 100644 indra/newview/skins/default/xui/nl/floater_buy_contents.xml create mode 100644 indra/newview/skins/default/xui/nl/floater_buy_currency.xml create mode 100644 indra/newview/skins/default/xui/nl/floater_buy_land.xml create mode 100644 indra/newview/skins/default/xui/nl/floater_buy_object.xml create mode 100644 indra/newview/skins/default/xui/nl/floater_camera.xml create mode 100644 indra/newview/skins/default/xui/nl/floater_choose_group.xml create mode 100644 indra/newview/skins/default/xui/nl/floater_color_picker.xml create mode 100644 indra/newview/skins/default/xui/nl/floater_critical.xml create mode 100644 indra/newview/skins/default/xui/nl/floater_customize.xml create mode 100644 indra/newview/skins/default/xui/nl/floater_env_settings.xml create mode 100644 indra/newview/skins/default/xui/nl/floater_gesture.xml create mode 100644 indra/newview/skins/default/xui/nl/floater_hud.xml create mode 100644 indra/newview/skins/default/xui/nl/floater_im.xml create mode 100644 indra/newview/skins/default/xui/nl/floater_inspect.xml create mode 100644 indra/newview/skins/default/xui/nl/floater_inventory.xml create mode 100644 indra/newview/skins/default/xui/nl/floater_joystick.xml create mode 100644 indra/newview/skins/default/xui/nl/floater_lagmeter.xml create mode 100644 indra/newview/skins/default/xui/nl/floater_lsl_guide.xml create mode 100644 indra/newview/skins/default/xui/nl/floater_mem_leaking.xml create mode 100644 indra/newview/skins/default/xui/nl/floater_moveview.xml create mode 100644 indra/newview/skins/default/xui/nl/floater_mute_object.xml create mode 100644 indra/newview/skins/default/xui/nl/floater_my_friends.xml create mode 100644 indra/newview/skins/default/xui/nl/floater_openobject.xml create mode 100644 indra/newview/skins/default/xui/nl/floater_pay.xml create mode 100644 indra/newview/skins/default/xui/nl/floater_pay_object.xml create mode 100644 indra/newview/skins/default/xui/nl/floater_post_process.xml create mode 100644 indra/newview/skins/default/xui/nl/floater_postcard.xml create mode 100644 indra/newview/skins/default/xui/nl/floater_preferences.xml create mode 100644 indra/newview/skins/default/xui/nl/floater_region_info.xml create mode 100644 indra/newview/skins/default/xui/nl/floater_report_abuse.xml create mode 100644 indra/newview/skins/default/xui/nl/floater_script_debug.xml create mode 100644 indra/newview/skins/default/xui/nl/floater_script_queue.xml create mode 100644 indra/newview/skins/default/xui/nl/floater_select_key.xml create mode 100644 indra/newview/skins/default/xui/nl/floater_sell_land.xml create mode 100644 indra/newview/skins/default/xui/nl/floater_snapshot.xml create mode 100644 indra/newview/skins/default/xui/nl/floater_telehub.xml create mode 100644 indra/newview/skins/default/xui/nl/floater_texture_ctrl.xml create mode 100644 indra/newview/skins/default/xui/nl/floater_tools.xml create mode 100644 indra/newview/skins/default/xui/nl/floater_top_objects.xml create mode 100644 indra/newview/skins/default/xui/nl/floater_tos.xml create mode 100644 indra/newview/skins/default/xui/nl/floater_url_entry.xml create mode 100644 indra/newview/skins/default/xui/nl/floater_water.xml create mode 100644 indra/newview/skins/default/xui/nl/floater_world_map.xml create mode 100644 indra/newview/skins/default/xui/nl/menu_inventory.xml create mode 100644 indra/newview/skins/default/xui/nl/menu_login.xml create mode 100644 indra/newview/skins/default/xui/nl/menu_slurl.xml create mode 100644 indra/newview/skins/default/xui/nl/menu_viewer.xml create mode 100644 indra/newview/skins/default/xui/nl/mime_types.xml create mode 100644 indra/newview/skins/default/xui/nl/notifications.xml create mode 100644 indra/newview/skins/default/xui/nl/panel_audio_device.xml create mode 100644 indra/newview/skins/default/xui/nl/panel_friends.xml create mode 100644 indra/newview/skins/default/xui/nl/panel_group_general.xml create mode 100644 indra/newview/skins/default/xui/nl/panel_group_invite.xml create mode 100644 indra/newview/skins/default/xui/nl/panel_group_notices.xml create mode 100644 indra/newview/skins/default/xui/nl/panel_group_roles.xml create mode 100644 indra/newview/skins/default/xui/nl/panel_groups.xml create mode 100644 indra/newview/skins/default/xui/nl/panel_login.xml create mode 100644 indra/newview/skins/default/xui/nl/panel_region_debug.xml create mode 100644 indra/newview/skins/default/xui/nl/panel_region_estate.xml create mode 100644 indra/newview/skins/default/xui/nl/panel_region_general.xml create mode 100644 indra/newview/skins/default/xui/nl/panel_region_terrain.xml create mode 100644 indra/newview/skins/default/xui/nl/panel_region_texture.xml create mode 100644 indra/newview/skins/default/xui/nl/panel_status_bar.xml create mode 100644 indra/newview/skins/default/xui/nl/strings.xml create mode 100644 indra/newview/skins/default/xui/nl/teleport_strings.xml create mode 100644 indra/newview/skins/default/xui/pl/notifications.xml create mode 100644 indra/newview/skins/default/xui/pt/floater_device_settings.xml create mode 100644 indra/newview/skins/default/xui/pt/floater_my_friends.xml create mode 100644 indra/newview/skins/default/xui/pt/floater_post_process.xml create mode 100644 indra/newview/skins/default/xui/pt/floater_select_key.xml create mode 100644 indra/newview/skins/default/xui/pt/notifications.xml create mode 100644 indra/newview/skins/default/xui/pt/panel_groups.xml (limited to 'indra/newview') diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index fa7d226f16..668b710c22 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -141,7 +141,6 @@ set(viewer_SOURCE_FILES llfloaterchat.cpp llfloaterchatterbox.cpp llfloaterclassified.cpp - llfloaterclothing.cpp llfloatercolorpicker.cpp llfloatercustomize.cpp llfloaterdaycycle.cpp @@ -311,6 +310,7 @@ set(viewer_SOURCE_FILES llpreviewscript.cpp llpreviewsound.cpp llpreviewtexture.cpp + llproductinforequest.cpp llprogressview.cpp llregionposition.cpp llremoteparcelrequest.cpp @@ -545,7 +545,6 @@ set(viewer_HEADER_FILES llfloaterchat.h llfloaterchatterbox.h llfloaterclassified.h - llfloaterclothing.h llfloatercolorpicker.h llfloatercustomize.h llfloaterdaycycle.h @@ -715,6 +714,7 @@ set(viewer_HEADER_FILES llpreviewscript.h llpreviewsound.h llpreviewtexture.h + llproductinforequest.h llprogressview.h llregionposition.h llremoteparcelrequest.h diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index d90882fb96..0081893869 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -1451,17 +1451,6 @@ Value 1 - ClothingBtnState - - Comment - - Persist - 0 - Type - Boolean - Value - 0 - CmdLineDisableVoice Comment @@ -11640,7 +11629,7 @@ Type Boolean Value - 0 + 1 WaterEditPresets diff --git a/indra/newview/gpu_table.txt b/indra/newview/gpu_table.txt index 748400532f..56de9c610a 100644 --- a/indra/newview/gpu_table.txt +++ b/indra/newview/gpu_table.txt @@ -90,14 +90,15 @@ ATI Radeon HD 2300 .*ATI.*Radeon HD 23.* 0 1 ATI Radeon HD 2400 .*ATI.*Radeon HD.*24.* 1 1 ATI Radeon HD 2600 .*ATI.*Radeon HD 26.* 2 1 ATI Radeon HD 2900 .*ATI.*Radeon HD 29.* 3 1 -ATI Radeon HD 3200 .*ATI.*Radeon HD.*32.* 1 1 +ATI Radeon HD 3200 .*ATI.*Radeon.*HD.*32.* 1 1 ATI Radeon HD 3300 .*ATI.*Radeon HD.*33.* 1 1 ATI Radeon HD 3400 .*ATI.*Radeon HD.*34.* 1 1 ATI Radeon HD 3600 .*ATI.*Radeon HD.*36.* 3 1 ATI Radeon HD 3800 .*ATI.*Radeon HD.*38.* 3 1 ATI Radeon HD 4300 .*ATI.*Radeon HD 43.* 1 1 +ATI Radeon HD 4500 .*ATI.*Radeon HD 45.* 2 1 ATI Radeon HD 4600 .*ATI.*Radeon HD 46.* 3 1 -ATI Radeon HD 4800 .*ATI.*Radeon HD.*48.* 3 1 +ATI Radeon HD 4800 .*ATI.*Radeon.*HD.*48.* 3 1 ATI Radeon OpenGL .*ATI.*Radeon OpenGL.* 0 0 ATI Radeon 2100 .*ATI.*Radeon 21.* 0 1 ATI Radeon 3100 .*ATI.*Radeon 31.* 1 1 @@ -135,6 +136,7 @@ ATI Radeon X900 .*ATI.*Radeon X9.* 2 1 ATI Radeon Xpress .*ATI.*Radeon Xpress.* 0 0 ATI Rage 128 .*ATI.*Rage 128.* 0 1 ATI RV250 .*ATI.*RV250.* 0 1 +ATI RV380 .*ATI.*RV380.* 0 1 ATI RV530 .*ATI.*RV530.* 1 1 ATI RX700 .*ATI.*RX700.* 1 1 Intel X3100 .*Intel.*X3100.* 0 1 @@ -160,8 +162,9 @@ Intel Montara .*Intel.*Montara.* 0 0 Intel Springdale .*Intel.*Springdale.* 0 0 Matrox .*Matrox.* 0 0 Mesa .*Mesa.* 0 0 -NVIDIA GTX 260 .*NVIDIA.*GeForce.*GTX.*260.* 3 1 -NVIDIA GTX 280 .*NVIDIA.*GeForce.*GTX.*280.* 3 1 +NVIDIA GTX 260 .*NVIDIA.*GeForce.*GTX.*26.* 3 1 +NVIDIA GTX 280 .*NVIDIA.*GeForce.*GTX.*28.* 3 1 +NVIDIA GTX 290 .*NVIDIA.*GeForce.*GTX.*29.* 3 1 NVIDIA C51 .*NVIDIA.*C51.* 0 1 NVIDIA G72 .*NVIDIA.*G72.* 1 1 NVIDIA G73 .*NVIDIA.*G73.* 1 1 @@ -187,7 +190,7 @@ NVIDIA GeForce 7300 .*NVIDIA.*GeForce 73.* 1 1 NVIDIA GeForce 7500 .*NVIDIA.*GeForce 75.* 1 1 NVIDIA GeForce 7600 .*NVIDIA.*GeForce 76.* 2 1 NVIDIA GeForce 7800 .*NVIDIA.*GeForce.*78.* 2 1 -NVIDIA GeForce 7900 .*NVIDIA.*GeForce 79.* 2 1 +NVIDIA GeForce 7900 .*NVIDIA.*GeForce.*79.* 2 1 NVIDIA GeForce 8100 .*NVIDIA.*GeForce 81.* 1 1 NVIDIA GeForce 8200 .*NVIDIA.*GeForce 82.* 1 1 NVIDIA GeForce 8300 .*NVIDIA.*GeForce 83.* 1 1 @@ -205,8 +208,8 @@ NVIDIA GeForce 9700M .*NVIDIA.*GeForce 9700M.* 2 1 NVIDIA GeForce 9300 .*NVIDIA.*GeForce 93.* 1 1 NVIDIA GeForce 9400 .*GeForce 94.* 1 1 NVIDIA GeForce 9500 .*NVIDIA.*GeForce 95.* 2 1 -NVIDIA GeForce 9600 .*NVIDIA.*GeForce 96.* 3 1 -NVIDIA GeForce 9800 .*NVIDIA.*GeForce 98.* 3 1 +NVIDIA GeForce 9600 .*NVIDIA.*GeForce.*96.* 3 1 +NVIDIA GeForce 9800 .*NVIDIA.*GeForce.*98.* 3 1 NVIDIA GeForce FX 5100 .*NVIDIA.*GeForce FX 51.* 0 1 NVIDIA GeForce FX 5200 .*NVIDIA.*GeForce FX 52.* 0 1 NVIDIA GeForce FX 5500 .*NVIDIA.*GeForce FX 55.* 0 1 @@ -236,8 +239,6 @@ NVIDIA GeForce Go 7600 .*NVIDIA.*GeForce Go 76.* 2 1 NVIDIA GeForce Go 7700 .*NVIDIA.*GeForce Go 77.* 2 1 NVIDIA GeForce Go 7800 .*NVIDIA.*GeForce Go 78.* 2 1 NVIDIA GeForce Go 7900 .*NVIDIA.*GeForce Go 79.* 2 1 -NVIDIA GeForce GTX 260 .*NVIDIA.*GeForce GTX 26.* 3 1 -NVIDIA GeForce GTX 280 .*NVIDIA.*GeForce GTX 28.* 3 1 NVIDIA D9M .*D9M.* 1 1 NVIDIA G84 .*G84.* 1 1 NVIDIA G92 .*G92.* 3 1 @@ -249,6 +250,7 @@ NVIDIA GeForce PCX .*GeForce PCX.* 0 1 NVIDIA Generic .*NVIDIA.*Unknown.* 0 0 NVIDIA NV17 .*GeForce NV17.* 0 1 NVIDIA NV34 .*NVIDIA.*NV34.* 0 1 +NVIDIA NV35 .*NVIDIA.*NV35.* 0 1 NVIDIA NV36 .*GeForce NV36.* 1 1 NVIDIA NV43 .*NVIDIA.*NV43.* 1 1 NVIDIA NV44 .*NVIDIA.*NV44.* 1 1 diff --git a/indra/newview/installers/windows/installer_template.nsi b/indra/newview/installers/windows/installer_template.nsi index 483568f974..87218008bd 100644 --- a/indra/newview/installers/windows/installer_template.nsi +++ b/indra/newview/installers/windows/installer_template.nsi @@ -228,13 +228,18 @@ FunctionEnd Function CheckNetworkConnection Push $0 Push $1 + Push $2 # Option value for GetOptions DetailPrint $(CheckNetworkConnectionDP) + ; Look for a tag value from the stub installer, used for statistics + ; to correlate installs. Default to "" if not found on command line. + StrCpy $2 "" + ${GetOptions} $COMMANDLINE "/STUBTAG=" $2 GetTempFileName $0 !define HTTP_TIMEOUT 5000 ; milliseconds ; Don't show secondary progress bar, this will be quick. NSISdl::download_quiet \ /TIMEOUT=${HTTP_TIMEOUT} \ - "http://install.secondlife.com/check/?v=${VERSION_LONG}" \ + "http://install.secondlife.com/check/?stubtag=$2&version=${VERSION_LONG}" \ $0 Pop $1 ; Return value, either "success", "cancel" or an error message ; MessageBox MB_OK "Download result: $1" @@ -242,6 +247,7 @@ Function CheckNetworkConnection ; StrCmp $1 "success" +2 ; DetailPrint "Connection failed: $1" Delete $0 ; temporary file + Pop $2 Pop $1 Pop $0 Return diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp index 3b534ce5a7..9785940ff6 100644 --- a/indra/newview/llagent.cpp +++ b/indra/newview/llagent.cpp @@ -217,7 +217,6 @@ LLAgent gAgent; // // Statics // -BOOL LLAgent::sDebugDisplayTarget = FALSE; const F32 LLAgent::TYPING_TIMEOUT_SECS = 5.f; @@ -4428,7 +4427,8 @@ void LLAgent::setFocusGlobal(const LLVector3d& focus, const LLUUID &object_id) // for attachments, make offset relative to avatar, not the attachment if (mFocusObject->isAttachment()) { - while (!mFocusObject->isAvatar()) + while (mFocusObject.notNull() // DEV-29123 - can crash with a messed-up attachment + && !mFocusObject->isAvatar()) { mFocusObject = (LLViewerObject*) mFocusObject->getParent(); } @@ -4842,6 +4842,36 @@ bool LLAgent::canAccessAdult() const return mAgentAccess.canAccessAdult(); } +bool LLAgent::canAccessMaturityInRegion( U64 region_handle ) const +{ + LLViewerRegion *regionp = LLWorld::getInstance()->getRegionFromHandle( region_handle ); + if( regionp ) + { + switch( regionp->getSimAccess() ) + { + case SIM_ACCESS_MATURE: + if( !canAccessMature() ) + return false; + break; + case SIM_ACCESS_ADULT: + if( !canAccessAdult() ) + return false; + break; + default: + // Oh, go on and hear the silly noises. + break; + } + } + + return true; +} + +bool LLAgent::canAccessMaturityAtGlobal( LLVector3d pos_global ) const +{ + U64 region_handle = to_region_handle_global( pos_global.mdV[0], pos_global.mdV[1] ); + return canAccessMaturityInRegion( region_handle ); +} + bool LLAgent::prefersPG() const { return mAgentAccess.prefersPG(); @@ -6431,6 +6461,8 @@ void LLAgent::saveWearable( EWearableType type, BOOL send_update ) addWearableToAgentInventory(cb, new_wearable); return; } + + getAvatarObject()->wearableUpdated( type ); if( send_update ) { diff --git a/indra/newview/llagent.h b/indra/newview/llagent.h index fefb2a1d0b..226c78e631 100644 --- a/indra/newview/llagent.h +++ b/indra/newview/llagent.h @@ -208,7 +208,7 @@ public: void heardChat(const LLUUID& id); void lookAtLastChat(); - F32 getTypingTime() { return mTypingTimer.getElapsedTimeF32(); } + F32 getTypingTime() { return mTypingTimer.getElapsedTimeF32(); } void setAFK(); void clearAFK(); @@ -258,6 +258,8 @@ public: bool wantsPGOnly() const; bool canAccessMature() const; bool canAccessAdult() const; + bool canAccessMaturityInRegion( U64 region_handle ) const; + bool canAccessMaturityAtGlobal( LLVector3d pos_global ) const; bool prefersPG() const; bool prefersMature() const; bool prefersAdult() const; @@ -743,7 +745,6 @@ public: BOOL mInitialized; - static BOOL sDebugDisplayTarget; S32 mNumPendingQueries; S32* mActiveCacheQueries; diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 43800c67fa..f2154a05dc 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -848,7 +848,6 @@ bool LLAppViewer::mainLoop() try { LLFastTimer t(LLFastTimer::FTM_FRAME); - pingMainloopTimeout("Main:MiscNativeWindowEvents"); { @@ -1999,38 +1998,9 @@ bool LLAppViewer::initConfiguration() } initMarkerFile(); - -#if LL_SEND_CRASH_REPORTS - if (gLastExecEvent == LAST_EXEC_FROZE) - { - llinfos << "Last execution froze, requesting to send crash report." << llendl; - // - // Pop up a freeze or crash warning dialog - // - std::ostringstream msg; - msg << gSecondLife - << " appears to have frozen or crashed on the previous run.\n" - << "Would you like to send a crash report?"; - std::string alert; - alert = gSecondLife; - alert += " Alert"; - S32 choice = OSMessageBox(msg.str(), - alert, - OSMB_YESNO); - if (OSBTN_YES == choice) - { - llinfos << "Sending crash report." << llendl; - - bool report_freeze = true; - handleCrashReporting(report_freeze); - } - else - { - llinfos << "Not sending crash report." << llendl; - } - } -#endif // #if LL_SEND_CRASH_REPORTS - } + + checkForCrash(); + } else { mSecondInstance = anotherInstanceRunning(); @@ -2048,6 +2018,11 @@ bool LLAppViewer::initConfiguration() } initMarkerFile(); + + if(!mSecondInstance) + { + checkForCrash(); + } } // need to do this here - need to have initialized global settings first @@ -2062,6 +2037,43 @@ bool LLAppViewer::initConfiguration() return true; // Config was successful. } + +void LLAppViewer::checkForCrash(void) +{ + +#if LL_SEND_CRASH_REPORTS + if (gLastExecEvent == LAST_EXEC_FROZE || gLastExecEvent == LAST_EXEC_OTHER_CRASH) + { + llinfos << "Last execution froze, requesting to send crash report." << llendl; + // + // Pop up a freeze or crash warning dialog + // + std::ostringstream msg; + msg << gSecondLife + << " appears to have frozen or crashed on the previous run.\n" + << "Would you like to send a crash report?"; + std::string alert; + alert = gSecondLife; + alert += " Alert"; + S32 choice = OSMessageBox(msg.str(), + alert, + OSMB_YESNO); + if (OSBTN_YES == choice) + { + llinfos << "Sending crash report." << llendl; + + bool report_freeze = true; + handleCrashReporting(report_freeze); + } + else + { + llinfos << "Not sending crash report." << llendl; + } + } +#endif // LL_SEND_CRASH_REPORTS + +} + bool LLAppViewer::initWindow() { LL_INFOS("AppInit") << "Initializing window..." << LL_ENDL; @@ -2397,6 +2409,10 @@ void LLAppViewer::handleViewerCrash() LLError::logToFile(""); +// On Mac, we send the report on the next run, since we need macs crash report +// for a stack trace, so we have to let it the app fail. +#if !LL_DARWIN + // Remove the marker file, since otherwise we'll spawn a process that'll keep it locked if(gDebugInfo["LastExecEvent"].asInteger() == LAST_EXEC_LOGOUT_CRASH) { @@ -2410,6 +2426,8 @@ void LLAppViewer::handleViewerCrash() // Call to pure virtual, handled by platform specific llappviewer instance. pApp->handleCrashReporting(); +#endif //!LL_DARWIN + return; } @@ -2465,6 +2483,13 @@ void LLAppViewer::initMarkerFile() std::string llerror_marker_file = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, LLERROR_MARKER_FILE_NAME); std::string error_marker_file = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, ERROR_MARKER_FILE_NAME); + + if (LLAPRFile::isExist(mMarkerFileName, NULL, LL_APR_RB) && !anotherInstanceRunning()) + { + gLastExecEvent = LAST_EXEC_FROZE; + LL_INFOS("MarkerFile") << "Exec marker found: program froze on previous execution" << LL_ENDL; + } + if(LLAPRFile::isExist(logout_marker_file, NULL, LL_APR_RB)) { LL_INFOS("MarkerFile") << "Last exec LLError crashed, setting LastExecEvent to " << LAST_EXEC_LLERROR_CRASH << LL_ENDL; @@ -2487,18 +2512,12 @@ void LLAppViewer::initMarkerFile() LLAPRFile::remove(llerror_marker_file); LLAPRFile::remove(error_marker_file); - //Freeze case checks + // No new markers if another instance is running. if(anotherInstanceRunning()) { return; } - if (LLAPRFile::isExist(mMarkerFileName, NULL, LL_APR_RB)) - { - gLastExecEvent = LAST_EXEC_FROZE; - LL_INFOS("MarkerFile") << "Exec marker found: program froze on previous execution" << LL_ENDL; - } - // Create the marker file for this execution & lock it apr_status_t s; s = mMarkerFile.open(mMarkerFileName, LL_APR_W, gAPRPoolp); @@ -2873,17 +2892,17 @@ bool LLAppViewer::initCache() gSavedSettings.setU32("VFSSalt", new_salt); // Don't remove VFS after viewer crashes. If user has corrupt data, they can reinstall. JC - gVFS = new LLVFS(new_vfs_index_file, new_vfs_data_file, false, vfs_size_u32, false); - if( VFSVALID_BAD_CORRUPT == gVFS->getValidState() ) + gVFS = LLVFS::createLLVFS(new_vfs_index_file, new_vfs_data_file, false, vfs_size_u32, false); + if( !gVFS ) { - // Try again with fresh files - // (The constructor deletes corrupt files when it finds them.) - LL_WARNS("AppCache") << "VFS corrupt, deleted. Making new VFS." << LL_ENDL; - delete gVFS; - gVFS = new LLVFS(new_vfs_index_file, new_vfs_data_file, false, vfs_size_u32, false); + return false; } - gStaticVFS = new LLVFS(static_vfs_index_file, static_vfs_data_file, true, 0, false); + gStaticVFS = LLVFS::createLLVFS(static_vfs_index_file, static_vfs_data_file, true, 0, false); + if( !gStaticVFS ) + { + return false; + } BOOL success = gVFS->isValid() && gStaticVFS->isValid(); if( !success ) diff --git a/indra/newview/llappviewer.h b/indra/newview/llappviewer.h index fc88c76aaf..a3b84759f5 100644 --- a/indra/newview/llappviewer.h +++ b/indra/newview/llappviewer.h @@ -85,7 +85,8 @@ public: virtual void handleSyncCrashTrace() = 0; // any low-level crash-prep that has to happen in the context of the crashing thread before the crash report is delivered. static void handleViewerCrash(); // Hey! The viewer crashed. Do this, soon. static void handleSyncViewerCrash(); // Hey! The viewer crashed. Do this right NOW in the context of the crashing thread. - + void checkForCrash(); + // Thread accessors static LLTextureCache* getTextureCache() { return sTextureCache; } static LLWorkerThread* getImageDecodeThread() { return sImageDecodeThread; } diff --git a/indra/newview/lldrawpool.h b/indra/newview/lldrawpool.h index b75de02ffc..87c3ccaffe 100644 --- a/indra/newview/lldrawpool.h +++ b/indra/newview/lldrawpool.h @@ -58,12 +58,12 @@ public: POOL_SKY, POOL_WL_SKY, POOL_GROUND, - POOL_INVISIBLE, - POOL_AVATAR, - POOL_WATER, POOL_GRASS, POOL_FULLBRIGHT, POOL_BUMP, + POOL_INVISIBLE, + POOL_AVATAR, + POOL_WATER, POOL_GLOW, POOL_ALPHA, NUM_POOL_TYPES, diff --git a/indra/newview/lldrawpoolavatar.cpp b/indra/newview/lldrawpoolavatar.cpp index 0de21f03f2..80c7d73e6a 100644 --- a/indra/newview/lldrawpoolavatar.cpp +++ b/indra/newview/lldrawpoolavatar.cpp @@ -752,67 +752,6 @@ void LLDrawPoolAvatar::renderAvatars(LLVOAvatar* single_avatar, S32 pass) if( !single_avatar || (avatarp == single_avatar) ) { - if (LLVOAvatar::sShowCollisionVolumes) - { - gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); - avatarp->renderCollisionVolumes(); - } - - if (avatarp->isSelf() && LLAgent::sDebugDisplayTarget) - { - gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); - LLVector3 pos = avatarp->getPositionAgent(); - - gGL.color4f(1.0f, 0.0f, 0.0f, 0.8f); - gGL.begin(LLRender::LINES); - { - gGL.vertex3fv((pos - LLVector3(0.2f, 0.f, 0.f)).mV); - gGL.vertex3fv((pos + LLVector3(0.2f, 0.f, 0.f)).mV); - gGL.vertex3fv((pos - LLVector3(0.f, 0.2f, 0.f)).mV); - gGL.vertex3fv((pos + LLVector3(0.f, 0.2f, 0.f)).mV); - gGL.vertex3fv((pos - LLVector3(0.f, 0.f, 0.2f)).mV); - gGL.vertex3fv((pos + LLVector3(0.f, 0.f, 0.2f)).mV); - }gGL.end(); - - pos = avatarp->mDrawable->getPositionAgent(); - gGL.color4f(1.0f, 0.0f, 0.0f, 0.8f); - gGL.begin(LLRender::LINES); - { - gGL.vertex3fv((pos - LLVector3(0.2f, 0.f, 0.f)).mV); - gGL.vertex3fv((pos + LLVector3(0.2f, 0.f, 0.f)).mV); - gGL.vertex3fv((pos - LLVector3(0.f, 0.2f, 0.f)).mV); - gGL.vertex3fv((pos + LLVector3(0.f, 0.2f, 0.f)).mV); - gGL.vertex3fv((pos - LLVector3(0.f, 0.f, 0.2f)).mV); - gGL.vertex3fv((pos + LLVector3(0.f, 0.f, 0.2f)).mV); - }gGL.end(); - - pos = avatarp->mRoot.getWorldPosition(); - gGL.color4f(1.0f, 1.0f, 1.0f, 0.8f); - gGL.begin(LLRender::LINES); - { - gGL.vertex3fv((pos - LLVector3(0.2f, 0.f, 0.f)).mV); - gGL.vertex3fv((pos + LLVector3(0.2f, 0.f, 0.f)).mV); - gGL.vertex3fv((pos - LLVector3(0.f, 0.2f, 0.f)).mV); - gGL.vertex3fv((pos + LLVector3(0.f, 0.2f, 0.f)).mV); - gGL.vertex3fv((pos - LLVector3(0.f, 0.f, 0.2f)).mV); - gGL.vertex3fv((pos + LLVector3(0.f, 0.f, 0.2f)).mV); - }gGL.end(); - - pos = avatarp->mPelvisp->getWorldPosition(); - gGL.color4f(0.0f, 0.0f, 1.0f, 0.8f); - gGL.begin(LLRender::LINES); - { - gGL.vertex3fv((pos - LLVector3(0.2f, 0.f, 0.f)).mV); - gGL.vertex3fv((pos + LLVector3(0.2f, 0.f, 0.f)).mV); - gGL.vertex3fv((pos - LLVector3(0.f, 0.2f, 0.f)).mV); - gGL.vertex3fv((pos + LLVector3(0.f, 0.2f, 0.f)).mV); - gGL.vertex3fv((pos - LLVector3(0.f, 0.f, 0.2f)).mV); - gGL.vertex3fv((pos + LLVector3(0.f, 0.f, 0.2f)).mV); - }gGL.end(); - - color.setColor(1.0f, 1.0f, 1.0f, 1.0f); - } - avatarp->renderSkinned(AVATAR_RENDER_PASS_SINGLE); } } diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp index e096bc07bd..3dfe6a2820 100644 --- a/indra/newview/llface.cpp +++ b/indra/newview/llface.cpp @@ -932,12 +932,6 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume, { clearState(TEXTURE_ANIM); } - //else if (getVirtualSize() <= 512.f) - //{ - // //vobj->mTextureAnimp->animateTextures(os, ot, ms, mt, r); - // //cos_ang = cos(r); - // //sin_ang = sin(r); - //} else { os = ot = 0.f; diff --git a/indra/newview/llfloaterbuyland.cpp b/indra/newview/llfloaterbuyland.cpp index 8e2d44911c..29506e21d5 100644 --- a/indra/newview/llfloaterbuyland.cpp +++ b/indra/newview/llfloaterbuyland.cpp @@ -1174,7 +1174,7 @@ void LLFloaterBuyLandUI::refreshUI() else if (mParcelBillableArea == mParcelActualArea) { LLStringUtil::format_map_t string_args; - string_args["[AMOUNT]"] = llformat("%d", mParcelActualArea); + string_args["[AMOUNT]"] = llformat("%d ", mParcelActualArea); message += getString("parcel_meters", string_args); } else @@ -1183,13 +1183,13 @@ void LLFloaterBuyLandUI::refreshUI() if (mParcelBillableArea > mParcelActualArea) { LLStringUtil::format_map_t string_args; - string_args["[AMOUNT]"] = llformat("%d", mParcelBillableArea); + string_args["[AMOUNT]"] = llformat("%d ", mParcelBillableArea); message += getString("premium_land", string_args); } else { LLStringUtil::format_map_t string_args; - string_args["[AMOUNT]"] = llformat("%d", mParcelBillableArea); + string_args["[AMOUNT]"] = llformat("%d ", mParcelBillableArea); message += getString("discounted_land", string_args); } } diff --git a/indra/newview/llfloaterimagepreview.cpp b/indra/newview/llfloaterimagepreview.cpp index 3606f7ccbe..c8a76cbe55 100644 --- a/indra/newview/llfloaterimagepreview.cpp +++ b/indra/newview/llfloaterimagepreview.cpp @@ -138,6 +138,8 @@ BOOL LLFloaterImagePreview::postBuild() //----------------------------------------------------------------------------- LLFloaterImagePreview::~LLFloaterImagePreview() { + clearAllPreviewTextures(); + mRawImagep = NULL; delete mAvatarPreview; delete mSculptedPreview; @@ -205,6 +207,21 @@ void LLFloaterImagePreview::onPreviewTypeCommit(LLUICtrl* ctrl, void* userdata) fp->mSculptedPreview->refresh(); } + +//----------------------------------------------------------------------------- +// clearAllPreviewTextures() +//----------------------------------------------------------------------------- +void LLFloaterImagePreview::clearAllPreviewTextures() +{ + mAvatarPreview->clearPreviewTexture("mHairMesh0"); + mAvatarPreview->clearPreviewTexture("mUpperBodyMesh0"); + mAvatarPreview->clearPreviewTexture("mLowerBodyMesh0"); + mAvatarPreview->clearPreviewTexture("mHeadMesh0"); + mAvatarPreview->clearPreviewTexture("mUpperBodyMesh0"); + mAvatarPreview->clearPreviewTexture("mLowerBodyMesh0"); + mAvatarPreview->clearPreviewTexture("mSkirtMesh0"); +} + //----------------------------------------------------------------------------- // draw() //----------------------------------------------------------------------------- @@ -648,6 +665,19 @@ void LLImagePreviewAvatar::setPreviewTarget(const std::string& joint_name, const mCameraOffset.clearVec(); } +//----------------------------------------------------------------------------- +// clearPreviewTexture() +//----------------------------------------------------------------------------- +void LLImagePreviewAvatar::clearPreviewTexture(const std::string& mesh_name) +{ + LLViewerJointMesh *mesh = (LLViewerJointMesh*)mDummyAvatar->mRoot.findJoint(mesh_name); + // clear out existing test mesh + if (mesh) + { + mesh->setTestTexture(0); + } +} + //----------------------------------------------------------------------------- // update() //----------------------------------------------------------------------------- diff --git a/indra/newview/llfloaterimagepreview.h b/indra/newview/llfloaterimagepreview.h index e639544f48..6a4de3d3cc 100644 --- a/indra/newview/llfloaterimagepreview.h +++ b/indra/newview/llfloaterimagepreview.h @@ -81,6 +81,7 @@ public: void setPreviewTarget(const std::string& joint_name, const std::string& mesh_name, LLImageRaw* imagep, F32 distance, BOOL male); void setTexture(U32 name) { mTextureName = name; } + void clearPreviewTexture(const std::string& mesh_name); BOOL render(); void refresh(); @@ -118,6 +119,8 @@ public: static void onMouseCaptureLostImagePreview(LLMouseHandler*); static void setUploadAmount(S32 amount) { sUploadAmount = amount; } + void clearAllPreviewTextures(); + protected: static void onPreviewTypeCommit(LLUICtrl*,void*); void draw(); diff --git a/indra/newview/llfloaterland.cpp b/indra/newview/llfloaterland.cpp index dc18369bb6..94a834502f 100644 --- a/indra/newview/llfloaterland.cpp +++ b/indra/newview/llfloaterland.cpp @@ -896,7 +896,7 @@ void LLPanelLandGeneral::onClickStartAuction(void* data) { if(parcelp->getForSale()) { - LLNotifications::instance().add("CannotStartAuctionAlreadForSale"); + LLNotifications::instance().add("CannotStartAuctionAlreadyForSale"); } else { @@ -1770,8 +1770,24 @@ BOOL LLPanelLandOptions::postBuild() childSetCommitCallback("ShowDirectoryCheck", onCommitAny, this); - mCategoryCombo = getChild( "land category"); - childSetCommitCallback("land category", onCommitAny, this); + if (gAgent.getAgentAccess().isInTransition()) + { + // during the AO transition, this combo has an Adult item. + // Post-transition, it goes away. We can remove this conditional + // after the transition and just use the "else" clause. + mCategoryCombo = getChild( "land category with adult"); + childSetCommitCallback("land category with adult", onCommitAny, this); + } + else + { + // this is the code that should be preserved post-transition + // you could also change the XML to set visibility and enabled true. + mCategoryCombo = getChild( "land category"); + childSetCommitCallback("land category", onCommitAny, this); + } + mCategoryCombo->setVisible(true); + mCategoryCombo->setEnabled(true); + mMatureCtrl = getChild( "MatureCheck"); childSetCommitCallback("MatureCheck", onCommitAny, this); @@ -1788,14 +1804,6 @@ BOOL LLPanelLandOptions::postBuild() mMatureCtrl->setEnabled(FALSE); } - if (!gAgent.getAgentAccess().isInTransition()) - { - // remove category for adult if we're post-transition - // (this code can go away, and the category can be removed from the xml, - // once we've completed the transition period for adult) - mCategoryCombo->remove(getString("adult_land_category_label")); - } - mSnapshotCtrl = getChild("snapshot_ctrl"); if (mSnapshotCtrl) @@ -1982,6 +1990,7 @@ void LLPanelLandOptions::refresh() // not teen so fill in the data for the maturity control mMatureCtrl->setVisible(TRUE); mMatureCtrl->setLabel(getString("mature_check_mature")); + mMatureCtrl->setToolTip(getString("mature_check_mature_tooltip")); // they can see the checkbox, but its disposition depends on the // state of the region LLViewerRegion* regionp = LLViewerParcelMgr::getInstance()->getSelectionRegion(); @@ -2002,6 +2011,7 @@ void LLPanelLandOptions::refresh() mMatureCtrl->setEnabled(FALSE); mMatureCtrl->set(TRUE); mMatureCtrl->setLabel(getString("mature_check_adult")); + mMatureCtrl->setToolTip(getString("mature_check_adult_tooltip")); } } } @@ -2140,7 +2150,8 @@ void LLPanelLandOptions::onCommitAny(LLUICtrl *ctrl, void *userdata) BOOL mature_publish = self->mMatureCtrl->get(); BOOL push_restriction = self->mPushRestrictionCtrl->get(); BOOL show_directory = self->mCheckShowDirectory->get(); - S32 category_index = self->mCategoryCombo->getCurrentIndex(); + // we have to get the index from a lookup, not from the position in the dropdown! + S32 category_index = LLParcel::getCategoryFromString(self->mCategoryCombo->getSelectedValue()); S32 landing_type_index = self->mLandingTypeCombo->getCurrentIndex(); LLUUID snapshot_id = self->mSnapshotCtrl->getImageAssetID(); LLViewerRegion* region; diff --git a/indra/newview/llfloaterlandholdings.cpp b/indra/newview/llfloaterlandholdings.cpp index 3edc7133a0..bd1186b151 100644 --- a/indra/newview/llfloaterlandholdings.cpp +++ b/indra/newview/llfloaterlandholdings.cpp @@ -41,13 +41,14 @@ #include "message.h" #include "llagent.h" +#include "llbutton.h" #include "llfloatergroupinfo.h" #include "llfloaterworldmap.h" -//#include "llinventoryview.h" // for mOpenNextNewItem +#include "llproductinforequest.h" +#include "llscrolllistctrl.h" #include "llstatusbar.h" #include "lltextbox.h" -#include "llscrolllistctrl.h" -#include "llbutton.h" +#include "lltrans.h" #include "lluiconstants.h" #include "llviewermessage.h" #include "lluictrlfactory.h" @@ -192,7 +193,9 @@ void LLFloaterLandHoldings::processPlacesReply(LLMessageSystem* msg, void**) F32 global_x; F32 global_y; std::string sim_name; - + std::string land_sku; + std::string land_type; + S32 i; S32 count = msg->getNumberOfBlocks("QueryData"); for (i = 0; i < count; i++) @@ -206,6 +209,18 @@ void LLFloaterLandHoldings::processPlacesReply(LLMessageSystem* msg, void**) msg->getF32("QueryData", "GlobalX", global_x, i); msg->getF32("QueryData", "GlobalY", global_y, i); msg->getString("QueryData", "SimName", sim_name, i); + + if ( msg->getSizeFast(_PREHASH_QueryData, i, _PREHASH_ProductSKU) > 0 ) + { + msg->getStringFast( _PREHASH_QueryData, _PREHASH_ProductSKU, land_sku, i); + llinfos << "Land sku: " << land_sku << llendl; + land_type = LLProductInfoRequestManager::instance().getDescriptionForSku(land_sku); + } + else + { + land_sku.clear(); + land_type = LLTrans::getString("land_type_unknown"); + } self->mActualArea += actual_area; self->mBillableArea += billable_area; @@ -225,7 +240,7 @@ void LLFloaterLandHoldings::processPlacesReply(LLMessageSystem* msg, void**) { area = llformat("%d / %d", billable_area, actual_area); } - + std::string hidden; hidden = llformat("%f %f", global_x, global_y); @@ -233,19 +248,26 @@ void LLFloaterLandHoldings::processPlacesReply(LLMessageSystem* msg, void**) element["columns"][0]["column"] = "name"; element["columns"][0]["value"] = name; element["columns"][0]["font"] = "SANSSERIF"; + element["columns"][1]["column"] = "location"; element["columns"][1]["value"] = location; element["columns"][1]["font"] = "SANSSERIF"; + element["columns"][2]["column"] = "area"; element["columns"][2]["value"] = area; element["columns"][2]["font"] = "SANSSERIF"; - element["columns"][3]["column"] = "hidden"; - element["columns"][3]["value"] = hidden; + + element["columns"][3]["column"] = "type"; + element["columns"][3]["value"] = land_type; element["columns"][3]["font"] = "SANSSERIF"; + + // hidden is always last column + element["columns"][4]["column"] = "hidden"; + element["columns"][4]["value"] = hidden; list->addElement(element); } - + self->refreshAggregates(); } @@ -257,7 +279,8 @@ void LLFloaterLandHoldings::buttonCore(S32 which) S32 index = list->getFirstSelectedIndex(); if (index < 0) return; - std::string location = list->getSelectedItemLabel(3); + // hidden is always last column + std::string location = list->getSelectedItemLabel(list->getNumColumns()-1); F32 global_x = 0.f; F32 global_y = 0.f; diff --git a/indra/newview/llfloaternotificationsconsole.cpp b/indra/newview/llfloaternotificationsconsole.cpp index 09af36dfe6..e6250063f7 100644 --- a/indra/newview/llfloaternotificationsconsole.cpp +++ b/indra/newview/llfloaternotificationsconsole.cpp @@ -63,7 +63,7 @@ LLNotificationChannelPanel::LLNotificationChannelPanel(const std::string& channe { mChannelPtr = LLNotifications::instance().getChannel(channel_name); mChannelRejectsPtr = LLNotificationChannelPtr( - new LLNotificationChannel(channel_name + "rejects", mChannelPtr->getParentChannelName(), !boost::bind(mChannelPtr->getFilter(), _1))); + LLNotificationChannel::buildChannel(channel_name + "rejects", mChannelPtr->getParentChannelName(), !boost::bind(mChannelPtr->getFilter(), _1))); LLUICtrlFactory::instance().buildPanel(this, "panel_notifications_channel.xml"); } diff --git a/indra/newview/llfloaterregioninfo.cpp b/indra/newview/llfloaterregioninfo.cpp index 2b418b4caa..06c1b2c12b 100644 --- a/indra/newview/llfloaterregioninfo.cpp +++ b/indra/newview/llfloaterregioninfo.cpp @@ -70,6 +70,7 @@ #include "lltextbox.h" #include "llinventory.h" #include "lltexturectrl.h" +#include "lltrans.h" #include "llviewercontrol.h" #include "lluictrlfactory.h" #include "llviewerimage.h" @@ -129,9 +130,12 @@ void unpack_request_params( // LLUUID in compressed form which may have embedded \0's,) str_buf[0] = '\0'; S32 data_size = msg->getSizeFast(_PREHASH_StringData, i, _PREHASH_SParam); - msg->getBinaryDataFast(_PREHASH_StringData, _PREHASH_SParam, - str_buf, data_size, i, MAX_STRING - 1); - strings.push_back(std::string(str_buf, data_size)); + if (data_size >= 0) + { + msg->getBinaryDataFast(_PREHASH_StringData, _PREHASH_SParam, + str_buf, data_size, i, MAX_STRING - 1); + strings.push_back(std::string(str_buf, data_size)); + } } U32 int_buf; @@ -295,7 +299,7 @@ void LLFloaterRegionInfo::processRegionInfo(LLMessageSystem* msg) // extract message std::string sim_name; - std::string sim_type = "(unknown)"; + std::string sim_type = LLTrans::getString("land_type_unknown"); U32 region_flags; U8 agent_limit; F32 object_bonus_factor; @@ -318,8 +322,8 @@ void LLFloaterRegionInfo::processRegionInfo(LLMessageSystem* msg) msg->getF32("RegionInfo", "SunHour", sun_hour); // the only reasonable way to decide if we actually have any data is to // check to see if any of these fields have nonzero sizes - if (msg->getSize("RegionInfo2", "ProductSKU") || - msg->getSize("RegionInfo2", "ProductName")) + if (msg->getSize("RegionInfo2", "ProductSKU") > 0 || + msg->getSize("RegionInfo2", "ProductName") > 0) { msg->getString("RegionInfo2", "ProductName", sim_type); } @@ -746,8 +750,6 @@ BOOL LLPanelRegionGeneralInfo::sendUpdate() body["allow_land_resell"] = childGetValue("allow_land_resell_check"); body["agent_limit"] = childGetValue("agent_limit_spin"); body["prim_bonus"] = childGetValue("object_bonus_spin"); - // the combo box stores strings "Mature" and "PG", but we have to convert back to a number, - // because the sim doesn't know from strings for this stuff body["sim_access"] = childGetValue("access_combo"); body["restrict_pushobject"] = childGetValue("restrict_pushobject"); body["allow_parcel_changes"] = childGetValue("allow_parcel_changes_check"); @@ -780,8 +782,7 @@ BOOL LLPanelRegionGeneralInfo::sendUpdate() buffer = llformat("%f", value); strings.push_back(strings_t::value_type(buffer)); - U8 access = childGetValue("access_combo").asInteger(); - buffer = llformat("%d", (S32)access); + buffer = llformat("%d", childGetValue("access_combo").asInteger()); strings.push_back(strings_t::value_type(buffer)); buffer = llformat("%s", (childGetValue("restrict_pushobject").asBoolean() ? "Y" : "N")); @@ -792,17 +793,14 @@ BOOL LLPanelRegionGeneralInfo::sendUpdate() LLUUID invoice(LLFloaterRegionInfo::getLastInvoice()); sendEstateOwnerMessage(gMessageSystem, "setregioninfo", invoice, strings); - - LLViewerRegion* region = gAgent.getRegion(); - if (region && access != region->getSimAccess() ) - { - LLNotifications::instance().add("RegionMaturityChange"); - } } - - //integers_t integers; - + // if we changed access levels, tell user about it + LLViewerRegion* region = gAgent.getRegion(); + if (region && (childGetValue("access_combo").asInteger() != region->getSimAccess()) ) + { + LLNotifications::instance().add("RegionMaturityChange"); + } return TRUE; } @@ -2702,6 +2700,19 @@ bool LLPanelEstateCovenant::refreshFromRegion(LLViewerRegion* region) } } + LLTextBox* region_maturity = getChild("region_maturity_text"); + if (region_maturity) + { + region_maturity->setText(region->getSimAccessString()); + } + + LLTextBox* region_landtype = getChild("region_landtype_text"); + if (region_landtype) + { + region_landtype->setText(region->getSimProductName()); + } + + // let the parent class handle the general data collection. bool rv = LLPanelRegionInfo::refreshFromRegion(region); LLMessageSystem *msg = gMessageSystem; diff --git a/indra/newview/llfloatersnapshot.cpp b/indra/newview/llfloatersnapshot.cpp index d45d9c052f..34dbce67c2 100644 --- a/indra/newview/llfloatersnapshot.cpp +++ b/indra/newview/llfloatersnapshot.cpp @@ -508,7 +508,8 @@ void LLSnapshotLivePreview::draw() gGL.end(); } - if (mShineAnimTimer.getElapsedTimeF32() > SHINE_TIME) + // if we're at the end of the animation, stop + if (shine_interp >= 1.f) { mShineAnimTimer.stop(); } diff --git a/indra/newview/llfloaterurldisplay.cpp b/indra/newview/llfloaterurldisplay.cpp index 38e524c4e0..c265c6169a 100644 --- a/indra/newview/llfloaterurldisplay.cpp +++ b/indra/newview/llfloaterurldisplay.cpp @@ -88,8 +88,8 @@ void LLFloaterURLDisplay::setSnapshotDisplay(const LLUUID& snapshot_id) } void LLFloaterURLDisplay::setName(const std::string& name) -{ - mPlacePanel->setName(name); +{ // Set the name and also clear description + mPlacePanel->resetName(name); } void LLFloaterURLDisplay::setLocationString(const std::string& name) diff --git a/indra/newview/llimpanel.cpp b/indra/newview/llimpanel.cpp index 66c2e4fe21..0586409283 100644 --- a/indra/newview/llimpanel.cpp +++ b/indra/newview/llimpanel.cpp @@ -1092,6 +1092,10 @@ LLFloaterIMPanel::LLFloaterIMPanel( mNumUnreadMessages(0), mShowSpeakersOnConnect(TRUE), mAutoConnect(FALSE), + mTextIMPossible(TRUE), + mProfileButtonEnabled(TRUE), + mCallBackEnabled(TRUE), + mSpeakers(NULL), mSpeakerPanel(NULL), mFirstKeystrokeTimer(), mLastKeystrokeTimer() diff --git a/indra/newview/llmenucommands.cpp b/indra/newview/llmenucommands.cpp index 6775cbf29e..ac77a920a5 100644 --- a/indra/newview/llmenucommands.cpp +++ b/indra/newview/llmenucommands.cpp @@ -47,7 +47,6 @@ #include "llviewercontrol.h" #include "llfirstuse.h" #include "llfloaterchat.h" -#include "llfloaterclothing.h" #include "llfloaterdirectory.h" #include "llfloatermap.h" #include "llfloaterworldmap.h" @@ -122,12 +121,6 @@ void handle_inventory(void*) } -void handle_clothing(void*) -{ - LLFloaterClothing::toggleVisibility(); -} - - void handle_chat(void*) { // give focus to chatbar if it's open but not focused diff --git a/indra/newview/llmenucommands.h b/indra/newview/llmenucommands.h index e17a572a3b..03f7a2571c 100644 --- a/indra/newview/llmenucommands.h +++ b/indra/newview/llmenucommands.h @@ -43,7 +43,6 @@ void handle_mini_map(void*); void handle_find(void*); void handle_events(void*); void handle_inventory(void*); -void handle_clothing(void*); void handle_chat(void*); void handle_return_key(void*); void handle_slash_key(void*); diff --git a/indra/newview/llpanelclassified.cpp b/indra/newview/llpanelclassified.cpp index e6639a2da5..afaaea28f0 100644 --- a/indra/newview/llpanelclassified.cpp +++ b/indra/newview/llpanelclassified.cpp @@ -72,8 +72,9 @@ #include "llappviewer.h" // abortQuit() const S32 MINIMUM_PRICE_FOR_LISTING = 50; // L$ +const S32 MATURE_UNDEFINED = -1; const S32 MATURE_CONTENT = 1; -const S32 NON_MATURE_CONTENT = 2; +const S32 PG_CONTENT = 2; const S32 DECLINE_TO_STATE = 0; //static @@ -290,7 +291,7 @@ BOOL LLPanelClassified::postBuild() { // Teens don't get to set mature flag. JC mMatureCombo->setVisible(FALSE); - mMatureCombo->setCurrentByIndex(NON_MATURE_CONTENT); + mMatureCombo->setCurrentByIndex(PG_CONTENT); } if (!mInFinder) @@ -408,6 +409,9 @@ void LLPanelClassified::initNewClassified() } mUpdateBtn->setLabel(getString("publish_txt")); + + // simulate clicking the "location" button + LLPanelClassified::onClickSet(this); } @@ -663,7 +667,7 @@ void LLPanelClassified::processClassifiedInfoReply(LLMessageSystem *msg, void ** } else { - self->mMatureCombo->setCurrentByIndex(NON_MATURE_CONTENT); + self->mMatureCombo->setCurrentByIndex(PG_CONTENT); } if (self->mAutoRenewCheck) { @@ -751,8 +755,22 @@ void LLPanelClassified::refresh() //mPriceEditor->setEnabled(is_self); mCategoryCombo->setEnabled(is_self); - mMatureCombo->setEnabled(is_self); - + if( is_self ) + { + if( mMatureCombo->getCurrentIndex() == 0 ) + { + // It's a new panel. + // PG regions must have PG classifieds. AO must have mature. + // Only Mature can be PG or Mature. + + constrainAccessCombo(); + } + } + else + { + mMatureCombo->setEnabled( FALSE ); + } + if (mAutoRenewCheck) { mAutoRenewCheck->setEnabled(is_self); @@ -813,7 +831,7 @@ bool LLPanelClassified::confirmMature(const LLSD& notification, const LLSD& resp mMatureCombo->setCurrentByIndex(MATURE_CONTENT); break; case 1: - mMatureCombo->setCurrentByIndex(NON_MATURE_CONTENT); + mMatureCombo->setCurrentByIndex(PG_CONTENT); break; default: return false; @@ -970,7 +988,13 @@ void LLPanelClassified::onClickSet(void* data) self->mPosGlobal = gAgent.getPositionGlobal(); std::string location_text; - location_text.assign("(will update after publish)"); + std::string regionName = "(will update after publish)"; + LLViewerRegion* pRegion = gAgent.getRegion(); + if (pRegion) + { + regionName = pRegion->getName(); + } + location_text.assign(regionName); location_text.append(", "); S32 region_x = llround((F32)self->mPosGlobal.mdV[VX]) % REGION_WIDTH_UNITS; @@ -982,6 +1006,8 @@ void LLPanelClassified::onClickSet(void* data) self->mLocationEditor->setText(location_text); self->mLocationChanged = true; + + self->constrainAccessCombo(); // Set this to null so it updates on the next save. self->mParcelID.setNull(); @@ -1110,3 +1136,36 @@ void LLFloaterPriceForListing::buttonCore(S32 button, void* data) self->close(); } } + +void LLPanelClassified::constrainAccessCombo() +{ + // Location changed. + // PG regions must have PG classifieds. AO must have mature. + // Only Mature can be PG or Mature. + + bool pref_visible = TRUE; + + S32 force_access = MATURE_UNDEFINED; + LLViewerRegion *regionp = gAgent.getRegion(); + + switch( regionp->getSimAccess() ) + { + case SIM_ACCESS_PG: + force_access = PG_CONTENT; + break; + case SIM_ACCESS_ADULT: + force_access = MATURE_CONTENT; + break; + default: + // You are free to move about the cabin. + break; + } + + if ( force_access != MATURE_UNDEFINED ) + { + pref_visible = FALSE; + mMatureCombo->setCurrentByIndex(force_access); + } + + mMatureCombo->setEnabled(pref_visible); +} diff --git a/indra/newview/llpanelclassified.h b/indra/newview/llpanelclassified.h index 3820dae281..68a5a33321 100644 --- a/indra/newview/llpanelclassified.h +++ b/indra/newview/llpanelclassified.h @@ -120,6 +120,8 @@ protected: static void focusReceived(LLFocusableElement* ctrl, void* data); static void onCommitAny(LLUICtrl* ctrl, void* data); + void constrainAccessCombo(); // Force AO and PG regions to proper classified access + BOOL checkDirty(); // Update and return mDirty protected: diff --git a/indra/newview/llpanelgrouplandmoney.cpp b/indra/newview/llpanelgrouplandmoney.cpp index 6ff09e56f8..73a9868962 100644 --- a/indra/newview/llpanelgrouplandmoney.cpp +++ b/indra/newview/llpanelgrouplandmoney.cpp @@ -43,9 +43,11 @@ #include "llagent.h" #include "lliconctrl.h" #include "lllineeditor.h" +#include "llproductinforequest.h" #include "llscrolllistctrl.h" #include "lltextbox.h" #include "lltabcontainer.h" +#include "lltrans.h" #include "lltransactiontypes.h" #include "lluictrlfactory.h" @@ -232,10 +234,7 @@ void LLPanelGroupLandMoney::impl::onMapButton() if (!itemp) return; const LLScrollListCell* cellp; - // name - // location - // area - cellp = itemp->getColumn(3); // hidden + cellp = itemp->getColumn(itemp->getNumColumns() - 1); // hidden column is last F32 global_x = 0.f; F32 global_y = 0.f; @@ -414,6 +413,9 @@ void LLPanelGroupLandMoney::impl::processGroupLand(LLMessageSystem* msg) F32 global_x; F32 global_y; std::string sim_name; + std::string land_sku; + std::string land_type; + for(S32 i = first_block; i < count; ++i) { msg->getUUID("QueryData", "OwnerID", owner_id, i); @@ -426,6 +428,18 @@ void LLPanelGroupLandMoney::impl::processGroupLand(LLMessageSystem* msg) msg->getF32("QueryData", "GlobalY", global_y, i); msg->getString("QueryData", "SimName", sim_name, i); + if ( msg->getSizeFast(_PREHASH_QueryData, i, _PREHASH_ProductSKU) > 0 ) + { + msg->getStringFast( _PREHASH_QueryData, _PREHASH_ProductSKU, land_sku, i); + llinfos << "Land sku: " << land_sku << llendl; + land_type = LLProductInfoRequestManager::instance().getDescriptionForSku(land_sku); + } + else + { + land_sku.clear(); + land_type = LLTrans::getString("land_type_unknown"); + } + S32 region_x = llround(global_x) % REGION_WIDTH_UNITS; S32 region_y = llround(global_y) % REGION_WIDTH_UNITS; std::string location = sim_name + llformat(" (%d, %d)", region_x, region_y); @@ -438,6 +452,7 @@ void LLPanelGroupLandMoney::impl::processGroupLand(LLMessageSystem* msg) { area = llformat("%d / %d", billable_area, actual_area); } + std::string hidden; hidden = llformat("%f %f", global_x, global_y); @@ -455,8 +470,13 @@ void LLPanelGroupLandMoney::impl::processGroupLand(LLMessageSystem* msg) row["columns"][2]["value"] = area; row["columns"][2]["font"] = "SANSSERIFSMALL"; - row["columns"][3]["column"] = "hidden"; - row["columns"][3]["value"] = hidden; + row["columns"][3]["column"] = "type"; + row["columns"][3]["value"] = land_type; + row["columns"][3]["font"] = "SANSSERIFSMALL"; + + // hidden is always last column + row["columns"][4]["column"] = "hidden"; + row["columns"][4]["value"] = hidden; mGroupParcelsp->addElement(row, ADD_SORTED); } @@ -706,7 +726,7 @@ BOOL LLPanelGroupLandMoney::postBuild() textp = getChild("group_money_planning_text", true); panelp = getChild("group_money_planning_tab", true); - if ( 1 ) //!can_view + if ( !can_view ) { textp->setText(mImplementationp->mCantViewAccountsText); } @@ -1412,11 +1432,18 @@ void LLGroupMoneyPlanningTabEventHandler::processReply(LLMessageSystem* msg, text.append(1, '\n'); } - text.append( " Group Individual Share\n"); - text.append(llformat( "%-24s %6d %6d \n", "Credits", total_credits, (S32)floor((F32)total_credits/(F32)non_exempt_members))); - text.append(llformat( "%-24s %6d %6d \n", "Debits", total_debits, (S32)floor((F32)total_debits/(F32)non_exempt_members))); - text.append(llformat( "%-24s %6d %6d \n", "Total", total_credits + total_debits, (S32)floor((F32)(total_credits + total_debits)/(F32)non_exempt_members))); - + // [DEV-29503] Hide the individual info since + // non_exempt_member here is a wrong choice to calculate individual shares. + // text.append( " Group Individual Share\n"); + // text.append(llformat( "%-24s %6d %6d \n", "Credits", total_credits, (S32)floor((F32)total_credits/(F32)non_exempt_members))); + // text.append(llformat( "%-24s %6d %6d \n", "Debits", total_debits, (S32)floor((F32)total_debits/(F32)non_exempt_members))); + // text.append(llformat( "%-24s %6d %6d \n", "Total", total_credits + total_debits, (S32)floor((F32)(total_credits + total_debits)/(F32)non_exempt_members))); + + text.append( " Group\n"); + text.append(llformat( "%-24s %6d\n", "Credits", total_credits)); + text.append(llformat( "%-24s %6d\n", "Debits", total_debits)); + text.append(llformat( "%-24s %6d\n", "Total", total_credits + total_debits)); + if ( mImplementationp->mTextEditorp ) { mImplementationp->mTextEditorp->setText(text); diff --git a/indra/newview/llpanelgrouproles.cpp b/indra/newview/llpanelgrouproles.cpp index 343269e1f6..6e65181f99 100644 --- a/indra/newview/llpanelgrouproles.cpp +++ b/indra/newview/llpanelgrouproles.cpp @@ -2397,7 +2397,7 @@ void LLPanelGroupRolesSubTab::handleDeleteRole() { LLSD args; args["MESSAGE"] = mRemoveEveryoneTxt; - LLNotifications::instance().add("GenericNotify", args); + LLNotifications::instance().add("GenericAlert", args); return; } diff --git a/indra/newview/llpanellandmedia.cpp b/indra/newview/llpanellandmedia.cpp index 332344a952..b8886c9493 100644 --- a/indra/newview/llpanellandmedia.cpp +++ b/indra/newview/llpanellandmedia.cpp @@ -38,6 +38,7 @@ // viewer includes #include "llmimetypes.h" #include "llviewerparcelmgr.h" +#include "llviewerregion.h" #include "lluictrlfactory.h" // library includes @@ -54,20 +55,32 @@ #include "lltexturectrl.h" #include "roles_constants.h" -// Values for the parcel voice settings radio group -enum -{ - kRadioVoiceChatEstate = 0, - kRadioVoiceChatPrivate = 1, - kRadioVoiceChatDisable = 2 -}; - //--------------------------------------------------------------------------- // LLPanelLandMedia //--------------------------------------------------------------------------- LLPanelLandMedia::LLPanelLandMedia(LLParcelSelectionHandle& parcel) -: LLPanel(std::string("land_media_panel")), mParcel(parcel) +: LLPanel(std::string("land_media_panel")), + + mParcel(parcel), + mCheckSoundLocal(NULL), + mSoundHelpButton(NULL), + mCheckEnableVoiceChat(NULL), + mCheckEnableVoiceChatIsEstateDisabled(NULL), + mCheckEnableVoiceChatParcel(NULL), + mMusicURLEdit(NULL), + mMediaURLEdit(NULL), + mMediaDescEdit(NULL), + mMediaTypeCombo(NULL), + mSetURLButton(NULL), + mMediaHeightCtrl(NULL), + mMediaWidthCtrl(NULL), + mMediaSizeCtrlLabel(NULL), + mMediaTextureCtrl(NULL), + mMediaAutoScaleCheck(NULL), + mMediaLoopCheck(NULL), + mMediaUrlCheck(NULL), + mMusicUrlCheck(NULL) { } @@ -79,13 +92,27 @@ LLPanelLandMedia::~LLPanelLandMedia() } +// static +void LLPanelLandMedia::onClickSoundHelp(void*) +{ + LLNotifications::instance().add("ClickSoundHelpLand"); +} + + BOOL LLPanelLandMedia::postBuild() { mCheckSoundLocal = getChild("check sound local"); childSetCommitCallback("check sound local", onCommitAny, this); - mRadioVoiceChat = getChild("parcel_voice_channel"); - childSetCommitCallback("parcel_voice_channel", onCommitAny, this); + mSoundHelpButton = getChild("?"); + mSoundHelpButton->setClickedCallback(onClickSoundHelp, this); + + mCheckEnableVoiceChat = getChild("parcel_enable_voice_channel"); + childSetCommitCallback("parcel_enable_voice_channel", onCommitAny, this); + mCheckEnableVoiceChatIsEstateDisabled = getChild("parcel_enable_voice_channel_is_estate_disabled"); + childSetCommitCallback("parcel_enable_voice_channel_is_estate_disabled", onCommitAny, this); + mCheckEnableVoiceChatParcel = getChild("parcel_enable_voice_channel_parcel"); + childSetCommitCallback("parcel_enable_voice_channel_parcel", onCommitAny, this); mMusicURLEdit = getChild("music_url"); childSetCommitCallback("music_url", onCommitAny, this); @@ -151,19 +178,36 @@ void LLPanelLandMedia::refresh() mCheckSoundLocal->set( parcel->getSoundLocal() ); mCheckSoundLocal->setEnabled( can_change_media ); - if(parcel->getParcelFlagAllowVoice()) + LLViewerRegion* region = LLViewerParcelMgr::getInstance()->getSelectionRegion(); + if (!region) { - if(parcel->getParcelFlagUseEstateVoiceChannel()) - mRadioVoiceChat->setSelectedIndex(kRadioVoiceChatEstate); - else - mRadioVoiceChat->setSelectedIndex(kRadioVoiceChatPrivate); + // never seen this happen, but log it + llwarns << "Couldn't get selected region." << llendl; } - else + + if (region && region->isVoiceEnabled()) // estate-wide voice-disable overrides all { - mRadioVoiceChat->setSelectedIndex(kRadioVoiceChatDisable); + bool allow_voice = parcel->getParcelFlagAllowVoice(); + + mCheckEnableVoiceChatIsEstateDisabled->setVisible(false); + + mCheckEnableVoiceChat->setVisible(true); + mCheckEnableVoiceChat->setEnabled( can_change_media ); + mCheckEnableVoiceChat->set(allow_voice); + + mCheckEnableVoiceChatParcel->setEnabled( can_change_media && allow_voice ); + } + else // disabled at region level + { + mCheckEnableVoiceChatIsEstateDisabled->setVisible(true); // always disabled + mCheckEnableVoiceChat->setVisible(false); + mCheckEnableVoiceChat->setEnabled(false); + mCheckEnableVoiceChat->set(false); + + mCheckEnableVoiceChatParcel->setEnabled(false); } - mRadioVoiceChat->setEnabled( can_change_media ); + mCheckEnableVoiceChatParcel->set(!parcel->getParcelFlagUseEstateVoiceChannel()); mMusicURLEdit->setText(parcel->getMusicURL()); mMusicURLEdit->setEnabled( can_change_media ); @@ -339,7 +383,6 @@ void LLPanelLandMedia::onCommitAny(LLUICtrl*, void *userdata) // Extract data from UI BOOL sound_local = self->mCheckSoundLocal->get(); - int voice_setting = self->mRadioVoiceChat->getSelectedIndex(); std::string music_url = self->mMusicURLEdit->getText(); std::string media_url = self->mMediaURLEdit->getText(); std::string media_desc = self->mMediaDescEdit->getText(); @@ -352,27 +395,10 @@ void LLPanelLandMedia::onCommitAny(LLUICtrl*, void *userdata) S32 media_height = (S32)self->mMediaHeightCtrl->get(); LLUUID media_id = self->mMediaTextureCtrl->getImageAssetID(); - self->childSetText("mime_type", mime_type); - - BOOL voice_enabled; - BOOL voice_estate_chan; + BOOL voice_enabled = self->mCheckEnableVoiceChat->get(); + BOOL voice_estate_chan = ! self->mCheckEnableVoiceChatParcel->get(); - switch(voice_setting) - { - default: - case kRadioVoiceChatEstate: - voice_enabled = TRUE; - voice_estate_chan = TRUE; - break; - case kRadioVoiceChatPrivate: - voice_enabled = TRUE; - voice_estate_chan = FALSE; - break; - case kRadioVoiceChatDisable: - voice_enabled = FALSE; - voice_estate_chan = FALSE; - break; - } + self->childSetText("mime_type", mime_type); // Remove leading/trailing whitespace (common when copying/pasting) LLStringUtil::trim(music_url); diff --git a/indra/newview/llpanellandmedia.h b/indra/newview/llpanellandmedia.h index 459193f0dd..6a53dd42a5 100644 --- a/indra/newview/llpanellandmedia.h +++ b/indra/newview/llpanellandmedia.h @@ -56,10 +56,14 @@ private: static void onCommitAny(LLUICtrl* ctrl, void *userdata); static void onCommitType(LLUICtrl* ctrl, void *userdata); static void onSetBtn(void* userdata); + static void onClickSoundHelp(void*); private: LLCheckBoxCtrl* mCheckSoundLocal; - LLRadioGroup* mRadioVoiceChat; + LLButton* mSoundHelpButton; + LLCheckBoxCtrl* mCheckEnableVoiceChat; + LLCheckBoxCtrl* mCheckEnableVoiceChatIsEstateDisabled; + LLCheckBoxCtrl* mCheckEnableVoiceChatParcel; LLLineEditor* mMusicURLEdit; LLLineEditor* mMediaURLEdit; LLLineEditor* mMediaDescEdit; diff --git a/indra/newview/llpanelplace.cpp b/indra/newview/llpanelplace.cpp index 47ed72aa77..815152c69f 100644 --- a/indra/newview/llpanelplace.cpp +++ b/indra/newview/llpanelplace.cpp @@ -97,8 +97,9 @@ BOOL LLPanelPlace::postBuild() mDescEditor = getChild("desc_editor"); mInfoEditor = getChild("info_editor"); + mLandTypeEditor = getChild("land_type_display"); - mLocationEditor = getChild("location_editor"); + mLocationDisplay = getChild("location_editor"); mTeleportBtn = getChild( "teleport_btn"); mTeleportBtn->setClickedCallback(onClickTeleport); @@ -148,7 +149,32 @@ void LLPanelPlace::resetLocation() mNameEditor->setText( LLStringUtil::null ); mDescEditor->setText( LLStringUtil::null ); mInfoEditor->setText( LLStringUtil::null ); - mLocationEditor->setText( LLStringUtil::null ); + mLandTypeEditor->setText( LLStringUtil::null ); + mLocationDisplay->setText( LLStringUtil::null ); +} + + +// Set the name and clear other bits of info. Used for SLURL clicks +void LLPanelPlace::resetName(const std::string& name) +{ + setName(name); + if(mDescEditor) + { + mDescEditor->setText( LLStringUtil::null ); + } + if(mNameEditor) + { + llinfos << "Clearing place name" << llendl; + mNameEditor->setText( LLStringUtil::null ); + } + if(mInfoEditor) + { + mInfoEditor->setText( LLStringUtil::null ); + } + if(mLandTypeEditor) + { + mLandTypeEditor->setText( LLStringUtil::null ); + } } void LLPanelPlace::setParcelID(const LLUUID& parcel_id) @@ -165,7 +191,12 @@ void LLPanelPlace::setSnapshot(const LLUUID& snapshot_id) void LLPanelPlace::setLocationString(const std::string& location) { - mLocationEditor->setText(location); + mLocationDisplay->setText(location); +} + +void LLPanelPlace::setLandTypeString(const std::string& land_type) +{ + mLandTypeEditor->setText(land_type); } void LLPanelPlace::sendParcelInfoRequest() @@ -326,9 +357,9 @@ void LLPanelPlace::processParcelInfoReply(LLMessageSystem *msg, void **) std::string location = llformat("%s %d, %d, %d (%s)", sim_name.c_str(), region_x, region_y, region_z, rating.c_str()); - if (self->mLocationEditor) + if (self->mLocationDisplay) { - self->mLocationEditor->setText(location); + self->mLocationDisplay->setText(location); } BOOL show_auction = (auction_id > 0); diff --git a/indra/newview/llpanelplace.h b/indra/newview/llpanelplace.h index 051d63b743..b11290493a 100644 --- a/indra/newview/llpanelplace.h +++ b/indra/newview/llpanelplace.h @@ -66,7 +66,9 @@ public: void setRegionID(const LLUUID& region_id) { mRegionID = region_id; } void setSnapshot(const LLUUID& snapshot_id); void setLocationString(const std::string& location); + void setLandTypeString(const std::string& land_type); void setErrorStatus(U32 status, const std::string& reason); + void resetName(const std::string& name); void sendParcelInfoRequest(); void displayParcelInfo(const LLVector3& pos_region, @@ -104,7 +106,8 @@ protected: LLTextBox* mNameEditor; LLTextEditor* mDescEditor; LLTextBox* mInfoEditor; - LLTextBox* mLocationEditor; + LLTextBox* mLandTypeEditor; + LLTextBox* mLocationDisplay; //not calling it "editor" because it isn't LLButton* mTeleportBtn; LLButton* mMapBtn; diff --git a/indra/newview/llproductinforequest.cpp b/indra/newview/llproductinforequest.cpp new file mode 100644 index 0000000000..eda8cb659e --- /dev/null +++ b/indra/newview/llproductinforequest.cpp @@ -0,0 +1,92 @@ +/** + * @file llproductinforequest.cpp + * @author Kent Quirk + * @brief Get region type descriptions (translation from SKU to description) + * + * $LicenseInfo:firstyear=2009&license=viewergpl$ + * + * Copyright (c) 2009, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at + * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#include "llviewerprecompiledheaders.h" + +#include "llproductinforequest.h" + +#include "llagent.h" // for gAgent +#include "lltrans.h" +#include "llviewerregion.h" + +class LLProductInfoRequestResponder : public LLHTTPClient::Responder +{ +public: + //If we get back a normal response, handle it here + virtual void result(const LLSD& content) + { + LLProductInfoRequestManager::instance().setSkuDescriptions(content); + } + + //If we get back an error (not found, etc...), handle it here + virtual void error(U32 status, const std::string& reason) + { + llwarns << "LLProductInfoRequest::error(" + << status << ": " << reason << ")" << llendl; + } +}; + +LLProductInfoRequestManager::LLProductInfoRequestManager() : mSkuDescriptions() +{ +} + +void LLProductInfoRequestManager::initSingleton() +{ + std::string url = gAgent.getRegion()->getCapability("ProductInfoRequest"); + if (!url.empty()) + { + LLHTTPClient::get(url, new LLProductInfoRequestResponder()); + } +} + +void LLProductInfoRequestManager::setSkuDescriptions(const LLSD& content) +{ + mSkuDescriptions = content; +} + +std::string LLProductInfoRequestManager::getDescriptionForSku(const std::string& sku) +{ + // The description LLSD is an array of maps; each array entry + // has a map with 3 fields -- description, name, and sku + for (LLSD::array_const_iterator it = mSkuDescriptions.beginArray(); + it != mSkuDescriptions.endArray(); + ++it) + { + // llwarns << (*it)["sku"].asString() << " = " << (*it)["description"].asString() << llendl; + if ((*it)["sku"].asString() == sku) + { + return (*it)["description"].asString(); + } + } + return LLTrans::getString("land_type_unknown"); +} diff --git a/indra/newview/llproductinforequest.h b/indra/newview/llproductinforequest.h new file mode 100644 index 0000000000..354f04e8cf --- /dev/null +++ b/indra/newview/llproductinforequest.h @@ -0,0 +1,60 @@ +/** + * @file llproductinforequest.h + * @author Kent Quirk + * @brief Get region type descriptions (translation from SKU to description) + * + * $LicenseInfo:firstyear=2009&license=viewergpl$ + * + * Copyright (c) 2009, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at + * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#ifndef LL_LLPRODUCTINFOREQUEST_H +#define LL_LLPRODUCTINFOREQUEST_H + +#include "llhttpclient.h" +#include "llmemory.h" + +/* + This is a singleton to manage a cache of information about land types. + The land system provides a capability to get information about the + set of possible land sku, name, and description information. + We use description in the UI, but the sku is provided in the various + messages; this tool provides translation between the systems. + */ + +class LLProductInfoRequestManager : public LLSingleton +{ +public: + LLProductInfoRequestManager(); + void setSkuDescriptions(const LLSD& content); + std::string getDescriptionForSku(const std::string& sku); +private: + friend class LLSingleton; + /* virtual */ void initSingleton(); + LLSD mSkuDescriptions; +}; + +#endif // LL_LLPRODUCTINFOREQUEST_H diff --git a/indra/newview/llprogressview.cpp b/indra/newview/llprogressview.cpp index 86f590a0f0..bfd14f709a 100644 --- a/indra/newview/llprogressview.cpp +++ b/indra/newview/llprogressview.cpp @@ -207,7 +207,9 @@ void LLProgressView::setPercent(const F32 percent) void LLProgressView::setMessage(const std::string& msg) { mMessage = msg; - mURLInMessage = mMessage.find( "http://" ) != std::string::npos; + mURLInMessage = (mMessage.find( "https://" ) != std::string::npos || + mMessage.find( "http://" ) != std::string::npos || + mMessage.find( "ftp://" ) != std::string::npos); getChild("message_text")->setWrappedText(LLStringExplicit(mMessage)); getChild("message_text")->setHoverActive(mURLInMessage); @@ -244,7 +246,13 @@ void LLProgressView::onClickMessage(void* data) { std::string url_to_open( "" ); - size_t start_pos = viewp->mMessage.find( "http://" ); + size_t start_pos; + start_pos = viewp->mMessage.find( "https://" ); + if (start_pos == std::string::npos) + start_pos = viewp->mMessage.find( "http://" ); + if (start_pos == std::string::npos) + start_pos = viewp->mMessage.find( "ftp://" ); + if ( start_pos != std::string::npos ) { size_t end_pos = viewp->mMessage.find_first_of( " \n\r\t", start_pos ); diff --git a/indra/newview/llspatialpartition.cpp b/indra/newview/llspatialpartition.cpp index 6e5231bddd..f8b824732f 100644 --- a/indra/newview/llspatialpartition.cpp +++ b/indra/newview/llspatialpartition.cpp @@ -2234,6 +2234,22 @@ void renderVisibility(LLSpatialGroup* group, LLCamera* camera) } } +void renderCrossHairs(LLVector3 position, F32 size, LLColor4 color) +{ + gGL.color4fv(color.mV); + gGL.begin(LLRender::LINES); + { + gGL.vertex3fv((position - LLVector3(size, 0.f, 0.f)).mV); + gGL.vertex3fv((position + LLVector3(size, 0.f, 0.f)).mV); + gGL.vertex3fv((position - LLVector3(0.f, size, 0.f)).mV); + gGL.vertex3fv((position + LLVector3(0.f, size, 0.f)).mV); + gGL.vertex3fv((position - LLVector3(0.f, 0.f, size)).mV); + gGL.vertex3fv((position + LLVector3(0.f, 0.f, size)).mV); + } + gGL.end(); +} + + void renderBoundingBox(LLDrawable* drawable, BOOL set_color = TRUE) { if (set_color) @@ -2405,7 +2421,7 @@ void renderTextureAnim(LLDrawInfo* params) } LLGLEnable blend(GL_BLEND); - gGL.color4f(1,1,0,0.5f); + glColor4f(1,1,0,0.5f); pushVerts(params, LLVertexBuffer::MAP_VERTEX); } @@ -2507,6 +2523,25 @@ void renderRaycast(LLDrawable* drawablep) } } + +void renderAvatarCollisionVolumes(LLVOAvatar* avatar) +{ + avatar->renderCollisionVolumes(); +} + +void renderAgentTarget(LLVOAvatar* avatar) +{ + // render these for self only (why, i don't know) + if (avatar->isSelf()) + { + renderCrossHairs(avatar->getPositionAgent(), 0.2f, LLColor4(1, 0, 0, 0.8f)); + renderCrossHairs(avatar->mDrawable->getPositionAgent(), 0.2f, LLColor4(1, 0, 0, 0.8f)); + renderCrossHairs(avatar->mRoot.getWorldPosition(), 0.2f, LLColor4(1, 1, 1, 0.8f)); + renderCrossHairs(avatar->mPelvisp->getWorldPosition(), 0.2f, LLColor4(0, 0, 1, 0.8f)); + } +} + + class LLOctreeRenderNonOccluded : public LLOctreeTraveler { public: @@ -2591,6 +2626,19 @@ public: { renderRaycast(drawable); } + + LLVOAvatar* avatar = dynamic_cast(drawable->getVObj().get()); + + if (avatar && gPipeline.hasRenderDebugMask(LLPipeline::RENDER_DEBUG_AVATAR_VOLUME)) + { + renderAvatarCollisionVolumes(avatar); + } + + if (avatar && gPipeline.hasRenderDebugMask(LLPipeline::RENDER_DEBUG_AGENT_TARGET)) + { + renderAgentTarget(avatar); + } + } for (LLSpatialGroup::draw_map_t::iterator i = group->mDrawMap.begin(); i != group->mDrawMap.end(); ++i) @@ -2667,7 +2715,9 @@ void LLSpatialPartition::renderDebug() LLPipeline::RENDER_DEBUG_POINTS | LLPipeline::RENDER_DEBUG_TEXTURE_PRIORITY | LLPipeline::RENDER_DEBUG_TEXTURE_ANIM | - LLPipeline::RENDER_DEBUG_RAYCAST)) + LLPipeline::RENDER_DEBUG_RAYCAST | + LLPipeline::RENDER_DEBUG_AVATAR_VOLUME | + LLPipeline::RENDER_DEBUG_AGENT_TARGET)) { return; } diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index a145e965fb..984646e959 100644 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -130,6 +130,7 @@ #include "llpanelgroupnotices.h" #include "llpreview.h" #include "llpreviewscript.h" +#include "llproductinforequest.h" #include "llsecondlifeurls.h" #include "llselectmgr.h" #include "llsky.h" @@ -2511,6 +2512,11 @@ bool idle_startup() // If we've got a startup URL, dispatch it LLStartUp::dispatchURL(); + // Retrieve information about the land data + // (just accessing this the first time will fetch it, + // then the data is cached for the viewer's lifetime) + LLProductInfoRequestManager::instance(); + // Clean up the userauth stuff. LLUserAuth::getInstance()->reset(); diff --git a/indra/newview/lltexlayer.cpp b/indra/newview/lltexlayer.cpp index b376eed814..eea4acf053 100644 --- a/indra/newview/lltexlayer.cpp +++ b/indra/newview/lltexlayer.cpp @@ -1336,6 +1336,12 @@ BOOL LLTexLayer::render( S32 x, S32 y, S32 width, S32 height ) LLColor4 net_color; color_specified = findNetColor( &net_color ); + if (mTexLayerSet->getAvatar()->mIsDummy) + { + color_specified = true; + net_color = LLVOAvatar::getDummyColor(); + } + // If you can't see the layer, don't render it. if( is_approx_zero( net_color.mV[VW] ) ) { diff --git a/indra/newview/lltoolbar.cpp b/indra/newview/lltoolbar.cpp index 3874a11317..33edb3ef27 100644 --- a/indra/newview/lltoolbar.cpp +++ b/indra/newview/lltoolbar.cpp @@ -128,9 +128,6 @@ BOOL LLToolBar::postBuild() childSetAction("appearance_btn", onClickAppearance, this); childSetControlName("appearance_btn", ""); - childSetAction("clothing_btn", onClickClothing, this); - childSetControlName("clothing_btn", "ClothingBtnState"); - childSetAction("fly_btn", onClickFly, this); childSetControlName("fly_btn", "FlyBtnState"); @@ -287,8 +284,6 @@ void LLToolBar::refresh() BOOL mouselook = gAgent.cameraMouselook(); setVisible(show && !mouselook); - // Clothing button updated inside LLFloaterClothing - BOOL sitting = FALSE; if (gAgent.getAvatarObject()) { @@ -455,13 +450,6 @@ void LLToolBar::onClickAppearance(void*) } -// static -void LLToolBar::onClickClothing(void*) -{ - handle_clothing(NULL); -} - - // static void LLToolBar::onClickFly(void*) { diff --git a/indra/newview/lltoolbar.h b/indra/newview/lltoolbar.h index 49d5ab343d..094d016e39 100644 --- a/indra/newview/lltoolbar.h +++ b/indra/newview/lltoolbar.h @@ -74,7 +74,6 @@ public: static void onClickCommunicate(LLUICtrl*, void*); static void onClickChat(void* data); static void onClickAppearance(void* data); - static void onClickClothing(void* data); static void onClickFly(void*); static void onClickSit(void*); static void onClickSnapshot(void* data); diff --git a/indra/newview/llviewerjoint.cpp b/indra/newview/llviewerjoint.cpp index 1cc062dbd2..c2591ac8d7 100644 --- a/indra/newview/llviewerjoint.cpp +++ b/indra/newview/llviewerjoint.cpp @@ -242,7 +242,7 @@ void LLViewerJoint::setValid( BOOL valid, BOOL recursive ) //-------------------------------------------------------------------- // render() //-------------------------------------------------------------------- -U32 LLViewerJoint::render( F32 pixelArea, BOOL first_pass ) +U32 LLViewerJoint::render( F32 pixelArea, BOOL first_pass, BOOL is_dummy ) { stop_glerror(); @@ -259,13 +259,13 @@ U32 LLViewerJoint::render( F32 pixelArea, BOOL first_pass ) // if object is transparent, defer it, otherwise // give the joint subclass a chance to draw itself //---------------------------------------------------------------- - if ( gRenderForSelect ) + if ( gRenderForSelect || is_dummy ) { - triangle_count += drawShape( pixelArea, first_pass ); + triangle_count += drawShape( pixelArea, first_pass, is_dummy ); } else if (LLPipeline::sShadowRender) { - triangle_count += drawShape(pixelArea, first_pass); + triangle_count += drawShape(pixelArea, first_pass, is_dummy ); } else if ( isTransparent() && !LLPipeline::sReflectionRender) { @@ -277,18 +277,18 @@ U32 LLViewerJoint::render( F32 pixelArea, BOOL first_pass ) // first pass renders without writing to the z buffer { LLGLDepthTest gls_depth(GL_TRUE, GL_FALSE); - triangle_count += drawShape( pixelArea, first_pass); + triangle_count += drawShape( pixelArea, first_pass, is_dummy ); } // second pass writes to z buffer only gGL.setColorMask(false, false); { - triangle_count += drawShape( pixelArea, FALSE ); + triangle_count += drawShape( pixelArea, FALSE, is_dummy ); } // third past respects z buffer and writes color gGL.setColorMask(true, false); { LLGLDepthTest gls_depth(GL_TRUE, GL_FALSE); - triangle_count += drawShape( pixelArea, FALSE ); + triangle_count += drawShape( pixelArea, FALSE, is_dummy ); } } else @@ -297,12 +297,12 @@ U32 LLViewerJoint::render( F32 pixelArea, BOOL first_pass ) glCullFace(GL_FRONT); { LLGLDepthTest gls_depth(GL_TRUE, GL_FALSE); - triangle_count += drawShape( pixelArea, first_pass ); + triangle_count += drawShape( pixelArea, first_pass, is_dummy ); } // Render Outside (write to the Z buffer) glCullFace(GL_BACK); { - triangle_count += drawShape( pixelArea, FALSE ); + triangle_count += drawShape( pixelArea, FALSE, is_dummy ); } } } @@ -323,7 +323,7 @@ U32 LLViewerJoint::render( F32 pixelArea, BOOL first_pass ) F32 jointLOD = joint->getLOD(); if (pixelArea >= jointLOD || sDisableLOD) { - triangle_count += joint->render( pixelArea ); + triangle_count += joint->render( pixelArea, TRUE, is_dummy ); if (jointLOD != DEFAULT_LOD) { @@ -404,7 +404,7 @@ BOOL LLViewerJoint::isTransparent() //-------------------------------------------------------------------- // drawShape() //-------------------------------------------------------------------- -U32 LLViewerJoint::drawShape( F32 pixelArea, BOOL first_pass ) +U32 LLViewerJoint::drawShape( F32 pixelArea, BOOL first_pass, BOOL is_dummy ) { return 0; } diff --git a/indra/newview/llviewerjoint.h b/indra/newview/llviewerjoint.h index a07902e582..0e993a2ebe 100644 --- a/indra/newview/llviewerjoint.h +++ b/indra/newview/llviewerjoint.h @@ -73,7 +73,7 @@ public: // Traverses the entire joint hierarchy, setting up // transforms and calling the drawShape(). // Derived classes may add text/graphic output. - virtual U32 render( F32 pixelArea, BOOL first_pass = TRUE ); // Returns triangle count + virtual U32 render( F32 pixelArea, BOOL first_pass = TRUE, BOOL is_dummy = FALSE ); // Returns triangle count // Returns true if this object is transparent. // This is used to determine in which order to draw objects. @@ -84,7 +84,7 @@ public: // Draws the shape attached to a joint. // Called by render(). - virtual U32 drawShape( F32 pixelArea, BOOL first_pass = TRUE ); + virtual U32 drawShape( F32 pixelArea, BOOL first_pass = TRUE, BOOL is_dummy = FALSE ); virtual void drawNormals() {} enum Components diff --git a/indra/newview/llviewerjointattachment.cpp b/indra/newview/llviewerjointattachment.cpp index 5bd8c93d6a..63c63e5546 100644 --- a/indra/newview/llviewerjointattachment.cpp +++ b/indra/newview/llviewerjointattachment.cpp @@ -85,7 +85,7 @@ BOOL LLViewerJointAttachment::isTransparent() //----------------------------------------------------------------------------- // drawShape() //----------------------------------------------------------------------------- -U32 LLViewerJointAttachment::drawShape( F32 pixelArea, BOOL first_pass ) +U32 LLViewerJointAttachment::drawShape( F32 pixelArea, BOOL first_pass, BOOL is_dummy ) { if (LLVOAvatar::sShowAttachmentPoints) { diff --git a/indra/newview/llviewerjointattachment.h b/indra/newview/llviewerjointattachment.h index 498226c79b..4847ac7a72 100644 --- a/indra/newview/llviewerjointattachment.h +++ b/indra/newview/llviewerjointattachment.h @@ -61,7 +61,7 @@ public: // Draws the shape attached to a joint. // Called by render(). - /*virtual*/ U32 drawShape( F32 pixelArea, BOOL first_pass ); + /*virtual*/ U32 drawShape( F32 pixelArea, BOOL first_pass, BOOL is_dummy ); /*virtual*/ BOOL updateLOD(F32 pixel_area, BOOL activate); diff --git a/indra/newview/llviewerjointmesh.cpp b/indra/newview/llviewerjointmesh.cpp index c0e02921cf..b6f0dafae6 100644 --- a/indra/newview/llviewerjointmesh.cpp +++ b/indra/newview/llviewerjointmesh.cpp @@ -505,7 +505,7 @@ int compare_int(const void *a, const void *b) //-------------------------------------------------------------------- // LLViewerJointMesh::drawShape() //-------------------------------------------------------------------- -U32 LLViewerJointMesh::drawShape( F32 pixelArea, BOOL first_pass) +U32 LLViewerJointMesh::drawShape( F32 pixelArea, BOOL first_pass, BOOL is_dummy) { if (!mValid || !mMesh || !mFace || !mVisible || mFace->mVertexBuffer.isNull() || @@ -523,7 +523,10 @@ U32 LLViewerJointMesh::drawShape( F32 pixelArea, BOOL first_pass) //---------------------------------------------------------------- if (!gRenderForSelect) { - glColor4fv(mColor.mV); + if (is_dummy) + glColor4fv(LLVOAvatar::getDummyColor().mV); + else + glColor4fv(mColor.mV); } stop_glerror(); @@ -550,7 +553,7 @@ U32 LLViewerJointMesh::drawShape( F32 pixelArea, BOOL first_pass) gGL.getTexUnit(0)->setTextureColorBlend(LLTexUnit::TBO_LERP_TEX_ALPHA, LLTexUnit::TBS_TEX_COLOR, LLTexUnit::TBS_PREV_COLOR); } } - else if( mLayerSet ) + else if( !is_dummy && mLayerSet ) { if( mLayerSet->hasComposite() ) { @@ -568,7 +571,7 @@ U32 LLViewerJointMesh::drawShape( F32 pixelArea, BOOL first_pass) } } else - if ( mTexture.notNull() ) + if ( !is_dummy && mTexture.notNull() ) { old_mode = mTexture->getAddressMode(); gGL.getTexUnit(0)->bind(mTexture.get()); @@ -628,7 +631,7 @@ U32 LLViewerJointMesh::drawShape( F32 pixelArea, BOOL first_pass) gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT); } - if (mTexture.notNull()) + if (mTexture.notNull() && !is_dummy) { gGL.getTexUnit(0)->bind(mTexture.get()); gGL.getTexUnit(0)->setTextureAddressMode(old_mode); diff --git a/indra/newview/llviewerjointmesh.h b/indra/newview/llviewerjointmesh.h index 7dce044d90..0cae48df93 100644 --- a/indra/newview/llviewerjointmesh.h +++ b/indra/newview/llviewerjointmesh.h @@ -138,7 +138,7 @@ public: // overloaded from base class /*virtual*/ void drawBone(); /*virtual*/ BOOL isTransparent(); - /*virtual*/ U32 drawShape( F32 pixelArea, BOOL first_pass ); + /*virtual*/ U32 drawShape( F32 pixelArea, BOOL first_pass, BOOL is_dummy ); /*virtual*/ void updateFaceSizes(U32 &num_vertices, U32& num_indices, F32 pixel_area); /*virtual*/ void updateFaceData(LLFace *face, F32 pixel_area, BOOL damp_wind = FALSE); diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 4fd0c8dc8a..a50ff1df9f 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -953,13 +953,6 @@ void init_client_menu(LLMenuGL* menu) &menu_check_control, (void*)"SaveMinidump")); - // TomY Temporary menu item so we can test this floater - menu->append(new LLMenuItemCheckGL("Clothing...", - &handle_clothing, - NULL, - NULL, - NULL)); - menu->append(new LLMenuItemCallGL("Debug Settings...", LLFloaterSettingsDebug::show, NULL, NULL)); menu->append(new LLMenuItemCheckGL("View Admin Options", &handle_admin_override_toggle, NULL, &check_admin_override, NULL, 'V', MASK_CONTROL | MASK_ALT)); @@ -1369,8 +1362,14 @@ void init_debug_avatar_menu(LLMenuGL* menu) //menu->append(new LLMenuItemToggleGL("Show Attachment Points", &LLVOAvatar::sShowAttachmentPoints)); //diabling collision plane due to DEV-14477 -brad //menu->append(new LLMenuItemToggleGL("Show Collision Plane", &LLVOAvatar::sShowFootPlane)); - menu->append(new LLMenuItemToggleGL("Show Collision Skeleton", &LLVOAvatar::sShowCollisionVolumes)); - menu->append(new LLMenuItemToggleGL( "Display Agent Target", &LLAgent::sDebugDisplayTarget)); + menu->append(new LLMenuItemCheckGL("Show Collision Skeleton", + &LLPipeline::toggleRenderDebug, NULL, + &LLPipeline::toggleRenderDebugControl, + (void*)LLPipeline::RENDER_DEBUG_AVATAR_VOLUME)); + menu->append(new LLMenuItemCheckGL("Display Agent Target", + &LLPipeline::toggleRenderDebug, NULL, + &LLPipeline::toggleRenderDebugControl, + (void*)LLPipeline::RENDER_DEBUG_AGENT_TARGET)); menu->append(new LLMenuItemToggleGL( "Debug Rotation", &LLVOAvatar::sDebugAvatarRotation)); menu->append(new LLMenuItemCallGL("Dump Attachments", handle_dump_attachments)); menu->append(new LLMenuItemCallGL("Rebake Textures", handle_rebake_textures, NULL, NULL, 'R', MASK_ALT | MASK_CONTROL )); @@ -4032,18 +4031,6 @@ BOOL sitting_on_selection() return (avatar->mIsSitting && avatar->getRoot() == root_object); } -class LLToolsSaveToInventory : public view_listener_t -{ - bool handleEvent(LLPointer event, const LLSD& userdata) - { - if(enable_save_into_inventory(NULL)) - { - derez_objects(DRD_SAVE_INTO_AGENT_INVENTORY, LLUUID::null); - } - return true; - } -}; - class LLToolsSaveToObjectInventory : public view_listener_t { bool handleEvent(LLPointer event, const LLSD& userdata) @@ -6423,16 +6410,6 @@ BOOL enable_save_into_inventory(void*) return FALSE; } -class LLToolsEnableSaveToInventory : public view_listener_t -{ - bool handleEvent(LLPointer event, const LLSD& userdata) - { - bool new_value = enable_save_into_inventory(NULL); - gMenuHolder->findControl(userdata["control"].asString())->setValue(new_value); - return true; - } -}; - BOOL enable_save_into_task_inventory(void*) { LLSelectNode* node = LLSelectMgr::getInstance()->getSelection()->getFirstRootNode(); @@ -7547,7 +7524,6 @@ void initialize_menus() addMenu(new LLToolsLookAtSelection(), "Tools.LookAtSelection"); addMenu(new LLToolsBuyOrTake(), "Tools.BuyOrTake"); addMenu(new LLToolsTakeCopy(), "Tools.TakeCopy"); - addMenu(new LLToolsSaveToInventory(), "Tools.SaveToInventory"); addMenu(new LLToolsSaveToObjectInventory(), "Tools.SaveToObjectInventory"); addMenu(new LLToolsSelectedScriptAction(), "Tools.SelectedScriptAction"); @@ -7556,7 +7532,6 @@ void initialize_menus() addMenu(new LLToolsEnableUnlink(), "Tools.EnableUnlink"); addMenu(new LLToolsEnableBuyOrTake(), "Tools.EnableBuyOrTake"); addMenu(new LLToolsEnableTakeCopy(), "Tools.EnableTakeCopy"); - addMenu(new LLToolsEnableSaveToInventory(), "Tools.EnableSaveToInventory"); addMenu(new LLToolsEnableSaveToObjectInventory(), "Tools.EnableSaveToObjectInventory"); /*addMenu(new LLToolsVisibleBuyObject(), "Tools.VisibleBuyObject"); diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 088ba62d0c..520de0e403 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -3359,6 +3359,12 @@ void process_sound_trigger(LLMessageSystem *msg, void **) return; } + // Don't play sounds from a region with maturity above current agent maturity + if( !gAgent.canAccessMaturityInRegion( region_handle ) ) + { + return; + } + gAudiop->triggerSound(sound_id, owner_id, gain, LLAudioEngine::AUDIO_TYPE_SFX, pos_global); } @@ -3392,6 +3398,13 @@ void process_preload_sound(LLMessageSystem *msg, void **user_data) // audio data into a buffer at this point, as it won't actually // help us out. + // Don't play sounds from a region with maturity above current agent maturity + LLVector3d pos_global = objectp->getPositionGlobal(); + if( !gAgent.canAccessMaturityAtGlobal( pos_global ) ) + { + return; + } + // Add audioData starts a transfer internally. sourcep->addAudioData(datap, FALSE); } @@ -3421,6 +3434,14 @@ void process_attached_sound(LLMessageSystem *msg, void **user_data) if (LLMuteList::getInstance()->isMuted(owner_id, LLMute::flagObjectSounds)) return; + + // Don't play sounds from a region with maturity above current agent maturity + LLVector3d pos = objectp->getPositionGlobal(); + if( !gAgent.canAccessMaturityAtGlobal(pos) ) + { + return; + } + objectp->setAttachedSound(sound_id, owner_id, gain, flags); } @@ -4839,7 +4860,7 @@ void process_teleport_failed(LLMessageSystem *msg, void**) LLSD args; // if we have additional alert data - if (msg->getSizeFast(_PREHASH_AlertInfo, _PREHASH_Message) > 0) + if (msg->getNumberOfBlocksFast(_PREHASH_AlertInfo) > 0) { // Get the message ID msg->getStringFast(_PREHASH_AlertInfo, _PREHASH_Message, reason); diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp index 32c89e158c..d4e594656b 100644 --- a/indra/newview/llviewerobject.cpp +++ b/indra/newview/llviewerobject.cpp @@ -4372,8 +4372,13 @@ void LLViewerObject::setAttachedSound(const LLUUID &audio_uuid, const LLUUID& ow { mAudioSourcep->play(LLUUID::null); } - //llinfos << "Playing attached sound " << audio_uuid << llendl; - mAudioSourcep->play(audio_uuid); + + // Play this sound if region maturity permits + if( gAgent.canAccessMaturityAtGlobal(this->getPositionGlobal()) ) + { + //llinfos << "Playing attached sound " << audio_uuid << llendl; + mAudioSourcep->play(audio_uuid); + } } } diff --git a/indra/newview/llviewerparcelmgr.cpp b/indra/newview/llviewerparcelmgr.cpp index 07203ce0f4..193dfaae96 100644 --- a/indra/newview/llviewerparcelmgr.cpp +++ b/indra/newview/llviewerparcelmgr.cpp @@ -1324,9 +1324,9 @@ void LLViewerParcelMgr::processParcelOverlay(LLMessageSystem *msg, void **user) // Extract the packed overlay information S32 packed_overlay_size = msg->getSizeFast(_PREHASH_ParcelData, _PREHASH_Data); - if (packed_overlay_size == 0) + if (packed_overlay_size <= 0) { - llwarns << "Overlay size 0" << llendl; + llwarns << "Overlay size " << packed_overlay_size << llendl; return; } @@ -2027,6 +2027,25 @@ bool LLViewerParcelMgr::canAgentBuyParcel(LLParcel* parcel, bool forGroup) const return true; // change this if want to make it gods only } + LLViewerRegion* regionp = LLViewerParcelMgr::getInstance()->getSelectionRegion(); + if (regionp) + { + U8 sim_access = regionp->getSimAccess(); + const LLAgentAccess& agent_access = gAgent.getAgentAccess(); + // if the region is PG, we're happy already, so do nothing + // but if we're set to avoid either mature or adult, get us outta here + if ((sim_access == SIM_ACCESS_MATURE) && + !agent_access.canAccessMature()) + { + return false; + } + else if ((sim_access == SIM_ACCESS_ADULT) && + !agent_access.canAccessAdult()) + { + return false; + } + } + bool isForSale = parcel->getForSale() && ((parcel->getSalePrice() > 0) || (authorizeBuyer.notNull())); diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp index 44d0304533..12d9c1a992 100644 --- a/indra/newview/llviewerregion.cpp +++ b/indra/newview/llviewerregion.cpp @@ -1304,10 +1304,10 @@ void LLViewerRegion::unpackRegionHandshake() std::string productName; // the only reasonable way to decide if we actually have any data is to - // check to see if any of these fields have nonzero sizes - if (msg->getSize("RegionInfo3", "ColoName") || - msg->getSize("RegionInfo3", "ProductSKU") || - msg->getSize("RegionInfo3", "ProductName")) + // check to see if any of these fields have positive sizes + if (msg->getSize("RegionInfo3", "ColoName") > 0 || + msg->getSize("RegionInfo3", "ProductSKU") > 0 || + msg->getSize("RegionInfo3", "ProductName") > 0) { msg->getS32 ("RegionInfo3", "CPUClassID", classID); msg->getS32 ("RegionInfo3", "CPURatio", cpuRatio); @@ -1416,6 +1416,7 @@ void LLViewerRegion::setSeedCapability(const std::string& url) capabilityNames.append("NewFileAgentInventory"); capabilityNames.append("ParcelPropertiesUpdate"); capabilityNames.append("ParcelVoiceInfoRequest"); + capabilityNames.append("ProductInfoRequest"); capabilityNames.append("ProvisionVoiceAccountRequest"); capabilityNames.append("RemoteParcelRequest"); capabilityNames.append("RequestTextureDownload"); diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index 26ddf213d2..c827d3fcf4 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -1219,9 +1219,8 @@ LLViewerWindow::LLViewerWindow( mIsFullscreenChecked(false), mCurrResolutionIndex(0) { - // these are self registering so they don't need to be retained here - new LLNotificationChannel("VW_alerts", "Visible", LLNotificationFilters::filterBy(&LLNotification::getType, "alert")); - new LLNotificationChannel("VW_alertmodal", "Visible", LLNotificationFilters::filterBy(&LLNotification::getType, "alertmodal")); + LLNotificationChannel::buildChannel("VW_alerts", "Visible", LLNotificationFilters::filterBy(&LLNotification::getType, "alert")); + LLNotificationChannel::buildChannel("VW_alertmodal", "Visible", LLNotificationFilters::filterBy(&LLNotification::getType, "alertmodal")); LLNotifications::instance().getChannel("VW_alerts")->connectChanged(&LLViewerWindow::onAlert); LLNotifications::instance().getChannel("VW_alertmodal")->connectChanged(&LLViewerWindow::onAlert); diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index e5507dfacb..b06652a5dc 100644 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -163,6 +163,8 @@ const S32 MAX_BUBBLE_CHAT_UTTERANCES = 12; const F32 CHAT_FADE_TIME = 8.0; const F32 BUBBLE_CHAT_TIME = CHAT_FADE_TIME * 3.f; +const LLColor4 DUMMY_COLOR = LLColor4(0.5,0.5,0.5,1.0); + enum ERenderName { RENDER_NAME_NEVER, @@ -681,7 +683,6 @@ BOOL LLVOAvatar::sDebugInvisible = FALSE; BOOL LLVOAvatar::sShowAttachmentPoints = FALSE; BOOL LLVOAvatar::sShowAnimationDebug = FALSE; BOOL LLVOAvatar::sShowFootPlane = FALSE; -BOOL LLVOAvatar::sShowCollisionVolumes = FALSE; BOOL LLVOAvatar::sVisibleInFirstPerson = FALSE; F32 LLVOAvatar::sLODFactor = 1.f; BOOL LLVOAvatar::sUseImpostors = FALSE; @@ -4138,9 +4139,11 @@ U32 LLVOAvatar::renderSkinned(EAvatarRenderPass pass) if (pass == AVATAR_RENDER_PASS_SINGLE) { - bool should_alpha_mask = mHasBakedHair && isTextureDefined(TEX_HEAD_BAKED) && isTextureDefined(TEX_UPPER_BAKED) - && isTextureDefined(TEX_LOWER_BAKED) && mBakedTextureData[BAKED_HEAD].mIsLoaded - && mBakedTextureData[BAKED_UPPER].mIsLoaded && mBakedTextureData[BAKED_LOWER].mIsLoaded; + const bool should_alpha_mask = mHasBakedHair && isTextureDefined(TEX_HEAD_BAKED) && isTextureDefined(TEX_UPPER_BAKED) + && isTextureDefined(TEX_LOWER_BAKED) && mBakedTextureData[BAKED_HEAD].mIsLoaded + && mBakedTextureData[BAKED_UPPER].mIsLoaded && mBakedTextureData[BAKED_LOWER].mIsLoaded + && !LLDrawPoolAlpha::sShowDebugAlpha; // Don't alpha mask if "Highlight Transparent" checked + LLGLState test(GL_ALPHA_TEST, should_alpha_mask); if (should_alpha_mask) @@ -4153,21 +4156,21 @@ U32 LLVOAvatar::renderSkinned(EAvatarRenderPass pass) { if (!mIsSelf || gAgent.needsRenderHead() || LLPipeline::sShadowRender) { - if (isTextureVisible(TEX_HEAD_BAKED)) + if (isTextureVisible(TEX_HEAD_BAKED) || mIsDummy) { - num_indices += mMeshLOD[MESH_ID_HEAD]->render(mAdjustedPixelArea); + num_indices += mMeshLOD[MESH_ID_HEAD]->render(mAdjustedPixelArea, TRUE, mIsDummy); first_pass = FALSE; } } - if (isTextureVisible(TEX_UPPER_BAKED)) + if (isTextureVisible(TEX_UPPER_BAKED) || mIsDummy) { - num_indices += mMeshLOD[MESH_ID_UPPER_BODY]->render(mAdjustedPixelArea, first_pass); + num_indices += mMeshLOD[MESH_ID_UPPER_BODY]->render(mAdjustedPixelArea, first_pass, mIsDummy); first_pass = FALSE; } - if (isTextureVisible(TEX_LOWER_BAKED)) + if (isTextureVisible(TEX_LOWER_BAKED) || mIsDummy) { - num_indices += mMeshLOD[MESH_ID_LOWER_BODY]->render(mAdjustedPixelArea, first_pass); + num_indices += mMeshLOD[MESH_ID_LOWER_BODY]->render(mAdjustedPixelArea, first_pass, mIsDummy); first_pass = FALSE; } } @@ -4176,8 +4179,11 @@ U32 LLVOAvatar::renderSkinned(EAvatarRenderPass pass) if (!LLDrawPoolAvatar::sSkipTransparent || LLPipeline::sImpostorRender) { - LLGLEnable blend(GL_BLEND); - LLGLEnable test(GL_ALPHA_TEST); + if (!mIsDummy) + { + LLGLEnable blend(GL_BLEND); + LLGLEnable test(GL_ALPHA_TEST); + } num_indices += renderTransparent(first_pass); } } @@ -4194,7 +4200,7 @@ U32 LLVOAvatar::renderSkinned(EAvatarRenderPass pass) U32 LLVOAvatar::renderTransparent(BOOL first_pass) { U32 num_indices = 0; - if( isWearingWearableType( WT_SKIRT ) && isTextureVisible(TEX_SKIRT_BAKED) ) + if( isWearingWearableType( WT_SKIRT ) && (mIsDummy || isTextureVisible(TEX_SKIRT_BAKED)) ) { gGL.setAlphaRejectSettings(LLRender::CF_GREATER, 0.25f); num_indices += mMeshLOD[MESH_ID_SKIRT]->render(mAdjustedPixelArea, FALSE); @@ -4211,12 +4217,14 @@ U32 LLVOAvatar::renderTransparent(BOOL first_pass) if (isTextureVisible(TEX_HEAD_BAKED)) { - num_indices += mMeshLOD[MESH_ID_EYELASH]->render(mAdjustedPixelArea, first_pass); + num_indices += mMeshLOD[MESH_ID_EYELASH]->render(mAdjustedPixelArea, first_pass, mIsDummy); first_pass = FALSE; } - if (isTextureVisible(TEX_HAIR_BAKED)) + // Can't test for baked hair being defined, since that won't always be the case (not all viewers send baked hair) + // TODO: 1.25 will be able to switch this logic back to calling isTextureVisible(); + if (getTEImage(TEX_HAIR_BAKED)->getID() != IMG_INVISIBLE || LLDrawPoolAlpha::sShowDebugAlpha) { - num_indices += mMeshLOD[MESH_ID_HAIR]->render(mAdjustedPixelArea, first_pass); + num_indices += mMeshLOD[MESH_ID_HAIR]->render(mAdjustedPixelArea, first_pass, mIsDummy); first_pass = FALSE; } if (LLPipeline::sImpostorRender) @@ -4250,7 +4258,7 @@ U32 LLVOAvatar::renderRigid() return 0; } - if (isTextureVisible(TEX_EYES_BAKED)) + if (isTextureVisible(TEX_EYES_BAKED) || mIsDummy) { // If the meshes need to be drawn, enable alpha masking but not blending bool should_alpha_mask = mHasBakedHair && mBakedTextureData[BAKED_EYES].mIsLoaded; @@ -4261,8 +4269,8 @@ U32 LLVOAvatar::renderRigid() gGL.setAlphaRejectSettings(LLRender::CF_GREATER, 0.5f); } - num_indices += mMeshLOD[MESH_ID_EYEBALL_LEFT]->render(mAdjustedPixelArea); - num_indices += mMeshLOD[MESH_ID_EYEBALL_RIGHT]->render(mAdjustedPixelArea); + num_indices += mMeshLOD[MESH_ID_EYEBALL_LEFT]->render(mAdjustedPixelArea, TRUE, mIsDummy); + num_indices += mMeshLOD[MESH_ID_EYEBALL_RIGHT]->render(mAdjustedPixelArea, TRUE, mIsDummy); gGL.setAlphaRejectSettings(LLRender::CF_DEFAULT); } @@ -6882,10 +6890,10 @@ void LLVOAvatar::updateMeshTextures() { llwarns << "updateMeshTextures: invalid host for object: " << getID() << llendl; } - + for (U32 i=0; i < mBakedTextureData.size(); i++) { - if (use_lkg_baked_layer[i]) + if (use_lkg_baked_layer[i] && !self_customizing ) { LLViewerImage* baked_img = gImageList.getImageFromHost( mBakedTextureData[i].mLastTextureIndex, target_host ); for (U32 k=0; k < mBakedTextureData[i].mMeshes.size(); k++) @@ -7181,6 +7189,7 @@ void LLVOAvatar::setNewBakedTexture( ETextureIndex te, const LLUUID& uuid ) updateMeshTextures(); dirtyMesh(); + LLVOAvatar::cullAvatarsByPixelArea(); /* switch(te) @@ -7190,6 +7199,7 @@ void LLVOAvatar::setNewBakedTexture( ETextureIndex te, const LLUUID& uuid ) if (text_dict->mIsBakedTexture) { llinfos << "New baked texture: " << text_dict->mName << " UUID: " << uuid <mBakedTextureIndex].mTexLayerSet->requestUpdate(); } else { @@ -7519,6 +7529,11 @@ void LLVOAvatar::setInvisible(BOOL newvalue) } } +LLColor4 LLVOAvatar::getDummyColor() +{ + return DUMMY_COLOR; +} + // Given a texture entry, determine which wearable type owns it. // static EWearableType LLVOAvatar::getTEWearableType(ETextureIndex index ) @@ -7598,6 +7613,40 @@ BOOL LLVOAvatar::isWearingWearableType( EWearableType type ) return FALSE; } +//----------------------------------------------------------------------------- +// updatedWearable( EWearableType type ) +// forces an update to any baked textures relevant to type. +// Should be called only on saving the wearable +//----------------------------------------------------------------------------- +void LLVOAvatar::wearableUpdated( EWearableType type ) +{ + for (LLVOAvatarDictionary::wearable_map_t::const_iterator wearable_iter = LLVOAvatarDictionary::getInstance()->getWearables().begin(); + wearable_iter != LLVOAvatarDictionary::getInstance()->getWearables().end(); + wearable_iter++) + { + const LLVOAvatarDictionary::WearableDictionaryEntry *wearable_dict = wearable_iter->second; + const LLVOAvatarDefines::EBakedTextureIndex index = wearable_iter->first; + if (wearable_dict) + { + for (LLVOAvatarDefines::wearables_vec_t::const_iterator type_iter = wearable_dict->mWearablesVec.begin(); + type_iter != wearable_dict->mWearablesVec.end(); + type_iter++) + { + const EWearableType comp_type = *type_iter; + if (comp_type == type) + { + if (mBakedTextureData[index].mTexLayerSet) + { + mBakedTextureData[index].mTexLayerSet->requestUpdate(); + mBakedTextureData[index].mTexLayerSet->requestUpload(); + } + break; + } + } + } + } +} + //----------------------------------------------------------------------------- // clampAttachmentPositions() diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h index bdb32319f8..50eec80ba7 100644 --- a/indra/newview/llvoavatar.h +++ b/indra/newview/llvoavatar.h @@ -40,6 +40,7 @@ #include #include "llchat.h" +#include "lldrawpoolalpha.h" #include "llviewerobject.h" #include "llcharacter.h" #include "llviewerjointmesh.h" @@ -325,6 +326,7 @@ public: static LLUUID getDefaultTEImageID(LLVOAvatarDefines::ETextureIndex te ); static void onChangeSelfInvisible(BOOL newvalue); void setInvisible(BOOL newvalue); + static LLColor4 getDummyColor(); @@ -337,6 +339,7 @@ public: BOOL teToColorParams( LLVOAvatarDefines::ETextureIndex te, const char* param_name[3] ); BOOL isWearingWearableType( EWearableType type ); + void wearableUpdated( EWearableType type ); //-------------------------------------------------------------------- // texture compositing @@ -510,7 +513,6 @@ public: static BOOL sShowAnimationDebug; // show animation debug info static BOOL sUseImpostors; //use impostors for far away avatars static BOOL sShowFootPlane; // show foot collision plane reported by server - static BOOL sShowCollisionVolumes; // show skeletal collision volumes static BOOL sVisibleInFirstPerson; static S32 sNumLODChangesThisFrame; static S32 sNumVisibleChatBubbles; @@ -755,7 +757,9 @@ inline BOOL LLVOAvatar::isTextureDefined(U8 te) const inline BOOL LLVOAvatar::isTextureVisible(U8 te) const { - return (!isTextureDefined(te) || getTEImage(te)->getID() != IMG_INVISIBLE); + return ((isTextureDefined(te) || isSelf()) + && (getTEImage(te)->getID() != IMG_INVISIBLE + || LLDrawPoolAlpha::sShowDebugAlpha)); } #endif // LL_VO_AVATAR_H diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index 9d6fb6ebd5..8f11661b30 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -2271,6 +2271,14 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group) const LLTextureEntry* te = facep->getTextureEntry(); LLViewerImage* tex = facep->getTexture(); + if (facep->isState(LLFace::TEXTURE_ANIM)) + { + if (!vobj->mTexAnimMode) + { + facep->clearState(LLFace::TEXTURE_ANIM); + } + } + BOOL force_simple = (facep->mPixelArea < FORCE_SIMPLE_RENDER_AREA); U32 type = gPipeline.getPoolTypeFromTE(te, tex); if (type != LLDrawPool::POOL_ALPHA && force_simple) @@ -2333,6 +2341,7 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group) } else { //doesn't need normal + facep->setState(LLFace::FULLBRIGHT); fullbright_faces.push_back(facep); } } @@ -2349,6 +2358,7 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group) } else { //doesn't need normal + facep->setState(LLFace::FULLBRIGHT); fullbright_faces.push_back(facep); } } @@ -2678,6 +2688,7 @@ void LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, std:: } else { + llassert(mask & LLVertexBuffer::MAP_NORMAL); registerFace(group, facep, LLRenderPass::PASS_SIMPLE); } } @@ -2708,6 +2719,7 @@ void LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, std:: } else { + llassert(mask & LLVertexBuffer::MAP_NORMAL); registerFace(group, facep, LLRenderPass::PASS_SIMPLE); } } @@ -2720,7 +2732,8 @@ void LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, std:: if (!is_alpha && !LLPipeline::sRenderDeferred) { - facep->setPoolType(LLDrawPool::POOL_SIMPLE); + llassert((mask & LLVertexBuffer::MAP_NORMAL) || fullbright); + facep->setPoolType((fullbright) ? LLDrawPool::POOL_FULLBRIGHT : LLDrawPool::POOL_SIMPLE); if (!force_simple && te->getBumpmap()) { diff --git a/indra/newview/llworldmapview.cpp b/indra/newview/llworldmapview.cpp index 62c4d832cf..99f559cc79 100644 --- a/indra/newview/llworldmapview.cpp +++ b/indra/newview/llworldmapview.cpp @@ -765,7 +765,9 @@ void LLWorldMapView::draw() } } - if (gSavedSettings.getBOOL("MapShowEvents")) + if (gSavedSettings.getBOOL("MapShowEvents") || + gSavedSettings.getBOOL("ShowMatureEvents") || + gSavedSettings.getBOOL("ShowAdultEvents") ) { drawEvents(); } @@ -965,18 +967,22 @@ void LLWorldMapView::drawEvents() bool mature_enabled = gAgent.canAccessMature(); bool adult_enabled = gAgent.canAccessAdult(); + BOOL show_pg = gSavedSettings.getBOOL("MapShowEvents"); BOOL show_mature = mature_enabled && gSavedSettings.getBOOL("ShowMatureEvents"); BOOL show_adult = adult_enabled && gSavedSettings.getBOOL("ShowAdultEvents"); // First the non-selected events LLWorldMap::item_info_list_t::const_iterator e; - for (e = LLWorldMap::getInstance()->mPGEvents.begin(); e != LLWorldMap::getInstance()->mPGEvents.end(); ++e) - { - if (!e->mSelected) - { - drawGenericItem(*e, sEventImage); - } - } + if (show_pg) + { + for (e = LLWorldMap::getInstance()->mPGEvents.begin(); e != LLWorldMap::getInstance()->mPGEvents.end(); ++e) + { + if (!e->mSelected) + { + drawGenericItem(*e, sEventImage); + } + } + } if (show_mature) { for (e = LLWorldMap::getInstance()->mMatureEvents.begin(); e != LLWorldMap::getInstance()->mMatureEvents.end(); ++e) @@ -998,13 +1004,16 @@ void LLWorldMapView::drawEvents() } } // Then the selected events - for (e = LLWorldMap::getInstance()->mPGEvents.begin(); e != LLWorldMap::getInstance()->mPGEvents.end(); ++e) - { - if (e->mSelected) - { - drawGenericItem(*e, sEventImage); - } - } + if (show_pg) + { + for (e = LLWorldMap::getInstance()->mPGEvents.begin(); e != LLWorldMap::getInstance()->mPGEvents.end(); ++e) + { + if (e->mSelected) + { + drawGenericItem(*e, sEventImage); + } + } + } if (show_mature) { for (e = LLWorldMap::getInstance()->mMatureEvents.begin(); e != LLWorldMap::getInstance()->mMatureEvents.end(); ++e) @@ -1638,34 +1647,34 @@ void LLWorldMapView::handleClick(S32 x, S32 y, MASK mask, return; } } - if (gSavedSettings.getBOOL("ShowMatureEvents")) + } + if (gSavedSettings.getBOOL("ShowMatureEvents")) + { + for (it = LLWorldMap::getInstance()->mMatureEvents.begin(); it != LLWorldMap::getInstance()->mMatureEvents.end(); ++it) { - for (it = LLWorldMap::getInstance()->mMatureEvents.begin(); it != LLWorldMap::getInstance()->mMatureEvents.end(); ++it) - { - LLItemInfo& event = *it; + LLItemInfo& event = *it; - if (checkItemHit(x, y, event, id, false)) - { - *hit_type = MAP_ITEM_MATURE_EVENT; - mItemPicked = TRUE; - gFloaterWorldMap->trackEvent(event); - return; - } + if (checkItemHit(x, y, event, id, false)) + { + *hit_type = MAP_ITEM_MATURE_EVENT; + mItemPicked = TRUE; + gFloaterWorldMap->trackEvent(event); + return; } } - if (gSavedSettings.getBOOL("ShowAdultEvents")) + } + if (gSavedSettings.getBOOL("ShowAdultEvents")) + { + for (it = LLWorldMap::getInstance()->mAdultEvents.begin(); it != LLWorldMap::getInstance()->mAdultEvents.end(); ++it) { - for (it = LLWorldMap::getInstance()->mAdultEvents.begin(); it != LLWorldMap::getInstance()->mAdultEvents.end(); ++it) - { - LLItemInfo& event = *it; + LLItemInfo& event = *it; - if (checkItemHit(x, y, event, id, false)) - { - *hit_type = MAP_ITEM_ADULT_EVENT; - mItemPicked = TRUE; - gFloaterWorldMap->trackEvent(event); - return; - } + if (checkItemHit(x, y, event, id, false)) + { + *hit_type = MAP_ITEM_ADULT_EVENT; + mItemPicked = TRUE; + gFloaterWorldMap->trackEvent(event); + return; } } } diff --git a/indra/newview/pipeline.h b/indra/newview/pipeline.h index ca0f4af1ac..0ec4e43806 100644 --- a/indra/newview/pipeline.h +++ b/indra/newview/pipeline.h @@ -360,6 +360,8 @@ public: RENDER_DEBUG_SHAME = 0x0020000, RENDER_DEBUG_SHADOW_FRUSTA = 0x0040000, RENDER_DEBUG_SCULPTED = 0x0080000, + RENDER_DEBUG_AVATAR_VOLUME = 0x0100000, + RENDER_DEBUG_AGENT_TARGET = 0x0200000, }; public: diff --git a/indra/newview/skins/default/xui/da/floater_about.xml b/indra/newview/skins/default/xui/da/floater_about.xml index 41f71718c8..b747bdaf53 100644 --- a/indra/newview/skins/default/xui/da/floater_about.xml +++ b/indra/newview/skins/default/xui/da/floater_about.xml @@ -21,6 +21,7 @@ Tak til følgende beboerne for at bidrage til at sikre, at dette er den bedste v SSLeay Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) xmlrpc-epi Copyright (C) 2000 Epinions, Inc. zlib Copyright (C) 1995-2002 Jean-loup Gailly and Mark Adler. + google-perftools Copyright (c) 2005, Google Inc. Alle rettigheder forbeholdes. Se licenses.txt for detaljer. diff --git a/indra/newview/skins/default/xui/da/floater_about_land.xml b/indra/newview/skins/default/xui/da/floater_about_land.xml index 3612797a7f..53be71fdd1 100644 --- a/indra/newview/skins/default/xui/da/floater_about_land.xml +++ b/indra/newview/skins/default/xui/da/floater_about_land.xml @@ -1,71 +1,80 @@ - - + + - + Navn: - + Beskrivelse: - + Ejer: - + Leyla Linden -