From 8ed056fde9fe5fc9755158013a5cb8be73066e2c Mon Sep 17 00:00:00 2001 From: Adam Moss Date: Sat, 20 Jun 2009 09:17:56 +0000 Subject: svn merge -r124872:124873 svn+ssh://svn.lindenlab.com/svn/linden/branches/viewer/viewer-1.23.threefour-merge-1a QAR-1592 Merge of changes between 1.23 RC2 and 1.23 Final to trunk --- doc/contributions.txt | 2 + indra/llcommon/llversionviewer.h | 2 +- indra/llcrashlogger/llcrashlogger.cpp | 3 + indra/llrender/llimagegl.cpp | 12 +- indra/llrender/llimagegl.h | 7 +- indra/llui/llview.cpp | 27 +- indra/newview/app_settings/settings.xml | 15 +- indra/newview/da.lproj/language.txt | 1 + indra/newview/es.lproj/language.txt | 1 + indra/newview/featuretable.txt | 3 +- indra/newview/featuretable_linux.txt | 2 +- indra/newview/featuretable_mac.txt | 2 +- indra/newview/fr.lproj/language.txt | 1 + indra/newview/hu.lproj/language.txt | 1 + indra/newview/installers/windows/lang_fr.nsi | Bin 8118 -> 8114 bytes indra/newview/it.lproj/language.txt | 1 + indra/newview/linux_tools/wrapper.sh | 4 +- indra/newview/llagent.cpp | 15 +- indra/newview/llappviewer.cpp | 35 +- indra/newview/llappviewermacosx.cpp | 47 +- indra/newview/llappviewermacosx.h | 1 - indra/newview/llappviewerwin32.cpp | 39 +- indra/newview/lldrawable.cpp | 16 +- indra/newview/lldrawable.h | 2 +- indra/newview/lldrawpoolsky.cpp | 68 +- indra/newview/lldrawpoolsky.h | 4 - indra/newview/llface.cpp | 15 + indra/newview/llfloaterchat.cpp | 3 + indra/newview/llfloaterimagepreview.cpp | 44 +- indra/newview/llfloaterlagmeter.cpp | 2 +- indra/newview/llsky.cpp | 14 - indra/newview/llspatialpartition.h | 2 +- indra/newview/lltexlayer.cpp | 6 +- indra/newview/lltextureview.cpp | 8 +- indra/newview/lltoolcomp.cpp | 12 +- indra/newview/llviewerobject.cpp | 19 +- indra/newview/llviewerobject.h | 1 + indra/newview/llviewerstats.cpp | 4 +- indra/newview/llviewerwindow.cpp | 2 +- indra/newview/llvoavatar.cpp | 6 +- indra/newview/llvosky.cpp | 4 +- indra/newview/llvovolume.cpp | 54 +- indra/newview/llvovolume.h | 2 + indra/newview/nl.lproj/language.txt | 1 + indra/newview/pipeline.cpp | 14 +- indra/newview/pl.lproj/language.txt | 1 + indra/newview/pt.lproj/language.txt | 1 + indra/newview/ru.lproj/language.txt | 1 + .../newview/skins/default/xui/da/floater_about.xml | 4 +- .../skins/default/xui/da/floater_about_land.xml | 440 ++-- .../default/xui/da/floater_animation_preview.xml | 13 +- .../skins/default/xui/da/floater_avatar_picker.xml | 47 +- .../skins/default/xui/da/floater_build_options.xml | 4 +- .../skins/default/xui/da/floater_bulk_perms.xml | 44 + .../skins/default/xui/da/floater_buy_currency.xml | 2 +- .../skins/default/xui/da/floater_buy_land.xml | 60 +- .../skins/default/xui/da/floater_customize.xml | 508 ++-- .../skins/default/xui/da/floater_font_test.xml | 6 + .../default/xui/da/floater_hardware_settings.xml | 2 +- .../skins/default/xui/da/floater_inspect.xml | 18 +- .../skins/default/xui/da/floater_joystick.xml | 38 +- .../skins/default/xui/da/floater_lagmeter.xml | 16 +- .../skins/default/xui/da/floater_land_holdings.xml | 19 +- .../skins/default/xui/da/floater_lsl_guide.xml | 2 +- .../skins/default/xui/da/floater_perm_prefs.xml | 16 + .../default/xui/da/floater_preview_gesture.xml | 36 +- .../default/xui/da/floater_preview_notecard.xml | 11 +- .../skins/default/xui/da/floater_report_abuse.xml | 47 +- .../skins/default/xui/da/floater_snapshot.xml | 46 +- .../skins/default/xui/da/floater_sound_preview.xml | 2 +- .../skins/default/xui/da/floater_statistics.xml | 2 + .../skins/default/xui/da/floater_telehub.xml | 8 +- .../newview/skins/default/xui/da/floater_tools.xml | 387 +-- indra/newview/skins/default/xui/da/floater_tos.xml | 3 +- .../skins/default/xui/da/floater_world_map.xml | 80 +- .../skins/default/xui/da/menu_inventory.xml | 1 + .../newview/skins/default/xui/da/menu_mini_map.xml | 8 + indra/newview/skins/default/xui/da/menu_viewer.xml | 364 ++- .../newview/skins/default/xui/da/notifications.xml | 2596 ++++++++------------ .../skins/default/xui/da/panel_group_general.xml | 55 +- .../skins/default/xui/da/panel_group_invite.xml | 9 +- .../default/xui/da/panel_group_land_money.xml | 46 +- .../skins/default/xui/da/panel_group_roles.xml | 12 +- .../newview/skins/default/xui/da/panel_groups.xml | 4 +- .../default/xui/da/panel_preferences_general.xml | 112 +- .../skins/default/xui/da/panel_region_covenant.xml | 71 +- .../skins/default/xui/da/panel_region_estate.xml | 2 +- .../skins/default/xui/da/panel_region_general.xml | 73 +- .../skins/default/xui/da/panel_region_terrain.xml | 4 +- indra/newview/skins/default/xui/da/strings.xml | 89 +- .../skins/default/xui/da/teleport_strings.xml | 25 +- .../newview/skins/default/xui/de/floater_about.xml | 4 +- .../skins/default/xui/de/floater_buy_land.xml | 1 + .../skins/default/xui/de/floater_mute_object.xml | 4 +- .../newview/skins/default/xui/de/floater_tools.xml | 2 +- indra/newview/skins/default/xui/de/menu_viewer.xml | 4 +- .../newview/skins/default/xui/de/notifications.xml | 2 +- .../newview/skins/default/xui/es/floater_about.xml | 4 +- .../skins/default/xui/es/floater_about_land.xml | 26 +- .../default/xui/es/floater_animation_preview.xml | 25 +- .../skins/default/xui/es/floater_avatar_picker.xml | 8 +- .../skins/default/xui/es/floater_build_options.xml | 6 +- .../skins/default/xui/es/floater_buy_contents.xml | 2 +- .../skins/default/xui/es/floater_buy_currency.xml | 12 +- .../skins/default/xui/es/floater_buy_land.xml | 11 +- .../skins/default/xui/es/floater_color_picker.xml | 3 +- .../skins/default/xui/es/floater_customize.xml | 6 +- .../default/xui/es/floater_day_cycle_options.xml | 12 +- .../skins/default/xui/es/floater_env_settings.xml | 15 +- .../skins/default/xui/es/floater_gesture.xml | 5 +- .../default/xui/es/floater_hardware_settings.xml | 4 +- .../skins/default/xui/es/floater_image_preview.xml | 10 +- .../skins/default/xui/es/floater_inspect.xml | 10 +- .../xui/es/floater_inventory_item_properties.xml | 8 +- .../xui/es/floater_inventory_view_finder.xml | 10 +- .../skins/default/xui/es/floater_joystick.xml | 29 +- .../skins/default/xui/es/floater_lagmeter.xml | 13 +- .../skins/default/xui/es/floater_land_holdings.xml | 2 +- .../default/xui/es/floater_live_lsleditor.xml | 4 +- .../skins/default/xui/es/floater_lsl_guide.xml | 4 +- .../skins/default/xui/es/floater_media_browser.xml | 9 +- .../skins/default/xui/es/floater_mute_object.xml | 7 +- indra/newview/skins/default/xui/es/floater_pay.xml | 9 +- .../skins/default/xui/es/floater_pay_object.xml | 10 +- .../skins/default/xui/es/floater_postcard.xml | 17 +- .../skins/default/xui/es/floater_preferences.xml | 5 +- .../default/xui/es/floater_preview_animation.xml | 4 +- .../default/xui/es/floater_preview_gesture.xml | 16 +- .../skins/default/xui/es/floater_report_abuse.xml | 4 +- .../skins/default/xui/es/floater_script_search.xml | 16 +- .../skins/default/xui/es/floater_select_key.xml | 2 +- .../default/xui/es/floater_settings_debug.xml | 6 +- .../skins/default/xui/es/floater_snapshot.xml | 12 +- .../skins/default/xui/es/floater_telehub.xml | 18 +- .../skins/default/xui/es/floater_texture_ctrl.xml | 4 +- .../newview/skins/default/xui/es/floater_tools.xml | 68 +- .../skins/default/xui/es/floater_top_objects.xml | 21 +- indra/newview/skins/default/xui/es/floater_tos.xml | 4 +- .../skins/default/xui/es/floater_url_entry.xml | 3 +- .../newview/skins/default/xui/es/floater_water.xml | 22 +- .../default/xui/es/floater_windlight_options.xml | 20 +- indra/newview/skins/default/xui/es/menu_viewer.xml | 12 +- .../newview/skins/default/xui/es/notifications.xml | 50 +- .../skins/default/xui/es/panel_group_general.xml | 12 +- .../skins/default/xui/es/panel_group_invite.xml | 17 +- .../default/xui/es/panel_group_land_money.xml | 15 +- .../skins/default/xui/es/panel_group_notices.xml | 17 +- .../skins/default/xui/es/panel_group_roles.xml | 46 +- .../newview/skins/default/xui/es/panel_groups.xml | 8 +- .../default/xui/es/panel_preferences_chat.xml | 5 +- .../default/xui/es/panel_preferences_graphics1.xml | 42 +- .../skins/default/xui/es/panel_region_covenant.xml | 10 +- .../skins/default/xui/es/panel_region_debug.xml | 16 +- .../skins/default/xui/es/panel_region_estate.xml | 16 +- .../skins/default/xui/es/panel_region_general.xml | 10 +- .../skins/default/xui/es/panel_region_terrain.xml | 16 +- .../skins/default/xui/es/panel_region_texture.xml | 2 +- .../newview/skins/default/xui/es/role_actions.xml | 195 +- .../newview/skins/default/xui/fr/floater_about.xml | 4 +- .../skins/default/xui/fr/floater_buy_land.xml | 1 + .../skins/default/xui/fr/floater_customize.xml | 22 +- .../skins/default/xui/fr/floater_inventory.xml | 4 +- .../xui/fr/floater_inventory_view_finder.xml | 8 +- .../skins/default/xui/fr/floater_mem_leaking.xml | 6 +- .../default/xui/fr/floater_preview_gesture.xml | 1 + .../newview/skins/default/xui/fr/floater_tools.xml | 2 +- indra/newview/skins/default/xui/fr/menu_viewer.xml | 4 +- .../newview/skins/default/xui/fr/notifications.xml | 2 +- .../newview/skins/default/xui/it/floater_about.xml | 4 +- .../skins/default/xui/it/floater_about_land.xml | 6 +- .../default/xui/it/floater_animation_preview.xml | 19 +- .../skins/default/xui/it/floater_avatar_picker.xml | 8 +- .../skins/default/xui/it/floater_build_options.xml | 6 +- .../skins/default/xui/it/floater_buy_contents.xml | 6 +- .../skins/default/xui/it/floater_buy_currency.xml | 6 +- .../skins/default/xui/it/floater_buy_land.xml | 11 +- .../default/xui/it/floater_day_cycle_options.xml | 30 +- .../skins/default/xui/it/floater_env_settings.xml | 14 +- .../skins/default/xui/it/floater_gesture.xml | 11 +- .../default/xui/it/floater_hardware_settings.xml | 6 +- .../skins/default/xui/it/floater_image_preview.xml | 5 +- .../skins/default/xui/it/floater_inspect.xml | 10 +- .../xui/it/floater_inventory_item_properties.xml | 8 +- .../xui/it/floater_inventory_view_finder.xml | 2 +- .../skins/default/xui/it/floater_joystick.xml | 49 +- .../skins/default/xui/it/floater_lagmeter.xml | 17 +- .../skins/default/xui/it/floater_land_holdings.xml | 10 +- .../default/xui/it/floater_live_lsleditor.xml | 4 +- .../skins/default/xui/it/floater_lsl_guide.xml | 4 +- .../skins/default/xui/it/floater_media_browser.xml | 9 +- .../skins/default/xui/it/floater_mute_object.xml | 6 +- indra/newview/skins/default/xui/it/floater_pay.xml | 21 +- .../skins/default/xui/it/floater_pay_object.xml | 23 +- .../skins/default/xui/it/floater_postcard.xml | 8 +- .../skins/default/xui/it/floater_preferences.xml | 3 +- .../default/xui/it/floater_preview_animation.xml | 4 +- .../default/xui/it/floater_preview_gesture.xml | 9 +- .../skins/default/xui/it/floater_report_abuse.xml | 5 +- .../skins/default/xui/it/floater_script_search.xml | 16 +- .../default/xui/it/floater_settings_debug.xml | 2 +- .../skins/default/xui/it/floater_snapshot.xml | 24 +- .../skins/default/xui/it/floater_telehub.xml | 18 +- .../newview/skins/default/xui/it/floater_tools.xml | 102 +- .../skins/default/xui/it/floater_top_objects.xml | 31 +- indra/newview/skins/default/xui/it/floater_tos.xml | 2 +- .../skins/default/xui/it/floater_url_entry.xml | 4 +- .../newview/skins/default/xui/it/floater_water.xml | 44 +- .../default/xui/it/floater_windlight_options.xml | 32 +- indra/newview/skins/default/xui/it/menu_viewer.xml | 4 +- .../newview/skins/default/xui/it/notifications.xml | 138 +- .../newview/skins/default/xui/it/panel_friends.xml | 2 +- .../skins/default/xui/it/panel_group_general.xml | 2 +- .../skins/default/xui/it/panel_group_invite.xml | 4 +- .../default/xui/it/panel_group_land_money.xml | 23 +- .../skins/default/xui/it/panel_group_notices.xml | 31 +- .../skins/default/xui/it/panel_group_roles.xml | 44 +- .../newview/skins/default/xui/it/panel_groups.xml | 10 +- .../default/xui/it/panel_preferences_chat.xml | 2 +- .../default/xui/it/panel_preferences_graphics1.xml | 30 +- .../skins/default/xui/it/panel_region_covenant.xml | 30 +- .../skins/default/xui/it/panel_region_debug.xml | 12 +- .../skins/default/xui/it/panel_region_estate.xml | 16 +- .../skins/default/xui/it/panel_region_general.xml | 22 +- .../skins/default/xui/it/panel_region_terrain.xml | 8 +- .../skins/default/xui/it/panel_region_texture.xml | 6 +- indra/newview/skins/default/xui/it/strings.xml | 2 +- .../skins/default/xui/it/teleport_strings.xml | 18 +- .../newview/skins/default/xui/ja/floater_about.xml | 4 +- .../skins/default/xui/ja/floater_buy_contents.xml | 13 +- .../skins/default/xui/ja/floater_buy_land.xml | 1 + .../newview/skins/default/xui/ja/floater_tools.xml | 2 +- .../default/xui/ja/floater_wearable_save_as.xml | 2 +- indra/newview/skins/default/xui/ja/menu_viewer.xml | 4 +- .../newview/skins/default/xui/ja/notifications.xml | 8 +- .../default/xui/ja/panel_group_land_money.xml | 3 +- indra/newview/skins/default/xui/ja/panel_login.xml | 2 +- .../newview/skins/default/xui/nl/floater_about.xml | 4 +- .../skins/default/xui/nl/floater_about_land.xml | 12 +- .../skins/default/xui/nl/floater_buy_contents.xml | 2 +- .../skins/default/xui/nl/floater_buy_land.xml | 3 +- .../skins/default/xui/nl/floater_color_picker.xml | 5 +- .../skins/default/xui/nl/floater_customize.xml | 24 +- .../skins/default/xui/nl/floater_env_settings.xml | 7 +- .../skins/default/xui/nl/floater_inspect.xml | 8 +- .../skins/default/xui/nl/floater_joystick.xml | 11 +- .../skins/default/xui/nl/floater_mute_object.xml | 8 +- .../skins/default/xui/nl/floater_openobject.xml | 4 +- indra/newview/skins/default/xui/nl/floater_pay.xml | 4 +- .../skins/default/xui/nl/floater_pay_object.xml | 12 +- .../skins/default/xui/nl/floater_perm_prefs.xml | 2 +- .../skins/default/xui/nl/floater_report_abuse.xml | 14 +- .../skins/default/xui/nl/floater_select_key.xml | 4 +- .../skins/default/xui/nl/floater_snapshot.xml | 10 +- .../skins/default/xui/nl/floater_telehub.xml | 16 +- .../skins/default/xui/nl/floater_texture_ctrl.xml | 6 +- .../newview/skins/default/xui/nl/floater_tools.xml | 86 +- .../skins/default/xui/nl/floater_top_objects.xml | 26 +- indra/newview/skins/default/xui/nl/floater_tos.xml | 3 +- .../skins/default/xui/nl/floater_url_entry.xml | 4 +- .../newview/skins/default/xui/nl/floater_water.xml | 5 +- indra/newview/skins/default/xui/nl/menu_viewer.xml | 4 +- .../newview/skins/default/xui/nl/notifications.xml | 30 +- .../newview/skins/default/xui/nl/panel_friends.xml | 12 +- .../skins/default/xui/nl/panel_group_general.xml | 19 +- .../skins/default/xui/nl/panel_group_invite.xml | 9 +- .../skins/default/xui/nl/panel_group_notices.xml | 24 +- .../skins/default/xui/nl/panel_group_roles.xml | 34 +- .../newview/skins/default/xui/nl/panel_groups.xml | 14 +- indra/newview/skins/default/xui/nl/panel_login.xml | 2 +- .../skins/default/xui/nl/panel_region_estate.xml | 16 +- .../skins/default/xui/nl/panel_region_general.xml | 4 +- .../newview/skins/default/xui/pl/floater_about.xml | 7 +- .../skins/default/xui/pl/floater_joystick.xml | 89 +- .../skins/default/xui/pl/floater_preview_sound.xml | 2 +- .../skins/default/xui/pl/floater_report_abuse.xml | 2 +- .../skins/default/xui/pl/floater_telehub.xml | 4 +- .../newview/skins/default/xui/pl/floater_tools.xml | 30 +- indra/newview/skins/default/xui/pl/floater_tos.xml | 2 +- indra/newview/skins/default/xui/pl/menu_viewer.xml | 4 +- .../newview/skins/default/xui/pl/notifications.xml | 2 +- .../newview/skins/default/xui/pt/floater_about.xml | 4 +- .../skins/default/xui/pt/floater_about_land.xml | 6 +- .../default/xui/pt/floater_animation_preview.xml | 25 +- .../skins/default/xui/pt/floater_avatar_picker.xml | 12 +- .../skins/default/xui/pt/floater_build_options.xml | 6 +- .../skins/default/xui/pt/floater_buy_contents.xml | 6 +- .../skins/default/xui/pt/floater_buy_land.xml | 19 +- .../skins/default/xui/pt/floater_color_picker.xml | 6 +- .../default/xui/pt/floater_day_cycle_options.xml | 28 +- .../skins/default/xui/pt/floater_env_settings.xml | 12 +- .../skins/default/xui/pt/floater_image_preview.xml | 5 +- .../skins/default/xui/pt/floater_inspect.xml | 10 +- .../xui/pt/floater_inventory_item_properties.xml | 2 +- .../xui/pt/floater_inventory_view_finder.xml | 6 +- .../skins/default/xui/pt/floater_joystick.xml | 41 +- .../skins/default/xui/pt/floater_lagmeter.xml | 13 +- .../skins/default/xui/pt/floater_land_holdings.xml | 10 +- .../default/xui/pt/floater_live_lsleditor.xml | 2 +- .../skins/default/xui/pt/floater_lsl_guide.xml | 4 +- .../skins/default/xui/pt/floater_mute_object.xml | 5 +- indra/newview/skins/default/xui/pt/floater_pay.xml | 2 +- .../skins/default/xui/pt/floater_postcard.xml | 2 +- .../skins/default/xui/pt/floater_preferences.xml | 3 +- .../default/xui/pt/floater_preview_gesture.xml | 24 +- .../skins/default/xui/pt/floater_preview_sound.xml | 4 +- .../skins/default/xui/pt/floater_report_abuse.xml | 4 +- .../skins/default/xui/pt/floater_script_search.xml | 16 +- .../skins/default/xui/pt/floater_snapshot.xml | 12 +- .../skins/default/xui/pt/floater_telehub.xml | 18 +- .../newview/skins/default/xui/pt/floater_tools.xml | 61 +- .../skins/default/xui/pt/floater_top_objects.xml | 13 +- indra/newview/skins/default/xui/pt/floater_tos.xml | 3 +- .../skins/default/xui/pt/floater_url_entry.xml | 1 + .../newview/skins/default/xui/pt/floater_water.xml | 23 +- .../default/xui/pt/floater_windlight_options.xml | 23 +- indra/newview/skins/default/xui/pt/menu_viewer.xml | 12 +- .../newview/skins/default/xui/pt/notifications.xml | 20 +- .../newview/skins/default/xui/pt/panel_friends.xml | 12 +- .../skins/default/xui/pt/panel_group_general.xml | 6 +- .../skins/default/xui/pt/panel_group_invite.xml | 10 +- .../default/xui/pt/panel_group_land_money.xml | 11 +- .../skins/default/xui/pt/panel_group_notices.xml | 21 +- .../skins/default/xui/pt/panel_group_roles.xml | 45 +- .../newview/skins/default/xui/pt/panel_groups.xml | 17 +- indra/newview/skins/default/xui/pt/panel_login.xml | 6 +- .../default/xui/pt/panel_preferences_chat.xml | 2 +- .../default/xui/pt/panel_preferences_graphics1.xml | 20 +- .../skins/default/xui/pt/panel_region_covenant.xml | 20 +- .../skins/default/xui/pt/panel_region_debug.xml | 10 +- .../skins/default/xui/pt/panel_region_estate.xml | 4 +- .../skins/default/xui/pt/panel_region_terrain.xml | 10 +- .../skins/default/xui/pt/panel_region_texture.xml | 2 +- indra/newview/tr.lproj/language.txt | 1 + indra/newview/uk.lproj/language.txt | 1 + indra/newview/viewer_manifest.py | 12 + indra/newview/zh-Hans.lproj/language.txt | 1 + 336 files changed, 4677 insertions(+), 4554 deletions(-) create mode 100644 indra/newview/da.lproj/language.txt create mode 100644 indra/newview/es.lproj/language.txt create mode 100644 indra/newview/fr.lproj/language.txt create mode 100644 indra/newview/hu.lproj/language.txt create mode 100644 indra/newview/it.lproj/language.txt create mode 100644 indra/newview/nl.lproj/language.txt create mode 100644 indra/newview/pl.lproj/language.txt create mode 100644 indra/newview/pt.lproj/language.txt create mode 100644 indra/newview/ru.lproj/language.txt create mode 100644 indra/newview/skins/default/xui/da/floater_bulk_perms.xml create mode 100644 indra/newview/skins/default/xui/da/floater_font_test.xml create mode 100644 indra/newview/skins/default/xui/da/floater_perm_prefs.xml create mode 100644 indra/newview/skins/default/xui/da/floater_statistics.xml create mode 100644 indra/newview/skins/default/xui/da/menu_mini_map.xml create mode 100644 indra/newview/tr.lproj/language.txt create mode 100644 indra/newview/uk.lproj/language.txt create mode 100644 indra/newview/zh-Hans.lproj/language.txt diff --git a/doc/contributions.txt b/doc/contributions.txt index 31ea1bbc5b..28c41debe7 100644 --- a/doc/contributions.txt +++ b/doc/contributions.txt @@ -197,6 +197,7 @@ Feep Larsson VWR-4444 Flemming Congrejo CT-193 + CT-318 Fluf Fredriksson VWR-3450 Fremont Cunningham @@ -350,6 +351,7 @@ Michelle2 Zenovka Mm Alder VWR-3777 VWR-4794 + VWR-13578 Mr Greggan VWR-445 Nicholaz Beresford diff --git a/indra/llcommon/llversionviewer.h b/indra/llcommon/llversionviewer.h index a28d0f7268..7e623d47d6 100644 --- a/indra/llcommon/llversionviewer.h +++ b/indra/llcommon/llversionviewer.h @@ -35,7 +35,7 @@ const S32 LL_VERSION_MAJOR = 1; const S32 LL_VERSION_MINOR = 24; -const S32 LL_VERSION_PATCH = 2; +const S32 LL_VERSION_PATCH = 4; const S32 LL_VERSION_BUILD = 0; const char * const LL_CHANNEL = "Second Life Release"; diff --git a/indra/llcrashlogger/llcrashlogger.cpp b/indra/llcrashlogger/llcrashlogger.cpp index 2fd37e848e..d83d9d18bf 100755 --- a/indra/llcrashlogger/llcrashlogger.cpp +++ b/indra/llcrashlogger/llcrashlogger.cpp @@ -208,7 +208,10 @@ void LLCrashLogger::gatherFiles() mFileMap["SettingsXml"] = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS,"settings.xml"); } +#if !LL_DARWIN if(mCrashInPreviousExec) +#else +#endif { // Replace the log file ext with .old, since the // instance that launched this process has overwritten diff --git a/indra/llrender/llimagegl.cpp b/indra/llrender/llimagegl.cpp index cdf626e16f..d1efb119c6 100644 --- a/indra/llrender/llimagegl.cpp +++ b/indra/llrender/llimagegl.cpp @@ -54,8 +54,8 @@ LLGLuint LLImageGL::sCurrentBoundTextures[MAX_GL_TEXTURE_UNITS] = { 0 }; U32 LLImageGL::sUniqueCount = 0; U32 LLImageGL::sBindCount = 0; -S32 LLImageGL::sGlobalTextureMemory = 0; -S32 LLImageGL::sBoundTextureMemory = 0; +S32 LLImageGL::sGlobalTextureMemoryInBytes = 0; +S32 LLImageGL::sBoundTextureMemoryInBytes = 0; S32 LLImageGL::sCurBoundTextureMemory = 0; S32 LLImageGL::sCount = 0; @@ -174,7 +174,7 @@ S32 LLImageGL::dataFormatComponents(S32 dataformat) void LLImageGL::updateStats(F32 current_time) { sLastFrameTime = current_time; - sBoundTextureMemory = sCurBoundTextureMemory; + sBoundTextureMemoryInBytes = sCurBoundTextureMemory; sCurBoundTextureMemory = 0; } @@ -1013,13 +1013,13 @@ BOOL LLImageGL::createGLTexture(S32 discard_level, const U8* data_in, BOOL data_ if (old_name != 0) { - sGlobalTextureMemory -= mTextureMemory; + sGlobalTextureMemoryInBytes -= mTextureMemory; LLImageGL::deleteTextures(1, &old_name); stop_glerror(); } mTextureMemory = getMipBytes(discard_level); - sGlobalTextureMemory += mTextureMemory; + sGlobalTextureMemoryInBytes += mTextureMemory; setActive() ; // mark this as bound at this point, so we don't throw it out immediately @@ -1220,7 +1220,7 @@ void LLImageGL::destroyGLTexture() } } - sGlobalTextureMemory -= mTextureMemory; + sGlobalTextureMemoryInBytes -= mTextureMemory; mTextureMemory = 0; LLImageGL::deleteTextures(1, &mTexName); diff --git a/indra/llrender/llimagegl.h b/indra/llrender/llimagegl.h index 4f737bcaae..2f08a5a2cc 100644 --- a/indra/llrender/llimagegl.h +++ b/indra/llrender/llimagegl.h @@ -42,6 +42,9 @@ #include "llrender.h" +#define BYTES_TO_MEGA_BYTES(x) ((x) >> 20) +#define MEGA_BYTES_TO_BYTES(x) ((x) << 20) + //============================================================================ class LLImageGL : public LLRefCount @@ -238,8 +241,8 @@ public: static LLGLuint sCurrentBoundTextures[MAX_GL_TEXTURE_UNITS]; // Currently bound texture ID // Global memory statistics - static S32 sGlobalTextureMemory; // Tracks main memory texmem - static S32 sBoundTextureMemory; // Tracks bound texmem for last completed frame + static S32 sGlobalTextureMemoryInBytes; // Tracks main memory texmem + static S32 sBoundTextureMemoryInBytes; // Tracks bound texmem for last completed frame static S32 sCurBoundTextureMemory; // Tracks bound texmem for current frame static U32 sBindCount; // Tracks number of texture binds for current frame static U32 sUniqueCount; // Tracks number of unique texture binds for current frame diff --git a/indra/llui/llview.cpp b/indra/llui/llview.cpp index 8ec681fcaf..31788da117 100644 --- a/indra/llui/llview.cpp +++ b/indra/llui/llview.cpp @@ -743,23 +743,20 @@ BOOL LLView::handleToolTip(S32 x, S32 y, std::string& msg, LLRect* sticky_rect_s // don't allow any siblings to handle this event // even if we don't have a tooltip - if (getMouseOpaque() || show_names_text_box) + if (blockMouseEvent(x, y) || show_names_text_box) { - handled = TRUE; - } - - if(!tool_tip.empty()) - { - msg = tool_tip; + if(!tool_tip.empty()) + { + msg = tool_tip; - // Convert rect local to screen coordinates - localPointToScreen( - 0, 0, - &(sticky_rect_screen->mLeft), &(sticky_rect_screen->mBottom) ); - localPointToScreen( - mRect.getWidth(), mRect.getHeight(), - &(sticky_rect_screen->mRight), &(sticky_rect_screen->mTop) ); - + // Convert rect local to screen coordinates + localPointToScreen( + 0, 0, + &(sticky_rect_screen->mLeft), &(sticky_rect_screen->mBottom) ); + localPointToScreen( + mRect.getWidth(), mRect.getHeight(), + &(sticky_rect_screen->mRight), &(sticky_rect_screen->mTop) ); + } handled = TRUE; } diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 7ae92129dc..5ebf14d093 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -4804,7 +4804,7 @@ IMInChatConsole Comment - Copy IM into background chat console + Copy IM into chat console Persist 1 Type @@ -4812,6 +4812,17 @@ Value 1 + IMInChatHistory + + Comment + Copy IM into chat history + Persist + 1 + Type + Boolean + Value + 0 + IMShowTimestamps Comment @@ -8777,7 +8788,7 @@ Comment Display XUI Names as Tooltips Persist - 1 + 0 Type Boolean Value diff --git a/indra/newview/da.lproj/language.txt b/indra/newview/da.lproj/language.txt new file mode 100644 index 0000000000..316d25d903 --- /dev/null +++ b/indra/newview/da.lproj/language.txt @@ -0,0 +1 @@ +da \ No newline at end of file diff --git a/indra/newview/es.lproj/language.txt b/indra/newview/es.lproj/language.txt new file mode 100644 index 0000000000..6c4381495c --- /dev/null +++ b/indra/newview/es.lproj/language.txt @@ -0,0 +1 @@ +es \ No newline at end of file diff --git a/indra/newview/featuretable.txt b/indra/newview/featuretable.txt index 05bdf64b42..d557df3d92 100644 --- a/indra/newview/featuretable.txt +++ b/indra/newview/featuretable.txt @@ -1,4 +1,4 @@ -version 19 +version 20 // NOTE: This is mostly identical to featuretable_mac.txt with a few differences // Should be combined into one table @@ -245,6 +245,7 @@ RenderVBOEnable 1 0 list Intel RenderAnisotropic 1 0 RenderLightingDetail 1 0 +RenderUseImpostors 0 0 list GeForce2 RenderAnisotropic 1 0 diff --git a/indra/newview/featuretable_linux.txt b/indra/newview/featuretable_linux.txt index 09105b8d88..57d712ede7 100644 --- a/indra/newview/featuretable_linux.txt +++ b/indra/newview/featuretable_linux.txt @@ -1,4 +1,4 @@ -version 19 +version 20 // NOTE: This is mostly identical to featuretable_mac.txt with a few differences // Should be combined into one table diff --git a/indra/newview/featuretable_mac.txt b/indra/newview/featuretable_mac.txt index fd2496d8ad..15974c0691 100644 --- a/indra/newview/featuretable_mac.txt +++ b/indra/newview/featuretable_mac.txt @@ -1,4 +1,4 @@ -version 19 +version 20 // NOTE: This is mostly identical to featuretable_mac.txt with a few differences // Should be combined into one table diff --git a/indra/newview/fr.lproj/language.txt b/indra/newview/fr.lproj/language.txt new file mode 100644 index 0000000000..717280ac26 --- /dev/null +++ b/indra/newview/fr.lproj/language.txt @@ -0,0 +1 @@ +fr \ No newline at end of file diff --git a/indra/newview/hu.lproj/language.txt b/indra/newview/hu.lproj/language.txt new file mode 100644 index 0000000000..6c604cf2a9 --- /dev/null +++ b/indra/newview/hu.lproj/language.txt @@ -0,0 +1 @@ +hu \ No newline at end of file diff --git a/indra/newview/installers/windows/lang_fr.nsi b/indra/newview/installers/windows/lang_fr.nsi index d23615de91..008c240ed7 100644 Binary files a/indra/newview/installers/windows/lang_fr.nsi and b/indra/newview/installers/windows/lang_fr.nsi differ diff --git a/indra/newview/it.lproj/language.txt b/indra/newview/it.lproj/language.txt new file mode 100644 index 0000000000..c91971434c --- /dev/null +++ b/indra/newview/it.lproj/language.txt @@ -0,0 +1 @@ +it \ No newline at end of file diff --git a/indra/newview/linux_tools/wrapper.sh b/indra/newview/linux_tools/wrapper.sh index e188abe5d2..dfe19c1232 100755 --- a/indra/newview/linux_tools/wrapper.sh +++ b/indra/newview/linux_tools/wrapper.sh @@ -94,9 +94,7 @@ cd "${RUN_PATH}" ./register_secondlifeprotocol.sh ## Before we mess with LD_LIBRARY_PATH, save the old one to restore for ## subprocesses that care. -if [ "${LD_LIBRARY_PATH+isset}" = "isset" ]; then - export SAVED_LD_LIBRARY_PATH="${LD_LIBRARY_PATH}" -fi +export SAVED_LD_LIBRARY_PATH="${LD_LIBRARY_PATH}" if [ -n "$LL_TCMALLOC" ]; then tcmalloc_libs='/usr/lib/libtcmalloc.so.0 /usr/lib/libstacktrace.so.0 /lib/libpthread.so.0' diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp index 07503404dc..cc443d05c0 100644 --- a/indra/newview/llagent.cpp +++ b/indra/newview/llagent.cpp @@ -1319,14 +1319,19 @@ LLQuaternion LLAgent::getQuat() const //----------------------------------------------------------------------------- LLVector3 LLAgent::calcFocusOffset(LLViewerObject *object, LLVector3 original_focus_point, S32 x, S32 y) { - // calculate offset based on view direction - BOOL is_avatar = object->isAvatar(); - // since the animation system allows the avatars facing and position to deviate from its nominal LLViewerObject/LLDrawable transform - // calculate the focus-specific orientation for avatars based off the pelvis joint - // NOTE: pelvis no longer good candidate, removed. DEV-30589 LLMatrix4 obj_matrix = object->getRenderMatrix(); LLQuaternion obj_rot = object->getRenderRotation(); LLVector3 obj_pos = object->getRenderPosition(); + + BOOL is_avatar = object->isAvatar(); + // if is avatar - don't do any funk heuristics to position the focal point + // see DEV-30589 + if (is_avatar) + { + return original_focus_point - obj_pos; + } + + LLQuaternion inv_obj_rot = ~obj_rot; // get inverse of rotation LLVector3 object_extents = object->getScale(); // make sure they object extents are non-zero diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index b66b514597..584ab5e50f 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -2053,7 +2053,7 @@ bool LLAppViewer::initConfiguration() void LLAppViewer::checkForCrash(void) { -#if 1 //*REMOVE:Mani LL_SEND_CRASH_REPORTS +#if LL_SEND_CRASH_REPORTS //*NOTE:Mani The current state of the crash handler has the MacOSX // sending all crash reports as freezes, in order to let // the MacOSX CrashRepoter generate stacks before spawning the @@ -2063,23 +2063,36 @@ void LLAppViewer::checkForCrash(void) #if LL_DARWIN if(gLastExecEvent != LAST_EXEC_NORMAL) #else - if (gLastExecEvent == LAST_EXEC_FROZE || gLastExecEvent == LAST_EXEC_OTHER_CRASH) + if (gLastExecEvent == LAST_EXEC_FROZE) #endif { 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(), + S32 choice; + if(gCrashSettings.getS32(CRASH_BEHAVIOR_SETTING) == CRASH_BEHAVIOR_ASK) + { + 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"; + choice = OSMessageBox(msg.str(), alert, OSMB_YESNO); + } + else if(gCrashSettings.getS32(CRASH_BEHAVIOR_SETTING) == CRASH_BEHAVIOR_NEVER_SEND) + { + choice = OSBTN_NO; + } + else + { + choice = OSBTN_YES; + } + if (OSBTN_YES == choice) { llinfos << "Sending crash report." << llendl; @@ -2353,6 +2366,8 @@ void LLAppViewer::handleViewerCrash() gDebugInfo["SessionLength"] = F32(LLFrameTimer::getElapsedSeconds()); gDebugInfo["StartupState"] = LLStartUp::getStartupStateString(); gDebugInfo["RAMInfo"]["Allocated"] = (LLSD::Integer) getCurrentRSS() >> 10; + gDebugInfo["FirstLogin"] = (LLSD::Boolean) gAgent.isFirstLogin(); + gDebugInfo["FirstRunThisInstall"] = gSavedSettings.getBOOL("FirstRunThisInstall"); if(gLogoutInProgress) { diff --git a/indra/newview/llappviewermacosx.cpp b/indra/newview/llappviewermacosx.cpp index 7c2e341bed..080bd2edc0 100644 --- a/indra/newview/llappviewermacosx.cpp +++ b/indra/newview/llappviewermacosx.cpp @@ -135,31 +135,6 @@ bool LLAppViewerMacOSX::init() return LLAppViewer::init(); } -bool LLAppViewerMacOSX::initLogging() -{ - // Remove the crash stack log from previous executions. - // Since we've started logging a new instance of the app, we can assume - // The old crash stack is invalid for the next crash report. - char path[MAX_PATH]; - FSRef folder; - if(FSFindFolder(kUserDomain, kLogsFolderType, false, &folder) == noErr) - { - // folder is an FSRef to ~/Library/Logs/ - if(FSRefMakePath(&folder, (UInt8*)&path, sizeof(path)) == noErr) - { - std::string pathname = std::string(path) + std::string("/CrashReporter/"); - std::string mask = "Second Life*"; - std::string file_name; - while(gDirUtilp->getNextFileInDir(pathname, mask, file_name, false)) - { - LLFile::remove(pathname + file_name); - } - } - } - - return LLAppViewer::initLogging(); -} - // MacOSX may add and addition command line arguement for the process serial number. // The option takes a form like '-psn_0_12345'. The following method should be able to recognize // and either ignore or return a pair of values for the option. @@ -416,6 +391,28 @@ void LLAppViewerMacOSX::handleCrashReporting(bool reportFreeze) { _exit(1); } + + // TODO:palmer REMOVE THIS VERY SOON. THIS WILL NOT BE IN VIEWER 2.0 + // Remove the crash stack log from previous executions. + // Since we've started logging a new instance of the app, we can assume + // The old crash stack is invalid for the next crash report. + char path[MAX_PATH]; + FSRef folder; + if(FSFindFolder(kUserDomain, kLogsFolderType, false, &folder) == noErr) + { + // folder is an FSRef to ~/Library/Logs/ + if(FSRefMakePath(&folder, (UInt8*)&path, sizeof(path)) == noErr) + { + std::string pathname = std::string(path) + std::string("/CrashReporter/"); + std::string mask = "Second Life*"; + std::string file_name; + while(gDirUtilp->getNextFileInDir(pathname, mask, file_name, false)) + { + LLFile::remove(pathname + file_name); + } + } + } + } std::string LLAppViewerMacOSX::generateSerialNumber() diff --git a/indra/newview/llappviewermacosx.h b/indra/newview/llappviewermacosx.h index 0928916a57..bc841fc3a7 100644 --- a/indra/newview/llappviewermacosx.h +++ b/indra/newview/llappviewermacosx.h @@ -55,7 +55,6 @@ protected: virtual void handleSyncCrashTrace(); std::string generateSerialNumber(); - virtual bool initLogging(); virtual bool initParseCommandLine(LLCommandLineParser& clp); }; diff --git a/indra/newview/llappviewerwin32.cpp b/indra/newview/llappviewerwin32.cpp index 16928923bf..7a8d486b72 100644 --- a/indra/newview/llappviewerwin32.cpp +++ b/indra/newview/llappviewerwin32.cpp @@ -159,9 +159,31 @@ int APIENTRY WINMAIN(HINSTANCE hInstance, int nCmdShow) { LLMemType mt1(LLMemType::MTYPE_STARTUP); + + const S32 MAX_HEAPS = 255; + DWORD heap_enable_lfh_error[MAX_HEAPS]; + S32 num_heaps = 0; #if WINDOWS_CRT_MEM_CHECKS && !INCLUDE_VLD _CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF ); // dump memory leaks on exit +#elif 1 + // Experimental - enable the low fragmentation heap + // This results in a 2-3x improvement in opening a new Inventory window (which uses a large numebr of allocations) + // Note: This won't work when running from the debugger unless the _NO_DEBUG_HEAP environment variable is set to 1 + + _CrtSetDbgFlag(0); // default, just making explicit + + ULONG ulEnableLFH = 2; + HANDLE* hHeaps = new HANDLE[MAX_HEAPS]; + num_heaps = GetProcessHeaps(MAX_HEAPS, hHeaps); + for(S32 i = 0; i < num_heaps; i++) + { + bool success = HeapSetInformation(hHeaps[i], HeapCompatibilityInformation, &ulEnableLFH, sizeof(ulEnableLFH)); + if (success) + heap_enable_lfh_error[i] = 0; + else + heap_enable_lfh_error[i] = GetLastError(); + } #endif // *FIX: global @@ -183,8 +205,21 @@ int APIENTRY WINMAIN(HINSTANCE hInstance, llwarns << "Application init failed." << llendl; return -1; } - - // Run the application main loop + + // Have to wait until after logging is initialized to display LFH info + if (num_heaps > 0) + { + llinfos << "Attempted to enable LFH for " << num_heaps << " heaps." << llendl; + for(S32 i = 0; i < num_heaps; i++) + { + if (heap_enable_lfh_error[i]) + { + llinfos << " Failed to enable LFH for heap: " << i << " Error: " << heap_enable_lfh_error[i] << llendl; + } + } + } + + // Run the application main loop if(!LLApp::isQuitting()) { viewer_app_ptr->mainLoop(); diff --git a/indra/newview/lldrawable.cpp b/indra/newview/lldrawable.cpp index 9f4afc9f17..cb368974ae 100644 --- a/indra/newview/lldrawable.cpp +++ b/indra/newview/lldrawable.cpp @@ -673,7 +673,7 @@ BOOL LLDrawable::updateMoveDamped() return done_moving; } -void LLDrawable::updateDistance(LLCamera& camera) +void LLDrawable::updateDistance(LLCamera& camera, bool force_update) { //switch LOD with the spatial group to avoid artifacts //LLSpatialGroup* sg = getSpatialGroup(); @@ -695,7 +695,7 @@ void LLDrawable::updateDistance(LLCamera& camera) for (S32 i = 0; i < getNumFaces(); i++) { LLFace* facep = getFace(i); - if (facep->getPoolType() == LLDrawPool::POOL_ALPHA) + if (force_update || facep->getPoolType() == LLDrawPool::POOL_ALPHA) { LLVector3 box = (facep->mExtents[1] - facep->mExtents[0]) * 0.25f; LLVector3 v = (facep->mCenterLocal-camera.getOrigin()); @@ -736,11 +736,7 @@ void LLDrawable::updateTexture() if (getVOVolume()) { - if (!isActive()) - { - //gPipeline.markMoved(this); - } - else + if (isActive()) { if (isRoot()) { @@ -1273,7 +1269,7 @@ void LLSpatialBridge::setVisible(LLCamera& camera_in, std::vector* } } -void LLSpatialBridge::updateDistance(LLCamera& camera_in) +void LLSpatialBridge::updateDistance(LLCamera& camera_in, bool force_update) { if (mDrawable == NULL) { @@ -1283,7 +1279,7 @@ void LLSpatialBridge::updateDistance(LLCamera& camera_in) LLCamera camera = transformCamera(camera_in); - mDrawable->updateDistance(camera); + mDrawable->updateDistance(camera, force_update); if (mDrawable->getVObj()) { @@ -1300,7 +1296,7 @@ void LLSpatialBridge::updateDistance(LLCamera& camera_in) if (!drawable->isAvatar()) { - drawable->updateDistance(camera); + drawable->updateDistance(camera, force_update); } } } diff --git a/indra/newview/lldrawable.h b/indra/newview/lldrawable.h index f5a66a3a78..6e0b6e81d6 100644 --- a/indra/newview/lldrawable.h +++ b/indra/newview/lldrawable.h @@ -151,7 +151,7 @@ public: void updateTexture(); void updateMaterial(); - virtual void updateDistance(LLCamera& camera); + virtual void updateDistance(LLCamera& camera, bool force_update); BOOL updateGeometry(BOOL priority); void updateFaceSize(S32 idx); diff --git a/indra/newview/lldrawpoolsky.cpp b/indra/newview/lldrawpoolsky.cpp index 7f21adcc94..f0ed38057b 100644 --- a/indra/newview/lldrawpoolsky.cpp +++ b/indra/newview/lldrawpoolsky.cpp @@ -61,8 +61,8 @@ LLDrawPool *LLDrawPoolSky::instancePool() void LLDrawPoolSky::prerender() { - mVertexShaderLevel = LLViewerShaderMgr::instance()->getVertexShaderLevel(LLViewerShaderMgr::SHADER_ENVIRONMENT); -// gSky.mVOSkyp->updateGeometry(gSky.mVOSkyp->mDrawable); + mVertexShaderLevel = LLViewerShaderMgr::instance()->getVertexShaderLevel(LLViewerShaderMgr::SHADER_ENVIRONMENT); + gSky.mVOSkyp->updateGeometry(gSky.mVOSkyp->mDrawable); } void LLDrawPoolSky::render(S32 pass) @@ -97,7 +97,6 @@ void LLDrawPoolSky::render(S32 pass) } - LLVOSky *voskyp = gSky.mVOSkyp; LLGLSPipelineSkyBox gls_skybox; LLGLDepthTest gls_depth(GL_TRUE, GL_FALSE); @@ -120,43 +119,9 @@ void LLDrawPoolSky::render(S32 pass) { renderSkyCubeFace(i); } - - LLFace *hbfaces[3]; - hbfaces[0] = NULL; - hbfaces[1] = NULL; - hbfaces[2] = NULL; - for (S32 curr_face = 0; curr_face < face_count; curr_face++) - { - LLFace* facep = mDrawFace[curr_face]; - if (voskyp->isSameFace(LLVOSky::FACE_SUN, facep)) - { - hbfaces[0] = facep; - } - if (voskyp->isSameFace(LLVOSky::FACE_MOON, facep)) - { - hbfaces[1] = facep; - } - if (voskyp->isSameFace(LLVOSky::FACE_BLOOM, facep)) - { - hbfaces[2] = facep; - } - } LLGLEnable blend(GL_BLEND); - if (hbfaces[2]) - { - // renderSunHalo(hbfaces[2]); - } - if (hbfaces[0]) - { - // renderHeavenlyBody(0, hbfaces[0]); - } - if (hbfaces[1]) - { - // renderHeavenlyBody(1, hbfaces[1]); - } - glPopMatrix(); } @@ -181,35 +146,6 @@ void LLDrawPoolSky::renderSkyCubeFace(U8 side) } } -void LLDrawPoolSky::renderHeavenlyBody(U8 hb, LLFace* face) -{ - if ( !mHB[hb]->getDraw() ) return; - if (! face->getGeomCount()) return; - - LLImageGL* tex = face->getTexture(); - gGL.getTexUnit(0)->bind(tex); - LLColor4 color(mHB[hb]->getInterpColor()); - LLOverrideFaceColor override(this, color); - face->renderIndexed(); -} - - - -void LLDrawPoolSky::renderSunHalo(LLFace* face) -{ - if (! mHB[0]->getDraw()) return; - if (! face->getGeomCount()) return; - - LLImageGL* tex = face->getTexture(); - gGL.getTexUnit(0)->bind(tex); - LLColor4 color(mHB[0]->getInterpColor()); - color.mV[3] = llclamp(mHB[0]->getHaloBrighness(), 0.f, 1.f); - - LLOverrideFaceColor override(this, color); - face->renderIndexed(); -} - - void LLDrawPoolSky::renderForSelect() { } diff --git a/indra/newview/lldrawpoolsky.h b/indra/newview/lldrawpoolsky.h index f35b114730..8595d73aee 100644 --- a/indra/newview/lldrawpoolsky.h +++ b/indra/newview/lldrawpoolsky.h @@ -36,14 +36,12 @@ #include "lldrawpool.h" class LLSkyTex; -class LLHeavenBody; class LLGLSLShader; class LLDrawPoolSky : public LLFacePool { private: LLSkyTex *mSkyTex; - LLHeavenBody *mHB[2]; // Sun and Moon LLGLSLShader *mShader; public: @@ -69,8 +67,6 @@ public: /*virtual*/ void renderForSelect(); /*virtual*/ void endRenderPass(S32 pass); void setSkyTex(LLSkyTex* const st) { mSkyTex = st; } - void setSun(LLHeavenBody* sun_flag) { mHB[0] = sun_flag; } - void setMoon(LLHeavenBody* moon) { mHB[1] = moon; } void renderSkyCubeFace(U8 side); void renderHeavenlyBody(U8 hb, LLFace* face); diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp index 3dfe6a2820..69edccacf0 100644 --- a/indra/newview/llface.cpp +++ b/indra/newview/llface.cpp @@ -1150,6 +1150,21 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume, BOOL LLFace::verify(const U32* indices_array) const { BOOL ok = TRUE; + + if( mVertexBuffer.isNull() ) + { + if( mGeomCount ) + { + // This happens before teleports as faces are torn down. + // Stop the crash in DEV-31893 with a null pointer check, + // but present this info. + // To clean up the log, the geometry could be cleared, or the + // face could otherwise be marked for no ::verify. + llinfos << "Face with no vertex buffer and " << mGeomCount << " mGeomCount" << llendl; + } + return TRUE; + } + // First, check whether the face data fits within the pool's range. if ((mGeomIndex + mGeomCount) > mVertexBuffer->getNumVerts()) { diff --git a/indra/newview/llfloaterchat.cpp b/indra/newview/llfloaterchat.cpp index ea529d1883..0e9295f9f8 100644 --- a/indra/newview/llfloaterchat.cpp +++ b/indra/newview/llfloaterchat.cpp @@ -406,6 +406,9 @@ void LLFloaterChat::addChat(const LLChat& chat, if(from_instant_message && gSavedPerAccountSettings.getBOOL("LogChatIM")) log_chat_text(chat); + + if(from_instant_message && gSavedSettings.getBOOL("IMInChatHistory")) + addChatHistory(chat,false); LLTextParser* highlight = LLTextParser::getInstance(); highlight->triggerAlerts(gAgent.getID(), gAgent.getPositionGlobal(), chat.mText, gViewerWindow->getWindow()); diff --git a/indra/newview/llfloaterimagepreview.cpp b/indra/newview/llfloaterimagepreview.cpp index d39824ee05..5ff4f735dd 100644 --- a/indra/newview/llfloaterimagepreview.cpp +++ b/indra/newview/llfloaterimagepreview.cpp @@ -214,13 +214,16 @@ void LLFloaterImagePreview::onPreviewTypeCommit(LLUICtrl* ctrl, void* userdata) //----------------------------------------------------------------------------- void LLFloaterImagePreview::clearAllPreviewTextures() { - mAvatarPreview->clearPreviewTexture("mHairMesh0"); - mAvatarPreview->clearPreviewTexture("mUpperBodyMesh0"); - mAvatarPreview->clearPreviewTexture("mLowerBodyMesh0"); - mAvatarPreview->clearPreviewTexture("mHeadMesh0"); - mAvatarPreview->clearPreviewTexture("mUpperBodyMesh0"); - mAvatarPreview->clearPreviewTexture("mLowerBodyMesh0"); - mAvatarPreview->clearPreviewTexture("mSkirtMesh0"); + if (mAvatarPreview) + { + mAvatarPreview->clearPreviewTexture("mHairMesh0"); + mAvatarPreview->clearPreviewTexture("mUpperBodyMesh0"); + mAvatarPreview->clearPreviewTexture("mLowerBodyMesh0"); + mAvatarPreview->clearPreviewTexture("mHeadMesh0"); + mAvatarPreview->clearPreviewTexture("mUpperBodyMesh0"); + mAvatarPreview->clearPreviewTexture("mLowerBodyMesh0"); + mAvatarPreview->clearPreviewTexture("mSkirtMesh0"); + } } //----------------------------------------------------------------------------- @@ -671,11 +674,14 @@ void LLImagePreviewAvatar::setPreviewTarget(const std::string& joint_name, const //----------------------------------------------------------------------------- void LLImagePreviewAvatar::clearPreviewTexture(const std::string& mesh_name) { - LLViewerJointMesh *mesh = (LLViewerJointMesh*)mDummyAvatar->mRoot.findJoint(mesh_name); - // clear out existing test mesh - if (mesh) + if (mDummyAvatar) { - mesh->setTestTexture(0); + LLViewerJointMesh *mesh = (LLViewerJointMesh*)mDummyAvatar->mRoot.findJoint(mesh_name); + // clear out existing test mesh + if (mesh) + { + mesh->setTestTexture(0); + } } } @@ -796,27 +802,11 @@ LLImagePreviewSculpted::LLImagePreviewSculpted(S32 width, S32 height) : LLDynami F32 const HIGHEST_LOD = 4.0f; mVolume = new LLVolume(volume_params, HIGHEST_LOD); - - /* - mDummyAvatar = new LLVOAvatar(LLUUID::null, LL_PCODE_LEGACY_AVATAR, gAgent.getRegion()); - mDummyAvatar->createDrawable(&gPipeline); - mDummyAvatar->mIsDummy = TRUE; - mDummyAvatar->mSpecialRenderMode = 2; - mDummyAvatar->setPositionAgent(LLVector3::zero); - mDummyAvatar->slamPosition(); - mDummyAvatar->updateJointLODs(); - mDummyAvatar->updateGeometry(mDummyAvatar->mDrawable); - gPipeline.markVisible(mDummyAvatar->mDrawable, *LLViewerCamera::getInstance()); - mTextureName = 0; - */ } LLImagePreviewSculpted::~LLImagePreviewSculpted() { - /* - mDummyAvatar->markDead(); - */ } diff --git a/indra/newview/llfloaterlagmeter.cpp b/indra/newview/llfloaterlagmeter.cpp index 91471ca2d0..8fe455fde4 100644 --- a/indra/newview/llfloaterlagmeter.cpp +++ b/indra/newview/llfloaterlagmeter.cpp @@ -180,7 +180,7 @@ void LLFloaterLagMeter::determineClient() { mClientCause->setText( getString("client_texture_loading_cause_msg", mStringArgs) ); } - else if((LLViewerImage::sBoundTextureMemory >> 20) > LLViewerImage::sMaxBoundTextureMem) + else if((BYTES_TO_MEGA_BYTES(LLViewerImage::sBoundTextureMemoryInBytes)) > LLViewerImage::sMaxBoundTextureMemInMegaBytes) { mClientCause->setText( getString("client_texture_memory_cause_msg", mStringArgs) ); } diff --git a/indra/newview/llsky.cpp b/indra/newview/llsky.cpp index b779aa0f83..ac7e865de0 100644 --- a/indra/newview/llsky.cpp +++ b/indra/newview/llsky.cpp @@ -422,20 +422,6 @@ void LLSky::updateFog(const F32 distance) void LLSky::updateCull() { - /*if (mVOSkyp.notNull() && mVOSkyp->mDrawable.notNull()) - { - gPipeline.markVisible(mVOSkyp->mDrawable); - } - else - { - llinfos << "No sky drawable!" << llendl; - }*/ - - /*if (mVOGroundp.notNull() && mVOGroundp->mDrawable.notNull()) - { - gPipeline.markVisible(mVOGroundp->mDrawable); - }*/ - // *TODO: do culling for wl sky properly -Brad } diff --git a/indra/newview/llspatialpartition.h b/indra/newview/llspatialpartition.h index 4d67b374c8..df96152dfe 100644 --- a/indra/newview/llspatialpartition.h +++ b/indra/newview/llspatialpartition.h @@ -399,7 +399,7 @@ public: virtual void updateSpatialExtents(); virtual void updateBinRadius(); virtual void setVisible(LLCamera& camera_in, std::vector* results = NULL, BOOL for_select = FALSE); - virtual void updateDistance(LLCamera& camera_in); + virtual void updateDistance(LLCamera& camera_in, bool force_update); virtual void makeActive(); virtual void move(LLDrawable *drawablep, LLSpatialGroup *curp, BOOL immediate = FALSE); virtual BOOL updateMove(); diff --git a/indra/newview/lltexlayer.cpp b/indra/newview/lltexlayer.cpp index b05da8c6d8..424c525870 100644 --- a/indra/newview/lltexlayer.cpp +++ b/indra/newview/lltexlayer.cpp @@ -115,7 +115,7 @@ LLTexLayerSetBuffer::~LLTexLayerSetBuffer() if( mBumpTex.notNull()) { mBumpTex = NULL ; - LLImageGL::sGlobalTextureMemory -= mWidth * mHeight * 4; + LLImageGL::sGlobalTextureMemoryInBytes -= mWidth * mHeight * 4; LLTexLayerSetBuffer::sGLBumpByteCount -= mWidth * mHeight * 4; } } @@ -132,7 +132,7 @@ void LLTexLayerSetBuffer::destroyGLTexture() if( mBumpTex.notNull() ) { mBumpTex = NULL ; - LLImageGL::sGlobalTextureMemory -= mWidth * mHeight * 4; + LLImageGL::sGlobalTextureMemoryInBytes -= mWidth * mHeight * 4; LLTexLayerSetBuffer::sGLBumpByteCount -= mWidth * mHeight * 4; } @@ -163,7 +163,7 @@ void LLTexLayerSetBuffer::createBumpTexture() gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); - LLImageGL::sGlobalTextureMemory += mWidth * mHeight * 4; + LLImageGL::sGlobalTextureMemoryInBytes += mWidth * mHeight * 4; LLTexLayerSetBuffer::sGLBumpByteCount += mWidth * mHeight * 4; } } diff --git a/indra/newview/lltextureview.cpp b/indra/newview/lltextureview.cpp index f00d5e5b48..d356bf99ae 100644 --- a/indra/newview/lltextureview.cpp +++ b/indra/newview/lltextureview.cpp @@ -384,10 +384,10 @@ private: void LLGLTexMemBar::draw() { - S32 bound_mem = (LLViewerImage::sBoundTextureMemory >> 20); - S32 max_bound_mem = LLViewerImage::sMaxBoundTextureMem; - S32 total_mem = (LLViewerImage::sTotalTextureMemory >> 20); - S32 max_total_mem = LLViewerImage::sMaxTotalTextureMem; + S32 bound_mem = BYTES_TO_MEGA_BYTES(LLViewerImage::sBoundTextureMemoryInBytes); + S32 max_bound_mem = LLViewerImage::sMaxBoundTextureMemInMegaBytes; + S32 total_mem = BYTES_TO_MEGA_BYTES(LLViewerImage::sTotalTextureMemoryInBytes); + S32 max_total_mem = LLViewerImage::sMaxTotalTextureMemInMegaBytes; F32 discard_bias = LLViewerImage::sDesiredDiscardBias; S32 line_height = (S32)(LLFontGL::getFontMonospace()->getLineHeight() + .5f); diff --git a/indra/newview/lltoolcomp.cpp b/indra/newview/lltoolcomp.cpp index 0b6e01886a..b6090bc986 100644 --- a/indra/newview/lltoolcomp.cpp +++ b/indra/newview/lltoolcomp.cpp @@ -64,6 +64,9 @@ const S32 HPAD = 4; extern LLControlGroup gSavedSettings; +// we use this in various places instead of NULL +static LLTool* sNullTool = new LLTool(std::string("null"), NULL); + //----------------------------------------------------------------------- // LLToolComposite @@ -87,7 +90,9 @@ void LLToolComposite::setCurrentTool( LLTool* new_tool ) LLToolComposite::LLToolComposite(const std::string& name) : LLTool(name), - mCur(NULL), mDefault(NULL), mSelected(FALSE), + mCur(sNullTool), + mDefault(sNullTool), + mSelected(FALSE), mMouseDown(FALSE), mManip(NULL), mSelectRect(NULL) { } @@ -638,7 +643,7 @@ LLToolCompGun::LLToolCompGun() { mGun = new LLToolGun(this); mGrab = new LLToolGrab(this); - mNull = new LLTool(std::string("null"), this); + mNull = sNullTool; setCurrentTool(mGun); mDefault = mGun; @@ -653,7 +658,8 @@ LLToolCompGun::~LLToolCompGun() delete mGrab; mGrab = NULL; - delete mNull; + // don't delete a static object + // delete mNull; mNull = NULL; } diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp index d4e594656b..6591cd3b19 100644 --- a/indra/newview/llviewerobject.cpp +++ b/indra/newview/llviewerobject.cpp @@ -2748,7 +2748,7 @@ void LLViewerObject::setPixelAreaAndAngle(LLAgent &agent) F32 mid_scale = getMidScale(); F32 min_scale = getMinScale(); - // IW: esitmate - when close to large objects, computing range based on distance from center is no good + // IW: estimate - when close to large objects, computing range based on distance from center is no good // to try to get a min distance from face, subtract min_scale/2 from the range. // This means we'll load too much detail sometimes, but that's better than not enough // I don't think there's a better way to do this without calculating distance per-poly @@ -3733,7 +3733,6 @@ S32 LLViewerObject::setTEColor(const U8 te, const LLColor4& color) else if (color != tep->getColor()) { retval = LLPrimitive::setTEColor(te, color); - //setChanged(TEXTURE); if (mDrawable.notNull() && retval) { // These should only happen on updates which are not the initial update. @@ -3780,6 +3779,22 @@ S32 LLViewerObject::setTETexGen(const U8 te, const U8 texgen) return retval; } +S32 LLViewerObject::setTEMediaTexGen(const U8 te, const U8 media) +{ + S32 retval = 0; + const LLTextureEntry *tep = getTE(te); + if (!tep) + { + llwarns << "No texture entry for te " << (S32)te << ", object " << mID << llendl; + } + else if (media != tep->getMediaTexGen()) + { + retval = LLPrimitive::setTEMediaTexGen(te, media); + setChanged(TEXTURE); + } + return retval; +} + S32 LLViewerObject::setTEShiny(const U8 te, const U8 shiny) { S32 retval = 0; diff --git a/indra/newview/llviewerobject.h b/indra/newview/llviewerobject.h index 16a3b98d12..db69399383 100644 --- a/indra/newview/llviewerobject.h +++ b/indra/newview/llviewerobject.h @@ -305,6 +305,7 @@ public: /*virtual*/ S32 setTERotation(const U8 te, const F32 r); /*virtual*/ S32 setTEBumpmap(const U8 te, const U8 bump ); /*virtual*/ S32 setTETexGen(const U8 te, const U8 texgen ); + /*virtual*/ S32 setTEMediaTexGen(const U8 te, const U8 media ); // *FIXME: this confusingly acts upon a superset of setTETexGen's flags without absorbing its semantics /*virtual*/ S32 setTEShiny(const U8 te, const U8 shiny ); /*virtual*/ S32 setTEFullbright(const U8 te, const U8 fullbright ); /*virtual*/ S32 setTEMediaFlags(const U8 te, const U8 media_flags ); diff --git a/indra/newview/llviewerstats.cpp b/indra/newview/llviewerstats.cpp index 648fbd4714..5f83cddf5b 100644 --- a/indra/newview/llviewerstats.cpp +++ b/indra/newview/llviewerstats.cpp @@ -365,8 +365,8 @@ void output_statistics(void*) llinfos << "Number of orphans: " << gObjectList.getOrphanCount() << llendl; llinfos << "Number of dead objects: " << gObjectList.mNumDeadObjects << llendl; llinfos << "Num images: " << gImageList.getNumImages() << llendl; - llinfos << "Texture usage: " << LLImageGL::sGlobalTextureMemory << llendl; - llinfos << "Texture working set: " << LLImageGL::sBoundTextureMemory << llendl; + llinfos << "Texture usage: " << LLImageGL::sGlobalTextureMemoryInBytes << llendl; + llinfos << "Texture working set: " << LLImageGL::sBoundTextureMemoryInBytes << llendl; llinfos << "Raw usage: " << LLImageRaw::sGlobalRawMemory << llendl; llinfos << "Formatted usage: " << LLImageFormatted::sGlobalFormattedMemory << llendl; llinfos << "Zombie Viewer Objects: " << LLViewerObject::getNumZombieObjects() << llendl; diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index f2fcad8861..cbda0e8a64 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -4405,7 +4405,7 @@ void LLViewerWindow::stopGL(BOOL save_state) gGLManager.mIsDisabled = TRUE; stop_glerror(); - llinfos << "Remaining allocated texture memory: " << LLImageGL::sGlobalTextureMemory << " bytes" << llendl; + llinfos << "Remaining allocated texture memory: " << LLImageGL::sGlobalTextureMemoryInBytes << " bytes" << llendl; } } diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index 168b0056e5..983a580fea 100644 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -1276,7 +1276,7 @@ void LLVOAvatar::deleteCachedImages(bool clearAll) sScratchTexNames.deleteAllData(); LLVOAvatar::sScratchTexLastBindTime.deleteAllData(); - LLImageGL::sGlobalTextureMemory -= sScratchTexBytes; + LLImageGL::sGlobalTextureMemoryInBytes -= sScratchTexBytes; sScratchTexBytes = 0; } @@ -6781,7 +6781,7 @@ LLGLuint LLVOAvatar::getScratchTexName( LLGLenum format, U32* texture_bytes ) LLVOAvatar::sScratchTexNames.addData( format, new LLGLuint( name ) ); LLVOAvatar::sScratchTexBytes += *texture_bytes; - LLImageGL::sGlobalTextureMemory += *texture_bytes; + LLImageGL::sGlobalTextureMemoryInBytes += *texture_bytes; return name; } } @@ -8317,7 +8317,7 @@ BOOL LLVOAvatar::canGrabLocalTexture(ETextureIndex index) return FALSE; } - if (gAgent.isGodlike()) + if (gAgent.isGodlike() && !gAgent.getAdminOverride()) return TRUE; // Check permissions of textures that show up in the diff --git a/indra/newview/llvosky.cpp b/indra/newview/llvosky.cpp index c3366cad90..d4df141477 100644 --- a/indra/newview/llvosky.cpp +++ b/indra/newview/llvosky.cpp @@ -1197,8 +1197,6 @@ LLDrawable *LLVOSky::createDrawable(LLPipeline *pipeline) LLDrawPoolSky *poolp = (LLDrawPoolSky*) gPipeline.getPool(LLDrawPool::POOL_SKY); poolp->setSkyTex(mSkyTex); - poolp->setSun(&mSun); - poolp->setMoon(&mMoon); mDrawable->setRenderType(LLPipeline::RENDER_TYPE_SKY); for (S32 i = 0; i < 6; ++i) @@ -1215,7 +1213,7 @@ LLDrawable *LLVOSky::createDrawable(LLPipeline *pipeline) //by bao //fake vertex buffer updating -//to guaranttee at least updating one VBO buffer every frame +//to guarantee at least updating one VBO buffer every frame //to walk around the bug caused by ATI card --> DEV-3855 // void LLVOSky::createDummyVertexBuffer() diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index 8f11661b30..dd68733d98 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -653,7 +653,8 @@ LLDrawable *LLVOVolume::createDrawable(LLPipeline *pipeline) } updateRadius(); - mDrawable->updateDistance(*LLViewerCamera::getInstance()); + bool force_update = true; // avoid non-alpha mDistance update being optimized away + mDrawable->updateDistance(*LLViewerCamera::getInstance(), force_update); return mDrawable; } @@ -1271,15 +1272,28 @@ S32 LLVOVolume::setTEColor(const U8 te, const LLColor3& color) S32 LLVOVolume::setTEColor(const U8 te, const LLColor4& color) { - S32 res = LLViewerObject::setTEColor(te, color); - if (res && mDrawable.notNull()) + S32 retval = 0; + const LLTextureEntry *tep = getTE(te); + if (!tep) { - //gPipeline.markTextured(mDrawable); - mDrawable->setState(LLDrawable::REBUILD_COLOR); - dirtyMesh(); - //mFaceMappingChanged = TRUE; + llwarns << "No texture entry for te " << (S32)te << ", object " << mID << llendl; } - return res; + else if (color != tep->getColor()) + { + if (color.mV[3] != tep->getColor().mV[3]) + { + gPipeline.markTextured(mDrawable); + } + retval = LLPrimitive::setTEColor(te, color); + if (mDrawable.notNull() && retval) + { + // These should only happen on updates which are not the initial update. + mDrawable->setState(LLDrawable::REBUILD_COLOR); + dirtyMesh(); + } + } + + return retval; } S32 LLVOVolume::setTEBumpmap(const U8 te, const U8 bumpmap) @@ -1304,6 +1318,17 @@ S32 LLVOVolume::setTETexGen(const U8 te, const U8 texgen) return res; } +S32 LLVOVolume::setTEMediaTexGen(const U8 te, const U8 media) +{ + S32 res = LLViewerObject::setTEMediaTexGen(te, media); + if (res) + { + gPipeline.markTextured(mDrawable); + mFaceMappingChanged = TRUE; + } + return res; +} + S32 LLVOVolume::setTEShiny(const U8 te, const U8 shiny) { S32 res = LLViewerObject::setTEShiny(te, shiny); @@ -1326,6 +1351,17 @@ S32 LLVOVolume::setTEFullbright(const U8 te, const U8 fullbright) return res; } +S32 LLVOVolume::setTEBumpShinyFullbright(const U8 te, const U8 bump) +{ + S32 res = LLViewerObject::setTEBumpShinyFullbright(te, bump); + if (res) + { + gPipeline.markTextured(mDrawable); + mFaceMappingChanged = TRUE; + } + return res; +} + S32 LLVOVolume::setTEMediaFlags(const U8 te, const U8 media_flags) { S32 res = LLViewerObject::setTEMediaFlags(te, media_flags); @@ -2812,7 +2848,7 @@ LLHUDPartition::LLHUDPartition() mPartitionType = LLViewerRegion::PARTITION_HUD; mDrawableType = LLPipeline::RENDER_TYPE_HUD; mSlopRatio = 0.f; - mLODPeriod = 16; + mLODPeriod = 1; } void LLHUDPartition::shift(const LLVector3 &offset) diff --git a/indra/newview/llvovolume.h b/indra/newview/llvovolume.h index 155775510e..9b4e715194 100644 --- a/indra/newview/llvovolume.h +++ b/indra/newview/llvovolume.h @@ -158,12 +158,14 @@ public: /*virtual*/ S32 setTEBumpmap(const U8 te, const U8 bump); /*virtual*/ S32 setTEShiny(const U8 te, const U8 shiny); /*virtual*/ S32 setTEFullbright(const U8 te, const U8 fullbright); + /*virtual*/ S32 setTEBumpShinyFullbright(const U8 te, const U8 bump); /*virtual*/ S32 setTEMediaFlags(const U8 te, const U8 media_flags); /*virtual*/ S32 setTEGlow(const U8 te, const F32 glow); /*virtual*/ S32 setTEScale(const U8 te, const F32 s, const F32 t); /*virtual*/ S32 setTEScaleS(const U8 te, const F32 s); /*virtual*/ S32 setTEScaleT(const U8 te, const F32 t); /*virtual*/ S32 setTETexGen(const U8 te, const U8 texgen); + /*virtual*/ S32 setTEMediaTexGen(const U8 te, const U8 media); /*virtual*/ BOOL setMaterial(const U8 material); void setTexture(const S32 face); diff --git a/indra/newview/nl.lproj/language.txt b/indra/newview/nl.lproj/language.txt new file mode 100644 index 0000000000..d5f5c2a19c --- /dev/null +++ b/indra/newview/nl.lproj/language.txt @@ -0,0 +1 @@ +nl \ No newline at end of file diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 8dec9b9ba8..ebf2f91aa2 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -1945,7 +1945,8 @@ void LLPipeline::stateSort(LLSpatialBridge* bridge, LLCamera& camera) LLMemType mt(LLMemType::MTYPE_PIPELINE); if (!sSkipUpdate && bridge->getSpatialGroup()->changeLOD()) { - bridge->updateDistance(camera); + bool force_update = false; + bridge->updateDistance(camera, force_update); } } @@ -2006,11 +2007,13 @@ void LLPipeline::stateSort(LLDrawable* drawablep, LLCamera& camera) { if (!drawablep->isActive()) { - drawablep->updateDistance(camera); + bool force_update = false; + drawablep->updateDistance(camera, force_update); } else if (drawablep->isAvatar()) { - drawablep->updateDistance(camera); // calls vobj->updateLOD() which calls LLVOAvatar::updateVisibility() + bool force_update = false; + drawablep->updateDistance(camera, force_update); // calls vobj->updateLOD() which calls LLVOAvatar::updateVisibility() } } } @@ -2570,9 +2573,6 @@ void LLPipeline::renderGeom(LLCamera& camera, BOOL forceVBOUpdate) stop_glerror(); LLAppViewer::instance()->pingMainloopTimeout("Pipeline:RenderDrawPools"); - - LLAppViewer::instance()->pingMainloopTimeout("Pipeline:RenderForSelect"); - LLAppViewer::instance()->pingMainloopTimeout("Pipeline:RenderDeferred"); for (pool_set_t::iterator iter = mPools.begin(); iter != mPools.end(); ++iter) { LLDrawPool *poolp = *iter; @@ -2584,6 +2584,7 @@ void LLPipeline::renderGeom(LLCamera& camera, BOOL forceVBOUpdate) if (gPipeline.hasRenderDebugMask(LLPipeline::RENDER_DEBUG_PICKING)) { + LLAppViewer::instance()->pingMainloopTimeout("Pipeline:RenderForSelect"); gObjectList.renderObjectsForSelect(camera, gViewerWindow->getVirtualWindowRect()); } else @@ -2747,6 +2748,7 @@ void LLPipeline::renderGeom(LLCamera& camera, BOOL forceVBOUpdate) void LLPipeline::renderGeomDeferred(LLCamera& camera) { + LLAppViewer::instance()->pingMainloopTimeout("Pipeline:RenderGeomDeferred"); LLFastTimer t(LLFastTimer::FTM_RENDER_GEOMETRY); LLFastTimer t2(LLFastTimer::FTM_POOLS); diff --git a/indra/newview/pl.lproj/language.txt b/indra/newview/pl.lproj/language.txt new file mode 100644 index 0000000000..55239f3c18 --- /dev/null +++ b/indra/newview/pl.lproj/language.txt @@ -0,0 +1 @@ +pl \ No newline at end of file diff --git a/indra/newview/pt.lproj/language.txt b/indra/newview/pt.lproj/language.txt new file mode 100644 index 0000000000..9e3340eca2 --- /dev/null +++ b/indra/newview/pt.lproj/language.txt @@ -0,0 +1 @@ +pt \ No newline at end of file diff --git a/indra/newview/ru.lproj/language.txt b/indra/newview/ru.lproj/language.txt new file mode 100644 index 0000000000..adc719b423 --- /dev/null +++ b/indra/newview/ru.lproj/language.txt @@ -0,0 +1 @@ +ru \ No newline at end of file diff --git a/indra/newview/skins/default/xui/da/floater_about.xml b/indra/newview/skins/default/xui/da/floater_about.xml index 5795053a14..9f3a61d0c5 100644 --- a/indra/newview/skins/default/xui/da/floater_about.xml +++ b/indra/newview/skins/default/xui/da/floater_about.xml @@ -1,9 +1,9 @@ - Second Life er gjort muligt for dig af Philip, Tessa, Andrew, Cory, James, Ben, Char, Charlie, Colin, Dan, Daniel, Doug, Eric, Hamlet, Haney, Eve, Hunter, Ian, Jeff, Jennifer, Jim, John, Lee, Mark, Peter, Phoenix, Richard, Robin, Xenon, Steve, Tanya, Eddie, Avi, Frank, Bruce, Aaron, Alice, Bob, Debra, Eileen, Helen, Janet, Louie, Leviathania, Stefan, Ray, Kevin, Tom, Mikeb, MikeT, Burgess, Elena, Tracy, Bill, Todd, Ryan, Zach, Sarah, Nova, Tim, Stephanie, Michael, Evan, Nicolas, Catherine, Rachelle, Dave, Holly, Bub, Kelly, Magellan, Ramzi, Don, Sabin, Jill, Rheya, Jeska, Torley, Kona, Callum, Charity, Ventrella, Jack, Vektor, Iris, Chris, Nicole, Mick, Reuben, Blue, Babbage, Yedwab, Deana, Lauren, Brent, Pathfinder, Chadrick, Altruima, Jesse, Teeny, Monroe, Icculus, David, Tess, Lizzie, Patsy, Isaac, Lawrence, Cyn, Bo, Gia, Annette, Marius, Tbone, Jonathan, Karen, Ginsu, Satoko, Yuko, Makiko, Thomas, Harry, Seth, Alexei, Brian, Guy, Runitai, Ethan, Data, Cornelius, Kenny, Swiss, Zero, Natria, Wendy, Stephen, Teeple, Thumper, Lucy, Dee, Mia, Liana, Warren, Branka, Aura, beez, Milo, Hermia, Red, Thrax, Joe, Sally, Magenta, Mogura, Paul, Jose, Rejean, Henrik, Lexie, Amber, Logan, Xan, Nora, Morpheus, Donovan, Leyla, MichaelFrancis, Beast, Cube, Bucky, Joshua, Stryfe, Harmony, Teresa, Claudia, Walker, Glenn, Fritz, Fordak, June, Cleopetra, Jean, Ivy, Betsy, Roosevelt, Spike, Ken, Which, Tofu, Chiyo, Rob, Zee, dustin, George, Del, Matthew, Cat, Jacqui, Lightfoot, Adrian, Viola, Alfred, Noel, Irfan, Sunil, Yool, Rika, Jane, Xtreme, Frontier, a2, Neo, Siobhan, Yoz, Justin, Elle, Qarl, Benjamin, Isabel, Gulliver, Everett, Christopher, Izzy, Stephany, Garry, Sejong, Sean, Tobin, Iridium, Meta, Anthony, Jeremy, JP, Jake, Maurice, Madhavi, Leopard, Kyle, Joon, Kari, Bert, Belinda, Jon, Kristi, Bridie, Pramod, KJ, Socrates, Maria, Ivan, Aric, Yamasaki, Adreanne, Jay, MitchK, Ceren, Coco, Durl, Jenny, Periapse, Kartic, Storrs, Lotte, Sandy, Rohn, Colossus, Zen, BigPapi, Brad, Pastrami, Kurz, Mani, Neuro, Jaime, MJ, Rowan, Sgt, Elvis, Gecko, Samuel, Sardonyx, Leo, Bryan, Niko, Soft, Poppy, Rachel, Aki, Angelo, Banzai, Alexa, Sue, CeeLo, Bender, CG, Gillian, Pelle, Nick, Echo, Zara, Christine, Shamiran, Emma, Blake, Keiko, Plexus, Joppa, Sidewinder, Erica, Ashlei, Twilight, Kristen, Brett, Q, Enus, Simon, Bevis, Kraft, Kip, Chandler, Ron, LauraP, Ram, KyleJM, Scouse, Prospero, Melissa, Marty, Nat, Hamilton, Kend, Lordan, Jimmy, Kosmo, Seraph, Green, Ekim, Wiggo, JT, Rome, Doris, Miz, Benoc, Whump, Trinity, Patch, Kate, TJ, Bao, Joohwan, Christy, Sofia, Matias, Cogsworth, Johan, Oreh, Cheah, Angela, Brandy, Mango, Lan, Aleks, Gloria, Heidy, Mitchell, Space, Colton, Bambers, Einstein, Maggie, Malbers, Rose, Winnie, Stella, Milton, Rothman, Niall, Marin, Allison, Katie, Dawn, Katt, Dusty, Kalpana, Judy, Andrea, Ambroff, Infinity, Gail, Rico, Raymond, Yi, William, Christa, M, Teagan, Scout, Molly, Dante, Corr, Dynamike, Usi, Kaylee, Vidtuts, Lil, Danica, Sascha, Kelv, Jacob, Nya, Rodney, Brandon, Elsie, Blondin, Grant, Katrin, Nyx, Gabriel, Locklainn, Claire, Devin, Minerva, Monty, Austin, Bradford, Si, Keira, H, Caitlin, Dita, Makai, Jenn, Ann, Meredith, Clare, Joy, Praveen, Cody, Edmund, Ruthe, Sirena, Gayathri, Spider, FJ, Davidoff, Tian, Jennie, Louise, Oskar, Landon, Noelle, Jarv, Ingrid, Al, Sommer, Doc, Aria, Huin, Gray, Lili, Vir, DJ, Yang, T, Simone, Maestro, Scott, Charlene, Quixote, Amanda, Susan, Zed, Anne, Enkidu, Esbee, Joroan, Katelin, Roxie, Tay, Scarlet, Kevin, Johnny, Wolfgang, Andren, Bob, Howard, Merov, Rand, Ray, Michon, Newell, Galen, Dessie, Les and many others. + Second Life er gjort muligt for dig af Philip, Tessa, Andrew, Cory, James, Ben, Char, Charlie, Colin, Dan, Daniel, Doug, Eric, Hamlet, Haney, Eve, Hunter, Ian, Jeff, Jennifer, Jim, John, Lee, Mark, Peter, Phoenix, Richard, Robin, Xenon, Steve, Tanya, Eddie, Avi, Frank, Bruce, Aaron, Alice, Bob, Debra, Eileen, Helen, Janet, Louie, Leviathania, Stefan, Ray, Kevin, Tom, Mikeb, MikeT, Burgess, Elena, Tracy, Bill, Todd, Ryan, Zach, Sarah, Nova, Tim, Stephanie, Michael, Evan, Nicolas, Catherine, Rachelle, Dave, Holly, Bub, Kelly, Magellan, Ramzi, Don, Sabin, Jill, Rheya, Jeska, Torley, Kona, Callum, Charity, Ventrella, Jack, Vektor, Iris, Chris, Nicole, Mick, Reuben, Blue, Babbage, Yedwab, Deana, Lauren, Brent, Pathfinder, Chadrick, Altruima, Jesse, Teeny, Monroe, Icculus, David, Tess, Lizzie, Patsy, Isaac, Lawrence, Cyn, Bo, Gia, Annette, Marius, Tbone, Jonathan, Karen, Ginsu, Satoko, Yuko, Makiko, Thomas, Harry, Seth, Alexei, Brian, Guy, Runitai, Ethan, Data, Cornelius, Kenny, Swiss, Zero, Natria, Wendy, Stephen, Teeple, Thumper, Lucy, Dee, Mia, Liana, Warren, Branka, Aura, beez, Milo, Hermia, Red, Thrax, Joe, Sally, Magenta, Mogura, Paul, Jose, Rejean, Henrik, Lexie, Amber, Logan, Xan, Nora, Morpheus, Donovan, Leyla, MichaelFrancis, Beast, Cube, Bucky, Joshua, Stryfe, Harmony, Teresa, Claudia, Walker, Glenn, Fritz, Fordak, June, Cleopetra, Jean, Ivy, Betsy, Roosevelt, Spike, Ken, Which, Tofu, Chiyo, Rob, Zee, dustin, George, Del, Matthew, Cat, Jacqui, Lightfoot, Adrian, Viola, Alfred, Noel, Irfan, Sunil, Yool, Rika, Jane, Xtreme, Frontier, a2, Neo, Siobhan, Yoz, Justin, Elle, Qarl, Benjamin, Isabel, Gulliver, Everett, Christopher, Izzy, Stephany, Garry, Sejong, Sean, Tobin, Iridium, Meta, Anthony, Jeremy, JP, Jake, Maurice, Madhavi, Leopard, Kyle, Joon, Kari, Bert, Belinda, Jon, Kristi, Bridie, Pramod, KJ, Socrates, Maria, Ivan, Aric, Yamasaki, Adreanne, Jay, MitchK, Ceren, Coco, Durl, Jenny, Periapse, Kartic, Storrs, Lotte, Sandy, Rohn, Colossus, Zen, BigPapi, Brad, Pastrami, Kurz, Mani, Neuro, Jaime, MJ, Rowan, Sgt, Elvis, Gecko, Samuel, Sardonyx, Leo, Bryan, Niko, Soft, Poppy, Rachel, Aki, Angelo, Banzai, Alexa, Sue, CeeLo, Bender, CG, Gillian, Pelle, Nick, Echo, Zara, Christine, Shamiran, Emma, Blake, Keiko, Plexus, Joppa, Sidewinder, Erica, Ashlei, Twilight, Kristen, Brett, Q, Enus, Simon, Bevis, Kraft, Kip, Chandler, Ron, LauraP, Ram, KyleJM, Scouse, Prospero, Melissa, Marty, Nat, Hamilton, Kend, Lordan, Jimmy, Kosmo, Seraph, Green, Ekim, Wiggo, JT, Rome, Doris, Miz, Benoc, Whump, Trinity, Patch, Kate, TJ, Bao, Joohwan, Christy, Sofia, Matias, Cogsworth, Johan, Oreh, Cheah, Angela, Brandy, Mango, Lan, Aleks, Gloria, Heidy, Mitchell, Space, Colton, Bambers, Einstein, Maggie, Malbers, Rose, Winnie, Stella, Milton, Rothman, Niall, Marin, Allison, Katie, Dawn, Katt, Dusty, Kalpana, Judy, Andrea, Ambroff, Infinity, Gail, Rico, Raymond, Yi, William, Christa, M, Teagan, Scout, Molly, Dante, Corr, Dynamike, Usi, Kaylee, Vidtuts, Lil, Danica, Sascha, Kelv, Jacob, Nya, Rodney, Brandon, Elsie, Blondin, Grant, Katrin, Nyx, Gabriel, Locklainn, Claire, Devin, Minerva, Monty, Austin, Bradford, Si, Keira, H, Caitlin, Dita, Makai, Jenn, Ann, Meredith, Clare, Joy, Praveen, Cody, Edmund, Ruthe, Sirena, Gayathri, Spider, FJ, Davidoff, Tian, Jennie, Louise, Oskar, Landon, Noelle, Jarv, Ingrid, Al, Sommer, Doc, Aria, Huin, Gray, Lili, Vir, DJ, Yang, T, Simone, Maestro, Scott, Charlene, Quixote, Amanda, Susan, Zed, Anne, Enkidu, Esbee, Joroan, Katelin, Roxie, Tay, Scarlet, Kevin, Johnny, Wolfgang, Andren, Bob, Howard, Merov, Rand, Ray, Michon, Newell, Galen, Dessie, Les, Michon, Jenelle, Geo, Siz, Shapiro, Pete, Calyle, Selene, Allen, Phoebe, Goldin, Kimmora, Dakota, Slaton, Lindquist, Zoey, Hari, Othello, Rohit, Sheldon, Petra, Viale, Gordon, Kaye, Pink, Ferny, Emerson, Davy, Bri, Chan, Juan, Robert, Terrence, Nathan, Carl and many others. -Tak til følgende beboerne for at bidrage til at sikre, at dette er den bedste version til dato: afon shepherd, Aimee Trescothick, Alexandrea Fride, Alissa Sabre, Amber DeCuir, Asuka Neely, Auron Forcella, Blue Revolution, Bocan Undercroft, Boroondas Gupte, Brandon Shinobu, Bri Gufler, Buckaroo Mu, Celierra Darling, Christos Atlantis, Coder Kas, Cummere Mayo, dakota schwade, Dirk Talamasca, Dizzy Banjo, Drew Dwi, Duckling Kwak, Ellla McMahon, Erikah Jameson, Erinyse Planer, Eyana Yohkoh, Ezian Ecksol, Faron Karu, Fenoe Lowey, Fox Hwasung, Francisca Biedermann, Gally Young, Gellan Glenelg, Geneko Nemeth, Glenn Rotaru, Hagar Qinan, Harleen Gretzky, Holger Gilruth, hotrodjohnny gears, IAm Zabelin, Inigo Catteneo, Iustinian Tomsen, Jacek Antonell, James Benedek, Jim Kupferberg, Joeseph Albanese, JPT62089 Agnon, Kardargo Adamczyk, Kirstenlee Cinquetti, Latif Khalifa, lea Parnall, Lex Neva, Lillith Anatine, Lilly Zenovka, Lim Catteneo, Lindal Kidd, Mark Rosenbaum, MasterJ Chaplin, McCabe Maxsted, Melvin Starbrook, Meni Kaiousei, Mero Collas, Minakothegothicgeisha Kamachi, Moon Metty, neofilo aabye, Neutron Chesnokov, Nomad Ingwer, norritt Xi, Opensource Obscure, Oracle Weatherwax, Ourasi Ferraris, Pabl0 Roffo, Peyton Aleixandre, Phli Foxchase, Psi Merlin, r2d2 Wunderlich, Regi Yifu, Saijanai Kuhn, Sandor Balczo, Sarkan Dreamscape, Scree Raymaker, Sedona Mills, Selena Beale, Sheet Spotter, Shibari Twine, Silver Key, Simon Kline, SLB Wirefly, Stacy Wombat, Sugarcult Dagger, Tayra Dagostino, Tetsuryu Vlodovic, ThaBiGGDoGG Richez, Timo Gufler, tx Oh, wayfinder wishbringer, Wizzytoe McCullough, Wundur Primbee, Yann Dufaux, Yuu Nakamichi, Aminom Marvin, Andred Qinan, arminasx saiman, caroline apollo, Iskar Ariantho, Jenika Connolly, Maghnus Balogh, Nefertiti Nefarious, RodneyLee Jessop +Tak til følgende beboerne for at bidrage til at sikre, at dette er den bedste version til dato: able whitman, Adeon Writer, adonaira aabye, Aeron Kohime, Agathos Frascati, Aimee Trescothick, Aleric Inglewood, Alissa Sabre, Aminom Marvin, Angela Talamasca, Aralara Rajal, Armin Weatherwax, Ashrilyn Hayashida, Athanasius Skytower, Aura Dirval, Barney Boomslang, Biancaluce Robbiani, Biker Offcourse, Borg Capalini, Bulli Schumann, catherine pfeffer, Chalice Yao, Corre Porta, Court Goodman, Cummere Mayo, Dale Innis, Darien Caldwell, Darjeeling Schoonhoven, Daten Thielt, dimentox travanti, Dirk Talamasca, Drew Dwi, Duckless Vandyke, Elanthius Flagstaff, Electro Burnstein, emiley tomsen, Escort DeFarge, Eva Rau, Ezian Ecksol, Fire Centaur, Fluf Fredriksson, Francisco Koolhoven, Frontera Thor, Frungi Stastny, Gally Young, gearsawe stonecutter, Gigs Taggart, Gordon Wendt, Gudmund Shepherd, Gypsy Paz, Harleen Gretzky, Henri Beauchamp, Inma Rau, Irene Muni, Iskar Ariantho, Jacek Antonelli, JB Kraft, Jessicka Graves, Joeseph Albanese, Joshua Philgarlic, Khyota Wulluf, kirstenlee Cinquetti, Latif Khalifa, Lex Neva, Lilibeth Andree, Lisa Lowe, Lunita Savira, Loosey Demonia, lum pfohl, Marcos Fonzarelli, MartinRJ Fayray, Marusame Arai, Matthew Dowd, Maya Remblai, McCabe Maxsted, Meghan Dench, Melchoir Tokhes, Menos Short, Michelle2 Zenovka, Mimika Oh, Minerva Memel, Mm Alder, Ochi Wolfe, Omei Turnbull, Pesho Replacement, Phantom Ninetails, phoenixflames kukulcan, Polo Gufler, prez pessoa, princess niven, Prokofy Neva, Qie Niangao, Rem Beattie, RodneyLee Jessop, Saijanai Kuhn, Seg Baphomet, Sergen Davies, Shirley Marquez, SignpostMarv Martin, Sindy Tsure, Sira Arbizu, Skips Jigsaw, Sougent Harrop, Spritely Pixel, Squirrel Wood, StarSong Bright, Subversive Writer, Sugarcult Dagger, Sylumm Grigorovich, Tammy Nowotny, Tanooki Darkes, Tayra Dagostino, Theoretical Chemistry, Thickbrick Sleaford, valerie rosewood, Vex Streeter, Vixen Heron, Whoops Babii, Winter Ventura, Xiki Luik, Yann Dufaux, Yina Yao, Yukinoroh Kamachi, Zolute Infinity, Zwagoth Klaar 3Dconnexion SDK Copyright (C) 1992-2007 3Dconnexion APR Copyright (C) 2000-2004 The Apache Software Foundation 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 8c1ed736a3..df7d5fe8ff 100644 --- a/indra/newview/skins/default/xui/da/floater_about_land.xml +++ b/indra/newview/skins/default/xui/da/floater_about_land.xml @@ -1,80 +1,83 @@ - + - + Navn: - + Beskrivelse: - + + Type: + + + Mainland / Homestead + + + Rating: + + + Adult + + Ejer: - + Leyla Linden -