Platform translation thread.

Hi all, in this thread, I'd like to gather all the specificities of one platform (Mac/PC) and its correspondence on the other side.
The core content, will then be used in a FAQ-style thread to help the transition to a cross-plaftorm forum.
I will start by listing common ones, such as shortcuts and location of menus (preferences...) location of files on the machine (fonts, preference files, presets, etc.)
This IMHO should be useful for those bringing help, or the ones being helped, or could figure in one's Resume
Feel free to add any platform-specific information you might run into.

For Windows systems, people who experience display problems are often directed to go download the latest display driver from the web site of the maker of their video card.  For example, someone experiencing OpenGL problems on a desktop system equipped with a nVidia display card might find that visiting the nVidia.com web site and getting the latest display driver for their card and version of Windows corrects the problems, as nVidia (and the other graphics card makers) release updates all the time.  On a laptop PC system usually one has to go to the manufacturer of the laptop for the drivers.
What's the equivalent process for Apple systems?  Do users of Macs not have to deal with display drivers separately?  Do they have to go directly to Apple to get them?  Is there a difference between Apple desktops and Macbooks?
-Noel

Similar Messages

  • WebEngine: how to capture the click on a link?

    I need some insight into the inner workings of WebEngine: listeners seem to stop firing under certain conditions.
    Problem description:
    In my application I have to open certain urls in a new tab or in a different pane. Following jsmith's proposal in a different thread (Re: How to cancel page loading in WebView? I do the following:
    - Based on the location of the link clicked, I decide if it has to be opened in place, in a new tab, or in a sort of popup pane (similar to a sheet window in MacOS/X as a fake modal dialog attached to the top of the window).
    - To achieve this, I implement a locationProperty listener using "locationProperty().addListener".
    - Inside the listener I use "getLoadWorker().cancel()" to stop the current engine from loading the url ...
    - ... and load that url in a new tab or the popup pane.
    This works fine, but when I return from the other tab or close the popup pane, the location property listener won't fire any more.
    The same applies if I cancel in a stateProperty change listener.
    Workaround:
    As a workaround I can refresh the page using "getEngine().reload()" in a "Platform.runLater" thread, but the flickering is really ugly.
    Analysis:
    It looks as if the cancel comes too late. The first opportunity to capture the click on a link seems to be "getLoadWorker().stateProperty()" where "Worker.State" is "SCHEDULED"; after that fires the listener on "locationProperty()". In either case "getLoadWorker().cancel()" seems to invalidate the listeners.
    I have experimented with another development platform which also uses Webkit. There it's possible to truely cancel out before a link is loaded. So it should be possible in JavaFX as well...
    Question:
    Does somebody know how I can capture the click on a link without redeveloping the web application (which I can't)?
    Cheers,
    Thomas

    If, after calling getLoadWorker().cancel(), you no longer receive location change notifications upon further clicks on links, it looks like a bug. Feel free to file an issue with Jira.
    However, it is probably too fragile to rely on the location property and the cancel method in your case, due to asynchronous nature of page loads.
    Look at the WebEngine.createPopupHandler property. The popup handler will only be called if the page decides that a new window needs to be created, so it may not be able to help you fully solve your problem, but it may be worth a try.
    Otherwise, consider the approach suggested by irond13. Install DOM event listeners on link objects (<a> tags) and do whatever you want in response to click events. You can do it solely in Java, see Re: Controlling what happens when a user clicks on a hyperlink in a WebView and Re: Communicate from WebView to JavaFX scene for details and example.
    Finally, if you do think a more direct callback on WebEngine is a necessity, consider extending http://javafx-jira.kenai.com/browse/RT-17073 or filing a new feature request.

  • Mac to PC web viewing, what can we do to minimize differences?

    I have created a website in GoLive and it has passed all the looks good tests on a Mac platform, ie its looks fine on Firefox and Safari on the Mac platform, Large and small monitors.
    The trouble is it looks completely different on Explorer on a PC. The most striking difference is everything is much much bigger. (Amongst other things)
    I was wondering if there is anything you can do to minimize this effect, is there a script available that tells a PCs monitor pixel settings to temporarily change when viewing certain websites?. (Thats probably a really stupid question I know so dont laugh ;0)
    I know that you can get such scripts to tell the font sizes to change but its not just the fonts that are bigger its everything so what other options do we have that can help with a smoother cross platform translation?

    If the monitor resolution is lower, everything will appear larger. Instead of looking for a way to "fix" the visitors' systems to better view your site, it would be much more beneficial to look for ways to change your site so it looks good in as many platforms/browsers/resolutions/devices as possible. Making it look the same is not a viable option, but there are things you can do to make the design not depend on a specific monitor resolution or viewport size (have the content center horizontally in whatever size the window is, use relative or percentage-based sizing so content re-flows to fill available space, etc.)
    If you want to post a link to your site, someone may be able to offer more specific advice, but it doesn't sound like what you're seeing is a difference in platform, or even browser.

  • Anyone can prove JNI is safe? My application crashes after many calls.

    I heard that JNI is not safe. In fact I made an application base on many JNI calls.
    C level is API supplied by IBM. And I was told the C API is tested and safe.
    Java application and JNI calls is writen by myself. It crashed after about 3000 times call. I tried other JDK and other OS. On some platform, the thread hold there after many calls. No error, no crash. But others crashed even early.
    Here's my JNI call's code:
    JNIEXPORT void JNICALL Java_com_ibm_mm_sdk_cim_internal_PServiceFACImp_cEvaluate
    (JNIEnv *env, jclass jobj, jlong jhandle, jstring jmanualedListFilename, jstring jclassedListFileName, jstring jresultFilename){
         char *manualedListFilename = jstringToWindows(env, jmanualedListFilename);
         char *classedListFileName = jstringToWindows(env, jclassedListFileName);
         char *resultFilename = jstringToWindows(env, jresultFilename);
         int rc;                         // API return code
         void* handle;               // FAC Handle
         // convert C pointer from java long type
         handle = (void*)jhandle;
         rc = KmFAC_Evaluate(
              handle,                                   // FAC Handle
              (char*)manualedListFilename,     // File name of list of files
              (char*)classedListFileName,          // File name of list of files
              (char*)resultFilename               // Result file
         if (manualedListFilename)
              free(manualedListFilename);
         if (classedListFileName)
              free(classedListFileName);
         if (resultFilename)
              free(resultFilename);
         if (rc != KM_RC_OK) {
              //Throw exception
              jclass exceptClass;          // JNI exception class
              char errorMsg[256];          // Used to build error msg for exceptions
              jmethodID methodid;          // Exception constructor method id
              sprintf(errorMsg, "KmFAC_Evaluate() [CKM=%d]", (int)rc);
              exceptClass = env->FindClass("com/ibm/mm/sdk/cim/DKServiceExceptionCIM");
              methodid = env->GetMethodID(exceptClass,"<init>","(Ljava/lang/String;II)V");
              jstring str = env->NewStringUTF(errorMsg);
              jthrowable excobj = (jthrowable)env->NewObject(exceptClass,methodid,str,100, (int)rc);
              env->Throw(excobj);
         return;

    I agree with fury88. Try the code below it works fine!
    // **************** Java portion ************************
    public class Test {
    // Load the dll that exports functions callable from java
    static {System.loadLibrary("TestImp");}
    // Imported function declarations
    public native void print(String msg);
    public void Test() {
    public static void main(String [] args) {
    Test t = new Test();
    // Printf example
         t.print("->Testing JNI - Hello from c++\n");
    // **************** Windows portion - TestImp.dll **********************
    // Exported function
    JNIEXPORT void JNICALL Java_Test_print(JNIEnv *env, jobject obj, jstring msg)
    const char *str = env->GetStringUTFChars(msg, 0);
    printf("%s\n", str);
    env->ReleaseStringUTFChars(msg, str);
    // Entry point
    BOOL APIENTRY DllMain(HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
         switch(ul_reason_for_call)
              case DLL_PROCESS_ATTACH:
                   return TRUE;
              case DLL_PROCESS_DETACH:
                   return TRUE;
    return TRUE;
    }

  • OCI error ORA-30135

    Hi,
    i have the error ORA-30135 when run a multithread process using ORACLE OCI. The OCI function "indicted" is OCIThreadCreate....
    The environments are like these:
    OS: Sun 5.9
    DB: ORACLE 9.2
    Language: C++ compiled with Gcc.
    Help me please.....
    Thank you in advance.

    Are you linking your OCCI application with the platform's thread library? (e.g. -lthread)

  • Getting 'null object ref' error on trying to add a label to a Box

    Hi,
    I'm using Flash Builder 4 to create an action script based component. I've just started and the code right now is very simple - I have a class which extends the Box class. I set the width & height in the constructor and call an init() method where i create a label, add it using this.addChild(). When I run this I get the error
    TypeError: Error #1009: Cannot access a property or method of a null object reference.
    at mx.styles::StyleManager$/getStyleManager()[E:\dev\4.0.0\frameworks\projects\framework\src \mx\styles\StyleManager.as:125]
    at mx.styles::StyleProtoChain$/getStyleManager()[E:\dev\4.0.0\frameworks\projects\framework\ src\mx\styles\StyleProtoChain.as:963]
    at mx.styles::StyleProtoChain$/initProtoChain()[E:\dev\4.0.0\frameworks\projects\framework\s rc\mx\styles\StyleProtoChain.as:149]
    at mx.core::UIComponent/http://www.adobe.com/2006/flex/mx/internal::initProtoChain()[E:\dev\4.0.0\frameworks\proje cts\framework\src\mx\core\UIComponent.as:10186]
    at mx.core::UIComponent/regenerateStyleCache()[E:\dev\4.0.0\frameworks\projects\framework\sr c\mx\core\UIComponent.as:10249]
    at mx.core::UIComponent/http://www.adobe.com/2006/flex/mx/internal::addingChild()[E:\dev\4.0.0\frameworks\projects \framework\src\mx\core\UIComponent.as:7114]
    at mx.core::Container/http://www.adobe.com/2006/flex/mx/internal::addingChild()[E:\dev\4.0.0\frameworks\projects \framework\src\mx\core\Container.as:3903]
    at mx.core::Container/addChildAt()[E:\dev\4.0.0\frameworks\projects\framework\src\mx\core\Co ntainer.as:2606]
    at mx.core::Container/addChild()[E:\dev\4.0.0\frameworks\projects\framework\src\mx\core\Cont ainer.as:2534]
    at component::Carousel/init()[C:\Kunal\Flex\ResusableComponents\src\component\Carousel.as:26 ]
    at component::Carousel()[C:\Kunal\Flex\ResusableComponents\src\component\Carousel.as:20]
    It errors out on line 125 of StyleManager.as
    var styleManager:IStyleManager2 = IStyleManager2(moduleFactory.getImplementation("mx.styles::IStyleManager2"));
    The code just preceding this line is
            if (!moduleFactory)
                moduleFactory = SystemManagerGlobals.topLevelSystemManagers[0];
                // trace("no style manager specified, using top-level style manager");
    In the variables window I can see that modeluFactory is null.
    Here's the code so far:
    package component
         import flash.events.Event;
         import mx.containers.Box;
         import mx.controls.Label;
         public class Carousel extends Box
              public function Carousel()
                   super();
                   this.direction = "Horizontal";
                   this.width = 100;
                   this.height = 100;
                   init();
              } // End of public function Carousel
              protected function init():void
                   var lb:Label = new Label();
                   lb.text = "heloo";
                   this.addChild(lb);
         } // End of public class Carousel
    } // End of package component
    Any suggestions???
    Thanks
    Kunal

    I'm having exactly the same issue. This is happening to me when coding a very simple BarChart example. The code is available as part of a tutorial (http://livedocs.adobe.com/flex/3/html/charts_intro_7.html), the difference is that the tutorial uses it as part of an MXML file, while  I'm using it as part of an ActionScript file (.as).
    In addition to this thread, I found this other discussion with same symptom: http://groups.google.com/group/reflex-platform/browse_thread/thread/de3e6c6608c82b8a#

  • Platform.runLater messes up my Thread.currentThread().getContextClassLoader()

    Hi,
    I have a plugin mechanism in my application. The plugins are defines by an interface and are loaded via URLClassLoader. A plugin can also have resources, loaded via ResourceBundle.getBundle.
    Whenever a plugin's method is called, I do this, before it is called:
    ClassLoader oldLoader = Thread.currentThread().getContextClassLoader();
    Thread.currentThread().setContextClassLoader(pluginClassLoaders.get(pluginClass.cast(proxy)));
    // Invoke plugin method
    Thread.currentThread().setContextClassLoader(oldLoader);
    The plugin methods are called in their own thread, that means, when I want to open a window I need to do it on the JavaFX Application Thread with Platform.runLater.
    The problem is, that in the run method of the Platform.runLater, my Thread.currentThread().getContextClassLoader() is not my URLClassLoader but the Application Classloader.
    Why I need this?
    I don't want the plugin developer to always keep in mind, that he has to pass the correct class loader (of his classes) into the ResourceBundle.getBundle method.
    Instead I thought I could rely on Thread.currentThread().getContextClassLoader(), which is set in the main application, to load the correct bundle.
    It would work, but not if I load the bundle inside the JavaFX Application Thread (but which makes the most sense for UI development).
    So my goal was to have a convenient method like:
    String getResource(String bundle, String key)
    return ResourceBundle.getBundle(bundle).getString(key),  Thread.currentThread().getContextClassLoader());
    To avoid passing the classloader every time.
    Any ideas on this?

    OK, found the problem.
    In data-sources.xml, there is a connection pool and a managed-data-source settings. If I set the data source in there - it works!! Seems these XML tags take preference above the datasource tag.
    This is how the data-sources.xml now looks that's been working:
    <?xml version = '1.0' standalone = 'yes'?>
    <data-sources xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://xmlns.oracle.com/oracleas/schema/data-sources-10_1.xsd" schema-major-version="10" schema-minor-version="1">
    <connection-pool name="jdev-connection-pool-MYDB">
    <connection-factory factory-class="com.mysql.jdbc.Driver" user="henkie" password="->DataBase_User_recGxQcVfghwCszzy_gfsRgwOrxutL2l" url="jdbc:mysql://localhost/mydb"/>
    </connection-pool>
    <managed-data-source name="jdev-connection-managed-MYDB" jndi-name="jdbc/MYDBDS" connection-pool-name="jdev-connection-pool-MYDB"/>
    </data-sources>

  • Updating the GUI from a background Thread: Platform.Runlater() Vs Tasks

    Hi Everyone,
    Hereby I would like to ask if anyone can enlighten me on the best practice for concurency with JAVAFX2. More precisely, if one has to update a Gui from a background Thread what should be the appropriate approach.
    I further explain my though:
    I have window with a text box in it and i receive some message on my network on the background, hence i want to update the scrolling textbox of my window with the incoming message. In that scenario what is the best appraoch.
    1- Shall i implement my my message receiver as thread in which i would then use a platform.RunLater() ?
    2- Or shall i use a Task ? In that case, which public property of the task shall take the message that i receive ? Are property of the task only those already defined, or any public property defined in subclass can be used to be binded in the graphical thread ?
    In general i would like to understand, what is the logic behind each method ?
    My understanding here, is that task property are only meant to update the gui with respect to the status of the task. However updating the Gui about information of change that have occured on the data model, requires Platform.RunLater to be used.
    Edited by: 987669 on Feb 12, 2013 12:12 PM

    Shall i implement my my message receiver as thread in which i would then use a platform.RunLater() ?Yes.
    Or shall i use a Task ?No.
    what is the logic behind each method?A general rule of thumb:
    a) If the operation is initiated by the client (e.g. fetch data from a server), use a Task for a one-off process (or a Service for a repeated process):
    - the extra facilities of a Task such as easier implementation of thread safety, work done and message properties, etc. are usually needed in this case.
    b) If the operation is initiated by the server (e.g. push data to the client), use Platform.runLater:
    - spin up a standard thread to listen for data (your network communication library will probably do this anyway) and to communicate results back to your UI.
    - likely you don't need the additional overhead and facilities of a Task in this case.
    Tasks and Platform.runLater are not mutually exclusive. For example if you want to update your GUI based on a partial result from an in-process task, then you can create the task and in the Task's call method, use a Platform.runLater to update the GUI as the task is executing. That's kind of a more advanced use-case and is documented in the Task documentation as "A Task Which Returns Partial Results" http://docs.oracle.com/javafx/2/api/javafx/concurrent/Task.html

  • Translations in Dashboards for BI Platform

    Hi,
    Can text pool (new feature of DS 1.4) be used for Multilanguage support for those Dashboards which are to be deployed on BI Platform (not on NW Platform)? Any link/documentation will be really helpful.
    The SAP release documentation does not mention anything about BI Platform. If Text Pool is not supported in BI Platform mode then how do we translate the text of the elements (buttons, dropdowns etc.) as well as the column headers in the dashboards when the source is HANA View/BEx queries.
    Also, will the translation, performed through Translation Manager for a universe, be supported in DS 1.4 when we take universe as a source?
    Regards,
    Piyush

    Hi Piyush,
    the text pool on BIP is planned to be supported in 1.5 release, coming end of May 2015.
    in release 1.4 only local and NW mode is supported (see PAM https://service.sap.com/~sapidb/012002523100018972812014E).
    For the text pool also the translation manager will be used.
    Karol

  • Standby.wrf error Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\STAF\bin\JSTAF.dll: Can't load AMD 64-bit .dll on a IA 32-bit platform

    Hi,
    I have created a single tile and getting below error in standby0.wrf file.
    As mentioned in doc, I made a windows 32 bit for standby VM and installed 32 bit staf followed by staf configurations.I installed all the critical updates for windows.
    Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\STAF\bin\JSTAF.dll: Can't load AMD 64-bit .dll on a IA 32-bit platform
    at java.lang.ClassLoader$NativeLibrary.load(Native Method)
    at java.lang.ClassLoader.loadLibrary0(Unknown Source)
    at java.lang.ClassLoader.loadLibrary(Unknown Source)
    at java.lang.Runtime.loadLibrary0(Unknown Source)
    at java.lang.System.loadLibrary(Unknown Source)
    at com.ibm.staf.STAFHandle.<clinit>(STAFHandle.java:306)
    at IdleVMTest.main(IdleVMTest.java:30)
    I am attaching my test log.
    please let me know how to fix it.
    Thanks,
    Suresh

    Rebecca,
    I appreciate your quick response.
    I am running the test from Primeclient. I am planning to add more tiles once tile0 runs fine. Client0 runs separately.Forgot to mention this in last update.
    I assume prime client generates all wrf files. when other VM's .wrf files are generated fine, will it be still primeclient side error??
    Primeclient is windows 2008 sp2 64bit. Initially I installed 32 bit java and ended up problem while starting the  VMmark2-STAX.bat. When i installed the 64bit java, problem vanished. I assume java version is correct.
    Similary initially i installed a cygwin 64 bit but i got error like "Error VMmarkRMQmgr unable to clear  queues". So uninstalled it and installed a cygwin 32 bit and the problem vanished.
    I am seeing the standby VM is relocated fine during the test. it is just it is not capturing the data in .wrf file. Standby VM configure section does not talk about java installation. is there anything else i am missing it?
    I would like to know whether  below error talks about standby VM because standby VM is 32 bit other side primeclient is 64 bit. below error says on a IA 32-bit platform.
    Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\STAF\bin\JSTAF.dll: Can't load AMD 64-bit .dll on a IA 32-bit platform
    Below image u can see java variables are set. Is there anything wrong??
    Thanks,
    Suresh

  • How to improve single thread performance on CMT platform?

    Hi Gurus,
    I have a customer who is comparing a T6340 1.4GHz T2+ with a 5 years old 1.1GHz Itanium based machine.
    Although the T6340 would definitely win in throughput, he expects the T6340 to also win on single threaded application. The 1st test he did was simply incrementing a local variable from 1 to a million in a Sybase stored procedure. The 2nd test was an OLTP type DB transaction. He found T6340 slower in both tests. Is this possible?
    Thanks,
    Anthony

    Try this, almost identical, but with less execution time.
    SELECT
    a.Consumption AS Consumption ,
    a.Cost AS Cost ,
    a.CreatedBy AS CreatedBy ,
    a.CreatedDate AS CreatedDate ,
    a.UpdatedBy AS UpdatedBy ,
    a.UpdatedDate AS UpdatedDate
    FROM Positions b
    JOIN PortConsumption a
    ON a.PortRotationId = b.Id
    WHERE b.VoyageId ='82A042031E1B4C38A9832A6678A695A4';Rgds,
    Ahmer

  • Renditions best practice. What's best in translating folio design to another platform?

    I've created my app for iPhone5, and now want to create renditions for iPhone3/4, iPad, Android. Should I take the original article and use the page tool to create a new page size, or is there a better approach? Bob Levine?

    DPS authoring with InDesign for iPhone and iPod Touch | Adobe Developer Connection
    Also videos on this page: Digital Publishing Suite Help | Creating source InDesign documents
    Neil

  • Follow up on an old thread about memory utilization

    This thread was active a few months ago, unfortunately its taken me until now
    for me to have enough spare time to craft a response.
    From: SMTP%"[email protected]" 3-SEP-1996 16:52:00.72
    To: [email protected]
    CC:
    Subj: Re: memory utilization
    As a general rule, I would agree that memory utilzation problems tend to be
    developer-induced. I believe that is generally true for most development
    environments. However, this developer was having a little trouble finding
    out how NOT to induce them. After scouring the documentation for any
    references to object destructors, or clearing memory, or garbage collection,
    or freeing objects, or anything else we could think of, all we found was how
    to clear the rows from an Array object. We did find some reference to
    setting the object to NIL, but no indication that this was necessary for the
    memory to be freed.
    I believe the documentation, and probably some Tech-Notes, address the issue of
    freeing memory.
    Automatic memory management frees a memory object when no references to the
    memory
    object exist. Since references are the reason that a memory object lives,
    removing
    the references is the only way that memory objects can be freed. This is why the
    manuals and Tech-Notes talk about setting references to NIL (I.E. freeing memory
    in an automatic system is done by NILing references and not by calling freeing
    routines.) This is not an absolute requirement (as you have probably noticed
    that
    most things are freed even without setting references to NIL) but it accelerates
    the freeing of 'dead' objects and reduces the memory utilization because it
    tends
    to carry around less 'dead' objects.
    It is my understanding that in this environment, the development tool
    (Forte') claims to handle memory utilization and garbage collection for you.
    If that is the case, then it is my opinion that it shoud be nearly
    impossible for the developer to create memory-leakage problems without going
    outside the tool and allocating the memory directly. If that is not the
    case, then we should have destructor methods available to us so that we can
    handle them correctly. I know when I am finished with an object, and I
    would have no problem calling a "destroy" or "cleanup" method. In fact, I
    would prefer that to just wondering if Forte' will take care of it for me.
    It is actually quite easy to create memory leaks. Here are some examples:
    Have a heap attribute in a service object. Keep inserting things into
    the heap and never take them out (I.E. forgot to take them out). Since
    service objects are always live, everything in the heap is also live.
    Have an exception handler that catches exceptions and doesn't do
    anything
    with the error manager stack (I.E. it doesn't call task.ErrMgr.Clear).
    If the handler is activated repeatedly in the same task, the stack of
    exceptions will grow until you run out of memory or the task terminates
    (task termination empties the error manager stack.)
    It seems to me that this is a weakness in the tool that should be addressed.
    Does anyone else have any opinions on this subject?
    Actually, the implementation of the advanced features supported by the Forte
    product
    results in some complications in areas that can be hard to explain. Memory
    management
    happens to be one of the areas most effected. A precise explanation to a
    non-deterministic process is not possible, but the following attempts to
    explain the
    source of the non-determinism.
    o The ability to call from compiled C++ to interpreted TOOL and back
    to compiled C++.
    This single ability causes most of the strange effects mentioned in
    this thread.
    For C++ code the location of all variables local to a method is not
    know
    (I.E. C++ compilers can't tell you at run-time what is a variable
    and what
    isn't.) We use the pessimistic assumption that anything that looks
    like a
    reference to a memory object is a reference to a memory object. For
    interpreted
    TOOL code the interpreter has exact knowledge of what is a reference
    and what
    isn't. But the TOOL interpreter is itself a C++ method. This means
    that any
    any memory objects referenced by the interpreter during the
    execution of TOOL
    code could be stored in local variables in the interpreter. The TOOL
    interpreter
    runs until the TOOL code returns or the TOOL code calls into C++.
    This means
    that many levels of nested TOOL code can be the source of values
    assigned to
    local variables in the TOOL interpreter.
    This is the complicated reason that answers the question: Why doesn't a
    variable that is created and only used in a TOOL method that has
    returned
    get freed? It is likely that the variable is referenced by local
    variables
    in the TOOL interpreter method. This is also why setting the
    variable to NIL
    before returning doesn't seem to help. If the variable in question is a
    Array than invoke Clear() on the Array seems to help, because even
    though the
    Array is still live the objects referenced by the Array have less
    references.
    The other common occurrence of this effect is in a TextData that
    contains a
    large string. In this case, invoking SetAllocatedSize(0) can be used
    to NIL
    the reference to the memory object that actually holds the sequence of
    characters. Compositions of Arrays and TextData's (I.E. a Array of
    TextData's
    that all have large TextDatas.) can lead to even more problems.
    When the TOOL code is turned into a compiled partition this effect
    is not
    noticed because the TOOL interpreter doesn't come into play and
    things execute
    the way most people expect. This is one area that we try to improve
    upon, but it is complicated by the 15 different platforms, and thus
    C++ compilers,
    that we support. Changes that work on some machines behave
    differently on other
    machines. At this point in time, it occasionally still requires that
    a TOOL
    programmer actively address problems. Obviously we try to reduce
    this need over
    time.
    o Automatic memory management for C++ with support for multi-processor
    threads.
    Supporting automatic memory management for C++ is something that is
    not a very
    common feature. It requires a coding standard that defines what is
    acceptable and
    what isn't. Additionally, supporting multi-processor threads adds
    its own set of
    complications. Luckily TOOL users are insulated from this because
    the TOOL to C++
    code generator knows the coding standard. In the end you are
    impacted by the C++
    compiler and possibly the differences that occur between different
    compilers and/or
    different processors (I.E. Intel X86 versus Alpha.) We have seen
    applications that
    had memory utilization differences of up to 2:1.
    There are two primary sources of differences.
    The first source is how compilers deal with dead assignments. The
    typical TOOL
    fragment that is being memory manager friendly might perform the
    following:
    temp : SomeObject = new;
    ... // Use someObject
    temp = NIL;
    return;
    When this is translated to C++ it looks very similar in that temp
    will be assigned the
    value NULL. Most compilers are smart enough to notice that 'temp' is
    never used again
    because the method is going to return immediately. So they skip
    setting 'temp' to NULL.
    In this case it should be harmless that the statement was ignored
    (see next example for a different variation.) In more
    complicated examples that involve loops (especially long
    lived event loops) a missed NIL assignment can lead to leaking the
    memory object whose
    reference didn't get set to NIL (incidentally this is the type of
    problem that causes
    the TOOL interpreter to leak references.)
    The second source is a complicated interaction caused by history of
    method invocations.
    Consider the following:
    Method A() invokes method B() which invokes method C().
    Method C() allocates a temporary TextData, invokes
    SetAllocatedSize(1000000)
    does some more work and then returns.
    Method B() returns.
    Method A() now invokes method D().
    Method D() allocates something that cause the memory manager to look
    for memory objects to free.
    Now, even though we have returned out of method C() we have starting
    invoking
    methods. This causes us to use re-use portions of the C++ stack used to
    maintain the history of method invocation and space for local variables.
    There is some probability that the reference to the 'temporary' TextData
    will now be visible to the memory manager because it was not overwritten
    by the invocation of D() or anything invoked by method D().
    This example answers questions of the form: Why does setting a local
    variable to
    NIL and returning and then invoking task.Part.Os.RecoverMemory not
    cause the
    object referenced by the local variable to be freed?
    In most cases these effects cause memory utilization to be slightly
    higher
    than expected (in well behaved cases it's less than 5%.) This is a small
    price to pay for the advantages of automatic memory management.
    An object-oriented programming style supported by automatic memory
    management makes it
    easy to extended existing objects or sets of objects by composition.
    For example:
    Method A() calls method B() to get the next record from the
    database. Method B()
    is used because we always get records, objects, of a certain
    type from
    method B() so that we can reuse code.
    Method A() enters each row into a hash table so that it can
    implement a cache
    of the last N records seen.
    Method A() returns the record to its caller.
    With manual memory management there would have to be some interface
    that allows
    Method A() and/or the caller of A() to free the record. This
    requires
    that the programmer have a lot more knowledge about the
    various projects
    and classes that make up the application. If freeing doesn'
    happen you
    have a memory leak, if you free something while its still
    being used the
    results are unpredictable and most often fatal.
    With automatic memory management, method A() can 'free' its
    reference by removing
    the reference from the hash table. The caller can 'free' its
    reference by
    either setting the reference to NIL or getting another
    record and referring
    to the new record instead of the old record.
    Unfortunately, this convenience and power doesn't come for free. Consider
    the following,
    which comes from the Forte' run-time system:
    A Window-class object is a very complex beast. It is composed of two
    primary parts:
    the UserWindow object which contains the variables declared by the
    user, and the
    Window object which contains the object representation of the window
    created in
    the window workshop. The UserWindow and the Window reference each
    other. The Window
    references the Menu and each Widget placed on the Window directly. A
    compound Window
    object, like a Panel, can also have objects place in itself. These
    are typically
    called the children. Each of the children also has to know the
    identity of it's
    Mom so they refer to there parent object. It should be reasonably
    obvious that
    starting from any object that make up the window any other object
    can be found.
    This means that if the memory manager finds a reference to any
    object in the Window
    it can also find all other objects in the window. Now if a reference
    to any object
    in the Window can be found on the program stack, all objects in the
    window can
    also be found. Since there are so many objects and the work involved
    in displaying
    a window can be very complicated (I.E. the automatic geometry
    management that
    layouts the window when it is first opened or resized.) there are
    potentially many
    different reference that would cause the same problem. This leads to
    a higher than
    normal probability that a reference exists that can cause the whole
    set of Window
    objects to not be freed.
    We solved this problem in the following fashion:
    Added a new Method called RecycleMemory() on UserWindow.
    Documented that when a window is not going to be used again
    that it is
    preferably that RecycleMemory() is invoked instead
    of Close().
    The RecycleMemory() method basically sets all references
    from parent to
    child to NIL and sets all references from child to
    parent to NIL.
    Thus all objects are isolated from other objects
    that make up
    the window.
    Changed a few methods on UserWindow, like Open(), to check
    if the caller
    is trying to open a recycled window and throw an
    exception.
    This was feasible because the code to traverse the parent/child
    relationship
    ready existed and was being used at close time to perform other
    bookkeeping
    operations on each of the Widgets.
    To summarize:
    Automatic memory management is less error prone and more productive but
    doesn't come totally for free.
    There are things that the programmer can do that assists the memory
    manager:
    o Set object reference to NIL when known to be correct (this
    is the
    way the memory is deallocated in an automatic system.)
    o Use methods like Clear() on Array and SetAllocatedSize()
    on TextData to
    that allow these objects to set their internal
    references to NIL
    when known to be correct.
    o Use the RecycleMemory() method on windows, especially very
    complicated
    windows.
    o Build similar type of methods into your own objects when
    needed.
    o If you build highly connected structures that are very
    large in the
    number of object involved think that how it might be
    broken
    apart gracefully (it defeats some of the purpose of
    automatic
    management to go to great lengths to deal with the
    problem.)
    o Since program stacks are the source of the 'noise'
    references, try
    and do things with less tasks (this was one of the
    reasons that
    we implemented event handlers so that a single task
    can control
    many different windows.)
    Even after doing all this its easy to still have a problem.
    Internally we have
    access to special tools that can help point at the problem so that
    it can be
    solved. We are attempting to give users UNSUPPORTED access to these
    tools for
    Release 3. This should allow users to more easily diagnose problems.
    It also
    tends to enlighten one about how things are structured and/or point out
    inconsistencies that are the source of known/unknown bugs.
    Derek
    Derek Frankforth [email protected]
    Forte Software Inc. [email protected]
    1800 Harrison St. +510.869.3407
    Oakland CA, 94612

    I beleive he means to reformat it like a floppy disk.
    Go into My Computer, Locate the drive letter associated with your iPod(normally says iPod in it, and shows under removable storage).
    Right click on it and choose format - make sure to not have the "quick format" option checked. Then let it format.
    If that doesnt work, There are steps somewhere in the 5th gen forum( dont have the link off hand) to try to use the usbstor.sys to update the USB drivers for the Nano/5th gen.

  • N78 v20.149 Bug List Thread

    Hi everyone, thanks for all your advice and comments now that v20.149 has been released here (only on FOTA and not NSU yet) are the changes I have noticed, along with some newly discovered bugs:
    NOTE: all the documented features/improvements are performed with the Theme Effects turned on.
    Changes/Improvements/New features I have noticed from v12.046 to v20.149:
    Standby screen:
    *While scanning for wireless networks in the home screen, instead of saying “No networks found” as in the past, it says “No WLANs available”, also some other minor name changes in this menu.
    *Share online icon in standby screen seems to be different
    *When going back to the music player via the standby screen, it goes straight into the player without a fading in/out transition as it did before when Theme Effects are turned on (an instantaneous response). However, for going into other sections from the standby screen the fade in/out transition still occurs.
    *When Music Player is operating, and seeing the track name on the screen, and then when one song ends and goes to the next track, the speed at which this happens is much improved although not flawless (there is still some lag).
    *Scrolling up and down through the entries in the standby screen is very fast and not slow like before.
    Call log, Contacts and calling function:
    *Calling speed (from standby screen to Contacts or Call Log) and transition to call/disconnected screens much faster and improved
    *Faster resume of music playback after call is ended
    *Volume bar is changed from ten dotted increment to continuous coloured volume triangle (this has also been reflected in other menus and options throughout the phone)
    Maps:
    *Maps updated to version 2.0
    Music Player:
    *Much faster interface and speed through all menus
    *Pressing volume keys is much improved and faster and more accurate response than before (where it may have taken time in the past for the volume level to update)
    *Music controls (i.e. Rewind, Fast forward, play/pause, stop) are no longer the same colour as the matching theme, now it is just the same light green colour across all themes
    *Visualisations are still a bit slow, but faster than before
    Photos:
    *Transition into the Photos application is much faster than before
    *Scrolling through photos and videos and the like is still jerky and thumbnails still take a while to be updated from pixelated to clear thumbnails
    Settings:
    *In Themes, there is a new theme called Music (very yucky looking I must admit)
    *Power saver now includes “Now playing” option, so when the backlight goes off, the currently playing song and time are displayed on the screen for a number of seconds before disappearing. This occurs before keypad lock is activated, and when any key is pressed, the names of the song light up (in green or red). Also when going from one track to the next while this screensaver is activated, the date is displayed briefly.
    Other:
    *General speed improvements across all menus and applications
    *Help function is much faster and speed improved
    *New help topics added to Help function
    *Speed dial now works without any lag
    *New RealPlayer interface and version updated (where the RealPlayer screen is no longer displayed but grey bars on top and bottom of the video)
    *About application has been updated for the year dates so that they are all “2009”.
    *Installation of applications and refresh of available applications within the Application Manager is much improved and faster (although icons for installed applications are now not displayed)
    *”Application update” added to Applications
    *Carousel menu has new options under each heading
    *Navi-wheel seems to have been tweaked a bit more
    *Background light settings actually work now
    *Truncated email-account login name fixed
    Other documented changes that have been stated by others for v13.052 and now v20.149:
    *Improvements:
    Connectivity:
    - System Error message appears when trying to stream a clip from a busy server
    - Timestamp corruption error in long streaming which leads to 'Error in receiving live
    content'
    -VPN not working through WLAN in offline mode
    - Priorities of protected IAPs could not be changed via UI
    - Mail For Exchange did not play tone for every mail received as per S60 3.0 and 3.1
    products
    - DM settings were not generated automatically when Email settings are defined in variant
    Photos:
    - Thumbnail displayed does not match actual image if user deletes thumbnail file in
    memory card private folder
    Internet:
    - UI issues when viewing Youtube videos
    Music:
    - Playing WMA audio files improved
    - IHF cannot be enabled during call when FMT is on
    - DRM: The ampersand character ('&') encoding is not correct
    Other changes:
    - Weekly recurring clock alarm always sets for the current weekday regardless of the day
    chosen
    - Contact Groups are not titled correctly
    - Help text located in settings/general/Navi Wheel
    - Help text for Voice commands
    - Access point generation difficulties after factory reset
    New features:
    - Boingo – Cancelled
    - Comes With Music (CWM) - This SW Version includes CWM enablers
    Changes:
    Bluetooth
    * N78 to CK-07W Audio Lost at regular intervals
    * Call Not Working With Bluetooth Headset
    WLAN
    * WLAN APN passed along with SDP contents is not utilized by Real Player
    Power Management
    * Sleep current too high while video applications at background
    GPS
    * The phone freezes when launching the Trip distance by clicking the link in Help content
    PC Suite
    * Harvester Server doesn’t close all necessary connections to other services during backup/restore
    SIM/USIM
    * Incorrect error codes are passed by TSY from SIM server to application layer for Smart card feature
    Radio
    * RadioLauncher gets corrupted state when VisualRadio exits
    * FM frequency range extends below 87.5MHz
    Podcast
    * Podcasts: garbled search results when entering a number as the search title
    Photos
    * Crash when launching Photos application after restoring from memory card
    * Slideshow doesn’t work after used device for a while
    Internet
    Maps
    * Maps:”My position” and “My place” are translated into the same Chinese
    Messaging
    * E-mail username truncated causes problem with login
    * Adding new number from SMS to existing number in ADN causes corruption
    Download!
    * Download client doesn’t work with certain operators WAP APN
    Other Changes:
    * Java platform version number not updated in IAD
    * Widget installer plugin cannot be upgraded
    * Removing battery during alarm makes the device unusable
    * Stub sis file doesn’t include httptransfer component
    * Paths are incorrect in cenrep creation file (Naviscroll and FMTX affected)
    * Internal Debugging tool wrongly included in Production SW
    * Device cuts off URL parameter in RTSP streaming link
    * Delivery via Device Management corrupts EAP-FAST PAC file
    * TCK failure with HTTP and AMR Combination
    * SpaceUI doesn’t allow for changes when a default number is assigned in Phonebook
    * Display corrupts with 3rd party application BestCalc
    Bugs/missing features already found:
    *Will not let you enter the Date and Time settings, instead going back to the main menu
    *Will not let you enter settings for the alarm Clock, instead going back to the main menu (related to the Date and Time above)
    *Carousel menu by pressing that small silver key is still inconsistent, sometimes appears with scroll bar and performance is still slow
    *Still no N-gage client within firmware
    I have yet to check all the bugs that were documented for v12.046 in the thread /discussions/board/message?board.id=swupdate&thread.id=42047&page=4, but I will go about that very soon and document all the changes here in this thread. But so far, so good, the firmware appears to be a lot better and more stable than 12.046. Again, thanks to all users for their current feedback on problems. Remember to be sure to add your experiences with the N78 here!
    Message Edited by celandine on 15-Jan-2009 02:59 PM

    My n78 froze at the standby screen when it rebooted itself during the upgrade from v12 to v20.149. The background image and active standby icons appeared, but nothing else - no network provider name, no battery or signal level indicator, no clock, no calender entries, no wlan scanning, no share online. I left it for 15 minutes or so before crossing my fingers and removing and replacing the battery (since the power button did nothing). Not a great start I thought. But it started up ok.
    new/unfixed bugs
    The clock alarm did not switch the phone back on after the first 5 minute snooze, but it did do the snooze resume thing when I actually switched the phone on 15 minutes later... I setup a "within 24 hours" alarm and that had no problems switching on the phone several times with a 1 minute snooze so I guess I'll have to wait until tomorrow morning to see if my weekday alarm snoozes properly now...
    The FM transmitter was transmitting at 107.5 even though the settings screen and active standby message showed 106.9 which I had set it to before the update... Viewing and saving the fm transmitter settings did update the frequency to 106.9 though.
    I'm still unable to set default numbers for some contacts - the contacts app exits to the standby screen.
    Unable to zoom camera/photos when musicplayer and fm transmitter activated.
    improvements
    At least the loudspeaker function works after using the FM transmitter now.
    Playback of videos through the images app seems much improved - i.e. it actually plays video clips all the way through without freezing the picture.
    I'll post more if I notice anything

  • How do I fix the FPS in my platform game?

    Hi everyone! As part of a course in Gamemaking in school, my team created a platformer with a colission-map instead of tiles. This has worked out well for the most part.
    My problem is that we have a loop that updates and draws everything to the screen ( this is in windowed mode by the way ) . The game runs and the gameplay is ok.
    But it runs with different speed depending on the hardware. On my computer everything is slow, but on new computers the objects race back and forth like mad. Furthermore sometimes as the player dies and the level restarts, the player dies on the spot!
    From what I have read this is due to the fact that we haven´t fixed the FPS. But Im at a loss as to how im supposed to fix it. One sollution tells me to use a timer and then place logic inside actionPerforemed, but since I am using a loop inside run() this cant work.
    The program is divided into several classes, but the main logic residen in the class main,java
    public Main(){
              super("Mimic");
              setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);          
              setVisible(true);
              this.enableEvents(KeyEvent.KEY_PRESSED | MouseEvent.MOUSE_DRAGGED);     
              setSize(1280, 720);
              setResizable(false);
              setLocationRelativeTo(null);
              requestFocusInWindow();
              AudioPlayer.loadClip("transform", "sound/transform2.wav");
              AudioPlayer.loadClip("gameover", "sound/gameover.wav");
              AudioPlayer.loadClip("ambient", "sound/test.wav");
              AudioPlayer.loadClip("jump", "sound/jump.wav");
              //Cursor - 1x1px
              Toolkit toolkit = Toolkit.getDefaultToolkit();
              Image transparent = toolkit.getImage("images/empty_pixel.gif");
              Point hotSpot = new Point(0,0);
              Cursor game = toolkit.createCustomCursor(transparent, hotSpot, "transparent");
              setCursor(game);
              createBufferStrategy(3);
              transformationTimer = new Timer(1000, this);
              transformationTimer.setInitialDelay(0);
    geyserTimer = new javax.swing.Timer(1000, new ClockListenerGeyser());
    geyserTimer.start();
              mimicTimerBarBackground = new ImageIcon("images/mimic-bar-bgr.png").getImage();
              mimicTimerBar = new ImageIcon("images/mimic-bar.png").getImage();          
              start();
         }//public
    public void start(){
              (new Thread(this)).start();
         }//start
         public void run(){
              avatar = new Avatar();
         //Ambient sound
         //AudioPlayer.play("ambient", true); Musiken avstängd...
         loadLevel(Map.Levelname.LevelOne);
              //loadLevel(Map.Levelname.LevelTwo);
              long start = System.nanoTime();
              long delta = 0;
              long sleep;
              while(gameOn){ // game loop
                   tick(delta);
                   draw();                    
                   delta = System.nanoTime() - start;
                   sleep = DELAY - delta;
                   // detta är en test för att kolla om loopen fortfarande har tid kvar att göra saker, om den har det, sov och ge den en//
                   start = System.nanoTime();
                   //tick(delta);
                   //draw();               
              }//while
              System.exit(0);
    }//run
    //i den här metoden ligger allt motor, kollision, styrning och scrollning m.m
         public void tick(long tid) {
              float timeScale = tid/100000000f;
                   avatar.update(tid); //animationen uppdateras
                   currentMap.tick(tid);
                   // update mimics
    // lots of codes for Keys, colissionmap and more here.
         public void draw(){
              Graphics g = getBufferStrategy().getDrawGraphics();
              g.translate(-cameraX,-cameraY);          
              g.drawImage(currentMap.collisionMap, 0, 0, null);
         for(Background b: currentMap.getBackgrounds()){
              if(b.isVisible())
                   g.drawImage(b.getImage(),(int)b.getX(), (int)b.getY(), null);
         }//for
         for(MapItems mi: currentMap.getItemList()){
              g.drawImage(mi.getImage(),(int)mi.getX(), (int)mi.getY(), null);           
         }//for
         for(Mimics m: currentMap.getList()){
              if(m.getVisas()){
                   g.drawImage(m.getImage(), (int)m.getX(), (int)m.getY(), null);
              }//if
         }//for
         g.drawImage(avatar.getImage(), (int)avatar.getX(), (int)avatar.getY(), null);
         if (currentMap.levelname == Map.Levelname.LevelTwo){
              g.drawImage(grass, 0, 623, null);
         g.drawImage(key, cameraX+1000, cameraY+72, null);
         g.drawImage(sekLevel, 800, 580, null);
              //Visar timern om den är aktiv
              if (transformationTimer.isRunning()) {
                   g.drawImage(mimicTimerBarBackground, cameraX+509, cameraY+72, null);
                   g.drawImage(mimicTimerBar, cameraX+514, cameraY+77, (int)(cameraX+514+(200/20)*transformationTime), cameraY+77+30, 0, 0, (int)(200/20)*transformationTime, 30, null);
              g.setColor(Color.red);      
              g.dispose();
         getBufferStrategy().show();
         }//void
    I figure I got to put a timer to fix the FPS somewhere in here, but where?
    Any help is greatly appreciated!
    Regard,
    Gabriel

    Speed should be 'tick' based. The way I do it, with silky smooth results, is to lock the game to a framerate. That part is quite easy, all you do is calculate at what interval you want to update. Say you want 60FPS, it becomes:
    interval = 1000 / 60 (interval = 17ms).
    So if you want 60FPS, you have to update and draw every 17 milliseconds. That sounds like a short time, but for computers it really is not.
    Okay, so you have your game loop. while(true) { update(); render(); }. The body of this loop should execute every 17ms (it won't be that precise, but it will be good enough). It goes a little something like this:
    while(running){
    long measure1 = currentTimeInMillis();
    update();
    render();
    long measure2 = currentTimeInMillis();
    long diff = measure2 - measure1;
    Thread.sleep(17-diff); // sleep until next tick
    }This will have the game ticking at 58-61 FPS, depending on the timing precision of the OS - you'll find that on Linux OSes the framerate is far more steady than on Windows environments for example, in Java at least. Its just the sleep call that is far from precise.
    Now you will want to make movement based on the framerate - the way I do that is to work with float measurements. For movement speed I say 'every tick, move X.X pixels', where I keep the units in increments of 0.5 pixels. This means that moving game entities can go as slow as 0.5 pixels each tick in my games, which is slow enough for most of them. In the end when determining the actual pixel locations, the floats are rounded down to ints.
    I hope that makes some sense.

Maybe you are looking for

  • Bought a Boston sound bar for $339.00 now $299.99 possible to get a refund?

    I bought the Boston soundbar for $339 3 weeks ago and I see its on sale now for $299. Will best Buy get me $40 refund if I take the receipt to the store? Its a hassle to physically unplug the soundbar and return it and they repurchase to save the $40

  • Select Query with Inner Join

    Dear Experts, I have writen a inner join code with MKPF and MSEG which taking too much time, while I have used index. Indexes are: MSEG MATNR WERKS LGORT BWART SOBKZ MKPF BUDAT MBLNR My Select Query is :   SELECT B~MATNR                B~MAT_KDAUF   

  • I need to de-register my old number how do go about that

    I need to de-register my old number from my iphone how do I go about that

  • I can't install the adobe flashplayer to my ibookg4 mac pc.....help!!!!

    OK, WITHOUT WARNING I'VE LOST THE PLUGINS ON MY IBOOKG4 MAC PC. I KEEP TRYING TO INSTALL THEM,BUT TO NO AVAIL. ALSO I CAN'T SEEM TO INSTALL A WORKABLE ADOBE FLASH PLAYER FOR THE SAME. HELP!!!!!!

  • URL reading program

    Hello, with this program I am trying to get input (the content) from one or more urls and then print that content to a txt file or html file. This is my code so far, please could you advise or change the code so that it carries out the function I req