# This custom surfaceflinger.rc simply has `disabled' appended to it.
# Since we are using UML without a screen, and embedded.mk is the
# smallest mk file but still contains surfaceflinger, including this
# custom surfaceflinger.rc will disable surfaceflinger from running.

service surfaceflinger /system/bin/surfaceflinger
    class core
    user system
    group graphics drmrpc readproc
    onrestart restart zygote
    writepid /dev/stune/foreground/tasks
    disabled
