public PackageInformation CreatePackageInformation(string packageName, int pid, IAndroidLogcatDevice device) { if (pid <= 0) { return(null); } var packages = GetOrCreatePackagesForDevice(device); PackageInformation info = packages.FirstOrDefault(package => package.processId == pid); if (info != null) { return(info); } var newPackage = new PackageInformation() { name = packageName, processId = pid, deviceId = device.Id }; packages.Add(newPackage); RefreshPackagesForSerialization(); return(newPackage); }
internal void QueueMemoryRequest(IAndroidLogcatDevice device, PackageInformation package) { m_ExpectedDevice = device; m_ExpectedPackageFromRequest = package; if (m_ExpectedPackageFromRequest == null || !m_ExpectedPackageFromRequest.IsAlive() || m_ExpectedDevice == null) { return; } // Don't make a memory request, if previous requests haven't finished yet // Otherwise async queue will grow bigger and bigger const int kMaxRequestsInQueue = 3; if (m_RequestsInQueue > kMaxRequestsInQueue) { return; } m_RequestsInQueue++; m_Runtime.Dispatcher.Schedule( new AndroidLogcatQueryMemoryInput() { adb = ADB.GetInstance(), packageProcessId = m_ExpectedPackageFromRequest.processId, packageName = m_ExpectedPackageFromRequest.name, deviceId = device.Id }, QueryMemoryAsync, IntegrateQueryMemory, false); }
private PackageInformation CreatePackageInformation(string packageName, int pid, string deviceId) { if (pid <= 0) { return(null); } var packages = GetPackagesForDevice(deviceId); PackageInformation info = packages.FirstOrDefault(package => package.processId == pid); if (info != null) { return(info); } var newPackage = new PackageInformation() { name = packageName, displayName = packageName + " (" + pid + ")", processId = pid, deviceId = deviceId }; packages.Add(newPackage); return(newPackage); }
private void Update() { if (m_DeviceIds != null && m_DeviceIds.Count == 0) UpdateConnectedDevicesList(false); if (m_DeviceIds.Count == 0) return; if (m_AutoSelectPackage && !m_FinishedAutoselectingPackage) { // This is for AutoRun triggered by "Build And Run". if ((DateTime.Now - m_TimeOfLastAutoConnectUpdate).TotalMilliseconds < kMillisecondsBetweenConsecutiveAutoConnectChecks) return; AndroidLogcatInternalLog.Log("Waiting for {0} launch, elapsed {1} seconds", PlayerSettings.applicationIdentifier, (DateTime.Now - m_TimeOfLastAutoConnectStart).Seconds); m_TimeOfLastAutoConnectUpdate = DateTime.Now; ResetPackages(m_DeviceIds[0]); int projectApplicationPid = GetPidFromPackageName(PlayerSettings.applicationIdentifier, m_DeviceIds[0]); var package = CreatePackageInformation(PlayerSettings.applicationIdentifier, projectApplicationPid, m_DeviceIds[0]); if (package != null) { AndroidLogcatInternalLog.Log("Auto selecting package {0}", PlayerSettings.applicationIdentifier); // Note: Don't call SelectPackage as that will reset m_AutoselectPackage m_SelectedPackage = package; m_SelectedDeviceIndex = 0; m_SelectedDeviceId = m_DeviceIds[m_SelectedDeviceIndex]; RestartLogCat(); m_FinishedAutoselectingPackage = true; UpdateStatusBar(); } else { var timeoutMS = (DateTime.Now - m_TimeOfLastAutoConnectStart).TotalMilliseconds; if (timeoutMS > kMillisecondsMaxAutoconnectTimeOut) { var msg = string.Format("Timeout {0} ms while waiting for '{1}' to launch.", timeoutMS, PlayerSettings.applicationIdentifier); UpdateStatusBar(msg); AndroidLogcatInternalLog.Log(msg); m_FinishedAutoselectingPackage = true; } } } else { if (m_SelectedDeviceId == null) { int selectedDeviceIndex; PackageInformation selectedPackage; GetSelectedDeviceIndex(out selectedDeviceIndex, out selectedPackage); SetSelectedDeviceByIndex(selectedDeviceIndex, true); SelectPackage(selectedPackage); } } }
internal void ClearEntries() { m_SelectedEntry = -1; m_EntryCount = 0; m_CurrentEntry = 0; m_UpperMemoryBoundry = 32 * 1000 * 1000; m_ExpectedPackageFromRequest = null; m_ExpectedDevice = null; }
private void ResetPackages(string deviceId) { m_SelectedPackage = null; List<PackageInformation> packages; if (!m_PackagesForAllDevices.TryGetValue(deviceId, out packages)) { packages = new List<PackageInformation>(); m_PackagesForAllDevices.Add(deviceId, packages); } }
private void SelectPackage(PackageInformation newPackage) { if ((m_SelectedPackage == null && newPackage == null) || (newPackage != null && m_SelectedPackage != null && newPackage.name == m_SelectedPackage.name && newPackage.processId == m_SelectedPackage.processId)) return; m_AutoSelectPackage = false; m_SelectedPackage = newPackage; RestartLogCat(); AndroidLogcatInternalLog.Log("Selecting pacakge {0}", newPackage == null ? "<null>" : newPackage.displayName); }
private void GetSelectedDeviceIndex(out int selectedDeviceIndex, out PackageInformation selectedPackage) { if (m_JsonSerialization == null || string.IsNullOrEmpty(m_JsonSerialization.m_SelectedDeviceId) || m_DeviceIds.IndexOf(m_JsonSerialization.m_SelectedDeviceId) < 0) { selectedDeviceIndex = 0; selectedPackage = null; m_JsonSerialization = null; return; } selectedDeviceIndex = m_DeviceIds.IndexOf(m_JsonSerialization.m_SelectedDeviceId); selectedPackage = m_JsonSerialization.m_SelectedPackage; // We should only restore from AndroidLogcatJsonSerialization once during first launching. m_JsonSerialization = null; }
internal void SetExpectedDeviceAndPackage(IAndroidLogcatDevice device, PackageInformation package) { m_ExpectedDevice = device; m_ExpectedPackageFromRequest = package; }
private void SetPacakge(PackageInformation newPackage) { SelectedPackage = newPackage; m_MemoryViewer.ClearEntries(); m_MemoryViewer.SetExpectedDeviceAndPackage(m_Runtime.DeviceQuery.SelectedDevice, SelectedPackage); }
private void GetDeviceAndPackageFromSavedState(out IAndroidLogcatDevice savedDevice, out PackageInformation savedPackage) { savedDevice = null; savedPackage = null; var settings = m_Runtime.UserSettings; if (!settings.LastSelectedDeviceIdValid) { return; } var savedDeviceId = settings.LastSelectedDeviceId; savedDevice = m_Runtime.DeviceQuery.GetDevice(savedDeviceId); savedPackage = settings.LastSelectedPackage; }