Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p><code>frameworks/base/libs/surfaceflinger/tests/resize/resize.cpp</code> is a good place to start. But my version (Eclair from vendor) of the test app is out-dated, some <code>Surface</code> API has been moved to <code>SurfaceControl</code> and you have to:<br/> <code>SurfaceComposerClient::createSurface()</code> => <code>SurfaceControl</code><br/> <code>SurfaceControl-&gt;getSurface()</code> => <code>Surface</code></p> <p>Secondly use <code>SurfaceComposerClient::openTransaction()/closeTransaction()</code> to bound all transactions to SurfaceFlinger surface, eg:<br/> <code>Surface::lock()/unlockAndPost()</code> and <code>SurfaceControl::setLayer()/setSize()</code></p> <p>Here're some sample codes (hope this compiles :P)</p> <pre><code>sp&lt;SurfaceComposerClient&gt; client; sp&lt;SurfaceControl&gt; control; sp&lt;Surface&gt; surface; SurfaceID sid = 0; Surface::SurfaceInfo sinfo; // set up the thread-pool, needed for Binder sp&lt;ProcessState&gt; proc(ProcessState::self()); ProcessState::self()-&gt;startThreadPool(); client = new SurfaceComposerClient(); control = client-&gt;createSurface(getpid(), sid, 160, 240, PIXEL_FORMAT_RGB_565); surface = control-&gt;getSurface(); // global transaction sometimes cannot trigger a redraw //client-&gt;openGlobalTransaction(); printf("setLayer...\n"); client-&gt;openTransaction(); control-&gt;setLayer(100000); client-&gt;closeTransaction(); printf("setLayer done\n"); printf("memset 0xF800...\n"); client-&gt;openTransaction(); surface-&gt;lock(&amp;sinfo); android_memset16((uint16_t*)sinfo.bits, 0xF800, sinfo.s*pfInfo.bytesPerPixel*sinfo.h); surface-&gt;unlockAndPost(); client-&gt;closeTransaction(); printf("memset 0xF800 done\n"); sleep(2); printf("setSize...\n"); client-&gt;openTransaction(); control-&gt;setSize(80, 120); client-&gt;closeTransaction(); printf("setSize done\n"); sleep(2); printf("memset 0x07E0...\n"); client-&gt;openTransaction(); surface-&gt;lock(&amp;sinfo); android_memset16((uint16_t*)sinfo.bits, 0x07E0, sinfo.s*pfInfo.bytesPerPixel*sinfo.h); surface-&gt;unlockAndPost(); printf("memset 0x07E0 done\n"); client-&gt;closeTransaction(); sleep(2); printf("setPosition...\n"); client-&gt;openTransaction(); control-&gt;setPosition(100, 100); client-&gt;closeTransaction(); printf("setPosition done\n"); sleep(2); // global transaction sometimes cannot trigger a redraw //client-&gt;closeGlobalTransaction(); printf("bye\n"); </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload