Skip to content
Snippets Groups Projects
  • Adam Moss's avatar
    406927f6
    Merge a big bunch of fixes from maint-viewer. Hooray. · 406927f6
    Adam Moss authored
    svn merge -r136066:136073 svn+ssh://svn.lindenlab.com/svn/linden/branches/maint-viewer/maint-viewer-24-qa-9
    
    DEV-8553 New Server Tools - Prep Land For Sale
    DEV-32942 (QAR-1521) Bad border crossings or TP / Ruthing issues
    DEV-32942 (QAR-1521) Bad border crossings or TP / Ruthing issues
    DEV-33239 VWR-13816: Resizing the Search Window Causes the Results to Refresh back to First Page
    DEV-27746 Running a dev build of Second Life will make console window show up on non-dev builds (Windows)
    DEV-33209 Linux 1.24.0.120778 client fails to run
    DEV-29123 SVC-3871: Crash of viewer when clicking on ghost objects at (0,0,0) on a sim
    DEV-35433 Attempting to upload wrong file type crashes viewer
    DEV-33499 viewer2009 is not using KDU
    DEV-33912 Griefing viewer crashes others' viewers with malformed sound files
    DEV-3784 VWR-138: Animation Priority not working correctly, Can't create new AOs
    DEV-20678 VWR-9069: Region variable says 'Region Name' in AR if no object is selected
    DEV-19934 Help->About Second Life doesn't differentiate between 32- and 64-bit Vista
    DEV-6604 Restored folders have 'Purge Item' and 'Restore Item' options
    DEV-12867 VWR-5717: Selected Text is not replaced by Input text when Japanese IME is on
    DEV-11894 Notecards/Texture windows don't open completely when opened from inventory
    DEV-10641 VWR-4955: Local Chat doesn't show end of last conversation
    DEV-30039 VWR-12620: Viewer build fails on Linux when compiled with -O2 (--type=Release)
    DEV-20944 VWR-9065: (intermittent) Right Click >profile on avatar does not display profile
    DEV-24828 Menu accelerator prefixes shouldn't be hard-coded
    DEV-34529 VWR-14267: Clicking send in an IM window does not add the sent text to the line editor history
    DEV-34124 Invite to group, search by name will not show resident if their first name is two characters
    DEV-20930 VWR-9248: On Mac: the "--url" option causes a command line parsing error
    DEV-35306 Adult keyword filter triggers multiple warnings
    DEV-35503 VWR-3595: "Second Life requires True Color (32-bit) to run in a window" message is incorrect
    DEV-35656 VWR-12995: FTBFS: error: format '%-3d' expects type 'int', but argument 3 has type 'size_t'
    DEV-30043 VWR-12533: Linux viewer build for OpenAL fails during packaging unless FMOD library is available
    DEV-31898 VWR-13202: Right clicking mouse triggers arrow key control events
    DEV-32610 Keyboard shortcuts on OSX viewer overridden by OSX
    DEV-27067 Coverity Prevent: EVALUATION_ORDER defects
    DEV-26188 VWR-2242: Specially formatted .BVH file can cause avatar distortion
    DEV-25475 About Land dialog no longer shows Area: field
    DEV-19897 OSX Viewer Installer (for an RC) opens with poor positioning
    DEV-22837 Inventory> Search Recent Items highlighting incorrect characters
    DEV-21709 VWR-9377: Mapping will default to leave exact sim name listing first. (Searching Gar forces Gar to come up and not Garden of Dreams)
    DEV-23079 implement volume serial for linux client
    DEV-13930 VWR-6432: Space Navigator operation with vehicles is broken
    DEV-27666 VWR-10829: Linux Viewer: CLICK_ACTION_PAY shows CLICK_ACTION_PLAY icon
    DEV-23670 Viewer crashes on startup if installed into a custom folder with Korean, Japanese or Chinese characters in path
    DEV-19313 VWR-8454: PARCEL_FLAG_ALLOW_CREATE_GROUP_OBJECTS not highlighted in script editor
    DEV-19918 VWR-8885: Move character/*.xml files to source bundle
    DEV-25555 VWR-11172: A source coding mistake prevents number-pad keys from specifying Ctrl+digit shortcuts on Windows
    DEV-8536 VWR-4057: Multi-line chat display bug - first character in line missing
    DEV-29592 Mac LLFastTimer uses wall clock instead of Intel PMU
    DEV-29644 VWR-12587: Cmake install target has a hard coded secondlife-bin reference remaining
    DEV-25320 VWR-11128: Python not always detected by develop.py
    DEV-30040 VWR-12617: Poor type name that violates Coding Standard breaks compatibility with system header files
    DEV-30380 indra/newview/res-sdl/toolpay.BMP is modified during ./develop.py configure
    DEV-31247 VWR-12763: non-portable printf specifier used with size_t causes FTBFS on 64bit (due to -Werror)
    DEV-29565 VWR-12569: A comment in lluistring.h contains undefined UTF-8 code sequences
    DEV-22100 VWR-9620: send_parcel_select_objects in newview/llfloaterland.cpp uses the wrong datatype for the ReturnType field causing a warning
    DEV-31911 Selected objects / primitives should be greyed out when nothing is selected
    DEV-3667 Windows: Accelerator keys should be "Ctrl+X" rather than "Ctrl-X"
    DEV-27223 disable gstreamer on 64-bit linux
    DEV-8172 We Need a Linden Sale Option to Sell Land to Anyone
    DEV-25511 VWR-10311: Enable LipSync by default
    DEV-20443 Revamp group creation confirmation dialog to be more communicative
    DEV-20132 VWR-7800: Joystick / SpaceNavigator. Camera should remain in position when exiting flycam mode into avatar mode.
    DEV-18420 VWR-8393: Have build scripts copy fmod from an external location
    DEV-24841 VWR-10717: Right Space Navigator button should toggle fly in avatar movment, not jump/flyup.
    DEV-28457 change auto-populate value in buy L$ window from 1000 to 2000
    DEV-15545 VWR-3725: Please add resize option to the SEARCH window UI
    406927f6
    History
    Merge a big bunch of fixes from maint-viewer. Hooray.
    Adam Moss authored
    svn merge -r136066:136073 svn+ssh://svn.lindenlab.com/svn/linden/branches/maint-viewer/maint-viewer-24-qa-9
    
    DEV-8553 New Server Tools - Prep Land For Sale
    DEV-32942 (QAR-1521) Bad border crossings or TP / Ruthing issues
    DEV-32942 (QAR-1521) Bad border crossings or TP / Ruthing issues
    DEV-33239 VWR-13816: Resizing the Search Window Causes the Results to Refresh back to First Page
    DEV-27746 Running a dev build of Second Life will make console window show up on non-dev builds (Windows)
    DEV-33209 Linux 1.24.0.120778 client fails to run
    DEV-29123 SVC-3871: Crash of viewer when clicking on ghost objects at (0,0,0) on a sim
    DEV-35433 Attempting to upload wrong file type crashes viewer
    DEV-33499 viewer2009 is not using KDU
    DEV-33912 Griefing viewer crashes others' viewers with malformed sound files
    DEV-3784 VWR-138: Animation Priority not working correctly, Can't create new AOs
    DEV-20678 VWR-9069: Region variable says 'Region Name' in AR if no object is selected
    DEV-19934 Help->About Second Life doesn't differentiate between 32- and 64-bit Vista
    DEV-6604 Restored folders have 'Purge Item' and 'Restore Item' options
    DEV-12867 VWR-5717: Selected Text is not replaced by Input text when Japanese IME is on
    DEV-11894 Notecards/Texture windows don't open completely when opened from inventory
    DEV-10641 VWR-4955: Local Chat doesn't show end of last conversation
    DEV-30039 VWR-12620: Viewer build fails on Linux when compiled with -O2 (--type=Release)
    DEV-20944 VWR-9065: (intermittent) Right Click >profile on avatar does not display profile
    DEV-24828 Menu accelerator prefixes shouldn't be hard-coded
    DEV-34529 VWR-14267: Clicking send in an IM window does not add the sent text to the line editor history
    DEV-34124 Invite to group, search by name will not show resident if their first name is two characters
    DEV-20930 VWR-9248: On Mac: the "--url" option causes a command line parsing error
    DEV-35306 Adult keyword filter triggers multiple warnings
    DEV-35503 VWR-3595: "Second Life requires True Color (32-bit) to run in a window" message is incorrect
    DEV-35656 VWR-12995: FTBFS: error: format '%-3d' expects type 'int', but argument 3 has type 'size_t'
    DEV-30043 VWR-12533: Linux viewer build for OpenAL fails during packaging unless FMOD library is available
    DEV-31898 VWR-13202: Right clicking mouse triggers arrow key control events
    DEV-32610 Keyboard shortcuts on OSX viewer overridden by OSX
    DEV-27067 Coverity Prevent: EVALUATION_ORDER defects
    DEV-26188 VWR-2242: Specially formatted .BVH file can cause avatar distortion
    DEV-25475 About Land dialog no longer shows Area: field
    DEV-19897 OSX Viewer Installer (for an RC) opens with poor positioning
    DEV-22837 Inventory> Search Recent Items highlighting incorrect characters
    DEV-21709 VWR-9377: Mapping will default to leave exact sim name listing first. (Searching Gar forces Gar to come up and not Garden of Dreams)
    DEV-23079 implement volume serial for linux client
    DEV-13930 VWR-6432: Space Navigator operation with vehicles is broken
    DEV-27666 VWR-10829: Linux Viewer: CLICK_ACTION_PAY shows CLICK_ACTION_PLAY icon
    DEV-23670 Viewer crashes on startup if installed into a custom folder with Korean, Japanese or Chinese characters in path
    DEV-19313 VWR-8454: PARCEL_FLAG_ALLOW_CREATE_GROUP_OBJECTS not highlighted in script editor
    DEV-19918 VWR-8885: Move character/*.xml files to source bundle
    DEV-25555 VWR-11172: A source coding mistake prevents number-pad keys from specifying Ctrl+digit shortcuts on Windows
    DEV-8536 VWR-4057: Multi-line chat display bug - first character in line missing
    DEV-29592 Mac LLFastTimer uses wall clock instead of Intel PMU
    DEV-29644 VWR-12587: Cmake install target has a hard coded secondlife-bin reference remaining
    DEV-25320 VWR-11128: Python not always detected by develop.py
    DEV-30040 VWR-12617: Poor type name that violates Coding Standard breaks compatibility with system header files
    DEV-30380 indra/newview/res-sdl/toolpay.BMP is modified during ./develop.py configure
    DEV-31247 VWR-12763: non-portable printf specifier used with size_t causes FTBFS on 64bit (due to -Werror)
    DEV-29565 VWR-12569: A comment in lluistring.h contains undefined UTF-8 code sequences
    DEV-22100 VWR-9620: send_parcel_select_objects in newview/llfloaterland.cpp uses the wrong datatype for the ReturnType field causing a warning
    DEV-31911 Selected objects / primitives should be greyed out when nothing is selected
    DEV-3667 Windows: Accelerator keys should be "Ctrl+X" rather than "Ctrl-X"
    DEV-27223 disable gstreamer on 64-bit linux
    DEV-8172 We Need a Linden Sale Option to Sell Land to Anyone
    DEV-25511 VWR-10311: Enable LipSync by default
    DEV-20443 Revamp group creation confirmation dialog to be more communicative
    DEV-20132 VWR-7800: Joystick / SpaceNavigator. Camera should remain in position when exiting flycam mode into avatar mode.
    DEV-18420 VWR-8393: Have build scripts copy fmod from an external location
    DEV-24841 VWR-10717: Right Space Navigator button should toggle fly in avatar movment, not jump/flyup.
    DEV-28457 change auto-populate value in buy L$ window from 1000 to 2000
    DEV-15545 VWR-3725: Please add resize option to the SEARCH window UI
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
llappviewerlinux_api_dbus.cpp 3.81 KiB
/** 
 * @file llappviewerlinux_api_dbus.cpp
 * @brief dynamic DBus symbol-grabbing code
 *
 * $LicenseInfo:firstyear=2008&license=viewergpl$
 * 
 * Copyright (c) 2008-2009, Linden Research, Inc.
 * 
 * Second Life Viewer Source Code
 * The source code in this file ("Source Code") is provided by Linden Lab
 * to you under the terms of the GNU General Public License, version 2.0
 * ("GPL"), unless you have obtained a separate licensing agreement
 * ("Other License"), formally executed by you and Linden Lab.  Terms of
 * the GPL can be found in doc/GPL-license.txt in this distribution, or
 * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
 * 
 * There are special exceptions to the terms and conditions of the GPL as
 * it is applied to this Source Code. View the full text of the exception
 * in the file doc/FLOSS-exception.txt in this software distribution, or
 * online at
 * http://secondlifegrid.net/programs/open_source/licensing/flossexception
 * 
 * By copying, modifying or distributing this software, you acknowledge
 * that you have read and understood your obligations described above,
 * and agree to abide by those obligations.
 * 
 * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
 * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
 * COMPLETENESS OR PERFORMANCE.
 * $/LicenseInfo$
 */

#if LL_DBUS_ENABLED

#include "linden_common.h"

extern "C" {
#include <dbus/dbus-glib.h>

#include "apr_pools.h"
#include "apr_dso.h"
}

#define DEBUGMSG(...) do { lldebugs << llformat(__VA_ARGS__) << llendl; } while(0)
#define INFOMSG(...) do { llinfos << llformat(__VA_ARGS__) << llendl; } while(0)
#define WARNMSG(...) do { llwarns << llformat(__VA_ARGS__) << llendl; } while(0)

#define LL_DBUS_SYM(REQUIRED, DBUSSYM, RTN, ...) RTN (*ll##DBUSSYM)(__VA_ARGS__) = NULL
#include "llappviewerlinux_api_dbus_syms_raw.inc"
#undef LL_DBUS_SYM

static bool sSymsGrabbed = false;
static apr_pool_t *sSymDBUSDSOMemoryPool = NULL;
static apr_dso_handle_t *sSymDBUSDSOHandleG = NULL;

bool grab_dbus_syms(std::string dbus_dso_name)
{
	if (sSymsGrabbed)
	{
		// already have grabbed good syms
		return TRUE;
	}

	bool sym_error = false;
	bool rtn = false;
	apr_status_t rv;
	apr_dso_handle_t *sSymDBUSDSOHandle = NULL;

#define LL_DBUS_SYM(REQUIRED, DBUSSYM, RTN, ...) do{rv = apr_dso_sym((apr_dso_handle_sym_t*)&ll##DBUSSYM, sSymDBUSDSOHandle, #DBUSSYM); if (rv != APR_SUCCESS) {INFOMSG("Failed to grab symbol: %s", #DBUSSYM); if (REQUIRED) sym_error = true;} else DEBUGMSG("grabbed symbol: %s from %p", #DBUSSYM, (void*)ll##DBUSSYM);}while(0)
	//attempt to load the shared library
	apr_pool_create(&sSymDBUSDSOMemoryPool, NULL);
  
	if ( APR_SUCCESS == (rv = apr_dso_load(&sSymDBUSDSOHandle,
					       dbus_dso_name.c_str(),
					       sSymDBUSDSOMemoryPool) ))
	{
		INFOMSG("Found DSO: %s", dbus_dso_name.c_str());

#include "llappviewerlinux_api_dbus_syms_raw.inc"
      
		if ( sSymDBUSDSOHandle )
		{
			sSymDBUSDSOHandleG = sSymDBUSDSOHandle;
			sSymDBUSDSOHandle = NULL;
		}
      
		rtn = !sym_error;
	}
	else
	{
		INFOMSG("Couldn't load DSO: %s", dbus_dso_name.c_str());
		rtn = false; // failure
	}

	if (sym_error)
	{
		WARNMSG("Failed to find necessary symbols in DBUS-GLIB libraries.");
	}
#undef LL_DBUS_SYM

	sSymsGrabbed = rtn;
	return rtn;
}


void ungrab_dbus_syms()
{ 
	// should be safe to call regardless of whether we've
	// actually grabbed syms.

	if ( sSymDBUSDSOHandleG )
	{
		apr_dso_unload(sSymDBUSDSOHandleG);
		sSymDBUSDSOHandleG = NULL;
	}
	
	if ( sSymDBUSDSOMemoryPool )
	{
		apr_pool_destroy(sSymDBUSDSOMemoryPool);
		sSymDBUSDSOMemoryPool = NULL;
	}
	
	// NULL-out all of the symbols we'd grabbed
#define LL_DBUS_SYM(REQUIRED, DBUSSYM, RTN, ...) do{ll##DBUSSYM = NULL;}while(0)
#include "llappviewerlinux_api_dbus_syms_raw.inc"
#undef LL_DBUS_SYM

	sSymsGrabbed = false;
}

#endif // LL_DBUS_ENABLED