summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOz Linden <oz@lindenlab.com>2010-10-12 08:47:26 -0400
committerOz Linden <oz@lindenlab.com>2010-10-12 08:47:26 -0400
commit3f43a36d3430e94046d40cb898a9fd34cce0f7d5 (patch)
treec3c483b3ce49ea5fcabe3041213223112edfba86
parent422780c88a98ad0b78c54a71189219de12992bc2 (diff)
parent011f6f9ad07d0a71c9a392f5e25af2aad69110ee (diff)
merge fixes for VWR-23296
-rw-r--r--.hgtags1
-rw-r--r--BuildParams1
-rwxr-xr-xbuild.sh1
-rw-r--r--doc/contributions.txt20
-rw-r--r--indra/cmake/FindGoogleBreakpad.cmake40
-rw-r--r--indra/cmake/GoogleBreakpad.cmake4
-rw-r--r--indra/cmake/PulseAudio.cmake38
-rw-r--r--indra/cmake/Variables.cmake15
-rw-r--r--indra/integration_tests/llui_libtest/llui_libtest.cpp7
-rw-r--r--indra/integration_tests/llui_libtest/llwidgetreg.cpp2
-rw-r--r--indra/lib/python/indra/util/named_query.py12
-rw-r--r--indra/lib/python/uuid.py10
-rw-r--r--indra/llaudio/llaudioengine.cpp73
-rw-r--r--indra/llaudio/llaudioengine.h9
-rw-r--r--indra/llcommon/CMakeLists.txt12
-rw-r--r--indra/llcommon/llfasttimer_class.cpp4
-rw-r--r--indra/llcommon/llversionviewer.h2
-rw-r--r--indra/llcommon/stdenums.h4
-rw-r--r--indra/llplugin/CMakeLists.txt8
-rw-r--r--indra/llplugin/llpluginclassmedia.cpp75
-rw-r--r--indra/llplugin/llpluginclassmedia.h33
-rw-r--r--indra/llplugin/llpluginclassmediaowner.h3
-rw-r--r--indra/llplugin/slplugin/slplugin.cpp12
-rw-r--r--indra/llrender/llfontgl.cpp18
-rw-r--r--indra/llui/CMakeLists.txt1
-rw-r--r--indra/llui/llaccordionctrl.cpp2
-rw-r--r--indra/llui/llaccordionctrltab.cpp1
-rw-r--r--indra/llui/llaccordionctrltab.h10
-rw-r--r--indra/llui/llbutton.cpp18
-rw-r--r--indra/llui/llbutton.h1
-rw-r--r--indra/llui/llcheckboxctrl.cpp9
-rw-r--r--indra/llui/llcheckboxctrl.h2
-rw-r--r--indra/llui/llcombobox.cpp4
-rw-r--r--indra/llui/llfloater.cpp68
-rw-r--r--indra/llui/llfloater.h1
-rw-r--r--indra/llui/llfloaterreg.cpp2
-rw-r--r--indra/llui/llfocusmgr.cpp14
-rw-r--r--indra/llui/llfocusmgr.h2
-rw-r--r--indra/llui/lllayoutstack.cpp408
-rw-r--r--indra/llui/lllayoutstack.h78
-rw-r--r--indra/llui/lllineeditor.cpp4
-rw-r--r--indra/llui/llmultislider.cpp4
-rw-r--r--indra/llui/llnotifications.cpp519
-rw-r--r--indra/llui/llnotifications.h209
-rw-r--r--indra/llui/llnotificationslistener.cpp7
-rw-r--r--indra/llui/llnotificationtemplate.h282
-rw-r--r--indra/llui/llpanel.cpp122
-rw-r--r--indra/llui/llpanel.h62
-rw-r--r--indra/llui/llradiogroup.cpp4
-rw-r--r--indra/llui/llrngwriter.cpp5
-rw-r--r--indra/llui/llscrolllistctrl.cpp43
-rw-r--r--indra/llui/llsdparam.cpp207
-rw-r--r--indra/llui/llsdparam.h43
-rw-r--r--indra/llui/lltextbase.h1
-rw-r--r--indra/llui/lltooltip.cpp9
-rw-r--r--indra/llui/llui.cpp11
-rw-r--r--indra/llui/lluicolortable.cpp10
-rw-r--r--indra/llui/lluictrlfactory.cpp222
-rw-r--r--indra/llui/lluictrlfactory.h203
-rw-r--r--indra/llui/lluistring.cpp19
-rw-r--r--indra/llui/lluistring.h9
-rw-r--r--indra/llui/llview.cpp24
-rw-r--r--indra/llui/llview.h35
-rw-r--r--indra/llvfs/lldir_linux.cpp2
-rw-r--r--indra/llvfs/lldir_win32.cpp8
-rw-r--r--indra/llxuixml/llinitparam.cpp51
-rw-r--r--indra/llxuixml/llinitparam.h168
-rw-r--r--indra/llxuixml/llregistry.h5
-rw-r--r--indra/llxuixml/lltrans.cpp14
-rw-r--r--indra/llxuixml/llxuiparser.cpp662
-rw-r--r--indra/llxuixml/llxuiparser.h138
-rw-r--r--indra/media_plugins/base/CMakeLists.txt8
-rw-r--r--indra/media_plugins/example/CMakeLists.txt8
-rw-r--r--indra/media_plugins/gstreamer010/CMakeLists.txt15
-rw-r--r--indra/media_plugins/gstreamer010/llmediaimplgstreamervidplug.cpp22
-rw-r--r--indra/media_plugins/webkit/CMakeLists.txt17
-rw-r--r--indra/media_plugins/webkit/media_plugin_webkit.cpp89
-rw-r--r--indra/newview/CMakeLists.txt9
-rw-r--r--indra/newview/app_settings/cmd_line.xml2
-rw-r--r--indra/newview/app_settings/ignorable_dialogs.xml198
-rw-r--r--indra/newview/app_settings/settings.xml81
-rw-r--r--indra/newview/featuretable.txt1
-rw-r--r--indra/newview/llagent.cpp51
-rw-r--r--indra/newview/llagent.h9
-rw-r--r--indra/newview/llappviewer.cpp11
-rw-r--r--indra/newview/llappviewer.h1
-rw-r--r--indra/newview/llaudiosourcevo.cpp59
-rw-r--r--indra/newview/llaudiosourcevo.h3
-rw-r--r--indra/newview/llavataractions.cpp80
-rw-r--r--indra/newview/llavataractions.h11
-rw-r--r--indra/newview/llavatarlist.cpp2
-rw-r--r--indra/newview/llavatarlistitem.cpp5
-rw-r--r--indra/newview/llbottomtray.cpp164
-rw-r--r--indra/newview/llbottomtray.h13
-rw-r--r--indra/newview/llbrowsernotification.cpp48
-rw-r--r--indra/newview/llcallfloater.cpp2
-rw-r--r--indra/newview/llchatbar.cpp10
-rw-r--r--indra/newview/llchathistory.cpp20
-rw-r--r--indra/newview/llchathistory.h2
-rw-r--r--indra/newview/llchatitemscontainerctrl.cpp2
-rw-r--r--indra/newview/llcompilequeue.cpp1
-rw-r--r--indra/newview/llfasttimerview.cpp18
-rw-r--r--indra/newview/llfasttimerview.h1
-rw-r--r--indra/newview/llfavoritesbar.cpp86
-rw-r--r--indra/newview/llfavoritesbar.h4
-rw-r--r--indra/newview/llfirstuse.cpp214
-rw-r--r--indra/newview/llfirstuse.h41
-rw-r--r--indra/newview/llfloaterabout.cpp1
-rw-r--r--indra/newview/llfloaterauction.cpp1
-rw-r--r--indra/newview/llfloateravatarpicker.cpp1
-rw-r--r--indra/newview/llfloateravatartextures.cpp1
-rw-r--r--indra/newview/llfloaterbeacons.cpp2
-rw-r--r--indra/newview/llfloaterbuildoptions.cpp1
-rw-r--r--indra/newview/llfloaterbulkpermission.cpp1
-rw-r--r--indra/newview/llfloaterbump.cpp1
-rw-r--r--indra/newview/llfloaterbuy.cpp1
-rw-r--r--indra/newview/llfloaterbuycontents.cpp6
-rw-r--r--indra/newview/llfloaterbuyland.cpp1
-rw-r--r--indra/newview/llfloatercamera.cpp2
-rw-r--r--indra/newview/llfloatercolorpicker.cpp5
-rw-r--r--indra/newview/llfloaterdaycycle.cpp1
-rw-r--r--indra/newview/llfloaterenvsettings.cpp1
-rw-r--r--indra/newview/llfloatergodtools.cpp2
-rw-r--r--indra/newview/llfloatergroups.cpp7
-rw-r--r--indra/newview/llfloaterhardwaresettings.cpp1
-rw-r--r--indra/newview/llfloaterhud.cpp2
-rw-r--r--indra/newview/llfloaterinspect.cpp1
-rw-r--r--indra/newview/llfloaterinventory.cpp2
-rw-r--r--indra/newview/llfloaterjoystick.cpp2
-rw-r--r--indra/newview/llfloaterlagmeter.cpp1
-rw-r--r--indra/newview/llfloaterland.cpp11
-rw-r--r--indra/newview/llfloaterlandholdings.cpp10
-rw-r--r--indra/newview/llfloatermap.cpp9
-rw-r--r--indra/newview/llfloatermediabrowser.cpp146
-rw-r--r--indra/newview/llfloatermediabrowser.h13
-rw-r--r--indra/newview/llfloaternotificationsconsole.cpp27
-rw-r--r--indra/newview/llfloateropenobject.cpp1
-rw-r--r--indra/newview/llfloaterperms.cpp1
-rw-r--r--indra/newview/llfloaterpostcard.cpp1
-rw-r--r--indra/newview/llfloaterpostprocess.cpp1
-rw-r--r--indra/newview/llfloaterpreference.cpp46
-rw-r--r--indra/newview/llfloaterpreference.h2
-rw-r--r--indra/newview/llfloaterproperties.cpp2
-rw-r--r--indra/newview/llfloaterregioninfo.cpp13
-rw-r--r--indra/newview/llfloaterreporter.cpp1
-rw-r--r--indra/newview/llfloaterscriptdebug.cpp4
-rw-r--r--indra/newview/llfloaterscriptlimits.cpp66
-rw-r--r--indra/newview/llfloatersearch.cpp6
-rw-r--r--indra/newview/llfloatersettingsdebug.cpp1
-rw-r--r--indra/newview/llfloatersnapshot.cpp1
-rw-r--r--indra/newview/llfloatertelehub.cpp1
-rw-r--r--indra/newview/llfloatertools.cpp1
-rw-r--r--indra/newview/llfloatertopobjects.cpp1
-rw-r--r--indra/newview/llfloateruipreview.cpp9
-rw-r--r--indra/newview/llfloaterurlentry.cpp2
-rw-r--r--indra/newview/llfloaterwater.cpp1
-rw-r--r--indra/newview/llfloaterwhitelistentry.cpp1
-rw-r--r--indra/newview/llfloaterwindlight.cpp1
-rw-r--r--indra/newview/llfloaterwindowsize.cpp1
-rw-r--r--indra/newview/llfloaterworldmap.cpp1
-rw-r--r--indra/newview/llfolderview.cpp19
-rw-r--r--indra/newview/llfolderview.h11
-rw-r--r--indra/newview/llfolderviewitem.cpp142
-rw-r--r--indra/newview/llfolderviewitem.h59
-rw-r--r--indra/newview/llgroupactions.cpp2
-rw-r--r--indra/newview/llgrouplist.cpp2
-rw-r--r--indra/newview/llhints.cpp381
-rw-r--r--indra/newview/llhints.h50
-rw-r--r--indra/newview/llhudview.cpp2
-rw-r--r--indra/newview/llimfloater.cpp14
-rw-r--r--indra/newview/llimfloatercontainer.cpp8
-rw-r--r--indra/newview/llimhandler.cpp2
-rw-r--r--indra/newview/llimview.cpp39
-rw-r--r--indra/newview/llimview.h4
-rw-r--r--indra/newview/llinventorybridge.cpp166
-rw-r--r--indra/newview/llinventorybridge.h2
-rw-r--r--indra/newview/llinventorylistitem.cpp8
-rw-r--r--indra/newview/lllogininstance.cpp6
-rw-r--r--indra/newview/llmediactrl.cpp280
-rw-r--r--indra/newview/llmediactrl.h21
-rw-r--r--indra/newview/llmorphview.h1
-rw-r--r--indra/newview/llmoveview.cpp13
-rw-r--r--indra/newview/llnamebox.cpp3
-rw-r--r--indra/newview/llnamelistctrl.cpp3
-rw-r--r--indra/newview/llnavigationbar.cpp2
-rw-r--r--indra/newview/llnearbychatbar.cpp13
-rw-r--r--indra/newview/llnearbychathandler.cpp119
-rw-r--r--indra/newview/llnotificationalerthandler.cpp2
-rw-r--r--indra/newview/llnotificationgrouphandler.cpp2
-rw-r--r--indra/newview/llnotificationhandler.h23
-rw-r--r--indra/newview/llnotificationhinthandler.cpp58
-rw-r--r--indra/newview/llnotificationmanager.cpp4
-rw-r--r--indra/newview/llnotificationofferhandler.cpp2
-rw-r--r--indra/newview/llnotificationscripthandler.cpp2
-rw-r--r--indra/newview/llnotificationtiphandler.cpp6
-rw-r--r--indra/newview/lloutfitslist.cpp65
-rw-r--r--indra/newview/lloutfitslist.h6
-rw-r--r--indra/newview/llpanelavatartag.cpp2
-rw-r--r--indra/newview/llpanelclassified.cpp4
-rw-r--r--indra/newview/llpanelgenerictip.cpp2
-rw-r--r--indra/newview/llpanelgroup.cpp4
-rw-r--r--indra/newview/llpanelgroupgeneral.cpp2
-rw-r--r--indra/newview/llpanelgroupinvite.cpp2
-rw-r--r--indra/newview/llpanelgrouplandmoney.cpp2
-rw-r--r--indra/newview/llpanelgrouproles.cpp2
-rw-r--r--indra/newview/llpanelhome.cpp1
-rw-r--r--indra/newview/llpanellandmarks.cpp15
-rw-r--r--indra/newview/llpanellogin.cpp12
-rw-r--r--indra/newview/llpanelmaininventory.cpp2
-rw-r--r--indra/newview/llpanelmaininventory.h1
-rw-r--r--indra/newview/llpanelme.cpp2
-rw-r--r--indra/newview/llpanelmediasettingsgeneral.cpp2
-rw-r--r--indra/newview/llpanelmediasettingspermissions.cpp2
-rw-r--r--indra/newview/llpanelmediasettingssecurity.cpp2
-rw-r--r--indra/newview/llpanelnearbymedia.cpp2
-rw-r--r--indra/newview/llpanelonlinestatus.cpp2
-rw-r--r--indra/newview/llpaneloutfitedit.cpp6
-rw-r--r--indra/newview/llpaneloutfitsinventory.cpp13
-rw-r--r--indra/newview/llpanelpick.cpp4
-rw-r--r--indra/newview/llpanelpicks.cpp4
-rw-r--r--indra/newview/llpanelplaces.cpp9
-rw-r--r--indra/newview/llpanelprimmediacontrols.cpp4
-rw-r--r--indra/newview/llpanelprofile.cpp4
-rw-r--r--indra/newview/llpanelprofileview.cpp2
-rw-r--r--indra/newview/llpanelteleporthistory.cpp4
-rw-r--r--indra/newview/llpaneltopinfobar.cpp2
-rw-r--r--indra/newview/llpanelvoicedevicesettings.cpp (renamed from indra/newview/llfloatervoicedevicesettings.cpp)96
-rw-r--r--indra/newview/llpanelvoicedevicesettings.h (renamed from indra/newview/llfloatervoicedevicesettings.h)34
-rw-r--r--indra/newview/llpanelvolumepulldown.cpp2
-rw-r--r--indra/newview/llpreviewanim.cpp1
-rw-r--r--indra/newview/llpreviewgesture.cpp3
-rw-r--r--indra/newview/llpreviewnotecard.cpp1
-rw-r--r--indra/newview/llpreviewscript.cpp26
-rw-r--r--indra/newview/llpreviewscript.h2
-rw-r--r--indra/newview/llpreviewsound.cpp1
-rw-r--r--indra/newview/llpreviewtexture.cpp1
-rw-r--r--indra/newview/llprogressview.cpp23
-rw-r--r--indra/newview/llprogressview.h1
-rw-r--r--indra/newview/llscrollingpanelparam.cpp2
-rw-r--r--indra/newview/llselectmgr.cpp25
-rw-r--r--indra/newview/llselectmgr.h1
-rw-r--r--indra/newview/llsidepanelinventory.cpp82
-rw-r--r--indra/newview/llsidepanelinventory.h2
-rw-r--r--indra/newview/llsidepaneliteminfo.cpp2
-rw-r--r--indra/newview/llsidetray.cpp36
-rw-r--r--indra/newview/llsidetray.h16
-rw-r--r--indra/newview/llsplitbutton.cpp4
-rw-r--r--indra/newview/llstartup.cpp7
-rw-r--r--indra/newview/llstatusbar.cpp12
-rw-r--r--indra/newview/llsyswellitem.cpp2
-rw-r--r--indra/newview/llsyswellwindow.cpp4
-rw-r--r--indra/newview/lltexturectrl.cpp2
-rw-r--r--indra/newview/lltexturefetch.cpp12
-rw-r--r--indra/newview/lltoast.cpp2
-rw-r--r--indra/newview/lltoast.h4
-rw-r--r--indra/newview/lltoastgroupnotifypanel.cpp2
-rw-r--r--indra/newview/lltoastimpanel.cpp2
-rw-r--r--indra/newview/lltoastnotifypanel.cpp2
-rw-r--r--indra/newview/lltooldraganddrop.cpp10
-rw-r--r--indra/newview/llvieweraudio.cpp4
-rw-r--r--indra/newview/llviewerfloaterreg.cpp2
-rw-r--r--indra/newview/llviewermedia.cpp127
-rw-r--r--indra/newview/llviewermedia.h8
-rw-r--r--indra/newview/llviewermenu.cpp16
-rw-r--r--indra/newview/llviewermessage.cpp24
-rw-r--r--indra/newview/llviewernetwork.cpp10
-rw-r--r--indra/newview/llviewerobject.cpp7
-rw-r--r--indra/newview/llviewerparcelmedia.cpp18
-rw-r--r--indra/newview/llviewertexturelist.cpp7
-rw-r--r--indra/newview/llviewerwindow.cpp54
-rw-r--r--indra/newview/llviewerwindow.h3
-rw-r--r--indra/newview/llvocache.cpp65
-rw-r--r--indra/newview/llvoicechannel.cpp24
-rw-r--r--indra/newview/llweb.cpp24
-rw-r--r--indra/newview/llweb.h14
-rw-r--r--indra/newview/llwebsharing.cpp36
-rw-r--r--indra/newview/llwebsharing.h36
-rw-r--r--indra/newview/pipeline.cpp2
-rw-r--r--indra/newview/skins/default/textures/icons/pop_up_caution.pngbin0 -> 3158 bytes
-rw-r--r--indra/newview/skins/default/textures/textures.xml9
-rw-r--r--indra/newview/skins/default/textures/windows/hint_arrow_down.pngbin0 -> 3170 bytes
-rw-r--r--indra/newview/skins/default/textures/windows/hint_arrow_left.pngbin0 -> 3059 bytes
-rw-r--r--indra/newview/skins/default/textures/windows/hint_arrow_lower_left.pngbin0 -> 3081 bytes
-rw-r--r--indra/newview/skins/default/textures/windows/hint_arrow_right.pngbin0 -> 3112 bytes
-rw-r--r--indra/newview/skins/default/textures/windows/hint_arrow_up.pngbin0 -> 3219 bytes
-rw-r--r--indra/newview/skins/default/textures/windows/hint_background.pngbin0 -> 4316 bytes
-rw-r--r--indra/newview/skins/default/textures/windows/yellow_gradient.pngbin0 -> 3634 bytes
-rw-r--r--indra/newview/skins/default/xui/da/floater_customize.xml530
-rw-r--r--indra/newview/skins/default/xui/da/floater_device_settings.xml2
-rw-r--r--indra/newview/skins/default/xui/da/floater_im.xml45
-rw-r--r--indra/newview/skins/default/xui/da/floater_im_session.xml1
-rw-r--r--indra/newview/skins/default/xui/da/floater_my_friends.xml7
-rw-r--r--indra/newview/skins/default/xui/da/floater_outfit_save_as.xml11
-rw-r--r--indra/newview/skins/default/xui/da/floater_preview_classified.xml6
-rw-r--r--indra/newview/skins/default/xui/da/floater_preview_event.xml6
-rw-r--r--indra/newview/skins/default/xui/da/floater_preview_gesture_info.xml2
-rw-r--r--indra/newview/skins/default/xui/da/floater_preview_gesture_shortcut.xml15
-rw-r--r--indra/newview/skins/default/xui/da/floater_preview_gesture_steps.xml2
-rw-r--r--indra/newview/skins/default/xui/da/floater_statistics.xml2
-rw-r--r--indra/newview/skins/default/xui/da/floater_voice_controls.xml12
-rw-r--r--indra/newview/skins/default/xui/da/floater_wearable_save_as.xml11
-rw-r--r--indra/newview/skins/default/xui/da/panel_audio_device.xml25
-rw-r--r--indra/newview/skins/default/xui/da/panel_friends.xml20
-rw-r--r--indra/newview/skins/default/xui/da/panel_groups.xml18
-rw-r--r--indra/newview/skins/default/xui/da/panel_nearby_chat.xml9
-rw-r--r--indra/newview/skins/default/xui/da/panel_notes.xml8
-rw-r--r--indra/newview/skins/default/xui/da/panel_online_status.xml2
-rw-r--r--indra/newview/skins/default/xui/da/panel_prim_media_controls.xml4
-rw-r--r--indra/newview/skins/default/xui/da/panel_region_general_layout.xml43
-rw-r--r--indra/newview/skins/default/xui/de/floater_bulk_perms.xml2
-rw-r--r--indra/newview/skins/default/xui/de/floater_customize.xml529
-rw-r--r--indra/newview/skins/default/xui/de/floater_device_settings.xml2
-rw-r--r--indra/newview/skins/default/xui/de/floater_first_time_tip.xml4
-rw-r--r--indra/newview/skins/default/xui/de/floater_im.xml46
-rw-r--r--indra/newview/skins/default/xui/de/floater_im_session.xml1
-rw-r--r--indra/newview/skins/default/xui/de/floater_my_friends.xml7
-rw-r--r--indra/newview/skins/default/xui/de/floater_outfit_save_as.xml12
-rw-r--r--indra/newview/skins/default/xui/de/floater_preview_classified.xml6
-rw-r--r--indra/newview/skins/default/xui/de/floater_preview_event.xml6
-rw-r--r--indra/newview/skins/default/xui/de/floater_preview_gesture_info.xml2
-rw-r--r--indra/newview/skins/default/xui/de/floater_preview_gesture_shortcut.xml15
-rw-r--r--indra/newview/skins/default/xui/de/floater_preview_gesture_steps.xml2
-rw-r--r--indra/newview/skins/default/xui/de/floater_statistics.xml2
-rw-r--r--indra/newview/skins/default/xui/de/floater_tools.xml4
-rw-r--r--indra/newview/skins/default/xui/de/floater_voice_controls.xml12
-rw-r--r--indra/newview/skins/default/xui/de/floater_wearable_save_as.xml11
-rw-r--r--indra/newview/skins/default/xui/de/panel_audio_device.xml25
-rw-r--r--indra/newview/skins/default/xui/de/panel_friends.xml31
-rw-r--r--indra/newview/skins/default/xui/de/panel_groups.xml15
-rw-r--r--indra/newview/skins/default/xui/de/panel_nearby_chat.xml9
-rw-r--r--indra/newview/skins/default/xui/de/panel_notifications_channel.xml24
-rw-r--r--indra/newview/skins/default/xui/de/panel_online_status.xml2
-rw-r--r--indra/newview/skins/default/xui/de/panel_prim_media_controls.xml4
-rw-r--r--indra/newview/skins/default/xui/de/panel_region_general_layout.xml43
-rw-r--r--indra/newview/skins/default/xui/en/alert_check_box.xml4
-rw-r--r--indra/newview/skins/default/xui/en/favorites_bar_button.xml2
-rw-r--r--indra/newview/skins/default/xui/en/floater_aaa.xml61
-rw-r--r--indra/newview/skins/default/xui/en/floater_bulk_perms.xml37
-rw-r--r--indra/newview/skins/default/xui/en/floater_buy_currency_html.xml1
-rw-r--r--indra/newview/skins/default/xui/en/floater_customize.xml3389
-rw-r--r--indra/newview/skins/default/xui/en/floater_device_settings.xml18
-rw-r--r--indra/newview/skins/default/xui/en/floater_first_time_tip.xml22
-rw-r--r--indra/newview/skins/default/xui/en/floater_help_browser.xml4
-rw-r--r--indra/newview/skins/default/xui/en/floater_im.xml80
-rw-r--r--indra/newview/skins/default/xui/en/floater_im_session.xml17
-rw-r--r--indra/newview/skins/default/xui/en/floater_media_browser.xml10
-rw-r--r--indra/newview/skins/default/xui/en/floater_my_friends.xml45
-rw-r--r--indra/newview/skins/default/xui/en/floater_notifications_console.xml1
-rw-r--r--indra/newview/skins/default/xui/en/floater_outfit_save_as.xml58
-rw-r--r--indra/newview/skins/default/xui/en/floater_preview_classified.xml24
-rw-r--r--indra/newview/skins/default/xui/en/floater_preview_event.xml24
-rw-r--r--indra/newview/skins/default/xui/en/floater_preview_gesture_info.xml57
-rw-r--r--indra/newview/skins/default/xui/en/floater_preview_gesture_shortcut.xml88
-rw-r--r--indra/newview/skins/default/xui/en/floater_preview_gesture_steps.xml242
-rw-r--r--indra/newview/skins/default/xui/en/floater_search.xml1
-rw-r--r--indra/newview/skins/default/xui/en/floater_statistics.xml12
-rw-r--r--indra/newview/skins/default/xui/en/floater_test_checkbox.xml4
-rw-r--r--indra/newview/skins/default/xui/en/floater_test_widgets.xml2
-rw-r--r--indra/newview/skins/default/xui/en/floater_tools.xml8
-rw-r--r--indra/newview/skins/default/xui/en/floater_tos.xml1
-rw-r--r--indra/newview/skins/default/xui/en/floater_voice_controls.xml16
-rw-r--r--indra/newview/skins/default/xui/en/floater_wearable_save_as.xml56
-rw-r--r--indra/newview/skins/default/xui/en/main_view.xml69
-rw-r--r--indra/newview/skins/default/xui/en/menu_viewer.xml30
-rw-r--r--indra/newview/skins/default/xui/en/notifications.xml154
-rw-r--r--indra/newview/skins/default/xui/en/panel_audio_device.xml152
-rw-r--r--indra/newview/skins/default/xui/en/panel_bottomtray.xml57
-rw-r--r--indra/newview/skins/default/xui/en/panel_bottomtray_lite.xml36
-rw-r--r--indra/newview/skins/default/xui/en/panel_edit_profile.xml26
-rw-r--r--indra/newview/skins/default/xui/en/panel_friends.xml124
-rw-r--r--indra/newview/skins/default/xui/en/panel_group_land_money.xml2
-rw-r--r--indra/newview/skins/default/xui/en/panel_group_notify.xml1
-rw-r--r--indra/newview/skins/default/xui/en/panel_groups.xml111
-rw-r--r--indra/newview/skins/default/xui/en/panel_hint.xml31
-rw-r--r--indra/newview/skins/default/xui/en/panel_im_control_panel.xml40
-rw-r--r--indra/newview/skins/default/xui/en/panel_login.xml2
-rw-r--r--indra/newview/skins/default/xui/en/panel_nearby_chat.xml27
-rw-r--r--indra/newview/skins/default/xui/en/panel_notifications_channel.xml10
-rw-r--r--indra/newview/skins/default/xui/en/panel_online_status.xml35
-rw-r--r--indra/newview/skins/default/xui/en/panel_outfit_edit.xml62
-rw-r--r--indra/newview/skins/default/xui/en/panel_pick_list_item.xml1
-rw-r--r--indra/newview/skins/default/xui/en/panel_picks.xml15
-rw-r--r--indra/newview/skins/default/xui/en/panel_preferences_alerts.xml4
-rw-r--r--indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml2
-rw-r--r--indra/newview/skins/default/xui/en/panel_preferences_setup.xml15
-rw-r--r--indra/newview/skins/default/xui/en/panel_prim_media_controls.xml5
-rw-r--r--indra/newview/skins/default/xui/en/panel_progress.xml1
-rw-r--r--indra/newview/skins/default/xui/en/panel_region_general_layout.xml242
-rw-r--r--indra/newview/skins/default/xui/en/panel_script_limits_region_memory.xml2
-rw-r--r--indra/newview/skins/default/xui/en/panel_sidetray_home_tab.xml3
-rw-r--r--indra/newview/skins/default/xui/en/sidepanel_appearance.xml1
-rw-r--r--indra/newview/skins/default/xui/en/strings.xml2
-rw-r--r--indra/newview/skins/default/xui/en/widgets/check_box.xml8
-rw-r--r--indra/newview/skins/default/xui/en/widgets/hint_popup.xml21
-rw-r--r--indra/newview/skins/default/xui/en/widgets/scroll_bar.xml8
-rw-r--r--indra/newview/skins/default/xui/en/widgets/simple_text_editor.xml3
-rw-r--r--indra/newview/skins/default/xui/en/widgets/text_editor.xml1
-rw-r--r--indra/newview/skins/default/xui/es/floater_customize.xml530
-rw-r--r--indra/newview/skins/default/xui/es/floater_device_settings.xml2
-rw-r--r--indra/newview/skins/default/xui/es/floater_im.xml45
-rw-r--r--indra/newview/skins/default/xui/es/floater_im_session.xml1
-rw-r--r--indra/newview/skins/default/xui/es/floater_my_friends.xml7
-rw-r--r--indra/newview/skins/default/xui/es/floater_outfit_save_as.xml12
-rw-r--r--indra/newview/skins/default/xui/es/floater_preview_classified.xml6
-rw-r--r--indra/newview/skins/default/xui/es/floater_preview_event.xml6
-rw-r--r--indra/newview/skins/default/xui/es/floater_preview_gesture_info.xml2
-rw-r--r--indra/newview/skins/default/xui/es/floater_preview_gesture_shortcut.xml15
-rw-r--r--indra/newview/skins/default/xui/es/floater_preview_gesture_steps.xml2
-rw-r--r--indra/newview/skins/default/xui/es/floater_statistics.xml2
-rw-r--r--indra/newview/skins/default/xui/es/floater_tools.xml2
-rw-r--r--indra/newview/skins/default/xui/es/floater_voice_controls.xml12
-rw-r--r--indra/newview/skins/default/xui/es/floater_wearable_save_as.xml11
-rw-r--r--indra/newview/skins/default/xui/es/panel_audio_device.xml25
-rw-r--r--indra/newview/skins/default/xui/es/panel_friends.xml20
-rw-r--r--indra/newview/skins/default/xui/es/panel_groups.xml17
-rw-r--r--indra/newview/skins/default/xui/es/panel_nearby_chat.xml9
-rw-r--r--indra/newview/skins/default/xui/es/panel_notes.xml8
-rw-r--r--indra/newview/skins/default/xui/es/panel_online_status.xml2
-rw-r--r--indra/newview/skins/default/xui/es/panel_prim_media_controls.xml4
-rw-r--r--indra/newview/skins/default/xui/es/panel_region_general_layout.xml43
-rw-r--r--indra/newview/skins/default/xui/fr/floater_customize.xml530
-rw-r--r--indra/newview/skins/default/xui/fr/floater_device_settings.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/floater_first_time_tip.xml4
-rw-r--r--indra/newview/skins/default/xui/fr/floater_im.xml45
-rw-r--r--indra/newview/skins/default/xui/fr/floater_im_session.xml1
-rw-r--r--indra/newview/skins/default/xui/fr/floater_my_friends.xml7
-rw-r--r--indra/newview/skins/default/xui/fr/floater_outfit_save_as.xml12
-rw-r--r--indra/newview/skins/default/xui/fr/floater_preview_classified.xml6
-rw-r--r--indra/newview/skins/default/xui/fr/floater_preview_event.xml6
-rw-r--r--indra/newview/skins/default/xui/fr/floater_preview_gesture_info.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/floater_preview_gesture_shortcut.xml15
-rw-r--r--indra/newview/skins/default/xui/fr/floater_preview_gesture_steps.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/floater_statistics.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/floater_voice_controls.xml12
-rw-r--r--indra/newview/skins/default/xui/fr/floater_wearable_save_as.xml11
-rw-r--r--indra/newview/skins/default/xui/fr/panel_audio_device.xml25
-rw-r--r--indra/newview/skins/default/xui/fr/panel_friends.xml20
-rw-r--r--indra/newview/skins/default/xui/fr/panel_groups.xml16
-rw-r--r--indra/newview/skins/default/xui/fr/panel_nearby_chat.xml9
-rw-r--r--indra/newview/skins/default/xui/fr/panel_notifications_channel.xml24
-rw-r--r--indra/newview/skins/default/xui/fr/panel_online_status.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/panel_prim_media_controls.xml4
-rw-r--r--indra/newview/skins/default/xui/fr/panel_region_general_layout.xml43
-rw-r--r--indra/newview/skins/default/xui/it/floater_customize.xml530
-rw-r--r--indra/newview/skins/default/xui/it/floater_device_settings.xml2
-rw-r--r--indra/newview/skins/default/xui/it/floater_im.xml45
-rw-r--r--indra/newview/skins/default/xui/it/floater_im_session.xml1
-rw-r--r--indra/newview/skins/default/xui/it/floater_my_friends.xml7
-rw-r--r--indra/newview/skins/default/xui/it/floater_outfit_save_as.xml12
-rw-r--r--indra/newview/skins/default/xui/it/floater_preview_classified.xml6
-rw-r--r--indra/newview/skins/default/xui/it/floater_preview_event.xml6
-rw-r--r--indra/newview/skins/default/xui/it/floater_preview_gesture_info.xml2
-rw-r--r--indra/newview/skins/default/xui/it/floater_preview_gesture_shortcut.xml15
-rw-r--r--indra/newview/skins/default/xui/it/floater_preview_gesture_steps.xml2
-rw-r--r--indra/newview/skins/default/xui/it/floater_statistics.xml2
-rw-r--r--indra/newview/skins/default/xui/it/floater_voice_controls.xml12
-rw-r--r--indra/newview/skins/default/xui/it/floater_wearable_save_as.xml11
-rw-r--r--indra/newview/skins/default/xui/it/panel_audio_device.xml25
-rw-r--r--indra/newview/skins/default/xui/it/panel_friends.xml20
-rw-r--r--indra/newview/skins/default/xui/it/panel_groups.xml17
-rw-r--r--indra/newview/skins/default/xui/it/panel_nearby_chat.xml9
-rw-r--r--indra/newview/skins/default/xui/it/panel_notes.xml8
-rw-r--r--indra/newview/skins/default/xui/it/panel_online_status.xml2
-rw-r--r--indra/newview/skins/default/xui/it/panel_prim_media_controls.xml4
-rw-r--r--indra/newview/skins/default/xui/it/panel_region_general_layout.xml43
-rw-r--r--indra/newview/skins/default/xui/ja/floater_customize.xml529
-rw-r--r--indra/newview/skins/default/xui/ja/floater_device_settings.xml2
-rw-r--r--indra/newview/skins/default/xui/ja/floater_first_time_tip.xml4
-rw-r--r--indra/newview/skins/default/xui/ja/floater_im.xml46
-rw-r--r--indra/newview/skins/default/xui/ja/floater_im_session.xml1
-rw-r--r--indra/newview/skins/default/xui/ja/floater_my_friends.xml7
-rw-r--r--indra/newview/skins/default/xui/ja/floater_outfit_save_as.xml12
-rw-r--r--indra/newview/skins/default/xui/ja/floater_preview_classified.xml6
-rw-r--r--indra/newview/skins/default/xui/ja/floater_preview_event.xml6
-rw-r--r--indra/newview/skins/default/xui/ja/floater_preview_gesture_info.xml2
-rw-r--r--indra/newview/skins/default/xui/ja/floater_preview_gesture_shortcut.xml15
-rw-r--r--indra/newview/skins/default/xui/ja/floater_preview_gesture_steps.xml2
-rw-r--r--indra/newview/skins/default/xui/ja/floater_statistics.xml2
-rw-r--r--indra/newview/skins/default/xui/ja/floater_voice_controls.xml12
-rw-r--r--indra/newview/skins/default/xui/ja/floater_wearable_save_as.xml11
-rw-r--r--indra/newview/skins/default/xui/ja/panel_audio_device.xml26
-rw-r--r--indra/newview/skins/default/xui/ja/panel_friends.xml32
-rw-r--r--indra/newview/skins/default/xui/ja/panel_groups.xml16
-rw-r--r--indra/newview/skins/default/xui/ja/panel_nearby_chat.xml9
-rw-r--r--indra/newview/skins/default/xui/ja/panel_notifications_channel.xml24
-rw-r--r--indra/newview/skins/default/xui/ja/panel_online_status.xml2
-rw-r--r--indra/newview/skins/default/xui/ja/panel_prim_media_controls.xml4
-rw-r--r--indra/newview/skins/default/xui/ja/panel_region_general_layout.xml43
-rw-r--r--indra/newview/skins/default/xui/nl/floater_customize.xml469
-rw-r--r--indra/newview/skins/default/xui/nl/floater_im.xml45
-rw-r--r--indra/newview/skins/default/xui/nl/floater_my_friends.xml7
-rw-r--r--indra/newview/skins/default/xui/nl/floater_statistics.xml2
-rw-r--r--indra/newview/skins/default/xui/nl/panel_audio_device.xml25
-rw-r--r--indra/newview/skins/default/xui/nl/panel_friends.xml20
-rw-r--r--indra/newview/skins/default/xui/nl/panel_groups.xml15
-rw-r--r--indra/newview/skins/default/xui/pl/floater_bulk_perms.xml4
-rw-r--r--indra/newview/skins/default/xui/pl/floater_customize.xml529
-rw-r--r--indra/newview/skins/default/xui/pl/floater_device_settings.xml2
-rw-r--r--indra/newview/skins/default/xui/pl/floater_im.xml45
-rw-r--r--indra/newview/skins/default/xui/pl/floater_im_session.xml1
-rw-r--r--indra/newview/skins/default/xui/pl/floater_my_friends.xml7
-rw-r--r--indra/newview/skins/default/xui/pl/floater_outfit_save_as.xml12
-rw-r--r--indra/newview/skins/default/xui/pl/floater_preview_classified.xml6
-rw-r--r--indra/newview/skins/default/xui/pl/floater_preview_event.xml6
-rw-r--r--indra/newview/skins/default/xui/pl/floater_preview_gesture_info.xml2
-rw-r--r--indra/newview/skins/default/xui/pl/floater_preview_gesture_shortcut.xml15
-rw-r--r--indra/newview/skins/default/xui/pl/floater_preview_gesture_steps.xml2
-rw-r--r--indra/newview/skins/default/xui/pl/floater_statistics.xml2
-rw-r--r--indra/newview/skins/default/xui/pl/floater_voice_controls.xml12
-rw-r--r--indra/newview/skins/default/xui/pl/floater_wearable_save_as.xml11
-rw-r--r--indra/newview/skins/default/xui/pl/panel_audio_device.xml26
-rw-r--r--indra/newview/skins/default/xui/pl/panel_friends.xml20
-rw-r--r--indra/newview/skins/default/xui/pl/panel_groups.xml18
-rw-r--r--indra/newview/skins/default/xui/pl/panel_nearby_chat.xml9
-rw-r--r--indra/newview/skins/default/xui/pl/panel_notes.xml8
-rw-r--r--indra/newview/skins/default/xui/pl/panel_online_status.xml2
-rw-r--r--indra/newview/skins/default/xui/pl/panel_prim_media_controls.xml4
-rw-r--r--indra/newview/skins/default/xui/pl/panel_region_general_layout.xml43
-rw-r--r--indra/newview/skins/default/xui/pt/floater_customize.xml530
-rw-r--r--indra/newview/skins/default/xui/pt/floater_device_settings.xml2
-rw-r--r--indra/newview/skins/default/xui/pt/floater_im.xml45
-rw-r--r--indra/newview/skins/default/xui/pt/floater_im_session.xml1
-rw-r--r--indra/newview/skins/default/xui/pt/floater_my_friends.xml7
-rw-r--r--indra/newview/skins/default/xui/pt/floater_outfit_save_as.xml11
-rw-r--r--indra/newview/skins/default/xui/pt/floater_preview_classified.xml6
-rw-r--r--indra/newview/skins/default/xui/pt/floater_preview_event.xml6
-rw-r--r--indra/newview/skins/default/xui/pt/floater_preview_gesture_info.xml2
-rw-r--r--indra/newview/skins/default/xui/pt/floater_preview_gesture_shortcut.xml15
-rw-r--r--indra/newview/skins/default/xui/pt/floater_preview_gesture_steps.xml2
-rw-r--r--indra/newview/skins/default/xui/pt/floater_statistics.xml2
-rw-r--r--indra/newview/skins/default/xui/pt/floater_voice_controls.xml12
-rw-r--r--indra/newview/skins/default/xui/pt/floater_wearable_save_as.xml11
-rw-r--r--indra/newview/skins/default/xui/pt/panel_audio_device.xml25
-rw-r--r--indra/newview/skins/default/xui/pt/panel_friends.xml20
-rw-r--r--indra/newview/skins/default/xui/pt/panel_groups.xml15
-rw-r--r--indra/newview/skins/default/xui/pt/panel_nearby_chat.xml9
-rw-r--r--indra/newview/skins/default/xui/pt/panel_notes.xml8
-rw-r--r--indra/newview/skins/default/xui/pt/panel_online_status.xml2
-rw-r--r--indra/newview/skins/default/xui/pt/panel_prim_media_controls.xml4
-rw-r--r--indra/newview/skins/default/xui/pt/panel_region_general_layout.xml43
-rw-r--r--indra/newview/tests/lllogininstance_test.cpp8
-rw-r--r--indra/newview/viewer_manifest.py7
-rw-r--r--indra/test_apps/llplugintest/llmediaplugintest.cpp88
-rw-r--r--indra/test_apps/llplugintest/llmediaplugintest.h6
-rw-r--r--indra/viewer_components/login/CMakeLists.txt22
-rw-r--r--install.xml14
-rwxr-xr-xscripts/install.py12
-rw-r--r--viewer-hg-convert.shamap101
548 files changed, 6286 insertions, 14909 deletions
diff --git a/.hgtags b/.hgtags
index 4460becff8..162c25cd1d 100644
--- a/.hgtags
+++ b/.hgtags
@@ -25,3 +25,4 @@ d6781e22543acd7e21b967209f3c6e7003d380e3 fork to viewer-2-0
c6e6324f5be1401f077ad18a4a0f6b46451c2f7b last_sprint
7076e22f9f43f479a4ea75eac447a36364bead5a beta_2.1.3
7076e22f9f43f479a4ea75eac447a36364bead5a 2.2.0-beta1
+9822eb3e25f7fe0c28ffd8aba45c507caa383cbc 2.2.0-beta2
diff --git a/BuildParams b/BuildParams
index 9c17a40d3f..898cb7bbd3 100644
--- a/BuildParams
+++ b/BuildParams
@@ -86,6 +86,7 @@ brad-parabuild.build_server_tests = false
cg_viewer-development_lenny.collect_metrics = true
cg_viewer-development_lenny.show_changes_since = 4b140ce7839d
+cg_viewer-development_lenny.email = cg@lindenlab.com
# ========================================
# gooey
diff --git a/build.sh b/build.sh
index 88faf12473..25ff0f368d 100755
--- a/build.sh
+++ b/build.sh
@@ -284,6 +284,7 @@ then
succeeded=$build_coverity
else
upload_item installer "$package" binary/octet-stream
+ upload_item quicklink "$package" binary/octet-stream
# Upload crash reporter files.
case "$last_built_variant" in
diff --git a/doc/contributions.txt b/doc/contributions.txt
index ce3878fc71..0229484123 100644
--- a/doc/contributions.txt
+++ b/doc/contributions.txt
@@ -20,6 +20,7 @@ Aimee Trescothick
SNOW-227
SNOW-570
SNOW-572
+ SNOW-575
VWR-3321
VWR-3336
VWR-3903
@@ -33,6 +34,7 @@ Aimee Trescothick
VWR-6550
VWR-6583
VWR-6482
+ VWR-6918
VWR-7109
VWR-7383
VWR-7800
@@ -59,13 +61,17 @@ Aimee Trescothick
Alejandro Rosenthal
VWR-1184
Aleric Inglewood
+ SNOW-522
+ SNOW-764
VWR-10001
VWR-10759
VWR-10837
VWR-12691
VWR-13996
VWR-14426
+ SNOW-84
SNOW-766
+ STORM-163
Ales Beaumont
VWR-9352
SNOW-240
@@ -165,6 +171,7 @@ Boroondas Gupte
SNOW-737
VWR-233
VWR-20583
+ VWR-20891
WEB-262
Bulli Schumann
CT-218
@@ -381,6 +388,7 @@ Matthew Dowd
VWR-1761
VWR-2681
McCabe Maxsted
+ SNOW-387
VWR-1318
VWR-4065
VWR-4826
@@ -541,14 +549,18 @@ Ringo Tuxing
Robin Cornelius
SNOW-108
SNOW-204
+ SNOW-287
SNOW-484
SNOW-504
SNOW-506
SNOW-507
SNOW-511
+ SNOW-512
SNOW-514
SNOW-520
SNOW-585
+ SNOW-599
+ SNOW-747
VWR-2488
VWR-9557
VWR-11128
@@ -557,6 +569,7 @@ Robin Cornelius
VWR-12758
VWR-12763
VWR-12995
+ VWR-20911
Ryozu Kojima
VWR-53
VWR-287
@@ -646,14 +659,19 @@ Teardrops Fall
VWR-5366
Techwolf Lupindo
SNOW-92
+ SNOW-592
SNOW-649
+ SNOW-650
SNOW-651
SNOW-654
SNOW-687
SNOW-680
SNOW-681
+ SNOW-685
SNOW-690
+ SNOW-746
VWR-12385
+ VWR-20893
tenebrous pau
VWR-247
Tharax Ferraris
@@ -664,6 +682,8 @@ Thickbrick Sleaford
SNOW-421
SNOW-462
SNOW-586
+ SNOW-592
+ SNOW-635
SNOW-743
VWR-7109
VWR-9287
diff --git a/indra/cmake/FindGoogleBreakpad.cmake b/indra/cmake/FindGoogleBreakpad.cmake
new file mode 100644
index 0000000000..1a0493be5e
--- /dev/null
+++ b/indra/cmake/FindGoogleBreakpad.cmake
@@ -0,0 +1,40 @@
+# -*- cmake -*-
+
+# - Find Google BreakPad
+# Find the Google BreakPad includes and library
+# This module defines
+# BREAKPAD_EXCEPTION_HANDLER_INCLUDE_DIR, where to find exception_handler.h, etc.
+# BREAKPAD_EXCEPTION_HANDLER_LIBRARIES, the libraries needed to use Google BreakPad.
+# BREAKPAD_EXCEPTION_HANDLER_FOUND, If false, do not try to use Google BreakPad.
+# also defined, but not for general use are
+# BREAKPAD_EXCEPTION_HANDLER_LIBRARY, where to find the Google BreakPad library.
+
+FIND_PATH(BREAKPAD_EXCEPTION_HANDLER_INCLUDE_DIR google_breakpad/exception_handler.h)
+
+SET(BREAKPAD_EXCEPTION_HANDLER_NAMES ${BREAKPAD_EXCEPTION_HANDLER_NAMES} breakpad_client)
+FIND_LIBRARY(BREAKPAD_EXCEPTION_HANDLER_LIBRARY
+ NAMES ${BREAKPAD_EXCEPTION_HANDLER_NAMES}
+ )
+
+IF (BREAKPAD_EXCEPTION_HANDLER_LIBRARY AND BREAKPAD_EXCEPTION_HANDLER_INCLUDE_DIR)
+ SET(BREAKPAD_EXCEPTION_HANDLER_LIBRARIES ${BREAKPAD_EXCEPTION_HANDLER_LIBRARY})
+ SET(BREAKPAD_EXCEPTION_HANDLER_FOUND "YES")
+ELSE (BREAKPAD_EXCEPTION_HANDLER_LIBRARY AND BREAKPAD_EXCEPTION_HANDLER_INCLUDE_DIR)
+ SET(BREAKPAD_EXCEPTION_HANDLER_FOUND "NO")
+ENDIF (BREAKPAD_EXCEPTION_HANDLER_LIBRARY AND BREAKPAD_EXCEPTION_HANDLER_INCLUDE_DIR)
+
+
+IF (BREAKPAD_EXCEPTION_HANDLER_FOUND)
+ IF (NOT BREAKPAD_EXCEPTION_HANDLER_FIND_QUIETLY)
+ MESSAGE(STATUS "Found Google BreakPad: ${BREAKPAD_EXCEPTION_HANDLER_LIBRARIES}")
+ ENDIF (NOT BREAKPAD_EXCEPTION_HANDLER_FIND_QUIETLY)
+ELSE (BREAKPAD_EXCEPTION_HANDLER_FOUND)
+ IF (BREAKPAD_EXCEPTION_HANDLER_FIND_REQUIRED)
+ MESSAGE(FATAL_ERROR "Could not find Google BreakPad library")
+ ENDIF (BREAKPAD_EXCEPTION_HANDLER_FIND_REQUIRED)
+ENDIF (BREAKPAD_EXCEPTION_HANDLER_FOUND)
+
+MARK_AS_ADVANCED(
+ BREAKPAD_EXCEPTION_HANDLER_LIBRARY
+ BREAKPAD_EXCEPTION_HANDLER_INCLUDE_DIR
+ )
diff --git a/indra/cmake/GoogleBreakpad.cmake b/indra/cmake/GoogleBreakpad.cmake
index 8270c0fabb..7498674042 100644
--- a/indra/cmake/GoogleBreakpad.cmake
+++ b/indra/cmake/GoogleBreakpad.cmake
@@ -2,8 +2,8 @@
include(Prebuilt)
if (STANDALONE)
- MESSAGE(FATAL_ERROR "*TODO standalone support for google breakad is unimplemented")
- # *TODO - implement this include(FindGoogleBreakpad)
+ set(BREAKPAD_EXCEPTION_HANDLER_FIND_REQUIRED ON)
+ include(FindGoogleBreakpad)
else (STANDALONE)
use_prebuilt_binary(google_breakpad)
if (DARWIN)
diff --git a/indra/cmake/PulseAudio.cmake b/indra/cmake/PulseAudio.cmake
index f8087a8083..e918de0198 100644
--- a/indra/cmake/PulseAudio.cmake
+++ b/indra/cmake/PulseAudio.cmake
@@ -1,28 +1,28 @@
# -*- cmake -*-
include(Prebuilt)
-if (STANDALONE)
- include(FindPkgConfig)
+set(PULSEAUDIO ON CACHE BOOL "Build with PulseAudio support, if available.")
- pkg_check_modules(PULSEAUDIO REQUIRED libpulse-mainloop-glib)
+if (PULSEAUDIO)
+ if (STANDALONE)
+ include(FindPkgConfig)
+
+ pkg_check_modules(PULSEAUDIO libpulse)
-elseif (LINUX)
- use_prebuilt_binary(pulseaudio)
- set(PULSEAUDIO_FOUND ON FORCE BOOL)
- set(PULSEAUDIO_INCLUDE_DIRS
- ${LIBS_PREBUILT_DIR}/include
+ elseif (LINUX)
+ use_prebuilt_binary(pulseaudio)
+ set(PULSEAUDIO_FOUND ON FORCE BOOL)
+ set(PULSEAUDIO_INCLUDE_DIRS
+ ${LIBS_PREBUILT_DIR}/include
+ )
+ # We don't need to explicitly link against pulseaudio itself, because
+ # the viewer probes for the system's copy at runtime.
+ set(PULSEAUDIO_LIBRARIES
+ # none needed!
)
- # We don't need to explicitly link against pulseaudio itself, because
- # the viewer probes for the system's copy at runtime.
- set(PULSEAUDIO_LIBRARIES
- # none needed!
- )
-endif (STANDALONE)
+ endif (STANDALONE)
+endif (PULSEAUDIO)
if (PULSEAUDIO_FOUND)
- set(PULSEAUDIO ON CACHE BOOL "Build with PulseAudio support, if available.")
-endif (PULSEAUDIO_FOUND)
-
-if (PULSEAUDIO)
add_definitions(-DLL_PULSEAUDIO_ENABLED=1)
-endif (PULSEAUDIO)
+endif (PULSEAUDIO_FOUND)
diff --git a/indra/cmake/Variables.cmake b/indra/cmake/Variables.cmake
index bfaf3f4f26..230e228c62 100644
--- a/indra/cmake/Variables.cmake
+++ b/indra/cmake/Variables.cmake
@@ -54,19 +54,20 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
set(LINUX ON BOOl FORCE)
# If someone has specified a word size, use that to determine the
- # architecture. Otherwise, let the architecture specify the word size.
+ # architecture. Otherwise, let the compiler specify the word size.
+ # Using uname will break under chroots and other cross arch compiles. RC
if (WORD_SIZE EQUAL 32)
set(ARCH i686)
elseif (WORD_SIZE EQUAL 64)
set(ARCH x86_64)
else (WORD_SIZE EQUAL 32)
- execute_process(COMMAND uname -m COMMAND sed s/i.86/i686/
- OUTPUT_VARIABLE ARCH OUTPUT_STRIP_TRAILING_WHITESPACE)
- if (ARCH STREQUAL x86_64)
- set(WORD_SIZE 64)
- else (ARCH STREQUAL x86_64)
+ if(CMAKE_SIZEOF_VOID_P MATCHES 4)
+ set(ARCH i686)
set(WORD_SIZE 32)
- endif (ARCH STREQUAL x86_64)
+ else(CMAKE_SIZEOF_VOID_P MATCHES 4)
+ set(ARCH x86_64)
+ set(WORD_SIZE 64)
+ endif(CMAKE_SIZEOF_VOID_P MATCHES 4)
endif (WORD_SIZE EQUAL 32)
set(LL_ARCH ${ARCH}_linux)
diff --git a/indra/integration_tests/llui_libtest/llui_libtest.cpp b/indra/integration_tests/llui_libtest/llui_libtest.cpp
index 713b82509e..1f15b73182 100644
--- a/indra/integration_tests/llui_libtest/llui_libtest.cpp
+++ b/indra/integration_tests/llui_libtest/llui_libtest.cpp
@@ -185,10 +185,9 @@ void export_test_floaters()
// Build a floater and output new attributes
LLXMLNodePtr output_node = new LLXMLNode();
LLFloater* floater = new LLFloater(LLSD());
- LLUICtrlFactory::getInstance()->buildFloater(floater,
- filename,
- // FALSE, // don't open floater
- output_node);
+ floater->buildFromFile( filename,
+ // FALSE, // don't open floater
+ output_node);
std::string out_filename = xui_dir + filename;
std::string::size_type extension_pos = out_filename.rfind(".xml");
out_filename.resize(extension_pos);
diff --git a/indra/integration_tests/llui_libtest/llwidgetreg.cpp b/indra/integration_tests/llui_libtest/llwidgetreg.cpp
index b4921faece..0d0d9fbff6 100644
--- a/indra/integration_tests/llui_libtest/llwidgetreg.cpp
+++ b/indra/integration_tests/llui_libtest/llwidgetreg.cpp
@@ -78,7 +78,7 @@ void LLWidgetReg::initClass(bool register_widgets)
LLDefaultChildRegistry::Register<LLMultiSlider> multi_slider_bar("multi_slider_bar");
LLDefaultChildRegistry::Register<LLMultiSliderCtrl> multi_slider("multi_slider");
LLDefaultChildRegistry::Register<LLPanel> panel("panel", &LLPanel::fromXML);
- LLDefaultChildRegistry::Register<LLLayoutStack> layout_stack("layout_stack", &LLLayoutStack::fromXML);
+ LLDefaultChildRegistry::Register<LLLayoutStack> layout_stack("layout_stack");
LLDefaultChildRegistry::Register<LLProgressBar> progress_bar("progress_bar");
LLDefaultChildRegistry::Register<LLRadioGroup> radio_group("radio_group");
LLDefaultChildRegistry::Register<LLSearchEditor> search_editor("search_editor");
diff --git a/indra/lib/python/indra/util/named_query.py b/indra/lib/python/indra/util/named_query.py
index 5c19368240..6bf956107d 100644
--- a/indra/lib/python/indra/util/named_query.py
+++ b/indra/lib/python/indra/util/named_query.py
@@ -36,14 +36,6 @@ import os.path
import re
import time
-#import sys # *TODO: remove. only used in testing.
-#import pprint # *TODO: remove. only used in testing.
-
-try:
- set = set
-except NameError:
- from sets import Set as set
-
from indra.base import llsd
from indra.base import config
@@ -195,8 +187,6 @@ class NamedQuery(object):
style. It also has to look for %:name% and :name% and
ready them for use in LIKE statements"""
if sql:
- #print >>sys.stderr, "sql:",sql
-
# This first sub is to properly escape any % signs that
# are meant to be literally passed through to mysql in the
# query. It leaves any %'s that are used for
@@ -408,7 +398,6 @@ class NamedQuery(object):
# build the query from the options available and the params
base_query = []
base_query.append(self._base_query)
- #print >>sys.stderr, "base_query:",base_query
for opt, extra_where in self._options.items():
if type(extra_where) in (dict, list, tuple):
if opt in params:
@@ -418,7 +407,6 @@ class NamedQuery(object):
base_query.append(extra_where)
if self._query_suffix:
base_query.append(self._query_suffix)
- #print >>sys.stderr, "base_query:",base_query
full_query = '\n'.join(base_query)
# Go through the query and rewrite all of the ones with the
diff --git a/indra/lib/python/uuid.py b/indra/lib/python/uuid.py
index 48dac84377..0bc21a35f8 100644
--- a/indra/lib/python/uuid.py
+++ b/indra/lib/python/uuid.py
@@ -446,8 +446,14 @@ def uuid1(node=None, clock_seq=None):
def uuid3(namespace, name):
"""Generate a UUID from the MD5 hash of a namespace UUID and a name."""
- import md5
- hash = md5.md5(namespace.bytes + name).digest()
+ try:
+ # Python 2.6
+ from hashlib import md5
+ except ImportError:
+ # Python 2.5 and earlier
+ from md5 import new as md5
+
+ hash = md5(namespace.bytes + name).digest()
return UUID(bytes=hash[:16], version=3)
def uuid4():
diff --git a/indra/llaudio/llaudioengine.cpp b/indra/llaudio/llaudioengine.cpp
index 8843acc891..1cc03bddb8 100644
--- a/indra/llaudio/llaudioengine.cpp
+++ b/indra/llaudio/llaudioengine.cpp
@@ -97,6 +97,7 @@ void LLAudioEngine::setDefaults()
}
mMasterGain = 1.f;
+ mInternalGain = 0.f;
mNextWindUpdate = 0.f;
mStreamingAudioImpl = NULL;
@@ -247,15 +248,6 @@ void LLAudioEngine::idle(F32 max_decode_time)
// Primarily does position updating, cleanup of unused audio sources.
// Also does regeneration of the current priority of each audio source.
- if (getMuted())
- {
- setInternalGain(0.f);
- }
- else
- {
- setInternalGain(getMasterGain());
- }
-
S32 i;
for (i = 0; i < MAX_BUFFERS; i++)
{
@@ -284,6 +276,12 @@ void LLAudioEngine::idle(F32 max_decode_time)
continue;
}
+ if (sourcep->isMuted())
+ {
+ ++iter;
+ continue;
+ }
+
if (!sourcep->getChannel() && sourcep->getCurrentBuffer())
{
// We could potentially play this sound if its priority is high enough.
@@ -336,9 +334,9 @@ void LLAudioEngine::idle(F32 max_decode_time)
// attached to each channel, since only those with active channels
// can have anything interesting happen with their queue? (Maybe not true)
LLAudioSource *sourcep = iter->second;
- if (!sourcep->mQueuedDatap)
+ if (!sourcep->mQueuedDatap || sourcep->isMuted())
{
- // Nothing queued, so we don't care.
+ // Muted, or nothing queued, so we don't care.
continue;
}
@@ -418,6 +416,10 @@ void LLAudioEngine::idle(F32 max_decode_time)
for (iter = mAllSources.begin(); iter != mAllSources.end(); ++iter)
{
LLAudioSource *sourcep = iter->second;
+ if (sourcep->isMuted())
+ {
+ continue;
+ }
if (sourcep->isSyncMaster())
{
if (sourcep->getPriority() > max_sm_priority)
@@ -691,15 +693,23 @@ bool LLAudioEngine::isWindEnabled()
void LLAudioEngine::setMuted(bool muted)
{
- mMuted = muted;
+ if (muted != mMuted)
+ {
+ mMuted = muted;
+ setMasterGain(mMasterGain);
+ }
enableWind(!mMuted);
}
-
void LLAudioEngine::setMasterGain(const F32 gain)
{
mMasterGain = gain;
- setInternalGain(gain);
+ F32 internal_gain = getMuted() ? 0.f : gain;
+ if (internal_gain != mInternalGain)
+ {
+ mInternalGain = internal_gain;
+ setInternalGain(mInternalGain);
+ }
}
F32 LLAudioEngine::getMasterGain()
@@ -1243,13 +1253,14 @@ LLAudioSource::LLAudioSource(const LLUUID& id, const LLUUID& owner_id, const F32
mOwnerID(owner_id),
mPriority(0.f),
mGain(gain),
- mType(type),
+ mSourceMuted(false),
mAmbient(false),
mLoop(false),
mSyncMaster(false),
mSyncSlave(false),
mQueueSounds(false),
mPlayedOnce(false),
+ mType(type),
mChannelp(NULL),
mCurrentDatap(NULL),
mQueuedDatap(NULL)
@@ -1301,6 +1312,10 @@ void LLAudioSource::updatePriority()
{
mPriority = 1.f;
}
+ else if (isMuted())
+ {
+ mPriority = 0.f;
+ }
else
{
// Priority is based on distance
@@ -1349,25 +1364,33 @@ bool LLAudioSource::setupChannel()
bool LLAudioSource::play(const LLUUID &audio_uuid)
{
+ // Special abuse of play(); don't play a sound, but kill it.
if (audio_uuid.isNull())
{
if (getChannel())
{
getChannel()->setSource(NULL);
setChannel(NULL);
- addAudioData(NULL, true);
+ if (!isMuted())
+ {
+ mCurrentDatap = NULL;
+ }
}
+ return false;
}
+
// Reset our age timeout if someone attempts to play the source.
mAgeTimer.reset();
LLAudioData *adp = gAudiop->getAudioData(audio_uuid);
-
- bool has_buffer = gAudiop->updateBufferForData(adp, audio_uuid);
-
-
addAudioData(adp);
+ if (isMuted())
+ {
+ return false;
+ }
+
+ bool has_buffer = gAudiop->updateBufferForData(adp, audio_uuid);
if (!has_buffer)
{
// Don't bother trying to set up a channel or anything, we don't have an audio buffer.
@@ -1392,10 +1415,11 @@ bool LLAudioSource::play(const LLUUID &audio_uuid)
}
-bool LLAudioSource::isDone()
+bool LLAudioSource::isDone() const
{
const F32 MAX_AGE = 60.f;
const F32 MAX_UNPLAYED_AGE = 15.f;
+ const F32 MAX_MUTED_AGE = 11.f;
if (isLoop())
{
@@ -1403,7 +1427,6 @@ bool LLAudioSource::isDone()
return false;
}
-
if (hasPendingPreloads())
{
return false;
@@ -1420,10 +1443,10 @@ bool LLAudioSource::isDone()
// This is a single-play source
if (!mChannelp)
{
- if ((elapsed > MAX_UNPLAYED_AGE) || mPlayedOnce)
+ if ((elapsed > (mSourceMuted ? MAX_MUTED_AGE : MAX_UNPLAYED_AGE)) || mPlayedOnce)
{
// We don't have a channel assigned, and it's been
- // over 5 seconds since we tried to play it. Don't bother.
+ // over 15 seconds since we tried to play it. Don't bother.
//llinfos << "No channel assigned, source is done" << llendl;
return true;
}
@@ -1449,7 +1472,7 @@ bool LLAudioSource::isDone()
if ((elapsed > MAX_UNPLAYED_AGE) || mPlayedOnce)
{
- // The sound isn't playing back after 5 seconds or we're already done playing it, kill it.
+ // The sound isn't playing back after 15 seconds or we're already done playing it, kill it.
return true;
}
diff --git a/indra/llaudio/llaudioengine.h b/indra/llaudio/llaudioengine.h
index 6a5000d7ed..30d2490635 100644
--- a/indra/llaudio/llaudioengine.h
+++ b/indra/llaudio/llaudioengine.h
@@ -118,8 +118,8 @@ public:
// Use these for temporarily muting the audio system.
// Does not change buffers, initialization, etc. but
// stops playing new sounds.
- virtual void setMuted(bool muted);
- virtual bool getMuted() const { return mMuted; }
+ void setMuted(bool muted);
+ bool getMuted() const { return mMuted; }
#ifdef USE_PLUGIN_MEDIA
LLPluginClassMedia* initializeMedia(const std::string& media_type);
#endif
@@ -239,6 +239,7 @@ protected:
LLAudioBuffer *mBuffers[MAX_BUFFERS];
F32 mMasterGain;
+ F32 mInternalGain; // Actual gain set; either mMasterGain or 0 when mMuted is true.
F32 mSecondaryGain[AUDIO_TYPE_COUNT];
F32 mNextWindUpdate;
@@ -303,7 +304,8 @@ public:
virtual void setGain(const F32 gain) { mGain = llclamp(gain, 0.f, 1.f); }
const LLUUID &getID() const { return mID; }
- bool isDone();
+ bool isDone() const;
+ bool isMuted() const { return mSourceMuted; }
LLAudioData *getCurrentData();
LLAudioData *getQueuedData();
@@ -325,6 +327,7 @@ protected:
LLUUID mOwnerID; // owner of the object playing the sound
F32 mPriority;
F32 mGain;
+ bool mSourceMuted;
bool mAmbient;
bool mLoop;
bool mSyncMaster;
diff --git a/indra/llcommon/CMakeLists.txt b/indra/llcommon/CMakeLists.txt
index 2a036df06e..902734906d 100644
--- a/indra/llcommon/CMakeLists.txt
+++ b/indra/llcommon/CMakeLists.txt
@@ -157,6 +157,7 @@ set(llcommon_HEADER_FILES
lleventemitter.h
llextendedstatus.h
llfasttimer.h
+ llfasttimer_class.h
llfile.h
llfindlocale.h
llfixedbuffer.h
@@ -251,8 +252,15 @@ set_source_files_properties(${llcommon_HEADER_FILES}
list(APPEND llcommon_SOURCE_FILES ${llcommon_HEADER_FILES})
if(LLCOMMON_LINK_SHARED)
- add_library (llcommon SHARED ${llcommon_SOURCE_FILES})
- ll_stage_sharedlib(llcommon)
+ add_library (llcommon SHARED ${llcommon_SOURCE_FILES})
+ if(NOT WORD_SIZE EQUAL 32)
+ if(WINDOWS)
+ add_definitions(/FIXED:NO)
+ else(WINDOWS) # not windows therefore gcc LINUX and DARWIN
+ add_definitions(-fPIC)
+ endif(WINDOWS)
+ endif(NOT WORD_SIZE EQUAL 32)
+ ll_stage_sharedlib(llcommon)
else(LLCOMMON_LINK_SHARED)
add_library (llcommon ${llcommon_SOURCE_FILES})
endif(LLCOMMON_LINK_SHARED)
diff --git a/indra/llcommon/llfasttimer_class.cpp b/indra/llcommon/llfasttimer_class.cpp
index bc1ae37c2b..c45921cdec 100644
--- a/indra/llcommon/llfasttimer_class.cpp
+++ b/indra/llcommon/llfasttimer_class.cpp
@@ -469,9 +469,9 @@ void LLFastTimer::NamedTimer::accumulateTimings()
int hidx = cur_frame % HISTORY_NUM;
timerp->mCountHistory[hidx] = timerp->mTotalTimeCounter;
- timerp->mCountAverage = (timerp->mCountAverage * cur_frame + timerp->mTotalTimeCounter) / (cur_frame+1);
+ timerp->mCountAverage = ((U64)timerp->mCountAverage * cur_frame + timerp->mTotalTimeCounter) / (cur_frame+1);
timerp->mCallHistory[hidx] = timerp->getFrameState().mCalls;
- timerp->mCallAverage = (timerp->mCallAverage * cur_frame + timerp->getFrameState().mCalls) / (cur_frame+1);
+ timerp->mCallAverage = ((U64)timerp->mCallAverage * cur_frame + timerp->getFrameState().mCalls) / (cur_frame+1);
}
}
}
diff --git a/indra/llcommon/llversionviewer.h b/indra/llcommon/llversionviewer.h
index ffec9ea5b1..bd65ce8573 100644
--- a/indra/llcommon/llversionviewer.h
+++ b/indra/llcommon/llversionviewer.h
@@ -29,7 +29,7 @@
const S32 LL_VERSION_MAJOR = 2;
const S32 LL_VERSION_MINOR = 2;
-const S32 LL_VERSION_PATCH = 0;
+const S32 LL_VERSION_PATCH = 1;
const S32 LL_VERSION_BUILD = 0;
const char * const LL_CHANNEL = "Second Life Developer";
diff --git a/indra/llcommon/stdenums.h b/indra/llcommon/stdenums.h
index 5931ba67c2..9f86de124e 100644
--- a/indra/llcommon/stdenums.h
+++ b/indra/llcommon/stdenums.h
@@ -113,8 +113,8 @@ enum EObjectPropertiesExtraID
enum EAddPosition
{
ADD_TOP,
- ADD_SORTED,
- ADD_BOTTOM
+ ADD_BOTTOM,
+ ADD_DEFAULT
};
enum LLGroupChange
diff --git a/indra/llplugin/CMakeLists.txt b/indra/llplugin/CMakeLists.txt
index fdd510b389..d3a73058c4 100644
--- a/indra/llplugin/CMakeLists.txt
+++ b/indra/llplugin/CMakeLists.txt
@@ -51,6 +51,14 @@ set(llplugin_HEADER_FILES
set_source_files_properties(${llplugin_HEADER_FILES}
PROPERTIES HEADER_FILE_ONLY TRUE)
+if(NOT WORD_SIZE EQUAL 32)
+ if(WINDOWS)
+ add_definitions(/FIXED:NO)
+ else(WINDOWS) # not windows therefore gcc LINUX and DARWIN
+ add_definitions(-fPIC)
+ endif(WINDOWS)
+endif(NOT WORD_SIZE EQUAL 32)
+
list(APPEND llplugin_SOURCE_FILES ${llplugin_HEADER_FILES})
add_library (llplugin ${llplugin_SOURCE_FILES})
diff --git a/indra/llplugin/llpluginclassmedia.cpp b/indra/llplugin/llpluginclassmedia.cpp
index 9ce9ee2101..69ed0fb09c 100644
--- a/indra/llplugin/llpluginclassmedia.cpp
+++ b/indra/llplugin/llpluginclassmedia.cpp
@@ -74,6 +74,7 @@ bool LLPluginClassMedia::init(const std::string &launcher_filename, const std::s
// Queue up the media init message -- it will be sent after all the currently queued messages.
LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "init");
+ message.setValue("target", mTarget);
sendMessage(message);
mPlugin->init(launcher_filename, plugin_filename, debug);
@@ -143,7 +144,7 @@ void LLPluginClassMedia::reset()
mProgressPercent = 0;
mClickURL.clear();
mClickTarget.clear();
- mClickTargetType = TARGET_NONE;
+ mClickUUID.clear();
// media_time class
mCurrentTime = 0.0f;
@@ -669,6 +670,18 @@ F64 LLPluginClassMedia::getCPUUsage()
return result;
}
+void LLPluginClassMedia::sendPickFileResponse(const std::string &file)
+{
+ LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "pick_file_response");
+ message.setValue("file", file);
+ if(mPlugin->isBlocked())
+ {
+ // If the plugin sent a blocking pick-file request, the response should unblock it.
+ message.setValueBoolean("blocking_response", true);
+ }
+ sendMessage(message);
+}
+
void LLPluginClassMedia::cut()
{
LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "edit_cut");
@@ -715,24 +728,9 @@ void LLPluginClassMedia::setJavascriptEnabled(const bool enabled)
sendMessage(message);
}
-LLPluginClassMedia::ETargetType getTargetTypeFromLLQtWebkit(int target_type)
+void LLPluginClassMedia::setTarget(const std::string &target)
{
- // convert a LinkTargetType value from llqtwebkit to an ETargetType
- // so that we don't expose the llqtwebkit header in viewer code
- switch (target_type)
- {
- case LLQtWebKit::LTT_TARGET_NONE:
- return LLPluginClassMedia::TARGET_NONE;
-
- case LLQtWebKit::LTT_TARGET_BLANK:
- return LLPluginClassMedia::TARGET_BLANK;
-
- case LLQtWebKit::LTT_TARGET_EXTERNAL:
- return LLPluginClassMedia::TARGET_EXTERNAL;
-
- default:
- return LLPluginClassMedia::TARGET_OTHER;
- }
+ mTarget = target;
}
/* virtual */
@@ -945,6 +943,10 @@ void LLPluginClassMedia::receivePluginMessage(const LLPluginMessage &message)
mMediaName = message.getValue("name");
mediaEvent(LLPluginClassMediaOwner::MEDIA_EVENT_NAME_CHANGED);
}
+ else if(message_name == "pick_file")
+ {
+ mediaEvent(LLPluginClassMediaOwner::MEDIA_EVENT_PICK_FILE_REQUEST);
+ }
else
{
LL_WARNS("Plugin") << "Unknown " << message_name << " class message: " << message_name << LL_ENDL;
@@ -987,15 +989,13 @@ void LLPluginClassMedia::receivePluginMessage(const LLPluginMessage &message)
{
mClickURL = message.getValue("uri");
mClickTarget = message.getValue("target");
- U32 target_type = message.getValueU32("target_type");
- mClickTargetType = ::getTargetTypeFromLLQtWebkit(target_type);
+ mClickUUID = message.getValue("uuid");
mediaEvent(LLPluginClassMediaOwner::MEDIA_EVENT_CLICK_LINK_HREF);
}
else if(message_name == "click_nofollow")
{
mClickURL = message.getValue("uri");
mClickTarget.clear();
- mClickTargetType = TARGET_NONE;
mediaEvent(LLPluginClassMediaOwner::MEDIA_EVENT_CLICK_LINK_NOFOLLOW);
}
else if(message_name == "cookie_set")
@@ -1005,6 +1005,20 @@ void LLPluginClassMedia::receivePluginMessage(const LLPluginMessage &message)
mOwner->handleCookieSet(this, message.getValue("cookie"));
}
}
+ else if(message_name == "close_request")
+ {
+ mediaEvent(LLPluginClassMediaOwner::MEDIA_EVENT_CLOSE_REQUEST);
+ }
+ else if(message_name == "geometry_change")
+ {
+ mClickUUID = message.getValue("uuid");
+ mGeometryX = message.getValueS32("x");
+ mGeometryY = message.getValueS32("y");
+ mGeometryWidth = message.getValueS32("width");
+ mGeometryHeight = message.getValueS32("height");
+
+ mediaEvent(LLPluginClassMediaOwner::MEDIA_EVENT_GEOMETRY_CHANGE);
+ }
else
{
LL_WARNS("Plugin") << "Unknown " << message_name << " class message: " << message_name << LL_ENDL;
@@ -1159,6 +1173,25 @@ void LLPluginClassMedia::setBrowserUserAgent(const std::string& user_agent)
sendMessage(message);
}
+void LLPluginClassMedia::proxyWindowOpened(const std::string &target, const std::string &uuid)
+{
+ LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER, "proxy_window_opened");
+
+ message.setValue("target", target);
+ message.setValue("uuid", uuid);
+
+ sendMessage(message);
+}
+
+void LLPluginClassMedia::proxyWindowClosed(const std::string &uuid)
+{
+ LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER, "proxy_window_closed");
+
+ message.setValue("uuid", uuid);
+
+ sendMessage(message);
+}
+
void LLPluginClassMedia::crashPlugin()
{
LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_INTERNAL, "crash");
diff --git a/indra/llplugin/llpluginclassmedia.h b/indra/llplugin/llpluginclassmedia.h
index ee53f3a4da..9cb67fe909 100644
--- a/indra/llplugin/llpluginclassmedia.h
+++ b/indra/llplugin/llpluginclassmedia.h
@@ -156,6 +156,8 @@ public:
void setLowPrioritySizeLimit(int size);
F64 getCPUUsage();
+
+ void sendPickFileResponse(const std::string &file);
// Valid after a MEDIA_EVENT_CURSOR_CHANGED event
std::string getCursorName() const { return mCursorName; };
@@ -176,7 +178,8 @@ public:
void setLanguageCode(const std::string &language_code);
void setPluginsEnabled(const bool enabled);
void setJavascriptEnabled(const bool enabled);
-
+ void setTarget(const std::string &target);
+
///////////////////////////////////
// media browser class functions
bool pluginSupportsMediaBrowser(void);
@@ -193,6 +196,8 @@ public:
void browse_back();
void set_status_redirect(int code, const std::string &url);
void setBrowserUserAgent(const std::string& user_agent);
+ void proxyWindowOpened(const std::string &target, const std::string &uuid);
+ void proxyWindowClosed(const std::string &uuid);
// This is valid after MEDIA_EVENT_NAVIGATE_BEGIN or MEDIA_EVENT_NAVIGATE_COMPLETE
std::string getNavigateURI() const { return mNavigateURI; };
@@ -218,16 +223,14 @@ public:
// This is valid after MEDIA_EVENT_CLICK_LINK_HREF
std::string getClickTarget() const { return mClickTarget; };
- typedef enum
- {
- TARGET_NONE, // empty href target string
- TARGET_BLANK, // target to open link in user's preferred browser
- TARGET_EXTERNAL, // target to open link in external browser
- TARGET_OTHER // nonempty and unsupported target type
- }ETargetType;
-
- // This is valid after MEDIA_EVENT_CLICK_LINK_HREF
- ETargetType getClickTargetType() const { return mClickTargetType; };
+ // This is valid during MEDIA_EVENT_CLICK_LINK_HREF and MEDIA_EVENT_GEOMETRY_CHANGE
+ std::string getClickUUID() const { return mClickUUID; };
+
+ // These are valid during MEDIA_EVENT_GEOMETRY_CHANGE
+ S32 getGeometryX() const { return mGeometryX; };
+ S32 getGeometryY() const { return mGeometryY; };
+ S32 getGeometryWidth() const { return mGeometryWidth; };
+ S32 getGeometryHeight() const { return mGeometryHeight; };
std::string getMediaName() const { return mMediaName; };
std::string getMediaDescription() const { return mMediaDescription; };
@@ -347,6 +350,8 @@ protected:
LLColor4 mBackgroundColor;
+ std::string mTarget;
+
/////////////////////////////////////////
// media_browser class
std::string mNavigateURI;
@@ -359,7 +364,11 @@ protected:
std::string mLocation;
std::string mClickURL;
std::string mClickTarget;
- ETargetType mClickTargetType;
+ std::string mClickUUID;
+ S32 mGeometryX;
+ S32 mGeometryY;
+ S32 mGeometryWidth;
+ S32 mGeometryHeight;
/////////////////////////////////////////
// media_time class
diff --git a/indra/llplugin/llpluginclassmediaowner.h b/indra/llplugin/llpluginclassmediaowner.h
index b48a5ca4ac..c9efff216c 100644
--- a/indra/llplugin/llpluginclassmediaowner.h
+++ b/indra/llplugin/llpluginclassmediaowner.h
@@ -54,6 +54,9 @@ public:
MEDIA_EVENT_LOCATION_CHANGED, // browser location (URL) has changed (maybe due to internal navagation/frames/etc)
MEDIA_EVENT_CLICK_LINK_HREF, // I'm not entirely sure what the semantics of these two are
MEDIA_EVENT_CLICK_LINK_NOFOLLOW,
+ MEDIA_EVENT_CLOSE_REQUEST, // The plugin requested its window be closed (currently hooked up to javascript window.close in webkit)
+ MEDIA_EVENT_PICK_FILE_REQUEST, // The plugin wants the user to pick a file
+ MEDIA_EVENT_GEOMETRY_CHANGE, // The plugin requested its window geometry be changed (per the javascript window interface)
MEDIA_EVENT_PLUGIN_FAILED_LAUNCH, // The plugin failed to launch
MEDIA_EVENT_PLUGIN_FAILED // The plugin died unexpectedly
diff --git a/indra/llplugin/slplugin/slplugin.cpp b/indra/llplugin/slplugin/slplugin.cpp
index 7d69e1c5cd..516a58db88 100644
--- a/indra/llplugin/slplugin/slplugin.cpp
+++ b/indra/llplugin/slplugin/slplugin.cpp
@@ -281,7 +281,7 @@ int main(int argc, char **argv)
}
// Check for a change in this process's frontmost window.
- if(FrontWindow() != front_window)
+ if(GetFrontWindowOfClass(kAllWindowClasses, true) != front_window)
{
ProcessSerialNumber self = { 0, kCurrentProcess };
ProcessSerialNumber parent = { 0, kNoProcess };
@@ -307,7 +307,7 @@ int main(int argc, char **argv)
}
}
- if((FrontWindow() != NULL) && (front_window == NULL))
+ if((GetFrontWindowOfClass(kAllWindowClasses, true) != NULL) && (front_window == NULL))
{
// Opening the first window
@@ -319,7 +319,7 @@ int main(int argc, char **argv)
if(layer_group)
{
- SetWindowGroup(FrontWindow(), layer_group);
+ SetWindowGroup(GetFrontWindowOfClass(kAllWindowClasses, true), layer_group);
}
if(parent_is_front_process)
@@ -328,9 +328,9 @@ int main(int argc, char **argv)
(void) SetFrontProcess( &self );
}
- ActivateWindow(FrontWindow(), true);
+ ActivateWindow(GetFrontWindowOfClass(kAllWindowClasses, true), true);
}
- else if((FrontWindow() == NULL) && (front_window != NULL))
+ else if((GetFrontWindowOfClass(kAllWindowClasses, true) == NULL) && (front_window != NULL))
{
// Closing the last window
@@ -350,7 +350,7 @@ int main(int argc, char **argv)
window_hack_state = 2;
}
- front_window = FrontWindow();
+ front_window = GetFrontWindowOfClass(kAllWindowClasses, true);
}
}
diff --git a/indra/llrender/llfontgl.cpp b/indra/llrender/llfontgl.cpp
index 386bb987f9..13008292f6 100644
--- a/indra/llrender/llfontgl.cpp
+++ b/indra/llrender/llfontgl.cpp
@@ -977,37 +977,43 @@ LLFontGL::VAlign LLFontGL::vAlignFromName(const std::string& name)
//static
LLFontGL* LLFontGL::getFontMonospace()
{
- return getFont(LLFontDescriptor("Monospace","Monospace",0));
+ static LLFontGL* fontp = getFont(LLFontDescriptor("Monospace","Monospace",0));
+ return fontp;
}
//static
LLFontGL* LLFontGL::getFontSansSerifSmall()
{
- return getFont(LLFontDescriptor("SansSerif","Small",0));
+ static LLFontGL* fontp = getFont(LLFontDescriptor("SansSerif","Small",0));
+ return fontp;
}
//static
LLFontGL* LLFontGL::getFontSansSerif()
{
- return getFont(LLFontDescriptor("SansSerif","Medium",0));
+ static LLFontGL* fontp = getFont(LLFontDescriptor("SansSerif","Medium",0));
+ return fontp;
}
//static
LLFontGL* LLFontGL::getFontSansSerifBig()
{
- return getFont(LLFontDescriptor("SansSerif","Large",0));
+ static LLFontGL* fontp = getFont(LLFontDescriptor("SansSerif","Large",0));
+ return fontp;
}
//static
LLFontGL* LLFontGL::getFontSansSerifHuge()
{
- return getFont(LLFontDescriptor("SansSerif","Huge",0));
+ static LLFontGL* fontp = getFont(LLFontDescriptor("SansSerif","Large",0));
+ return fontp;
}
//static
LLFontGL* LLFontGL::getFontSansSerifBold()
{
- return getFont(LLFontDescriptor("SansSerif","Medium",BOLD));
+ static LLFontGL* fontp = getFont(LLFontDescriptor("SansSerif","Medium",BOLD));
+ return fontp;
}
//static
diff --git a/indra/llui/CMakeLists.txt b/indra/llui/CMakeLists.txt
index 8e78a5fefd..e98201ea63 100644
--- a/indra/llui/CMakeLists.txt
+++ b/indra/llui/CMakeLists.txt
@@ -158,6 +158,7 @@ set(llui_HEADER_FILES
llnotifications.h
llnotificationslistener.h
llnotificationsutil.h
+ llnotificationtemplate.h
llpanel.h
llprogressbar.h
llradiogroup.h
diff --git a/indra/llui/llaccordionctrl.cpp b/indra/llui/llaccordionctrl.cpp
index f9ffaaa646..d636161baf 100644
--- a/indra/llui/llaccordionctrl.cpp
+++ b/indra/llui/llaccordionctrl.cpp
@@ -83,7 +83,7 @@ LLAccordionCtrl::LLAccordionCtrl() : LLPanel()
mSingleExpansion = false;
mFitParent = false;
- LLUICtrlFactory::getInstance()->buildPanel(this, "accordion_parent.xml");
+ buildFromFile( "accordion_parent.xml");
}
//---------------------------------------------------------------------------------
diff --git a/indra/llui/llaccordionctrltab.cpp b/indra/llui/llaccordionctrltab.cpp
index b7da5f4a1b..e28ef1f25d 100644
--- a/indra/llui/llaccordionctrltab.cpp
+++ b/indra/llui/llaccordionctrltab.cpp