2016-01-07 08:17:16 -05:00
// Copyright 1998-2016 Epic Games, Inc. All Rights Reserved.
2015-09-03 20:46:02 -04:00
# include "LinuxCommonStartup.h"
# include "ExceptionHandling.h"
# include "LinuxPlatformCrashContext.h"
# include "ModuleManager.h"
2015-09-07 16:26:02 -04:00
# include "EngineVersion.h"
2015-09-03 20:46:02 -04:00
# include <locale.h>
# include <sys/resource.h>
static FString GSavedCommandLine ;
extern int32 GuardedMain ( const TCHAR * CmdLine ) ;
extern void LaunchStaticShutdownAfterError ( ) ;
Copying //UE4/Orion-Staging to //UE4/Main (Origin: //Orion/Dev-General @ 2879808)
==========================
MAJOR FEATURES + CHANGES
==========================
#lockdown Nick.Penwarden
Change 2879705 on 2016/02/24 by Nick.Darnell
Editor - Tweaking some comments.
#tests n/a
#rb n/a
Change 2879674 on 2016/02/24 by Nick.Darnell
Editor - The editor now supports many new methods of opening new asset editors. You can choose where tabs open with a great deal more options in Editor Preferences > Appearance > Asset Editor Open Location. This will reset the 'always open asset editors in new windows' option, it completely replaces and enchances that option.
#tests Ran the editor, tried each option and they all seem to do what I want.
#rb matt.kuhlenschmidt
Change 2879661 on 2016/02/24 by Jamie.Dale
More general fixes for dialogue waves
- The localization key now uses a hash of the speaker and target voice GUIDs to help keep them short.
- The localization key can now be user customized, and contains a placeholder format specifier for the context hash.
- The "Variations" meta-data is now called "Context".
#rb James.Hopkin
#tests Built for Windows, Linux, and PS4. Tested a loc gather and export had the correct info in it. Tested the new UI worked as expected.
Change 2879436 on 2016/02/24 by Nicholas.Davies
A few bug fixes for blocking PS4 > PC chat
#jira OR-15467 Disable Paragon chat on PS4 for users outside of the game
#RB Antony.Carter
#codereview Sam.Zamani
#TESTS PS4 whispers to and from none Paragon PC users is blocked.
Change 2878929 on 2016/02/23 by Jason.Bestimt
#ORION_DEV - Merge Main to reconcile 0.20 branch creation
#RB:none
#Tests:none
Change 2878600 on 2016/02/23 by Dmitry.Rekman
Linux: added code to identify CPU for FPSCharts (OR-14949).
#rb none
#tests Ran dedicated server on local VM and a few physical boxes.
Change 2878443 on 2016/02/23 by Marcus.Wassmer
Fix game not ticking when PS button is pressed.
#rb andrew.grant
#test golden path ps4
Change 2878361 on 2016/02/23 by Josh.Markiewicz
#UE4 - fixed bad comment
#rb none
#tests none
Change 2878205 on 2016/02/23 by Jason.Bestimt
#ORION_DEV - Merge main (0.19) at CL# 2878162
#Tests:none
#RB:none
Change 2878095 on 2016/02/23 by Josh.Markiewicz
#UE4 - added warnings to json mcp read/write failures
- removed HostAddressOverride parameter (use -uselocalips and -multihome together instead)
#rb none
#tests matchmaking golden path
Change 2878002 on 2016/02/23 by Josh.Markiewicz
#UE4 - made two party framework functions virtual
#rb none
#tests none
Change 2877998 on 2016/02/23 by Josh.Markiewicz
#Ue4 - Party interface can optionally enable/disable creating a chat room alongside the party (defaults to enabled)
#rb rob.cannaday
#tests social/team parties golden path
#codereview rob.cannaday
Change 2877822 on 2016/02/23 by Olaf.Piesche
speculative fix for OR-15710
#rb david.hill
#tests PC game
Change 2877804 on 2016/02/23 by Uriel.Doyon
Fixed ULevel::AddReferencedObjects clearing all references to static texture streaming data
#codereview robert.manuszewski
#rb marcus.wassmer
#tests played several games on PC, also doing rejoin
#jira OR-15658
Change 2877692 on 2016/02/23 by Jamie.Dale
Added commandlet to replace sound wave players in sound cues with dialogue wave players where appropriate
#rb Saul.Abreu
#tests Built for Windows, Linux, and PS4. Tested the commandlet.
Change 2877691 on 2016/02/23 by Jamie.Dale
Added commandlet to extract out the information from our character sheets and put it into the correct dialogue waves
#rb Saul.Abreu
#tests Built for Windows, Linux, and PS4. Tested the commandlet.
Change 2877690 on 2016/02/23 by Jamie.Dale
General dialogue wave fixes
[CL 2881965 by Andrew Grant in Main branch]
2016-02-25 15:13:33 -05:00
# if WITH_ENGINE
// see comment in LaunchLinux.cpp for details why it is done this way
extern void LaunchLinux_FEngineLoop_AppExit ( ) ;
# endif // WITH_ENGINE
2015-09-03 20:46:02 -04:00
/**
* Game - specific crash reporter
*/
void CommonLinuxCrashHandler ( const FGenericCrashContext & GenericContext )
{
Copying //UE4/Orion-Staging to //UE4/Main (originated from //Orion/Dev-General @ 2831630)
#lockdown Nick.Penwarden
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2831624 on 2016/01/17 by Marcus.Wassmer
Merge disable of FCachedReadPlatformData on PS4. Reduces memory spikes. 2830986
#rb none
#test none
#codereview Michael.Noland,James.Golding
Change 2831402 on 2016/01/17 by Marcus.Wassmer
HLOD priority and streamout changes.
Give texture pool an extra 200MB which we can afford thanks to James/Michael
#rb Chris.Gagnon
#test run agora, notice nice textures.
#lockdown Andrew.Grant
Change 2831398 on 2016/01/17 by Marcus.Wassmer
Fix 3 logic bugs with Relocate
#rb chris.gagnon
#test run game, look for corruption.
#lockdown Andrew.Grant
Change 2831372 on 2016/01/16 by Marcus.Wassmer
Update param.sfo's and lockdown version in prep for good PS4 playtest build.
#rb none
#test build from last night...
#lockdown Andrew.Grant
Change 2831274 on 2016/01/16 by Graeme.Thornton
Disable platform file cache wrapper on PS4
#codereview James.Golding
#rb none
#tests ran cooked ps4 build, timed loading (no real change), measured memory used for file handles (small)
Change 2831237 on 2016/01/16 by Sammy.James
Fix PS4 compile error
#codereview Andrew.Grant
#rb none
#tests none
Change 2831219 on 2016/01/16 by Matt.Kuhlenschmidt
Fix possible invalid access to shared movie player resource across threads causing startup crash.
#codereview marcus.wassmer
#rb none, #tests initial load
Change 2831218 on 2016/01/16 by Marcus.Wassmer
Fix bad warning case.
#codereview Martin.Mittring
#rb none
#test none
Change 2831201 on 2016/01/16 by Andrew.Grant
Added extra info about referencer to missing asset reference message
#rb none
#tests cooked, ran editor
Change 2831183 on 2016/01/16 by David.Nikdel
#OSS #PS4 #Purchasing #StoreV2
- Force failure if we have no receipts after a "successful" checkout.
- Report consumed entitlements as well as unconsumed but leave ValidationInfo empty so we can tell the difference at the application level
- Convert productIds to skuIds at checkout time
- Added PS4 Implementation of IOnlineStoreV2
- Bugfix: set bSuccessfullyStartedUp=false when InitNPGameSettings() fails
- Adjusted FOnlineStoreOffer to use FText::AsCurrencyBase
#RB: Paul.Moore
#TESTS: login, purchase redemption, store MTX purchasing on PS4 & PC
Change 2831129 on 2016/01/16 by David.Nikdel
#MCP
- Added a ctor to make converting from FOnlineError to FMcpQueryResult easier (for stuff that was already using FMcpQueryResult).
#RB: none
#TESTS: frontend
Change 2830986 on 2016/01/15 by Michael.Noland
PS4: Disabling FCachedReadPlatformFile on PS4 to significantly reduce high watermark memory consumption during blocking loads
#rb marcus.wassmer
#tests Ran Paragon PS4 down a bad path that currently does a blocking map and hero load
#lockdown andrew.grant
Change 2830943 on 2016/01/15 by Max.Chen
Sequencer: Fix bug introduced with preroll. It was also causing a crash in particle track instance.
#tests Master sequence trailer plays without crashing
#rb none
Change 2830912 on 2016/01/15 by Michael.Noland
Rendering: Exposed GRHIDeviceId (only filled in on D3D11 and D3D12 RHI's under the same circumstances as GRHIAdapterName, etc..., 0 otherwise)
#rb mieszko.zielinski
#tests Tested printing the value out
#codereview martin.mittring
Change 2830910 on 2016/01/15 by Michael.Noland
Rendering: Improved GPU driver detection logic to handle more cases
#codereview martin.mittring
#rb mieszko.zielinski
#tests Tested on my machine which was previous reporting Unknown for the values as some entries contained the key in the Settings subfolder
Change 2830776 on 2016/01/15 by Martin.Mittring
from Dev-Rendering
added ensure to track down multiple issues like
OR-11771 CRASH: User Crashed when pressing the Play button
OR-12430 CRASH: OT2 user crashed with FRHIResource::AddRef()
#rb:Gil.Gribb
#code_review:Gil.Gribb,Mark.Satterthwaite,Marcus.Wassmer
2016-01-20 11:32:08 -05:00
// at this point we should already be using malloc crash handler (see PlatformCrashHandler)
const FLinuxCrashContext & Context = static_cast < const FLinuxCrashContext & > ( GenericContext ) ;
printf ( " CommonLinuxCrashHandler: Signal=%d \n " , Context . Signal ) ;
2015-09-03 20:46:02 -04:00
Copying //UE4/Orion-Staging to //UE4/Main (//Orion/Dev-General @ 2855324)
#lockdown Nick.Penwarden
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2855265 on 2016/02/03 by Max.Chen
Sequencer: Release track editors when destroying sequencer
#jira UE-26423
Change 2855247 on 2016/02/03 by Max.Chen
PlacementMode: Null factory check in constructor to fix cooking.
#codereview andrew.rodham
#rb andrew.rodham
#jira UE-26412
ChangeChange 2855116 on 2016/02/03 by Michael.Noland
[AUTOMERGE]
PS4: Added a log statement when the gap between SubmitDone calls exceeds 2 seconds and removed a duplicate call to set the LastSubmitDoneTime
PS4: Fixed a bogus log statement when PS4_GNM_SLOW_FRAME_DEBUGGING=1
Merging CL# 2854751 and 2852176 by way of 2855100
#tests Tested on PS4 with PS4_GNM_SLOW_FRAME_DEBUGGING=1
#rb dave.ratti
#lockdown andrew.grant
--------
Integrated using branch //Orion/Main_to_//Orion/Dev-General of change#2855109 by Michael.Noland on 2016/02/03 20:59:51.
Change 2855109 on 2016/02/03 by Michael.Noland
PS4: Added a log statement when the gap between SubmitDone calls exceeds 2 seconds and removed a duplicate call to set the LastSubmitDoneTime
PS4: Fixed a bogus log statement when PS4_GNM_SLOW_FRAME_DEBUGGING=1
Merging CL# 2854751 and 2852176 by way of 2855100
#tests Tested on PS4 with PS4_GNM_SLOW_FRAME_DEBUGGING=1
#rb dave.ratti
#lockdown andrew.grant
Change 2855100 on 2016/02/03 by Michael.Noland
PS4: Added a log statement when the gap between SubmitDone calls exceeds 2 seconds and removed a duplicate call to set the LastSubmitDoneTime
PS4: Fixed a bogus log statement when PS4_GNM_SLOW_FRAME_DEBUGGING=1
Merging CL# 2854751 and 2852176 using //Orion/Release-Next_to_//Orion/Release-Live
#tests Tested on PS4 with PS4_GNM_SLOW_FRAME_DEBUGGING=1
#rb dave.ratti
#lockdown andrew.grant
ChangeChangeChangeChangeChange 2854825 on 2016/02/03 by Zabir.Hoque
Harden MaterialParameterCollection from ending up with duplicate parameter names of GUIDs.
#Tests: Ran debug editor, create materail param collection with >500 elements. Still only ~18ms. Used param in shader.
#RB: Daniel.Wright
#CodeReview: Daniel.Wright, Gil.Gribb, Rolando.Caloca, Marcus.Wassmer
Change 2854788 on 2016/02/03 by Josh.Markiewicz
#UE4 - JsonObjectConverter changes
- added the ability for a UStruct to emit json as a string if type traits are setup with ExportTextItem / ImportTextItem
- allows the UStruct to convert to json as something other than FJsonValueObject
-- things like FColor, FDateTime but they are already handled differently
- checked for possible change in existing behavior, no classes currently use type traits for this that aren't handled special already
- FUniqueNetIdRepl can now convert to/from json as a string
#rb david.nikdel
#codereview ben.zeigler, sam.zamani, david.nikdel, paul.moore
#tests various online tests connecting to servers, etc
Change 2854751 on 2016/02/03 by Michael.Noland
PS4: Fixed a bogus log statement when PS4_GNM_SLOW_FRAME_DEBUGGING=1
#rb dave.ratti
#lockdown andrew.grant
#tests Tested on PS4 with PS4_GNM_SLOW_FRAME_DEBUGGING=1
ChangeChange 2854712 on 2016/02/03 by Josh.Markiewicz
#UE4 - added some json compatibility features to FUniqueNetIdRepl struct
- ImportTextItem
- To/FromJson
#rb david.nikdel
#codereview none
#tests various online features, additional unit tests added to class
Change 2854696 on 2016/02/03 by Dmitry.Rekman
Making Memprofiler usable (by MichaelN).
#rb Zak.Middleton (who I got the shelved CL # from)
#codereview Michael.Noland, Zak.Middleton, Bob.Tellez
#tests Used Memprofiler on a number of captures.
ChangeChange 2854536 on 2016/02/03 by John.Pollard
Add event groups as users to replay, so we can quickly find replays with certain events types in them
#rb RyanG
#tests Replays and events
Merging using OrionDevGeneral->ReleaseCandidate
Change 2854526 on 2016/02/03 by John.Pollard
Add support for getting replay id
#rb RyanG
#tests Replays
Merging using OrionDevGeneral->ReleaseCandidate
Change 2854522 on 2016/02/03 by John.Pollard
Support setting string values in perf counters through the perf counters helper class.
#rb none
#tests Client/Server match
[CL 2856676 by Andrew Grant in Main branch]
2016-02-04 23:40:42 -05:00
// better than having mutable fields?
const_cast < FLinuxCrashContext & > ( Context ) . CaptureStackTrace ( ) ;
2015-09-03 20:46:02 -04:00
if ( GLog )
{
GLog - > Flush ( ) ;
}
if ( GWarn )
{
GWarn - > Flush ( ) ;
}
if ( GError )
{
GError - > Flush ( ) ;
GError - > HandleError ( ) ;
}
Copying //UE4/Orion-Staging to //UE4/Main (//Orion/Dev-General @ 2855324)
#lockdown Nick.Penwarden
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2855265 on 2016/02/03 by Max.Chen
Sequencer: Release track editors when destroying sequencer
#jira UE-26423
Change 2855247 on 2016/02/03 by Max.Chen
PlacementMode: Null factory check in constructor to fix cooking.
#codereview andrew.rodham
#rb andrew.rodham
#jira UE-26412
ChangeChange 2855116 on 2016/02/03 by Michael.Noland
[AUTOMERGE]
PS4: Added a log statement when the gap between SubmitDone calls exceeds 2 seconds and removed a duplicate call to set the LastSubmitDoneTime
PS4: Fixed a bogus log statement when PS4_GNM_SLOW_FRAME_DEBUGGING=1
Merging CL# 2854751 and 2852176 by way of 2855100
#tests Tested on PS4 with PS4_GNM_SLOW_FRAME_DEBUGGING=1
#rb dave.ratti
#lockdown andrew.grant
--------
Integrated using branch //Orion/Main_to_//Orion/Dev-General of change#2855109 by Michael.Noland on 2016/02/03 20:59:51.
Change 2855109 on 2016/02/03 by Michael.Noland
PS4: Added a log statement when the gap between SubmitDone calls exceeds 2 seconds and removed a duplicate call to set the LastSubmitDoneTime
PS4: Fixed a bogus log statement when PS4_GNM_SLOW_FRAME_DEBUGGING=1
Merging CL# 2854751 and 2852176 by way of 2855100
#tests Tested on PS4 with PS4_GNM_SLOW_FRAME_DEBUGGING=1
#rb dave.ratti
#lockdown andrew.grant
Change 2855100 on 2016/02/03 by Michael.Noland
PS4: Added a log statement when the gap between SubmitDone calls exceeds 2 seconds and removed a duplicate call to set the LastSubmitDoneTime
PS4: Fixed a bogus log statement when PS4_GNM_SLOW_FRAME_DEBUGGING=1
Merging CL# 2854751 and 2852176 using //Orion/Release-Next_to_//Orion/Release-Live
#tests Tested on PS4 with PS4_GNM_SLOW_FRAME_DEBUGGING=1
#rb dave.ratti
#lockdown andrew.grant
ChangeChangeChangeChangeChange 2854825 on 2016/02/03 by Zabir.Hoque
Harden MaterialParameterCollection from ending up with duplicate parameter names of GUIDs.
#Tests: Ran debug editor, create materail param collection with >500 elements. Still only ~18ms. Used param in shader.
#RB: Daniel.Wright
#CodeReview: Daniel.Wright, Gil.Gribb, Rolando.Caloca, Marcus.Wassmer
Change 2854788 on 2016/02/03 by Josh.Markiewicz
#UE4 - JsonObjectConverter changes
- added the ability for a UStruct to emit json as a string if type traits are setup with ExportTextItem / ImportTextItem
- allows the UStruct to convert to json as something other than FJsonValueObject
-- things like FColor, FDateTime but they are already handled differently
- checked for possible change in existing behavior, no classes currently use type traits for this that aren't handled special already
- FUniqueNetIdRepl can now convert to/from json as a string
#rb david.nikdel
#codereview ben.zeigler, sam.zamani, david.nikdel, paul.moore
#tests various online tests connecting to servers, etc
Change 2854751 on 2016/02/03 by Michael.Noland
PS4: Fixed a bogus log statement when PS4_GNM_SLOW_FRAME_DEBUGGING=1
#rb dave.ratti
#lockdown andrew.grant
#tests Tested on PS4 with PS4_GNM_SLOW_FRAME_DEBUGGING=1
ChangeChange 2854712 on 2016/02/03 by Josh.Markiewicz
#UE4 - added some json compatibility features to FUniqueNetIdRepl struct
- ImportTextItem
- To/FromJson
#rb david.nikdel
#codereview none
#tests various online features, additional unit tests added to class
Change 2854696 on 2016/02/03 by Dmitry.Rekman
Making Memprofiler usable (by MichaelN).
#rb Zak.Middleton (who I got the shelved CL # from)
#codereview Michael.Noland, Zak.Middleton, Bob.Tellez
#tests Used Memprofiler on a number of captures.
ChangeChange 2854536 on 2016/02/03 by John.Pollard
Add event groups as users to replay, so we can quickly find replays with certain events types in them
#rb RyanG
#tests Replays and events
Merging using OrionDevGeneral->ReleaseCandidate
Change 2854526 on 2016/02/03 by John.Pollard
Add support for getting replay id
#rb RyanG
#tests Replays
Merging using OrionDevGeneral->ReleaseCandidate
Change 2854522 on 2016/02/03 by John.Pollard
Support setting string values in perf counters through the perf counters helper class.
#rb none
#tests Client/Server match
[CL 2856676 by Andrew Grant in Main branch]
2016-02-04 23:40:42 -05:00
return Context . GenerateCrashInfoAndLaunchReporter ( ) ;
2015-09-03 20:46:02 -04:00
}
/**
2015-09-07 16:26:02 -04:00
* Sets ( soft ) limit on a specific resource
2015-09-03 20:46:02 -04:00
*
2015-09-07 16:26:02 -04:00
* @ param Resource - one of RLIMIT_ * values
* @ param DesiredLimit - desired value
* @ param bIncreaseOnly - avoid changing the limit if current value is sufficient
2015-09-03 20:46:02 -04:00
*/
2015-09-07 16:26:02 -04:00
bool SetResourceLimit ( int Resource , rlim_t DesiredLimit , bool bIncreaseOnly )
2015-09-03 20:46:02 -04:00
{
rlimit Limit ;
if ( getrlimit ( Resource , & Limit ) ! = 0 )
{
fprintf ( stderr , " getrlimit() failed with error %d (%s) \n " , errno , strerror ( errno ) ) ;
return false ;
}
2015-09-07 16:26:02 -04:00
if ( bIncreaseOnly & & ( Limit . rlim_cur = = RLIM_INFINITY | | Limit . rlim_cur > = DesiredLimit ) )
2015-09-03 20:46:02 -04:00
{
2015-09-07 16:26:02 -04:00
if ( ! UE_BUILD_SHIPPING )
{
printf ( " - Existing per-process limit (soft=%lu, hard=%lu) is enough for us (need only %lu) \n " , Limit . rlim_cur , Limit . rlim_max , DesiredLimit ) ;
}
2015-09-03 20:46:02 -04:00
return true ;
}
Limit . rlim_cur = DesiredLimit ;
if ( setrlimit ( Resource , & Limit ) ! = 0 )
{
fprintf ( stderr , " setrlimit() failed with error %d (%s) \n " , errno , strerror ( errno ) ) ;
if ( errno = = EINVAL )
{
if ( DesiredLimit = = RLIM_INFINITY )
{
fprintf ( stderr , " - Max per-process value allowed is %lu (we wanted infinity). \n " , Limit . rlim_max ) ;
}
else
{
fprintf ( stderr , " - Max per-process value allowed is %lu (we wanted %lu). \n " , Limit . rlim_max , DesiredLimit ) ;
}
}
return false ;
}
return true ;
}
/**
* Expects GSavedCommandLine to be set up . Increases limit on
* - number of open files to be no less than desired ( if specified on command line , otherwise left alone )
* - size of core file , so core gets dumped and we can debug crashed builds ( unless overridden with - nocore )
*
*/
static bool IncreasePerProcessLimits ( )
{
// honor the parameter if given, but don't change limits if not
int32 FileHandlesToReserve = - 1 ;
if ( FParse : : Value ( * GSavedCommandLine , TEXT ( " numopenfiles= " ) , FileHandlesToReserve ) & & FileHandlesToReserve > 0 )
{
2015-09-07 16:26:02 -04:00
if ( ! UE_BUILD_SHIPPING )
{
printf ( " Increasing per-process limit of open file handles to %d \n " , FileHandlesToReserve ) ;
}
if ( ! SetResourceLimit ( RLIMIT_NOFILE , FileHandlesToReserve , true ) )
2015-09-03 20:46:02 -04:00
{
fprintf ( stderr , " Could not adjust number of file handles, consider changing \" nofile \" in /etc/security/limits.conf and relogin. \n error(%d): %s \n " , errno , strerror ( errno ) ) ;
return false ;
}
}
2015-09-07 16:26:02 -04:00
// core dump policy:
// - Shipping and Test disable by default (unless -core is passed)
// - The rest set it to infinity unless -nocore is passed
// (in all scenarios user wish as expressed with -core or -nocore takes priority)
2016-01-22 08:13:18 -05:00
bool bDisableCore = ( UE_BUILD_SHIPPING ! = 0 | | UE_BUILD_TEST ! = 0 ) ;
2015-09-07 16:26:02 -04:00
if ( FParse : : Param ( * GSavedCommandLine , TEXT ( " nocore " ) ) )
{
bDisableCore = true ;
}
if ( FParse : : Param ( * GSavedCommandLine , TEXT ( " core " ) ) )
{
bDisableCore = false ;
}
if ( bDisableCore )
{
printf ( " Disabling core dumps. \n " ) ;
if ( ! SetResourceLimit ( RLIMIT_CORE , 0 , false ) )
{
fprintf ( stderr , " Could not set core file size to 0, error(%d): %s \n " , errno , strerror ( errno ) ) ;
return false ;
}
}
else
2015-09-03 20:46:02 -04:00
{
printf ( " Increasing per-process limit of core file size to infinity. \n " ) ;
2015-09-07 16:26:02 -04:00
if ( ! SetResourceLimit ( RLIMIT_CORE , RLIM_INFINITY , true ) )
2015-09-03 20:46:02 -04:00
{
fprintf ( stderr , " Could not adjust core file size, consider changing \" core \" in /etc/security/limits.conf and relogin. \n error(%d): %s \n " , errno , strerror ( errno ) ) ;
fprintf ( stderr , " Alternatively, pass -nocore if you are unable or unwilling to do that. \n " ) ;
return false ;
}
}
return true ;
}
int CommonLinuxMain ( int argc , char * argv [ ] , int ( * RealMain ) ( const TCHAR * CommandLine ) )
{
FPlatformMisc : : SetGracefulTerminationHandler ( ) ;
2015-09-07 16:26:02 -04:00
if ( UE_BUILD_SHIPPING )
{
// only printed in shipping
printf ( " %s %d %d %d %d \n " , StringCast < ANSICHAR > ( * FEngineVersion : : Current ( ) . ToString ( ) ) . Get ( ) , GEngineMinNetVersion , GEngineNegotiationVersion , GPackageFileUE4Version , GPackageFileLicenseeUE4Version ) ;
}
2015-09-03 20:46:02 -04:00
int ErrorLevel = 0 ;
2015-09-16 12:07:55 -04:00
if ( setenv ( " LC_NUMERIC " , " en_US " , 1 ) ! = 0 )
{
int ErrNo = errno ;
fprintf ( stderr , " Unable to setenv(LC_NUMERIC): errno=%d (%s) " , ErrNo , strerror ( ErrNo ) ) ;
}
2015-09-03 20:46:02 -04:00
setlocale ( LC_CTYPE , " " ) ;
2015-09-16 12:07:55 -04:00
2015-09-03 20:46:02 -04:00
for ( int32 Option = 1 ; Option < argc ; Option + + )
{
GSavedCommandLine + = TEXT ( " " ) ;
// we need to quote stuff that has spaces in it because something somewhere is removing quotation marks before they arrive here
FString Temp = UTF8_TO_TCHAR ( argv [ Option ] ) ;
if ( Temp . Contains ( TEXT ( " " ) ) )
{
if ( Temp . StartsWith ( TEXT ( " - " ) ) )
{
Temp = Temp . Replace ( TEXT ( " = " ) , TEXT ( " = \" " ) ) ;
}
else
{
Temp = TEXT ( " \" " ) + Temp ;
}
Temp + = TEXT ( " \" " ) ;
}
GSavedCommandLine + = Temp ; // note: technically it depends on locale
}
2015-09-07 16:26:02 -04:00
if ( ! UE_BUILD_SHIPPING )
2015-09-03 20:46:02 -04:00
{
2015-09-07 16:26:02 -04:00
GAlwaysReportCrash = true ; // set by default and reverse the behavior
if ( FParse : : Param ( * GSavedCommandLine , TEXT ( " nocrashreports " ) ) | | FParse : : Param ( * GSavedCommandLine , TEXT ( " no-crashreports " ) ) )
{
GAlwaysReportCrash = false ;
}
2015-09-03 20:46:02 -04:00
}
if ( ! IncreasePerProcessLimits ( ) )
{
fprintf ( stderr , " Could not set desired per-process limits, consider changing system limits. \n " ) ;
ErrorLevel = 1 ;
}
else
{
# if UE_BUILD_DEBUG
if ( true & & ! GAlwaysReportCrash )
# else
if ( FPlatformMisc : : IsDebuggerPresent ( ) & & ! GAlwaysReportCrash )
# endif
{
// Don't use exception handling when a debugger is attached to exactly trap the crash. This does NOT check
// whether we are the first instance or not!
ErrorLevel = RealMain ( * GSavedCommandLine ) ;
}
else
{
FPlatformMisc : : SetCrashHandler ( CommonLinuxCrashHandler ) ;
GIsGuarded = 1 ;
// Run the guarded code.
ErrorLevel = RealMain ( * GSavedCommandLine ) ;
GIsGuarded = 0 ;
}
}
Copying //UE4/Orion-Staging to //UE4/Main (Origin: //Orion/Dev-General @ 2879808)
==========================
MAJOR FEATURES + CHANGES
==========================
#lockdown Nick.Penwarden
Change 2879705 on 2016/02/24 by Nick.Darnell
Editor - Tweaking some comments.
#tests n/a
#rb n/a
Change 2879674 on 2016/02/24 by Nick.Darnell
Editor - The editor now supports many new methods of opening new asset editors. You can choose where tabs open with a great deal more options in Editor Preferences > Appearance > Asset Editor Open Location. This will reset the 'always open asset editors in new windows' option, it completely replaces and enchances that option.
#tests Ran the editor, tried each option and they all seem to do what I want.
#rb matt.kuhlenschmidt
Change 2879661 on 2016/02/24 by Jamie.Dale
More general fixes for dialogue waves
- The localization key now uses a hash of the speaker and target voice GUIDs to help keep them short.
- The localization key can now be user customized, and contains a placeholder format specifier for the context hash.
- The "Variations" meta-data is now called "Context".
#rb James.Hopkin
#tests Built for Windows, Linux, and PS4. Tested a loc gather and export had the correct info in it. Tested the new UI worked as expected.
Change 2879436 on 2016/02/24 by Nicholas.Davies
A few bug fixes for blocking PS4 > PC chat
#jira OR-15467 Disable Paragon chat on PS4 for users outside of the game
#RB Antony.Carter
#codereview Sam.Zamani
#TESTS PS4 whispers to and from none Paragon PC users is blocked.
Change 2878929 on 2016/02/23 by Jason.Bestimt
#ORION_DEV - Merge Main to reconcile 0.20 branch creation
#RB:none
#Tests:none
Change 2878600 on 2016/02/23 by Dmitry.Rekman
Linux: added code to identify CPU for FPSCharts (OR-14949).
#rb none
#tests Ran dedicated server on local VM and a few physical boxes.
Change 2878443 on 2016/02/23 by Marcus.Wassmer
Fix game not ticking when PS button is pressed.
#rb andrew.grant
#test golden path ps4
Change 2878361 on 2016/02/23 by Josh.Markiewicz
#UE4 - fixed bad comment
#rb none
#tests none
Change 2878205 on 2016/02/23 by Jason.Bestimt
#ORION_DEV - Merge main (0.19) at CL# 2878162
#Tests:none
#RB:none
Change 2878095 on 2016/02/23 by Josh.Markiewicz
#UE4 - added warnings to json mcp read/write failures
- removed HostAddressOverride parameter (use -uselocalips and -multihome together instead)
#rb none
#tests matchmaking golden path
Change 2878002 on 2016/02/23 by Josh.Markiewicz
#UE4 - made two party framework functions virtual
#rb none
#tests none
Change 2877998 on 2016/02/23 by Josh.Markiewicz
#Ue4 - Party interface can optionally enable/disable creating a chat room alongside the party (defaults to enabled)
#rb rob.cannaday
#tests social/team parties golden path
#codereview rob.cannaday
Change 2877822 on 2016/02/23 by Olaf.Piesche
speculative fix for OR-15710
#rb david.hill
#tests PC game
Change 2877804 on 2016/02/23 by Uriel.Doyon
Fixed ULevel::AddReferencedObjects clearing all references to static texture streaming data
#codereview robert.manuszewski
#rb marcus.wassmer
#tests played several games on PC, also doing rejoin
#jira OR-15658
Change 2877692 on 2016/02/23 by Jamie.Dale
Added commandlet to replace sound wave players in sound cues with dialogue wave players where appropriate
#rb Saul.Abreu
#tests Built for Windows, Linux, and PS4. Tested the commandlet.
Change 2877691 on 2016/02/23 by Jamie.Dale
Added commandlet to extract out the information from our character sheets and put it into the correct dialogue waves
#rb Saul.Abreu
#tests Built for Windows, Linux, and PS4. Tested the commandlet.
Change 2877690 on 2016/02/23 by Jamie.Dale
General dialogue wave fixes
[CL 2881965 by Andrew Grant in Main branch]
2016-02-25 15:13:33 -05:00
// Final shut down.
# if WITH_ENGINE
LaunchLinux_FEngineLoop_AppExit ( ) ;
# endif // WITH_ENGINE
2016-01-28 16:03:26 -05:00
// check if a specific return code has been set
uint8 OverriddenErrorLevel = 0 ;
if ( FPlatformMisc : : HasOverriddenReturnCode ( & OverriddenErrorLevel ) )
{
ErrorLevel = OverriddenErrorLevel ;
}
2015-09-03 20:46:02 -04:00
if ( ErrorLevel )
{
printf ( " Exiting abnormally (error code: %d) \n " , ErrorLevel ) ;
}
return ErrorLevel ;
}
class FLinuxCommonStartupModule : public IModuleInterface
{
/** IModuleInterface implementation */
virtual void StartupModule ( ) override { } ;
virtual void ShutdownModule ( ) override { } ;
} ;
IMPLEMENT_MODULE ( FLinuxCommonStartupModule , LinuxCommonStartup ) ;