aboutsummaryrefslogtreecommitdiffstats
path: root/src/org
diff options
context:
space:
mode:
authorKenny Root <kenny@the-b.org>2009-01-26 05:53:17 +0000
committerKenny Root <kenny@the-b.org>2009-01-26 05:53:17 +0000
commit1fb036157d28396b66f483541a3d85e36b0a6cd7 (patch)
tree8fca68aef4d6c47e47e028ca1fc88e04a4613f09 /src/org
parente63ffdd0bc2ff5c5c8d648109cdacc1c601563d1 (diff)
downloadconnectbot-1fb036157d28396b66f483541a3d85e36b0a6cd7.tar.gz
connectbot-1fb036157d28396b66f483541a3d85e36b0a6cd7.tar.bz2
connectbot-1fb036157d28396b66f483541a3d85e36b0a6cd7.zip
Bitmap and notifications bug fix
* Try to free bitmaps immediately to avoid running afoul of the memory limits * Don't display the screen size of orientation changes if we're exiting the activity
Diffstat (limited to 'src/org')
-rw-r--r--src/org/connectbot/ConsoleActivity.java24
-rw-r--r--src/org/connectbot/TerminalView.java14
-rw-r--r--src/org/connectbot/service/TerminalBridge.java14
3 files changed, 44 insertions, 8 deletions
diff --git a/src/org/connectbot/ConsoleActivity.java b/src/org/connectbot/ConsoleActivity.java
index ab06d83..3bd20d8 100644
--- a/src/org/connectbot/ConsoleActivity.java
+++ b/src/org/connectbot/ConsoleActivity.java
@@ -698,14 +698,36 @@ public class ConsoleActivity extends Activity {
}
@Override
+ public void onPause() {
+ super.onPause();
+
+ /* Make sure our current TerminalView doesn't send a
+ * notification to the user about the screen size.
+ */
+ View view = findCurrentView(R.id.console_flip);
+ if (view instanceof TerminalView)
+ ((TerminalView) view).setNotifications(false);
+ }
+
+ @Override
+ public void onResume() {
+ super.onResume();
+
+ // Enable notifications for the current TerminalView.
+ View view = findCurrentView(R.id.console_flip);
+ if (view instanceof TerminalView)
+ ((TerminalView) view).setNotifications(true);
+ }
+
+ @Override
public void onStop() {
super.onStop();
+
unbindService(connection);
// allow the screen to dim and fall asleep
if(wakelock != null && wakelock.isHeld())
wakelock.release();
-
}
protected void shiftLeft() {
diff --git a/src/org/connectbot/TerminalView.java b/src/org/connectbot/TerminalView.java
index 9c199e3..cb7b465 100644
--- a/src/org/connectbot/TerminalView.java
+++ b/src/org/connectbot/TerminalView.java
@@ -57,6 +57,7 @@ public class TerminalView extends View implements FontSizeChangedListener {
private Toast notification = null;
private String lastNotification = null;
+ private boolean notifications = true;
public TerminalView(Context context, TerminalBridge bridge) {
super(context);
@@ -118,7 +119,7 @@ public class TerminalView extends View implements FontSizeChangedListener {
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
bridge.parentChanged(this);
-
+
scaleCursors();
}
@@ -196,6 +197,9 @@ public class TerminalView extends View implements FontSizeChangedListener {
}
public void notifyUser(String message) {
+ if (!notifications)
+ return;
+
if (notification != null) {
// Don't keep telling the user the same thing.
if (lastNotification != null && lastNotification.equals(message))
@@ -219,4 +223,12 @@ public class TerminalView extends View implements FontSizeChangedListener {
public void forceSize(int width, int height) {
bridge.resizeComputed(width, height, getWidth(), getHeight());
}
+
+ /**
+ * Sets the ability for the TerminalView to display Toast notifications to the user.
+ * @param value whether to enable notifications or not
+ */
+ public void setNotifications(boolean value) {
+ notifications = value;
+ }
}
diff --git a/src/org/connectbot/service/TerminalBridge.java b/src/org/connectbot/service/TerminalBridge.java
index 893a3a1..c014342 100644
--- a/src/org/connectbot/service/TerminalBridge.java
+++ b/src/org/connectbot/service/TerminalBridge.java
@@ -1124,7 +1124,7 @@ public class TerminalBridge implements VDUDisplay, OnKeyListener, InteractiveCal
* 1st press: next key to have meta state<br />
* 2nd press: meta state is locked on<br />
* 3rd press: disable meta state
- *
+ *
* @param code
*/
private void metaPress(int code) {
@@ -1214,7 +1214,7 @@ public class TerminalBridge implements VDUDisplay, OnKeyListener, InteractiveCal
/**
* Remove an {@link FontSizeChangedListener} from the list of listeners for
* this bridge.
- *
+ *
* @param listener
*/
public void removeFontSizeChangedListener(FontSizeChangedListener listener) {
@@ -1256,7 +1256,9 @@ public class TerminalBridge implements VDUDisplay, OnKeyListener, InteractiveCal
if(bitmap != null)
newBitmap = (bitmap.getWidth() != width || bitmap.getHeight() != height);
- if(newBitmap) {
+ if (newBitmap) {
+ if (bitmap != null)
+ bitmap.recycle();
bitmap = Bitmap.createBitmap(width, height, Config.ARGB_8888);
canvas.setBitmap(bitmap);
}
@@ -1306,7 +1308,7 @@ public class TerminalBridge implements VDUDisplay, OnKeyListener, InteractiveCal
fullRedraw = true;
redraw();
- this.parent.notifyUser(String.format("%d x %d", termWidth, termHeight));
+ parent.notifyUser(String.format("%d x %d", termWidth, termHeight));
Log.i(TAG, String.format("parentChanged() now width=%d, height=%d", termWidth, termHeight));
}
@@ -1317,10 +1319,10 @@ public class TerminalBridge implements VDUDisplay, OnKeyListener, InteractiveCal
*/
public synchronized void parentDestroyed() {
parent = null;
- if(bitmap != null)
+ canvas.setBitmap(null);
+ if (bitmap != null)
bitmap.recycle();
bitmap = null;
- canvas.setBitmap(null);
}
public void setVDUBuffer(VDUBuffer buffer) {