aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/linden/indra/newview/llfloatersnapshot.cpp
diff options
context:
space:
mode:
authorJacek Antonelli2009-05-30 17:16:26 -0500
committerJacek Antonelli2009-05-30 19:12:37 -0500
commit499afbab7be4c4136eea0e1897319c3ac4e9799d (patch)
tree95e9de524994eae69b0dd88b8c6608d5f45d030c /linden/indra/newview/llfloatersnapshot.cpp
parentFixed end-of-line style for Info-Imprudence.plist. (diff)
parentSecond Life viewer sources 1.22.11 (diff)
downloadmeta-impy-499afbab7be4c4136eea0e1897319c3ac4e9799d.zip
meta-impy-499afbab7be4c4136eea0e1897319c3ac4e9799d.tar.gz
meta-impy-499afbab7be4c4136eea0e1897319c3ac4e9799d.tar.bz2
meta-impy-499afbab7be4c4136eea0e1897319c3ac4e9799d.tar.xz
Merged SL 1.22.11 into Imprudence 1.1 RC2.
Conflicts: linden/doc/contributions.txt linden/indra/cmake/APR.cmake linden/indra/cmake/CopyWinLibs.cmake linden/indra/cmake/LLKDU.cmake (removed) linden/indra/cmake/LLMedia.cmake linden/indra/cmake/OPENAL.cmake linden/indra/cmake/QuickTime.cmake (removed) linden/indra/develop.py linden/indra/lib/python/indra/base/llsd.py linden/indra/lib/python/indra/util/fastest_elementtree.py linden/indra/lib/python/indra/util/llmanifest.py linden/indra/lib/python/indra/util/named_query.py linden/indra/llaudio/CMakeLists.txt linden/indra/llaudio/audioengine.cpp linden/indra/llaudio/audioengine.h linden/indra/llaudio/audioengine_fmod.cpp linden/indra/llaudio/audioengine_fmod.h linden/indra/llaudio/audioengine_openal.cpp linden/indra/llaudio/audioengine_openal.h linden/indra/llaudio/listener_openal.cpp linden/indra/llaudio/listener_openal.h linden/indra/llaudio/windgen.h linden/indra/llcrashlogger/llcrashlogger.cpp linden/indra/llmedia/llmediaimplgstreamer.cpp linden/indra/llmedia/llmediaimplgstreamer_syms.cpp (removed) linden/indra/llmedia/llmediaimplgstreamer_syms.h (removed) linden/indra/llmessage/llcircuit.h linden/indra/llrender/llgl.cpp linden/indra/llrender/llrender.h linden/indra/llui/llfloater.cpp linden/indra/llui/lltexteditor.cpp linden/indra/llwindow/llwindowsdl.cpp linden/indra/mac_crash_logger/CMakeLists.txt linden/indra/mac_updater/CMakeLists.txt linden/indra/newview/CMakeLists.txt linden/indra/newview/English.lproj/InfoPlist.strings linden/indra/newview/Info-Imprudence.plist linden/indra/newview/installers/windows/installer_template.nsi linden/indra/newview/installers/windows/lang_de.nsi linden/indra/newview/installers/windows/lang_en-us.nsi linden/indra/newview/installers/windows/lang_ja.nsi linden/indra/newview/installers/windows/lang_ko.nsi linden/indra/newview/llappviewer.cpp linden/indra/newview/llaudiosourcevo.cpp linden/indra/newview/llfloaterabout.cpp linden/indra/newview/llfloaterhtml.cpp linden/indra/newview/llfloaterhtml.h linden/indra/newview/llfloaterinspect.cpp linden/indra/newview/llfloatersnapshot.cpp linden/indra/newview/llpanelgeneral.cpp linden/indra/newview/llpanelgeneral.h linden/indra/newview/llpanellogin.cpp linden/indra/newview/llpanelobject.cpp linden/indra/newview/llurlhistory.cpp linden/indra/newview/llviewermenu.cpp linden/indra/newview/llviewernetwork.cpp linden/indra/newview/llviewernetwork.h linden/indra/newview/llviewerobject.cpp linden/indra/newview/llviewerwindow.cpp linden/indra/newview/llvoavatar.cpp linden/indra/newview/res/viewerRes.rc linden/indra/newview/skins/default/xui/de/floater_env_settings.xml linden/indra/newview/skins/default/xui/de/floater_html.xml linden/indra/newview/skins/default/xui/de/floater_inspect.xml linden/indra/newview/skins/default/xui/de/floater_instant_message_group.xml linden/indra/newview/skins/default/xui/de/floater_lagmeter.xml linden/indra/newview/skins/default/xui/de/floater_lsl_guide.xml linden/indra/newview/skins/default/xui/de/floater_url_entry.xml linden/indra/newview/skins/default/xui/de/floater_water.xml linden/indra/newview/skins/default/xui/de/mime_types.xml linden/indra/newview/skins/default/xui/de/need_to_long.xml linden/indra/newview/skins/default/xui/de/need_to_translate.xml linden/indra/newview/skins/default/xui/de/need_to_update.xml linden/indra/newview/skins/default/xui/de/panel_friends.xml linden/indra/newview/skins/default/xui/de/panel_media_remote_expanded.xml linden/indra/newview/skins/default/xui/de/panel_preferences_voice.xml linden/indra/newview/skins/default/xui/de/panel_voice_controls.xml linden/indra/newview/skins/default/xui/de/panel_voice_enable.xml linden/indra/newview/skins/default/xui/de/panel_voice_options.xml linden/indra/newview/skins/default/xui/de/strings.xml linden/indra/newview/skins/default/xui/en-us/floater_chat_history.xml linden/indra/newview/skins/default/xui/en-us/floater_instant_message_ad_hoc.xml linden/indra/newview/skins/default/xui/en-us/floater_instant_message_group.xml linden/indra/newview/skins/default/xui/en-us/floater_lagmeter.xml linden/indra/newview/skins/default/xui/en-us/menu_pie_object.xml linden/indra/newview/skins/default/xui/en-us/menu_viewer.xml linden/indra/newview/skins/default/xui/en-us/panel_audio_device.xml linden/indra/newview/skins/default/xui/en-us/panel_preferences_general.xml linden/indra/newview/skins/default/xui/en-us/panel_preferences_input.xml linden/indra/newview/skins/default/xui/en-us/panel_preferences_voice.xml linden/indra/newview/skins/default/xui/en-us/panel_voice_remote.xml linden/indra/newview/skins/default/xui/en-us/panel_voice_remote_expanded.xml linden/indra/newview/skins/default/xui/es/alerts.xml linden/indra/newview/skins/default/xui/es/floater_about_land.xml linden/indra/newview/skins/default/xui/es/floater_mute.xml linden/indra/newview/skins/default/xui/es/menu_viewer.xml linden/indra/newview/skins/default/xui/es/panel_group_land_money.xml linden/indra/newview/skins/default/xui/es/panel_preferences_general.xml linden/indra/newview/skins/default/xui/fr/alerts.xml linden/indra/newview/skins/default/xui/fr/floater_about.xml linden/indra/newview/skins/default/xui/fr/floater_about_land.xml linden/indra/newview/skins/default/xui/fr/floater_active_speakers.xml linden/indra/newview/skins/default/xui/fr/floater_animation_preview.xml linden/indra/newview/skins/default/xui/fr/floater_avatar_picker.xml linden/indra/newview/skins/default/xui/fr/floater_avatar_textures.xml linden/indra/newview/skins/default/xui/fr/floater_buy_contents.xml linden/indra/newview/skins/default/xui/fr/floater_buy_currency.xml linden/indra/newview/skins/default/xui/fr/floater_buy_land.xml linden/indra/newview/skins/default/xui/fr/floater_buy_object.xml linden/indra/newview/skins/default/xui/fr/floater_chat_history.xml linden/indra/newview/skins/default/xui/fr/floater_color_picker.xml linden/indra/newview/skins/default/xui/fr/floater_customize.xml linden/indra/newview/skins/default/xui/fr/floater_directory.xml linden/indra/newview/skins/default/xui/fr/floater_env_settings.xml linden/indra/newview/skins/default/xui/fr/floater_god_tools.xml linden/indra/newview/skins/default/xui/fr/floater_group_info.xml linden/indra/newview/skins/default/xui/fr/floater_hardware_settings.xml linden/indra/newview/skins/default/xui/fr/floater_html.xml linden/indra/newview/skins/default/xui/fr/floater_image_preview.xml linden/indra/newview/skins/default/xui/fr/floater_import.xml linden/indra/newview/skins/default/xui/fr/floater_instant_message.xml linden/indra/newview/skins/default/xui/fr/floater_instant_message_ad_hoc.xml linden/indra/newview/skins/default/xui/fr/floater_instant_message_group.xml linden/indra/newview/skins/default/xui/fr/floater_inventory.xml linden/indra/newview/skins/default/xui/fr/floater_inventory_item_properties.xml linden/indra/newview/skins/default/xui/fr/floater_inventory_view_finder.xml linden/indra/newview/skins/default/xui/fr/floater_joystick.xml linden/indra/newview/skins/default/xui/fr/floater_lagmeter.xml linden/indra/newview/skins/default/xui/fr/floater_land_holdings.xml linden/indra/newview/skins/default/xui/fr/floater_lsl_guide.xml linden/indra/newview/skins/default/xui/fr/floater_media_browser.xml linden/indra/newview/skins/default/xui/fr/floater_moveview.xml linden/indra/newview/skins/default/xui/fr/floater_mute.xml linden/indra/newview/skins/default/xui/fr/floater_mute_object.xml linden/indra/newview/skins/default/xui/fr/floater_name_description.xml linden/indra/newview/skins/default/xui/fr/floater_new_outfit_dialog.xml linden/indra/newview/skins/default/xui/fr/floater_openobject.xml linden/indra/newview/skins/default/xui/fr/floater_pay.xml linden/indra/newview/skins/default/xui/fr/floater_pay_object.xml linden/indra/newview/skins/default/xui/fr/floater_preferences.xml linden/indra/newview/skins/default/xui/fr/floater_preview_animation.xml linden/indra/newview/skins/default/xui/fr/floater_preview_gesture.xml linden/indra/newview/skins/default/xui/fr/floater_preview_notecard.xml linden/indra/newview/skins/default/xui/fr/floater_preview_notecard_keep_discard.xml linden/indra/newview/skins/default/xui/fr/floater_preview_sound.xml linden/indra/newview/skins/default/xui/fr/floater_price_for_listing.xml linden/indra/newview/skins/default/xui/fr/floater_region_info.xml linden/indra/newview/skins/default/xui/fr/floater_report_abuse.xml linden/indra/newview/skins/default/xui/fr/floater_report_bug.xml linden/indra/newview/skins/default/xui/fr/floater_script_ed_panel.xml linden/indra/newview/skins/default/xui/fr/floater_sell_land.xml linden/indra/newview/skins/default/xui/fr/floater_settings_debug.xml linden/indra/newview/skins/default/xui/fr/floater_skin_preview_template.xml linden/indra/newview/skins/default/xui/fr/floater_snapshot.xml linden/indra/newview/skins/default/xui/fr/floater_sound_preview.xml linden/indra/newview/skins/default/xui/fr/floater_telehub.xml linden/indra/newview/skins/default/xui/fr/floater_texture_ctrl.xml linden/indra/newview/skins/default/xui/fr/floater_tools.xml linden/indra/newview/skins/default/xui/fr/floater_top_objects.xml linden/indra/newview/skins/default/xui/fr/floater_url_entry.xml linden/indra/newview/skins/default/xui/fr/floater_windlight_options.xml linden/indra/newview/skins/default/xui/fr/floater_world_map.xml linden/indra/newview/skins/default/xui/fr/menu_inventory.xml linden/indra/newview/skins/default/xui/fr/menu_pie_avatar.xml linden/indra/newview/skins/default/xui/fr/menu_pie_land.xml linden/indra/newview/skins/default/xui/fr/menu_pie_self.xml linden/indra/newview/skins/default/xui/fr/menu_viewer.xml linden/indra/newview/skins/default/xui/fr/mime_types.xml linden/indra/newview/skins/default/xui/fr/notify.xml linden/indra/newview/skins/default/xui/fr/panel_audio.xml linden/indra/newview/skins/default/xui/fr/panel_audio_device.xml linden/indra/newview/skins/default/xui/fr/panel_avatar.xml linden/indra/newview/skins/default/xui/fr/panel_avatar_classified.xml linden/indra/newview/skins/default/xui/fr/panel_chat_bar.xml linden/indra/newview/skins/default/xui/fr/panel_classified.xml linden/indra/newview/skins/default/xui/fr/panel_event.xml linden/indra/newview/skins/default/xui/fr/panel_friends.xml linden/indra/newview/skins/default/xui/fr/panel_group.xml linden/indra/newview/skins/default/xui/fr/panel_group_finder.xml linden/indra/newview/skins/default/xui/fr/panel_group_general.xml linden/indra/newview/skins/default/xui/fr/panel_group_invite.xml linden/indra/newview/skins/default/xui/fr/panel_group_land_money.xml linden/indra/newview/skins/default/xui/fr/panel_group_notices.xml linden/indra/newview/skins/default/xui/fr/panel_group_roles.xml linden/indra/newview/skins/default/xui/fr/panel_group_voting.xml linden/indra/newview/skins/default/xui/fr/panel_groups.xml linden/indra/newview/skins/default/xui/fr/panel_login.xml linden/indra/newview/skins/default/xui/fr/panel_master_volume.xml linden/indra/newview/skins/default/xui/fr/panel_media_controls.xml linden/indra/newview/skins/default/xui/fr/panel_media_remote.xml linden/indra/newview/skins/default/xui/fr/panel_media_remote_expanded.xml linden/indra/newview/skins/default/xui/fr/panel_overlaybar.xml linden/indra/newview/skins/default/xui/fr/panel_place.xml linden/indra/newview/skins/default/xui/fr/panel_place_small.xml linden/indra/newview/skins/default/xui/fr/panel_preferences_audio.xml linden/indra/newview/skins/default/xui/fr/panel_preferences_chat.xml linden/indra/newview/skins/default/xui/fr/panel_preferences_general.xml linden/indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml linden/indra/newview/skins/default/xui/fr/panel_preferences_im.xml linden/indra/newview/skins/default/xui/fr/panel_preferences_input.xml linden/indra/newview/skins/default/xui/fr/panel_preferences_network.xml linden/indra/newview/skins/default/xui/fr/panel_preferences_popups.xml linden/indra/newview/skins/default/xui/fr/panel_preferences_voice.xml linden/indra/newview/skins/default/xui/fr/panel_preferences_web.xml linden/indra/newview/skins/default/xui/fr/panel_region_covenant.xml linden/indra/newview/skins/default/xui/fr/panel_region_debug.xml linden/indra/newview/skins/default/xui/fr/panel_region_estate.xml linden/indra/newview/skins/default/xui/fr/panel_region_general.xml linden/indra/newview/skins/default/xui/fr/panel_region_terrain.xml linden/indra/newview/skins/default/xui/fr/panel_scrolling_param.xml linden/indra/newview/skins/default/xui/fr/panel_speaker_controls.xml linden/indra/newview/skins/default/xui/fr/panel_status_bar.xml linden/indra/newview/skins/default/xui/fr/panel_toolbar.xml linden/indra/newview/skins/default/xui/fr/panel_voice_controls.xml linden/indra/newview/skins/default/xui/fr/panel_voice_enable.xml linden/indra/newview/skins/default/xui/fr/panel_voice_options.xml linden/indra/newview/skins/default/xui/fr/panel_voice_remote_expanded.xml linden/indra/newview/skins/default/xui/fr/role_actions.xml linden/indra/newview/skins/default/xui/fr/strings.xml linden/indra/newview/skins/default/xui/ja/floater_hardware_settings.xml linden/indra/newview/skins/default/xui/ja/floater_inspect.xml linden/indra/newview/skins/default/xui/ja/floater_instant_message_group.xml linden/indra/newview/skins/default/xui/ja/floater_lsl_guide.xml linden/indra/newview/skins/default/xui/ja/floater_media_browser.xml linden/indra/newview/skins/default/xui/ja/floater_mute_object.xml linden/indra/newview/skins/default/xui/ja/floater_url_entry.xml linden/indra/newview/skins/default/xui/ja/need_to_long.xml linden/indra/newview/skins/default/xui/ja/need_to_translate.xml linden/indra/newview/skins/default/xui/ja/need_to_update.xml linden/indra/newview/skins/default/xui/ja/panel_audio.xml linden/indra/newview/skins/default/xui/ja/panel_groups.xml linden/indra/newview/skins/default/xui/ja/panel_preferences_voice.xml linden/indra/newview/skins/default/xui/ja/panel_preferences_web.xml linden/indra/newview/skins/default/xui/ja/strings.xml linden/indra/newview/skins/default/xui/ko/need_to_long.xml linden/indra/newview/skins/default/xui/ko/need_to_translate.xml linden/indra/newview/skins/default/xui/ko/need_to_update.xml linden/indra/newview/skins/default/xui/pt/alerts.xml linden/indra/newview/skins/default/xui/pt/floater_about.xml linden/indra/newview/skins/default/xui/pt/floater_about_land.xml linden/indra/newview/skins/default/xui/pt/floater_animation_preview.xml linden/indra/newview/skins/default/xui/pt/floater_avatar_picker.xml linden/indra/newview/skins/default/xui/pt/floater_avatar_textures.xml linden/indra/newview/skins/default/xui/pt/floater_build_options.xml linden/indra/newview/skins/default/xui/pt/floater_buy_contents.xml linden/indra/newview/skins/default/xui/pt/floater_buy_currency.xml linden/indra/newview/skins/default/xui/pt/floater_buy_land.xml linden/indra/newview/skins/default/xui/pt/floater_buy_object.xml linden/indra/newview/skins/default/xui/pt/floater_chat_history.xml linden/indra/newview/skins/default/xui/pt/floater_color_picker.xml linden/indra/newview/skins/default/xui/pt/floater_customize.xml linden/indra/newview/skins/default/xui/pt/floater_directory.xml linden/indra/newview/skins/default/xui/pt/floater_gesture.xml linden/indra/newview/skins/default/xui/pt/floater_html.xml linden/indra/newview/skins/default/xui/pt/floater_im.xml linden/indra/newview/skins/default/xui/pt/floater_image_preview.xml linden/indra/newview/skins/default/xui/pt/floater_instant_message.xml linden/indra/newview/skins/default/xui/pt/floater_instant_message_ad_hoc.xml linden/indra/newview/skins/default/xui/pt/floater_inventory.xml linden/indra/newview/skins/default/xui/pt/floater_inventory_item_properties.xml linden/indra/newview/skins/default/xui/pt/floater_joystick.xml linden/indra/newview/skins/default/xui/pt/floater_land_holdings.xml linden/indra/newview/skins/default/xui/pt/floater_live_lsleditor.xml linden/indra/newview/skins/default/xui/pt/floater_mute.xml linden/indra/newview/skins/default/xui/pt/floater_new_outfit_dialog.xml linden/indra/newview/skins/default/xui/pt/floater_openobject.xml linden/indra/newview/skins/default/xui/pt/floater_pay.xml linden/indra/newview/skins/default/xui/pt/floater_pay_object.xml linden/indra/newview/skins/default/xui/pt/floater_postcard.xml linden/indra/newview/skins/default/xui/pt/floater_preview_animation.xml linden/indra/newview/skins/default/xui/pt/floater_preview_gesture.xml linden/indra/newview/skins/default/xui/pt/floater_preview_notecard.xml linden/indra/newview/skins/default/xui/pt/floater_preview_notecard_keep_discard.xml linden/indra/newview/skins/default/xui/pt/floater_report_abuse.xml linden/indra/newview/skins/default/xui/pt/floater_report_bug.xml linden/indra/newview/skins/default/xui/pt/floater_script_debug.xml linden/indra/newview/skins/default/xui/pt/floater_script_ed_panel.xml linden/indra/newview/skins/default/xui/pt/floater_snapshot.xml linden/indra/newview/skins/default/xui/pt/floater_texture_ctrl.xml linden/indra/newview/skins/default/xui/pt/floater_tools.xml linden/indra/newview/skins/default/xui/pt/floater_top_objects.xml linden/indra/newview/skins/default/xui/pt/floater_tos.xml linden/indra/newview/skins/default/xui/pt/floater_world_map.xml linden/indra/newview/skins/default/xui/pt/menu_inventory.xml linden/indra/newview/skins/default/xui/pt/menu_pie_avatar.xml linden/indra/newview/skins/default/xui/pt/menu_viewer.xml linden/indra/newview/skins/default/xui/pt/notify.xml linden/indra/newview/skins/default/xui/pt/panel_avatar.xml linden/indra/newview/skins/default/xui/pt/panel_avatar_classified.xml linden/indra/newview/skins/default/xui/pt/panel_chat_bar.xml linden/indra/newview/skins/default/xui/pt/panel_classified.xml linden/indra/newview/skins/default/xui/pt/panel_event.xml linden/indra/newview/skins/default/xui/pt/panel_group_general.xml linden/indra/newview/skins/default/xui/pt/panel_group_invite.xml linden/indra/newview/skins/default/xui/pt/panel_group_land_money.xml linden/indra/newview/skins/default/xui/pt/panel_group_notices.xml linden/indra/newview/skins/default/xui/pt/panel_group_roles.xml linden/indra/newview/skins/default/xui/pt/panel_group_voting.xml linden/indra/newview/skins/default/xui/pt/panel_login.xml linden/indra/newview/skins/default/xui/pt/panel_overlaybar.xml linden/indra/newview/skins/default/xui/pt/panel_place.xml linden/indra/newview/skins/default/xui/pt/panel_place_small.xml linden/indra/newview/skins/default/xui/pt/panel_preferences_audio.xml linden/indra/newview/skins/default/xui/pt/panel_preferences_chat.xml linden/indra/newview/skins/default/xui/pt/panel_preferences_general.xml linden/indra/newview/skins/default/xui/pt/panel_preferences_graphics1.xml linden/indra/newview/skins/default/xui/pt/panel_preferences_im.xml linden/indra/newview/skins/default/xui/pt/panel_preferences_input.xml linden/indra/newview/skins/default/xui/pt/panel_preferences_network.xml linden/indra/newview/skins/default/xui/pt/panel_preferences_popups.xml linden/indra/newview/skins/default/xui/pt/panel_preferences_web.xml linden/indra/newview/skins/default/xui/pt/panel_region_covenant.xml linden/indra/newview/skins/default/xui/pt/panel_region_debug.xml linden/indra/newview/skins/default/xui/pt/panel_region_estate.xml linden/indra/newview/skins/default/xui/pt/panel_region_general.xml linden/indra/newview/skins/default/xui/pt/panel_status_bar.xml linden/indra/newview/skins/default/xui/pt/panel_toolbar.xml linden/indra/newview/skins/default/xui/pt/teleport_strings.xml linden/indra/newview/skins/default/xui/zh/floater_account_history.xml linden/indra/newview/skins/default/xui/zh/floater_god_tools.xml linden/indra/newview/skins/default/xui/zh/floater_html.xml linden/indra/newview/skins/default/xui/zh/floater_inspect.xml linden/indra/newview/skins/default/xui/zh/floater_inventory_view_finder.xml linden/indra/newview/skins/default/xui/zh/floater_preferences.xml linden/indra/newview/skins/default/xui/zh/floater_sell_land.xml linden/indra/newview/skins/default/xui/zh/floater_settings_debug.xml linden/indra/newview/skins/default/xui/zh/menu_pie_attachment.xml linden/indra/newview/skins/default/xui/zh/menu_pie_avatar.xml linden/indra/newview/skins/default/xui/zh/menu_pie_land.xml linden/indra/newview/skins/default/xui/zh/menu_pie_object.xml linden/indra/newview/skins/default/xui/zh/menu_pie_self.xml linden/indra/newview/skins/default/xui/zh/menu_viewer.xml linden/indra/newview/skins/default/xui/zh/need_to_translate.xml linden/indra/newview/skins/default/xui/zh/panel_account_details.xml linden/indra/newview/skins/default/xui/zh/panel_account_planning.xml linden/indra/newview/skins/default/xui/zh/panel_account_transactions.xml linden/indra/newview/skins/default/xui/zh/panel_avatar.xml linden/indra/newview/skins/default/xui/zh/panel_group.xml linden/indra/newview/skins/default/xui/zh/panel_group_finder.xml linden/indra/newview/skins/default/xui/zh/panel_group_general.xml linden/indra/newview/skins/default/xui/zh/panel_group_invite.xml linden/indra/newview/skins/default/xui/zh/panel_group_land_money.xml linden/indra/newview/skins/default/xui/zh/panel_group_notices.xml linden/indra/newview/skins/default/xui/zh/panel_group_roles.xml linden/indra/newview/skins/default/xui/zh/panel_group_voting.xml linden/indra/newview/skins/default/xui/zh/panel_preferences_audio.xml linden/indra/newview/skins/default/xui/zh/panel_preferences_chat.xml linden/indra/newview/skins/default/xui/zh/panel_preferences_im.xml linden/indra/newview/skins/default/xui/zh/panel_preferences_popups.xml linden/indra/newview/skins/default/xui/zh/panel_region_covenant.xml linden/indra/newview/skins/default/xui/zh/strings.xml linden/indra/newview/skins/default/xui/zh/strings_long.xml linden/indra/newview/skins/silver/xui/en-us/floater_about_land.xml linden/indra/newview/skins/silver/xui/en-us/panel_status_bar.xml linden/indra/newview/viewer_manifest.py linden/indra/win_updater/updater.cpp linden/install.xml
Diffstat (limited to 'linden/indra/newview/llfloatersnapshot.cpp')
-rw-r--r--linden/indra/newview/llfloatersnapshot.cpp281
1 files changed, 181 insertions, 100 deletions
diff --git a/linden/indra/newview/llfloatersnapshot.cpp b/linden/indra/newview/llfloatersnapshot.cpp
index accbcb4..e07f436 100644
--- a/linden/indra/newview/llfloatersnapshot.cpp
+++ b/linden/indra/newview/llfloatersnapshot.cpp
@@ -4,7 +4,7 @@
4 * 4 *
5 * $LicenseInfo:firstyear=2004&license=viewergpl$ 5 * $LicenseInfo:firstyear=2004&license=viewergpl$
6 * 6 *
7 * Copyright (c) 2004-2008, Linden Research, Inc. 7 * Copyright (c) 2004-2009, Linden Research, Inc.
8 * 8 *
9 * Second Life Viewer Source Code 9 * Second Life Viewer Source Code
10 * The source code in this file ("Source Code") is provided by Linden Lab 10 * The source code in this file ("Source Code") is provided by Linden Lab
@@ -152,7 +152,8 @@ public:
152 void resetThumbnailImage() { mThumbnailImage = NULL ; } 152 void resetThumbnailImage() { mThumbnailImage = NULL ; }
153 void drawPreviewRect(S32 offset_x, S32 offset_y) ; 153 void drawPreviewRect(S32 offset_x, S32 offset_y) ;
154 154
155 static void onIdle( void* snapshot_preview ); 155 // Returns TRUE when snapshot generated, FALSE otherwise.
156 static BOOL onIdle( void* snapshot_preview );
156 157
157private: 158private:
158 LLColor4 mColor; 159 LLColor4 mColor;
@@ -204,6 +205,8 @@ LLSnapshotLivePreview::LLSnapshotLivePreview (const LLRect& rect) :
204 mCurImageIndex(0), 205 mCurImageIndex(0),
205 mPreviewImage(NULL), 206 mPreviewImage(NULL),
206 mThumbnailImage(NULL) , 207 mThumbnailImage(NULL) ,
208 mThumbnailWidth(0),
209 mThumbnailHeight(0),
207 mPreviewImageEncoded(NULL), 210 mPreviewImageEncoded(NULL),
208 mFormattedImage(NULL), 211 mFormattedImage(NULL),
209 mShineCountdown(0), 212 mShineCountdown(0),
@@ -343,14 +346,11 @@ void LLSnapshotLivePreview::updateSnapshot(BOOL new_snapshot, BOOL new_thumbnail
343 mSnapshotDelayTimer.start(); 346 mSnapshotDelayTimer.start();
344 mSnapshotDelayTimer.setTimerExpirySec(delay); 347 mSnapshotDelayTimer.setTimerExpirySec(delay);
345 } 348 }
346 else if(new_thumbnail) 349 if(new_thumbnail)
347 { 350 {
348 mThumbnailUpToDate = FALSE ; 351 mThumbnailUpToDate = FALSE ;
349 } 352 }
350 else 353 setThumbnailImageSize();
351 {
352 setThumbnailImageSize() ;
353 }
354} 354}
355 355
356void LLSnapshotLivePreview::setSnapshotQuality(S32 quality) 356void LLSnapshotLivePreview::setSnapshotQuality(S32 quality)
@@ -418,14 +418,14 @@ void LLSnapshotLivePreview::draw()
418 418
419 LLColor4 image_color(1.f, 1.f, 1.f, 1.f); 419 LLColor4 image_color(1.f, 1.f, 1.f, 1.f);
420 gGL.color4fv(image_color.mV); 420 gGL.color4fv(image_color.mV);
421 LLViewerImage::bindTexture(mViewerImage[mCurImageIndex]); 421 gGL.getTexUnit(0)->bind(mViewerImage[mCurImageIndex]);
422 // calculate UV scale 422 // calculate UV scale
423 F32 uv_width = mImageScaled[mCurImageIndex] ? 1.f : llmin((F32)mWidth[mCurImageIndex] / (F32)mViewerImage[mCurImageIndex]->getWidth(), 1.f); 423 F32 uv_width = mImageScaled[mCurImageIndex] ? 1.f : llmin((F32)mWidth[mCurImageIndex] / (F32)mViewerImage[mCurImageIndex]->getWidth(), 1.f);
424 F32 uv_height = mImageScaled[mCurImageIndex] ? 1.f : llmin((F32)mHeight[mCurImageIndex] / (F32)mViewerImage[mCurImageIndex]->getHeight(), 1.f); 424 F32 uv_height = mImageScaled[mCurImageIndex] ? 1.f : llmin((F32)mHeight[mCurImageIndex] / (F32)mViewerImage[mCurImageIndex]->getHeight(), 1.f);
425 glPushMatrix(); 425 glPushMatrix();
426 { 426 {
427 glTranslatef((F32)rect.mLeft, (F32)rect.mBottom, 0.f); 427 glTranslatef((F32)rect.mLeft, (F32)rect.mBottom, 0.f);
428 gGL.begin(LLVertexBuffer::QUADS); 428 gGL.begin(LLRender::QUADS);
429 { 429 {
430 gGL.texCoord2f(uv_width, uv_height); 430 gGL.texCoord2f(uv_width, uv_height);
431 gGL.vertex2i(rect.getWidth(), rect.getHeight() ); 431 gGL.vertex2i(rect.getWidth(), rect.getHeight() );
@@ -487,8 +487,8 @@ void LLSnapshotLivePreview::draw()
487 S32 y1 = 0; 487 S32 y1 = 0;
488 S32 y2 = gViewerWindow->getWindowHeight(); 488 S32 y2 = gViewerWindow->getWindowHeight();
489 489
490 LLGLSNoTexture no_texture; 490 gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
491 gGL.begin(LLVertexBuffer::QUADS); 491 gGL.begin(LLRender::QUADS);
492 { 492 {
493 gGL.color4f(1.f, 1.f, 1.f, 0.f); 493 gGL.color4f(1.f, 1.f, 1.f, 0.f);
494 gGL.vertex2i(x1, y1); 494 gGL.vertex2i(x1, y1);
@@ -516,10 +516,10 @@ void LLSnapshotLivePreview::draw()
516 516
517 // draw framing rectangle 517 // draw framing rectangle
518 { 518 {
519 LLGLSNoTexture no_texture; 519 gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
520 gGL.color4f(1.f, 1.f, 1.f, 1.f); 520 gGL.color4f(1.f, 1.f, 1.f, 1.f);
521 LLRect outline_rect = mImageRect[mCurImageIndex]; 521 LLRect outline_rect = mImageRect[mCurImageIndex];
522 gGL.begin(LLVertexBuffer::QUADS); 522 gGL.begin(LLRender::QUADS);
523 { 523 {
524 gGL.vertex2i(outline_rect.mLeft - BORDER_WIDTH, outline_rect.mTop + BORDER_WIDTH); 524 gGL.vertex2i(outline_rect.mLeft - BORDER_WIDTH, outline_rect.mTop + BORDER_WIDTH);
525 gGL.vertex2i(outline_rect.mRight + BORDER_WIDTH, outline_rect.mTop + BORDER_WIDTH); 525 gGL.vertex2i(outline_rect.mRight + BORDER_WIDTH, outline_rect.mTop + BORDER_WIDTH);
@@ -554,7 +554,7 @@ void LLSnapshotLivePreview::draw()
554 F32 alpha = clamp_rescale(fall_interp, 0.f, 1.f, 0.8f, 0.4f); 554 F32 alpha = clamp_rescale(fall_interp, 0.f, 1.f, 0.8f, 0.4f);
555 LLColor4 image_color(1.f, 1.f, 1.f, alpha); 555 LLColor4 image_color(1.f, 1.f, 1.f, alpha);
556 gGL.color4fv(image_color.mV); 556 gGL.color4fv(image_color.mV);
557 LLViewerImage::bindTexture(mViewerImage[old_image_index]); 557 gGL.getTexUnit(0)->bind(mViewerImage[old_image_index]);
558 // calculate UV scale 558 // calculate UV scale
559 // *FIX get this to work with old image 559 // *FIX get this to work with old image
560 BOOL rescale = !mImageScaled[old_image_index] && mViewerImage[mCurImageIndex].notNull(); 560 BOOL rescale = !mImageScaled[old_image_index] && mViewerImage[mCurImageIndex].notNull();
@@ -565,7 +565,7 @@ void LLSnapshotLivePreview::draw()
565 LLRect& rect = mImageRect[old_image_index]; 565 LLRect& rect = mImageRect[old_image_index];
566 glTranslatef((F32)rect.mLeft, (F32)rect.mBottom - llround(getRect().getHeight() * 2.f * (fall_interp * fall_interp)), 0.f); 566 glTranslatef((F32)rect.mLeft, (F32)rect.mBottom - llround(getRect().getHeight() * 2.f * (fall_interp * fall_interp)), 0.f);
567 glRotatef(-45.f * fall_interp, 0.f, 0.f, 1.f); 567 glRotatef(-45.f * fall_interp, 0.f, 0.f, 1.f);
568 gGL.begin(LLVertexBuffer::QUADS); 568 gGL.begin(LLRender::QUADS);
569 { 569 {
570 gGL.texCoord2f(uv_width, uv_height); 570 gGL.texCoord2f(uv_width, uv_height);
571 gGL.vertex2i(rect.getWidth(), rect.getHeight() ); 571 gGL.vertex2i(rect.getWidth(), rect.getHeight() );
@@ -720,8 +720,11 @@ void LLSnapshotLivePreview::generateThumbnailImage(BOOL force_update)
720 mThumbnailUpdateLock = FALSE ; 720 mThumbnailUpdateLock = FALSE ;
721} 721}
722 722
723
724// Called often. Checks whether it's time to grab a new snapshot and if so, does it.
725// Returns TRUE if new snapshot generated, FALSE otherwise.
723//static 726//static
724void LLSnapshotLivePreview::onIdle( void* snapshot_preview ) 727BOOL LLSnapshotLivePreview::onIdle( void* snapshot_preview )
725{ 728{
726 LLSnapshotLivePreview* previewp = (LLSnapshotLivePreview*)snapshot_preview; 729 LLSnapshotLivePreview* previewp = (LLSnapshotLivePreview*)snapshot_preview;
727 730
@@ -734,7 +737,10 @@ void LLSnapshotLivePreview::onIdle( void* snapshot_preview )
734 previewp->mCameraRot = new_camera_rot; 737 previewp->mCameraRot = new_camera_rot;
735 // request a new snapshot whenever the camera moves, with a time delay 738 // request a new snapshot whenever the camera moves, with a time delay
736 BOOL autosnap = gSavedSettings.getBOOL("AutoSnapshot"); 739 BOOL autosnap = gSavedSettings.getBOOL("AutoSnapshot");
737 previewp->updateSnapshot(autosnap, FALSE, autosnap ? AUTO_SNAPSHOT_TIME_DELAY : 0.f); 740 previewp->updateSnapshot(
741 autosnap, // whether a new snapshot is needed or merely invalidate the existing one
742 FALSE, // or if 1st arg is false, whether to produce a new thumbnail image.
743 autosnap ? AUTO_SNAPSHOT_TIME_DELAY : 0.f); // shutter delay if 1st arg is true.
738 } 744 }
739 745
740 // see if it's time yet to snap the shot and bomb out otherwise. 746 // see if it's time yet to snap the shot and bomb out otherwise.
@@ -743,7 +749,7 @@ void LLSnapshotLivePreview::onIdle( void* snapshot_preview )
743 && !LLToolCamera::getInstance()->hasMouseCapture(); // don't take snapshots while ALT-zoom active 749 && !LLToolCamera::getInstance()->hasMouseCapture(); // don't take snapshots while ALT-zoom active
744 if ( ! previewp->mSnapshotActive) 750 if ( ! previewp->mSnapshotActive)
745 { 751 {
746 return; 752 return FALSE;
747 } 753 }
748 754
749 // time to produce a snapshot 755 // time to produce a snapshot
@@ -835,6 +841,7 @@ void LLSnapshotLivePreview::onIdle( void* snapshot_preview )
835 } 841 }
836 if (previewp->mFormattedImage->encode(previewp->mPreviewImage, 0)) 842 if (previewp->mFormattedImage->encode(previewp->mPreviewImage, 0))
837 { 843 {
844 previewp->mDataSize = previewp->mFormattedImage->getDataSize();
838 // special case BMP to copy instead of decode otherwise decode will crash. 845 // special case BMP to copy instead of decode otherwise decode will crash.
839 if(format == LLFloaterSnapshot::SNAPSHOT_FORMAT_BMP) 846 if(format == LLFloaterSnapshot::SNAPSHOT_FORMAT_BMP)
840 { 847 {
@@ -842,7 +849,6 @@ void LLSnapshotLivePreview::onIdle( void* snapshot_preview )
842 } 849 }
843 else 850 else
844 { 851 {
845 previewp->mDataSize = previewp->mFormattedImage->getDataSize();
846 previewp->mFormattedImage->decode(previewp->mPreviewImageEncoded, 0); 852 previewp->mFormattedImage->decode(previewp->mPreviewImageEncoded, 0);
847 } 853 }
848 } 854 }
@@ -871,7 +877,7 @@ void LLSnapshotLivePreview::onIdle( void* snapshot_preview )
871 877
872 previewp->mViewerImage[previewp->mCurImageIndex] = new LLImageGL(scaled, FALSE); 878 previewp->mViewerImage[previewp->mCurImageIndex] = new LLImageGL(scaled, FALSE);
873 previewp->mViewerImage[previewp->mCurImageIndex]->setMipFilterNearest(previewp->getSnapshotType() != SNAPSHOT_TEXTURE); 879 previewp->mViewerImage[previewp->mCurImageIndex]->setMipFilterNearest(previewp->getSnapshotType() != SNAPSHOT_TEXTURE);
874 LLViewerImage::bindTexture(previewp->mViewerImage[previewp->mCurImageIndex]); 880 gGL.getTexUnit(0)->bind(previewp->mViewerImage[previewp->mCurImageIndex]);
875 previewp->mViewerImage[previewp->mCurImageIndex]->setClamp(TRUE, TRUE); 881 previewp->mViewerImage[previewp->mCurImageIndex]->setClamp(TRUE, TRUE);
876 882
877 previewp->mSnapshotUpToDate = TRUE; 883 previewp->mSnapshotUpToDate = TRUE;
@@ -891,6 +897,8 @@ void LLSnapshotLivePreview::onIdle( void* snapshot_preview )
891 previewp->generateThumbnailImage() ; 897 previewp->generateThumbnailImage() ;
892 } 898 }
893 } 899 }
900
901 return TRUE;
894} 902}
895 903
896void LLSnapshotLivePreview::setSize(S32 w, S32 h) 904void LLSnapshotLivePreview::setSize(S32 w, S32 h)
@@ -907,6 +915,13 @@ void LLSnapshotLivePreview::getSize(S32& w, S32& h) const
907 915
908LLFloaterPostcard* LLSnapshotLivePreview::savePostcard() 916LLFloaterPostcard* LLSnapshotLivePreview::savePostcard()
909{ 917{
918 if(mViewerImage[mCurImageIndex].isNull())
919 {
920 //this should never happen!!
921 llwarns << "The snapshot image has not been generated!" << llendl ;
922 return NULL ;
923 }
924
910 // calculate and pass in image scale in case image data only use portion 925 // calculate and pass in image scale in case image data only use portion
911 // of viewerimage buffer 926 // of viewerimage buffer
912 LLVector2 image_scale(1.f, 1.f); 927 LLVector2 image_scale(1.f, 1.f);
@@ -922,9 +937,10 @@ LLFloaterPostcard* LLSnapshotLivePreview::savePostcard()
922 return NULL; 937 return NULL;
923 } 938 }
924 LLFloaterPostcard* floater = LLFloaterPostcard::showFromSnapshot(jpg, mViewerImage[mCurImageIndex], image_scale, mPosTakenGlobal); 939 LLFloaterPostcard* floater = LLFloaterPostcard::showFromSnapshot(jpg, mViewerImage[mCurImageIndex], image_scale, mPosTakenGlobal);
925 // relinquish lifetime of viewerimage and jpeg image to postcard floater 940 // relinquish lifetime of jpeg image to postcard floater
926 mViewerImage[mCurImageIndex] = NULL;
927 mFormattedImage = NULL; 941 mFormattedImage = NULL;
942 mDataSize = 0;
943 updateSnapshot(FALSE, FALSE);
928 944
929 return floater; 945 return floater;
930} 946}
@@ -968,12 +984,20 @@ void LLSnapshotLivePreview::saveTexture()
968 llwarns << "Error encoding snapshot" << llendl; 984 llwarns << "Error encoding snapshot" << llendl;
969 } 985 }
970 986
971 LLViewerStats::getInstance()->incStat(LLViewerStats::ST_SNAPSHOT_COUNT ); 987 LLViewerStats::getInstance()->incStat(LLViewerStats::ST_SNAPSHOT_COUNT );
988
989 mDataSize = 0;
972} 990}
973 991
974BOOL LLSnapshotLivePreview::saveLocal() 992BOOL LLSnapshotLivePreview::saveLocal()
975{ 993{
976 BOOL success = gViewerWindow->saveImageNumbered(mFormattedImage); 994 BOOL success = gViewerWindow->saveImageNumbered(mFormattedImage);
995
996 // Relinquish image memory. Save button will be disabled as a side-effect.
997 mFormattedImage = NULL;
998 mDataSize = 0;
999 updateSnapshot(FALSE, FALSE);
1000
977 if(success) 1001 if(success)
978 { 1002 {
979 gViewerWindow->playSnapshotAnimAndSound(); 1003 gViewerWindow->playSnapshotAnimAndSound();
@@ -1013,7 +1037,8 @@ public:
1013 static void onClickKeepOpenCheck(LLUICtrl *ctrl, void* data); 1037 static void onClickKeepOpenCheck(LLUICtrl *ctrl, void* data);
1014 static void onClickKeepAspectCheck(LLUICtrl *ctrl, void* data); 1038 static void onClickKeepAspectCheck(LLUICtrl *ctrl, void* data);
1015 static void onCommitQuality(LLUICtrl* ctrl, void* data); 1039 static void onCommitQuality(LLUICtrl* ctrl, void* data);
1016 static void onCommitResolution(LLUICtrl* ctrl, void* data); 1040 static void onCommitResolution(LLUICtrl* ctrl, void* data) { updateResolution(ctrl, data); }
1041 static void updateResolution(LLUICtrl* ctrl, void* data, BOOL do_update = TRUE);
1017 static void onCommitFreezeFrame(LLUICtrl* ctrl, void* data); 1042 static void onCommitFreezeFrame(LLUICtrl* ctrl, void* data);
1018 static void onCommitLayerTypes(LLUICtrl* ctrl, void*data); 1043 static void onCommitLayerTypes(LLUICtrl* ctrl, void*data);
1019 static void onCommitSnapshotType(LLUICtrl* ctrl, void* data); 1044 static void onCommitSnapshotType(LLUICtrl* ctrl, void* data);
@@ -1112,11 +1137,8 @@ LLViewerWindow::ESnapshotType LLFloaterSnapshot::Impl::getLayerType(LLFloaterSna
1112void LLFloaterSnapshot::Impl::setResolution(LLFloaterSnapshot* floater, const std::string& comboname) 1137void LLFloaterSnapshot::Impl::setResolution(LLFloaterSnapshot* floater, const std::string& comboname)
1113{ 1138{
1114 LLComboBox* combo = floater->getChild<LLComboBox>(comboname); 1139 LLComboBox* combo = floater->getChild<LLComboBox>(comboname);
1115 if (combo)
1116 {
1117 combo->setVisible(TRUE); 1140 combo->setVisible(TRUE);
1118 onCommitResolution(combo, floater); 1141 updateResolution(combo, floater, FALSE); // to sync spinners with combo
1119 }
1120} 1142}
1121 1143
1122//static 1144//static
@@ -1126,22 +1148,18 @@ void LLFloaterSnapshot::Impl::updateLayout(LLFloaterSnapshot* floaterp)
1126 1148
1127 S32 delta_height = gSavedSettings.getBOOL("AdvanceSnapshot") ? 0 : floaterp->getUIWinHeightShort() - floaterp->getUIWinHeightLong() ; 1149 S32 delta_height = gSavedSettings.getBOOL("AdvanceSnapshot") ? 0 : floaterp->getUIWinHeightShort() - floaterp->getUIWinHeightLong() ;
1128 1150
1129 LLComboBox* combo;
1130 if(!gSavedSettings.getBOOL("AdvanceSnapshot")) //set to original window resolution 1151 if(!gSavedSettings.getBOOL("AdvanceSnapshot")) //set to original window resolution
1131 { 1152 {
1132 previewp->mKeepAspectRatio = TRUE ; 1153 previewp->mKeepAspectRatio = TRUE;
1133 1154
1134 combo = floaterp->getChild<LLComboBox>("postcard_size_combo"); 1155 floaterp->getChild<LLComboBox>("postcard_size_combo")->setCurrentByIndex(0);
1135 combo->setCurrentByIndex(0) ; 1156 gSavedSettings.setS32("SnapshotPostcardLastResolution", 0);
1136 gSavedSettings.setS32("SnapshotPostcardLastResolution", 0) ;
1137 1157
1138 combo = floaterp->getChild<LLComboBox>("texture_size_combo"); 1158 floaterp->getChild<LLComboBox>("texture_size_combo")->setCurrentByIndex(0);
1139 combo->setCurrentByIndex(0) ; 1159 gSavedSettings.setS32("SnapshotTextureLastResolution", 0);
1140 gSavedSettings.setS32("SnapshotTextureLastResolution", 0) ;
1141 1160
1142 combo = floaterp->getChild<LLComboBox>("local_size_combo"); 1161 floaterp->getChild<LLComboBox>("local_size_combo")->setCurrentByIndex(0);
1143 combo->setCurrentByIndex(0) ; 1162 gSavedSettings.setS32("SnapshotLocalLastResolution", 0);
1144 gSavedSettings.setS32("SnapshotLocalLastResolution", 0) ;
1145 1163
1146 LLSnapshotLivePreview* previewp = getPreviewView(floaterp); 1164 LLSnapshotLivePreview* previewp = getPreviewView(floaterp);
1147 previewp->setSize(gViewerWindow->getWindowDisplayWidth(), gViewerWindow->getWindowDisplayHeight()); 1165 previewp->setSize(gViewerWindow->getWindowDisplayWidth(), gViewerWindow->getWindowDisplayHeight());
@@ -1206,7 +1224,11 @@ void LLFloaterSnapshot::Impl::updateLayout(LLFloaterSnapshot* floaterp)
1206 } 1224 }
1207} 1225}
1208 1226
1209 1227// This is the main function that keeps all the GUI controls in sync with the saved settings.
1228// It should be called anytime a setting is changed that could affect the controls.
1229// No other methods should be changing any of the controls directly except for helpers called by this method.
1230// The basic pattern for programmatically changing the GUI settings is to first set the
1231// appropriate saved settings and then call this method to sync the GUI with them.
1210// static 1232// static
1211void LLFloaterSnapshot::Impl::updateControls(LLFloaterSnapshot* floater) 1233void LLFloaterSnapshot::Impl::updateControls(LLFloaterSnapshot* floater)
1212{ 1234{
@@ -1220,15 +1242,10 @@ void LLFloaterSnapshot::Impl::updateControls(LLFloaterSnapshot* floater)
1220 floater->childSetVisible("texture_size_combo", FALSE); 1242 floater->childSetVisible("texture_size_combo", FALSE);
1221 floater->childSetVisible("local_size_combo", FALSE); 1243 floater->childSetVisible("local_size_combo", FALSE);
1222 1244
1223 LLComboBox* combo; 1245 floater->getChild<LLComboBox>("postcard_size_combo")->selectNthItem(gSavedSettings.getS32("SnapshotPostcardLastResolution"));
1224 combo = floater->getChild<LLComboBox>("postcard_size_combo"); 1246 floater->getChild<LLComboBox>("texture_size_combo")->selectNthItem(gSavedSettings.getS32("SnapshotTextureLastResolution"));
1225 if (combo) combo->selectNthItem(gSavedSettings.getS32("SnapshotPostcardLastResolution")); 1247 floater->getChild<LLComboBox>("local_size_combo")->selectNthItem(gSavedSettings.getS32("SnapshotLocalLastResolution"));
1226 combo = floater->getChild<LLComboBox>("texture_size_combo"); 1248 floater->getChild<LLComboBox>("local_format_combo")->selectNthItem(gSavedSettings.getS32("SnapshotFormat"));
1227 if (combo) combo->selectNthItem(gSavedSettings.getS32("SnapshotTextureLastResolution"));
1228 combo = floater->getChild<LLComboBox>("local_size_combo");
1229 if (combo) combo->selectNthItem(gSavedSettings.getS32("SnapshotLocalLastResolution"));
1230 combo = floater->getChild<LLComboBox>("local_format_combo");
1231 if (combo) combo->selectNthItem(gSavedSettings.getS32("SnapshotFormat"));
1232 1249
1233 floater->childSetVisible("upload_btn", shot_type == LLSnapshotLivePreview::SNAPSHOT_TEXTURE); 1250 floater->childSetVisible("upload_btn", shot_type == LLSnapshotLivePreview::SNAPSHOT_TEXTURE);
1234 floater->childSetVisible("send_btn", shot_type == LLSnapshotLivePreview::SNAPSHOT_POSTCARD); 1251 floater->childSetVisible("send_btn", shot_type == LLSnapshotLivePreview::SNAPSHOT_POSTCARD);
@@ -1260,6 +1277,23 @@ void LLFloaterSnapshot::Impl::updateControls(LLFloaterSnapshot* floater)
1260 floater->childSetVisible("auto_snapshot_check", is_advance); 1277 floater->childSetVisible("auto_snapshot_check", is_advance);
1261 floater->childSetVisible("image_quality_slider", is_advance && show_slider); 1278 floater->childSetVisible("image_quality_slider", is_advance && show_slider);
1262 1279
1280 LLSnapshotLivePreview* previewp = getPreviewView(floater);
1281 BOOL got_bytes = previewp && previewp->getDataSize() > 0;
1282 BOOL got_snap = previewp->getSnapshotUpToDate();
1283
1284 floater->childSetEnabled("send_btn", shot_type == LLSnapshotLivePreview::SNAPSHOT_POSTCARD && got_snap && previewp->getDataSize() <= MAX_POSTCARD_DATASIZE);
1285 floater->childSetEnabled("upload_btn", shot_type == LLSnapshotLivePreview::SNAPSHOT_TEXTURE && got_snap);
1286 floater->childSetEnabled("save_btn", shot_type == LLSnapshotLivePreview::SNAPSHOT_LOCAL && got_snap);
1287
1288 LLLocale locale(LLLocale::USER_LOCALE);
1289 std::string bytes_string;
1290 LLResMgr::getInstance()->getIntegerString(bytes_string, (previewp->getDataSize()) >> 10 );
1291 floater->childSetTextArg("file_size_label", "[SIZE]", got_snap ? bytes_string : floater->getString("unknown"));
1292 floater->childSetColor("file_size_label",
1293 shot_type == LLSnapshotLivePreview::SNAPSHOT_POSTCARD
1294 && got_bytes
1295 && previewp->getDataSize() > MAX_POSTCARD_DATASIZE ? LLColor4::red : gColors.getColor( "LabelTextColor" ));
1296
1263 switch(shot_type) 1297 switch(shot_type)
1264 { 1298 {
1265 case LLSnapshotLivePreview::SNAPSHOT_POSTCARD: 1299 case LLSnapshotLivePreview::SNAPSHOT_POSTCARD:
@@ -1290,7 +1324,6 @@ void LLFloaterSnapshot::Impl::updateControls(LLFloaterSnapshot* floater)
1290 1324
1291 updateResolutionTextEntry(floater); 1325 updateResolutionTextEntry(floater);
1292 1326
1293 LLSnapshotLivePreview* previewp = getPreviewView(floater);
1294 if (previewp) 1327 if (previewp)
1295 { 1328 {
1296 previewp->setSnapshotType(shot_type); 1329 previewp->setSnapshotType(shot_type);
@@ -1385,6 +1418,8 @@ void LLFloaterSnapshot::Impl::onClickKeep(void* data)
1385 { 1418 {
1386 checkAutoSnapshot(previewp); 1419 checkAutoSnapshot(previewp);
1387 } 1420 }
1421
1422 updateControls(view);
1388 } 1423 }
1389} 1424}
1390 1425
@@ -1409,6 +1444,7 @@ void LLFloaterSnapshot::Impl::onClickAutoSnap(LLUICtrl *ctrl, void* data)
1409 if (view) 1444 if (view)
1410 { 1445 {
1411 checkAutoSnapshot(getPreviewView(view)); 1446 checkAutoSnapshot(getPreviewView(view));
1447 updateControls(view);
1412 } 1448 }
1413} 1449}
1414 1450
@@ -1421,9 +1457,12 @@ void LLFloaterSnapshot::Impl::onClickMore(void* data)
1421 { 1457 {
1422 view->translate( 0, view->getUIWinHeightShort() - view->getUIWinHeightLong() ); 1458 view->translate( 0, view->getUIWinHeightShort() - view->getUIWinHeightLong() );
1423 view->reshape(view->getRect().getWidth(), view->getUIWinHeightLong()); 1459 view->reshape(view->getRect().getWidth(), view->getUIWinHeightLong());
1424
1425 updateControls(view) ; 1460 updateControls(view) ;
1426 updateLayout(view) ; 1461 updateLayout(view) ;
1462 if(getPreviewView(view))
1463 {
1464 getPreviewView(view)->setThumbnailImageSize() ;
1465 }
1427 } 1466 }
1428} 1467}
1429void LLFloaterSnapshot::Impl::onClickLess(void* data) 1468void LLFloaterSnapshot::Impl::onClickLess(void* data)
@@ -1435,10 +1474,8 @@ void LLFloaterSnapshot::Impl::onClickLess(void* data)
1435 { 1474 {
1436 view->translate( 0, view->getUIWinHeightLong() - view->getUIWinHeightShort() ); 1475 view->translate( 0, view->getUIWinHeightLong() - view->getUIWinHeightShort() );
1437 view->reshape(view->getRect().getWidth(), view->getUIWinHeightShort()); 1476 view->reshape(view->getRect().getWidth(), view->getUIWinHeightShort());
1438
1439 updateControls(view) ; 1477 updateControls(view) ;
1440 updateLayout(view) ; 1478 updateLayout(view) ;
1441
1442 if(getPreviewView(view)) 1479 if(getPreviewView(view))
1443 { 1480 {
1444 getPreviewView(view)->setThumbnailImageSize() ; 1481 getPreviewView(view)->setThumbnailImageSize() ;
@@ -1478,6 +1515,7 @@ void LLFloaterSnapshot::Impl::onClickHighResCheck(LLUICtrl *ctrl, void* data)
1478 } 1515 }
1479 view->childSetEnabled("ui_check", !check->get()); 1516 view->childSetEnabled("ui_check", !check->get());
1480 checkAutoSnapshot(getPreviewView(view), TRUE); 1517 checkAutoSnapshot(getPreviewView(view), TRUE);
1518 updateControls(view);
1481 } 1519 }
1482} 1520}
1483 1521
@@ -1491,6 +1529,7 @@ void LLFloaterSnapshot::Impl::onClickHUDCheck(LLUICtrl *ctrl, void* data)
1491 if (view) 1529 if (view)
1492 { 1530 {
1493 checkAutoSnapshot(getPreviewView(view), TRUE); 1531 checkAutoSnapshot(getPreviewView(view), TRUE);
1532 updateControls(view);
1494 } 1533 }
1495} 1534}
1496 1535
@@ -1524,6 +1563,7 @@ void LLFloaterSnapshot::Impl::onClickKeepAspectCheck(LLUICtrl* ctrl, void* data)
1524 } 1563 }
1525 1564
1526 previewp->setSize(w, h) ; 1565 previewp->setSize(w, h) ;
1566 previewp->updateSnapshot(FALSE, TRUE);
1527 checkAutoSnapshot(previewp, TRUE); 1567 checkAutoSnapshot(previewp, TRUE);
1528 } 1568 }
1529 } 1569 }
@@ -1573,7 +1613,7 @@ void LLFloaterSnapshot::Impl::checkAspectRatio(LLFloaterSnapshot *view, S32 inde
1573 } 1613 }
1574#endif 1614#endif
1575 1615
1576 if(!index) //current window size 1616 if(0 == index) //current window size
1577 { 1617 {
1578 sAspectRatioCheckOff = TRUE ; 1618 sAspectRatioCheckOff = TRUE ;
1579 view->childSetEnabled("keep_aspect_check", FALSE) ; 1619 view->childSetEnabled("keep_aspect_check", FALSE) ;
@@ -1610,8 +1650,27 @@ void LLFloaterSnapshot::Impl::checkAspectRatio(LLFloaterSnapshot *view, S32 inde
1610 return ; 1650 return ;
1611} 1651}
1612 1652
1653static std::string lastSnapshotWidthName()
1654{
1655 switch(gSavedSettings.getS32("LastSnapshotType"))
1656 {
1657 case LLSnapshotLivePreview::SNAPSHOT_POSTCARD: return "LastSnapshotToEmailWidth";
1658 case LLSnapshotLivePreview::SNAPSHOT_TEXTURE: return "LastSnapshotToInventoryWidth";
1659 default: return "LastSnapshotToDiskWidth";
1660 }
1661}
1662static std::string lastSnapshotHeightName()
1663{
1664 switch(gSavedSettings.getS32("LastSnapshotType"))
1665 {
1666 case LLSnapshotLivePreview::SNAPSHOT_POSTCARD: return "LastSnapshotToEmailHeight";
1667 case LLSnapshotLivePreview::SNAPSHOT_TEXTURE: return "LastSnapshotToInventoryHeight";
1668 default: return "LastSnapshotToDiskHeight";
1669 }
1670}
1671
1613// static 1672// static
1614void LLFloaterSnapshot::Impl::onCommitResolution(LLUICtrl* ctrl, void* data) 1673void LLFloaterSnapshot::Impl::updateResolution(LLUICtrl* ctrl, void* data, BOOL do_update)
1615{ 1674{
1616 LLComboBox* combobox = (LLComboBox*)ctrl; 1675 LLComboBox* combobox = (LLComboBox*)ctrl;
1617 LLFloaterSnapshot *view = (LLFloaterSnapshot *)data; 1676 LLFloaterSnapshot *view = (LLFloaterSnapshot *)data;
@@ -1622,13 +1681,9 @@ void LLFloaterSnapshot::Impl::onCommitResolution(LLUICtrl* ctrl, void* data)
1622 } 1681 }
1623 1682
1624 // save off all selected resolution values 1683 // save off all selected resolution values
1625 LLComboBox* combo; 1684 gSavedSettings.setS32("SnapshotPostcardLastResolution", view->getChild<LLComboBox>("postcard_size_combo")->getCurrentIndex());
1626 combo = view->getChild<LLComboBox>("postcard_size_combo"); 1685 gSavedSettings.setS32("SnapshotTextureLastResolution", view->getChild<LLComboBox>("texture_size_combo")->getCurrentIndex());
1627 gSavedSettings.setS32("SnapshotPostcardLastResolution", combo->getCurrentIndex()); 1686 gSavedSettings.setS32("SnapshotLocalLastResolution", view->getChild<LLComboBox>("local_size_combo")->getCurrentIndex());
1628 combo = view->getChild<LLComboBox>("texture_size_combo");
1629 gSavedSettings.setS32("SnapshotTextureLastResolution", combo->getCurrentIndex());
1630 combo = view->getChild<LLComboBox>("local_size_combo");
1631 gSavedSettings.setS32("SnapshotLocalLastResolution", combo->getCurrentIndex());
1632 1687
1633 std::string sdstring = combobox->getSelectedValue(); 1688 std::string sdstring = combobox->getSelectedValue();
1634 LLSD sdres; 1689 LLSD sdres;
@@ -1641,17 +1696,22 @@ void LLFloaterSnapshot::Impl::onCommitResolution(LLUICtrl* ctrl, void* data)
1641 LLSnapshotLivePreview* previewp = getPreviewView(view); 1696 LLSnapshotLivePreview* previewp = getPreviewView(view);
1642 if (previewp && combobox->getCurrentIndex() >= 0) 1697 if (previewp && combobox->getCurrentIndex() >= 0)
1643 { 1698 {
1699 S32 original_width = 0 , original_height = 0 ;
1700 previewp->getSize(original_width, original_height) ;
1701
1644 if (width == 0 || height == 0) 1702 if (width == 0 || height == 0)
1645 { 1703 {
1704 // take resolution from current window size
1646 previewp->setSize(gViewerWindow->getWindowDisplayWidth(), gViewerWindow->getWindowDisplayHeight()); 1705 previewp->setSize(gViewerWindow->getWindowDisplayWidth(), gViewerWindow->getWindowDisplayHeight());
1647 } 1706 }
1648 else if (width == -1 || height == -1) 1707 else if (width == -1 || height == -1)
1649 { 1708 {
1650 // load last custom value 1709 // load last custom value
1651 previewp->setSize(gSavedSettings.getS32("LastSnapshotWidth"), gSavedSettings.getS32("LastSnapshotHeight")); 1710 previewp->setSize(gSavedSettings.getS32(lastSnapshotWidthName()), gSavedSettings.getS32(lastSnapshotHeightName()));
1652 } 1711 }
1653 else 1712 else
1654 { 1713 {
1714 // use the resolution from the selected pre-canned drop-down choice
1655 previewp->setSize(width, height); 1715 previewp->setSize(width, height);
1656 } 1716 }
1657 1717
@@ -1663,12 +1723,25 @@ void LLFloaterSnapshot::Impl::onCommitResolution(LLUICtrl* ctrl, void* data)
1663 { 1723 {
1664 resetSnapshotSizeOnUI(view, width, height) ; 1724 resetSnapshotSizeOnUI(view, width, height) ;
1665 } 1725 }
1666 previewp->setSize(width, height); 1726
1727 if(view->childGetValue("snapshot_width").asInteger() != width || view->childGetValue("snapshot_height").asInteger() != height)
1728 {
1729 view->childSetValue("snapshot_width", width);
1730 view->childSetValue("snapshot_height", height);
1731 }
1732
1733 if(original_width != width || original_height != height)
1734 {
1735 previewp->setSize(width, height);
1667 1736
1668 view->childSetValue("snapshot_width", width); 1737 // hide old preview as the aspect ratio could be wrong
1669 view->childSetValue("snapshot_height", height); 1738 checkAutoSnapshot(previewp, FALSE);
1670 // hide old preview as the aspect ratio could be wrong 1739 getPreviewView(view)->updateSnapshot(FALSE, TRUE);
1671 checkAutoSnapshot(previewp, FALSE); 1740 if(do_update)
1741 {
1742 updateControls(view);
1743 }
1744 }
1672 } 1745 }
1673} 1746}
1674 1747
@@ -1717,17 +1790,28 @@ void LLFloaterSnapshot::Impl::onCommitSnapshotFormat(LLUICtrl* ctrl, void* data)
1717 1790
1718 1791
1719 1792
1720 1793// Sets the named size combo to "custom" mode.
1721// static 1794// static
1722void LLFloaterSnapshot::Impl::comboSetCustom(LLFloaterSnapshot* floater, const std::string& comboname) 1795void LLFloaterSnapshot::Impl::comboSetCustom(LLFloaterSnapshot* floater, const std::string& comboname)
1723{ 1796{
1724 LLComboBox* combo = floater->getChild<LLComboBox>(comboname); 1797 LLComboBox* combo = floater->getChild<LLComboBox>(comboname);
1725 if (combo)
1726 {
1727 combo->setCurrentByIndex(combo->getItemCount() - 1);
1728 1798
1729 checkAspectRatio(floater, -1);//combo->getCurrentIndex()) ; 1799 combo->setCurrentByIndex(combo->getItemCount() - 1); // "custom" is always the last index
1800
1801 if(comboname == "postcard_size_combo")
1802 {
1803 gSavedSettings.setS32("SnapshotPostcardLastResolution", combo->getCurrentIndex());
1730 } 1804 }
1805 else if(comboname == "texture_size_combo")
1806 {
1807 gSavedSettings.setS32("SnapshotTextureLastResolution", combo->getCurrentIndex());
1808 }
1809 else if(comboname == "local_size_combo")
1810 {
1811 gSavedSettings.setS32("SnapshotLocalLastResolution", combo->getCurrentIndex());
1812 }
1813
1814 checkAspectRatio(floater, -1); // -1 means custom
1731} 1815}
1732 1816
1733 1817
@@ -1753,8 +1837,8 @@ BOOL LLFloaterSnapshot::Impl::checkImageSize(LLSnapshotLivePreview* previewp, S3
1753 1837
1754 //round to nearest power of 2 based on the direction of movement 1838 //round to nearest power of 2 based on the direction of movement
1755 // i.e. higher power of two if increasing texture resolution 1839 // i.e. higher power of two if increasing texture resolution
1756 if(gSavedSettings.getS32("LastSnapshotWidth") < width || 1840 if(gSavedSettings.getS32("LastSnapshotToInventoryWidth") < width ||
1757 gSavedSettings.getS32("LastSnapshotHeight") < height) 1841 gSavedSettings.getS32("LastSnapshotToInventoryHeight") < height)
1758 { 1842 {
1759 // Up arrow pressed 1843 // Up arrow pressed
1760 width = get_next_power_two(width, MAX_TEXTURE_SIZE) ; 1844 width = get_next_power_two(width, MAX_TEXTURE_SIZE) ;
@@ -1814,20 +1898,10 @@ BOOL LLFloaterSnapshot::Impl::checkImageSize(LLSnapshotLivePreview* previewp, S3
1814//static 1898//static
1815void LLFloaterSnapshot::Impl::resetSnapshotSizeOnUI(LLFloaterSnapshot *view, S32 width, S32 height) 1899void LLFloaterSnapshot::Impl::resetSnapshotSizeOnUI(LLFloaterSnapshot *view, S32 width, S32 height)
1816{ 1900{
1817 LLSpinCtrl *sctrl = view->getChild<LLSpinCtrl>("snapshot_width") ; 1901 view->getChild<LLSpinCtrl>("snapshot_width")->forceSetValue(width);
1818 if(sctrl) 1902 view->getChild<LLSpinCtrl>("snapshot_height")->forceSetValue(height);
1819 { 1903 gSavedSettings.setS32(lastSnapshotWidthName(), width);
1820 sctrl->forceSetValue(width) ; 1904 gSavedSettings.setS32(lastSnapshotHeightName(), height);
1821 }
1822
1823 sctrl = view->getChild<LLSpinCtrl>("snapshot_height") ;
1824 if(sctrl)
1825 {
1826 sctrl->forceSetValue(height) ;
1827 }
1828
1829 gSavedSettings.setS32("LastSnapshotWidth", width);
1830 gSavedSettings.setS32("LastSnapshotHeight", height);
1831} 1905}
1832 1906
1833//static 1907//static
@@ -1881,15 +1955,17 @@ void LLFloaterSnapshot::Impl::onCommitCustomResolution(LLUICtrl *ctrl, void* dat
1881 1955
1882 previewp->setSize(w,h); 1956 previewp->setSize(w,h);
1883 checkAutoSnapshot(previewp, FALSE); 1957 checkAutoSnapshot(previewp, FALSE);
1958 previewp->updateSnapshot(FALSE, TRUE);
1884 comboSetCustom(view, "postcard_size_combo"); 1959 comboSetCustom(view, "postcard_size_combo");
1885 comboSetCustom(view, "texture_size_combo"); 1960 comboSetCustom(view, "texture_size_combo");
1886 comboSetCustom(view, "local_size_combo"); 1961 comboSetCustom(view, "local_size_combo");
1887 } 1962 }
1888 } 1963 }
1889 1964
1890 gSavedSettings.setS32("LastSnapshotWidth", w); 1965 gSavedSettings.setS32(lastSnapshotWidthName(), w);
1891 gSavedSettings.setS32("LastSnapshotHeight", h); 1966 gSavedSettings.setS32(lastSnapshotHeightName(), h);
1892 1967
1968 updateControls(view);
1893 } 1969 }
1894} 1970}
1895 1971
@@ -1925,6 +2001,7 @@ LLFloaterSnapshot::~LLFloaterSnapshot()
1925 delete &impl; 2001 delete &impl;
1926} 2002}
1927 2003
2004
1928BOOL LLFloaterSnapshot::postBuild() 2005BOOL LLFloaterSnapshot::postBuild()
1929{ 2006{
1930 childSetCommitCallback("snapshot_type_radio", Impl::onCommitSnapshotType, this); 2007 childSetCommitCallback("snapshot_type_radio", Impl::onCommitSnapshotType, this);
@@ -1932,11 +2009,6 @@ BOOL LLFloaterSnapshot::postBuild()
1932 2009
1933 childSetAction("new_snapshot_btn", Impl::onClickNewSnapshot, this); 2010 childSetAction("new_snapshot_btn", Impl::onClickNewSnapshot, this);
1934 2011
1935 childSetValue("auto_snapshot_check", gSavedSettings.getBOOL("AutoSnapshot"));
1936 childSetCommitCallback("auto_snapshot_check", Impl::onClickAutoSnap, this);
1937
1938 //childSetValue("advance_snapshot_check", gSavedSettings.getBOOL("AdvanceSnapshot"));
1939 //childSetCommitCallback("advance_snapshot_check", Impl::onClickAdvanceSnap, this);
1940 childSetAction("more_btn", Impl::onClickMore, this); 2012 childSetAction("more_btn", Impl::onClickMore, this);
1941 childSetAction("less_btn", Impl::onClickLess, this); 2013 childSetAction("less_btn", Impl::onClickLess, this);
1942 2014
@@ -1949,10 +2021,10 @@ BOOL LLFloaterSnapshot::postBuild()
1949 childSetValue("image_quality_slider", gSavedSettings.getS32("SnapshotQuality")); 2021 childSetValue("image_quality_slider", gSavedSettings.getS32("SnapshotQuality"));
1950 2022
1951 childSetCommitCallback("snapshot_width", Impl::onCommitCustomResolution, this); 2023 childSetCommitCallback("snapshot_width", Impl::onCommitCustomResolution, this);
1952
1953 childSetCommitCallback("snapshot_height", Impl::onCommitCustomResolution, this); 2024 childSetCommitCallback("snapshot_height", Impl::onCommitCustomResolution, this);
1954 2025
1955 childSetCommitCallback("ui_check", Impl::onClickUICheck, this); 2026 childSetCommitCallback("ui_check", Impl::onClickUICheck, this);
2027 childSetValue("ui_check", gSavedSettings.getBOOL("RenderUIInSnapshot"));
1956 2028
1957 childSetCommitCallback("high_res_check", Impl::onClickHighResCheck, this); 2029 childSetCommitCallback("high_res_check", Impl::onClickHighResCheck, this);
1958 childSetValue("high_res_check", gSavedSettings.getBOOL("HighResSnapshot")); 2030 childSetValue("high_res_check", gSavedSettings.getBOOL("HighResSnapshot"));
@@ -1970,12 +2042,15 @@ BOOL LLFloaterSnapshot::postBuild()
1970 childSetValue("layer_types", "colors"); 2042 childSetValue("layer_types", "colors");
1971 childSetEnabled("layer_types", FALSE); 2043 childSetEnabled("layer_types", FALSE);
1972 2044
1973 childSetValue("snapshot_width", gSavedSettings.getS32("LastSnapshotWidth")); 2045 childSetValue("snapshot_width", gSavedSettings.getS32(lastSnapshotWidthName()));
1974 childSetValue("snapshot_height", gSavedSettings.getS32("LastSnapshotHeight")); 2046 childSetValue("snapshot_height", gSavedSettings.getS32(lastSnapshotHeightName()));
1975 2047
1976 childSetValue("freeze_frame_check", gSavedSettings.getBOOL("UseFreezeFrame")); 2048 childSetValue("freeze_frame_check", gSavedSettings.getBOOL("UseFreezeFrame"));
1977 childSetCommitCallback("freeze_frame_check", Impl::onCommitFreezeFrame, this); 2049 childSetCommitCallback("freeze_frame_check", Impl::onCommitFreezeFrame, this);
1978 2050
2051 childSetValue("auto_snapshot_check", gSavedSettings.getBOOL("AutoSnapshot"));
2052 childSetCommitCallback("auto_snapshot_check", Impl::onClickAutoSnap, this);
2053
1979 childSetCommitCallback("postcard_size_combo", Impl::onCommitResolution, this); 2054 childSetCommitCallback("postcard_size_combo", Impl::onCommitResolution, this);
1980 childSetCommitCallback("texture_size_combo", Impl::onCommitResolution, this); 2055 childSetCommitCallback("texture_size_combo", Impl::onCommitResolution, this);
1981 childSetCommitCallback("local_size_combo", Impl::onCommitResolution, this); 2056 childSetCommitCallback("local_size_combo", Impl::onCommitResolution, this);
@@ -2005,6 +2080,7 @@ void LLFloaterSnapshot::draw()
2005 return; 2080 return;
2006 } 2081 }
2007 2082
2083 // TODO*: Do we need all this? - Jacek
2008 if(!isMinimized()) 2084 if(!isMinimized())
2009 { 2085 {
2010 if (previewp && previewp->getDataSize() > 0) 2086 if (previewp && previewp->getDataSize() > 0)
@@ -2162,10 +2238,15 @@ void LLFloaterSnapshot::hide(void*)
2162//static 2238//static
2163void LLFloaterSnapshot::update() 2239void LLFloaterSnapshot::update()
2164{ 2240{
2241 BOOL changed = FALSE;
2165 for (std::set<LLSnapshotLivePreview*>::iterator iter = LLSnapshotLivePreview::sList.begin(); 2242 for (std::set<LLSnapshotLivePreview*>::iterator iter = LLSnapshotLivePreview::sList.begin();
2166 iter != LLSnapshotLivePreview::sList.end(); ++iter) 2243 iter != LLSnapshotLivePreview::sList.end(); ++iter)
2167 { 2244 {
2168 LLSnapshotLivePreview::onIdle(*iter); 2245 changed |= LLSnapshotLivePreview::onIdle(*iter);
2246 }
2247 if(changed)
2248 {
2249 sInstance->impl.updateControls(sInstance);
2169 } 2250 }
2170} 2251}
2171 2252