Revision: 2467
http://sourceforge.net/p/swingme/code/2467
Author: yuranet
Date: 2021-06-23 10:24:47 +0000 (Wed, 23 Jun 2021)
Log Message:
-----------
fix startup and repaint not working
Modified Paths:
--------------
iOSME/src/javax/microedition/lcdui/Canvas.java
iOSME/src/javax/microedition/lcdui/Graphics.java
Modified: iOSME/src/javax/microedition/lcdui/Canvas.java
===================================================================
--- iOSME/src/javax/microedition/lcdui/Canvas.java 2021-06-22 20:23:37 UTC (rev 2466)
+++ iOSME/src/javax/microedition/lcdui/Canvas.java 2021-06-23 10:24:47 UTC (rev 2467)
@@ -5,6 +5,8 @@
import apple.coregraphics.struct.CGPoint;
import apple.coregraphics.struct.CGRect;
import apple.coregraphics.struct.CGSize;
+import apple.foundation.NSOperationQueue;
+import apple.foundation.NSThread;
import apple.uikit.UIView;
public abstract class Canvas extends Displayable {
@@ -123,13 +125,38 @@
public void repaint(int x, int y, int w, int h) {
CGRect rect = new CGRect(new CGPoint(x, y), new CGSize(w, h));
- canvasView.setNeedsDisplayInRect(rect);
+ // we can only ever call setNeedsDisplay from main thread or it does nothing
+ if (NSThread.isMainThread_static()) {
+ canvasView.setNeedsDisplayInRect(rect);
+ }
+ else {
+ NSOperationQueue.mainQueue().addOperationWithBlock(new NSOperationQueue.Block_addOperationWithBlock() {
+ @Override
+ public void call_addOperationWithBlock() {
+ canvasView.setNeedsDisplayInRect(rect);
+ }
+ });
+ }
}
public void repaint() {
+ // we can only ever call setNeedsDisplay from main thread or it does nothing
if (canvasView != null) {
- canvasView.setNeedsDisplay();
+ if (NSThread.isMainThread_static()) {
+ canvasView.setNeedsDisplay();
+ }
+ else {
+ NSOperationQueue.mainQueue().addOperationWithBlock(new NSOperationQueue.Block_addOperationWithBlock() {
+ @Override
+ public void call_addOperationWithBlock() {
+ canvasView.setNeedsDisplay();
+ }
+ });
+ }
}
+ else {
+ System.out.println("WARN repaint called when canvasView is " + canvasView);
+ }
}
protected void keyPressed(int keyCode) {
Modified: iOSME/src/javax/microedition/lcdui/Graphics.java
===================================================================
--- iOSME/src/javax/microedition/lcdui/Graphics.java 2021-06-22 20:23:37 UTC (rev 2466)
+++ iOSME/src/javax/microedition/lcdui/Graphics.java 2021-06-23 10:24:47 UTC (rev 2467)
@@ -254,6 +254,7 @@
attributes.put(UIKit.NSFontAttributeName(), font.font);
attributes.put(UIKit.NSForegroundColorAttributeName(), color);
+ // https://developer.apple.com/library/archive/documentation/StringsTextFonts/Conceptual/CoreText_Programming/Overview/Overview.html
NSAttributedString attributedString = NSAttributedString.alloc().initWithStringAttributes(str, attributes);
CTLineRef line = CoreText.CTLineCreateWithAttributedString(ObjCRuntime.cast(attributedString, CFAttributedStringRef.class));
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|